W3C home > Mailing lists > Public > public-rdf-wg@w3.org > May 2012

Re: Ambiguity of "RDF namespace" - was: Re: Contradicting definitions of "property"

From: Richard Cyganiak <richard@cyganiak.de>
Date: Fri, 4 May 2012 19:45:12 +0100
Cc: RDF Working Group WG <public-rdf-wg@w3.org>
Message-Id: <30C00405-31A2-4BDB-8C96-2314EC0A56E0@cyganiak.de>
To: Thomas Baker <tom@tombaker.org>
On 4 May 2012, at 15:05, Thomas Baker wrote:
>> [[
>> An RDF vocabulary is a collection of IRIs with clearly established referents intended for use in RDF graphs.
>> ]]
>> Based on that, I'd say:
>> In the RDF context, any set of IRIs that start with the same substring are a
>> namespace. The shared substring is the namespace's namespace IRI. This says
>> nothing about what these IRIs identify or what they dereference to; it's
>> purely a matter of IRI syntax.
> Okay, but I read this as strongly implying that a namespace is type of RDF
> vocabulary

I would disagree.

RDF vocabulary: IRIs with clearly established referents intended for use in RDF graphs.

Namespace: IRIs that syntactically start with the same sub-IRI.

It's common for all the IRIs in an RDF vocabulary to be in the same namespace. But that namespace will inevitably contain additional IRIs without established referent. skos:AFSADFASD is a (prefix-abbreviated) IRI in the SKOS namespace, but it is not in the SKOS vocabulary.

> Also, I wonder if this gives me license to speak of the
> "http://www.w3.org/1999/" namespace, "http://purl.org/dc/" namespce,

Of course. People do this all the time — “anywhere in W3C's namespace” and so on.

> "http:" namespace, or even the "ht" namespace...  

Not really, as these are not (absolute) IRIs.

> If this really is purely a matter of
> IRI syntax, slipping into saying that there is a conceptual resource called a
> "namespace" denoted by the "namespace URI" seems to muddy the waters.

Right, that's why I didn't say it. Namespace IRIs are just the shared substring. Says nothing about what they denote.

>> It is very common for all IRIs in an RDF vocabulary to be in the same
>> namespace. In this case, it makes sense to speak of the vocabulary's
>> namespace IRI.
> How about:
>    It is very common for all IRIs in an RDF vocabulary to start with a common
>    substring, or base URI.  

Base URI is an inappropriate technical term here. A base URI is a URI used to resolve relative URIs to absolute URIs in documents. (“resolve” in the URI syntax sense, not in the HTTP sense.)

>    In this case, it makes sense to speak of the
>    vocabulary's namespace IRI.  An RDF vocabulary that consists of IRIs
>    starting with a common namespace IRI is, by convention, referred to
>    informally as a "namespace".

Not an appropriate use of the word “namespace”, IMO, see above.

> But if a namespace is a type of RDF vocabulary, as implied above,

In my mind it's not.

> would one not perhaps want to refer to it as an RDF namespace?

Doesn't make sense to me. If namespaces are sets of IRIs, then there's nothing that makes a namespace “RDF-specific”. Sets of IRIs are not specific to a particular data model or representation format.

>> So, you can talk precisely about the ?SKOS namespace IRI? (it is
>> ?http://www.w3.org/2004/02/skos/core#?) or the ?SKOS namespace prefix? (it is
>> ?skos?) or the ?SKOS vocabulary? (it contains skos:Concept, skos:broader,
>> skos:prefLabel and so on).
> Okay (though to state the obvious, "skos:Concept" is not an IRI).

Pedant! ;-)

>> The wording used in RDF Schema ? ?class X is defined in the Y namespace? ? is
>> sloppy language, IMO. Classes are defined in documents, not in namespaces.
> Okay - and rdfs:isDefinedBy points to documents?

Formally it can point to anything. I think pointing it to a document containing the description of the subject is good practice because it's useful — I can look up the definition.

>> You can argue about whether skos:Concept is defined in the SKOS specification
>> or in the SKOS namespace document, but saying that ?it is defined in the SKOS
>> namespace? doesn't really make sense. The IRI of the class X may be in the Y
>> namespace.
>> What is identified by a namespace IRI? It is up to the IRI owner to tell us.
> I think it is very important to say this clearly somewhere.

How is this?

>> It is a useful convention to do so in the namespace document. In the case of
>> slash namespace IRIs, the namespace IRI coincides with the IRI of the
>> namespace document, so that's what it identifies. In a hash namespace IRI,
>> the IRI of the namespace document is the namespace IRI minus the trailing
>> hash, so the namespace IRI might potentially identify something other than
>> the namespace document. My preferred setup (which differs from early W3C
>> practice) is to have it identify *nothing*, and just talk about the hash-less
>> IRI of the namespace document.
> Fine.  Maybe the RDF specs could leave it at: "it is up to the IRI owner to
> tell us", and anything beyond that could be in primers and best practice
> notes.

Well, the terms “namespace”, “namespace prefix” and “namespace IRI” don't really have proper definitions anywhere in the RDF documents, as far as I know. That's because they are sort of just syntax, so there's little justification for explaining them in the Concepts or Schema or Semantics doc. So every syntax document (RDF/XML, Turtle, etc.) defines them again, and only says the minimum needed for the specific syntax. Perhaps the Primer would be a good place, but people don't tend to read it as a reference document. A difficult situation!

What's the first place where people would look for these terms, in your opinion?

Do we need a “Semantic Web Glossary” document?


> Tom
>> If the definitions of the terms in the vocabulary are expressed in RDFS and
>> OWL, then it is common to state that the terms are defined in an
>> ?owl:Ontology?. I think it is natural to say that the namespace document *is*
>> the ontology, and use the same IRI for both. Some disagree with this, saying
>> that an ontology is not a document, but that position makes no sense to me. I
>> can print out an ontology and staple it on the wall.
>> Best,
>> Richard
>> On 3 May 2012, at 17:19, Thomas Baker wrote:
>>> On Thu, Apr 26, 2012 at 01:00:30AM +0100, Richard Cyganiak wrote:
>>>> And the rest of the mechanics make it clear that URIrefs can denote a member
>>>> of IP. In other words, RDF Concepts says that the predicate IRI *is* the
>>>> property, while RDF Semantics says that it *denotes* the property.
>>>> The analogy with classes shows IMO that RDF Concepts is wrong and RDF
>>>> Semantics is right. The IRI <http://xmlns.com/foaf/0.1/Person> *is* not a
>>>> class, but it *denotes* a class.
>>> While we're at it, could we perhaps clarify what is meant by "namespace" 
>>> (i.e., "RDF namespace")?  
>>> The ambiguity that Richard points out w.r.t. whether properties are _denoted
>>> by_ IRIs or actually _are_ IRIs -- along with ambiguity about the relationship
>>> of an "RDF namespace" to an "RDF vocabulary" versus an "XML namespace" -- had
>>> us going around in circles in Dublin Core discussions circa 2004, and this has 
>>> been bugging me ever since...
>>> The RDF Schema 1.1 Editors' Draft [1] pretty consistently refers to a
>>> "namespace" as something "identified by" an IRI, though also "published at" an
>>> IRI, and "in" which vocabularies of properties and classes are "defined" (see 
>>> notes below).
>>> "Architecture of the World Wide Web, Volume One" [2] says that a "namespace
>>> document" is an "information resource that contains useful information,
>>> machine-usable and/or human-usable, about terms in the namespace" but is vague
>>> about the nature of a namespace.
>>> According to my notes (see further below), the use of "namespace URIs" as URIs
>>> for RDF vocabularies/ontologies versus XML namespaces is not really consistent
>>> across some major RDF vocabularies/ontologies/namespaces.
>>> Note, in particular, the inconsistency w.r.t. using the "namespace URI" to
>>> identify the RDF vocabulary or ontology (e.g.: RDF, FOAF, Dublin Core) versus
>>> _not_ using the "namespace URI" to identify the RDF vocabulary or ontology
>>> (e.g.: OWL, SKOS).
>>> Do we have an opportunity to fix this, or at least to establish more consistent
>>> usage moving forward?
>>> FWIW, in the Dublin Core context, we ended up punting on what "namespace"
>>> really meant in the RDF context and defined our own notion of "DCMI namespace"
>>> (and "DCMI namespace URI") as a collection of URIs [3]:
>>>   A collection of DCMI term URIs where each term is assigned a URI that
>>>   starts with the same 'base URI'. The 'base URI' is known as the DCMI
>>>   namespace URI. (Note that a DCMI namespace is not the same as an 'XML
>>>   namespace').
>>> Looking at actual usage in RDF specs (see quotes below), "namespace" appears to
>>> be something defined with regard to a base URI, but only implicitly.  The point
>>> could perhaps be made explicit in a definition such as:
>>>   An RDF namespace is an RDF vocabulary or ontology, the properties and
>>>   classes of which are denoted with URIs formed using a common base URI (the
>>>   "RDF namespace URI").
>>> I'm secretly hoping that the answer to whether an "RDF namespace URI" should be
>>> used to identify the RDF vocabulary/ontology and/or as an XML namespace is: "it
>>> doesn't really matter"...!
>>> See more detailed notes below...
>>> Tom
>>> [1] http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-schema/index.html
>>> [2] http://www.w3.org/TR/2004/REC-webarch-20041215/
>>> [3] http://dublincore.org/documents/dcmi-namespace/
>>> ======================================================================
>>> Notes from: RDF Schema 1.1 Editors' Draft [1]
>>> -- "The core vocabulary is defined in a namespace informally
>>>  called 'rdfs' here. That namespace is identified by the URI-Reference
>>>  http://..." (Section 1).
>>> -- "Since RDF vocabularies are expressed as RDF graphs,
>>>  vocabularies defined in other namespaces may be used to provide richer
>>>  documentation." (Section 3.7)
>>> -- "Since URI-References are used to identify classes and properties
>>>  in the Web, it is possible to create new properties that have a domain or range
>>>  whose value is a class defined in another namespace." (Section 4)
>>> -- "The following utility classes and properties are defined in
>>>  the RDF core namespaces." (Section 5.4)
>>> -- "It does not necessarily match the content published at the RDF namespace URI
>>>  or the RDFS namespace URI, which may evolve over time." (Appendix A)
>>> The property rdfs:isDefinedBy, however, is defined with reference not to a
>>> "namespace" but to "an RDF vocabulary in which a resource is described".
>>> ======================================================================
>>> --  RDF
>>>   "RDF Namespace URI reference"
>>>       http://www.w3.org/1999/02/22-rdf-syntax-ns#
>>>   Ontology IS identified using the namespace URI:
>>>       <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf:type owl:Ontology .
>>>   Properties and classes "defined by" the Ontology URI (= Namespace URI)
>>>       <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
>>>   Namespace document
>>>       http://www.w3.org/1999/02/22-rdf-syntax-ns# describes itself as follows:
>>>       "This is the RDF Schema for the RDF vocabulary defined in the RDF namespace."
>>>   According to http://www.w3.org/TR/REC-rdf-syntax/#section-Namespace
>>>       "The RDF namespace URI reference (or namespace name) is
>>>       http://www.w3.org/1999/02/22-rdf-syntax-ns# and is typically used in
>>>       XML with the prefix rdf although other prefix strings may be used. The
>>>       RDF Vocabulary is identified by this namespace name and consists of the
>>>       following names only:..."
>>> --  FOAF
>>>   "FOAF RDF namespace URI"
>>>       http://xmlns.com/foaf/0.1/
>>>   Ontology IS identified using Namespace URI:
>>>       <http://xmlns.com/foaf/0.1/> rdf:type owl:Ontology .
>>>   Properties and classes "defined by" the Ontology URI (= Namespace URI)
>>>       <http://xmlns.com/foaf/0.1/LabelProperty> rdfs:isDefinedBy <http://xmlns.com/foaf/0.1/> .
>>>   Namespace document
>>>       http://xmlns.com/foaf/spec/
>>> --  Dublin Core
>>>   "DCMI Namespace URI" - see http://dublincore.org/documents/2007/07/02/dcmi-namespace/
>>>       http://purl.org/dc/terms/
>>>       "The DCMI namespace URI for the collection of ... DCMI properties, classes and encoding schemes..."
>>>   Ontology not explicitly declared to be rdf:type owl:Ontology but IS implicitly identified using Namespace URI
>>>   Properties and classes "defined by" the "DCMI Namespace URI"
>>>       <http://purl.org/dc/terms/title> rdfs:isDefinedBy <http://purl.org/dc/terms/> .
>>> --  SKOS
>>>   "SKOS Namespace URI"
>>>       http://www.w3.org/2004/02/skos#
>>>   Ontology IS NOT identified using Namespace URI:
>>>       <http://www.w3.org/2004/02/skos/core> rdf:type owl:Ontology .
>>>   Properties and classes "defined by" the Ontology (!= Namespace URI)
>>>       <http://www.w3.org/2004/02/skos/core#Concept> rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> .
>>>   Namespace documents
>>>       http://www.w3.org/TR/skos-reference/skos.html
>>>       http://www.w3.org/TR/skos-reference/skos.rdf
>>>       "The SKOS vocabulary is summarized in SKOS Namespace Document - HTML
>>>       Variant [SKOS-HTML], which is served from the namespace URI
>>>       http://www.w3.org/2004/02/skos/core# via content negotiation..."
>>>       "The SKOS vocabulary is a conceptual resource identified by the namespace URI
>>>       http://www.w3.org/2004/02/skos/core#. The normative definition of the SKOS
>>>       vocabulary is found in SKOS Reference (this document)."
>>> --  OWL
>>>   Namespace URI
>>>       http://www.w3.org/2002/07/owl#
>>>   Ontology IS NOT identified using Namespace URI:
>>>       <http://www.w3.org/2002/07/owl> rdf:type owl:Ontology .
>>>   Properties and classes "defined by" the Namespace URI
>>>       <http://www.w3.org/2002/07/owl#AllDifferent> rdfs:isDefinedBy> <http://www.w3.org/2002/07/owl#> .
>>>   The ontology itself is "defined by" specifications:
>>>       <http://www.w3.org/2002/07/owl> rdfs:isDefinedBy <http://www.w3.org/TR/owl2-rdf-based-semantics/> .
>>>   According to http://www.w3.org/TR/owl-features/
>>>       "Thus, the term rdfs:subPropertyOf indicates that subPropertyOf is
>>>       already in the rdfs vocabulary (technically : the rdfs namespace)."
>>>   According to http://www.w3.org/TR/2004/REC-owl-ref-20040210/#owl-uri-namespace
>>>       "The built-in vocabulary for OWL all comes from the OWL namespace."
>>>       http://www.w3.org/2002/07/owl# is "conventionally associated with the 
>>>       namespace name owl." 
>>> -- 
>>> Tom Baker <tom@tombaker.org>
> -- 
> Tom Baker <tom@tombaker.org>
Received on Friday, 4 May 2012 18:46:11 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:04:17 UTC