- From: Tim Berners-Lee <timbl@w3.org>
- Date: Tue, 30 May 2000 09:50:45 -0400
- To: "Clark C. Evans" <cce@clarkevans.com>, <michaelm@netsol.com>
- Cc: <abrahams@acm.org>, <xml-uri@w3.org>
-----Original Message----- From: Clark C. Evans <cce@clarkevans.com> >Why do we need this injective quality? Beacuse in our >domain (namespaces), we wish the following conditional >to be a tautology: > > "If the name X and the name Y are different, > then we know the resource identified by X is > different from the resource identified by Y" I disagree. In fact, I would say that you can't make a system which scales globally in a decentralized way with that tautology. [[Two problems with vocabulary, by the way: (1) My definition of a resource is that exactly identified by a URI and so URIs and resources are in 1:1 mapping. A resource is not a file. A file may be a representation of a resource. (2) When you talk about resources being "different" then one can make a useful question out of it by writing "not equivalent", and defining the operations for which euqivalence is desired. I have discussed this earlier in http://lists.w3.org/Archives/Public/xml-uri/2000May/0415.html http://lists.w3.org/Archives/Public/xml-uri/2000May/0594.html and made a defininition equivalence of namespaces in http://lists.w3.org/Archives/Public/xml-uri/2000May/0734.html ]] You have to build the web without this tautology. This follows in general from the "anyone can say anything about anything" maxim, but specifically, as different parties use and control different parts of various naming schemes, someone is at liberty to allocate one of their names to something of yours. You can't just legislate agianst this. Discovery that two names actually apply to the same object (the Moning Star and the Evening Star, for example) is part of the social process. >The problem with URLs is that, in general, they >lack this injective quality. In other words, >I can find N distinct URLs that identify >(resolve to) the same resource. That is life in the big city. The problem is with the big city, noteth URIs. The goot news is that you can do everything you need to do using u1 = u2 ==> R1 == R2 as I said in previous messages. The only nasty bit for XML is that of the uniqueness of attributes. It is the only time tha the DOM needs to compare namespaces. It leads to the phenomenon of errors being discovered on the basis of new information. Actually, I expect this to be a fairly rare problem in real XML documents, so I think string comparison of absolute URIs will work fine for well-formedness. If you really go down the that road, though, of asking what would happen in the case of attributes which have the same localname and are in anamespaces which are in some way equivalent, you find that it is more complicated than it fisrt seems at first. After all, if an XML document is well-formed when and element has two size attributes, one from SVG 1.0 and the other from SVG 2.0 it may still have problems at the application layer because the attributes actually mean the same thing. One attribute can be defined in the text of a spec to have the same *effect* as another, and well-formedness checking isn't going to catch that. So upper layers are going to have to be able to watch for that anyway. Well-formedness checking can only ever meet a certian standard, and string comparison of absolutie URIs seems to be a reasonable level IMHO. To me the only questoin now is whether relative URIs should be absolutized (which I originally preferred) or warned against (which I am coming around to as I see the wealth of ways in which they have been treated to date. Though my plea for real documents which would break on absolutizing led to nothing). > "If the name X and the name Y are the same, > then we know the resource identified by X and > the resource identified by Y are the same." This we do have. >And, for reference, the "surjective" quality of >the mapping described gives our domain this property: > > "For any resource X, there is at least one > name X' such that X' identifies X." This follows if you use my definition of resource of course. If you mean, be resource, an HTTP entity body or a (mime type, bits) pair then you can always generate a data:mime-type;body URI for it in principle so while that might hold it isn't a sane operation to use from the engineering point of view. The web is a system of which no one has full knowledge, so there are some global properties you could discuss for a closed system which don't make sense on the web. What we do have, is, "For any resource X, I (an agent) can cook up a URI u and define u to refer to X". Tim Berners-Lee
Received on Tuesday, 30 May 2000 09:49:26 UTC