basic decisions underlying DAML-ONT

I think that it would be very useful to get some sort of information on the
basic decisions underlying DAML-ONT.  For example, I would like to know
whether there is a basic decision in DAML-ONT to not allow necessary and
sufficient conditions for classes.

The reason that I ask this is that DAML-ONT does not have a direct
mechanism to allow such ``defined'' classes.  However, in many cases, one
can indeed create classes that contain exactly those individuals that meet
a particular condition. 

For example, suppose we want to create the class of individuals who have a
rich friend.  We start by defining the property ``friend'' and
the class ``Rich''.

<Property ID="friend"/>

<Class ID="Rich"/>

Then we create the complement of ``Rich''.

<Class ID="notRich">
 <complementOf resource="#Rich>
</Class>

Now we define a subclass of the desired class, ``SomeRichFriend''.

<Class ID="SomeRichFriend">
  <qualifiedBy>
    <Qualification>
      <onProperty resource="#friend"/>
      <toClass resource="#Rich"/>
    </Qualification>
  </qualifiedBy>
</Class>

Finally we create a subclass of complement of the desired class, which we
can do because the complement of a qualification to a class is a
restriction to the complement of the class, and assert that it and
``SomeRichFriend'' are complements. 

<Class ID="AllNotRichFriends">
  <restrictedBy>
    <Restriction>
      <onProperty resource="#friend"/>
      <toClass resource="#notRich"/>
    </Restriction>
  </restrictedBy>
  <complementOf resource="#SomeRichFriend">
</Class>

Because ``AllNotRichFriends'' is a subset of the complement of the desired
class, therefore its complement, ``SomeRichFriend'', is a superset of the
desired class.  However, ``SomeRichFriend'' was already defined as a
subset of the desired class, therefore ``SomeRichFriend'' is precisely the
desired class.

So, it now follows from 

<Rich ID="DaddyWarbucks"/>

<Thing ID="Annie">
  <friend resource="DaddyWarbucks">
</Thing>

that ``Annie'' belongs to ``SomeRichFriend''.


More complicated examples can be created using unionOf and the other
``[t]erms for building classes from other classes''.



Peter Patel-Schneider

Received on Thursday, 12 October 2000 09:32:02 UTC