From c0f5bdcdb29608532656c71c219680eccd4aad09 Mon Sep 17 00:00:00 2001 From: yzhou Date: Tue, 21 Apr 2015 22:45:35 +0100 Subject: fixed some bugs in windows server --- .classpath | 2 +- .gitignore | 4 + config/fly.conf | 18 + config/lubm.conf | 20 + config/uobm.conf | 20 + data/fly/fly.sparql | 24 +- log4j.log | 2421 -------------------- src/org/semanticweb/karma2/MyKarma.java | 64 +- .../pagoda/multistage/MultiStageQueryEngine.java | 6 + .../pagoda/multistage/MultiStageUpperProgram.java | 3 +- .../cs/pagoda/multistage/TwoStageApplication.java | 7 +- src/uk/ac/ox/cs/pagoda/query/GapByTriple.java | 12 +- .../ox/cs/pagoda/reasoner/ConsistencyManager.java | 32 +- .../ox/cs/pagoda/reasoner/ConsistencyManager2.java | 12 +- .../ox/cs/pagoda/reasoner/ELHOQueryReasoner.java | 2 +- .../ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java | 2 +- .../ox/cs/pagoda/reasoner/IterativeRefinement.java | 17 +- .../ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java | 9 +- src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java | 32 +- .../ox/cs/pagoda/reasoner/full/HermitChecker.java | 6 +- .../cs/pagoda/reasoner/light/BasicQueryEngine.java | 39 +- .../pagoda/reasoner/light/RDFoxTripleManager.java | 14 +- .../ox/cs/pagoda/summary/HermitSummaryFilter.java | 4 +- src/uk/ac/ox/cs/pagoda/tracking/QueryTracker.java | 69 +- src/uk/ac/ox/cs/pagoda/util/Properties.java | 133 +- test/uk/ac/ox/cs/jrdfox/Tester.java | 121 +- .../uk/ac/ox/cs/pagoda/junit/JAIR_Scalability.java | 3 +- test/uk/ac/ox/cs/pagoda/tester/ORETester.java | 18 +- test/uk/ac/ox/cs/pagoda/tester/PagodaTester.java | 75 +- 29 files changed, 454 insertions(+), 2735 deletions(-) create mode 100644 config/fly.conf create mode 100644 config/lubm.conf create mode 100644 config/uobm.conf delete mode 100644 log4j.log diff --git a/.classpath b/.classpath index 74fa7c2..8a6a0f3 100644 --- a/.classpath +++ b/.classpath @@ -18,11 +18,11 @@ + - diff --git a/.gitignore b/.gitignore index ae3c172..510652a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ /bin/ +/target/ +/backup/ +/tmp/ +/testcase/ diff --git a/config/fly.conf b/config/fly.conf new file mode 100644 index 0000000..23e2861 --- /dev/null +++ b/config/fly.conf @@ -0,0 +1,18 @@ +#ONTOLOGY variable points to the file that stores ontology of interest +ONTOLOGY=data/fly/fly_anatomy_XP_with_GJ_FC_individuals.owl + +#QUERY variable points to the file that stores all queries +#QUERY=data/fly/fly.sparql +QUERY=data/fly/test.sparql + +#ANSWER variable points to the file to output all answers +ANSWER=data/fly/fly.ans + +#TO_CLASSIFY switch for the optimisation to specify if the ontology is first classified by HermiT +TO_CLASSIFY=false + +#CALL_HERMIT variable to specify if HermiT is called or not +CALL_HERMIT=true + +#SHELL_MODE to enable query execution from console input +SHELL_MODE=false \ No newline at end of file diff --git a/config/lubm.conf b/config/lubm.conf new file mode 100644 index 0000000..6775d84 --- /dev/null +++ b/config/lubm.conf @@ -0,0 +1,20 @@ +#DATA variable points to the file that stores data +DATA=data/lubm/lubm1.ttl + +#ONTOLOGY variable points to the file that stores ontology of interest +ONTOLOGY=data/lubm/univ-bench.owl + +#QUERY variable points to the file that stores all queries +QUERY=data/lubm/lubm.sparql + +#ANSWER variable points to the file to output all answers +ANSWER=data/lubm/lubm.ans + +#TO_CLASSIFY switch for the optimisation to specify if the ontology is first classified by HermiT +TO_CLASSIFY=true + +#CALL_HERMIT variable to specify if HermiT is called or not +CALL_HERMIT=true + +#SHELL_MODE to enable query execution from console input +SHELL_MODE=false \ No newline at end of file diff --git a/config/uobm.conf b/config/uobm.conf new file mode 100644 index 0000000..52d37f2 --- /dev/null +++ b/config/uobm.conf @@ -0,0 +1,20 @@ +#DATA variable points to the file that stores data +DATA=data/uobm/uobm1.ttl + +#ONTOLOGY variable points to the file that stores ontology of interest +ONTOLOGY=data/uobm/univ-bench-dl.owl + +#QUERY variable points to the file that stores all queries +QUERY=data/uobm/uobm.sparql + +#ANSWER variable points to the file to output all answers +ANSWER=data/uobm/uobm.ans + +#TO_CLASSIFY switch for the optimisation to specify if the ontology is first classified by HermiT +TO_CLASSIFY=true + +#CALL_HERMIT variable to specify if HermiT is called or not +CALL_HERMIT=true + +#SHELL_MODE to enable query execution from console input +SHELL_MODE=false \ No newline at end of file diff --git a/data/fly/fly.sparql b/data/fly/fly.sparql index 2c36c81..88f9fb3 100644 --- a/data/fly/fly.sparql +++ b/data/fly/fly.sparql @@ -7,8 +7,8 @@ PREFIX obo: SELECT ?X WHERE { ?X rdf:type obo:FBbt_00005106 . - ?X obo:RO_0002131 ?Y . - ?Y rdf:type obo:FBbt_00007401 + ?X obo:RO_0002131 _:Y . + _:Y rdf:type obo:FBbt_00007401 } ######################### @@ -21,10 +21,10 @@ PREFIX FBbt: SELECT ?X WHERE { ?X rdf:type obo:FBbt_00005106 . - ?X obo:RO_0002131 ?Y . - ?Y rdf:type obo:FBbt_00007401 . - ?X FBbt:develops_from ?Z . - ?Z rdf:type obo:FBbt_00067346 + ?X obo:RO_0002131 _:Y . + _:Y rdf:type obo:FBbt_00007401 . + ?X FBbt:develops_from _:Z . + _:Z rdf:type obo:FBbt_00067346 } ######################### @@ -47,8 +47,8 @@ PREFIX obo: SELECT ?X WHERE { ?X rdf:type obo:FBbt_00007173 . -?X obo:RO_0002131 ?Y . -?Y rdf:type obo:FBbt_00003924 +?X obo:RO_0002131 _:Y . +_:Y rdf:type obo:FBbt_00003924 } @@ -60,8 +60,8 @@ PREFIX rdf: PREFIX obo: SELECT ?X WHERE { -?X obo:RO_0002131 ?Y . -?Y rdf:type obo:FBbt_00005801 +?X obo:RO_0002131 _:Y . +_:Y rdf:type obo:FBbt_00005801 } ######################### @@ -72,6 +72,6 @@ PREFIX rdf: PREFIX obo: SELECT ?X WHERE { -?X obo:RO_0002130 ?Y . -?Y rdf:type obo:FBbt_00007053 +?X obo:RO_0002130 _:Y . +_:Y rdf:type obo:FBbt_00007053 } diff --git a/log4j.log b/log4j.log deleted file mode 100644 index 50444d4..0000000 --- a/log4j.log +++ /dev/null @@ -1,2421 +0,0 @@ -System started with -Arg 1: ..\core\WebContent\WEB-INF\data\fly.owl -Arg 2: ..\core\WebContent\WEB-INF\data\fly-data.nt -Arg 3: null - -The number of data property range axioms that are ignored: 0(14447) -XMLReader initialized using JAXP: org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser@188cf07e -Registered service class org.openrdf.rio.datatypes.XMLSchemaDatatypeHandler -Registered service class org.openrdf.rio.datatypes.RDFDatatypeHandler -Registered service class org.openrdf.rio.datatypes.DBPediaDatatypeHandler -Registered service class org.openrdf.rio.datatypes.VirtuosoGeometryDatatypeHandler -Registered service class org.openrdf.rio.datatypes.GeoSPARQLDatatypeHandler -Registered service class org.openrdf.rio.languages.RFC3066LanguageHandler -SimpleETL rewriting DONE -additional ontology data is saved in C:\Users\yzhou\workspace\PAGOdA\tmp\ABox.ttl. -The number of rules: 18078 -OntologyID: OntologyID(OntologyIRI()) -ELHO fragment extracted ... -Preprocessing ... checking satisfiability ... -rl-lower-bound store after importing data: 55484 (55484 new) -rl-lower-bound store finished importing data in 0.263 seconds. -Prefix declared: prefix0:=http://purl.obolibrary.org/obo/ -Prefix declared: prefix1:=http://purl.obolibrary.org/obo/FBbt# -rl-lower-bound store after materialising lower program: 109902 (54418 new) -rl-lower-bound store finished the materialisation of lower program in 1.742 seconds. -The number of answers in the lower bound: 0 -The number of sameAs assertions in RL lower store: 0 -elho-lower-bound store after importing data: 55484 (55484 new) -elho-lower-bound store finished importing data in 0.25 seconds. -elho-lower-bound store after materialising saturate named individuals: 92223 (36739 new) -elho-lower-bound store finished the materialisation of saturate named individuals in 1.093 seconds. -elho-lower-bound store after materialising lower program: 110706 (18483 new) -elho-lower-bound store finished the materialisation of lower program in 1.799 seconds. -elho-lower-store finished its own materialisation in 4.724 seconds. -Failed to find configuration: location-mapping.ttl;location-mapping.rdf;location-mapping.n3;etc/location-mapping.rdf;etc/location-mapping.n3;etc/location-mapping.ttl -@Time to group individuals by equality: 0.0 -The number of answers in the lower bound: 0 -tracking store after importing data: 55484 (55484 new) -tracking store finished importing data in 0.26 seconds. -tracking store after materialising saturate named individuals: 92223 (36739 new) -tracking store finished the materialisation of saturate named individuals in 1.04 seconds. -tracking store after materialising lower program: 110706 (18483 new) -tracking store finished the materialisation of lower program in 1.995 seconds. -tracking store is materialising multi-stage upper program ... -Iteration 1: -current store after materialising upper related rules: 110706 (0 new) -current store finished the materialisation of upper related rules in 1.602 seconds. -gap query evaluted ... -current store before importing gap tuples: 110706 -There are 0 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 110706 (0). -current store finished importing gap tuples: 110706 in 0.0. -tracking store after materialising datalog-rules: 110706 (0 new) -Time to materialise datalog-rules: 1.602 -Time to detect violations: 28.778 -Time to make the constraint being satisfied: 0.01 439 tuples for atLeast(1 )(X) :- (X) -tuple number: 439 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 9 tuples for atLeast(1 )(X) :- (X) -tuple number: 9 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 10 tuples for atLeast(1 )(X) :- (X) -tuple number: 10 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 83 tuples for atLeast(1 )(X) :- (X) -tuple number: 83 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 7 tuples for atLeast(1 )(X) :- (X) -tuple number: 7 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 8 tuples for atLeast(1 )(X) :- (X) -tuple number: 8 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 803 tuples for atLeast(1 )(X) :- (X) -tuple number: 803 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 131 tuples for atLeast(1 )(X) :- (X) -tuple number: 131 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 12 tuples for atLeast(1 )(X) :- (X) -tuple number: 12 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 14 tuples for atLeast(1 )(X) :- (X) -tuple number: 14 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 18 tuples for atLeast(1 )(X) :- (X) -tuple number: 18 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 803 tuples for atLeast(1 )(X) :- (X) -tuple number: 803 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 803 tuples for atLeast(1 )(X) :- (X) -tuple number: 803 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 23 tuples for atLeast(1 )(X) :- (X) -tuple number: 23 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 7 tuples for atLeast(1 )(X) :- (X) -tuple number: 7 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 86 tuples for atLeast(1 )(X) :- (X) -tuple number: 86 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 65 tuples for atLeast(1 )(X) :- (X) -tuple number: 65 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 10 tuples for atLeast(1 )(X) :- (X) -tuple number: 10 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 467 tuples for atLeast(1 )(X) :- (X) -tuple number: 467 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 803 tuples for atLeast(1 )(X) :- (X) -tuple number: 803 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 672 tuples for atLeast(1 )(X) :- (X) -tuple number: 672 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 25 tuples for atLeast(1 )(X) :- (X) -tuple number: 25 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 108 tuples for atLeast(1 )(X) :- (X) -tuple number: 108 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 8 tuples for atLeast(1 )(X) :- (X) -tuple number: 8 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 116 tuples for atLeast(1 )(X) :- (X) -tuple number: 116 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 177 tuples for atLeast(1 )(X) :- (X) -tuple number: 177 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 17 tuples for atLeast(1 )(X) :- (X) -tuple number: 17 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 10 tuples for atLeast(1 )(X) :- (X) -tuple number: 10 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 29 tuples for atLeast(1 )(X) :- (X) -tuple number: 29 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 803 tuples for atLeast(1 )(X) :- (X) -tuple number: 803 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 176 tuples for atLeast(1 )(X) :- (X) -tuple number: 176 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.01 803 tuples for atLeast(1 )(X) :- (X) -tuple number: 803 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 342 tuples for atLeast(1 )(X) :- (X) -tuple number: 342 before: 110706 after: 110706 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 110706 after: 110706 (0 new) . -tracking store after adding facts for violations: 110706 (0 new) -Time to add triples for violations: 0.17 -Iteration 2: -current store after materialising upper related rules: 152802 (42096 new) -current store finished the materialisation of upper related rules in 0.271 seconds. -gap query evaluted ... -current store before importing gap tuples: 152802 -There are 26178 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 178980 (26178). -current store finished importing gap tuples: 178980 in 0.1. -tracking store after materialising datalog-rules: 178980 (68274 new) -Time to materialise datalog-rules: 0.381 -Time to detect violations: 1.153 -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.01 169 tuples for atLeast(1 )(X) :- (X) -tuple number: 169 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 17 tuples for atLeast(1 )(X) :- (X) -tuple number: 17 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 314 tuples for atLeast(1 )(X) :- (X) -tuple number: 314 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 8 tuples for atLeast(1 )(X) :- (X) -tuple number: 8 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 16 tuples for atLeast(1 )(X) :- (X) -tuple number: 16 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 9 tuples for atLeast(1 )(X) :- (X) -tuple number: 9 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 15 tuples for atLeast(1 )(X) :- (X) -tuple number: 15 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.01 9 tuples for atLeast(1 )(X) :- (X) -tuple number: 9 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 803 tuples for atLeast(1 )(X) :- (X) -tuple number: 803 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 24 tuples for atLeast(1 )(X) :- (X) -tuple number: 24 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 9 tuples for atLeast(1 )(X) :- (X) -tuple number: 9 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.01 342 tuples for atLeast(1 )(X) :- (X) -tuple number: 342 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 8 tuples for atLeast(1 )(X) :- (X) -tuple number: 8 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.01 7 tuples for atLeast(1 )(X) :- (X) -tuple number: 7 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 178980 after: 178980 (0 new) . -tracking store after adding facts for violations: 178980 (0 new) -Time to add triples for violations: 0.24 -Iteration 3: -current store after materialising upper related rules: 222832 (43852 new) -current store finished the materialisation of upper related rules in 0.448 seconds. -gap query evaluted ... -current store before importing gap tuples: 222832 -There are 40100 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 262932 (40100). -current store finished importing gap tuples: 262932 in 0.11. -tracking store after materialising datalog-rules: 262932 (83952 new) -Time to materialise datalog-rules: 0.578 -Time to detect violations: 0.39 -Time to make the constraint being satisfied: 0.0 7 tuples for atLeast(1 )(X) :- (X) -tuple number: 7 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 19 tuples for atLeast(1 )(X) :- (X) -tuple number: 19 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 33 tuples for atLeast(1 )(X) :- (X) -tuple number: 33 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 10 tuples for atLeast(1 )(X) :- (X) -tuple number: 10 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 7 tuples for atLeast(1 )(X) :- (X) -tuple number: 7 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 6 tuples for atLeast(1 )(X) :- (X) -tuple number: 6 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 11 tuples for atLeast(1 )(X) :- (X) -tuple number: 11 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 6 tuples for atLeast(1 )(X) :- (X) -tuple number: 6 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 19 tuples for atLeast(1 )(X) :- (X) -tuple number: 19 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 19 tuples for atLeast(1 )(X) :- (X) -tuple number: 19 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 19 tuples for atLeast(1 )(X) :- (X) -tuple number: 19 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 6 tuples for atLeast(1 )(X) :- (X) -tuple number: 6 before: 262932 after: 262932 (0 new) . -Time to make the constraint being satisfied: 0.0 6 tuples for atLeast(1 )(X) :- (X) -tuple number: 6 before: 262932 after: 262932 (0 new) . -tracking store after adding facts for violations: 262932 (0 new) -Time to add triples for violations: 0.23 -Iteration 4: -current store after materialising upper related rules: 301313 (38381 new) -current store finished the materialisation of upper related rules in 0.558 seconds. -gap query evaluted ... -current store before importing gap tuples: 301313 -There are 37867 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 339180 (37867). -current store finished importing gap tuples: 339180 in 0.1. -tracking store after materialising datalog-rules: 339180 (76248 new) -Time to materialise datalog-rules: 0.678 -Time to detect violations: 0.35 -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 7 tuples for atLeast(1 )(X) :- (X) -tuple number: 7 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 339180 after: 339180 (0 new) . -tracking store after adding facts for violations: 339180 (0 new) -Time to add triples for violations: 0.21 -Iteration 5: -current store after materialising upper related rules: 416454 (77274 new) -current store finished the materialisation of upper related rules in 1.649 seconds. -gap query evaluted ... -current store before importing gap tuples: 416454 -There are 77042 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 493496 (77042). -current store finished importing gap tuples: 493496 in 0.2. -tracking store after materialising datalog-rules: 493496 (154316 new) -Time to materialise datalog-rules: 1.859 -Time to detect violations: 1.483 -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.01 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 493496 after: 493496 (0 new) . -tracking store after adding facts for violations: 493496 (0 new) -Time to add triples for violations: 0.28 -Iteration 6: -current store after materialising upper related rules: 505890 (12394 new) -current store finished the materialisation of upper related rules in 0.507 seconds. -gap query evaluted ... -current store before importing gap tuples: 505890 -There are 12224 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 518114 (12224). -current store finished importing gap tuples: 518114 in 0.04. -tracking store after materialising datalog-rules: 518114 (24618 new) -Time to materialise datalog-rules: 0.557 -Time to detect violations: 0.36 -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 518114 after: 518114 (0 new) . -tracking store after adding facts for violations: 518114 (0 new) -Time to add triples for violations: 0.26 -Iteration 7: -current store after materialising upper related rules: 519699 (1585 new) -current store finished the materialisation of upper related rules in 0.082 seconds. -gap query evaluted ... -current store before importing gap tuples: 519699 -There are 1397 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 521096 (1397). -current store finished importing gap tuples: 521096 in 0.01. -tracking store after materialising datalog-rules: 521096 (2982 new) -Time to materialise datalog-rules: 0.112 -Time to detect violations: 0.477 -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 12 tuples for atLeast(1 )(X) :- (X) -tuple number: 12 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 12 tuples for atLeast(1 )(X) :- (X) -tuple number: 12 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 12 tuples for atLeast(1 )(X) :- (X) -tuple number: 12 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 521096 after: 521096 (0 new) . -tracking store after adding facts for violations: 521096 (0 new) -Time to add triples for violations: 0.54 -Iteration 8: -current store after materialising upper related rules: 523003 (1907 new) -current store finished the materialisation of upper related rules in 0.125 seconds. -gap query evaluted ... -current store before importing gap tuples: 523003 -There are 1617 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 524620 (1617). -current store finished importing gap tuples: 524620 in 0.01. -tracking store after materialising datalog-rules: 524620 (3524 new) -Time to materialise datalog-rules: 0.155 -Time to detect violations: 0.4 -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 12 tuples for atLeast(1 )(X) :- (X) -tuple number: 12 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 20 tuples for atLeast(1 )(X) :- (X) -tuple number: 20 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 524620 after: 524620 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 524620 after: 524620 (0 new) . -tracking store after adding facts for violations: 524620 (0 new) -Time to add triples for violations: 0.4 -Iteration 9: -current store after materialising upper related rules: 527324 (2704 new) -current store finished the materialisation of upper related rules in 0.21 seconds. -gap query evaluted ... -current store before importing gap tuples: 527324 -There are 2386 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 529710 (2386). -current store finished importing gap tuples: 529710 in 0.02. -tracking store after materialising datalog-rules: 529710 (5090 new) -Time to materialise datalog-rules: 0.24 -Time to detect violations: 0.517 -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 9 tuples for atLeast(1 )(X) :- (X) -tuple number: 9 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 9 tuples for atLeast(1 )(X) :- (X) -tuple number: 9 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 14 tuples for atLeast(1 )(X) :- (X) -tuple number: 14 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 14 tuples for atLeast(1 )(X) :- (X) -tuple number: 14 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 529710 after: 529710 (0 new) . -tracking store after adding facts for violations: 529710 (0 new) -Time to add triples for violations: 0.71 -Iteration 10: -current store after materialising upper related rules: 532720 (3010 new) -current store finished the materialisation of upper related rules in 0.266 seconds. -gap query evaluted ... -current store before importing gap tuples: 532720 -There are 2646 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 535366 (2646). -current store finished importing gap tuples: 535366 in 0.01. -tracking store after materialising datalog-rules: 535366 (5656 new) -Time to materialise datalog-rules: 0.296 -Time to detect violations: 0.42 -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 8 tuples for atLeast(1 )(X) :- (X) -tuple number: 8 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.0 4 tuples for atLeast(1 )(X) :- (X) -tuple number: 4 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 5 tuples for atLeast(1 )(X) :- (X) -tuple number: 5 before: 535366 after: 535366 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 535366 after: 535366 (0 new) . -tracking store after adding facts for violations: 535366 (0 new) -Time to add triples for violations: 0.485 -Iteration 11: -current store after materialising upper related rules: 541482 (6116 new) -current store finished the materialisation of upper related rules in 0.815 seconds. -gap query evaluted ... -current store before importing gap tuples: 541482 -There are 5872 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 547354 (5872). -current store finished importing gap tuples: 547354 in 0.02. -tracking store after materialising datalog-rules: 547354 (11988 new) -Time to materialise datalog-rules: 0.855 -Time to detect violations: 0.24 -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.01 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 6 tuples for atLeast(1 )(X) :- (X) -tuple number: 6 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 547354 after: 547354 (0 new) . -Time to make the constraint being satisfied: 0.01 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 547354 after: 547354 (0 new) . -tracking store after adding facts for violations: 547354 (0 new) -Time to add triples for violations: 0.15 -Iteration 12: -current store after materialising upper related rules: 550579 (3225 new) -current store finished the materialisation of upper related rules in 0.582 seconds. -gap query evaluted ... -current store before importing gap tuples: 550579 -There are 3145 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 553724 (3145). -current store finished importing gap tuples: 553724 in 0.02. -tracking store after materialising datalog-rules: 553724 (6370 new) -Time to materialise datalog-rules: 0.612 -Time to detect violations: 0.22 -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 3 tuples for atLeast(1 )(X) :- (X) -tuple number: 3 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.0 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -Time to make the constraint being satisfied: 0.01 1 tuples for atLeast(1 )(X) :- (X) -tuple number: 1 before: 553724 after: 553724 (0 new) . -tracking store after adding facts for violations: 553724 (0 new) -Time to add triples for violations: 0.26 -Iteration 13: -current store after materialising upper related rules: 554343 (619 new) -current store finished the materialisation of upper related rules in 0.095 seconds. -gap query evaluted ... -current store before importing gap tuples: 554343 -There are 559 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 554902 (559). -current store finished importing gap tuples: 554902 in 0.01. -tracking store after materialising datalog-rules: 554902 (1178 new) -Time to materialise datalog-rules: 0.125 -Time to detect violations: 0.09 -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 554902 after: 554902 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 554902 after: 554902 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 554902 after: 554902 (0 new) . -Time to make the constraint being satisfied: 0.0 2 tuples for atLeast(1 )(X) :- (X) -tuple number: 2 before: 554902 after: 554902 (0 new) . -tracking store after adding facts for violations: 554902 (0 new) -Time to add triples for violations: 0.05 -Iteration 14: -current store after materialising upper related rules: 555158 (256 new) -current store finished the materialisation of upper related rules in 0.05 seconds. -gap query evaluted ... -current store before importing gap tuples: 555158 -There are 240 tuples in the gap between lower and upper bound materialisation. -current store after importing gap tuples: 555398 (240). -current store finished importing gap tuples: 555398 in 0.01. -tracking store after materialising datalog-rules: 555398 (496 new) -Time to materialise datalog-rules: 0.08 -tracking store after materialising multi-stage upper program: 555398 (444692 new) -tracking store is DONE for multi-stage materialising in 47.481 seconds. -The number of answers in the upper bound: 0 -The ontology and dataset is satisfiable. -time for satisfiability checking: 62.211 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -The number of answers in the upper bound: 0 -There are 0 different bottom fragments. -Preprocessing Done in 69.566 seconds. ----------- start evaluating upper bound for Query 1 ---------- -select ?x ?y where { ?x ?y . } -The number of answers in the upper bound: 8386 -The number of answers for this SemFacet query: 8386 -Total time for this SemFacet query: 0.14 ----------- start evaluating upper bound for Query 2 ---------- -select ?x ?y where { ?x ?y . } -The number of answers in the upper bound: 1359 -The number of answers for this SemFacet query: 1359 -Total time for this SemFacet query: 0.032 ----------- start evaluating upper bound for Query 3 ---------- -select ?x ?y where { ?x ?y . } -The number of answers in the upper bound: 3917 -The number of answers for this SemFacet query: 3917 -Total time for this SemFacet query: 0.04 ----------- start evaluating upper bound for Query 4 ---------- -select ?x ?y where { ?x ?y . } -The number of answers in the upper bound: 1606 -The number of answers for this SemFacet query: 1606 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 5 ---------- -select ?x ?y where { ?x ?y . } -The number of answers in the upper bound: 865 -The number of answers for this SemFacet query: 865 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 6 ---------- -select ?x ?z where { ?x ?z } -The number of answers in the upper bound: 24586 -The number of answers for this SemFacet query: 24586 -Total time for this SemFacet query: 0.15 ----------- start evaluating upper bound for Query 7 ---------- -select ?x ?z where { ?x ?z } -The number of answers in the upper bound: 8386 -The number of answers for this SemFacet query: 8386 -Total time for this SemFacet query: 0.026 ----------- start evaluating upper bound for Query 8 ---------- -SELECT ?x ?z WHERE { ?x ?z } -The number of answers in the upper bound: 6164 -The number of answers for this SemFacet query: 6164 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 9 ---------- -SELECT ?x ?z WHERE { ?x ?z } -The number of answers in the upper bound: 24586 -The number of answers for this SemFacet query: 24586 -Total time for this SemFacet query: 0.07 ----------- start evaluating upper bound for Query 10 ---------- -SELECT DISTINCT ?y WHERE {?x ?y ?z} -The number of answers in the upper bound: 43 -The number of answers for this SemFacet query: 43 -Total time for this SemFacet query: 0.04 ----------- start evaluating upper bound for Query 11 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 11 -The number of answers for this SemFacet query: 11 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 12 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 750 -The number of answers for this SemFacet query: 750 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 13 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 2801 -The number of answers for this SemFacet query: 2801 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 14 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 310 -The number of answers for this SemFacet query: 310 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 15 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 16 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 17 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 18 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 19 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 20 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 21 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 22 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 803 -The number of answers for this SemFacet query: 803 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 23 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 7555 -The number of answers for this SemFacet query: 7555 -Total time for this SemFacet query: 0.02 ----------- start evaluating upper bound for Query 24 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 12 -The number of answers for this SemFacet query: 12 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 25 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 26 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 11 -The number of answers for this SemFacet query: 11 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 27 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 1318 -The number of answers for this SemFacet query: 1318 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 28 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 5 -The number of answers for this SemFacet query: 5 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 29 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 645 -The number of answers for this SemFacet query: 645 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 30 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 3276 -The number of answers for this SemFacet query: 3276 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 31 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 803 -The number of answers for this SemFacet query: 803 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 32 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 35895 -The number of answers for this SemFacet query: 35895 -Total time for this SemFacet query: 0.08 ----------- start evaluating upper bound for Query 33 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 4 -The number of answers for this SemFacet query: 4 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 34 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 803 -The number of answers for this SemFacet query: 803 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 35 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 36 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 4 -The number of answers for this SemFacet query: 4 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 37 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 38 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 39 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 40 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 41 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 68 -The number of answers for this SemFacet query: 68 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 42 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 803 -The number of answers for this SemFacet query: 803 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 43 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 44 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 8 -The number of answers for this SemFacet query: 8 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 45 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 803 -The number of answers for this SemFacet query: 803 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 46 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 8383 -The number of answers for this SemFacet query: 8383 -Total time for this SemFacet query: 0.02 ----------- start evaluating upper bound for Query 47 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 2012 -The number of answers for this SemFacet query: 2012 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 48 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 97 -The number of answers for this SemFacet query: 97 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 49 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 50 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 48 -The number of answers for this SemFacet query: 48 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 51 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 225 -The number of answers for this SemFacet query: 225 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 52 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 803 -The number of answers for this SemFacet query: 803 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 53 ---------- -SELECT DISTINCT ?z WHERE {?x ?z} -The number of answers in the upper bound: 387 -The number of answers for this SemFacet query: 387 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 54 ---------- -SELECT DISTINCT ?x WHERE {?x ?z} -The number of answers in the upper bound: 1359 -The number of answers for this SemFacet query: 1359 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 55 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 56 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 57 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 58 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 59 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 60 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 61 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 62 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 63 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 64 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 65 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 66 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 67 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 68 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 69 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 70 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 71 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 72 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 73 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 74 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 75 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 76 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 77 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 78 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 79 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 80 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 81 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 82 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 83 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 84 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 85 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 86 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 87 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 88 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 89 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 90 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 91 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 92 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 93 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 94 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 95 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 96 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 97 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 98 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 99 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 100 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 101 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 102 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 103 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 104 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 105 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 106 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 107 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 108 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 2 -The number of answers for this SemFacet query: 2 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 109 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 110 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 111 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 112 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 113 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 114 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 115 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 116 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 117 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 118 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 119 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 120 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 121 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 122 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 123 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 124 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 125 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 126 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 127 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 128 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 129 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 130 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 131 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 132 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 133 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 134 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 135 ---------- -select ?x where { ?x . } -The number of answers in the upper bound: 803 -The number of answers for this SemFacet query: 803 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 54 ---------- -SELECT DISTINCT ?x WHERE {?x ?z} -The number of answers in the upper bound: 1359 -The number of answers for this SemFacet query: 1359 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 103 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 104 ---------- -SELECT ?z WHERE { ?z } -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 105 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 106 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 107 ---------- -SELECT ?z WHERE { ?z } -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 108 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 2 -The number of answers for this SemFacet query: 2 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 109 ---------- -SELECT ?z WHERE { ?z } -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 110 ---------- -SELECT ?z WHERE { ?z } -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 136 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 137 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 138 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 139 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 140 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 141 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 2 -The number of answers for this SemFacet query: 2 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 142 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 143 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 144 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 145 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 146 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 147 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 148 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 149 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 2 -The number of answers for this SemFacet query: 2 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 150 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 151 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 152 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 153 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 154 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 155 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 156 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.01 ----------- start evaluating upper bound for Query 157 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 2 -The number of answers for this SemFacet query: 2 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 158 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 159 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 160 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 161 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 162 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 163 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 164 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 165 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 2 -The number of answers for this SemFacet query: 2 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 166 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 167 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 168 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 169 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 170 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 171 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 1 -The number of answers for this SemFacet query: 1 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 172 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 173 ---------- -SELECT ?z WHERE { ?z } -The number of answers in the upper bound: 2 -The number of answers for this SemFacet query: 2 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 6 ---------- -select ?x ?z where { ?x ?z } -The number of answers in the upper bound: 24586 -The number of answers for this SemFacet query: 24586 -Total time for this SemFacet query: 0.07 ----------- start evaluating upper bound for Query 174 ---------- -select distinct ?y where { ?x ?y ?z } -The number of answers in the upper bound: 43 -The number of answers for this SemFacet query: 43 -Total time for this SemFacet query: 0.02 ----------- start evaluating upper bound for Query 175 ---------- -select distinct ?z where { ?x ?z } -The number of answers in the upper bound: 387 -The number of answers for this SemFacet query: 387 -Total time for this SemFacet query: 0.0 ----------- start evaluating upper bound for Query 176 ---------- -select ?y ?z where { ?y ?z .} -The number of answers in the upper bound: 0 -The number of answers for this SemFacet query: 0 -Total time for this SemFacet query: 0.0 diff --git a/src/org/semanticweb/karma2/MyKarma.java b/src/org/semanticweb/karma2/MyKarma.java index 60938df..b2b4352 100644 --- a/src/org/semanticweb/karma2/MyKarma.java +++ b/src/org/semanticweb/karma2/MyKarma.java @@ -121,30 +121,19 @@ public class MyKarma { private Set answerCQ_multiThread(ConjunctiveQuery q, AnswerTuples soundAnswerTuples, boolean isGround) { Set> set = new HashSet>(); ExtendedConjunctiveQuery qext = ExtendedConjunctiveQuery.computeExtension(q); - TupleIterator tupleIterator; + TupleIterator tupleIterator = null; + ExecutorService es = null; try { tupleIterator = store.compileQuery(qext.toString(), prefixes, parameters); - } catch (JRDFStoreException e) { - e.printStackTrace(); - return null; - } - ExecutorService es = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); - AnswerTuple tuple; - try { - try { - for (long multi = tupleIterator.open(); multi != 0; multi = tupleIterator.getNext()) { - Map match = new HashMap(); - for (int i = 0; i < qext.getNumberOfAnswerTerms(); i++) { - match.put(qext.getAnswerTerm(i), tupleIterator.getGroundTerm(i)); - } - if ((tuple = contains(qext, soundAnswerTuples, match)) != null) - set.add(es.submit(new Spurious(qext, match, tuple, isGround))); + es = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + AnswerTuple tuple; + for (long multi = tupleIterator.open(); multi != 0; multi = tupleIterator.getNext()) { + Map match = new HashMap(); + for (int i = 0; i < qext.getNumberOfAnswerTerms(); i++) { + match.put(qext.getAnswerTerm(i), tupleIterator.getGroundTerm(i)); } - } catch (JRDFStoreException e) { - e.printStackTrace(); - return null; - } finally { - tupleIterator.dispose(); + if ((tuple = contains(qext, soundAnswerTuples, match)) != null) + set.add(es.submit(new Spurious(qext, match, tuple, isGround))); } Set result = new HashSet(set.size()); while(!set.isEmpty()) { @@ -166,28 +155,28 @@ public class MyKarma { } } return result; + } catch (JRDFStoreException e1) { + e1.printStackTrace(); + return null; } finally { - es.shutdown(); + if (tupleIterator != null) tupleIterator.dispose(); + if (es != null) es.shutdown(); } } private Set answerCQ_singleThread(ConjunctiveQuery q, AnswerTuples soundAnswerTuples, boolean isGround) { ExtendedConjunctiveQuery qext = ExtendedConjunctiveQuery.computeExtension(q); - TupleIterator tupleIterator; - try { - tupleIterator = store.compileQuery(qext.toString(), prefixes, parameters); - } catch (JRDFStoreException e) { - e.printStackTrace(); - return null; - } - boolean useBushyValue = parameters.m_useBushy, allAnswersInRootValue = parameters.m_allAnswersInRoot; - parameters.m_useBushy = false; - parameters.m_allAnswersInRoot = false; - try { Set result = new HashSet(); - AnswerTuple tuple; + + TupleIterator tupleIterator = null; try { + tupleIterator = store.compileQuery(qext.toString(), prefixes, parameters); + parameters.m_useBushy = false; + parameters.m_allAnswersInRoot = false; + + AnswerTuple tuple; + for (long multi = tupleIterator.open(); multi != 0; multi = tupleIterator.getNext()) { Map match = new HashMap(); for (int i = 0; i < qext.getNumberOfAnswerTerms(); i++) { @@ -200,14 +189,11 @@ public class MyKarma { e.printStackTrace(); return null; } finally { - tupleIterator.dispose(); - } - return result; - } finally { + if (tupleIterator != null) tupleIterator.dispose(); parameters.m_useBushy = useBushyValue; parameters.m_allAnswersInRoot = allAnswersInRootValue; } - + return result; } private AnswerTuple contains(ExtendedConjunctiveQuery qext, AnswerTuples answerTuples, Map match) { diff --git a/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java b/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java index b74fe7d..b77c264 100644 --- a/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java +++ b/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java @@ -18,6 +18,9 @@ public class MultiStageQueryEngine extends StageQueryEngine { super(name, checkValidity); } + /** + * c-chase + */ @Override public void materialiseFoldedly(DatalogProgram dProgram, GapByStore4ID gap) { materialise("lower program", dProgram.getLower().toString()); @@ -27,6 +30,9 @@ public class MultiStageQueryEngine extends StageQueryEngine { materialise(program, treatment, gap); } + /** + * c-chase^f + */ @Override public int materialiseRestrictedly(DatalogProgram dProgram, GapByStore4ID gap) { if (gap != null) diff --git a/src/uk/ac/ox/cs/pagoda/multistage/MultiStageUpperProgram.java b/src/uk/ac/ox/cs/pagoda/multistage/MultiStageUpperProgram.java index caa26fa..4239ccc 100644 --- a/src/uk/ac/ox/cs/pagoda/multistage/MultiStageUpperProgram.java +++ b/src/uk/ac/ox/cs/pagoda/multistage/MultiStageUpperProgram.java @@ -245,6 +245,7 @@ public abstract class MultiStageUpperProgram { if (tuples != null) tuples.dispose(); } + tuples = null; try { tuples = engine.internal_evaluateNotExpanded(SparqlHelper.getSPARQLQuery(atoms, x, y)); for (long multi = tuples.open(); multi != 0; multi = tuples.getNext()) @@ -279,7 +280,7 @@ public abstract class MultiStageUpperProgram { TupleIterator tuples = null; try { tuples = engine.internal_evaluateNotExpanded(headQuery); - for (; tuples.isValid(); tuples.getNext()) + for (long multi = tuples.open(); multi != 0; multi = tuples.getNext()) headAnswers.add(new AnswerTupleID(tuples)); } catch (JRDFStoreException e) { e.printStackTrace(); diff --git a/src/uk/ac/ox/cs/pagoda/multistage/TwoStageApplication.java b/src/uk/ac/ox/cs/pagoda/multistage/TwoStageApplication.java index e52213b..f08bfbd 100644 --- a/src/uk/ac/ox/cs/pagoda/multistage/TwoStageApplication.java +++ b/src/uk/ac/ox/cs/pagoda/multistage/TwoStageApplication.java @@ -149,8 +149,8 @@ abstract class TwoStageApplication { // TODO Auto-generated catch block e.printStackTrace(); } finally { - if (tuples != null) - tuples.dispose(); + if (tuples != null) tuples.dispose(); + tuples = null; } } } @@ -209,8 +209,7 @@ abstract class TwoStageApplication { // TODO Auto-generated catch block e.printStackTrace(); } finally { - if (tuples != null) - tuples.dispose(); + if (tuples != null) tuples.dispose(); } return ret; } diff --git a/src/uk/ac/ox/cs/pagoda/query/GapByTriple.java b/src/uk/ac/ox/cs/pagoda/query/GapByTriple.java index 1a94f07..a1c1b0e 100644 --- a/src/uk/ac/ox/cs/pagoda/query/GapByTriple.java +++ b/src/uk/ac/ox/cs/pagoda/query/GapByTriple.java @@ -53,7 +53,7 @@ public class GapByTriple extends GapTupleIterator { @Override public boolean hasNext() { - TupleIterator iter; + TupleIterator iter = null; boolean inGap; StringBuffer queryBuffer = new StringBuffer(); try { @@ -75,9 +75,13 @@ public class GapByTriple extends GapTupleIterator { queryBuffer.setLength(0); queryBuffer.append("SELECT WHERE { ").append(sub).append(" ").append(predicate).append(" ").append(obj).append(" }"); - iter = lowerStore.compileQuery(queryBuffer.toString(), prefixes, parameters); - inGap = iter.open() != 0; - iter.dispose(); + try { + iter = lowerStore.compileQuery(queryBuffer.toString(), prefixes, parameters); + inGap = iter.open() != 0; + } finally { + if (iter != null) iter.dispose(); + iter = null; + } if (inGap) return true; } diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager.java b/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager.java index a222645..7d3e40c 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager.java @@ -43,7 +43,15 @@ public class ConsistencyManager { boolean checkRLLowerBound() { fullQueryRecord = m_queryManager.create(QueryRecord.botQueryText, 0); - fullQueryRecord.updateLowerBoundAnswers(m_reasoner.rlLowerStore.evaluate(fullQueryRecord.getQueryText(), fullQueryRecord.getAnswerVariables())); + AnswerTuples iter = null; + + try { + iter = m_reasoner.rlLowerStore.evaluate(fullQueryRecord.getQueryText(), fullQueryRecord.getAnswerVariables()); + fullQueryRecord.updateLowerBoundAnswers(iter); + } finally { + iter.dispose(); + } + if (fullQueryRecord.getNoOfSoundAnswers() > 0) { Utility.logInfo("Answers to bottom in the lower bound: ", fullQueryRecord.outputSoundAnswerTuple()); return unsatisfiability(t.duration()); @@ -81,8 +89,15 @@ public class ConsistencyManager { // if (!checkRLLowerBound()) return false; // if (!checkELLowerBound()) return false; // if (checkLazyUpper()) return true; + AnswerTuples iter = null; + + try { + iter = m_reasoner.trackingStore.evaluate(fullQueryRecord.getQueryText(), fullQueryRecord.getAnswerVariables()); + fullQueryRecord.updateUpperBoundAnswers(iter); + } finally { + if (iter != null) iter.dispose(); + } - fullQueryRecord.updateUpperBoundAnswers(m_reasoner.trackingStore.evaluate(fullQueryRecord.getQueryText(), fullQueryRecord.getAnswerVariables())); if (fullQueryRecord.getNoOfCompleteAnswers() == 0) return satisfiability(t.duration()); @@ -101,7 +116,7 @@ public class ConsistencyManager { for (QueryRecord r: getQueryRecords()) { // TODO to be removed ... // r.saveRelevantOntology("bottom" + r.getQueryID() + ".owl"); - checker = new HermitSummaryFilter(r); // m_reasoner.factory.getSummarisedReasoner(r); + checker = new HermitSummaryFilter(r, true); // m_reasoner.factory.getSummarisedReasoner(r); satisfiability = checker.isConsistent(); checker.dispose(); if (!satisfiability) return unsatisfiability(t.duration()); @@ -143,8 +158,15 @@ public class ConsistencyManager { QueryRecord[] tempQueryRecords = new QueryRecord[number - 1]; QueryRecord record; for (int i = 0; i < number - 1; ++i) { - tempQueryRecords[i] = record = m_queryManager.create(QueryRecord.botQueryText.replace("Nothing", "Nothing" + (i + 1)), 0, i + 1); - record.updateUpperBoundAnswers(m_reasoner.trackingStore.evaluate(record.getQueryText(), record.getAnswerVariables())); + tempQueryRecords[i] = record = m_queryManager.create(QueryRecord.botQueryText.replace("Nothing", "Nothing" + (i + 1)), 0, i + 1); + AnswerTuples iter = null; + try { + iter = m_reasoner.trackingStore.evaluate(record.getQueryText(), record.getAnswerVariables()); + record.updateUpperBoundAnswers(iter); + } finally { + if (iter != null) iter.dispose(); + iter = null; + } } int bottomNumber = 0; diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager2.java b/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager2.java index 67dc4fc..9c335f3 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager2.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager2.java @@ -3,6 +3,7 @@ package uk.ac.ox.cs.pagoda.reasoner; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.model.OWLOntologyManager; +import uk.ac.ox.cs.pagoda.query.AnswerTuples; import uk.ac.ox.cs.pagoda.query.QueryRecord; import uk.ac.ox.cs.pagoda.reasoner.full.Checker; import uk.ac.ox.cs.pagoda.summary.HermitSummaryFilter; @@ -32,8 +33,15 @@ public class ConsistencyManager2 extends ConsistencyManager { // if (!checkRLLowerBound()) return false; // if (!checkELLowerBound()) return false; if (checkLazyUpper()) return true; + AnswerTuples iter = null; + + try { + iter = m_reasoner.trackingStore.evaluate(fullQueryRecord.getQueryText(), fullQueryRecord.getAnswerVariables()); + fullQueryRecord.updateUpperBoundAnswers(iter); + } finally { + if (iter != null) iter.dispose(); + } - fullQueryRecord.updateUpperBoundAnswers(m_reasoner.trackingStore.evaluate(fullQueryRecord.getQueryText(), fullQueryRecord.getAnswerVariables())); if (fullQueryRecord.getNoOfCompleteAnswers() == 0) return satisfiability(t.duration()); @@ -43,7 +51,7 @@ public class ConsistencyManager2 extends ConsistencyManager { e.printStackTrace(); } - Checker checker = new HermitSummaryFilter(fullQueryRecord); // m_reasoner.factory.getSummarisedReasoner(fullQueryRecord); + Checker checker = new HermitSummaryFilter(fullQueryRecord, true); // m_reasoner.factory.getSummarisedReasoner(fullQueryRecord); // fullQueryRecord.saveRelevantOntology("fragment_bottom.owl"); boolean satisfiable = checker.isConsistent(); checker.dispose(); diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOQueryReasoner.java index 4ebe5f2..ab57ccf 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOQueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOQueryReasoner.java @@ -54,7 +54,7 @@ public class ELHOQueryReasoner extends QueryReasoner { @Override public void loadOntology(OWLOntology ontology) { - program = new LowerDatalogProgram(!forSemFacet); + program = new LowerDatalogProgram(properties.getToClassify()); program.load(ontology, new UnaryBottom()); program.transform(); diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java index 62d238b..0d24a02 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java @@ -113,7 +113,7 @@ public class ELHOUQueryReasoner extends QueryReasoner { } OWLOntology ontology = o; - program = new DatalogProgram(ontology, !forSemFacet); + program = new DatalogProgram(ontology, properties.getToClassify()); importData(program.getAdditionalDataFile()); diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/IterativeRefinement.java b/src/uk/ac/ox/cs/pagoda/reasoner/IterativeRefinement.java index ba6a4d4..447a92d 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/IterativeRefinement.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/IterativeRefinement.java @@ -7,6 +7,7 @@ import org.semanticweb.owlapi.model.OWLOntology; import uk.ac.ox.cs.pagoda.constraints.BottomStrategy; import uk.ac.ox.cs.pagoda.constraints.UpperUnaryBottom; import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine; +import uk.ac.ox.cs.pagoda.query.AnswerTuples; import uk.ac.ox.cs.pagoda.query.QueryRecord; import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; import uk.ac.ox.cs.pagoda.rules.GeneralProgram; @@ -47,7 +48,13 @@ public class IterativeRefinement { return m_record.getRelevantOntology(); } - update = m_record.updateUpperBoundAnswers(tEngine.evaluate(m_record.getQueryText())); + AnswerTuples ans = null; + try { + ans = tEngine.evaluate(m_record.getQueryText()); + update = m_record.updateUpperBoundAnswers(ans); + } finally { + if (ans != null) ans.dispose(); + } } finally { tEngine.dispose(); } @@ -78,7 +85,13 @@ public class IterativeRefinement { return m_record.getRelevantOntology(); } - update = m_record.updateUpperBoundAnswers(tEngine.evaluate(m_record.getQueryText())); + AnswerTuples ans = null; + try { + ans = tEngine.evaluate(m_record.getQueryText()); + update = m_record.updateUpperBoundAnswers(ans); + } finally { + if (ans != null) ans.dispose(); + } } finally { tEngine.dispose(); } diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java index 2c2feae..875dcdd 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java @@ -85,7 +85,7 @@ public class MyQueryReasoner extends QueryReasoner { } ontology = o; - program = new DatalogProgram(ontology, !forSemFacet); + program = new DatalogProgram(ontology, properties.getToClassify()); // program.getLower().save(); // program.getUpper().save(); // program.getGeneral().save(); @@ -275,11 +275,10 @@ public class MyQueryReasoner extends QueryReasoner { rlAnswer = upperStore.evaluate(queryText, answerVariables); Utility.logDebug(t.duration()); queryRecord.updateUpperBoundAnswers(rlAnswer); - rlAnswer.dispose(); } finally { if (rlAnswer != null) rlAnswer.dispose(); + rlAnswer = null; } - rlAnswer = null; } @Override @@ -296,11 +295,11 @@ public class MyQueryReasoner extends QueryReasoner { // queryRecord.saveRelevantOntology("fragment_query" + queryRecord.getQueryID() + ".owl"); Timer t = new Timer(); - Checker summarisedChecker = new HermitSummaryFilter(queryRecord); + Checker summarisedChecker = new HermitSummaryFilter(queryRecord, properties.getToCallHermiT()); int validNumber = summarisedChecker.check(queryRecord.getGapAnswers()); summarisedChecker.dispose(); Utility.logDebug("Total time for full reasoner: " + t.duration()); - if (!forSemFacet || validNumber == 0) { + if (validNumber == 0) { queryRecord.markAsProcessed(); Utility.logDebug("Difficulty of this query: " + queryRecord.getDifficulty()); } diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java index 0c009a2..a484444 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java @@ -14,23 +14,41 @@ import uk.ac.ox.cs.pagoda.owl.OWLHelper; import uk.ac.ox.cs.pagoda.query.AnswerTuples; import uk.ac.ox.cs.pagoda.query.QueryManager; import uk.ac.ox.cs.pagoda.query.QueryRecord; +import uk.ac.ox.cs.pagoda.util.Properties; import uk.ac.ox.cs.pagoda.util.Timer; import uk.ac.ox.cs.pagoda.util.Utility; public abstract class QueryReasoner { - protected boolean forSemFacet = false; - +// protected boolean forSemFacet = false; + Properties properties; + public static enum Type { Full, RLU, ELHOU }; - public static QueryReasoner getInstanceForSemFacet(OWLOntology o) { - QueryReasoner reasoner = getInstance(Type.Full, o, true, true); - reasoner.forSemFacet = true; - return reasoner; + public static QueryReasoner getInstance(Properties p) { + OWLOntology ontology = OWLHelper.loadOntology(p.getOntologyPath()); + QueryReasoner pagoda = getInstance(ontology, p); + pagoda.properties = p; + pagoda.loadOntology(ontology); + pagoda.importData(p.getDataPath()); + if (pagoda.preprocess()) { + System.out.println("The ontology is consistent!"); + return pagoda; + } + else { + System.out.println("The ontology is inconsistent!"); + pagoda.dispose(); + return null; + } } - public static QueryReasoner getInstance(OWLOntology o) { + QueryReasoner pagoda = getInstance(Type.Full, o, true, true); + pagoda.properties = new Properties(); + return pagoda; + } + + private static QueryReasoner getInstance(OWLOntology o, Properties p) { return getInstance(Type.Full, o, true, true); } diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/full/HermitChecker.java b/src/uk/ac/ox/cs/pagoda/reasoner/full/HermitChecker.java index 6f5d363..97925fc 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/full/HermitChecker.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/full/HermitChecker.java @@ -43,6 +43,7 @@ public class HermitChecker implements Checker { protected OWLOntology ontology; protected QueryRecord record; protected QueryGraph qGraph = null; + boolean toCheck = true; public HermitChecker(Checker checker) { if (checker instanceof HermitChecker) { @@ -58,12 +59,13 @@ public class HermitChecker implements Checker { hermit = new Reasoner(ontology); } - public HermitChecker(OWLOntology ontology, QueryRecord record) { + public HermitChecker(OWLOntology ontology, QueryRecord record, boolean toCheck) { this.ontology = ontology; queryText = record.getQueryText(); answerVariable = record.getVariables(); queryClause = record.getClause(); // this.record = record; + this.toCheck = toCheck; } public HermitChecker(OWLOntology ontology, String queryText) { @@ -198,6 +200,8 @@ public class HermitChecker implements Checker { @Override public boolean check(AnswerTuple answerTuple) { + if (!toCheck) return false; + if (hermit == null) initialiseReasoner(); if (tag != 0) return tag == 1; ++counter; diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/light/BasicQueryEngine.java b/src/uk/ac/ox/cs/pagoda/reasoner/light/BasicQueryEngine.java index 3207ff1..11588ce 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/light/BasicQueryEngine.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/light/BasicQueryEngine.java @@ -47,8 +47,8 @@ public class BasicQueryEngine extends RDFoxQueryEngine { getDataStore().clearRulesAndMakeFactsExplicit(); } catch (JRDFStoreException e) { e.printStackTrace(); - gap.clear(); } finally { + gap.clear(); } } else @@ -149,9 +149,14 @@ public class BasicQueryEngine extends RDFoxQueryEngine { if (instanceTuples != null) instanceTuples.dispose(); } } + } catch (JRDFStoreException e) { + e.printStackTrace(); + } finally { + if (predicateTuples != null) predicateTuples.dispose(); + predicateTuples = null; + } - predicateTuples.dispose(); - + try { predicateTuples = getDataStore().compileQuery("SELECT DISTINCT ?Y WHERE { ?X ?Y ?Z }", prefixes, parameters); for (long multi = predicateTuples.open(); multi != 0; multi = predicateTuples.getNext()) { predicate = RDFoxTripleManager.getQuotedTerm(predicateTuples.getResource(0)); @@ -172,6 +177,7 @@ public class BasicQueryEngine extends RDFoxQueryEngine { e.printStackTrace(); } finally { if (predicateTuples != null) predicateTuples.dispose(); + predicateTuples = null; } Utility.redirectCurrentOut(filename); @@ -184,13 +190,13 @@ public class BasicQueryEngine extends RDFoxQueryEngine { public TupleIterator internal_evaluateAgainstIDBs(String queryText) throws JRDFStoreException { TupleIterator iter = store.compileQuery(queryText, prefixes, parameters, TripleStatus.TUPLE_STATUS_IDB.union(TripleStatus.TUPLE_STATUS_EDB), TripleStatus.TUPLE_STATUS_IDB); - iter.open(); +// iter.open(); return iter; } public TupleIterator internal_evaluate(String queryText) throws JRDFStoreException { TupleIterator iter = store.compileQuery(queryText, prefixes, parameters); - iter.open(); +// iter.open(); return iter; } @@ -201,7 +207,7 @@ public class BasicQueryEngine extends RDFoxQueryEngine { public TupleIterator internal_evaluateNotExpanded(String queryText) throws JRDFStoreException { parameters.m_expandEquality = false; TupleIterator iter = store.compileQuery(queryText, prefixes, parameters); - iter.open(); +// iter.open(); parameters.m_expandEquality = true; return iter; } @@ -346,19 +352,22 @@ public class BasicQueryEngine extends RDFoxQueryEngine { for (int[] t: collection) store.addTriplesByResourceIDs(t, ut); - iter = internal_evaluateAgainstIDBs("select ?x ?y ?z where { ?x ?y ?z . }"); - for (long multi = iter.open(); multi != 0; multi = iter.getNext()) { - int[] triple = new int[3]; - for (int i = 0; i < 3; ++i) - triple[i] = iter.getResourceID(i); - store.addTriplesByResourceIDs(triple, ut); + try { + iter = internal_evaluateAgainstIDBs("select ?x ?y ?z where { ?x ?y ?z . }"); + for (long multi = iter.open(); multi != 0; multi = iter.getNext()) { + int[] triple = new int[3]; + for (int i = 0; i < 3; ++i) + triple[i] = iter.getResourceID(i); + store.addTriplesByResourceIDs(triple, ut); + } + } finally { + if (iter != null) iter.dispose(); + iter = null; } store.applyReasoning(true); } catch (JRDFStoreException e) { e.printStackTrace(); - } finally { - if (iter != null) iter.dispose(); - } + } Utility.logInfo("Time for deletion: " + timer.duration()); } diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxTripleManager.java b/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxTripleManager.java index 2280b12..c2065dc 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxTripleManager.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxTripleManager.java @@ -2,12 +2,9 @@ package uk.ac.ox.cs.pagoda.reasoner.light; import java.util.Collection; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedList; import java.util.Map; import java.util.Queue; -import java.util.Set; - import org.semanticweb.HermiT.model.AnnotatedEquality; import org.semanticweb.HermiT.model.Atom; import org.semanticweb.HermiT.model.AtomicConcept; @@ -37,7 +34,7 @@ public class RDFoxTripleManager { DataStore m_store; Dictionary m_dict; - Set triplesByTerm = new HashSet(); +// Set triplesByTerm = new HashSet(); public RDFoxTripleManager(DataStore store, boolean incrementally) { m_store = store; @@ -63,7 +60,16 @@ public class RDFoxTripleManager { } public void addTripleByID(int[] tuple) { +// System.out.println(getRawTerm(tuple[0]) + " " + getRawTerm(tuple[1]) + " " + getRawTerm(tuple[2]) + " ."); try { +// Resource[] rsc = new Resource[3]; +// m_dict.getResources(tuple, 0, 3, rsc); +// +// GroundTerm[] terms = new GroundTerm[3]; +// for (int i = 0; i < 3; ++i) +// terms[i] = uk.ac.ox.cs.JRDFox.model.Individual.create(rsc[i].m_lexicalForm); +// m_store.addTriples(terms, m_incrementally); + m_store.addTriplesByResourceIDs(tuple, m_incrementally); } catch (JRDFStoreException e) { e.printStackTrace(); diff --git a/src/uk/ac/ox/cs/pagoda/summary/HermitSummaryFilter.java b/src/uk/ac/ox/cs/pagoda/summary/HermitSummaryFilter.java index a57d188..a0ecce8 100644 --- a/src/uk/ac/ox/cs/pagoda/summary/HermitSummaryFilter.java +++ b/src/uk/ac/ox/cs/pagoda/summary/HermitSummaryFilter.java @@ -34,9 +34,9 @@ public class HermitSummaryFilter implements Checker { Endomorph endomorphismChecker = null; - public HermitSummaryFilter(QueryRecord record) { + public HermitSummaryFilter(QueryRecord record, boolean toCallHermiT) { m_record = record; - HermitChecker hermitChecker = new HermitChecker(record.getRelevantOntology(), record); + HermitChecker hermitChecker = new HermitChecker(record.getRelevantOntology(), record, toCallHermiT); endomorphismChecker = new Endomorph(record, hermitChecker); hermitChecker.setDependencyGraph(endomorphismChecker.getDependencyGraph()); } diff --git a/src/uk/ac/ox/cs/pagoda/tracking/QueryTracker.java b/src/uk/ac/ox/cs/pagoda/tracking/QueryTracker.java index 0e19e30..f836212 100644 --- a/src/uk/ac/ox/cs/pagoda/tracking/QueryTracker.java +++ b/src/uk/ac/ox/cs/pagoda/tracking/QueryTracker.java @@ -35,6 +35,7 @@ import uk.ac.ox.cs.JRDFox.model.Datatype; import uk.ac.ox.cs.JRDFox.store.DataStore; import uk.ac.ox.cs.JRDFox.store.Resource; import uk.ac.ox.cs.JRDFox.store.TupleIterator; +import uk.ac.ox.cs.JRDFox.store.DataStore.UpdateType; public class QueryTracker { @@ -80,7 +81,7 @@ public class QueryTracker { Timer t1 = new Timer(); oldTripleCount = store.getTriplesCount(); // store.addRules(new String[] {m_encoder.getTrackingProgram()}); - store.importRules(m_encoder.getTrackingProgram()); + store.importRules(m_encoder.getTrackingProgram(), UpdateType.ScheduleForAddition); store.applyReasoning(incrementally); tripleCount = store.getTriplesCount(); @@ -93,8 +94,7 @@ public class QueryTracker { + t1.duration() + " seconds."); } catch (JRDFStoreException e) { e.printStackTrace(); - } - + } extractAxioms(trackingStore); trackingStore.clearRulesAndIDBFacts(m_encoder.getAddedData()); @@ -145,8 +145,7 @@ public class QueryTracker { } catch (JRDFStoreException e) { e.printStackTrace(); } finally { - if (answers != null) - answers.dispose(); + if (answers != null) answers.dispose(); } Utility.logTrace("Extracted TBox axioms: "); @@ -190,7 +189,6 @@ public class QueryTracker { } } } catch (JRDFStoreException e) { - // TODO Auto-generated catch block e.printStackTrace(); } finally { if (trackingAnswers != null) trackingAnswers.dispose(); @@ -329,9 +327,7 @@ public class QueryTracker { continue; TupleIterator answers = null, lowerAnswers = null; Set lower = new HashSet(); - OWLClass cls = factory - .getOWLClass(IRI.create(clsIRI.startsWith("<") ? OWLHelper - .removeAngles(clsIRI) : clsIRI)); + OWLClass cls = factory.getOWLClass(IRI.create(clsIRI.startsWith("<") ? OWLHelper.removeAngles(clsIRI) : clsIRI)); try { answers = trackingStore.internal_evaluateAgainstIDBs(getSPARQLQuery4Unary(trackingIRI)); answers.open(); @@ -359,10 +355,8 @@ public class QueryTracker { } catch (JRDFStoreException e) { e.printStackTrace(); } finally { - if (answers != null) - answers.dispose(); - if (lowerAnswers != null) - lowerAnswers.dispose(); + if (answers != null) answers.dispose(); + if (lowerAnswers != null) lowerAnswers.dispose(); lower.clear(); } Utility.logDebug("class: " + clsIRI + " " + count); @@ -370,53 +364,37 @@ public class QueryTracker { return aboxAxiomCounter; } - private void getDerivedPredicates(BasicQueryEngine trackingStore, - Set unaryPredicates, Set binaryPredicates) { - + private void getDerivedPredicates(BasicQueryEngine trackingStore, Set unaryPredicates, Set binaryPredicates) { TupleIterator derivedTuples = null; String selectedPredicate = OWLHelper.addAngles(m_encoder.getSelectedPredicate()); try { - derivedTuples = trackingStore - .internal_evaluateAgainstIDBs("select distinct ?z where { ?x <" - + Namespace.RDF_TYPE + "> ?z . }"); + derivedTuples = trackingStore.internal_evaluateAgainstIDBs("select distinct ?z where { ?x <" + Namespace.RDF_TYPE + "> ?z . }"); for (long multi = derivedTuples.open(); multi != 0; multi = derivedTuples.getNext()) { String p = RDFoxTripleManager.getQuotedTerm(derivedTuples.getResource(0)); - if (p.equals(selectedPredicate)) - ; - else if (m_encoder.isAuxPredicate(p)) - ; - else - unaryPredicates.add(p); + if (p.equals(selectedPredicate)) ; + else if (m_encoder.isAuxPredicate(p)) ; + else unaryPredicates.add(p); } } catch (JRDFStoreException e) { e.printStackTrace(); } finally { - if (derivedTuples != null) - derivedTuples.dispose(); + if (derivedTuples != null) derivedTuples.dispose(); } derivedTuples = null; try { - derivedTuples = trackingStore - .internal_evaluateAgainstIDBs("select distinct ?y where { ?x ?y ?z . }"); + derivedTuples = trackingStore.internal_evaluateAgainstIDBs("select distinct ?y where { ?x ?y ?z . }"); for (long multi = derivedTuples.open(); multi != 0; multi = derivedTuples.getNext()) { String p = RDFoxTripleManager.getQuotedTerm(derivedTuples.getResource(0)); - if (p.equals(Namespace.RDF_TYPE_ABBR) - || p.equals(Namespace.RDF_TYPE_QUOTED)) - ; - else if (p.equals(Namespace.EQUALITY_ABBR) - || p.equals(Namespace.EQUALITY_QUOTED)) - ; - else if (m_encoder.isAuxPredicate(p)) - ; - else - binaryPredicates.add(p); + if (p.equals(Namespace.RDF_TYPE_ABBR) || p.equals(Namespace.RDF_TYPE_QUOTED)) ; + else if (p.equals(Namespace.EQUALITY_ABBR) || p.equals(Namespace.EQUALITY_QUOTED)) ; + else if (m_encoder.isAuxPredicate(p)) ; + else binaryPredicates.add(p); } } catch (JRDFStoreException e) { e.printStackTrace(); } finally { - if (derivedTuples != null) - derivedTuples.dispose(); + if (derivedTuples != null) derivedTuples.dispose(); } } @@ -428,8 +406,7 @@ public class QueryTracker { toAddedRecords.add(botQueryRecord); for (QueryRecord botQueryRecord : toAddedRecords) { - m_manager.addAxioms(m_record.getRelevantOntology(), botQueryRecord - .getRelevantOntology().getAxioms()); + m_manager.addAxioms(m_record.getRelevantOntology(), botQueryRecord.getRelevantOntology().getAxioms()); for (DLClause clause : botQueryRecord.getRelevantClauses()) m_record.addRelevantClauses(clause); } @@ -456,16 +433,14 @@ public class QueryTracker { private String getSPARQLQuery4Unary(String p) { StringBuilder builder = new StringBuilder(); - builder.append("select ?x where { ?x <") - .append(Namespace.RDF_TYPE).append("> "); + builder.append("select ?x where { ?x <").append(Namespace.RDF_TYPE).append("> "); builder.append(p).append(" . }"); return builder.toString(); } private String getSPARQLQuery4Binary(String p) { StringBuilder builder = new StringBuilder(); - builder.append("select ?x ?y where { ?x ").append(p) - .append(" ?y . }"); + builder.append("select ?x ?y where { ?x ").append(p).append(" ?y . }"); return builder.toString(); } diff --git a/src/uk/ac/ox/cs/pagoda/util/Properties.java b/src/uk/ac/ox/cs/pagoda/util/Properties.java index 551f94f..b687b53 100644 --- a/src/uk/ac/ox/cs/pagoda/util/Properties.java +++ b/src/uk/ac/ox/cs/pagoda/util/Properties.java @@ -1,95 +1,66 @@ package uk.ac.ox.cs.pagoda.util; -import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStreamReader; -import java.util.HashMap; +import java.io.InputStream; public class Properties { - - public static final String FILE_SEPARATOR = ";"; -// switches -// public static final String reuseGapFile = "REUSE_GAP"; - public static final String toTrackProofs = "TO_TRACK"; - public static final String checkAnswers = "TO_CHECK_ANSWERS"; - public static final String redirectSysOut = "TO_REDIRECT_SYS_OUT"; - public static final String considerEqualities = "TO_CONSIDER_EQUALITIES"; - -// parameters - public static final String testcase = "TEST_CASE"; - public static final String typeOfLowerBounds = "TYPE_LOWER_BOUNDS"; - public static final String FULL_REASONER = "OWLREASONER"; - -// file locations - public static final String ontologyFile = "LOWER_T_FILE"; - public static final String importedData = "IMPORT"; - public static final String queryFile = "QUERY_FILE"; - -// auxiliary files -// public static final String auxiliaryDirectory = "AUXILIARY_DIRECTORY"; -// public static final String queryAnswerGapFile = "GAP_FILE"; -// public static final String lowerAnswerFile = "LOWER_ANSWER_FILE"; -// public static final String upperAnswerFile = "UPPER_ANSWER_FILE"; -// public static final String boundsGapFile = "BOUNDS_GAP_FILE"; -// public static final String fragmentFile = "FRAGMENT_FILE"; + String dataPath = null; + public String getDataPath() { return dataPath; } + public void setDataPath(String path) { dataPath = path; } - public static final String correspondence = "CORRESPONDENCE"; - - private HashMap param = new HashMap(); - - public static final String on = String.valueOf(true); - public static final String off = String.valueOf(false); - - public void reset() { - param.clear(); -// param.put(reuseGapFile, on); - param.put(toTrackProofs, on); - param.put(checkAnswers, on); - param.put(redirectSysOut, off); - param.put(considerEqualities, off); - } - - public Properties() { - reset(); - } - - public void addImportedFile(String additionalDataFile) { - if (additionalDataFile == null) return ; - String files = param.get(importedData); - StringBuilder sb = new StringBuilder(); - if (files != null) - sb.append(files).append(FILE_SEPARATOR); - sb.append(additionalDataFile); - param.put(importedData, sb.toString()); - } + String ontologyPath; + public String getOntologyPath() { return ontologyPath; } + public void setOntologyPath(String path) { ontologyPath = path; } - public void load(String file) throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file))); - String line; - String tokens[]; - while ((line = Utility.readLine(reader)) != null) { - if (line.isEmpty() || line.startsWith("#")) - continue; + String queryPath = null; + public String getQueryPath() { return queryPath; } + public void setQueryPath(String path) { queryPath = path; } + + String answerPath = null; + public String getAnswerPath() { return answerPath; } + public void setAnswerPath(String path) { answerPath = path; } + + boolean toClassify = true; + public boolean getToClassify() { return toClassify; } + public void setToClassify(boolean flag) { toClassify = flag; } + + boolean toCallHermiT = true; + public boolean getToCallHermiT() { return toCallHermiT; } + public void setToCallHermiT(boolean flag) { toCallHermiT = flag; } + + public static boolean ShellModeDefault = false; + + boolean shellMode = ShellModeDefault; + public boolean getShellMode() { return shellMode; } + public void setShellMode(boolean flag) { shellMode = flag; } + + public Properties(String path) { + java.util.Properties m_properties = new java.util.Properties(); + InputStream inputStream = null; + try { + inputStream = new FileInputStream(path); + m_properties.load(inputStream); - tokens = line.split("="); - if (tokens[1].equals("on")) - set(tokens[0], String.valueOf(true)); - else if (tokens[1].equals("off")) - set(tokens[0], String.valueOf(false)); - else - set(tokens[0], tokens[1]); + setOntologyPath(m_properties.getProperty("ONTOLOGY")); + setDataPath(m_properties.getProperty("DATA")); + setQueryPath(m_properties.getProperty("QUERY")); + setAnswerPath(m_properties.getProperty("ANSWER")); + setToClassify(Boolean.parseBoolean(m_properties.getProperty("TO_CLASSIFY"))); + setToCallHermiT(Boolean.parseBoolean(m_properties.getProperty("CALL_HERMIT"))); + + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (inputStream != null) + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } } - reader.close(); - } - - public String get(String key) { - return param.get(key); - } - - public void set(String key, String value) { - param.put(key, value); } + public Properties() { } } diff --git a/test/uk/ac/ox/cs/jrdfox/Tester.java b/test/uk/ac/ox/cs/jrdfox/Tester.java index 00476d6..94f5401 100644 --- a/test/uk/ac/ox/cs/jrdfox/Tester.java +++ b/test/uk/ac/ox/cs/jrdfox/Tester.java @@ -2,44 +2,137 @@ package uk.ac.ox.cs.jrdfox; import java.io.File; +import org.semanticweb.owlapi.model.OWLOntology; + import uk.ac.ox.cs.JRDFox.JRDFStoreException; import uk.ac.ox.cs.JRDFox.Prefixes; import uk.ac.ox.cs.JRDFox.store.DataStore; +import uk.ac.ox.cs.JRDFox.store.DataStore.UpdateType; import uk.ac.ox.cs.JRDFox.store.Parameters; +import uk.ac.ox.cs.JRDFox.store.TripleStatus; import uk.ac.ox.cs.JRDFox.store.TupleIterator; +import uk.ac.ox.cs.JRDFox.store.DataStore.StoreType; +import uk.ac.ox.cs.pagoda.owl.OWLHelper; +import uk.ac.ox.cs.pagoda.reasoner.light.RDFoxQueryEngine; +import uk.ac.ox.cs.pagoda.util.Namespace; import uk.ac.ox.cs.pagoda.util.Timer; public class Tester { - public static void main(String[] args) { + public static void main(String[] args) throws JRDFStoreException { + Tester tester = new Tester(); + tester.testCrash(); + } + + private void evaluate_againstIDs(String queryText) throws JRDFStoreException { + int number = 0; + Timer t = new Timer(); + TupleIterator iter = null; try { - (new Tester()).test();; - } catch (JRDFStoreException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + iter = store.compileQuery(queryText, prefixes, parameters, TripleStatus.TUPLE_STATUS_IDB.union(TripleStatus.TUPLE_STATUS_EDB), TripleStatus.TUPLE_STATUS_IDB); + for (long multi = iter.open(); multi != 0; multi = iter.getNext()) + ++number; + } finally { + if (iter != null) iter.dispose(); } + System.out.println(number); + System.out.println(t.duration()); + } - + DataStore store; Prefixes prefixes = new Prefixes(); Parameters parameters; public Tester() { try { - store = new DataStore(new File("lazy-upper-bound")); + store = new DataStore(StoreType.NarrowParallelHead); + store.setNumberOfThreads(RDFoxQueryEngine.matNoOfThreads); + store.initialize(); + System.out.println("data store created."); } catch (JRDFStoreException e) { e.printStackTrace(); } - parameters = new Parameters(); + parameters = new Parameters(); parameters.m_allAnswersInRoot = true; - parameters.m_useBushy = true; - + parameters.m_useBushy = true; + } + + public Tester(String path) { + try { + store = new DataStore(new File(path)); + } catch (JRDFStoreException e) { + e.printStackTrace(); + } + parameters = new Parameters(); +// parameters.m_allAnswersInRoot = true; +// parameters.m_useBushy = true; + } + + public void applyReasoning(boolean incremental) { + Timer t = new Timer(); + try { + store.applyReasoning(incremental); + } catch (JRDFStoreException e) { + e.printStackTrace(); + } + System.out.println("reasoning done: " + t.duration()); } public void dispose() { store.dispose(); } + public void testCrash() throws JRDFStoreException { +// DataStore lowerStore = new DataStore(StoreType.NarrowParallelHead); +// lowerStore.setNumberOfThreads(RDFoxQueryEngine.matNoOfThreads); +// lowerStore.initialize(); +// System.out.println("lower data store created."); + OWLOntology ontology = OWLHelper.loadOntology("data/fly/fly_anatomy_XP_with_GJ_FC_individuals.owl"); + System.out.println("ontology loaded ... " + ontology.getAxiomCount()); + + store.importTurtleFile(new File("testcase/fly.ttl")); + System.out.println("data loaded. " + store.getTriplesCount()); + + store.importRules(new File[] {new File("testcase/lower.dlog")}); + System.out.println("rules loaded. " + store.getTriplesCount()); + + store.applyReasoning(); + System.out.println("materialised. " + store.getTriplesCount()); + + store.clearRulesAndMakeFactsExplicit(); + + store.importRules(new File[] {new File("testcase/multi.dlog")}); + System.out.println("rules loaded. " + store.getTriplesCount()); + + store.applyReasoning(); + System.out.println("materialised. " + store.getTriplesCount()); + + store.makeFactsExplicit(); + + store.importTurtleFiles(new File[] {new File("testcase/first.ttl")}, UpdateType.ScheduleForAddition); + System.out.println("first data loaded. " + store.getTriplesCount()); + + store.applyReasoning(true); + System.out.println("incremental reasoning done. " + store.getTriplesCount()); + + store.clearRulesAndMakeFactsExplicit(); + + store.importTurtleFiles(new File[] {new File("testcase/second.ttl")}, UpdateType.ScheduleForAddition); + store.importRules(new File[] {new File("testcase/tracking.dlog")}, UpdateType.ScheduleForAddition); + store.applyReasoning(true); + System.out.println("incremental reasoning done. " + store.getTriplesCount()); + + evaluate_againstIDs("select distinct ?z where { ?x <" + Namespace.RDF_TYPE + "> ?z . }"); + System.out.println("done."); +// tester.applyReasoning(true); +// tester.evaluate_againstIDs("select distinct ?z where { ?x <" + Namespace.RDF_TYPE + "> ?z . }"); +// System.out.println("done."); + + store.dispose(); +// lowerStore.dispose(); + } + public void test() throws JRDFStoreException { evaluate("PREFIX benchmark: " + "SELECT distinct ?x WHERE { " @@ -82,18 +175,18 @@ public class Tester { + "?z benchmark:isHeadOf . " + "?z benchmark:like ?y . " + "?y a }"); -} + } public void evaluate(String query) throws JRDFStoreException { - TupleIterator iter = store.compileQuery(query, prefixes, parameters); - int number = 0; Timer t = new Timer(); + TupleIterator iter = null; try { + iter = store.compileQuery(query, prefixes, parameters); for (long multi = iter.open(); multi != 0; multi = iter.getNext()) ++number; } finally { - iter.dispose(); + if (iter != null) iter.dispose(); } System.out.println(number); System.out.println(t.duration()); diff --git a/test/uk/ac/ox/cs/pagoda/junit/JAIR_Scalability.java b/test/uk/ac/ox/cs/pagoda/junit/JAIR_Scalability.java index 5bd3134..5e2b1d7 100644 --- a/test/uk/ac/ox/cs/pagoda/junit/JAIR_Scalability.java +++ b/test/uk/ac/ox/cs/pagoda/junit/JAIR_Scalability.java @@ -3,6 +3,7 @@ package uk.ac.ox.cs.pagoda.junit; import org.junit.Test; import uk.ac.ox.cs.pagoda.tester.PagodaTester; +import uk.ac.ox.cs.pagoda.util.Properties; public class JAIR_Scalability { @@ -78,7 +79,7 @@ public class JAIR_Scalability { } public static void main(String... args) { - PagodaTester.ShellMode = true; + Properties.ShellModeDefault = true; new JAIR_Scalability().testUniProt(50, false); } diff --git a/test/uk/ac/ox/cs/pagoda/tester/ORETester.java b/test/uk/ac/ox/cs/pagoda/tester/ORETester.java index 1092d6f..ae58ba9 100644 --- a/test/uk/ac/ox/cs/pagoda/tester/ORETester.java +++ b/test/uk/ac/ox/cs/pagoda/tester/ORETester.java @@ -1,9 +1,7 @@ package uk.ac.ox.cs.pagoda.tester; -import org.semanticweb.owlapi.model.OWLOntology; - -import uk.ac.ox.cs.pagoda.owl.OWLHelper; import uk.ac.ox.cs.pagoda.reasoner.QueryReasoner; +import uk.ac.ox.cs.pagoda.util.Properties; public class ORETester { @@ -13,17 +11,11 @@ public class ORETester { // args = new String[] { "/home/yzhou/krr-nas-share/Yujiao/ontologies/ORE2014/DL/wine_nodatatype.owl" }; // args = new String[] { "/home/yzhou/krr-nas-share/Yujiao/ontologies/ORE2014/EL/b7700fe1-103b-4b32-a21c-f6604a763ba5_t-cell.owl" }; - args = new String[] { "/home/yzhou/krr-nas-share/Yujiao/ontologies/ORE2014/EL/baa29363-f93c-4285-827e-0e2380c82efc_cations.n3" }; - +// args = new String[] { "/home/yzhou/krr-nas-share/Yujiao/ontologies/ORE2014/EL/baa29363-f93c-4285-827e-0e2380c82efc_cations.n3" }; - OWLOntology ontology = OWLHelper.loadOntology(args[0]); - QueryReasoner pagoda = QueryReasoner.getInstance(ontology); - System.out.println(pagoda); - pagoda.loadOntology(ontology); - if (pagoda.preprocess()) - System.out.println("The ontology is consistent!"); - else - System.out.println("The ontology is inconsistent!"); + Properties properties = new Properties("config/sys.conf"); + QueryReasoner pagoda = QueryReasoner.getInstance(properties); + pagoda.dispose(); } } diff --git a/test/uk/ac/ox/cs/pagoda/tester/PagodaTester.java b/test/uk/ac/ox/cs/pagoda/tester/PagodaTester.java index d754a70..48a2a51 100644 --- a/test/uk/ac/ox/cs/pagoda/tester/PagodaTester.java +++ b/test/uk/ac/ox/cs/pagoda/tester/PagodaTester.java @@ -5,13 +5,10 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.util.Scanner; -import org.semanticweb.owlapi.model.OWLOntology; - -import uk.ac.ox.cs.pagoda.owl.OWLHelper; import uk.ac.ox.cs.pagoda.query.AnswerTuple; import uk.ac.ox.cs.pagoda.query.AnswerTuples; import uk.ac.ox.cs.pagoda.reasoner.*; -import uk.ac.ox.cs.pagoda.reasoner.QueryReasoner.Type; +import uk.ac.ox.cs.pagoda.util.Properties; import uk.ac.ox.cs.pagoda.util.Timer; import uk.ac.ox.cs.pagoda.util.Utility; @@ -93,8 +90,6 @@ public class PagodaTester { public static final String atlas_abox = onto_dir + "bio2rdf/atlas/graph sampling/sample_1.nt"; public static final String atlas_queries = onto_dir + "bio2rdf/atlas/queries/atomic_one.sparql"; - public static boolean ShellMode = false; - public static void main(String... args) { if (args.length == 0) { // args = new String[] {test_tbox, test_abox, test_query}; @@ -109,7 +104,7 @@ public class PagodaTester { // args = new String[] {"../SemFacet/WebContent/WEB-INF/data/dbpedia.owl", "../SemFacet/WebContent/WEB-INF/data/dbpediaA.nt", null}; // args = new String[] {"../core/WebContent/WEB-INF/data/fly.owl", "../core/WebContent/WEB-INF/data/fly-data.nt", null}; // args = new String[] {"data/lubm/univ-bench.owl", "data/lubm/lubm1.ttl", "data/lubm/lubm.sparql", "lubm.ans"}; - args = new String[] {"data/uobm/univ-bench-dl.owl", "data/uobm/uobm1.ttl", "data/uobm/uobm.sparql", "uobm.ans"}; +// args = new String[] {"data/uobm/univ-bench-dl.owl", "data/uobm/uobm1.ttl", "data/uobm/uobm.sparql", "uobm.ans"}; // args = new String[] {"data/fly/fly_anatomy_XP_with_GJ_FC_individuals.owl", "data/fly/fly.sparql", "fly.ans"}; // args = new String[] {bioModels_tbox, bioModels_abox, bioModels_queries}; // args = new String[] {chembl_tbox, chembl_abox, chembl_queries}; @@ -124,66 +119,42 @@ public class PagodaTester { // args[2] = args[2].replace(".sparql", "_pellet.sparql"); } - int ontoIndex = 0, dataIndex = 1, queryIndex = 2; - - if (args.length > dataIndex && args[dataIndex] != null && args[dataIndex].endsWith(".sparql")) { - String[] inputArgs = args; - args = new String[inputArgs.length + 1]; - for (int i = 0; i < dataIndex; ++i) - args[i] = inputArgs[i]; - args[dataIndex] = null; - args[queryIndex] = inputArgs[dataIndex]; - for (int i = dataIndex + 1; i < inputArgs.length; ++i) - args[i + 1] = inputArgs[i]; - } - - StringBuilder info = new StringBuilder(); - info.append("System started with \n"); - for (int i = 0; i < args.length; ++i) - info.append("Arg " + (i + 1) + ": " + args[i] + "\n"); - Utility.logInfo(info); - -// Utility.redirectCurrentOut("temp.out"); - - OWLOntology ontology = OWLHelper.loadOntology(args[ontoIndex]); - - QueryReasoner pagoda = QueryReasoner.getInstance(Type.Full, ontology, true, true); -// QueryReasoner pagoda = QueryReasoner.getInstance(Type.ELHOU, ontology, true, true); + Properties properties = new Properties("config/uobm.conf"); -// QueryReasoner pagoda = QueryReasoner.getInstanceForSemFacet(ontology); -// QueryReasoner pagoda = QueryReasoner.getHermiTReasoner(false); + int index = 0; + if (args.length > index) properties.setOntologyPath(args[index++]); + if (args.length > index && (args[index].endsWith(".ttl") || args[index].endsWith(".nt"))) properties.setDataPath(args[index++]); + if (args.length > index && args[index].endsWith(".sparql")) properties.setQueryPath(args[index++]); + if (args.length > index && !args[index].startsWith("-")) properties.setAnswerPath(args[index++]); + if (args.length > index) properties.setToClassify(Boolean.parseBoolean(args[index++].substring(1))); + if (args.length > index) properties.setToCallHermiT(Boolean.parseBoolean(args[index++].substring(1))); + + QueryReasoner pagoda = null; -// PagodaTester tester = new PagodaTester(pagoda); - String ansFile = args.length > 3 ? args[3] : null; try { Timer t = new Timer(); - pagoda.loadOntology(ontology); - pagoda.importData(args[dataIndex]); - if (!pagoda.preprocess()) - return; + pagoda = QueryReasoner.getInstance(properties); + if (pagoda == null) return; + Utility.logInfo("Preprocessing Done in " + t.duration() + " seconds."); -// tester.printPredicatesWithGap(); -// tester.testSemFacetQueries(); -// tester.testSomeFlyQueries(); -// tester.testISGQueries(); -// tester.testReactomeQueries(); - if (args[queryIndex] != null) - for (String queryFile: args[queryIndex].split(";")) - pagoda.evaluate(pagoda.getQueryManager().collectQueryRecords(queryFile), ansFile); - - if (ShellMode) + + if (properties.getQueryPath() != null) + for (String queryFile: properties.getQueryPath().split(";")) + pagoda.evaluate(pagoda.getQueryManager().collectQueryRecords(queryFile), properties.getAnswerPath()); + + if (properties.getShellMode()) try { evaluateConsoleQuery(pagoda); } catch (IOException e) { e.printStackTrace(); } } finally { - pagoda.dispose(); + if (pagoda != null) pagoda.dispose(); } Utility.closeCurrentOut(); - if (ShellMode) System.exit(0); + if (properties.getShellMode()) System.exit(0); } // private void printPredicatesWithGap() { -- cgit v1.2.3