- 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