- From: Richard Cyganiak <richard@cyganiak.de>
- Date: Fri, 4 May 2012 19:45:12 +0100
- To: Thomas Baker <tom@tombaker.org>
- Cc: RDF Working Group WG <public-rdf-wg@w3.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? http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-concepts/index.html#referents >> 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? Best, Richard > > 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