Galigator / openllet

Openllet is an OWL 2 reasoner in Java, build on top of Pellet.
https://www.w3.org/TR/owl2-primer/
Other
96 stars 26 forks source link

Wrong DisjointClass(A,B) inferred if the ontology includes a Subclass(A, ObjectComplementOf(B)) #74

Closed iamcrowd closed 2 years ago

iamcrowd commented 2 years ago

I loaded a toy ontology with the axiom:

Subclass(Adult, ObjectComplementOf(Minor))

After reasoning I got the following inferences:

DisjointClasses(Minor, owl:Nothing) DisjointClasses(Adult, Minor) DisjointClasses(Adult, owl:Nothing) SubClassOf(Minor, owl:Thing) DisjointClasses(owl:Nothing owl:Thing) SubClassOf(Adult, owl:Thing)

However, Subclass(A, ObjectComplementOf(B)) does not imply DisjointClasses(Adult, Minor).

I checked by loading my owl in Protege and such a disjoint is not inferred there either.

ignazio1977 commented 2 years ago

If Adult is a subclass of the complement of Minor, Adult and Minor are disjoint (all instances of Adult are not Minor, and vice versa). Bug would be in Protege not showing that, I assume.

iamcrowd commented 2 years ago

oh you are right. I just checked again the OWL specs. My mistake we take Protege as an "oracle". Thanks for the quick reply. Germán