W3C home > Mailing lists > Public > www-ws-arch@w3.org > May 2003

RE: isa and hasa in UML

From: Cutler, Roger (RogerCutler) <RogerCutler@chevrontexaco.com>
Date: Fri, 30 May 2003 12:43:13 -0500
Message-ID: <7FCB5A9F010AAE419A79A54B44F3718E01817E5A@bocnte2k3.boc.chevrontexaco.net>
To: "Francis McCabe" <fgm@fla.fujitsu.com>, www-ws-arch@w3.org

This is REALLY discouraging.  I thought that the UML experts in the room
at Rennes were saying that "everybody knows" what has-a means in UML,
and all you have to do is strip it out of your favorite undergraduate

I have a strong feeling of distaste for ditching the definition of
"has-a" currently in the document, which at least has the virtue that I
can understand and apply it, in favor of a definition that appears to be
like the Indian rope trick -- something that everybody knows exists
because somebody else has seen it.

-----Original Message-----
From: Francis McCabe [mailto:fgm@fla.fujitsu.com] 
Sent: Friday, May 30, 2003 12:01 PM
To: www-ws-arch@w3.org
Subject: isa and hasa in UML

This is in partial fulfillment of my action item re is-a and has-a 
w.r.t. UML

0. There is a rather (unintentionally) funny comment in the UML 2.0 
spec: Semantics
   The meanings of the constructs are defined using natural language.

(This is after a lot of promises of being formal.)

   However, UML uses OCL for those cases where natural language is not 
enough. OCL is similar to a first order predicate calculus. Having said 
that, the spec does not use OCL very often; including for the 
definition of relationships such as generalization (is-a) and 
association (has-a kind of)

1. As I have indicated earlier, UML does not have a precise notion of 
is-a. The closest is the generalization relationship. This is defined 
in 3.50:

Generalization is the taxonomic relationship between a more general 
element and a more specific element that is fully consistent and that 
adds additional information.

A couple of comments:

1. Basing is-a on taxonomics raises some serious logical issues. This 
is analogous to basing everything on sets: every member of the penguin 
set is also a member of the bird set.

The problem is that it becomes really difficult to talk about weird or 
abstract sets. Basing is-a on this would lead to the following 
counter-intuitive result: every unicorn is a yeti. (There are no 
documented instances of either, so the set of unicorns and yetis is 

A more serious issue, sticking with birds for the moment, is that it is 
similarly hard to talk about properties of birds such as flying: we 
could not express the fact that all birds except penguins fly.

An even more serious issue is that we need to capture the following 

A service has an identifier

A Web service is a service
A Web service has a URI

The Web service's URI counts_as the service identifier

It is that counts_as that is beyond the capabilities of UML's 
generalization. We *could* extend UML's generalization, and that may be 
the best overall approach. In fact, we would really need to do that for 
all our relationships, use <is-a> and <has-a> and *never* rely on UML's 
built-in relationships. <is-a> and <has-a> could probably be defined in 

More to follow....
Received on Friday, 30 May 2003 13:43:36 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:05:52 UTC