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

On Mon, May 29, 2000 at 11:50:56PM -0400, Clark C. Evans wrote:
>On Mon, 29 May 2000, Michael Mealling wrote:
>>>>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,
>>
>>Ok. I'll ask this question again: are you suggesting that your desire
>>for a particular behavior should by its nature deny me the ability
>>to choose a different behavior?
>
>Freedom is a balance of concerns. 

So your saying that your desire for your feature somehow outweighs mine? 
To turn it around, is their some feature that I desire (use of URIs
in the general case) that causes you to not be able to do what you want?

>>>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.
>>
>>Umm.... that's a simple restatement of my conditional...
>
>Unless I am mistaken, in your conditional there could be
>some case where the two resources are equal; the statement
>I wrote, this set is empty.
>
>>Are you instead wanting to say this:
>>
>>If (x != y) then (x' can never equal y' in any circumstance whatsoever)?
>
>Yes.

Your basically saying that any resource x' can only have one name.
Which isn't enforceable unless you're running some kind of dictatorship.

I can't imagine any possible service that would require this level
of identifier to resource mapping....

>>If so then that's called a perfect hash function and they don't exist
>>unless x = x'. I.e. you want the impossible. Plus, who really cares
>>if x' and y' might be equal according to some third part. 
>
>Take the set of publications (for example, a class of 
>books).  For each publication assign one and only one 
>unique ISBN such that there is an bijection between the 
>set of publications and the set of ISBNs.  Certainly a 
>paperback and hardcover editions have seperate ISBNs; 
>but I am considering these seperate publications.

Sure. But what purpose does that serve? In the case of the ISBN
if a book goes through a new printing its sometimes given
a new ISBN, other times it isn't. Sometimes during that new
printing the paper will change or a typo will get fixed.
Would you require them to issue a new ISBN or not? 
Why do you care either way? Some people do care (librarians and
book collectors) but others don't. If the publisher
decides that these two entites are equal for all purposes
then who are you to decide otherwise?

>In the general case, perfect hash functions may not exist;
>however, if the domain is finite or if the function can
>adjust to the growth of the domain (by adding additional
>mappings as needed), then a perfect has does indeed exist.
>The whole of algebraic induction rests upon this fact.

Sure. But who cares? What actual function are you going for
that needs this?

I guess a more fundamental question would be this:
are you rejecting the rather fundamental concept of a resource 
having mutliple representation formats and policies?

>>URNs are URIs. A URN is simply a URI scheme which has the 
>>required properties of non-reassignability and uniqueness. 
>
>Unless I am mistaken, I think this is exactly what we want
>for namespaces; does it have the injective characteristic
>that I am describing (the functional and surjective 
>characteristics being a property of all URIs )?
>
>>I.e. once a URN is bound to its resource, at any time in 
>>the future, you MUST assume that it is still bound to that resource.
>
>Hmm.  Is it possible to have 2 URNs bound to the same resource,
>or is that allowed?

Yep. A given resource can have as many names as anyone wants to give it...
No one ever thought to attempt to enforce an injective quality to names.
One could design a URN namespace* that did this but there's nothing
you can do to keep someone else from assigning another URN to it
from some other namespace....

-MM

* NOTE: URNs also have something called 'namespaces'. They have no relationship
to the use of the term in XML Namespaces. Read RFC2141 if you need to know
the difference...

-- 
--------------------------------------------------------------------------------
Michael Mealling	|      Vote Libertarian!       | www.rwhois.net/michael
Sr. Research Engineer   |   www.ga.lp.org/gwinnett     | ICQ#:         14198821
Network Solutions	|          www.lp.org          |  michaelm@netsol.com

Received on Tuesday, 30 May 2000 10:48:05 UTC