Previous Next

Formal Subsumption: Statements, Definitions, and Composite Categories

To explain the next steps requires adding descriptive information and definitions to our simple model. To do so, we will take a small detour and build a small model of kinds of people before we come back to relate people and vehicles.

Creating attributes

Attributes are used to describe relationships between categories, and define new categories. First add a new category to represent the concept of a Person:

DomainCategory newSub LivingThing.
  LivingThing newSub Person.

Attributes will allow us to talk about, for instance, a Person that has sex male - a Man in other words. For that particular example, we could consider simply providing two new subsumptions of Person, Man and Woman. However, the use of attributes provides us with more power. As an illustration of this, consider the concept of people who drive buses. We could provide a new subsumption of Person, CarOwner, which would embody this concept. What if we then want to look at the relationship from the other end? We would have to also provide a new subsumption of Car, Car which isOwnedBy Person. One can easily see that this could lead to a proliferation of new categories which have to be added explicitly. In addition, this fails to capture the fact that we may also want to talk about Vehicle drivers in general, as they might all have something in common.

What we want to do is provide a mechanism for defining owners, men, women, etc. systematically. This also has the advantage that we know why a man is different from a woman, at least in our model: because men and women have different sex. Likewise we will know what makes owners different from other persons: they own something.

First, some house-keeping. (The syntax in this section is not particularly nice, so you will just have to bear with us.) Type the following into a workspace, select it and evaluate it.

Attribute newAttribute DomainAttribute
  inverseDomainAttribute allAll manyMany.

Attribute is the top of the attribute hierarchy and comes built-in in every new model. (Perhaps we should have called it TopAttribute, but we didn’t.) The expression which you typed introduces a new attribute DomainAttribute which will be used in a similar way as DomainCategory, as a top-most attribute to hang all our other attributes from.

Now let’s introduce a more useful attribute:

DomainAttribute newAttribute hasOwner
  isOwnerOf allAll manyOne.

This introduces a new attribute hasOwner. It has an inverse isOwnerOf which will allow us to talk about the relationship from the other end. The keyword allAll is obsolete but persists in our compilers. The keyword manyOne says that a vehicle can have only one owner, but one owner can own many vehicles. This is referred to as the cardinality of the attribute. Other cardinalities are manyMany, oneMany and oneOne. Another way to describe attributes with cardinality manyOne or oneOne is to say that they are single-valued.

Previous Next
Making the impossible very difficult, ©OpenGALEN.org, All rights reserved