RE: Using urn:publicid: for namespaces

Sean Palmer wrote (in reply to me):
> > I agree with the comments that have been made on this mailing
> > list about the inappropriateness of using the http URL scheme
> > for names - especially those representing RDF schemas.
> 
> That depends upon how you define "inappropriate". Clearly, URLs as
> names *do* work, and there is a huge amount of practical evidence to
> support that (i.e. however many RDF documents there are out there, the
> majority of which use URLs as terms).

Yes, I agree that URLs as names work.  However I think their current
widespread use for schema namespaces is leading to two distinct things
becoming confused:

1) The name assigned to a concept within a schema (which is unique)
2) A location of the definition of the concept 

While it can be convenient if the namespace URI can also be used to
retieve the definition of the schema, it is not required that an XML
namespace URI correspond to a retrievable resource.  Therefore, even
though most (if not all) schemas available today use URLs for their
names, the Semantic Web community still needs to address the question
of how to locate the definition of a schema based on a namespace that
is not identified by a URL.  To take an extreme example, it seems that
it would be legitimate to use a data: URI for the namespace of a
schema - this means that the concepts defined in the schema would
(via the QName to URI mapping) also have data: URIs.  This might be
OK for concept names (I'm not sure about this), but it certainly
gives no clue about how to locate the definition when you come across
some instance data expressed in terms of this concept.  The property
rdfs:isDefinedBy provides one mechanism, although it's not clear to me
from its definition if this can be used to associate a namespace URI
with a URL, or whether it must be used repeatedly to map each
individual concept name to the resource that defines it (can anyone
comment on this?).

Anyway, here are some possible conventions for locating the
definitions of an RDF class or property:

1) Given the URI for an RDF class or property, check if
   rdfs:isDefinedBy is defined for that URI, and if so, follow
   that property to find the document containing the definition.

2) If this property wasn't defined, check if rdfs:isDefinedBy is
   defined for the entire namespace (assuming this is a correct use
   of rdfs:idDefinedBy)

3) If rdfs:isDefinedBy is not defined for the namespace either, and
   the URI is actually a URL, then that URL must be both the name and
   and the location of the definition of the concept (ugh!)

4) If the URI is a URN then the URN scheme may define how to retrieve
   the schema.  If the URN scheme is simply a mechanism for persistent
   URLs (rather than something more specialised for RDF) then this may
   also mean that the name and definition are considered to be the
   same.

5) If the above options fail, you're either out of luck, or you stop
   relying on existing Web infrastructure to solve the problem and
   start using more specialised Semantic Web infrastructure (if any
   is forthcoming) such as well-known (or even globally federated)
   schema repositories.

- Stephen

Received on Sunday, 12 August 2001 19:30:43 UTC