Vocabulary (ontology) URI vs namespace

Hello all

Having harvested as of today 280 vocabularies/ontologies at
http://lov.okfn.org/dataset/lov
We have stumbled on all possible (I think) configurations regarding
vocabulary URI (or IRI) and namespace, and it's sometimes driving me nuts :)

A common (best?) practice is to declare the vocabulary URI as a base URI
without any trailing # or /, to make it distinct from the ontology
namespace.

Example 1 : c4o

URI : http://purl.org/spar/c4o
namespace : http://purl.org/spar/c4o/

Example 2 : c4n

URI : http://vocab.deri.ie/c4n
namespace : http://vocab.deri.ie/c4n#

In both cases the vocabulary URI is declared formally using owl:Ontology.

In both cases the root URI and the namespace resolve and conneg nicely.

In the second example the namespace is formally declared using
vann:preferredNamespaceUri, which is nice to have

There are also many cases where the namespace is used more or less
explicitly as the vocabulary URI.

Example 4 : dcterms

Both http://purl.org/dc/terms/ and http://purl.org/dc/terms currently
resolve to http://dublincore.org/2012/06/14/dcterms.rdf where one can find :

<rdf:Description rdf:about="http://purl.org/dc/terms/"> etc
although this is not a owl:Ontology declaration, this implicitly indicates
http://purl.org/dc/terms/ as the URI of the vocabulary.(would be better if
explicit ...)

Using purl, it's often the case that the root URI does not even resolve.

Example 4 : af

The namespace URI : http://purl.org/ontology/af/

... redirects to http://motools.sourceforge.net/doc/audio_features.rdf

... where one can read
<owl:Ontology rdf:about="
file:///home/moustaki/work/workspace/motools/af/rdf/audio_features.n3">

whereas http://purl.org/ontology/af is 404

This example is a bit extreme (apologies to Yves for pointing that
publicly)but we have all sorts of in-between, such as no owl:Ontology
declaration at
all, or lazy owl:Ontology rdf:about=""  combined with redirection so it's
to everyone guess what to put in the "" ...

So my question is : should the practice of examples 1 and 2 be recommended
as the best one, namely :

- Use a root URI (without either trailing # or / or file extension) as the
vocabulary URI
- Declare it formally using a owl:Ontology declaration in the RDF, and
explicitly in the HTML documentation
- Make this root URI resolve to both vocabulary file and documentation
using proper content negociation

Plus (nice to have)

- Declare explicitly the vocabulary namespace URI (either / or #) using
vann:preferredNamespaceUri (not only xmlns)
- Have the namespace resolve to the root URI

Thanks for comments !

Bernard

-- 
*Bernard Vatant
*
Vocabularies & Data Engineering
Tel :  + 33 (0)9 71 48 84 59
Skype : bernard.vatant
Blog : the wheel and the hub <http://blog.hubjects.com/>

--------------------------------------------------------
*Mondeca**          **                   *
3 cité Nollez 75018 Paris, France
www.mondeca.com
Follow us on Twitter : @mondecanews <http://twitter.com/#%21/mondecanews>

Received on Friday, 31 August 2012 11:20:00 UTC