Query Soundness Experiment

This page describes the program and the files for the experimental evaluation of checking query soundness using completeness statements. The main reference of the experiment which contains the formalization, techniques, and discussion of the experimental results is under review for a conference.


We use the direct-statement fragment (i.e., with no qualifiers nor references) of Wikidata, consisting of around 110 mio triples: Wikidata dump in Feb 2016. In the experiment, we use Jena-TDB as the triple store. For convenience, the zipped TDB files that store the data graph for the experiment is available here.


The queries in the experiments are generated from the human-made queries openly available on Wikidata: Wikidata queries in April 2016 We extract the BGPs of those queries and transform the vocabulary of the queries to the direct-statement vocabulary. Depending on the cases, there are three sets of queries which differ only in queries that we remove due to cross-product joins wrt. the respective cases:

  1. Query set for oneTP and oneTPoneTP cases: queries-one.txt
  2. Query set for TwoTPs case: queries-two.txt
  3. Query set for ThreeTPs case: queries-three.txt

From these queries, the experiment program will generate the corresponding queries with negation, depending on the cases, which we will later check for their soundness.

Completeness Statements

The statements are generated on the fly by the experiment program based on the queries.

Experiment Program

The reasoning program and experiment framework are implemented in Java using the Apache Jena library. The source code is available as an Eclipse workspace. The ready-to-use JAR file of the program is available here.

To run the program, the folder of the TDB files (‘tdb-PREPROCESSED-wikidata-simple-statements-20160201’) must be put together in the folder of the JAR file. The command scheme is as follows:

java -jar soundness-experiment.jar [observation repeats] [warming up] [case] [query filename]

The parameters used are:

In the experiments, we run the following commands for the cases oneTP, oneTPoneTP, twoTPsTO, twoTPsSE, and threeTPsTO, respectively:

java -jar soundness-experiment.jar 10 1 1 queries-one.txt > case-oneTP.txt
java -jar soundness-experiment.jar 10 1 2 queries-one.txt > case-oneTPoneTP.txt
java -jar soundness-experiment.jar 10 1 3 queries-two.txt > case-twoTPsTO.txt
java -jar soundness-experiment.jar 10 1 4 queries-two.txt > case-twoTPsSE.txt
java -jar soundness-experiment.jar 10 1 5 queries-three.txt > case-threeTPsTO.txt

Note the experiment output is buffered via ‘>’. The summary of the experiment results is of the CSV-style, where the rows represent queries and the column names are: query length, number of query answers, query evaluation time, number of sound answers, query evaluation time performed when checking answer soundness, answer soundness checking time, total answer soundness checking time (incl. query evaluation time), is pattern sound, and pattern soundness checking time. This summary is provided at the bottom of the output of the experiment program under the section “STATISTICS”.

~this manual file is created by Fariz Darari, email: fariz.darari@stud-inf.unibz.it