[DL] How does one handle multiple parents while still controlling disjointness?

Franz Baader baader at tcs.inf.tu-dresden.de
Thu Oct 15 13:45:09 CEST 2009


The solutions proposed by Uli Sattler work, but in principle this kind
of hierarchy engineering is against the "spirit of DLs". The idea is
that you use the expressive power of the DL to DEFINE the concepts.
Subclass relationships and disjointness relationships then follow from
these definitions (and can be computed by the DL reasoner).

Best regards,

-Franz Baader

On Fri, Oct 9, 2009 at 8:58 PM, William Fitzgerald <wfitzgerald at tssg.org> wrote:
> 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.
>
> ---
> **  You received this mail via the description logic mailing list; for more
>  **
> **  information, visit the description logic homepage at http://dl.kr.org/.
>  **
>



More information about the dl mailing list