- From: patrick hayes <phayes@ai.uwf.edu>
- Date: Sat, 18 May 2002 22:00:22 -0500
- To: "Christopher Welty" <welty@us.ibm.com>
- Cc: www-webont-wg@w3.org
>In my PhD. thesis which used Classic to represent a simply ontology of >object-oriented program constructs, I pointed out three subtle but >important differences in the way description logics and object-oriented >languages structure and represent information. While the semantics of UML >is still not completely clear, the link to OO languages has set a de-facto >semantics on the subclass relation (unfortunately called "inheritance" in >that community). Most of this de-facto semantics comes from the way UML >tools generate code in OO languages such as Java and especially C++. >Unfortunately, this semantics is not logical. > >The more obvious of the three differences is that there is no notion of >"primitive" vs. "defined" classes as there is in DLs. Generally, >primitive classes state only-necessary conditions and defined classes >state necessary and sufficient conditions for class membership. In this >sense, all OO classes are DL primitive-classes. There is no notation in >UML to make such a differentiation. I find this distinction logically meaningless. That is, the distinction between the two kinds of conditions is meaningful, of course; but that is a distinction between two kinds of assertion about classes, not about two kinds of *class*. Classes are just sets, and there is only one kind of set. If I give you necessary conditions for membership a set, then later give you some more information about it so that you now have necessary and sufficient conditions on membership in the set, the set itself has not changed, only what you know about it. >The second difference is that "associations" in UML are not global. They >explicitly link two classes, thus defining both domain and range >restrictions. A more subtle point, however, is that in the negative case >- that is the case in which an association is not present in a class - the >association CAN NOT be present on instances of the class. This may seem >like an obvious extension of the previous point about domain/range >restrictions, except in the presence of the final difference. > >The final difference is in the way the introduction of associations is >treated in subclasses. This is the most confusing point, and does not fit >into any intuitive logical understanding of the subclass relation. >Normally, we think of subclass to be, quite simply, if P is a subclass of >Q, then, logically (using the KIF FOL serialization): (FORALL x (=> (P x) >(Q x))). So if we defined class Q such that all instances have an >association R1, we implicitly define that all instances of P have the >association R1. HOWEVER: if we define class P (the subclass) such that >all instances of P have an association R2, instances of Q that are not >instances of P CAN NOT have the association R2. So, "direct instances" of >Q (the superclass) can not have the association R2. Well, Chris, you certainly have me confused. The above paragraph seems to fit with my understanding of the subclass relation. As you describe it, there are three classes Q, P and (Q-P), the last two being disjoint subclasses of Q; everything in Q has an association R1, and everything in P, but nothing in (Q-P), has an association R2. That all seems quite sensible and conformant to the normal meaning of subclass. We could even define P as the subclass of Q which has the association R2. (Actually I have no idea what 'having an association' means, but that doesn't seem to matter.) So where is the "lack of fit" that you are talking about? Pat
Received on Monday, 20 May 2002 10:54:55 UTC