aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/reasoner
diff options
context:
space:
mode:
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/reasoner')
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager2.java78
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/ELHOQueryReasoner.java3
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java2
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/HermiTReasoner.java37
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java2
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/RLQueryReasoner.java15
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/RLUQueryReasoner.java26
7 files changed, 30 insertions, 133 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager2.java b/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager2.java
deleted file mode 100644
index 9191067..0000000
--- a/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager2.java
+++ /dev/null
@@ -1,78 +0,0 @@
1package uk.ac.ox.cs.pagoda.reasoner;
2
3import org.semanticweb.owlapi.model.OWLOntologyCreationException;
4import org.semanticweb.owlapi.model.OWLOntologyManager;
5import uk.ac.ox.cs.pagoda.query.AnswerTuples;
6import uk.ac.ox.cs.pagoda.query.QueryRecord;
7import uk.ac.ox.cs.pagoda.reasoner.full.Checker;
8import uk.ac.ox.cs.pagoda.summary.HermitSummaryFilter;
9import uk.ac.ox.cs.pagoda.tracking.QueryTracker;
10import uk.ac.ox.cs.pagoda.util.Utility;
11
12@Deprecated
13public class ConsistencyManager2 extends ConsistencyManager {
14
15 public ConsistencyManager2(MyQueryReasoner reasoner) {
16 super(reasoner);
17 fragmentExtracted = true;
18 }
19
20 protected boolean unsatisfiability(double duration) {
21 Utility.logDebug("The ontology and dataset is unsatisfiable.");
22 return false;
23 }
24
25 protected boolean satisfiability(double duration) {
26 Utility.logDebug("The ontology and dataset is satisfiable.");
27 return true;
28 }
29
30 @Override
31 boolean check() {
32// if (!checkRLLowerBound()) return false;
33// if (!checkELLowerBound()) return false;
34 // TODO test
35 if (checkUpper(m_reasoner.lazyUpperStore) && checkUpper(m_reasoner.limitedSkolemUpperStore)) return true;
36 AnswerTuples iter = null;
37
38 try {
39 iter = m_reasoner.trackingStore.evaluate(fullQueryRecord.getQueryText(), fullQueryRecord.getAnswerVariables());
40 fullQueryRecord.updateUpperBoundAnswers(iter);
41 } finally {
42 if (iter != null) iter.dispose();
43 }
44
45 if (fullQueryRecord.getNoOfCompleteAnswers() == 0)
46 return satisfiability(t.duration());
47
48 try {
49 extractAxioms();
50 } catch (OWLOntologyCreationException e) {
51 e.printStackTrace();
52 }
53
54 Checker checker = new HermitSummaryFilter(fullQueryRecord, true); // m_reasoner.factory.getSummarisedReasoner(fullQueryRecord);
55// fullQueryRecord.saveRelevantOntology("fragment_bottom.owl");
56 boolean satisfiable = checker.isConsistent();
57 checker.dispose();
58 if (!satisfiable) return unsatisfiability(t.duration());
59
60 return satisfiability(t.duration());
61 }
62
63 private void extractAxioms() throws OWLOntologyCreationException {
64 OWLOntologyManager manager = m_reasoner.encoder.getProgram().getOntology().getOWLOntologyManager();
65 fullQueryRecord.setRelevantOntology(manager.createOntology());
66 QueryTracker tracker = new QueryTracker(m_reasoner.encoder, m_reasoner.rlLowerStore, fullQueryRecord);
67 m_reasoner.encoder.setCurrentQuery(fullQueryRecord);
68 tracker.extract(m_reasoner.trackingStore, null, true);
69 }
70
71 @Override
72 public QueryRecord[] getQueryRecords() {
73 if (botQueryRecords == null)
74 botQueryRecords = new QueryRecord[] {fullQueryRecord};
75 return botQueryRecords;
76 }
77
78}
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOQueryReasoner.java
index ab57ccf..2285b5f 100644
--- a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOQueryReasoner.java
+++ b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOQueryReasoner.java
@@ -2,7 +2,6 @@ package uk.ac.ox.cs.pagoda.reasoner;
2 2
3import org.semanticweb.karma2.profile.ELHOProfile; 3import org.semanticweb.karma2.profile.ELHOProfile;
4import org.semanticweb.owlapi.model.OWLOntology; 4import org.semanticweb.owlapi.model.OWLOntology;
5
6import uk.ac.ox.cs.pagoda.constraints.UnaryBottom; 5import uk.ac.ox.cs.pagoda.constraints.UnaryBottom;
7import uk.ac.ox.cs.pagoda.query.AnswerTuples; 6import uk.ac.ox.cs.pagoda.query.AnswerTuples;
8import uk.ac.ox.cs.pagoda.query.QueryRecord; 7import uk.ac.ox.cs.pagoda.query.QueryRecord;
@@ -12,7 +11,7 @@ import uk.ac.ox.cs.pagoda.rules.LowerDatalogProgram;
12import uk.ac.ox.cs.pagoda.util.Timer; 11import uk.ac.ox.cs.pagoda.util.Timer;
13import uk.ac.ox.cs.pagoda.util.Utility; 12import uk.ac.ox.cs.pagoda.util.Utility;
14 13
15public class ELHOQueryReasoner extends QueryReasoner { 14class ELHOQueryReasoner extends QueryReasoner {
16 15
17 LowerDatalogProgram program; 16 LowerDatalogProgram program;
18 17
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java
index 6da86ac..a4fa7c3 100644
--- a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java
+++ b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java
@@ -14,7 +14,7 @@ import uk.ac.ox.cs.pagoda.rules.DatalogProgram;
14import uk.ac.ox.cs.pagoda.util.Timer; 14import uk.ac.ox.cs.pagoda.util.Timer;
15import uk.ac.ox.cs.pagoda.util.Utility; 15import uk.ac.ox.cs.pagoda.util.Utility;
16 16
17public class ELHOUQueryReasoner extends QueryReasoner { 17class ELHOUQueryReasoner extends QueryReasoner {
18 18
19 DatalogProgram program; 19 DatalogProgram program;
20 20
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/HermiTReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/HermiTReasoner.java
index 5511691..d1856c9 100644
--- a/src/uk/ac/ox/cs/pagoda/reasoner/HermiTReasoner.java
+++ b/src/uk/ac/ox/cs/pagoda/reasoner/HermiTReasoner.java
@@ -1,32 +1,22 @@
1package uk.ac.ox.cs.pagoda.reasoner; 1package uk.ac.ox.cs.pagoda.reasoner;
2 2
3import java.io.File;
4import java.io.IOException;
5import java.util.HashSet;
6import java.util.Set;
7
8import org.semanticweb.HermiT.Reasoner; 3import org.semanticweb.HermiT.Reasoner;
9import org.semanticweb.owlapi.model.OWLClassExpression; 4import org.semanticweb.owlapi.model.*;
10import org.semanticweb.owlapi.model.OWLDataFactory;
11import org.semanticweb.owlapi.model.OWLNamedIndividual;
12import org.semanticweb.owlapi.model.OWLOntology;
13import org.semanticweb.owlapi.model.OWLOntologyCreationException;
14import org.semanticweb.owlapi.model.OWLOntologyStorageException;
15
16import uk.ac.ox.cs.JRDFox.model.Individual; 5import uk.ac.ox.cs.JRDFox.model.Individual;
17import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine; 6import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine;
18import uk.ac.ox.cs.pagoda.owl.OWLHelper; 7import uk.ac.ox.cs.pagoda.owl.OWLHelper;
19import uk.ac.ox.cs.pagoda.owl.QueryRoller; 8import uk.ac.ox.cs.pagoda.owl.QueryRoller;
20import uk.ac.ox.cs.pagoda.query.AnswerTuple; 9import uk.ac.ox.cs.pagoda.query.*;
21import uk.ac.ox.cs.pagoda.query.AnswerTuples;
22import uk.ac.ox.cs.pagoda.query.AnswerTuplesImp;
23import uk.ac.ox.cs.pagoda.query.GapByStore4ID;
24import uk.ac.ox.cs.pagoda.query.QueryRecord;
25import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; 10import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine;
26import uk.ac.ox.cs.pagoda.rules.DatalogProgram; 11import uk.ac.ox.cs.pagoda.rules.DatalogProgram;
27import uk.ac.ox.cs.pagoda.util.Utility; 12import uk.ac.ox.cs.pagoda.util.Utility;
28 13
29public class HermiTReasoner extends QueryReasoner { 14import java.io.File;
15import java.io.IOException;
16import java.util.HashSet;
17import java.util.Set;
18
19class HermiTReasoner extends QueryReasoner {
30 20
31 Reasoner hermit; 21 Reasoner hermit;
32 22
@@ -54,15 +44,8 @@ public class HermiTReasoner extends QueryReasoner {
54 OWLOntology tbox = onto; 44 OWLOntology tbox = onto;
55 try { 45 try {
56 onto = OWLHelper.getImportedOntology(tbox, importedData.toString().split(ImportDataFileSeparator)); 46 onto = OWLHelper.getImportedOntology(tbox, importedData.toString().split(ImportDataFileSeparator));
57 importedOntologyPath = OWLHelper.getOntologyPath(onto); 47 importedOntologyPath = OWLHelper.getOntologyPath(onto);
58 } catch (OWLOntologyCreationException e) { 48 } catch(OWLOntologyCreationException | OWLOntologyStorageException | IOException e) {
59 // TODO Auto-generated catch block
60 e.printStackTrace();
61 } catch (OWLOntologyStorageException e) {
62 // TODO Auto-generated catch block
63 e.printStackTrace();
64 } catch (IOException e) {
65 // TODO Auto-generated catch block
66 e.printStackTrace(); 49 e.printStackTrace();
67 } 50 }
68 51
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java
index b10e2d1..6adbd37 100644
--- a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java
+++ b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java
@@ -25,7 +25,7 @@ import uk.ac.ox.cs.pagoda.util.tuples.Tuple;
25import java.util.Collection; 25import java.util.Collection;
26import java.util.HashMap; 26import java.util.HashMap;
27 27
28public class MyQueryReasoner extends QueryReasoner { 28class MyQueryReasoner extends QueryReasoner {
29 29
30 OWLOntology ontology; 30 OWLOntology ontology;
31 DatalogProgram program; 31 DatalogProgram program;
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/RLQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/RLQueryReasoner.java
index 3894874..60f34c6 100644
--- a/src/uk/ac/ox/cs/pagoda/reasoner/RLQueryReasoner.java
+++ b/src/uk/ac/ox/cs/pagoda/reasoner/RLQueryReasoner.java
@@ -10,18 +10,17 @@ import uk.ac.ox.cs.pagoda.reasoner.light.RDFoxQueryEngine;
10import uk.ac.ox.cs.pagoda.rules.LowerDatalogProgram; 10import uk.ac.ox.cs.pagoda.rules.LowerDatalogProgram;
11import uk.ac.ox.cs.pagoda.util.Timer; 11import uk.ac.ox.cs.pagoda.util.Timer;
12 12
13public class RLQueryReasoner extends QueryReasoner { 13class RLQueryReasoner extends QueryReasoner {
14 14
15 RDFoxQueryEngine rlLowerStore = null; 15 RDFoxQueryEngine rlLowerStore = null;
16 16
17 LowerDatalogProgram program; 17 LowerDatalogProgram program;
18 Timer t = new Timer();
18 19
19 public RLQueryReasoner() { 20 public RLQueryReasoner() {
20 rlLowerStore = new BasicQueryEngine("rl"); 21 rlLowerStore = new BasicQueryEngine("rl");
21 } 22 }
22 23
23 Timer t = new Timer();
24
25 @Override 24 @Override
26 public void evaluate(QueryRecord queryRecord) { 25 public void evaluate(QueryRecord queryRecord) {
27 AnswerTuples rlAnswer = null; 26 AnswerTuples rlAnswer = null;
@@ -56,10 +55,8 @@ public class RLQueryReasoner extends QueryReasoner {
56 public boolean preprocess() { 55 public boolean preprocess() {
57 rlLowerStore.importRDFData("data", importedData.toString()); 56 rlLowerStore.importRDFData("data", importedData.toString());
58 rlLowerStore.materialise("lower program", program.toString()); 57 rlLowerStore.materialise("lower program", program.toString());
59 58
60 if (!isConsistent()) 59 return isConsistent();
61 return false;
62 return true;
63 } 60 }
64 61
65 @Override 62 @Override
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/RLUQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/RLUQueryReasoner.java
index fe4022d..e5564d9 100644
--- a/src/uk/ac/ox/cs/pagoda/reasoner/RLUQueryReasoner.java
+++ b/src/uk/ac/ox/cs/pagoda/reasoner/RLUQueryReasoner.java
@@ -1,7 +1,6 @@
1package uk.ac.ox.cs.pagoda.reasoner; 1package uk.ac.ox.cs.pagoda.reasoner;
2 2
3import org.semanticweb.owlapi.model.OWLOntology; 3import org.semanticweb.owlapi.model.OWLOntology;
4
5import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine; 4import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine;
6import uk.ac.ox.cs.pagoda.owl.EqualitiesEliminator; 5import uk.ac.ox.cs.pagoda.owl.EqualitiesEliminator;
7import uk.ac.ox.cs.pagoda.query.AnswerTuples; 6import uk.ac.ox.cs.pagoda.query.AnswerTuples;
@@ -12,26 +11,25 @@ import uk.ac.ox.cs.pagoda.rules.DatalogProgram;
12import uk.ac.ox.cs.pagoda.util.Timer; 11import uk.ac.ox.cs.pagoda.util.Timer;
13import uk.ac.ox.cs.pagoda.util.Utility; 12import uk.ac.ox.cs.pagoda.util.Utility;
14 13
15public class RLUQueryReasoner extends QueryReasoner { 14class RLUQueryReasoner extends QueryReasoner {
16 15
17 DatalogProgram program; 16 DatalogProgram program;
18 17
19 BasicQueryEngine rlLowerStore, rlUpperStore; 18 BasicQueryEngine rlLowerStore, rlUpperStore;
20 19
21 boolean multiStageTag, equalityTag; 20 boolean multiStageTag, equalityTag;
21 Timer t = new Timer();
22 22
23 public RLUQueryReasoner(boolean multiStageTag, boolean considerEqualities) { 23 public RLUQueryReasoner(boolean multiStageTag, boolean considerEqualities) {
24 this.multiStageTag = multiStageTag; 24 this.multiStageTag = multiStageTag;
25 this.equalityTag = considerEqualities; 25 this.equalityTag = considerEqualities;
26 rlLowerStore = new BasicQueryEngine("rl-lower-bound"); 26 rlLowerStore = new BasicQueryEngine("rl-lower-bound");
27 if (!multiStageTag) 27 if(!multiStageTag)
28 rlUpperStore = new BasicQueryEngine("rl-upper-bound"); 28 rlUpperStore = new BasicQueryEngine("rl-upper-bound");
29 else 29 else
30 rlUpperStore = new MultiStageQueryEngine("rl-upper-bound", false); 30 rlUpperStore = new MultiStageQueryEngine("rl-upper-bound", false);
31 } 31 }
32 32
33 Timer t = new Timer();
34
35 @Override 33 @Override
36 public void evaluate(QueryRecord queryRecord) { 34 public void evaluate(QueryRecord queryRecord) {
37 AnswerTuples ans = null; 35 AnswerTuples ans = null;
@@ -100,11 +98,9 @@ public class RLUQueryReasoner extends QueryReasoner {
100 98
101 rlUpperStore.importRDFData("data", datafile); 99 rlUpperStore.importRDFData("data", datafile);
102 rlUpperStore.materialiseRestrictedly(program, null); 100 rlUpperStore.materialiseRestrictedly(program, null);
103
104 if (!isConsistent())
105 return false;
106 101
107 return true; 102 return isConsistent();
103
108 } 104 }
109 105
110 @Override 106 @Override