Re: LANG: OWL non-xml syntax

> Frank van Harmelen wrote:

>>A PrimitiveClass lists necessary conditions for membership,
>>A DefinedClass lists necesary and sufficient conditions for membership,

Jonathan Borden wrote:

> Can I ask a naive question? (well I will :-) Under what specific conditions,
> for what we are doing specifically here, is it important to make this
> distinction? -- I ask this because my understanding is that DAML+OIL does
> not currently make this distinction.

DAML+OIL does have this distinction.
Any class is primitive, unless defined as a sameClassAs, oneOf, 
intersectionOf, unionOf, complementOf.


   <daml:Class rdf:ID="#person">
    <rdfs:subClassOf rdf:resource="#animal"/>
      <daml:Restriction daml:cardinality="1">
      <daml:onProperty rdf:resource="#hasFather"/>

states that persons are animals, and that they have one father.
That does >*not*< mean that any animal with one father is also a person.
Stated yet another way: this makes person a subset of both
animal and "things with one father" (ie a subset of their intersection),
but not >*equal*< to that intersection,
ie not every animal with one father is a person.

However, making person a definedclass can be done by stating:

  <daml:Class rdf:ID="#person">
   <intersectionOf rdf:parsetype="daml:collection">
    <rdfs:subClassOf rdf:resource="#animal"/>
      <daml:Restriction daml:cardinality="1">
      <daml:onProperty rdf:resource="#hasFather"/>

This makes person >*equal*< to the intersection of animal and "all things with 
one father", so now all animals with one father can also be concluded as persons.

> Is a primitive class something akin to an "abstract base class" that is to
> say, it is intended to be used in defining other classes, and not to have
> its own 'direct' membership ... if so would the keyword "abstact" be a good
> way to distinguish a PrimitiveClass from a DefinedClass in the syntax 

No, this is not the intuition at all. The intuition is that in a primitive 
class, membership of the class implies the conditions from the class 
definition (but not vice versa), while in a defined class, membership of the 
class is equivalent with / fully characterised by the conditions from the class.

Or even looser: you use a defined class when you have a full characterisation 
of a class, you use a primitive class if you just state some of the properties 
of the (members of) the class, but not necessarily a full characterisation.

 > (I need at least a keyword to make this LALR(1) :-)

In earlier discussions with Ian and Peter, I floated
"PartialClassDef" for primitive class  and
"CompleteClassDef" for defined class.

[BTW, having to spell out these rather contorted DL-style ways of saying 
something really quite simple is exactly the motivation why our proposal for 
OWL tried to regain the frame-style, instead of the DL style of the above].

In the words of [2] (again):
"The prevalence of frame-based ontology editors and their popularity among 
users suggests that the frame-based paradigm is appropriate for such tools. 
Description Logic languages certainly have a place in the toolkit of the 
conceptual modeller but they have not gained much popularity as raw tools for 
conceptual modelling in the past. This is unlikely to change."


On the issue of individuals:

> for example, suppose:
> individual foo(
>     property ex:color(value blue)
>     )
> would this translate to the RDF:
> <rdf:Description rdf:ID="foo">
>     <ex:color rdf:resource="#blue"/>
> </rdf:Description>
> as opposed to
> <daml:Class rdf:ID="foo">
>     <daml:Restriction>
>             <daml:onProperty rdf:resource="ex:color"/>
>             <daml:toClass rdf:resource="#blue"/>
>     </daml:Restriction>
> </daml:Class>

Well, we haven't decided on any translation into RDF of course,
but yes, the first would be plausible, the second not.


Received on Friday, 22 March 2002 18:21:36 UTC