3.org/TR/owl2-syntax/">OWL 2 Functional Syntax is given in order to capture notions like a class being a "direct" subclass of another class.
StrictSubClassOf
Given two class expressions {@code CE1} and{@code CE2} and an ontology {@code O}, {@code CE1} is a strict subclass of{@code CE2}, written {@code StrictSubClassOf(CE1 CE2)} if {@code O} entails{@code SubClassOf(CE1 CE2)} and {@code O} does not entail{@code SubClassOf(CE2 CE1)}
DirectSubClassOf
Given two class expressions {@code CE1} and{@code CE2} and an ontology {@code O}, {@code CE1} is a
directsubclass of {@code CE2}, written {@code DirectSubClassOf(CE1 CE2)}, with respect to {@code O} if {@code O} entails {@code StrictSubClassOf(CE1 CE2)}and there is no class name {@code C} in the signature of {@code O} such that{@code O} entails {@code StrictSubClassOf(CE1 C)} and {@code O} entails{@code StrictSubClassOf(C CE2)}.
StrictSubObjectPropertyOf
Given two object property expressions {@code OPE1} and {@code OPE2} and an ontology {@code O}, {@code OPE1} is astrict subproperty of {@code OPE2}, written {@code StrictSubObjectPropertyOf(OPE1 OPE2)} if {@code O} entails{@code SubObjectPropertyOf(OPE1 OPE2)} and {@code O} does not entail{@code SubObjectPropertyOf(OPE2 OPE1)}
DirectSubObjectPropertyOf
Given two object property expressions {@code OPE1} and {@code OPE2} and an ontology {@code O}, {@code OPE1} is a
direct subproperty of {@code OPE2}, written {@code DirectSubObjectPropertyOf(OPE1 OPE2)}, with respect to {@code O} if{@code O} entails {@code StrictSubObjectPropertyOf(OPE1 OPE2)} and there isno object property name {@code P} in the signature of {@code O} such that{@code O} entails {@code StrictSubObjectPropertyOf(OPE1 P)} and {@code O}entails {@code StrictSubObjectPropertyOf(P OPE2)}.
StrictSubDataPropertyOf
Given two dbject property expressions {@code DPE1} and {@code DPE2} and an ontology {@code O}, {@code DPE1} is astrict subproperty of {@code DPE2}, written {@code StrictSubDataPropertyOf(DPE1 DPE2)} if {@code O} entails{@code SubDataPropertyOf(DPE1 DPE2)} and {@code O} does not entail{@code SubDataPropertyOf(DPE1 DPE2)}
DirectSubDataPropertyOf
Given two data property expressions {@code DPE1} and {@code DPE2} and an ontology {@code O}, {@code DPE1} is a
direct subproperty of {@code DPE2}, written {@code DirectSubDataPropertyOf(DPE1 DPE2)}, with respect to {@code O} if{@code O} entails {@code StrictSubDataPropertyOf(DPE1 DPE2)} and there is nodata property name {@code P} in the signature of {@code O} such that{@code O} entails {@code StrictSubDataPropertyOf(DPE1 P)} and {@code O}entails {@code StrictSubDataPropertyOf(P DPE2)}.
DirectClassAssertion
Given an individual {@code j} and a classexpression {@code CE} and an ontology {@code O}, {@code CE} is a direct classassertion (type) for {@code j}, written {@code DirectClassAssertion(CE j)}, if {@code O} entails {@code ClassAssertion(CE j)} and there is no class name{@code C} in the signature of {@code O} such that {@code O} entails{@code ClassAssertion(C j)} and {@code O} entails{@code StrictSubClassOf(C CE)}.
ObjectPropertyComplementOf
Given an object property expression {@code pe}, the object property complement of {@code pe} is written as {@code ObjectPropertyComplementOf(pe)}. The interpretation of {@code ObjectPropertyComplementOf(pe)} is equal to theinterpretation of {@code owl:topObjectProperty} minus the interpretation of{@code pe}. In other words, {@code ObjectPropertyComplementOf(pe)} is the setof pairs of individuals that are not in {@code pe}.
DataPropertyComplementOf
Given a data property expression {@code pe} ,the data property complement of {@code pe} is written as{@code DataPropertyComplementOf(pe)}. The interpretation of {@code DataPropertyComplementOf(pe)} is equal to the interpretation of{@code owl:topDataProperty} minus the interpretation of {@code pe}. In other words, {@code DataPropertyComplementOf(pe)} is the set of pairs of individualand literals that are not in {@code pe}.
Simplified Object Property Expression
A simplified object property expression is either a named property {@code P}, or an object inverse property of the form {@code ObjectInverseOf(P)} where {@code P} is a named property. In otherwords, there is no nesting of {@code ObjectInverseOf} operators.
ErrorHandling
An {@code OWLReasoner} may throw the following exceptions toindicate errors. More documentation for each type of exception can be found on the particular exception class.
- {@link org.semanticweb.owlapi.reasoner.AxiomNotInProfileException}
- {@link org.semanticweb.owlapi.reasoner.ClassExpressionNotInProfileException}
- {@link org.semanticweb.owlapi.reasoner.FreshEntitiesException}
- {@link org.semanticweb.owlapi.reasoner.InconsistentOntologyException}
- {@link org.semanticweb.owlapi.reasoner.TimeOutException}
- {@link org.semanticweb.owlapi.reasoner.ReasonerInterruptedException}
- {@link org.semanticweb.owlapi.reasoner.UnsupportedEntailmentTypeException}
- {@link org.semanticweb.owlapi.reasoner.ReasonerInternalException}
Note that {@link org.semanticweb.owlapi.reasoner.ReasonerInternalException}may be throw by any of the reasoner methods below.
@author Matthew Horridge, The University of Manchester, InformationManagement Group
@since 3.0.0