I am trying to understand the cases where OWL classes "overlap" based on existential property restrictions.
No Intersection
Here there's no overlap in the number of name
properties each class has, so there can be no individuals that belong to both classes. The reasoner therefore infers their intersection to be unsatisfiable (equivalent to owl:Nothing).
# Declared
DataProperty: name
Class: A
SubClassOf:
name max 1 xsd:string
Class: B
SubClassOf:
name min 2 xsd:string
# Inferred (pseudocode)
(A and B)
EquivalentTo:
owl:Nothing
Proper Subclass
Here the restriction of one class completely includes the other's, so I would've thought the individuals of Person1
would be implied to belong to Person2
, and the reasoner would infer A is a subclass of B or infer that the class (A and not B) is unsatisfiable, but this does not happen. I'm looking for an explanation of why this is the case. Thanks!
# Declared
DataProperty: name
Class: A
SubClassOf:
name exactly 2 xsd:string
Class: B
SubClassOf:
name min 2 xsd:string
# Nothing Inferred