Re: Injective Quality (Was: Re: URIs quack like a duck)

On Mon, 29 May 2000, Michael Mealling wrote:
> On Mon, May 29, 2000 at 07:15:09PM -0400, Clark C. Evans wrote:
> > 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.
> 
> Just because two identifiers identify the same sequence of bits
> doesn't mean they're equal. One may give different levels of 
> service, policy, legal resource, jurisdiction, etc than the other.

This is a very good explanation!  However, I must say that 
your average XML user would define the "resource" for an 
"http:" URL as the text returned from the request.  And you 
must admit, this does have some validity to it.   For this 
definition, URLs do not have the injective property referred.

> I.e. its a statement about uniform equality:
> 
> If uri-canonicalization-function(uri1) = uri-canonicalization-function(uri2)
> then in ALL cases you can assume that, at that  time, the resource identified 
> by iri1 and uri2 are equal
> 
> If uri-canonicalization-function(uri1) != uri-canonicalization-function(uri2)
> then, <strong>based on that information alone</strong>, there is NO case in 
> which you can assume the two resource are equal.

It is this second (weak) property of URIs which makes it poor 
for namespaces.  What we desire is a much stronger version,

If uri-canonicalization-function(uri1) != uri-canonicalization-function(uri2)
then, in ALL cases you can assume that, at that time, the resource identified
by iri1 and iri2 are NOT equal.

equivalently, I feel that this (very strong) property is needed...
  
  For all x,y in set-of-acceptable-URI,
      (x != y) implies ( x' != y' )
  where 
    z' is the resource identified by the resource z.

> > I am reading into your example above this
> > injective quality.  Am I correct? 
> 
> Yes. As far as what you are allowed to assume based on what the
> URI specification says once you've done the canonicalization step.

I was actually referring to URNs.  Do URNs have the *strong* 
property described above?  If so, then perhaps the Namespace 
spec should be updated to use URNs instead of URIs.  

If not, then what properties do URNs have that more 
general URIs do not?


Thank you again,

Clark

Received on Monday, 29 May 2000 20:50:10 UTC