Cyclic Classes/Properties [was: Re: DAML Correction: Same Is Not A Sub Of Sub]

> Apologies if this has been raised a million times before.

Well, not a million, but very nearly (O.K., three references).

http://lists.w3.org/Archives/Public/www-rdf-comments/2000AprJun/0045
http://lists.w3.org/Archives/Public/www-rdf-logic/2001Feb/0106
http://www.w3.org/2000/03/rdf-tracking/#rdfs-no-cycles-in-subClassOf

Sure is an interesting topic though. The RDF Schema specification only
restricts this by prose, which makes it very difficult for people to
reason with... how much more expressive would RDFS need to be in order
to constrain this properly? You can do this with log:implies and so
forth.

   <> log:forAll :x , :y .
   { :x rdfs:subClassOf :y . :y rdfs:subClassOf :x } a
log:Inconsistency .

An additional problem is that if you let class hierarchies by cyclic,
then you might start getting inconsistencies quite easily - RDFS works
well on a principle of least power. Couldn't DAML or something
introduce a daml:CyclicClass / daml:CyclicProperty?

   daml:CyclicProperty a rdfs:Class;
        rdfs:subClassOf rdf:Resource .

   daml:subPropOf a daml:CyclicProperty .
   daml:samePropertyAs a daml:CyclicProperty;
        daml:subPropOf daml:equivalentTo, daml:subPropOf .

Then the original issue goes away, because you get:-

   daml:samePropertyAs daml:inverseOf daml:samePropertyAs .

   { :x :daml:samePropertyAs :y }
   log:implies
   { :x daml:subPropOf :y . :y daml:subPropOf :x } .

Which is permitted because daml:subPropOf is an instance of
daml:CyclicProperty. Unfortunately, all instances of rdf:Property and
daml:CyclicProperty would have to be daml:Disjoint...

   [ a daml:Disjoint; daml:first rdf:Property;
       daml:rest (daml:CyclicProperty) ] .

--
Kindest Regards,
Sean B. Palmer
@prefix : <http://webns.net/roughterms/> .
:Sean :hasHomepage <http://purl.org/net/sbp/> .

Received on Saturday, 5 May 2001 17:29:46 UTC