diff options
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/reasoner')
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 @@ | |||
| 1 | package uk.ac.ox.cs.pagoda.reasoner; | ||
| 2 | |||
| 3 | import org.semanticweb.owlapi.model.OWLOntologyCreationException; | ||
| 4 | import org.semanticweb.owlapi.model.OWLOntologyManager; | ||
| 5 | import uk.ac.ox.cs.pagoda.query.AnswerTuples; | ||
| 6 | import uk.ac.ox.cs.pagoda.query.QueryRecord; | ||
| 7 | import uk.ac.ox.cs.pagoda.reasoner.full.Checker; | ||
| 8 | import uk.ac.ox.cs.pagoda.summary.HermitSummaryFilter; | ||
| 9 | import uk.ac.ox.cs.pagoda.tracking.QueryTracker; | ||
| 10 | import uk.ac.ox.cs.pagoda.util.Utility; | ||
| 11 | |||
| 12 | @Deprecated | ||
| 13 | public 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 | ||
| 3 | import org.semanticweb.karma2.profile.ELHOProfile; | 3 | import org.semanticweb.karma2.profile.ELHOProfile; |
| 4 | import org.semanticweb.owlapi.model.OWLOntology; | 4 | import org.semanticweb.owlapi.model.OWLOntology; |
| 5 | |||
| 6 | import uk.ac.ox.cs.pagoda.constraints.UnaryBottom; | 5 | import uk.ac.ox.cs.pagoda.constraints.UnaryBottom; |
| 7 | import uk.ac.ox.cs.pagoda.query.AnswerTuples; | 6 | import uk.ac.ox.cs.pagoda.query.AnswerTuples; |
| 8 | import uk.ac.ox.cs.pagoda.query.QueryRecord; | 7 | import uk.ac.ox.cs.pagoda.query.QueryRecord; |
| @@ -12,7 +11,7 @@ import uk.ac.ox.cs.pagoda.rules.LowerDatalogProgram; | |||
| 12 | import uk.ac.ox.cs.pagoda.util.Timer; | 11 | import uk.ac.ox.cs.pagoda.util.Timer; |
| 13 | import uk.ac.ox.cs.pagoda.util.Utility; | 12 | import uk.ac.ox.cs.pagoda.util.Utility; |
| 14 | 13 | ||
| 15 | public class ELHOQueryReasoner extends QueryReasoner { | 14 | class 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; | |||
| 14 | import uk.ac.ox.cs.pagoda.util.Timer; | 14 | import uk.ac.ox.cs.pagoda.util.Timer; |
| 15 | import uk.ac.ox.cs.pagoda.util.Utility; | 15 | import uk.ac.ox.cs.pagoda.util.Utility; |
| 16 | 16 | ||
| 17 | public class ELHOUQueryReasoner extends QueryReasoner { | 17 | class 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 @@ | |||
| 1 | package uk.ac.ox.cs.pagoda.reasoner; | 1 | package uk.ac.ox.cs.pagoda.reasoner; |
| 2 | 2 | ||
| 3 | import java.io.File; | ||
| 4 | import java.io.IOException; | ||
| 5 | import java.util.HashSet; | ||
| 6 | import java.util.Set; | ||
| 7 | |||
| 8 | import org.semanticweb.HermiT.Reasoner; | 3 | import org.semanticweb.HermiT.Reasoner; |
| 9 | import org.semanticweb.owlapi.model.OWLClassExpression; | 4 | import org.semanticweb.owlapi.model.*; |
| 10 | import org.semanticweb.owlapi.model.OWLDataFactory; | ||
| 11 | import org.semanticweb.owlapi.model.OWLNamedIndividual; | ||
| 12 | import org.semanticweb.owlapi.model.OWLOntology; | ||
| 13 | import org.semanticweb.owlapi.model.OWLOntologyCreationException; | ||
| 14 | import org.semanticweb.owlapi.model.OWLOntologyStorageException; | ||
| 15 | |||
| 16 | import uk.ac.ox.cs.JRDFox.model.Individual; | 5 | import uk.ac.ox.cs.JRDFox.model.Individual; |
| 17 | import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine; | 6 | import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine; |
| 18 | import uk.ac.ox.cs.pagoda.owl.OWLHelper; | 7 | import uk.ac.ox.cs.pagoda.owl.OWLHelper; |
| 19 | import uk.ac.ox.cs.pagoda.owl.QueryRoller; | 8 | import uk.ac.ox.cs.pagoda.owl.QueryRoller; |
| 20 | import uk.ac.ox.cs.pagoda.query.AnswerTuple; | 9 | import uk.ac.ox.cs.pagoda.query.*; |
| 21 | import uk.ac.ox.cs.pagoda.query.AnswerTuples; | ||
| 22 | import uk.ac.ox.cs.pagoda.query.AnswerTuplesImp; | ||
| 23 | import uk.ac.ox.cs.pagoda.query.GapByStore4ID; | ||
| 24 | import uk.ac.ox.cs.pagoda.query.QueryRecord; | ||
| 25 | import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; | 10 | import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; |
| 26 | import uk.ac.ox.cs.pagoda.rules.DatalogProgram; | 11 | import uk.ac.ox.cs.pagoda.rules.DatalogProgram; |
| 27 | import uk.ac.ox.cs.pagoda.util.Utility; | 12 | import uk.ac.ox.cs.pagoda.util.Utility; |
| 28 | 13 | ||
| 29 | public class HermiTReasoner extends QueryReasoner { | 14 | import java.io.File; |
| 15 | import java.io.IOException; | ||
| 16 | import java.util.HashSet; | ||
| 17 | import java.util.Set; | ||
| 18 | |||
| 19 | class 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; | |||
| 25 | import java.util.Collection; | 25 | import java.util.Collection; |
| 26 | import java.util.HashMap; | 26 | import java.util.HashMap; |
| 27 | 27 | ||
| 28 | public class MyQueryReasoner extends QueryReasoner { | 28 | class 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; | |||
| 10 | import uk.ac.ox.cs.pagoda.rules.LowerDatalogProgram; | 10 | import uk.ac.ox.cs.pagoda.rules.LowerDatalogProgram; |
| 11 | import uk.ac.ox.cs.pagoda.util.Timer; | 11 | import uk.ac.ox.cs.pagoda.util.Timer; |
| 12 | 12 | ||
| 13 | public class RLQueryReasoner extends QueryReasoner { | 13 | class 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 @@ | |||
| 1 | package uk.ac.ox.cs.pagoda.reasoner; | 1 | package uk.ac.ox.cs.pagoda.reasoner; |
| 2 | 2 | ||
| 3 | import org.semanticweb.owlapi.model.OWLOntology; | 3 | import org.semanticweb.owlapi.model.OWLOntology; |
| 4 | |||
| 5 | import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine; | 4 | import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine; |
| 6 | import uk.ac.ox.cs.pagoda.owl.EqualitiesEliminator; | 5 | import uk.ac.ox.cs.pagoda.owl.EqualitiesEliminator; |
| 7 | import uk.ac.ox.cs.pagoda.query.AnswerTuples; | 6 | import uk.ac.ox.cs.pagoda.query.AnswerTuples; |
| @@ -12,26 +11,25 @@ import uk.ac.ox.cs.pagoda.rules.DatalogProgram; | |||
| 12 | import uk.ac.ox.cs.pagoda.util.Timer; | 11 | import uk.ac.ox.cs.pagoda.util.Timer; |
| 13 | import uk.ac.ox.cs.pagoda.util.Utility; | 12 | import uk.ac.ox.cs.pagoda.util.Utility; |
| 14 | 13 | ||
| 15 | public class RLUQueryReasoner extends QueryReasoner { | 14 | class 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 |
