- From: Richard Cyganiak <richard@cyganiak.de>
- Date: Fri, 4 May 2012 00:00:31 +0100
- To: Thomas Baker <tom@tombaker.org>
- Cc: RDF Working Group WG <public-rdf-wg@w3.org>
Tom, Here's my take on this. The RDF 1.1 Concepts draft defines “RDF vocabulary”: [[ 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. Some namespace IRIs are often conventionally associated with a specific namespace prefix. 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. It is a useful convention to make the vocabulary namespace IRI resolvable and publish a document there, and describe the vocabulary's terms in that document. The document is known as a namespace document. As usual, it's a good idea to provide HTML *and* RDF representations of a namespace document. There is no such thing as “an RDF namespace”. There is *the* RDF namespace, which is the set of all IRIs starting with “http://www.w3.org/1999/02/22-rdf-syntax-ns#”. 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). 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. 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. 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. 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> >
Received on Thursday, 3 May 2012 23:01:04 UTC