- From: Roy T. Fielding <fielding@gbiv.com>
- Date: Fri, 11 Feb 2005 12:17:32 -0800
- To: W3C TAG <www-tag@w3.org>
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