luer9 / Ring-RPQ

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ring-RPQ

Repository for the prototype source code of the paper Time- and Space-Efficient Regular Path Queries on Graphs. This repository aims at reproducing the experiments of the paper.

Queries and graph

The queries are available in data/paths.tsv of this repository.

The data used are available here: Wikidata (about 1000M triples).

Instructions for running the ring

To run our code, please install an extended version of the library SDSL. Go to this this repository and follow the instructions.

After the extended version of SDSL is installed, clone this repository and follow these steps:

  1. Compile the source code by first moving to the directory that contains the code, and then execute:
bash build.sh

This shall create two executable files: build-index and query-index.

  1. Download the version of Wikidata used in the paper (note the original triples have been enumerated): Wikidata (about 1000M triples) and uncompress it.

  2. To build the index run:

./build-index <path-to-wikidata-file> 

This will create the index on the same directory were the wikidata file is. Keep all these files in the same directory.

  1. Move files data/wikidata-enumerated.dat.P and data/wikidata-enumerated.dat.SO to the directory were the index is stored. Please keep these file names, or change them acordingly, keeping the same prefix for all of them.

  2. To run queries, do as follows:

./query-index <path-to-index-file> data/paths.tsv 

Running other systems

You can find scripts and instructions on how to run the benchmark for Blazegraph, Jena, Virtuoso on the following page in the section "Instructions for using SPARQL Engines". Note that we did not include RDF3x in these experients as it does not support RPQs. You can follow the same instructions, but rather use the RPQ queries from this repository. Please note that RPQs were run under DISTINCT/set semantics for comparability (in SPARQL, while queries like :p* are defined under set semantics, queries like :p/:q, :p|:q, etc., are rewritten to joins, unions, etc., that use bag semantics).

For the Datalog engine, you can find code to convert RPQs to Datalog and the optimisations in the following repository.

About

License:GNU General Public License v3.0


Languages

Language:OpenEdge ABL 65.3%Language:C++ 24.4%Language:C 10.1%Language:Shell 0.1%