From 6e8ee40e41d84e0466153802a2c9b4ae88af3544 Mon Sep 17 00:00:00 2001 From: RncLsn Date: Tue, 9 Jun 2015 18:23:15 +0100 Subject: Fixed marking original individuals in the relevant upper store. --- src/uk/ac/ox/cs/pagoda/Pagoda.java | 6 ++++++ src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java | 4 ++++ src/uk/ac/ox/cs/pagoda/query/QueryRecord.java | 8 +++++++- src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java | 7 ++++--- src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java | 1 + .../ac/ox/cs/pagoda/rules/approximators/SkolemTermsManager.java | 2 +- src/uk/ac/ox/cs/pagoda/util/tuples/Tuple.java | 5 +++++ 7 files changed, 28 insertions(+), 5 deletions(-) (limited to 'src/uk/ac/ox/cs') diff --git a/src/uk/ac/ox/cs/pagoda/Pagoda.java b/src/uk/ac/ox/cs/pagoda/Pagoda.java index aeb85a7..f5dce15 100644 --- a/src/uk/ac/ox/cs/pagoda/Pagoda.java +++ b/src/uk/ac/ox/cs/pagoda/Pagoda.java @@ -177,6 +177,12 @@ public class Pagoda implements Runnable { return this; } + public PagodaBuilder skolem(Boolean isEnabled) { + if(instance == null) return null; + instance.properties.setUseSkolemUpperBound(isEnabled); + return this; + } + public Pagoda build() { Pagoda builtInstance = instance; instance = null; diff --git a/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java b/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java index 479905d..2471c80 100644 --- a/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java +++ b/src/uk/ac/ox/cs/pagoda/multistage/MultiStageQueryEngine.java @@ -10,6 +10,7 @@ import uk.ac.ox.cs.pagoda.query.GapByStore4ID; import uk.ac.ox.cs.pagoda.query.QueryRecord; import uk.ac.ox.cs.pagoda.rules.DatalogProgram; import uk.ac.ox.cs.pagoda.rules.Program; +import uk.ac.ox.cs.pagoda.rules.approximators.SkolemTermsManager; import uk.ac.ox.cs.pagoda.util.PagodaProperties; import uk.ac.ox.cs.pagoda.util.Timer; import uk.ac.ox.cs.pagoda.util.Utility; @@ -216,6 +217,9 @@ public class MultiStageQueryEngine extends StageQueryEngine { Utility.logDebug(name + " store after adding facts for violations: " + (tripleCount = store.getTriplesCount()) + " (" + (tripleCount - oldTripleCount) + " new)"); Utility.logDebug("Time to add triples for violations: " + subTimer.duration()); + + Utility.logDebug("Number of Skolem individuals: " + SkolemTermsManager.getInstance() + .getSkolemIndividualsCount()); } } catch(JRDFStoreException e) { e.printStackTrace(); diff --git a/src/uk/ac/ox/cs/pagoda/query/QueryRecord.java b/src/uk/ac/ox/cs/pagoda/query/QueryRecord.java index 7f02741..5878a57 100644 --- a/src/uk/ac/ox/cs/pagoda/query/QueryRecord.java +++ b/src/uk/ac/ox/cs/pagoda/query/QueryRecord.java @@ -2,6 +2,7 @@ package uk.ac.ox.cs.pagoda.query; import com.google.gson.*; import com.google.gson.reflect.TypeToken; +import org.apache.commons.lang.WordUtils; import org.semanticweb.HermiT.model.*; import org.semanticweb.owlapi.model.*; import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; @@ -713,7 +714,12 @@ public class QueryRecord extends Disposable { FRAGMENT_REFINEMENT, SUMMARISATION, DEPENDENCY, - FULL_REASONING + FULL_REASONING; + + @Override + public String toString() { + return WordUtils.capitalizeFully(super.toString(), new char[]{'_'}).replace("_", ""); + } } /** diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java index e6e508a..e689de6 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java @@ -19,7 +19,6 @@ import uk.ac.ox.cs.pagoda.tracking.QueryTracker; import uk.ac.ox.cs.pagoda.tracking.TrackingRuleEncoder; import uk.ac.ox.cs.pagoda.tracking.TrackingRuleEncoderDisjVar1; import uk.ac.ox.cs.pagoda.tracking.TrackingRuleEncoderWithGap; -import uk.ac.ox.cs.pagoda.util.PagodaProperties; import uk.ac.ox.cs.pagoda.util.Timer; import uk.ac.ox.cs.pagoda.util.Utility; import uk.ac.ox.cs.pagoda.util.disposable.DisposedException; @@ -192,7 +191,7 @@ class MyQueryReasoner extends QueryReasoner { OWLOntology relevantOntologySubset = extractRelevantOntologySubset(queryRecord); // queryRecord.saveRelevantOntology("./fragment_query" + queryRecord.getQueryID() + ".owl"); - if(PagodaProperties.getDefaultUseSkolemUpperBound() && + if(properties.getUseSkolemUpperBound() && querySkolemisedRelevantSubset(relevantOntologySubset, queryRecord)) return; @@ -297,7 +296,7 @@ class MyQueryReasoner extends QueryReasoner { Tuple extendedQueryTexts = queryRecord.getExtendedQueryText(); - if(PagodaProperties.getDefaultUseAlwaysSimpleUpperBound() || lazyUpperStore == null) { + if(properties.getUseAlwaysSimpleUpperBound() || lazyUpperStore == null) { Utility.logDebug("Tracking store"); if(queryUpperStore(trackingStore, queryRecord, extendedQueryTexts, Step.SIMPLE_UPPER_BOUND)) return true; @@ -369,8 +368,10 @@ class MyQueryReasoner extends QueryReasoner { new MultiStageQueryEngine("Relevant-store", true); // checkValidity is true relevantStore.importDataFromABoxOf(relevantSubset); + String relevantOriginalMarkProgram = OWLHelper.getOriginalMarkProgram(relevantSubset); int queryDependentMaxTermDepth = 5; // TODO make it dynamic + relevantStore.materialise("Mark original individuals", relevantOriginalMarkProgram); int materialisationTag = relevantStore.materialiseSkolemly(relevantProgram, null, queryDependentMaxTermDepth); queryRecord.addProcessingTime(Step.SKOLEM_UPPER_BOUND, t.duration()); diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java index eab6a1b..3a057ec 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java @@ -193,6 +193,7 @@ public abstract class QueryReasoner extends Disposable { if(!record.isProcessed()) evaluate(record); Utility.logInfo("Total time to answer this query: " + t.duration()); + Utility.logInfo("Difficulty of this query: " + record.getDifficulty()); if(!fullReasoner && !record.isProcessed()) { Utility.logInfo("The query has not been fully answered in " + t.duration() + " seconds."); continue; diff --git a/src/uk/ac/ox/cs/pagoda/rules/approximators/SkolemTermsManager.java b/src/uk/ac/ox/cs/pagoda/rules/approximators/SkolemTermsManager.java index 44daf7a..a78aabe 100644 --- a/src/uk/ac/ox/cs/pagoda/rules/approximators/SkolemTermsManager.java +++ b/src/uk/ac/ox/cs/pagoda/rules/approximators/SkolemTermsManager.java @@ -83,7 +83,7 @@ public class SkolemTermsManager { /** * Get the number of individuals generated by this manager. */ - public int getNumberOfSkolemisedIndividual() { + public int getSkolemIndividualsCount() { return individualToDepth_map.keySet().size(); } diff --git a/src/uk/ac/ox/cs/pagoda/util/tuples/Tuple.java b/src/uk/ac/ox/cs/pagoda/util/tuples/Tuple.java index 9139a5d..0a5983c 100644 --- a/src/uk/ac/ox/cs/pagoda/util/tuples/Tuple.java +++ b/src/uk/ac/ox/cs/pagoda/util/tuples/Tuple.java @@ -46,4 +46,9 @@ public class Tuple implements Iterable { public int hashCode() { return elements.hashCode() + getClass().hashCode(); } + + @Override + public String toString() { + return elements.toString(); + } } -- cgit v1.2.3