In my last post (I was told that some people's heads exploded when reading it :-) ), I talked about some fundamental modeling concepts and how they help to define classes and their inheritance. The 3 concepts (defined by Guarino and Welty's work on OntoClean) are:
Essential properties are known as "rigid" properties. But there are lots of non-rigid aspects of a class like its purpose, current state or some quality, such as its color(s). These non-rigid aspects are categorized into 3 types:
As is probably obvious from this discussion, non-rigid properties/concepts should never occur in the backbone of an inheritance hierarchy! The backbone should only contain the invariant aspects of the domain being modeled. Similarly, these properties would never be identity or unity properties! These should only be properties within a class or related to a class/instance.
I thought that these distinctions were pretty fascinating - and that without consciously thinking about them, we can and do create erroneous models.
Anyway, I'm now done with my overview of Guarino and Welty's work. And, my apologies if anyone's heads exploded a second time. :-)
Happy Holidays!
Andrea