[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