W3C home > Mailing lists > Public > www-webont-wg@w3.org > March 2002

Re: LANG: OWL non-xml syntax

From: Frank van Harmelen <Frank.van.Harmelen@cs.vu.nl>
Date: Sat, 23 Mar 2002 00:20:45 +0100
Message-ID: <3C9BBC4D.5060002@cs.vu.nl>
To: WebOnt WG <www-webont-wg@w3.org>
> 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.

Eg:

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

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"/>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
      <daml:onProperty rdf:resource="#hasFather"/>
     </daml:Restriction>
    </rdfs:subClassOf>
   </intersectionOf/>
  </daml:Class>

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.

Frank.
    ----
Received on Friday, 22 March 2002 18:21:36 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:57:48 GMT