Re: Significant W3C Confusion over Namespace Meaning and Policy

What does a Namespace URI identify?

In my opinion, a namespace URI identifies a name space.  That is
circular, of course, but the reason I say that is because there
is a significant difference between a name space (an area in
which names can be defined) and a name set (a set of names that
has been defined).

URIs are a form of name space.  They start with a scheme, which
defines its name space by way of a scheme specification.  The
specification may further delegate name spaces using registration
mechanisms such as DNS.  In turn, the delegated authorities may
further delegate their own name space via hierarchy.  For example,
the following are all spaces for names

    http:
    http://example.com/
    http://example.com/foo#
    http://example.com/users/fred/

and this is by no means unique to http.  In fact, the reason we
say that *any* URI can be used as a namespace URI is because
what the namespace URI actually identifies is itself -- the URI.

The purpose of namespace identification is not to identify a
particular set of names, but rather to distinguish the names
within that space from all other similar names.  That is true
regardless of whether we think of the namespace URI as a prefix
for names within that space or as a { URI, name } pair.
The URI both identifies the namespace and embodies the namespace.

In particular, XML schemas do not define namespaces and are not
identified by namespaces, so the effect that a new attribute may
have on potential schemas for a document format is an indication
that the document format *might* need to be versioned, not an
indication that the namespace must be changed.

If we think of the namespace as a resource, then it has state
and that state may vary over time.  It is therefore natural to
think of representations of that resource being the set of names
that are defined at a specific point in time.  The same definition
of naming and name spaces can be found within a directory for
any modern filesystem, information service, or registry, with
varying demands on the persistence of names within those spaces.

There are good reasons for requiring that the definition of a
name within an XML namespace must not be changed once its first
definition has been deployed in practice.  I do not know of any
justifiable reason why the set of names within a namespace
cannot be extended without changing the definition of other
names within that space, and thus without changing the
distinctiveness of those names within their own namespace.


Cheers,

Roy T. Fielding                            <http://roy.gbiv.com/>
Chief Scientist, Day Software              <http://www.day.com/>

Received on Friday, 11 February 2005 20:17:35 UTC