From de3749532d060f26c966a81c03f9a5d846c33d06 Mon Sep 17 00:00:00 2001 From: RncLsn Date: Thu, 28 May 2015 17:11:35 +0100 Subject: Merged updates from upstream. --- .../ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java | 5 +- .../cs/pagoda/reasoner/light/BasicQueryEngine.java | 154 ++++++++++----------- 2 files changed, 79 insertions(+), 80 deletions(-) (limited to 'src/uk/ac/ox/cs/pagoda/reasoner') diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java index b5b9534..618fb70 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java @@ -7,6 +7,7 @@ import uk.ac.ox.cs.pagoda.owl.EqualitiesEliminator; import uk.ac.ox.cs.pagoda.owl.OWLHelper; import uk.ac.ox.cs.pagoda.query.AnswerTuples; import uk.ac.ox.cs.pagoda.query.GapByStore4ID; +import uk.ac.ox.cs.pagoda.query.GapByStore4ID2; import uk.ac.ox.cs.pagoda.query.QueryRecord; import uk.ac.ox.cs.pagoda.query.QueryRecord.Step; import uk.ac.ox.cs.pagoda.reasoner.full.Checker; @@ -164,7 +165,9 @@ class MyQueryReasoner extends QueryReasoner { trackingStore.importRDFData(name, datafile); trackingStore.materialise("saturate named individuals", originalMarkProgram); - GapByStore4ID gap = new GapByStore4ID(trackingStore); +// materialiseFullUpper(); +// GapByStore4ID gap = new GapByStore4ID(trackingStore); + GapByStore4ID gap = new GapByStore4ID2(trackingStore, rlLowerStore); trackingStore.materialiseFoldedly(program, gap); predicatesWithGap = gap.getPredicatesWithGap(); gap.clear(); diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/light/BasicQueryEngine.java b/src/uk/ac/ox/cs/pagoda/reasoner/light/BasicQueryEngine.java index 5d2e411..9aa6235 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/light/BasicQueryEngine.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/light/BasicQueryEngine.java @@ -19,16 +19,18 @@ import java.util.*; public class BasicQueryEngine extends RDFoxQueryEngine { - protected DataStore store; - protected Parameters parameters = new Parameters(); + protected DataStore store; + protected Parameters parameters = new Parameters(); + Set materialisedRules = new HashSet(); + private UFS equalityGroups = null; public BasicQueryEngine(String name) { - super(name); + super(name); store = RDFoxQueryEngine.createDataStore(); - parameters.m_allAnswersInRoot = true; - parameters.m_useBushy = true; + parameters.m_allAnswersInRoot = true; + parameters.m_useBushy = true; } - + public void materialiseFoldedly(DatalogProgram dProgram, GapByStore4ID gap) { if (gap != null) { materialise("lower program", dProgram.getLower().toString()); @@ -40,10 +42,9 @@ public class BasicQueryEngine extends RDFoxQueryEngine { } catch (JRDFStoreException e) { e.printStackTrace(); } finally { - gap.clear(); + gap.clear(); } - } - else + } else materialise("upper program", dProgram.getUpper().toString()); } @@ -58,24 +59,23 @@ public class BasicQueryEngine extends RDFoxQueryEngine { } catch (JRDFStoreException e) { e.printStackTrace(); } finally { - gap.clear(); + gap.clear(); } - } - else + } else materialise("upper program", dProgram.getUpper().toString()); - - return 1; - } + return 1; + } + public int materialiseSkolemly(DatalogProgram dProgram, GapByStore4ID gap) { throw new UnsupportedOperationException(); } - + @Override public AnswerTuples evaluate(String queryText) { - return evaluate(queryText, ConjunctiveQueryHelper.getAnswerVariables(queryText)[0]); + return evaluate(queryText, ConjunctiveQueryHelper.getAnswerVariables(queryText)[0]); } - + @Override public AnswerTuples evaluate(String queryText, String[] answerVars) { TupleIterator tupleIterator; @@ -83,9 +83,9 @@ public class BasicQueryEngine extends RDFoxQueryEngine { tupleIterator = store.compileQuery(queryText.replace("_:", "?"), prefixes, parameters); } catch (JRDFStoreException e) { e.printStackTrace(); - return null; + return null; } - return new RDFoxAnswerTuples(answerVars, tupleIterator); + return new RDFoxAnswerTuples(answerVars, tupleIterator); } @Override @@ -95,17 +95,18 @@ public class BasicQueryEngine extends RDFoxQueryEngine { @Override public void dispose() { - store.dispose(); + store.dispose(); } protected void outputClassAssertions(String filename) { TupleIterator allTuples = null; - boolean redirect = false; + boolean redirect = false; try { allTuples = getDataStore().compileQuery("SELECT ?X ?Z WHERE { ?X <" + Namespace.RDF_TYPE + "> ?Z }", prefixes, parameters); redirect = Utility.redirectCurrentOut(filename); - for (long multi = allTuples.open(); multi != 0; multi = allTuples.getNext()) - System.out.println(RDFoxTripleManager.getQuotedTerm(allTuples.getResource(0)) + " " + RDFoxTripleManager.getQuotedTerm(allTuples.getResource(1))); + for(long multi = allTuples.open(); multi != 0; multi = allTuples.getNext()) + System.out.println(RDFoxTripleManager.getQuotedTerm(allTuples.getResource(0)) + " " + RDFoxTripleManager + .getQuotedTerm(allTuples.getResource(1))); } catch (JRDFStoreException e) { e.printStackTrace(); } finally { @@ -123,137 +124,134 @@ public class BasicQueryEngine extends RDFoxQueryEngine { public void outputInstance4BinaryPredicate(String iri) { outputAnswers("select ?x ?y where { ?x <" + iri + "> ?y . }"); } - + public void outputInstanceNumbers(String filename) { TupleIterator predicateTuples = null; - TupleIterator instanceTuples; - Set number = new HashSet(); - String predicate; + TupleIterator instanceTuples; + Set number = new HashSet(); + String predicate; try { predicateTuples = getDataStore().compileQuery("SELECT DISTINCT ?Y WHERE { ?X <" + Namespace.RDF_TYPE + "> ?Y }", prefixes, parameters); for (long multi = predicateTuples.open(); multi != 0; multi = predicateTuples.getNext()) { predicate = RDFoxTripleManager.getQuotedTerm(predicateTuples.getResource(0)); - instanceTuples = null; + instanceTuples = null; try { instanceTuples = getDataStore().compileQuery("SELECT ?X WHERE { ?X <" + Namespace.RDF_TYPE + "> " + predicate + " }", prefixes, parameters); - long totalCount = 0; + long totalCount = 0; for (long multi1 = instanceTuples.open(); multi1 != 0; multi1 = instanceTuples.getNext()) { totalCount += instanceTuples.getMultiplicity(); } number.add(predicate + " * " + totalCount); } finally { - if (instanceTuples != null) instanceTuples.dispose(); + if(instanceTuples != null) instanceTuples.dispose(); } } } catch (JRDFStoreException e) { e.printStackTrace(); - } finally { + } finally { if (predicateTuples != null) predicateTuples.dispose(); - predicateTuples = null; + predicateTuples = null; } - + try { predicateTuples = getDataStore().compileQuery("SELECT DISTINCT ?Y WHERE { ?X ?Y ?Z }", prefixes, parameters); for (long multi = predicateTuples.open(); multi != 0; multi = predicateTuples.getNext()) { - predicate = RDFoxTripleManager.getQuotedTerm(predicateTuples.getResource(0)); - instanceTuples = null; + predicate = RDFoxTripleManager.getQuotedTerm(predicateTuples.getResource(0)); + instanceTuples = null; try { instanceTuples = getDataStore().compileQuery("SELECT ?X ?Z WHERE { ?X " + predicate + " ?Z }", prefixes, parameters); long totalCount = 0; for (long multi1 = instanceTuples.open(); multi1 != 0; multi1 = instanceTuples.getNext()) totalCount += instanceTuples.getMultiplicity(); - number.add(predicate + " * " + totalCount); + number.add(predicate + " * " + totalCount); } finally { - if (instanceTuples != null) instanceTuples.dispose(); + if(instanceTuples != null) instanceTuples.dispose(); } } - + } catch (JRDFStoreException e) { e.printStackTrace(); } finally { if (predicateTuples != null) predicateTuples.dispose(); predicateTuples = null; } - + Utility.redirectCurrentOut(filename); String[] ordered = number.toArray(new String[0]); Arrays.sort(ordered, new DLPredicateComparator()); - for (String line: ordered) System.out.println(line); + for(String line : ordered) System.out.println(line); Utility.closeCurrentOut(); - + } public TupleIterator internal_evaluateAgainstIDBs(String queryText) throws JRDFStoreException { TupleIterator iter = store.compileQuery(queryText, prefixes, parameters, TripleStatus.TUPLE_STATUS_IDB.union(TripleStatus.TUPLE_STATUS_EDB), TripleStatus.TUPLE_STATUS_IDB); // iter.open(); - return iter; + return iter; } public TupleIterator internal_evaluate(String queryText) throws JRDFStoreException { TupleIterator iter = store.compileQuery(queryText, prefixes, parameters); -// iter.open(); - return iter; +// iter.open(); + return iter; } - + public void setExpandEquality(boolean flag) { - parameters.m_expandEquality = flag; + parameters.m_expandEquality = flag; } - + public TupleIterator internal_evaluateNotExpanded(String queryText) throws JRDFStoreException { - parameters.m_expandEquality = false; - TupleIterator iter = store.compileQuery(queryText, prefixes, parameters); -// iter.open(); - parameters.m_expandEquality = true; + parameters.m_expandEquality = false; + TupleIterator iter = store.compileQuery(queryText, prefixes, parameters); +// iter.open(); + parameters.m_expandEquality = true; return iter; } - public TupleIterator internal_evaluate(String queryText, boolean incrementally) throws JRDFStoreException { return incrementally ? internal_evaluateAgainstIDBs(queryText) : internal_evaluate(queryText); } - Set materialisedRules = new HashSet(); - public String getUnusedRules(Collection clauses, boolean toUpdate) { DLClause clause; for (Iterator iter = clauses.iterator(); iter.hasNext(); ) { if (materialisedRules.contains(clause = iter.next())) iter.remove(); - else if (toUpdate) materialisedRules.add(clause); + else if(toUpdate) materialisedRules.add(clause); } - + if (clauses.isEmpty()) return null; - + return Program.toString(clauses); } public void outputMaterialisedRules() { - System.out.println(DLClauseHelper.toString(materialisedRules)); + System.out.println(DLClauseHelper.toString(materialisedRules)); } public void outputAnswers(String query) { TupleIterator iter = null; try { iter = internal_evaluate(query); - System.out.println(query); - int arity = iter.getArity(); + System.out.println(query); + int arity = iter.getArity(); for (long multi = iter.open(); multi != 0; multi = iter.getNext()) { for (int i = 0; i < arity; ++i) System.out.print(RDFoxTripleManager.getQuotedTerm(iter.getResource(i)) + "\t"); - System.out.println(); + System.out.println(); } } catch (JRDFStoreException e) { e.printStackTrace(); } finally { - if (iter != null) iter.dispose(); + if(iter != null) iter.dispose(); } } public void outputInstance4UnaryPredicate(String iri) { outputAnswers("select ?x where { ?x " + " <" - + iri - + "> .}"); + + iri + + "> .}"); } public void outputSubjects(String p, String o) { @@ -265,13 +263,13 @@ public class BasicQueryEngine extends RDFoxQueryEngine { } public void outputIDBFacts() { - TupleIterator iter = null; + TupleIterator iter = null; try { iter = internal_evaluateAgainstIDBs("select distict ?x ?y ?z where { ?x ?y ?z }"); for (long multi = iter.open(); multi != 0; multi = iter.getNext()) { for (int i = 0; i < 3; ++i) - System.out.print(RDFoxTripleManager.getQuotedTerm(iter.getResource(i)) + "\t"); - System.out.println(); + System.out.print(RDFoxTripleManager.getQuotedTerm(iter.getResource(i)) + "\t"); + System.out.println(); } } catch (JRDFStoreException e) { // TODO Auto-generated catch block @@ -279,7 +277,7 @@ public class BasicQueryEngine extends RDFoxQueryEngine { } finally { if (iter != null) iter.dispose(); } - + } public void outputType4Individual(String iri) { @@ -287,25 +285,23 @@ public class BasicQueryEngine extends RDFoxQueryEngine { } public int getSameAsNumber() { - TupleIterator iter = null; - int counter = 0; + TupleIterator iter = null; + int counter = 0; try { iter = internal_evaluate("select ?x ?y where {?x " + Namespace.EQUALITY_QUOTED + " ?y . }"); - for (long multi = iter.open(); multi != 0; multi = iter.getNext()) + for(long multi = iter.open(); multi != 0; multi = iter.getNext()) if (iter.getResourceID(0) != iter.getResourceID(1)) ++counter; } catch (JRDFStoreException e) { - e.printStackTrace(); + e.printStackTrace(); } finally { if (iter != null) iter.dispose(); } - return counter; + return counter; } - - private UFS equalityGroups = null; - - public UFS getEqualityGroups() { - if (equalityGroups != null) return equalityGroups; + + public UFS getEqualityGroups(boolean reuse) { + if(reuse && equalityGroups != null) return equalityGroups; equalityGroups = new UFS(); -- cgit v1.2.3