Under some conditions, the vocabulary bundle closure algorithm fails to assert disjointness among classes that are clearly disjoint under the disjointness policy (i.e., having no common named subclass).
Steps to Reproduce
Consider this example taxonomy extracted from KerML:
It is evident on inspection that Performance and Object share no common subclass and should therefore be found disjoint. If we create a vocabulary bundle for this example and create a description bundle with an instance typed by both Performance and Object, the reasoner finds the ontology consistent.
Expected Behavior
The ontology should be found inconsistent.
Analysis
The vocabulary bundle closure algorithm transforms the original taxonomy into this tree:
The disjointness axioms generated by vocabulary bundle closure are as follows:
Disjoint Children of Transfer ∖ (FlowTransferBefore ∪ TransferBefore):
FlowTransfer
MessageTransfer ∖ FlowTransferBefore
It is not obvious whether these axioms imply disjointness of Performance and Object, but the reasoner result indicates they do not.
The problem is that the current bundle closure algorithm emits only the disjointness axioms. The subclass relations in the transformed tree, however, are not mere rearrangements of the original. Instead they express an alternate representation of the taxonomy resulting from having applied the disjointness policy. The transformed tree conveys important information about disjointness.
The fix is straightforward. The OML-to-OWL converter invokes vocabulary bundle closure and emits the disjointness axioms by traversing the transformed tree. It is a simple matter to also emit subclass axioms at each vertex. With this change in place, the reasoner finds the expected inconsistency.
Description
Under some conditions, the vocabulary bundle closure algorithm fails to assert disjointness among classes that are clearly disjoint under the disjointness policy (i.e., having no common named subclass).
Steps to Reproduce
Consider this example taxonomy extracted from KerML:
It is evident on inspection that Performance and Object share no common subclass and should therefore be found disjoint. If we create a vocabulary bundle for this example and create a description bundle with an instance typed by both Performance and Object, the reasoner finds the ontology consistent.
Expected Behavior
The ontology should be found inconsistent.
Analysis
The vocabulary bundle closure algorithm transforms the original taxonomy into this tree:
The disjointness axioms generated by vocabulary bundle closure are as follows:
It is not obvious whether these axioms imply disjointness of Performance and Object, but the reasoner result indicates they do not.
The problem is that the current bundle closure algorithm emits only the disjointness axioms. The subclass relations in the transformed tree, however, are not mere rearrangements of the original. Instead they express an alternate representation of the taxonomy resulting from having applied the disjointness policy. The transformed tree conveys important information about disjointness.
The fix is straightforward. The OML-to-OWL converter invokes vocabulary bundle closure and emits the disjointness axioms by traversing the transformed tree. It is a simple matter to also emit subclass axioms at each vertex. With this change in place, the reasoner finds the expected inconsistency.