- From: Garret Wilson <garret@globalmentor.com>
- Date: Sun, 16 Dec 2007 18:16:48 -0800
- To: Max Voelkel <voelkel@fzi.de>
- CC: Semantic Web <semantic-web@w3.org>, Michael Rys <mrys@microsoft.com>
As mentioned elsewhere on this thread, the technique for handling
namespaces and local names in RDF is a hack that was carried over from
XML---and even then some bad decisions were made, causing problems that
could have been avoided.
The worse transgression was to form an RDF URI as a mere concatenation
of the namespace URI and the local name. As you alluded, this means it
is impossible to create a set of rules to discover what the original URI
was. A few years back it was advocated that one could search for the
last occurring URI reserved character (e.g. '#' or '/'), and assume that
everything after that character was the local name, and that everything
before and including that character was the namespace URI.
This approach is not foolproof, though. It won't work, for example, for
a namespace like that of XLink, <http://www.w3.org/1999/xlink>. Worse
yet, it requires modification of some namespaces to even create the
correct resource URI. For example, the XML Schema namespace is
<http://www.w3.org/2001/XMLSchema>, as is clearly stated at
<http://www.w3.org/TR/xmlschema-2/#namespaces>. However, in order to
create the appropriate datatype URIs (such as
<http://www.w3.org/2001/XMLSchema#int>), RDF has to pretend that the XML
Schema namespace is really <http://www.w3.org/2001/XMLSchema#> so that
the concatenation process will work; see
<http://www.w3.org/TR/REC-rdf-syntax/#rdfmodel> for example. This is not
just some esoteric example---RDF datatypes are central to RDF typed
literals (which have significant other problems, as discussed on other
threads).
On top of all that, it's logically and aesthetically unappealing to
think that <http://example.com/example#> is the URI of a
namespace---it's a corruption of the usual semantics of the fragment
identifier.
The Uniform Resource Framework (URF) explicitly took note of this
problem and was designed to avoid it. URF provides a rigorous
specification of the relationship between a resource's URI and the URI
of the namespace of which it is a part (i.e. the resource's ontology).
These rules are laid out under "Ontologies and Namespaces" at
<http://www.urf.name/>. In short, there are three types of possible
relationships between a namespace URI and the URI of a resource within
that namespace:
* namespace <http://example.com/example> and local name "resource"
yields resource URI <http://example.com/example#resource>
* namespace <http://example.com/example/> and local name "resource"
yields resource URI <http://example.com/example/resource>
* namespace <http://example.com/example#fragment> and local name
"resource" yields resource URI
<http://example.com/example#fragment/resource>
These rules provide deterministic transformations from namespace/local
name to resource URI and back with no loss of information. It provides
namespace URIs that look like normal URIs (not some strange URI with an
empty fragment identifier). And it allows useful relationships, like
modeling the relationships among a Java package, class, and a class's
properties using the same namespace/local name paradigm:
<java:/com/example/package/>
<java:/com/example/package/Class>
<java:/com/example/package/Class#property>
Garret
Max Voelkel wrote:
> Hey semantic web,
>
> is there anywhere a general rule *defined* how to expand
> namespace-prefixed-XML-localnames such as xs:dayTimeDuration into a full
> (possibly de-referencable) URI?
>
> ----------
> in http://www.w3.org/TR/xpath-datamodel/#notation it says:
> ----
> The following bindings are assumed.
> xs: bound to http://www.w3.org/2001/XMLSchema
> ----
>
> This implies from XML namespace rules that e.g.
> xs:dayTimeDuration expands to
> http://www.w3.org/2001/XMLSchemadayTimeDuration
> which is not a dereferencable URI.
>
> Is this correct and intended? For RDF, one uses usually namespace declarations
> that end with "/" or "#".
>
> Michael Rys responds:
> MR> Namespace prefixes in XML are not concatenated to the names in the way that
> MR> you do it below. Instead they form a tuple
> MR> (namespace-uri, local-name).
>
> MR> There are different expanded name notations being used, such as
> MR> {http://www.w3.org/2001/XMLSchema}dayTimeDuration,
> MR> which is non-dereferencable, or
> MR> http://www.w3.org/2001/XMLSchema#dayTimeDuration which can be.
>
> Thanks a lot for your quick response. Is there a sort of authorative "expanded
> name notation"? Especially one talking about "#" would be great to
> read/reference. I have no idea what to Google for.
>
> [1] 'defines' (but only in the examples) the rule: <url> = <namespace> + <localname>
>
> [1] http://www.w3.org/TR/rdf-primer/
>
> Kind Regards,
> Max
> --
> Max Völkel
> voelkel@fzi.de | www.Xam.de
> office +49 721 96 54-854
> mobile +49 171 83 59 678
> --
> FZI Forschungszentrum Informatik an der Universität Karlsruhe
> Haid-und-Neu-Str. 10-14, D-76131 Karlsruhe
> Tel.: +49-721-9654-0, Fax: +49-721-9654-959
> Stiftung des bürgerlichen Rechts, Az: 14-0563.1 Regierungspräsidium Karlsruhe.
> Vorstand: Prof. Dr.-Ing. Rüdiger Dillmann, Dipl. Wi.-Ing. Michael Flor
> Prof. Dr. Dr.-Ing. Jivka Ovtcharova, Prof. Dr. rer. nat. Rudi Studer
> Vorsitzender des Kuratoriums: Ministerialdirigent Günther Leßnerkraus
>
>
>
Received on Monday, 17 December 2007 02:18:31 UTC