- From: Sean B. Palmer <sean@mysterylights.com>
- Date: Sat, 17 Nov 2001 01:05:31 -0000
- To: <www-archive@w3.org>
- Cc: "Dan Connolly" <connolly@w3.org>
This is a summary of the different flavours of equivalence in RDF Schema and DAML. daml:equivalentTo The same in every way. If a symbol denoting a resource is substituted for a symbol denoting an equivalent resource in this sense, then the statement maintains it's semantics. daml:sameClassAs As daml:equivalentTo, only this time, the range and domain is rdfs:Class. daml:samePropertyAs As daml:equivalentTo, only this time, the range and domain is rdf:Property. daml:sameIndividualAs As daml:equivalentTo, only this time, the range and domain is daml:Thing. rdfs:subClassOf Contains the same or less members as. Cyclic classes are not necessarily equivalent to each other, but must contain the same members. This leads to another, weaker, form of equivalence:- :equivInSetMembershipTo Contains the same members as. This is a super property of sameClassAs, but not equivalentTo, because the domain and range of this property is rdfs:Class. This is also a sub property of rdfs:subClassOf. log:equalTo Used in CWM. Apparently means "has the same URI as", but perhaps includes literals. List of stuff which we hold to be true:- daml:equivalentTo rdfs:domain rdfs:Resource; rdfs:range rdfs:Resource . daml:sameClassAs rdfs:subPropertyOf daml:equivalentTo, :equivInSetMembershipTo, rdfs:subClassOf; rdfs:domain rdfs:Class; rdfs:range rdfs:Class . daml:samePropertyAs rdfs:subPropertyOf daml:equivalentTo, rdfs:subPropertyOf; rdfs:domain rdf:Property; rdfs:range rdf:Property . daml:sameIndividualAs rdfs:subPropertyOf daml:equivalentTo; rdfs:domain daml:Thing; rdfs:range daml:Thing . :equivInSetMembershipTo rdfs:subPropertyOf rdfs:subClassOf . rdfs:subClassOf a daml:TransitiveProperty; rdfs:domain rdfs:Class; rdfs:range rdfs:Class . # "equivalentTo" stuff { ?a daml:equivalentTo ?b . ?a ?p ?q } log:implies { ?b ?p ?q } . { ?a daml:equivalentTo ?b . ?p ?a ?q } log:implies { ?p ?b ?q } . { ?a daml:equivalentTo ?b . ?p ?q ?a } log:implies { ?p ?q ?b } . # "equivalentTo" is the inverse of itself daml:equivalentTo a :ReversibleProperty . :ReversibleProperty rdfs:subClassOf rdf:Property . { ?y a :ReversibleProperty } log:implies { ?y daml:inverseOf ?y } . { ?y daml:inverseOf ?y . ?x ?y ?z } log:implies { ?z ?y ?x } . # Set Membership Equivalence { ?x a ?y . ?y :equivInSetMembershipTo ?z } log:implies { ?x a ?z } . # that basically follows from:- { ?x a ?y . ?y rdfs:subClassOf ?z } log:implies { ?x a ?z } . # but *not*:- { ?x a ?y . ?y daml:equivalentTo ?z } log:implies { ?x a ?z } . # although that *is* true. # The usual implications of transitivity, and domain/ranges daml:TransitiveProperty rdfs:subClassOf rdf:Property . { ?x ?y :z . ?z ?y ?p . ?y a daml:TransitiveProperty } log:implies { ?x ?y ?p } . rdfs:range a rdf:Property; rdfs:domain rdf:Property; rdfs:range rdfs:Class . rdfs:domain a rdf:Property; rdfs:domain rdf:Property; rdfs:range rdfs:Class . rdfs:subPropertyOf rdfs:domain rdf:Property; rdfs:range rdf:Property . rdfs:subClassOf rdfs:domain rdfs:Class; rdfs:range rdf:Class . { ?x ?y ?z . ?y rdfs:range ?p } log:implies { ?z a ?p } . { ?x ?y ?z . ?y rdfs:domain ?p } log:implies { ?x a ?p } . After getting CWM to -think about it, we end up with:- :equivInSetMembershipTo a rdf:Property; rdfs:subPropertyOf rdfs:subClassOf . daml:Thing a rdfs:Class . daml:TransitiveProperty a rdfs:Class; rdfs:subClassOf rdf:Property . daml:equivalentTo a :ReversibleProperty, rdf:Property; daml:inverseOf daml:equivalentTo; rdfs:domain rdfs:Resource; rdfs:range rdfs:Resource . daml:sameClassAs a rdf:Property; rdfs:domain rdfs:Class; rdfs:range rdfs:Class; rdfs:subPropertyOf :equivInSetMembershipTo, daml:equivalentTo, rdfs:subClassOf . daml:sameIndividualAs a rdf:Property; rdfs:domain daml:Thing; rdfs:range daml:Thing; rdfs:subPropertyOf daml:equivalentTo . daml:samePropertyAs a rdf:Property; rdfs:domain rdf:Property; rdfs:range rdf:Property; rdfs:subPropertyOf daml:equivalentTo, rdfs:subPropertyOf . rdf:Class a rdfs:Class . rdf:Property a rdf:Class, rdfs:Class . rdfs:Class a rdfs:Class . rdfs:Resource a rdfs:Class . rdfs:domain a rdf:Property; rdfs:domain rdf:Property; rdfs:range rdfs:Class . rdfs:range a rdf:Property; rdfs:domain rdf:Property; rdfs:range rdfs:Class . rdfs:subClassOf a daml:TransitiveProperty, rdf:Property; rdfs:domain rdfs:Class; rdfs:range rdf:Class, rdfs:Class . rdfs:subPropertyOf a rdf:Property; rdfs:domain rdf:Property; rdfs:range rdf:Property . N.B. Some of this stuff was lifted from RDF Lint [1], which really needs updating. Cheers, [1] http://infomesh.net/2001/05/rdflint/ -- Kindest Regards, Sean B. Palmer @prefix : <http://webns.net/roughterms/> . :Sean :hasHomepage <http://purl.org/net/sbp/> .
Received on Friday, 16 November 2001 20:06:32 UTC