My 2c on the semantics of rdfs:isDefinedBy (cf. [1]), with an idea to
improve CWM's content sniffing.

It is true that the RDF Schema specification (as is [2]) does not
guarantee that the object of an rdfs:isDefinedBy arc will return a
serialization of RDF when dereferenced, and it certainly does not
guarantee the content type of the representation. Aaron Swartz
suggested [3] that two new (sub) properties be defined, rdfs:inSchema
and rdfs:specification.

However, rdfs:inSchema may still not be enough information for an RDF
processor to go on - given that there are already three "rival"
serializations of RDF, XML RDF [4], Notation3 [5], and NTriples [6].
Sandro Hawke's Blindfold [7] could add a lot more to the list.

From my experience with CWM [8], it is evident that identifying the
format of the object of an isDefinedBy arc may be a useful approach to
take. As a starting point, the future version of RDF Schema could
contain the following classes:-

rdfs:RDF a rdfs:Class;
   rdfs:comment """An RDF document - the class of resources that
invariably return a serialization of the Resource Description
Framework when dereferenced (with HTTP GET)""" .
rdfs:NotRDF a rdfs:Class;
   rdfs:comment """The class of resources that never return a
serialization of RDF [...]""";
   daml:disjointWith rdfs:RDF .

[rdfs:RDF would be equivalent to the range of rdfs:inSchema.] The next
suggestion is to enable people to identify the exact type of the
object. The traditional method would be to use dc:format, and a MIME
type. However, not one MIME type has yet been registered for RDF, so
that is not an option. The alternative is to break free from
centralized MIME types, and use URI-views.

Tim's SWAP "log:" namespace already contains a URI for Notation3 (the
rdfs:comment wording for which is noteworthy):-


Of course, *every* serialization of RDF should have a URI-view to
identify it, not just N3. log:N3Document would become a subClassOf

Regarding CWM, it currently "magically" guesses the type of any
objects of an rdfs:isDefinedBy arc, which can cause grief, as I found
out when I used a namespace with the string "xmlns.com" in it. It
should be possible for CWM to use rdf:type as a built-in, although if
adding rdf:type as a built-in would be too inefficient, rdfs:cType
could be added as a sub property, with a domain of rdfs:RDF. Then, we
could state things such as the following:-

   :myTerm rdfs:isDefinedBy <http://example.org/schema.n3> .
   <http://example.org/schema.n3> rdfs:cType log:N3Document .

Using that information in *preference* to content sniffing. Note that
with a combination of the classes noted above, and content type
identification, rdfs:inSchema may be wholly unecessary. Using cType on
any subject would indicate that it is an RDF document, and if the
object is recognizable, then it is possible for the processor to
follow the links.

[1] http://www.w3.org/2000/03/rdf-tracking/#rdfs-isDefinedBy-semantics
[2] http://www.w3.org/TR/2000/CR-rdf-schema-20000327/
[4] http://www.w3.org/TR/REC-rdf-syntax
[5] http://www.w3.org/DesignIssues/Notation3
[6] http://www.w3.org/2001/sw/RDFCore/ntriples/
[7] http://www.w3.org/2001/06/blindfold/
[8] http://www.w3.org/2000/10/swap/

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

Received on Saturday, 8 December 2001 08:37:52 UTC