From 1013812b487bc438df49ec93ad9433438d5d6cf6 Mon Sep 17 00:00:00 2001 From: RncLsn Date: Fri, 26 Jun 2015 17:41:35 +0100 Subject: Summarisation before Skolemisation. Added Reactome testcase. --- .../ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java | 22 +++++++++------ .../ox/cs/pagoda/summary/HermitSummaryFilter.java | 33 ++++++++++++++-------- 2 files changed, 36 insertions(+), 19 deletions(-) (limited to 'src/uk') diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java index 51cb44d..04b2c65 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java @@ -43,6 +43,7 @@ class MyQueryReasoner extends QueryReasoner { private Collection predicatesWithGap = null; private ConsistencyStatus isConsistent; private ConsistencyManager consistency = new ConsistencyManager(this); + private int relevantOntologiesCounter = 0; public MyQueryReasoner() { setup(true); @@ -188,17 +189,22 @@ class MyQueryReasoner extends QueryReasoner { return; OWLOntology relevantOntologySubset = extractRelevantOntologySubset(queryRecord); -// queryRecord.saveRelevantOntology("/home/alessandro/Desktop/test-relevant-ontology.owl"); + + queryRecord.saveRelevantOntology("/home/alessandro/Desktop/test-relevant-ontology-"+relevantOntologiesCounter+".owl"); + relevantOntologiesCounter++; + + Utility.logInfo("Summarisation..."); + HermitSummaryFilter summarisedChecker = new HermitSummaryFilter(queryRecord, properties.getToCallHermiT()); + if(summarisedChecker.check(queryRecord.getGapAnswers()) == 0) + return; if(properties.getUseSkolemUpperBound() && - querySkolemisedRelevantSubset(relevantOntologySubset, queryRecord)) { + querySkolemisedRelevantSubset(relevantOntologySubset, queryRecord)) return; - } + Utility.logInfo("Full reasoning..."); Timer t = new Timer(); - HermitSummaryFilter summarisedChecker = new HermitSummaryFilter(queryRecord, properties.getToCallHermiT()); - summarisedChecker.check(queryRecord.getGapAnswers()); -// summarisedChecker.checkByFullReasoner(queryRecord.getGapAnswers()); + summarisedChecker.checkByFullReasoner(queryRecord.getGapAnswers()); Utility.logDebug("Total time for full reasoner: " + t.duration()); queryRecord.markAsProcessed(); @@ -360,7 +366,7 @@ class MyQueryReasoner extends QueryReasoner { } private boolean querySkolemisedRelevantSubset(OWLOntology relevantSubset, QueryRecord queryRecord) { - Utility.logInfo("Evaluating semi-Skolemised relevant upper store..."); + Utility.logInfo("Evaluating semi-Skolemised relevant upper store"); t.reset(); DatalogProgram relevantProgram = new DatalogProgram(relevantSubset, false); // toClassify is false @@ -371,7 +377,7 @@ class MyQueryReasoner extends QueryReasoner { relevantStore.importDataFromABoxOf(relevantSubset); String relevantOriginalMarkProgram = OWLHelper.getOriginalMarkProgram(relevantSubset); - int queryDependentMaxTermDepth = 10; // TODO make it dynamic + int queryDependentMaxTermDepth = 5; // TODO make it dynamic relevantStore.materialise("Mark original individuals", relevantOriginalMarkProgram); int materialisationTag = relevantStore.materialiseSkolemly(relevantProgram, null, queryDependentMaxTermDepth); diff --git a/src/uk/ac/ox/cs/pagoda/summary/HermitSummaryFilter.java b/src/uk/ac/ox/cs/pagoda/summary/HermitSummaryFilter.java index 95f2cbb..2d2198f 100644 --- a/src/uk/ac/ox/cs/pagoda/summary/HermitSummaryFilter.java +++ b/src/uk/ac/ox/cs/pagoda/summary/HermitSummaryFilter.java @@ -27,7 +27,9 @@ public class HermitSummaryFilter extends Checker { HermitChecker summarisedHermiT = null; boolean summarisedConsistency; Endomorph endomorphismChecker = null; - + private HashSet passed; + private int counter; + public HermitSummaryFilter(QueryRecord record, boolean toCallHermiT) { m_record = record; HermitChecker hermitChecker = new HermitChecker(record.getRelevantOntology(), record, toCallHermiT); @@ -115,6 +117,20 @@ public class HermitSummaryFilter extends Checker { return summarisedHermiT.getNoOfCalls() + endomorphismChecker.getNoOfCalls(); } + public int checkByFullReasoner(AnswerTuples answers) { + if(isDisposed()) throw new DisposedException(); + if(m_record.isProcessed()) + return 0; + + Utility.logDebug("The number of answers to be checked with HermiT: " + passed.size() + "/" + counter); + m_record.setDifficulty(Step.FULL_REASONING); + + if(summarisedConsistency) + return endomorphismChecker.check(new AnswerTuplesImp(m_record.getAnswerVariables(), passed)); + else + return endomorphismChecker.check(answers); + } + @Override public int check(AnswerTuples answers) { if(isDisposed()) throw new DisposedException(); @@ -125,10 +141,11 @@ public class HermitSummaryFilter extends Checker { initialiseSummarisedReasoner(); if(summarisedConsistency) { - Set passed = new HashSet(), succ = new HashSet(); + passed = new HashSet(); + Set succ = new HashSet(); Set falsified = new HashSet(), fail = new HashSet(); - int counter = 0; + counter = 0; AnswerTuple representative; for(AnswerTuple answer; answers.isValid(); answers.moveNext()) { ++counter; @@ -158,20 +175,14 @@ public class HermitSummaryFilter extends Checker { m_record.addProcessingTime(Step.SUMMARISATION, t.duration()); return 0; } - - Utility.logDebug("The number of answers to be checked with HermiT: " + passed.size() + "/" + counter); - - m_record.setDifficulty(Step.FULL_REASONING); m_record.addProcessingTime(Step.SUMMARISATION, t.duration()); - - return endomorphismChecker.check(new AnswerTuplesImp(m_record.getAnswerVariables(), passed)); } else { m_record.addProcessingTime(Step.SUMMARISATION, t.duration()); // m_record.saveRelevantOntology("fragment.owl"); - m_record.setDifficulty(Step.FULL_REASONING); - return endomorphismChecker.check(answers); } + + return 1; } @Override -- cgit v1.2.3