- From: Frank van Harmelen <Frank.van.Harmelen@cs.vu.nl>
- Date: Sat, 23 Mar 2002 00:20:45 +0100
- 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 UTC