Under the root directory of the project, use following commands to compile.
chmod 755 ./scripts/pre.sh ./experiment/*
./scripts/pre.sh
make
If user is querying on a new RDF data, please execute the following commands for adjacency list and index construction, etc.
./gload [DB_FOLDER_PATH] [RDF_DATA_PATH]
DB_FOLDER_PATH: Path where constructed files are stored.
RDF_DATA_PATH: Path where RDF data is stored.
For example:
./gload ./lubm_folder ./demo/lubm-1.nt
Please execute the following command to start the server side.
./run [DB_FOLDER_PATH] [THREAD_NUM]
DB_FOLDER_PATH: Path where constructed files are stored.
THREAD_NUM: Number of threads used in the server.
For exmaple:
./run ./lubm_folder 4
Caveat: If you see segment fault is popped out immediately, please use following command to clear messages in IPC.
./experiment/clean
Open a new terminal as client side (should be on the same machine as server), run following commands to start client:
cd client
make
./run
Copy your query file path in the terminal after "Please enter your query ..." is displayed on the server side, press enter and the results will be shown in the server side.
For example, copy the following path in the client side
./query/LUBM/q1
If everything goes right, you will see something like

Click Turtle and data will be downloaded automatically.
Please comment the first line
@basein the file to remove redunduncy.
Click Full Turtle format and data will be downloaded automatically.
Please comment the first line
@basein the file to remove redunduncy.
LUBM is a synthetic dataset generated by Java program. Please refer data generation and data conversion for more details.
Please refer to query folder for all queries used in experiments and their descriptions.
T-RDF temporarily doesn't support normal predicate variable names starting with ?, such as ?P1, ?P2. But we tailor made this situation with a special naming prefix . Different predicate variables can be named as <PU1>, <PU2>, <PU3>, etc.
For example, in query/LUBM/q6, <PU1> refers to a predicate variable linking ?Z and ?Y.
SELECT ?X ?Y ?Z
WHERE
{
?X <teacherOf> ?Y .
?Z <PU1> ?Y .
?Z <advisor> ?X .
}