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

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 16:19:56 UTC