protected static Role H(OWLDataPropertyExpression dataPropertyExpression) { return H((OWLDataProperty)dataPropertyExpression); } protected static Individual H(OWLNamedIndividual namedIndividual) {
protected static Role H(OWLDataPropertyExpression dataPropertyExpression) { return H((OWLDataProperty)dataPropertyExpression); } protected static Individual H(OWLNamedIndividual namedIndividual) {
protected static Role H(OWLObjectPropertyExpression objectPropertyExpression) { if (objectPropertyExpression instanceof OWLObjectProperty) return H((OWLObjectProperty)objectPropertyExpression); else return H(objectPropertyExpression.getNamedProperty()).getInverse(); } protected static AtomicRole H(OWLDataProperty dataProperty) {
protected static Role H(OWLObjectPropertyExpression objectPropertyExpression) { objectPropertyExpression=objectPropertyExpression.getSimplified(); if (objectPropertyExpression instanceof OWLObjectProperty) return H((OWLObjectProperty)objectPropertyExpression); else return H(objectPropertyExpression.getNamedProperty()).getInverse(); } protected static AtomicRole H(OWLDataProperty dataProperty) {
public boolean isSameIndividual(OWLNamedIndividual namedIndividual1,OWLNamedIndividual namedIndividual2) { checkPreConditions(namedIndividual1,namedIndividual2); if (!m_isConsistent) return true; if (m_dlOntology.getAllIndividuals().size()==0) return false; else { initialiseClassInstanceManager(); m_instanceManager.computeSameAsEquivalenceClasses(m_configuration.reasonerProgressMonitor); return m_instanceManager.isSameIndividual(H(namedIndividual1),H(namedIndividual2)); } } public Node<OWLNamedIndividual> getSameIndividuals(OWLNamedIndividual namedIndividual) {
protected HierarchyNode<Role> getHierarchyNode(OWLObjectPropertyExpression propertyExpression) { checkPreConditions(propertyExpression); classifyObjectProperties(); if (!m_isConsistent.booleanValue()) return m_objectRoleHierarchy.getBottomNode(); else { Role role=H(propertyExpression); HierarchyNode<Role> node=m_objectRoleHierarchy.getNodeForElement(role); if (node==null) node=new HierarchyNode<>(role,Collections.singleton(role),Collections.singleton(m_objectRoleHierarchy.getTopNode()),Collections.singleton(m_objectRoleHierarchy.getBottomNode())); return node; } }
protected HierarchyNode<AtomicRole> getHierarchyNode(OWLDataProperty property) { checkPreConditions(property); classifyDataProperties(); if (!m_isConsistent.booleanValue()) return m_dataRoleHierarchy.getBottomNode(); else { AtomicRole atomicRole=H(property); HierarchyNode<AtomicRole> node=m_dataRoleHierarchy.getNodeForElement(atomicRole); if (node==null) node=new HierarchyNode<>(atomicRole,Collections.singleton(atomicRole),Collections.singleton(m_dataRoleHierarchy.getTopNode()),Collections.singleton(m_dataRoleHierarchy.getBottomNode())); return node; } }
public boolean hasDataPropertyRelationship(OWLNamedIndividual subject,OWLDataProperty property,OWLLiteral object) { checkPreConditions(subject,property); if (!m_isConsistent) return true; OWLDataFactory factory=getDataFactory(); OWLAxiom notAssertion=factory.getOWLNegativeDataPropertyAssertionAxiom(property,subject,object); Tableau tableau=getTableau(notAssertion); boolean result=tableau.isSatisfiable(true,true,null,null,null,null,null,new ReasoningTaskDescription(true,"is {0} connected to {1} via {2}",H(subject),object,H(property))); tableau.clearAdditionalDLOntology(); return !result; } protected Set<HierarchyNode<AtomicConcept>> getDirectSuperConceptNodes(final Individual individual) {
protected HierarchyNode<Role> getHierarchyNode(OWLObjectPropertyExpression propertyExpression) { checkPreConditions(propertyExpression); classifyObjectProperties(); if (!m_isConsistent) return m_objectRoleHierarchy.getBottomNode(); else { Role role=H(propertyExpression); HierarchyNode<Role> node=m_objectRoleHierarchy.getNodeForElement(role); if (node==null) node=new HierarchyNode<Role>(role,Collections.singleton(role),Collections.singleton(m_objectRoleHierarchy.getTopNode()),Collections.singleton(m_objectRoleHierarchy.getBottomNode())); return node; } }
protected boolean isIrreflexive(OWLObjectPropertyExpression propertyExpression) { checkPreConditions(propertyExpression); if (!m_isConsistent.booleanValue()) return true; Role role=H(propertyExpression); Individual freshIndividual=Individual.createAnonymous("fresh-individual"); return !getTableau().isSatisfiable(false,Collections.singleton(role.getRoleAssertion(freshIndividual,freshIndividual)),null,null,null,null,new ReasoningTaskDescription(true,"irreflexivity of {0}",role)); } protected boolean isReflexive(OWLObjectPropertyExpression propertyExpression) {
protected HierarchyNode<AtomicRole> getHierarchyNode(OWLDataProperty property) { checkPreConditions(property); classifyDataProperties(); if (!m_isConsistent) return m_dataRoleHierarchy.getBottomNode(); else { AtomicRole atomicRole=H(property); HierarchyNode<AtomicRole> node=m_dataRoleHierarchy.getNodeForElement(atomicRole); if (node==null) node=new HierarchyNode<AtomicRole>(atomicRole,Collections.singleton(atomicRole),Collections.singleton(m_dataRoleHierarchy.getTopNode()),Collections.singleton(m_dataRoleHierarchy.getBottomNode())); return node; } }
protected boolean isInverseFunctional(OWLObjectPropertyExpression propertyExpression) { checkPreConditions(propertyExpression); if (!m_isConsistent.booleanValue()) return true; Role role=H(propertyExpression); Individual freshIndividual=Individual.createAnonymous("fresh-individual"); Individual freshIndividualA=Individual.createAnonymous("fresh-individual-A"); Individual freshIndividualB=Individual.createAnonymous("fresh-individual-B"); Set<Atom> assertions=new HashSet<>(); assertions.add(role.getRoleAssertion(freshIndividualA,freshIndividual)); assertions.add(role.getRoleAssertion(freshIndividualB,freshIndividual)); assertions.add(Atom.create(Inequality.INSTANCE,freshIndividualA,freshIndividualB)); return !getTableau().isSatisfiable(false,assertions,null,null,null,null,new ReasoningTaskDescription(true,"inverse-functionality of {0}",role)); } protected boolean isIrreflexive(OWLObjectPropertyExpression propertyExpression) {
protected boolean isFunctional(OWLDataProperty property) { checkPreConditions(property); if (!m_isConsistent.booleanValue()) return true; AtomicRole atomicRole=H(property); Individual freshIndividual=Individual.createAnonymous("fresh-individual"); Constant freshConstantA=Constant.createAnonymous("fresh-constant-A"); Constant freshConstantB=Constant.createAnonymous("fresh-constant-B"); Set<Atom> assertions=new HashSet<>(); assertions.add(atomicRole.getRoleAssertion(freshIndividual,freshConstantA)); assertions.add(atomicRole.getRoleAssertion(freshIndividual,freshConstantB)); assertions.add(Atom.create(Inequality.INSTANCE,freshConstantA,freshConstantB)); return !getTableau().isSatisfiable(false,assertions,null,null,null,null,new ReasoningTaskDescription(true,"functionality of {0}",atomicRole)); } protected HierarchyNode<AtomicRole> getHierarchyNode(OWLDataProperty property) {
protected boolean isIrreflexive(OWLObjectPropertyExpression propertyExpression) { checkPreConditions(propertyExpression); if (!m_isConsistent) return true; Role role=H(propertyExpression); Individual freshIndividual=Individual.createAnonymous("fresh-individual"); return !getTableau().isSatisfiable(false,Collections.singleton(role.getRoleAssertion(freshIndividual,freshIndividual)),null,null,null,null,new ReasoningTaskDescription(true,"irreflexivity of {0}",role)); } protected boolean isReflexive(OWLObjectPropertyExpression propertyExpression) {
protected boolean isFunctional(OWLDataProperty property) { checkPreConditions(property); if (!m_isConsistent) return true; AtomicRole atomicRole=H(property); Individual freshIndividual=Individual.createAnonymous("fresh-individual"); Constant freshConstantA=Constant.createAnonymous("fresh-constant-A"); Constant freshConstantB=Constant.createAnonymous("fresh-constant-B"); Set<Atom> assertions=new HashSet<Atom>(); assertions.add(atomicRole.getRoleAssertion(freshIndividual,freshConstantA)); assertions.add(atomicRole.getRoleAssertion(freshIndividual,freshConstantB)); assertions.add(Atom.create(Inequality.INSTANCE,freshConstantA,freshConstantB)); return !getTableau().isSatisfiable(false,assertions,null,null,null,null,new ReasoningTaskDescription(true,"functionality of {0}",atomicRole)); } protected HierarchyNode<AtomicRole> getHierarchyNode(OWLDataProperty property) {
protected boolean isFunctional(OWLObjectPropertyExpression propertyExpression) { checkPreConditions(propertyExpression); if (!m_isConsistent) return true; Role role=H(propertyExpression); Individual freshIndividual=Individual.createAnonymous("fresh-individual"); Individual freshIndividualA=Individual.createAnonymous("fresh-individual-A"); Individual freshIndividualB=Individual.createAnonymous("fresh-individual-B"); Set<Atom> assertions=new HashSet<Atom>(); assertions.add(role.getRoleAssertion(freshIndividual,freshIndividualA)); assertions.add(role.getRoleAssertion(freshIndividual,freshIndividualB)); assertions.add(Atom.create(Inequality.INSTANCE,freshIndividualA,freshIndividualB)); return !getTableau().isSatisfiable(false,assertions,null,null,null,null,new ReasoningTaskDescription(true,"functionality of {0}",role)); } protected boolean isInverseFunctional(OWLObjectPropertyExpression propertyExpression) {
protected boolean isAsymmetric(OWLObjectPropertyExpression propertyExpression) { checkPreConditions(propertyExpression); if (!m_isConsistent.booleanValue()) return true; OWLDataFactory factory=getDataFactory(); OWLIndividual freshIndividualA=factory.getOWLAnonymousIndividual("fresh-individual-A"); OWLIndividual freshIndividualB=factory.getOWLAnonymousIndividual("fresh-individual-B"); OWLAxiom assertion1=factory.getOWLObjectPropertyAssertionAxiom(propertyExpression,freshIndividualA,freshIndividualB); OWLAxiom assertion2=factory.getOWLObjectPropertyAssertionAxiom(propertyExpression.getInverseProperty(),freshIndividualA,freshIndividualB); Tableau tableau=getTableau(assertion1,assertion2); boolean result=tableau.isSatisfiable(true,null,null,null,null,null,new ReasoningTaskDescription(true,"asymmetry of {0}",H(propertyExpression))); tableau.clearAdditionalDLOntology(); return !result; } protected boolean isSymmetric(OWLObjectPropertyExpression propertyExpression) {
protected boolean isAsymmetric(OWLObjectPropertyExpression propertyExpression) { checkPreConditions(propertyExpression); if (!m_isConsistent) return true; OWLDataFactory factory=getDataFactory(); OWLIndividual freshIndividualA=factory.getOWLAnonymousIndividual("fresh-individual-A"); OWLIndividual freshIndividualB=factory.getOWLAnonymousIndividual("fresh-individual-B"); OWLAxiom assertion1=factory.getOWLObjectPropertyAssertionAxiom(propertyExpression,freshIndividualA,freshIndividualB); OWLAxiom assertion2=factory.getOWLObjectPropertyAssertionAxiom(propertyExpression.getInverseProperty(),freshIndividualA,freshIndividualB); Tableau tableau=getTableau(assertion1,assertion2); boolean result=tableau.isSatisfiable(true,null,null,null,null,null,new ReasoningTaskDescription(true,"asymmetry of {0}",H(propertyExpression))); tableau.clearAdditionalDLOntology(); return !result; } protected boolean isSymmetric(OWLObjectPropertyExpression propertyExpression) {