diff options
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java')
| -rw-r--r-- | src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java index b419289..6b1921c 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java | |||
| @@ -43,7 +43,7 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 43 | private Collection<String> predicatesWithGap = null; | 43 | private Collection<String> predicatesWithGap = null; |
| 44 | private ConsistencyStatus isConsistent; | 44 | private ConsistencyStatus isConsistent; |
| 45 | private ConsistencyManager consistency = new ConsistencyManager(this); | 45 | private ConsistencyManager consistency = new ConsistencyManager(this); |
| 46 | private int relevantOntologiesCounter = 0; | 46 | // private int relevantOntologiesCounter = 0; |
| 47 | 47 | ||
| 48 | public MyQueryReasoner() { | 48 | public MyQueryReasoner() { |
| 49 | setup(true); | 49 | setup(true); |
| @@ -190,10 +190,10 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 190 | 190 | ||
| 191 | OWLOntology relevantOntologySubset = extractRelevantOntologySubset(queryRecord); | 191 | OWLOntology relevantOntologySubset = extractRelevantOntologySubset(queryRecord); |
| 192 | 192 | ||
| 193 | queryRecord.saveRelevantOntology("/home/alessandro/Desktop/test-relevant-ontology-"+relevantOntologiesCounter+".owl"); | 193 | // queryRecord.saveRelevantOntology("/home/alessandro/Desktop/test-relevant-ontology-"+relevantOntologiesCounter+".owl"); |
| 194 | relevantOntologiesCounter++; | 194 | // relevantOntologiesCounter++; |
| 195 | 195 | ||
| 196 | Utility.logInfo("Summarisation..."); | 196 | Utility.logInfo(">> Summarisation <<"); |
| 197 | HermitSummaryFilter summarisedChecker = new HermitSummaryFilter(queryRecord, properties.getToCallHermiT()); | 197 | HermitSummaryFilter summarisedChecker = new HermitSummaryFilter(queryRecord, properties.getToCallHermiT()); |
| 198 | if(summarisedChecker.check(queryRecord.getGapAnswers()) == 0) { | 198 | if(summarisedChecker.check(queryRecord.getGapAnswers()) == 0) { |
| 199 | summarisedChecker.dispose(); | 199 | summarisedChecker.dispose(); |
| @@ -206,7 +206,7 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 206 | return; | 206 | return; |
| 207 | } | 207 | } |
| 208 | 208 | ||
| 209 | Utility.logInfo("Full reasoning..."); | 209 | Utility.logInfo(">> Full reasoning <<"); |
| 210 | Timer t = new Timer(); | 210 | Timer t = new Timer(); |
| 211 | summarisedChecker.checkByFullReasoner(queryRecord.getGapAnswers()); | 211 | summarisedChecker.checkByFullReasoner(queryRecord.getGapAnswers()); |
| 212 | Utility.logDebug("Total time for full reasoner: " + t.duration()); | 212 | Utility.logDebug("Total time for full reasoner: " + t.duration()); |
| @@ -276,11 +276,16 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 276 | Tuple<String> extendedQuery, Step step) { | 276 | Tuple<String> extendedQuery, Step step) { |
| 277 | t.reset(); | 277 | t.reset(); |
| 278 | 278 | ||
| 279 | Utility.logDebug("First query type"); | ||
| 279 | queryUpperBound(upperStore, queryRecord, queryRecord.getQueryText(), queryRecord.getAnswerVariables()); | 280 | queryUpperBound(upperStore, queryRecord, queryRecord.getQueryText(), queryRecord.getAnswerVariables()); |
| 280 | if(!queryRecord.isProcessed() && !queryRecord.getQueryText().equals(extendedQuery.get(0))) | 281 | if(!queryRecord.isProcessed() && !queryRecord.getQueryText().equals(extendedQuery.get(0))) { |
| 282 | Utility.logDebug("Second query type"); | ||
| 281 | queryUpperBound(upperStore, queryRecord, extendedQuery.get(0), queryRecord.getAnswerVariables()); | 283 | queryUpperBound(upperStore, queryRecord, extendedQuery.get(0), queryRecord.getAnswerVariables()); |
| 282 | if(!queryRecord.isProcessed() && queryRecord.hasNonAnsDistinguishedVariables()) | 284 | } |
| 285 | if(!queryRecord.isProcessed() && queryRecord.hasNonAnsDistinguishedVariables()) { | ||
| 286 | Utility.logDebug("Third query type"); | ||
| 283 | queryUpperBound(upperStore, queryRecord, extendedQuery.get(1), queryRecord.getDistinguishedVariables()); | 287 | queryUpperBound(upperStore, queryRecord, extendedQuery.get(1), queryRecord.getDistinguishedVariables()); |
| 288 | } | ||
| 284 | 289 | ||
| 285 | queryRecord.addProcessingTime(step, t.duration()); | 290 | queryRecord.addProcessingTime(step, t.duration()); |
| 286 | if(queryRecord.isProcessed()) { | 291 | if(queryRecord.isProcessed()) { |
| @@ -294,6 +299,9 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 294 | * Returns the part of the ontology relevant for Hermit, while computing the bound answers. | 299 | * Returns the part of the ontology relevant for Hermit, while computing the bound answers. |
| 295 | */ | 300 | */ |
| 296 | private boolean queryLowerAndUpperBounds(QueryRecord queryRecord) { | 301 | private boolean queryLowerAndUpperBounds(QueryRecord queryRecord) { |
| 302 | |||
| 303 | Utility.logInfo(">> Base bounds <<"); | ||
| 304 | |||
| 297 | AnswerTuples rlAnswer = null, elAnswer = null; | 305 | AnswerTuples rlAnswer = null, elAnswer = null; |
| 298 | 306 | ||
| 299 | t.reset(); | 307 | t.reset(); |
| @@ -341,7 +349,7 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 341 | } | 349 | } |
| 342 | 350 | ||
| 343 | private OWLOntology extractRelevantOntologySubset(QueryRecord queryRecord) { | 351 | private OWLOntology extractRelevantOntologySubset(QueryRecord queryRecord) { |
| 344 | Utility.logInfo("Extracting relevant ontology-subset..."); | 352 | Utility.logInfo(">> Relevant ontology-subset extraction <<"); |
| 345 | 353 | ||
| 346 | t.reset(); | 354 | t.reset(); |
| 347 | 355 | ||
| @@ -371,7 +379,7 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 371 | } | 379 | } |
| 372 | 380 | ||
| 373 | private boolean querySkolemisedRelevantSubset(OWLOntology relevantSubset, QueryRecord queryRecord) { | 381 | private boolean querySkolemisedRelevantSubset(OWLOntology relevantSubset, QueryRecord queryRecord) { |
| 374 | Utility.logInfo("Evaluating semi-Skolemised relevant upper store"); | 382 | Utility.logInfo(">> Semi-Skolemisation <<"); |
| 375 | t.reset(); | 383 | t.reset(); |
| 376 | 384 | ||
| 377 | DatalogProgram relevantProgram = new DatalogProgram(relevantSubset, false); // toClassify is false | 385 | DatalogProgram relevantProgram = new DatalogProgram(relevantSubset, false); // toClassify is false |
| @@ -382,7 +390,7 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 382 | relevantStore.importDataFromABoxOf(relevantSubset); | 390 | relevantStore.importDataFromABoxOf(relevantSubset); |
| 383 | String relevantOriginalMarkProgram = OWLHelper.getOriginalMarkProgram(relevantSubset); | 391 | String relevantOriginalMarkProgram = OWLHelper.getOriginalMarkProgram(relevantSubset); |
| 384 | 392 | ||
| 385 | int queryDependentMaxTermDepth = 1; // TODO make it dynamic | 393 | int queryDependentMaxTermDepth = 3; // TODO make it dynamic |
| 386 | relevantStore.materialise("Mark original individuals", relevantOriginalMarkProgram); | 394 | relevantStore.materialise("Mark original individuals", relevantOriginalMarkProgram); |
| 387 | int materialisationTag = relevantStore.materialiseSkolemly(relevantProgram, null, | 395 | int materialisationTag = relevantStore.materialiseSkolemly(relevantProgram, null, |
| 388 | queryDependentMaxTermDepth); | 396 | queryDependentMaxTermDepth); |
| @@ -396,6 +404,7 @@ class MyQueryReasoner extends QueryReasoner { | |||
| 396 | return false; | 404 | return false; |
| 397 | } | 405 | } |
| 398 | 406 | ||
| 407 | Utility.logInfo("Querying semi-Skolemised upper store..."); | ||
| 399 | boolean isFullyProcessed = queryUpperStore(relevantStore, queryRecord, | 408 | boolean isFullyProcessed = queryUpperStore(relevantStore, queryRecord, |
| 400 | queryRecord.getExtendedQueryText(), | 409 | queryRecord.getExtendedQueryText(), |
| 401 | Step.SKOLEM_UPPER_BOUND); | 410 | Step.SKOLEM_UPPER_BOUND); |
