From 4013a9d33d0f1a06b87d12dd0543912c53bba137 Mon Sep 17 00:00:00 2001 From: yzhou Date: Tue, 28 Apr 2015 17:13:55 +0100 Subject: pass the wine realisation --- lib/ore/OREv2ReasonerWrapper.jar | Bin 0 -> 433263 bytes src/uk/ac/ox/cs/pagoda/approx/Clause.java | 91 ++-- src/uk/ac/ox/cs/pagoda/approx/RLPlusOntology.java | 31 +- .../ac/ox/cs/pagoda/query/rollup/QueryGraph.java | 10 +- .../ox/cs/pagoda/reasoner/ConsistencyManager.java | 2 +- .../ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java | 7 +- .../ox/cs/pagoda/reasoner/full/HermitChecker.java | 55 +-- src/uk/ac/ox/cs/pagoda/rules/Program.java | 4 +- test/uk/ac/ox/cs/pagoda/ore/PagodaOWLReasoner.java | 464 +++++++++++++++++++++ .../ac/ox/cs/pagoda/ore/PagodaReasonerFactory.java | 39 ++ test/uk/ac/ox/cs/pagoda/tester/ORETester.java | 21 - 11 files changed, 623 insertions(+), 101 deletions(-) create mode 100644 lib/ore/OREv2ReasonerWrapper.jar create mode 100644 test/uk/ac/ox/cs/pagoda/ore/PagodaOWLReasoner.java create mode 100644 test/uk/ac/ox/cs/pagoda/ore/PagodaReasonerFactory.java delete mode 100644 test/uk/ac/ox/cs/pagoda/tester/ORETester.java diff --git a/lib/ore/OREv2ReasonerWrapper.jar b/lib/ore/OREv2ReasonerWrapper.jar new file mode 100644 index 0000000..635dacc Binary files /dev/null and b/lib/ore/OREv2ReasonerWrapper.jar differ diff --git a/src/uk/ac/ox/cs/pagoda/approx/Clause.java b/src/uk/ac/ox/cs/pagoda/approx/Clause.java index 9c3f5d0..29bc74e 100644 --- a/src/uk/ac/ox/cs/pagoda/approx/Clause.java +++ b/src/uk/ac/ox/cs/pagoda/approx/Clause.java @@ -68,7 +68,7 @@ public class Clause { getVariableOccurrence(var2atom, bodyAtoms); DLPredicate predicate; - Variable W = null; + Term W = null; Map nom2iri = new HashMap(); Map nom2datatype = new HashMap(); @@ -97,8 +97,7 @@ public class Clause { AtomicConcept concept = (AtomicConcept) predicate; Variable v = atom.getArgumentVariable(0); if (v == X) - subClasses.add(factory.getOWLClass(IRI.create(concept - .getIRI()))); + subClasses.add(factory.getOWLClass(IRI.create(concept.getIRI()))); else if (predicate.toString().startsWith(" set = varCliques.get(W); - if (set != null) - number = set.size(); - - if (var2atom.containsKey(W)) { - Atom tAtom = var2atom.get(W); - DLPredicate tPredicate = tAtom.getDLPredicate(); - if (tPredicate instanceof AtomicConcept) { - concept = (AtomicConcept) tPredicate; - clsExp = factory.getOWLClass(IRI.create(concept - .getIRI())); - if (headAtoms.contains(tAtom)) { - superClasses.add(factory.getOWLObjectAllValuesFrom( - roleExp, clsExp)); - subClasses.add(factory.getOWLObjectSomeValuesFrom( - roleExp, factory.getOWLThing())); - headAtoms.remove(tAtom); + else if (W instanceof Individual) + subClasses.add(factory.getOWLObjectHasValue(roleExp, factory.getOWLNamedIndividual(IRI.create(((Individual) W).getIRI())))); + else { + AtomicConcept concept; + OWLClassExpression clsExp = null; + int number = 1; + Set set = varCliques.get(W); + if (set != null) + number = set.size(); + + if (var2atom.containsKey(W)) { + Atom tAtom = var2atom.get(W); + DLPredicate tPredicate = tAtom.getDLPredicate(); + if (tPredicate instanceof AtomicConcept) { + concept = (AtomicConcept) tPredicate; + clsExp = factory.getOWLClass(IRI.create(concept + .getIRI())); + if (headAtoms.contains(tAtom)) { + superClasses.add(factory.getOWLObjectAllValuesFrom( + roleExp, clsExp)); + subClasses.add(factory.getOWLObjectSomeValuesFrom( + roleExp, factory.getOWLThing())); + headAtoms.remove(tAtom); + } else { + if (number == 1) + subClasses.add(factory + .getOWLObjectSomeValuesFrom(roleExp, + clsExp)); + else + subClasses.add(factory + .getOWLObjectMinCardinality(number, + roleExp, clsExp)); + } } else { - if (number == 1) - subClasses.add(factory - .getOWLObjectSomeValuesFrom(roleExp, - clsExp)); - else - subClasses.add(factory - .getOWLObjectMinCardinality(number, - roleExp, clsExp)); + Utility.logDebug(tAtom, "strange ... -___-|||"); } - } else { - Utility.logDebug(tAtom, "strange ... -___-|||"); } - } else { - if (number == 1) - subClasses.add(factory.getOWLObjectSomeValuesFrom( - roleExp, factory.getOWLThing())); - else - subClasses.add(factory.getOWLObjectMinCardinality( - number, roleExp)); + else { + if (number == 1) + subClasses.add(factory.getOWLObjectSomeValuesFrom( + roleExp, factory.getOWLThing())); + else + subClasses.add(factory.getOWLObjectMinCardinality( + number, roleExp)); + } } } } diff --git a/src/uk/ac/ox/cs/pagoda/approx/RLPlusOntology.java b/src/uk/ac/ox/cs/pagoda/approx/RLPlusOntology.java index a43d9af..a60b664 100644 --- a/src/uk/ac/ox/cs/pagoda/approx/RLPlusOntology.java +++ b/src/uk/ac/ox/cs/pagoda/approx/RLPlusOntology.java @@ -31,6 +31,8 @@ import org.semanticweb.owlapi.model.OWLDataMinCardinality; import org.semanticweb.owlapi.model.OWLDataPropertyAssertionAxiom; import org.semanticweb.owlapi.model.OWLDataSomeValuesFrom; import org.semanticweb.owlapi.model.OWLDatatype; +import org.semanticweb.owlapi.model.OWLDifferentIndividualsAxiom; +import org.semanticweb.owlapi.model.OWLIndividual; import org.semanticweb.owlapi.model.OWLNamedIndividual; import org.semanticweb.owlapi.model.OWLObjectAllValuesFrom; import org.semanticweb.owlapi.model.OWLObjectComplementOf; @@ -46,6 +48,7 @@ import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.model.OWLOntologyManager; import org.semanticweb.owlapi.model.OWLOntologyStorageException; +import org.semanticweb.owlapi.model.OWLSameIndividualAxiom; import org.semanticweb.owlapi.profiles.OWL2RLProfile; import org.semanticweb.owlapi.profiles.OWLProfileReport; import org.semanticweb.owlapi.profiles.OWLProfileViolation; @@ -360,6 +363,9 @@ public class RLPlusOntology implements KnowledgeBase { Map complex2atomic= new HashMap(); OWLDatatype anyURI = factory.getOWLDatatype(IRI.create(Namespace.XSD_NS + "anyURI")); + OWLObjectProperty sameAs = factory.getOWLObjectProperty(IRI.create(Namespace.EQUALITY)); + OWLObjectProperty differentFrom = factory.getOWLObjectProperty(IRI.create(Namespace.INEQUALITY)); + for (OWLOntology imported: inputOntology.getImportsClosure()) for (OWLAxiom axiom: imported.getAxioms()) { if (axiom instanceof OWLClassAssertionAxiom) { @@ -381,10 +387,33 @@ public class RLPlusOntology implements KnowledgeBase { } } else if (axiom instanceof OWLObjectPropertyAssertionAxiom || axiom instanceof OWLDataPropertyAssertionAxiom || axiom instanceof OWLAnnotationAssertionAxiom) { - if (axiom.containsEntityInSignature(anyURI)) continue; + if (axiom.getDataPropertiesInSignature().contains(anyURI)) continue; flag = true; manager.addAxiom(aBox, axiom); } + else if (axiom instanceof OWLSameIndividualAxiom) { + OWLIndividual firstIndividual = null, previousIndividual = null, lastIndividual = null; + for (OWLIndividual next: ((OWLSameIndividualAxiom) axiom).getIndividuals()) { + if (firstIndividual == null) firstIndividual = previousIndividual = next; + else + manager.addAxiom(aBox, factory.getOWLObjectPropertyAssertionAxiom(sameAs, previousIndividual, next)); + previousIndividual = lastIndividual = next; + } + manager.addAxiom(aBox, factory.getOWLObjectPropertyAssertionAxiom(sameAs, lastIndividual, firstIndividual)); + } + else if (axiom instanceof OWLDifferentIndividualsAxiom) { + int index1 = 0, index2; + for (OWLIndividual individual1: ((OWLDifferentIndividualsAxiom) axiom).getIndividuals()) { + ++index1; + index2 = 0; + for (OWLIndividual individual2: ((OWLDifferentIndividualsAxiom) axiom).getIndividuals()) { + if (index2++ < index1) { + manager.addAxiom(aBox, factory.getOWLObjectPropertyAssertionAxiom(differentFrom, individual1, individual2)); + } + else break; + } + } + } else manager.addAxiom(tBox, axiom); } 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 11b0c75..26b0c1a 100644 --- a/src/uk/ac/ox/cs/pagoda/query/rollup/QueryGraph.java +++ b/src/uk/ac/ox/cs/pagoda/query/rollup/QueryGraph.java @@ -42,6 +42,8 @@ import org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom; import org.semanticweb.owlapi.model.OWLObjectUnionOf; import org.semanticweb.owlapi.model.OWLOntology; +import uk.ac.ox.cs.pagoda.util.Namespace; + public class QueryGraph { Set freeVars = new HashSet(); @@ -63,10 +65,10 @@ public class QueryGraph { for (Atom atom: bodyAtoms) { if (atom.getArity() == 1) { - updateExistentiallyVariables(atom.getArgumentVariable(0)); - IRI iri = IRI.create(((AtomicConcept) atom.getDLPredicate()).getIRI()); - if (ontology.containsClassInSignature(iri)) - concepts.add(atom.getArgument(0), factory.getOWLClass(IRI.create(((AtomicConcept) atom.getDLPredicate()).getIRI()))); + updateExistentiallyVariables(atom.getArgumentVariable(0)); + String id = ((AtomicConcept) atom.getDLPredicate()).getIRI(); + if (!id.equals(Namespace.PAGODA_ORIGINAL)) + concepts.add(atom.getArgument(0), factory.getOWLClass(IRI.create(id))); } else if (atom.getArity() == 2) { updateExistentiallyVariables(atom.getArgumentVariable(0)); diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager.java b/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager.java index 7d3e40c..63fe246 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/ConsistencyManager.java @@ -108,7 +108,7 @@ public class ConsistencyManager { } catch (OWLOntologyCreationException e) { e.printStackTrace(); } - fullQueryRecord.saveRelevantClause(); +// fullQueryRecord.saveRelevantClause(); boolean satisfiability; diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java index 875dcdd..17838ae 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java @@ -296,13 +296,14 @@ public class MyQueryReasoner extends QueryReasoner { Timer t = new Timer(); Checker summarisedChecker = new HermitSummaryFilter(queryRecord, properties.getToCallHermiT()); - int validNumber = summarisedChecker.check(queryRecord.getGapAnswers()); +// int validNumber = + summarisedChecker.check(queryRecord.getGapAnswers()); summarisedChecker.dispose(); Utility.logDebug("Total time for full reasoner: " + t.duration()); - if (validNumber == 0) { +// if (validNumber == 0) { queryRecord.markAsProcessed(); Utility.logDebug("Difficulty of this query: " + queryRecord.getDifficulty()); - } +// } } @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 97925fc..4dd11d8 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/full/HermitChecker.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/full/HermitChecker.java @@ -77,7 +77,8 @@ public class HermitChecker implements Checker { } private int tag = 0; - AnswerTuple topAnswerTuple = null, botAnswerTuple = null; +// AnswerTuple topAnswerTuple = null; + AnswerTuple botAnswerTuple = null; private void initialiseReasoner() { qGraph = new QueryGraph(queryClause.getBodyAtoms(), answerVariable[1], ontology); @@ -96,8 +97,9 @@ public class HermitChecker implements Checker { manager.removeAxioms(ontology, axioms); hermit = new Reasoner(ontology); } else { - if (topAnswerTuple != null && !check(topAnswerTuple)) tag = -1; - else if (botAnswerTuple != null && check(botAnswerTuple)) tag = 1; +// if (topAnswerTuple != null && !check(topAnswerTuple)) tag = -1; +// else + if (botAnswerTuple != null && check(botAnswerTuple)) tag = 1; } } else @@ -105,19 +107,22 @@ public class HermitChecker implements Checker { } private void addTopAndBotTuple(Set axioms) { - String top_str = Namespace.PAGODA_ANONY + "top", bot_str = Namespace.PAGODA_ANONY + "bot"; - topAnswerTuple = new AnswerTuple(new uk.ac.ox.cs.JRDFox.model.Individual[] { uk.ac.ox.cs.JRDFox.model.Individual.create(top_str) } ); +// String top_str = Namespace.PAGODA_ANONY + "top"; + String bot_str = Namespace.PAGODA_ANONY + "bot"; +// topAnswerTuple = new AnswerTuple(new uk.ac.ox.cs.JRDFox.model.Individual[] { uk.ac.ox.cs.JRDFox.model.Individual.create(top_str) } ); botAnswerTuple = new AnswerTuple(new uk.ac.ox.cs.JRDFox.model.Individual[] { uk.ac.ox.cs.JRDFox.model.Individual.create(bot_str) } ); - OWLIndividual top_ind = factory.getOWLNamedIndividual(IRI.create(top_str)), bot_ind = factory.getOWLNamedIndividual(IRI.create(bot_str)); +// OWLIndividual top_ind = factory.getOWLNamedIndividual(IRI.create(top_str)); + OWLIndividual bot_ind = factory.getOWLNamedIndividual(IRI.create(bot_str)); Map counter = new HashMap(); - Set topAnswers = new HashSet(), botAnswers = new HashSet(); +// Set topAnswers = new HashSet(); + Set botAnswers = new HashSet(); OWLIndividual sub, obj; - if (dGraph.getExits().size() > 1) { - for (Clique answerClique: dGraph.getExits()) - topAnswers.add(((uk.ac.ox.cs.JRDFox.model.Individual) answerClique.getRepresentative().getAnswerTuple().getGroundTerm(0)).getIRI()); - } - else topAnswerTuple = null; +// if (dGraph.getExits().size() > 1) { +// for (Clique answerClique: dGraph.getExits()) +// topAnswers.add(((uk.ac.ox.cs.JRDFox.model.Individual) answerClique.getRepresentative().getAnswerTuple().getGroundTerm(0)).getIRI()); +// } +// else topAnswerTuple = null; if (dGraph.getEntrances().size() > 1) { for (Clique answerClique: dGraph.getEntrances()) @@ -129,23 +134,23 @@ public class HermitChecker implements Checker { if (axiom instanceof OWLClassAssertionAxiom) { OWLClassAssertionAxiom ca = (OWLClassAssertionAxiom) axiom; sub = ca.getIndividual(); - if (topAnswers.contains(sub.toStringID())) - axioms.add(factory.getOWLClassAssertionAxiom(ca.getClassExpression(), top_ind)); +// if (topAnswers.contains(sub.toStringID())) +// axioms.add(factory.getOWLClassAssertionAxiom(ca.getClassExpression(), top_ind)); if (botAnswers.contains(sub.toStringID())) inc(counter, factory.getOWLClassAssertionAxiom(ca.getClassExpression(), bot_ind)); } else if (axiom instanceof OWLObjectPropertyAssertionAxiom) { OWLObjectPropertyAssertionAxiom oa = (OWLObjectPropertyAssertionAxiom) axiom; sub = oa.getSubject(); obj = oa.getObject(); - if (topAnswers.contains(sub.toStringID())) - if (topAnswers.contains(obj.toStringID())) - axioms.add(factory.getOWLObjectPropertyAssertionAxiom(oa.getProperty(), top_ind, top_ind)); - else - axioms.add(factory.getOWLObjectPropertyAssertionAxiom(oa.getProperty(), top_ind, obj)); - else { - if (topAnswers.contains(obj.toStringID())) - axioms.add(factory.getOWLObjectPropertyAssertionAxiom(oa.getProperty(), sub, top_ind)); - } +//// if (topAnswers.contains(sub.toStringID())) +//// if (topAnswers.contains(obj.toStringID())) +//// axioms.add(factory.getOWLObjectPropertyAssertionAxiom(oa.getProperty(), top_ind, top_ind)); +//// else +//// axioms.add(factory.getOWLObjectPropertyAssertionAxiom(oa.getProperty(), top_ind, obj)); +//// else { +//// if (topAnswers.contains(obj.toStringID())) +//// axioms.add(factory.getOWLObjectPropertyAssertionAxiom(oa.getProperty(), sub, top_ind)); +//// } if (botAnswers.contains(sub.toStringID())) if (botAnswers.contains(obj.toStringID())) @@ -161,8 +166,8 @@ public class HermitChecker implements Checker { else if (axiom instanceof OWLDataPropertyAssertionAxiom) { OWLDataPropertyAssertionAxiom da = (OWLDataPropertyAssertionAxiom) axiom; sub = da.getSubject(); - if (topAnswers.contains(sub.toStringID())) - axioms.add(factory.getOWLDataPropertyAssertionAxiom(da.getProperty(), top_ind, da.getObject())); +// if (topAnswers.contains(sub.toStringID())) +// axioms.add(factory.getOWLDataPropertyAssertionAxiom(da.getProperty(), top_ind, da.getObject())); if (botAnswers.contains(sub.toStringID())) inc(counter, factory.getOWLDataPropertyAssertionAxiom(da.getProperty(), bot_ind, da.getObject())); diff --git a/src/uk/ac/ox/cs/pagoda/rules/Program.java b/src/uk/ac/ox/cs/pagoda/rules/Program.java index b533e50..83cd21a 100644 --- a/src/uk/ac/ox/cs/pagoda/rules/Program.java +++ b/src/uk/ac/ox/cs/pagoda/rules/Program.java @@ -138,7 +138,7 @@ public abstract class Program implements KnowledgeBase { transitiveAxioms = new LinkedList(); subPropChainAxioms = new LinkedList(); - OWLEntity date = ontology.getOWLOntologyManager().getOWLDataFactory().getOWLDatatype(IRI.create("http://www.w3.org/2001/XMLSchema#date")); + OWLDatatype date = ontology.getOWLOntologyManager().getOWLDataFactory().getOWLDatatype(IRI.create("http://www.w3.org/2001/XMLSchema#date")); int noOfDataPropertyRangeAxioms = 0, noOfAxioms = 0; for (OWLOntology onto: ontology.getImportsClosure()) for (OWLAxiom axiom: onto.getAxioms()) { @@ -152,7 +152,7 @@ public abstract class Program implements KnowledgeBase { Utility.logInfo("The axiom: " + axiom + " is being ignored."); } else { - if (axiom.containsEntityInSignature(date)) { + if (axiom.getDatatypesInSignature().contains(date)) { Utility.logInfo("The axiom: " + axiom + " is being ignored."); } else manager.addAxiom(filteredOntology, axiom); diff --git a/test/uk/ac/ox/cs/pagoda/ore/PagodaOWLReasoner.java b/test/uk/ac/ox/cs/pagoda/ore/PagodaOWLReasoner.java new file mode 100644 index 0000000..4b0c1d4 --- /dev/null +++ b/test/uk/ac/ox/cs/pagoda/ore/PagodaOWLReasoner.java @@ -0,0 +1,464 @@ +package uk.ac.ox.cs.pagoda.ore; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.semanticweb.owlapi.model.AxiomType; +import org.semanticweb.owlapi.model.IRI; +import org.semanticweb.owlapi.model.OWLAxiom; +import org.semanticweb.owlapi.model.OWLClass; +import org.semanticweb.owlapi.model.OWLClassExpression; +import org.semanticweb.owlapi.model.OWLDataFactory; +import org.semanticweb.owlapi.model.OWLDataProperty; +import org.semanticweb.owlapi.model.OWLDataPropertyExpression; +import org.semanticweb.owlapi.model.OWLLiteral; +import org.semanticweb.owlapi.model.OWLNamedIndividual; +import org.semanticweb.owlapi.model.OWLObjectPropertyExpression; +import org.semanticweb.owlapi.model.OWLOntology; +import org.semanticweb.owlapi.model.OWLOntologyChange; +import org.semanticweb.owlapi.reasoner.AxiomNotInProfileException; +import org.semanticweb.owlapi.reasoner.BufferingMode; +import org.semanticweb.owlapi.reasoner.ClassExpressionNotInProfileException; +import org.semanticweb.owlapi.reasoner.FreshEntitiesException; +import org.semanticweb.owlapi.reasoner.FreshEntityPolicy; +import org.semanticweb.owlapi.reasoner.InconsistentOntologyException; +import org.semanticweb.owlapi.reasoner.IndividualNodeSetPolicy; +import org.semanticweb.owlapi.reasoner.InferenceType; +import org.semanticweb.owlapi.reasoner.Node; +import org.semanticweb.owlapi.reasoner.NodeSet; +import org.semanticweb.owlapi.reasoner.OWLReasoner; +import org.semanticweb.owlapi.reasoner.ReasonerInterruptedException; +import org.semanticweb.owlapi.reasoner.TimeOutException; +import org.semanticweb.owlapi.reasoner.UnsupportedEntailmentTypeException; +import org.semanticweb.owlapi.reasoner.impl.OWLClassNodeSet; +import org.semanticweb.owlapi.util.Version; + +import uk.ac.ox.cs.JRDFox.model.GroundTerm; +import uk.ac.ox.cs.JRDFox.model.Individual; +import uk.ac.ox.cs.pagoda.query.AnswerTuples; +import uk.ac.ox.cs.pagoda.reasoner.QueryReasoner; + +public class PagodaOWLReasoner implements OWLReasoner { + + QueryReasoner reasoner; + OWLOntology ontology; + OWLDataFactory factory; + boolean sat; + + public PagodaOWLReasoner(OWLOntology ontology) { + this.ontology = ontology; + factory = ontology.getOWLOntologyManager().getOWLDataFactory(); + reasoner = QueryReasoner.getInstance(ontology); + reasoner.setToClassify(false); + reasoner.loadOntology(ontology); + sat = reasoner.preprocess(); + thing = new OWLClassNodeSet(factory.getOWLThing()); + } + + @Override + public String getReasonerName() { + return "PAGOdA"; + } + + @Override + public Version getReasonerVersion() { + return null; + } + + @Override + public BufferingMode getBufferingMode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void flush() { + // TODO Auto-generated method stub + + } + + @Override + public List getPendingChanges() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Set getPendingAxiomAdditions() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Set getPendingAxiomRemovals() { + // TODO Auto-generated method stub + return null; + } + + @Override + public OWLOntology getRootOntology() { + return ontology; + } + + @Override + public void interrupt() { + // TODO Auto-generated method stub + + } + + @Override + public void precomputeInferences(InferenceType... inferenceTypes) throws ReasonerInterruptedException, TimeOutException, InconsistentOntologyException { + if (inferenceTypes.length == 1 && inferenceTypes[0].equals(InferenceType.CLASS_ASSERTIONS) && types.isEmpty()) { + Set queriedClasses = new HashSet(); + for (OWLOntology onto: ontology.getImportsClosure()) + for (OWLClass cls: onto.getClassesInSignature(true)) { +// if (cls.toStringID().equals("http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#Meritage")); +// else continue; + if (!cls.equals(factory.getOWLThing()) && !queriedClasses.contains(cls)) { + queriedClasses.add(cls); + AnswerTuples tuples = null; + try { + tuples = reasoner.evaluate(String.format("select distinct ?x where { ?x <%s> .}", cls.toStringID())); + int cnt = 0; + for (GroundTerm t; tuples.isValid(); tuples.moveNext()) { + t = tuples.getTuple().getGroundTerm(0); + if (t instanceof Individual) { + addType(((Individual) t).getIRI(), cls); + ++cnt; + } + } + System.out.println("The number of answers: " + cnt); + } finally { + if (tuples != null) tuples.dispose(); + } + } + } + } + } + + private void addType(String iri, OWLClass cls) { + OWLNamedIndividual ind = factory.getOWLNamedIndividual(IRI.create(iri)); + OWLClassNodeSet set; + if (types.containsKey(ind)) { + set = types.get(ind); + } + else { + set = new OWLClassNodeSet(factory.getOWLThing()); + types.put(ind, set); + } + set.addEntity(cls); + } + + @Override + public boolean isPrecomputed(InferenceType inferenceType) { + // TODO Auto-generated method stub + return false; + } + + @Override + public Set getPrecomputableInferenceTypes() { + return java.util.Collections.singleton(InferenceType.CLASS_ASSERTIONS); + } + + @Override + public boolean isConsistent() throws ReasonerInterruptedException, TimeOutException { + return sat; + } + + @Override + public boolean isSatisfiable(OWLClassExpression classExpression) throws ReasonerInterruptedException, TimeOutException, ClassExpressionNotInProfileException, FreshEntitiesException, InconsistentOntologyException { + // TODO Auto-generated method stub + return false; + } + + @Override + public Node getUnsatisfiableClasses() throws ReasonerInterruptedException, TimeOutException, InconsistentOntologyException { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isEntailed(OWLAxiom axiom) + throws ReasonerInterruptedException, + UnsupportedEntailmentTypeException, TimeOutException, + AxiomNotInProfileException, FreshEntitiesException, + InconsistentOntologyException { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isEntailed(Set axioms) + throws ReasonerInterruptedException, + UnsupportedEntailmentTypeException, TimeOutException, + AxiomNotInProfileException, FreshEntitiesException, + InconsistentOntologyException { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isEntailmentCheckingSupported(AxiomType axiomType) { + // TODO Auto-generated method stub + return false; + } + + @Override + public Node getTopClassNode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getBottomClassNode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getSubClasses(OWLClassExpression ce, boolean direct) + throws ReasonerInterruptedException, TimeOutException, + FreshEntitiesException, InconsistentOntologyException, + ClassExpressionNotInProfileException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getSuperClasses(OWLClassExpression ce, + boolean direct) throws InconsistentOntologyException, + ClassExpressionNotInProfileException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getEquivalentClasses(OWLClassExpression ce) + throws InconsistentOntologyException, + ClassExpressionNotInProfileException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getDisjointClasses(OWLClassExpression ce) + throws ReasonerInterruptedException, TimeOutException, + FreshEntitiesException, InconsistentOntologyException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getTopObjectPropertyNode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getBottomObjectPropertyNode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getSubObjectProperties( + OWLObjectPropertyExpression pe, boolean direct) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getSuperObjectProperties( + OWLObjectPropertyExpression pe, boolean direct) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getEquivalentObjectProperties( + OWLObjectPropertyExpression pe) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getDisjointObjectProperties( + OWLObjectPropertyExpression pe) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getInverseObjectProperties( + OWLObjectPropertyExpression pe) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getObjectPropertyDomains( + OWLObjectPropertyExpression pe, boolean direct) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getObjectPropertyRanges( + OWLObjectPropertyExpression pe, boolean direct) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getTopDataPropertyNode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getBottomDataPropertyNode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getSubDataProperties(OWLDataProperty pe, + boolean direct) throws InconsistentOntologyException, + FreshEntitiesException, ReasonerInterruptedException, + TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getSuperDataProperties(OWLDataProperty pe, + boolean direct) throws InconsistentOntologyException, + FreshEntitiesException, ReasonerInterruptedException, + TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getEquivalentDataProperties(OWLDataProperty pe) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getDisjointDataProperties( + OWLDataPropertyExpression pe) throws InconsistentOntologyException, + FreshEntitiesException, ReasonerInterruptedException, + TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getDataPropertyDomains(OWLDataProperty pe, + boolean direct) throws InconsistentOntologyException, + FreshEntitiesException, ReasonerInterruptedException, + TimeOutException { + // TODO Auto-generated method stub + return null; + } + + private Map types = new HashMap(); + private OWLClassNodeSet thing; + + @Override + public NodeSet getTypes(OWLNamedIndividual ind, boolean direct) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException { + if (types.containsKey(ind)) return types.get(ind); + return thing; + } + + @Override + public NodeSet getInstances(OWLClassExpression ce, + boolean direct) throws InconsistentOntologyException, + ClassExpressionNotInProfileException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getObjectPropertyValues( + OWLNamedIndividual ind, OWLObjectPropertyExpression pe) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Set getDataPropertyValues(OWLNamedIndividual ind, + OWLDataProperty pe) throws InconsistentOntologyException, + FreshEntitiesException, ReasonerInterruptedException, + TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Node getSameIndividuals(OWLNamedIndividual ind) + throws InconsistentOntologyException, FreshEntitiesException, + ReasonerInterruptedException, TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NodeSet getDifferentIndividuals( + OWLNamedIndividual ind) throws InconsistentOntologyException, + FreshEntitiesException, ReasonerInterruptedException, + TimeOutException { + // TODO Auto-generated method stub + return null; + } + + @Override + public long getTimeOut() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public FreshEntityPolicy getFreshEntityPolicy() { + // TODO Auto-generated method stub + return null; + } + + @Override + public IndividualNodeSetPolicy getIndividualNodeSetPolicy() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void dispose() { + // TODO Auto-generated method stub + + } + +} diff --git a/test/uk/ac/ox/cs/pagoda/ore/PagodaReasonerFactory.java b/test/uk/ac/ox/cs/pagoda/ore/PagodaReasonerFactory.java new file mode 100644 index 0000000..8ecdf1d --- /dev/null +++ b/test/uk/ac/ox/cs/pagoda/ore/PagodaReasonerFactory.java @@ -0,0 +1,39 @@ +package uk.ac.ox.cs.pagoda.ore; + +import org.semanticweb.owlapi.model.OWLOntology; +import org.semanticweb.owlapi.reasoner.IllegalConfigurationException; +import org.semanticweb.owlapi.reasoner.OWLReasoner; +import org.semanticweb.owlapi.reasoner.OWLReasonerConfiguration; +import org.semanticweb.owlapi.reasoner.OWLReasonerFactory; + +public class PagodaReasonerFactory implements OWLReasonerFactory { + + @Override + public String getReasonerName() { + return "PAGOdA"; + } + + @Override + public OWLReasoner createNonBufferingReasoner(OWLOntology ontology) { + // TODO Auto-generated method stub + return null; + } + + @Override + public OWLReasoner createReasoner(OWLOntology ontology) { + return new PagodaOWLReasoner(ontology); + } + + @Override + public OWLReasoner createNonBufferingReasoner(OWLOntology ontology, OWLReasonerConfiguration config) throws IllegalConfigurationException { + // TODO Auto-generated method stub + return null; + } + + @Override + public OWLReasoner createReasoner(OWLOntology ontology, OWLReasonerConfiguration config) throws IllegalConfigurationException { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/test/uk/ac/ox/cs/pagoda/tester/ORETester.java b/test/uk/ac/ox/cs/pagoda/tester/ORETester.java deleted file mode 100644 index ae58ba9..0000000 --- a/test/uk/ac/ox/cs/pagoda/tester/ORETester.java +++ /dev/null @@ -1,21 +0,0 @@ -package uk.ac.ox.cs.pagoda.tester; - -import uk.ac.ox.cs.pagoda.reasoner.QueryReasoner; -import uk.ac.ox.cs.pagoda.util.Properties; - -public class ORETester { - - public static void main(String... args) { -// args = new String[] { "/home/yzhou/krr-nas-share/Yujiao/ontologies/ORE2014/DL/00a1118a-5420-46f0-b4b2-a2585165b28a_ePizza.owl" }; -// args = new String[] { "/home/yzhou/krr-nas-share/Yujiao/ontologies/ORE2014/DL/77de15c6-cc39-4960-a38a-e35e487d52b0_owl%2Fcoma" }; -// args = new String[] { "/home/yzhou/krr-nas-share/Yujiao/ontologies/ORE2014/DL/wine_nodatatype.owl" }; - -// args = new String[] { "/home/yzhou/krr-nas-share/Yujiao/ontologies/ORE2014/EL/b7700fe1-103b-4b32-a21c-f6604a763ba5_t-cell.owl" }; -// args = new String[] { "/home/yzhou/krr-nas-share/Yujiao/ontologies/ORE2014/EL/baa29363-f93c-4285-827e-0e2380c82efc_cations.n3" }; - - Properties properties = new Properties("config/sys.conf"); - QueryReasoner pagoda = QueryReasoner.getInstance(properties); - pagoda.dispose(); - } - -} -- cgit v1.2.3