[DL] How does one handle multiple parents while still controlling disjointness?
William Fitzgerald
wfitzgerald at tssg.org
Fri Oct 9 20:58:04 CEST 2009
Dear Experts,
A modelling question based on your experience.
What is normal practice when, for the most part you desire that two
sibling classes and their associated subclasses be disjoint except for
one or two subclasses that have both sibling classes as parents, in
which case they are not disjoint!
Consider two parent classes ClassA and ClassB.
ClassA:
ClassA1 subClassOf ClassA
ClassA2 subClassOf ClassA
ClassA3 subClassOf ClassA
ClassAB subClassOf ClassA
All subclasses of ClassA are disjoint
ClassB:
ClassB1 subclass of ClassB
ClassB2 subclass of ClassB
ClassAB subClassOf ClassB
All subclasses of ClassB are disjoint
There is a common class called ClassAB common to both ClassA and ClassB.
Modelling Question:
Because of the poly-hierarchy, ClassA and ClassB cannot be disjoint. No
issue here.
However, how does one prevent the possibility of instances of, for
example, classA1 becoming instances of ClassB1 or ClassB in general?
If the poly-hierarchy did not exist, then this is easily done by making
ClassA and ClassB disjoint.
What do DL knowledge engineers do in this case?
Do you:
1) ignore/abstract away from the possibility of instances of one class
being members of another? Thereby sticking to the above class hierarchy.
2) Manually assert cross-class disjointness. That is, along with stating
that all subclasses of ClassA are disjoint, one now has to also say that
ClassA1 isDisjointTo ClassB1 or perhaps even ClassB (might be a shorter
route) and so forth. My guess is that, its not feasible if there are
hundreds of classes!
3) Define a new class on the same hierarchy level (sibling class) as
ClassA and ClassB called ClassCommonAB. Then set ClassAB as a subclass
of ClassCommonAB only and remove ClassAB from ClassA and ClassB.
That is:
ClassA:
ClassA1 subClassOf ClassA
ClassA2 subClassOf ClassA
All subclasses of ClassA are disjoint
ClassB:
ClassB1 subclass of ClassB
ClassB2 subclass of ClassB
ClassCommonAB:
ClassAB
ClassA, ClassB and ClassCommonAB are all disjoint.
While this approach now allows for totally disjointness, that is,
members of ClassA1 are not also members of ClassA2 nor ClassB nor
ClassAB. Perfect!
However, this approach also has its downside in that ClassAB has now no
meaningful connection to ClassA or ClassB!
kind regards,
Will.
More information about the dl
mailing list