diff options
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda')
9 files changed, 31 insertions, 27 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java b/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java index 2471c80..33f9f03 100644 --- a/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java +++ b/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java | |||
| @@ -83,21 +83,6 @@ public class MultiStageQueryEngine extends StageQueryEngine { | |||
| 83 | return materialise(program, treatment, gap); | 83 | return materialise(program, treatment, gap); |
| 84 | } | 84 | } |
| 85 | 85 | ||
| 86 | /** | ||
| 87 | * delta-chase with fixed mad term depth | ||
| 88 | */ | ||
| 89 | @Override | ||
| 90 | public int materialiseSkolemly(DatalogProgram dProgram, GapByStore4ID gap) { | ||
| 91 | if(isDisposed()) throw new DisposedException(); | ||
| 92 | |||
| 93 | materialise("lower program", dProgram.getLower().toString()); | ||
| 94 | Program generalProgram = dProgram.getGeneral(); | ||
| 95 | LimitedSkolemisationApplication program = | ||
| 96 | new LimitedSkolemisationApplication(generalProgram, dProgram.getUpperBottomStrategy()); | ||
| 97 | Treatment treatment = new Pick4NegativeConceptNaive(this, program); | ||
| 98 | return materialise(program, treatment, gap); | ||
| 99 | } | ||
| 100 | |||
| 101 | public int materialise4SpecificQuery(Program generalProgram, QueryRecord record, BottomStrategy upperBottom) { | 86 | public int materialise4SpecificQuery(Program generalProgram, QueryRecord record, BottomStrategy upperBottom) { |
| 102 | if(isDisposed()) throw new DisposedException(); | 87 | if(isDisposed()) throw new DisposedException(); |
| 103 | 88 | ||
diff --git a/src/uk/ac/ox/cs/pagoda/multistage/StageQueryEngine.java b/src/uk/ac/ox/cs/pagoda/multistage/StageQueryEngine.java index ffca55a..65184ee 100644 --- a/src/uk/ac/ox/cs/pagoda/multistage/StageQueryEngine.java +++ b/src/uk/ac/ox/cs/pagoda/multistage/StageQueryEngine.java | |||
| @@ -21,8 +21,6 @@ public abstract class StageQueryEngine extends BasicQueryEngine { | |||
| 21 | 21 | ||
| 22 | public abstract int materialiseRestrictedly(DatalogProgram dProgram, GapByStore4ID gap); | 22 | public abstract int materialiseRestrictedly(DatalogProgram dProgram, GapByStore4ID gap); |
| 23 | 23 | ||
| 24 | public abstract int materialiseSkolemly(DatalogProgram dProgram, GapByStore4ID gap); | ||
| 25 | |||
| 26 | public boolean isValid() { | 24 | public boolean isValid() { |
| 27 | if (!checkValidity) return true; | 25 | if (!checkValidity) return true; |
| 28 | if (validMaterialisation != null) return validMaterialisation; | 26 | if (validMaterialisation != null) return validMaterialisation; |
diff --git a/src/uk/ac/ox/cs/pagoda/query/QueryRecord.java b/src/uk/ac/ox/cs/pagoda/query/QueryRecord.java index 5878a57..291af27 100644 --- a/src/uk/ac/ox/cs/pagoda/query/QueryRecord.java +++ b/src/uk/ac/ox/cs/pagoda/query/QueryRecord.java | |||
| @@ -188,6 +188,10 @@ public class QueryRecord extends Disposable { | |||
| 188 | return new AnswerTuplesImp(answerVariables[0], gapAnswerTuples); | 188 | return new AnswerTuplesImp(answerVariables[0], gapAnswerTuples); |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | public int getGapAnswersCount() { | ||
| 192 | return gapAnswerTuples.size(); | ||
| 193 | } | ||
| 194 | |||
| 191 | public String toString() { | 195 | public String toString() { |
| 192 | if(isDisposed()) throw new DisposedException(); | 196 | if(isDisposed()) throw new DisposedException(); |
| 193 | 197 | ||
diff --git a/src/uk/ac/ox/cs/pagoda/query/rollup/QueryGraph.java b/src/uk/ac/ox/cs/pagoda/query/rollup/QueryGraph.java index a567699..01336ba 100644 --- a/src/uk/ac/ox/cs/pagoda/query/rollup/QueryGraph.java +++ b/src/uk/ac/ox/cs/pagoda/query/rollup/QueryGraph.java | |||
| @@ -88,10 +88,20 @@ public class QueryGraph { | |||
| 88 | Visitor visitor = new Visitor(factory, assignment); | 88 | Visitor visitor = new Visitor(factory, assignment); |
| 89 | Set<OWLAxiom> axioms = getPropertyAssertions(assignment); | 89 | Set<OWLAxiom> axioms = getPropertyAssertions(assignment); |
| 90 | for(Map.Entry<Term, Set<OWLClassExpression>> entry : concepts.map.entrySet()) { | 90 | for(Map.Entry<Term, Set<OWLClassExpression>> entry : concepts.map.entrySet()) { |
| 91 | if(existVars.contains(entry.getKey())) continue; | 91 | // TODO check correctness!!! |
| 92 | sub = factory.getOWLNamedIndividual(IRI.create(getIndividual(entry.getKey(), assignment).getIRI())); | 92 | if(existVars.contains(entry.getKey())) { |
| 93 | for(OWLClassExpression clsExp : entry.getValue()) { | 93 | OWLClassExpression conjunction = |
| 94 | axioms.add(factory.getOWLClassAssertionAxiom(clsExp.accept(visitor), sub)); | 94 | factory.getOWLObjectIntersectionOf(factory.getOWLThing()); |
| 95 | for(OWLClassExpression owlClassExpression : entry.getValue()) { | ||
| 96 | conjunction = factory.getOWLObjectIntersectionOf(conjunction, owlClassExpression.accept(visitor)); | ||
| 97 | } | ||
| 98 | axioms.add(factory.getOWLSubClassOfAxiom(conjunction, factory.getOWLNothing())); | ||
| 99 | } | ||
| 100 | else { | ||
| 101 | sub = factory.getOWLNamedIndividual(IRI.create(getIndividual(entry.getKey(), assignment).getIRI())); | ||
| 102 | for(OWLClassExpression clsExp : entry.getValue()) { | ||
| 103 | axioms.add(factory.getOWLClassAssertionAxiom(clsExp.accept(visitor), sub)); | ||
| 104 | } | ||
| 95 | } | 105 | } |
| 96 | } | 106 | } |
| 97 | return axioms; | 107 | return axioms; |
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java index 93fbc98..0b02e5a 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java | |||
| @@ -189,12 +189,18 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 189 | return; | 189 | return; |
| 190 | 190 | ||
| 191 | OWLOntology relevantOntologySubset = extractRelevantOntologySubset(queryRecord); | 191 | OWLOntology relevantOntologySubset = extractRelevantOntologySubset(queryRecord); |
| 192 | // queryRecord.saveRelevantOntology("./fragment_query" + queryRecord.getQueryID() + ".owl"); | 192 | queryRecord.saveRelevantOntology("/home/alessandro/Desktop/test-relevant-ontology.owl"); |
| 193 | 193 | ||
| 194 | // int gapAnswersCount = queryRecord.getGapAnswersCount(); | ||
| 194 | if(properties.getUseSkolemUpperBound() && | 195 | if(properties.getUseSkolemUpperBound() && |
| 195 | querySkolemisedRelevantSubset(relevantOntologySubset, queryRecord)) | 196 | querySkolemisedRelevantSubset(relevantOntologySubset, queryRecord)) |
| 196 | return; | 197 | return; |
| 197 | 198 | ||
| 199 | // // TODO extract from the previous relevant ontology | ||
| 200 | // // TODO implement details or remove it | ||
| 201 | // if(queryRecord.getGapAnswersCount() < gapAnswersCount) | ||
| 202 | // extractRelevantOntologySubset(queryRecord); // takes the relevant ontology from the record | ||
| 203 | |||
| 198 | Timer t = new Timer(); | 204 | Timer t = new Timer(); |
| 199 | Checker summarisedChecker = new HermitSummaryFilter(queryRecord, properties.getToCallHermiT()); | 205 | Checker summarisedChecker = new HermitSummaryFilter(queryRecord, properties.getToCallHermiT()); |
| 200 | summarisedChecker.check(queryRecord.getGapAnswers()); | 206 | summarisedChecker.check(queryRecord.getGapAnswers()); |
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java index 3a057ec..e8daa3b 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java | |||
| @@ -206,7 +206,7 @@ public abstract class QueryReasoner extends Disposable { | |||
| 206 | if you call twice, you will end up with a json file with multiple roots */ | 206 | if you call twice, you will end up with a json file with multiple roots */ |
| 207 | if(answerWriter != null) gson.toJson(queryRecords, answerWriter); | 207 | if(answerWriter != null) gson.toJson(queryRecords, answerWriter); |
| 208 | // queryRecords.stream().forEach(record -> Utility.logDebug(gson.toJson(record))); | 208 | // queryRecords.stream().forEach(record -> Utility.logDebug(gson.toJson(record))); |
| 209 | queryRecords.stream().forEach(record -> record.dispose()); | 209 | queryRecords.stream().forEach(QueryRecord::dispose); |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | @Override | 212 | @Override |
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 35db0f2..9cfc773 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/full/HermitChecker.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/full/HermitChecker.java | |||
| @@ -101,6 +101,7 @@ public class HermitChecker extends Checker { | |||
| 101 | 101 | ||
| 102 | // for (OWLAxiom axiom: toCheckAxioms) System.out.println(axiom.toString()); | 102 | // for (OWLAxiom axiom: toCheckAxioms) System.out.println(axiom.toString()); |
| 103 | 103 | ||
| 104 | // Utility.logInfo(toCheckAxioms); | ||
| 104 | if(hermit.isEntailed(toCheckAxioms)) { | 105 | if(hermit.isEntailed(toCheckAxioms)) { |
| 105 | Utility.logDebug("@TIME to check one tuple: " + t.duration()); | 106 | Utility.logDebug("@TIME to check one tuple: " + t.duration()); |
| 106 | return true; | 107 | return true; |
diff --git a/src/uk/ac/ox/cs/pagoda/rules/Program.java b/src/uk/ac/ox/cs/pagoda/rules/Program.java index afc32d4..85000e3 100644 --- a/src/uk/ac/ox/cs/pagoda/rules/Program.java +++ b/src/uk/ac/ox/cs/pagoda/rules/Program.java | |||
| @@ -119,7 +119,7 @@ protected PredicateDependency dependencyGraph; | |||
| 119 | } catch(IOException e) { | 119 | } catch(IOException e) { |
| 120 | e.printStackTrace(); | 120 | e.printStackTrace(); |
| 121 | } | 121 | } |
| 122 | Utility.logDebug("The rules are saved in " + getOutputPath() + "."); | 122 | Utility.logInfo("The rules are saved in " + getOutputPath() + "."); |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | @Override | 125 | @Override |
diff --git a/src/uk/ac/ox/cs/pagoda/util/PagodaProperties.java b/src/uk/ac/ox/cs/pagoda/util/PagodaProperties.java index e501821..4991d0d 100644 --- a/src/uk/ac/ox/cs/pagoda/util/PagodaProperties.java +++ b/src/uk/ac/ox/cs/pagoda/util/PagodaProperties.java | |||
| @@ -43,14 +43,14 @@ public class PagodaProperties { | |||
| 43 | defaultUseAlwaysSimpleUpperBound = | 43 | defaultUseAlwaysSimpleUpperBound = |
| 44 | Boolean.parseBoolean(config.getProperty("useAlwaysSimpleUpperBound")); | 44 | Boolean.parseBoolean(config.getProperty("useAlwaysSimpleUpperBound")); |
| 45 | if(defaultUseAlwaysSimpleUpperBound) | 45 | if(defaultUseAlwaysSimpleUpperBound) |
| 46 | logger.info("By default the simple upper bound is always used"); | 46 | logger.debug("By default the simple upper bound is always used"); |
| 47 | } | 47 | } |
| 48 | if(config.containsKey("useSkolemUpperBound")) { | 48 | if(config.containsKey("useSkolemUpperBound")) { |
| 49 | defaultUseSkolemUpperBound = Boolean.parseBoolean(config.getProperty("useSkolemUpperBound")); | 49 | defaultUseSkolemUpperBound = Boolean.parseBoolean(config.getProperty("useSkolemUpperBound")); |
| 50 | if(defaultUseSkolemUpperBound) | 50 | if(defaultUseSkolemUpperBound) |
| 51 | logger.info("By default the Skolem upper bound is enabled"); | 51 | logger.debug("By default the Skolem upper bound is enabled"); |
| 52 | else | 52 | else |
| 53 | logger.info("By default the Skolem upper bound is disabled"); | 53 | logger.debug("By default the Skolem upper bound is disabled"); |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | } catch(IOException e) { | 56 | } catch(IOException e) { |
