Re: "Is a Property a Class" and other DAML questions

From: "Balon, Corey" <cbalon@grci.com>
Subject: "Is a Property a Class" and other DAML questions
Date: Mon, 5 Mar 2001 11:48:08 -0500 

> Just a few items that have been bothering me:
> 
> 1) Is a Property a Class?
> 	Can you put Properties in the places where Classes are allowed?
> 	(ex. PropA sameClassAs PropB)
> 2) Can something be both a Property and a Class?
> 	is daml:TransitiveProperty both a Property and a Class?
> 
> In some places such as http://www.daml.org/2000/12/daml+oil.daml
> the answers to the above seem to be "yes", however
> in others such as 3.1.3 of
> http://www.daml.org/2000/12/axiomatic-semantics.html,
> which says that "properties and classes are disjoint",
> the answers seem to be "no"

I'm not sure where you are seeing the implication that properties and
classes are not disjoint in the DAML spec.  It is true that some of the
DAML spec documents are neutral with respect to this question, but I don't
think that any actively mention objects that are both classes and
properties.  The only place where classes and properties are stated to be
disjoint is in the axiomatization, and the only reason for that is that
this comes from RDF (or RDFS).

(As an aside, I can't find where this disjointness requirement is in RDF or
RDFS.  If it isn't there, then the axiom in the DAML+OIL axiomatization
should be removed.)

> 
> 4) more of a comment than a question...
> For Restrictions, can I do the following? (I assume yes)
> -----------------------
> <daml:NonNegativeInteger rdf:ID="1"/>
> 
> <daml:Restriction rdf:ID="CarRestrictions">
>   <daml:cardinality rdf:resource="#1"/>
>   <daml:onProperty rdf:resource="#hasEngine"/>
> </daml:Restriction>
> 
> <daml:Class rdf:about="#Car">
>   <rdfs:subClassOf rdf:resource="#CarRestrictions"/>
> </daml:Class>
> 
> <daml:Class rdf:about="#Truck">
>   <rdfs:subClassOf rdf:resource="#CarRestrictions"/>
> </daml:Class>

Aside from problems with the representation of 1, this is fine.

> Now given the above can I add the following? (I assume no)
> ----------------------
> <daml:NonNegativeInteger rdf:ID="2"/>
> 
> <daml:Restriction rdf:about="CarRestrictions">
>   <daml:mincardinality rdf:resource="#2"/>
>   <daml:onProperty rdf:resource="#hasDoors"/>
> </daml:Restriction>
> ---------------------

Nothing wrong here, with the same caveat about numbers as above.

You have, however, just created a very unusual restriction.  Most
restrictions would be unnamed, and placed inside the class ``definition'',
as in the DAML+OIL examples.  Further you probably haven't done what you
expected.  You have four ``restrictions'', not two, as you get both a
cardinality (of 1) and a mincardinality (of 2) on both 'hasDoors' and
'hasEngine'.  Of course, no object can meet these restrictions, so there
can be no Cars in your example.

> At this level this 'seems' good, however when triples are created
> all the stuff in CarRestrictions gets mashed together.
> I was putting together an example of bad DAML for fun and this
> one came very naturally. I can see bugs like this being common 
> as more DAML is created by more people.

Yes, but this is a problem with RDF, as RDF has no grouping mechanism, nor
any mechanism to say that a construct is fully specified.  It is always
possible to add new things to a resource in RDF.  The problem shows up in
RDFS.  (Consider a group of subClassOf statements from different sources
that form a loop.)

> thanks,
> Corey

Peter Patel-Schneider

Received on Monday, 5 March 2001 13:04:04 UTC