W3C home > Mailing lists > Public > public-swbp-wg@w3.org > February 2006

Re: [VM] cookbook issue in naming 'hash namespaces'

From: Ralph R. Swick <swick@w3.org>
Date: Fri, 17 Feb 2006 11:12:42 -0500
Message-Id: <>
To: Alistair Miles <a.j.miles@rl.ac.uk>
Cc: public-swbp-wg@w3.org

At 05:56 PM 2/15/2006 +0000, Alistair Miles wrote:
>... and I so foolishly remarked in the last telecon that 'I've said all I'm ever going to say about hash URIs' ...


oh dear.

>Sorry, I should have sent an email explicitly explaining my decision to revert your changes.

As clearly I should also have done when I made them.  We missed
a bunch of telecons where I was planning to mention this.

> I did send an email [10] noting some technical issues regarding 'namespace URIs' and 'vocabulary URIs'.

right; I overlooked your last paragraph (which you cited):

   ... we have to be careful not to confuse the 'vocabulary URI' ...
   and the 'namespace URI' ...

I should have flagged this issue then, as I disagree with your
conclusion -- though I respect the underlying implementation
issue that you identified in that message.

>Typically (in my experience), RDF schemas and OWL ontologies do something like the following:
><rdf:RDF xml:base="http://example.com/foo"
>  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>  xmlns:owl="http://www.w3.org/2002/07/owl#">
>  <owl:Ontology rdf:about="">
>    <rdfs:comment>An Example OWL Ontology</rdfs:comment>
>  </owl:Ontology>
>  <owl:Class rdf:ID="Bar">
>    <rdfs:label>Bar</rdfs:label>
>  </owl:Class>
>This document contains the following triples:
><http://example.com/foo> rdfs:comment "An Example OWL Ontology".
><http://example.com/foo#Bar> rdfs:label "Bar".

Right you are, plus the crucial triple

   <http://example.com/foo> rdf:type <http://www.w3.org/2002/07/owl#Ontology>

I missed this detail in reading the OWL Language Reference.
Indeed, [1]7.2 Ontology header explicitly recommends exactly
this practice, though it only shows an actual usage of xml:base
in [2]Appendix B RDF Schema of OWL.

[1] http://www.w3.org/TR/owl-ref/#Ontology-def
[2] http://www.w3.org/TR/owl-ref/#appB

I am just so accustomed to citing vocabularies by their namespace URI.

>Note that, as I documented at [10], if the value of the xml:base attribute were changed to "http://example.com/foo#" this does not change the triples at all.

Though as Bjoern and Jeremy subsequently pointed out [3], it's
not clear whether this is the specified behavior or a [mis]feature
of implementations.

[3] http://lists.w3.org/Archives/Public/public-swbp-wg/2006Jan/0103.html

>In order to use the namespace URI as the ontology URI you have to do something like:
>  <owl:Ontology rdf:about="http://example.com/foo#">
>    <rdfs:comment>An Example OWL Ontology</rdfs:comment>
>    ...
>  </owl:Ontology>

No, you could write

<rdf:RDF xml:base="http://example.com/foo"

  <owl:Ontology rdf:about="#">
    <rdfs:comment>An Example OWL Ontology</rdfs:comment>

>... I've not seen that done. I haven't eyeballed a particularly large number of ontologies in my time, so I could be wrong about this - we should ask SWOOGLE.

Good idea to consult Swoogle, but clearly the normative OWL ontology
does exactly the pattern you show so I concede that there are likely
very few that use the rdf:about="#" idiom.

>I saw no need to complicate the cookbook with this distinction between namespace URI and vocabulary URI.

all right, I concede your point for now.

>  I therefore only ever made reference to a 'vocabulary URI', removed all references to 'namespace URI' in the main body of the text (although I missed some in the apache directive comments, and in the PURLs section). I also removed the trailing hash from any 'vocabulary URI' to be consistent with what I understood to be the most widely deployed practice.

I understand.  Now that we've had this discussion, I would have
preferred that the choice was made instead to refer only to
'namespace URI' but rather than standing on that editorial point
I'll propose instead the following addition to [4].

   SKOS Core [SKOS] is an example of a vocabulary that uses a hash
   namespace. ... In this case, the URIs for the classes and
   properties are constructed by appending first a hash character
   ('#') and then a 'local name' to the vocabulary URI.  /+(Within
   an RDF document, the hash character is typically appended
   via the namespace declaration.)+/ The 'local name' is ...

[4] http://www.w3.org/2001/sw/BestPractices/VM/http-examples/2006-01-18/#naming
Received on Friday, 17 February 2006 16:13:34 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:09:46 UTC