- From: Clark C. Evans <clark.evans@softwareag-usa.com>
- Date: Wed, 17 May 2000 11:22:27 -0400 (EDT)
- To: Tim Berners-Lee <timbl@w3.org>
- cc: John Cowan <jcowan@reutershealth.com>, "Simon St.Laurent" <simonstl@simonstl.com>, xml-uri@w3.org, cce@clarkevans.com, Michael Champion <mike.champion@softwareag-usa.com>, Jonathan Robie <jonathan.robie@softwareag-usa.com>
Here is an attempted demonstration for the
stated assertion:
Relative URIs were never intended as a namespace name.
...
Exhibit A: Section 2 of the specification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"[Definition:] The attribute's value, a URI reference, is the
namespace name identifying the namespace. The namespace name,
to serve its intended purpose, should have the characteristics
of uniqueness and persistence. It is not a goal that it be
directly usable for retrieval of a schema (if any exists). An
example of a syntax that is designed with these goals in mind
is that for Uniform Resource Names [RFC2141]. However, it should
be noted that ordinary URLs can be managed in such a way as to
achieve these same goals."
First, it says that the attribute's value *is*
the namespace name identifying the namespace.
Then, it says that the namespace name should
be unique and persistent.
Therefore, the attribute's value should be
unique and persistent.
Unfortunately, a relative URI, as an attribute
value, is not unique; it must be absolutized
for uniqueness. And this process is not mentioned
in the definition.
Further, it clearly states that using the "namespace name"
as a reference for resource retrival is *not a goal*
And it further points out that "ordinary URLs *can* be
managed in such a way as to achieve these same goals".
This last sentance seems to drive home the point that
not all URIs make acceptable namespace names.
Lastly, the spec calls the construction a "namespace name"
*not* a "URI reference".
Exhibit B: Section 1 of the specification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"[Definition:] URI references which identify namespaces are
considered identical when they are exactly the same
character-for-character.
Note that URI references which are not identical in this
sense may in act be functionally equivalent. Examples
include URI references which differ only in case, or
which are in external entities which have different
effective base URIs."
First, it is clear that describing the notion of "identity"
is the primary goal of any naming system. Here it is
clear; a URI reference, when used to identify namespaces,
are identical when they are the same character-for-character.
It is obvious that relative URIs cannot therefore be used
for the "identity" operation on namespaces in a meaningful
way. And since the entire goal of the spec is to define
"identity"; it should be clear that the spec never intended
for relative URIs to be used.
One might construe the second part of the above paragraph
to be "vague enough" to allow relative URIs. However,
this second part is discussing URIs *in-general* ... it
does not qualify the URIs being discussed to those which
identify namespaces.
Assume that the second part of the definition was talking
about non-identical URIs used as a namespace names. This
leads to a contradiction. The whole purpose of a namespace
specification is to define the "identity" operator. Thus,
functional equivalent in the namespace context means
"equivalent under the identity operator". In this case,
a namespace name cannot be both "not identcal" and
"functionally equivalent" at the same time. Thus, this
second part was clearly discussing URIs used for other
non-namespace purposes... such as pointing to a resource
such as a schema.
Exhibit C: Section 5.3 of the namespace specification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"In XML documents conforming to this specification, no
tag may contain two attributes which 1. have identical
names, or 2. have qualified names with the same local
part and with prefixes which have been bound to namespace
names that are identical."
If relative namespaces are allowed; and this clause
becomes inconsistent. Given the care the specification
authors gave to their document; I doubt that this would
have made it through the editing process as-is if
relative URIs or an absolutizing mechanism were viewed
in the realm of possibilities.
Exhibit D: Examples in the namespace specification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Not one example was given that used relative URIs
Exhibit E: Interaction with XSLT/XPath
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Not one of these specs talk about relative URIs or
how name matching would work; leaving the reader to
assume that the "identity" operator defined in the
namespace specification is the only tangeable method
for acertaining equivalence of named nodes.
Exhibit F: Discussion on XML-DEV
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I do not recall one post during the time that this
specifiction was under discussion before recommendtation
status where relative URIs were considered. If there
was a post regarding relative URI interpretation, it
would have raised all types of questions before it was
moved to a recommendation. In short, full URIs were
sold... not relative URIs. Vague or not, this is the
context in which the specification was approved.
Exhibit G: Use Cases
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
So far, on this list, the primary use-cases for relative
URIs seem to be based on some notion of resource retrival.
In this context, relative URIs are indeed very useful.
However, the specification specifically states that
retrival of a schema or other contextual document by
the namespace was *not a goal* ; thus the primary
use case presented does not help solve the need that
namespace spec is fulfilling.
I assume relative URIs will be very helpful in the Schema
specification, where the retrival of a schema document is
the primary use of the URI.
Exibit H: Current Discussion
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
That there is suprise about relative URI usage speaks
for itself. It was not expected.
...
While one of these may be proof by themselves; taken together,
I feel that they produce a solid picture that relative
URIs were not intended by the specification authors nor its
approvers as namespace names. Therefore, I see this assertion
as proven. I feel that calling the spec "vague" does us
a dis-service.
If relative URIs are to be used as part of a namespace
specification, I feel it should be a new (or revised)
recommendation. The current spec is clear enough.
Best,
Clark Evans
P.S. My opinions may not be the opinions of my employer.
Received on Wednesday, 17 May 2000 11:50:48 UTC