aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/resources/pagoda.properties2
-rw-r--r--src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java15
-rw-r--r--src/uk/ac/ox/cs/pagoda/multistage/StageQueryEngine.java2
-rw-r--r--src/uk/ac/ox/cs/pagoda/query/QueryRecord.java4
-rw-r--r--src/uk/ac/ox/cs/pagoda/query/rollup/QueryGraph.java18
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java8
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java2
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/full/HermitChecker.java1
-rw-r--r--src/uk/ac/ox/cs/pagoda/rules/Program.java2
-rw-r--r--src/uk/ac/ox/cs/pagoda/util/PagodaProperties.java6
10 files changed, 32 insertions, 28 deletions
diff --git a/src/resources/pagoda.properties b/src/resources/pagoda.properties
index 64de225..0401d64 100644
--- a/src/resources/pagoda.properties
+++ b/src/resources/pagoda.properties
@@ -1,5 +1,5 @@
1debug=true 1debug=true
2useAlwaysSimpleUpperBound=false 2useAlwaysSimpleUpperBound=false
3useSkolemUpperBound=true 3useSkolemUpperBound=false
4 4
5statisticsDir=/home/alessandro/Dropbox/Oxford/PAGOdA/statistics \ No newline at end of file 5statisticsDir=/home/alessandro/Dropbox/Oxford/PAGOdA/statistics \ No newline at end of file
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) {