b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiupackage de.unibremen.informatik.FactProver;
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu
53680982da7898ae889870da416205a85f0bffadJens Elknerimport java.util.Iterator;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport java.util.Set;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport java.util.TreeSet;
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiuimport org.semanticweb.owlapi.apibinding.OWLManager;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.IRI;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLAnnotationAssertionAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLAnnotationAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLAnnotationPropertyDomainAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLAnnotationPropertyRangeAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLAsymmetricObjectPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLClass;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLClassAssertionAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLClassAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLClassExpression;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDataProperty;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDataPropertyAssertionAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDataPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDataPropertyCharacteristicAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDataPropertyDomainAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDataPropertyExpression;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDataPropertyRangeAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDatatypeDefinitionAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDeclarationAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDifferentIndividualsAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDisjointClassesAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDisjointDataPropertiesAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDisjointObjectPropertiesAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLDisjointUnionAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLEquivalentClassesAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLEquivalentDataPropertiesAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLEquivalentObjectPropertiesAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLFunctionalDataPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLFunctionalObjectPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLIndividual;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLIndividualAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLInverseFunctionalObjectPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLInverseObjectPropertiesAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLIrreflexiveObjectPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLLiteral;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLLogicalAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLNamedIndividual;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLNaryAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLNaryClassAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLNaryIndividualAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLNaryPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLNegativeDataPropertyAssertionAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLNegativeObjectPropertyAssertionAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLObjectProperty;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLObjectPropertyAssertionAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLObjectPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLObjectPropertyCharacteristicAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLObjectPropertyDomainAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLObjectPropertyExpression;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLObjectPropertyRangeAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLOntology;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLOntologyCreationException;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLOntologyManager;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLPropertyAssertionAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLPropertyDomainAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLPropertyRangeAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLReflexiveObjectPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLSameIndividualAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLSubAnnotationPropertyOfAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLSubClassOfAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLSubDataPropertyOfAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLSubObjectPropertyOfAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLSubPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLSubPropertyChainOfAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLSymmetricObjectPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLTransitiveObjectPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.OWLUnaryPropertyAxiom;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.model.SWRLRule;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.reasoner.BufferingMode;
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiuimport org.semanticweb.owlapi.reasoner.Node;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.reasoner.NodeSet;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport org.semanticweb.owlapi.reasoner.SimpleConfiguration;
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu
53680982da7898ae889870da416205a85f0bffadJens Elknerimport uk.ac.manchester.cs.factplusplus.FaCTPlusPlusException;
53680982da7898ae889870da416205a85f0bffadJens Elknerimport uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasoner;
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu
53680982da7898ae889870da416205a85f0bffadJens Elknerpublic class FactProver {
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu private IRI iri;
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu private FaCTPlusPlusReasoner reasoner;
53680982da7898ae889870da416205a85f0bffadJens Elkner private OWLAxiom goal;
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu
53680982da7898ae889870da416205a85f0bffadJens Elkner public FactProver(IRI iri)
53680982da7898ae889870da416205a85f0bffadJens Elkner throws OWLOntologyCreationException, FaCTPlusPlusException
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu {
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu this.iri = iri;
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLOntology ontology =
53680982da7898ae889870da416205a85f0bffadJens Elkner manager.loadOntologyFromOntologyDocument(this.iri);
53680982da7898ae889870da416205a85f0bffadJens Elkner this.reasoner = new FaCTPlusPlusReasoner(ontology,
53680982da7898ae889870da416205a85f0bffadJens Elkner new SimpleConfiguration(), BufferingMode.BUFFERING);
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu }
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu
53680982da7898ae889870da416205a85f0bffadJens Elkner public void loadGoal(IRI giri) throws OWLOntologyCreationException {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLOntology ontology = manager.loadOntologyFromOntologyDocument(giri);
53680982da7898ae889870da416205a85f0bffadJens Elkner Set<OWLAxiom> axioms = ontology.getAxioms();
53680982da7898ae889870da416205a85f0bffadJens Elkner for (Iterator<OWLAxiom> i = axioms.iterator(); i.hasNext();) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLAxiom ax = i.next();
53680982da7898ae889870da416205a85f0bffadJens Elkner if (ax instanceof OWLDeclarationAxiom)
53680982da7898ae889870da416205a85f0bffadJens Elkner i.remove();
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (axioms.size() == 1) {
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<OWLAxiom> it = axioms.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner this.goal = it.next();
53680982da7898ae889870da416205a85f0bffadJens Elkner } else {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new OWLOntologyCreationException("Too many axioms for conjecture");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner }
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu
53680982da7898ae889870da416205a85f0bffadJens Elkner public boolean prove() throws FaCTPlusPlusException {
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLObjectPropertyAssertionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyAssertionAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLObjectPropertyAssertionAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIndividual object = g.getObject();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIndividual subject = g.getSubject();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyExpression prop = g.getProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLNamedIndividual> ind = reasoner
53680982da7898ae889870da416205a85f0bffadJens Elkner .getObjectPropertyValues(object.asOWLNamedIndividual(), prop);
53680982da7898ae889870da416205a85f0bffadJens Elkner return ind.containsEntity(subject.asOWLNamedIndividual());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLClassAssertionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLClassAssertionAxiom g = (OWLClassAssertionAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLClassExpression cls = g.getClassExpression();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIndividual indi = g.getIndividual();
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLClass> n =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getTypes(indi.asOWLNamedIndividual(), true);
53680982da7898ae889870da416205a85f0bffadJens Elkner return n.containsEntity(cls.asOWLClass());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDataPropertyAssertionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLDataPropertyAssertionAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLDataPropertyAssertionAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLDataProperty prop = g.getProperty().asOWLDataProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLLiteral obj = g.getObject();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIndividual sub = g.getSubject();
53680982da7898ae889870da416205a85f0bffadJens Elkner Set<OWLLiteral> litset = reasoner
53680982da7898ae889870da416205a85f0bffadJens Elkner .getDataPropertyValues(sub.asOWLNamedIndividual(), prop);
53680982da7898ae889870da416205a85f0bffadJens Elkner return litset.contains(obj);
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLEquivalentClassesAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLEquivalentClassesAxiom g = (OWLEquivalentClassesAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLClassExpression[] cls = g.getClassExpressions()
53680982da7898ae889870da416205a85f0bffadJens Elkner .toArray(new OWLClassExpression[g.getClassExpressions().size()]);
53680982da7898ae889870da416205a85f0bffadJens Elkner boolean res = true;
53680982da7898ae889870da416205a85f0bffadJens Elkner for (int i = 0; i < cls.length; i++ ) {
53680982da7898ae889870da416205a85f0bffadJens Elkner for (int j = 0; j < cls.length; j++ ) {
53680982da7898ae889870da416205a85f0bffadJens Elkner if (i != j) {
53680982da7898ae889870da416205a85f0bffadJens Elkner Node<OWLClass> c =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getEquivalentClasses(cls[i]);
53680982da7898ae889870da416205a85f0bffadJens Elkner res &= c.contains(cls[j].asOWLClass());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner return res;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLSubClassOfAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLSubClassOfAxiom g = (OWLSubClassOfAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLClassExpression sub = g.getSubClass();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLClassExpression top = g.getSuperClass();
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLClass> c = reasoner.getSubClasses(top, true);
53680982da7898ae889870da416205a85f0bffadJens Elkner return c.containsEntity(sub.asOWLClass());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDataPropertyRangeAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("Fact++ cannot determine data ranges!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDataPropertyDomainAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLDataPropertyDomainAxiom g = (OWLDataPropertyDomainAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLDataProperty prop = g.getProperty().asOWLDataProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLClassExpression d = g.getDomain();
53680982da7898ae889870da416205a85f0bffadJens Elkner boolean res = false;
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLClass> dom = reasoner.getDataPropertyDomains(prop, true);
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<Node<OWLClass>> it = dom.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner while (it.hasNext()) {
53680982da7898ae889870da416205a85f0bffadJens Elkner Node<OWLClass> cur = it.next();
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<OWLClass> itt = cur.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner while (itt.hasNext()) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLClass c = itt.next();
53680982da7898ae889870da416205a85f0bffadJens Elkner Node<OWLClass> cl = reasoner.getEquivalentClasses(c);
53680982da7898ae889870da416205a85f0bffadJens Elkner if (cl.contains(d.asOWLClass()))
53680982da7898ae889870da416205a85f0bffadJens Elkner res = true;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner return res;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLSubDataPropertyOfAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLSubDataPropertyOfAxiom g = (OWLSubDataPropertyOfAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLDataProperty sub = g.getSubProperty().asOWLDataProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLDataProperty sup = g.getSuperProperty().asOWLDataProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner boolean res = false;
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLDataProperty> sups =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getSuperDataProperties(sub, true);
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<Node<OWLDataProperty>> it = sups.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner while (it.hasNext()) {
53680982da7898ae889870da416205a85f0bffadJens Elkner Node<OWLDataProperty> cur = it.next();
53680982da7898ae889870da416205a85f0bffadJens Elkner if (cur.contains(sup))
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu res = true;
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu }
53680982da7898ae889870da416205a85f0bffadJens Elkner return res;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLAsymmetricObjectPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("Fact++ cannot determine antisymmetry!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLAnnotationAssertionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLAnnotationAssertionAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLAnnotationAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLAnnotationAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLAnnotationPropertyDomainAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLAnnotationPropertyDomainAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLAnnotationPropertyRangeAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLAnnotationPropertyRangeAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLClassAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLClassAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDataPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLDataPropertyAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDataPropertyCharacteristicAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLDataPropertyCharacteristicAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDatatypeDefinitionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLDatatypeDefinitionAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDeclarationAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner return true;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDifferentIndividualsAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLDifferentIndividualsAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDisjointClassesAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLDisjointClassesAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDisjointDataPropertiesAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLDisjointDataPropertiesAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDisjointObjectPropertiesAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLDisjointObjectPropertiesAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLDisjointUnionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLDisjointUnionAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLIndividualAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLIndividualAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLLogicalAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLLogicalAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLNaryAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLNaryAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLNaryClassAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLNaryClassAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLNaryIndividualAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLNaryIndividualAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLNaryPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLNaryPropertyAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLObjectPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLObjectPropertyAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLObjectPropertyCharacteristicAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLObjectPropertyCharacteristicAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLPropertyAssertionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLPropertyAssertionAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLPropertyAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLPropertyDomainAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLPropertyDomainAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLPropertyRangeAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLPropertyRangeAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLSameIndividualAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLSameIndividualAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLSubAnnotationPropertyOfAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLSubAnnotationPropertyOfAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLSubPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLSubPropertyAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLSubPropertyChainOfAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLSubPropertyChainOfAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLUnaryPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process OWLUnaryPropertyAxiom!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof SWRLRule) {
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("FaCT++ cannot process SWRLRule!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLEquivalentDataPropertiesAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLEquivalentDataPropertiesAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLEquivalentDataPropertiesAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner Set<OWLDataPropertyExpression> props = g.getProperties();
53680982da7898ae889870da416205a85f0bffadJens Elkner TreeSet<OWLDataProperty> p = new TreeSet<OWLDataProperty>();
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<OWLDataPropertyExpression> it = props.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner p.clear();
53680982da7898ae889870da416205a85f0bffadJens Elkner while (it.hasNext()) {
53680982da7898ae889870da416205a85f0bffadJens Elkner p.add(it.next().asOWLDataProperty());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner boolean res = true;
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<OWLDataProperty> itt = p.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner while (itt.hasNext()) {
53680982da7898ae889870da416205a85f0bffadJens Elkner Node<OWLDataProperty> cur =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getEquivalentDataProperties(itt.next());
53680982da7898ae889870da416205a85f0bffadJens Elkner Set<OWLDataProperty> scur = cur.getEntities();
53680982da7898ae889870da416205a85f0bffadJens Elkner res &= scur.containsAll(props);
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner return res;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLEquivalentObjectPropertiesAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLEquivalentObjectPropertiesAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLEquivalentObjectPropertiesAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner Set<OWLObjectPropertyExpression> props = g.getProperties();
53680982da7898ae889870da416205a85f0bffadJens Elkner TreeSet<OWLObjectPropertyExpression> p =
53680982da7898ae889870da416205a85f0bffadJens Elkner new TreeSet<OWLObjectPropertyExpression>();
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<OWLObjectPropertyExpression> it = props.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner p.clear();
53680982da7898ae889870da416205a85f0bffadJens Elkner while (it.hasNext()) {
53680982da7898ae889870da416205a85f0bffadJens Elkner p.add(it.next());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner boolean res = true;
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<OWLObjectPropertyExpression> itt = p.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner while (itt.hasNext()) {
53680982da7898ae889870da416205a85f0bffadJens Elkner Node<OWLObjectPropertyExpression> cur =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getEquivalentObjectProperties(itt.next());
53680982da7898ae889870da416205a85f0bffadJens Elkner Set<OWLObjectPropertyExpression> scur = cur.getEntities();
53680982da7898ae889870da416205a85f0bffadJens Elkner res &= scur.containsAll(props);
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner return res;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLFunctionalDataPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLFunctionalDataPropertyAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLFunctionalDataPropertyAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLDataProperty prop = g.getProperty().asOWLDataProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner return prop.isFunctional(reasoner.getRootOntology());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLFunctionalObjectPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLFunctionalObjectPropertyAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLFunctionalObjectPropertyAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectProperty prop = g.getProperty().asOWLObjectProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner return prop.isFunctional(reasoner.getRootOntology());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLInverseFunctionalObjectPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLInverseFunctionalObjectPropertyAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLInverseFunctionalObjectPropertyAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectProperty prop = g.getProperty().asOWLObjectProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner return prop.isInverseFunctional(reasoner.getRootOntology());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLInverseObjectPropertiesAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLInverseObjectPropertiesAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLInverseObjectPropertiesAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyExpression fst = g.getFirstProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyExpression snd = g.getSecondProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner Node<OWLObjectPropertyExpression> is =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getInverseObjectProperties(fst);
53680982da7898ae889870da416205a85f0bffadJens Elkner boolean res = false;
53680982da7898ae889870da416205a85f0bffadJens Elkner if (is.contains(snd)) {
53680982da7898ae889870da416205a85f0bffadJens Elkner res = true;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner return res;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLIrreflexiveObjectPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIrreflexiveObjectPropertyAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLIrreflexiveObjectPropertyAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner return g.getProperty().asOWLObjectProperty()
53680982da7898ae889870da416205a85f0bffadJens Elkner .isIrreflexive(reasoner.getRootOntology());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLNegativeDataPropertyAssertionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLNegativeDataPropertyAssertionAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLNegativeDataPropertyAssertionAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIndividual sub = g.getSubject();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLLiteral obj = g.getObject();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLDataProperty p = g.getProperty().asOWLDataProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner Set<OWLLiteral> slit =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getDataPropertyValues(sub.asOWLNamedIndividual(), p);
53680982da7898ae889870da416205a85f0bffadJens Elkner return slit.contains(obj);
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLNegativeObjectPropertyAssertionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLNegativeObjectPropertyAssertionAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLNegativeObjectPropertyAssertionAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIndividual sub = g.getSubject();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIndividual obj = g.getObject();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectProperty p = g.getProperty().asOWLObjectProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLNamedIndividual> ind =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getObjectPropertyValues(obj.asOWLNamedIndividual(), p);
53680982da7898ae889870da416205a85f0bffadJens Elkner return ind.containsEntity(sub.asOWLNamedIndividual());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLObjectPropertyAssertionAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyAssertionAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLObjectPropertyAssertionAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIndividual sub = g.getSubject();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLIndividual obj = g.getObject();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectProperty p = g.getProperty().asOWLObjectProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLNamedIndividual> ind =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getObjectPropertyValues(obj.asOWLNamedIndividual(), p);
53680982da7898ae889870da416205a85f0bffadJens Elkner return ind.containsEntity(sub.asOWLNamedIndividual());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLObjectPropertyDomainAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyDomainAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLObjectPropertyDomainAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyExpression prop = g.getProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLClassExpression dom = g.getDomain();
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLClass> doms =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getObjectPropertyDomains(prop, true);
53680982da7898ae889870da416205a85f0bffadJens Elkner boolean res = false;
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<Node<OWLClass>> it = doms.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner while (it.hasNext()) {
53680982da7898ae889870da416205a85f0bffadJens Elkner Node<OWLClass> cur = it.next();
53680982da7898ae889870da416205a85f0bffadJens Elkner if (cur.contains(dom.asOWLClass())) {
53680982da7898ae889870da416205a85f0bffadJens Elkner res = true;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner return res;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLObjectPropertyRangeAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyRangeAxiom g = (OWLObjectPropertyRangeAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyExpression prop = g.getProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLClass ran = g.getRange().asOWLClass();
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLClass> rns =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getObjectPropertyRanges(prop, true);
53680982da7898ae889870da416205a85f0bffadJens Elkner return rns.containsEntity(ran);
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLSubObjectPropertyOfAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLSubObjectPropertyOfAxiom g = (OWLSubObjectPropertyOfAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyExpression sub = g.getSubProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectPropertyExpression sup = g.getSuperProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner NodeSet<OWLObjectPropertyExpression> subs =
53680982da7898ae889870da416205a85f0bffadJens Elkner reasoner.getSubObjectProperties(sup, true);
53680982da7898ae889870da416205a85f0bffadJens Elkner boolean res = false;
53680982da7898ae889870da416205a85f0bffadJens Elkner Iterator<Node<OWLObjectPropertyExpression>> it = subs.iterator();
53680982da7898ae889870da416205a85f0bffadJens Elkner while (it.hasNext()) {
53680982da7898ae889870da416205a85f0bffadJens Elkner Node<OWLObjectPropertyExpression> cur = it.next();
53680982da7898ae889870da416205a85f0bffadJens Elkner if (cur.contains(sub)) {
53680982da7898ae889870da416205a85f0bffadJens Elkner res = true;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner return res;
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLReflexiveObjectPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLReflexiveObjectPropertyAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLReflexiveObjectPropertyAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectProperty prop = g.getProperty().asOWLObjectProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner return prop.isReflexive(reasoner.getRootOntology());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLSymmetricObjectPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLSymmetricObjectPropertyAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLSymmetricObjectPropertyAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectProperty prop = g.getProperty().asOWLObjectProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner return prop.isSymmetric(reasoner.getRootOntology());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner if (goal instanceof OWLTransitiveObjectPropertyAxiom) {
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLTransitiveObjectPropertyAxiom g =
53680982da7898ae889870da416205a85f0bffadJens Elkner (OWLTransitiveObjectPropertyAxiom) goal;
53680982da7898ae889870da416205a85f0bffadJens Elkner OWLObjectProperty prop = g.getProperty().asOWLObjectProperty();
53680982da7898ae889870da416205a85f0bffadJens Elkner return prop.isTransitive(reasoner.getRootOntology());
53680982da7898ae889870da416205a85f0bffadJens Elkner }
53680982da7898ae889870da416205a85f0bffadJens Elkner System.out.println(goal);
53680982da7898ae889870da416205a85f0bffadJens Elkner throw new FaCTPlusPlusException("No reasoner found, sorry!");
53680982da7898ae889870da416205a85f0bffadJens Elkner }
b3801e7f361759d6748a661df75c01c084299c67Francisc Nicolae Bungiu}