Re: Review and URN assignment for draft-seantek-xmlns-urn-00

Sean Leonard <> Wed, 12 November 2014 17:26 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 1A1721A8F3D for <>; Wed, 12 Nov 2014 09:26:46 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.401
X-Spam-Status: No, score=-1.401 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_35=0.6, J_CHICKENPOX_42=0.6, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001] autolearn=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Dek-M9OiKRt6 for <>; Wed, 12 Nov 2014 09:26:43 -0800 (PST)
Received: from ( []) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 07F061A8AEF for <>; Wed, 12 Nov 2014 09:25:54 -0800 (PST)
Received: from (unknown []) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPSA id B9D1850A84; Wed, 12 Nov 2014 12:25:52 -0500 (EST)
Content-Type: text/plain; charset="windows-1252"
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
Subject: Re: Review and URN assignment for draft-seantek-xmlns-urn-00
From: Sean Leonard <>
In-Reply-To: <>
Date: Wed, 12 Nov 2014 07:25:52 -1000
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <> <> <>
To: "Dale R. Worley" <>
X-Mailer: Apple Mail (2.1878.6)
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: discussion of new namespace identifiers for URNs <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 12 Nov 2014 17:26:46 -0000

On Nov 12, 2014, at 7:02 AM, Dale R. Worley <> wrote:

>> From: Sean Leonard <>
>>> I assume that means "This draft provides an XML namespace designer
>>> with the option...", even though the "now" in that sentence is
>>> ambiguous -- does it refer to the time before adoption of the draft or
>>> after?
>> Yes. After adoption of the draft.
> Does that mean, "We will edit the text to make that clear.”?


>> That is correct. However, urn:oid (and for that matter, oid: ) and
>> tag: URIs are not really used in practice.
> It's true that they're rarely used, but whose problem is that?  There
> should be no reason that they *can't* be used.  The real problem (as
> you say in text I deleted) is that they're not *mnemonic*.  As you
> note below, the mnemonic feature is crucial for your proposal.

I agree that being memorable is a goal. However, it is not the only goal. At least one other key goal that the proposal describes is associating XML namespace semantics with the URI, namely by including a description of the namespace in the registry, and by operationally associating the URN with URIs that might have more information (such as schema definitions or syntax specifications).

A tag: can be used as an XML namespace, but if you pass tag: to an URI dereferencer, it’s not going to retrieve any representations. The idea is that if you pass urn:xmlns to a URN resolver, the URN resolver will be able to get relevant URIs by association.

>> So to answer the question specifically: the namespace is beneficial
>> to XML namespace designers who want to have short, mnemonic, unique,
>> long-lived URIs, and to XML namespace users (that would be “everyone
>> on the Internet”) who rely upon them. You can still use other URIs
>> for XML namespaces, but this URN namespace is tailor-made to satisfy
>> the needs of that subset of users.
> I'd like to see that written into the document as well, as that is the
> real description of the purpose of the draft.

Ok. Good point.

> Is there truly a lot of demand for these, in particular the "short,
> mnemonic" aspects?  I can't think that I would care myself, and I've
> named XML namespaces.  (I used http: URLs based on the company's
> domain.)

It gives more options.

One reason I wrote it was to deal with the brouhaha on about fragments (so-called “f-components”). XML namespaces don’t use fragments much, but RDF does. This proposal represents one attempt to deal with fragments in a systematic and URN + URI-compatible way.

(Note that ? is not a valid character in an XML Name, so the issue of so-called “q-components” is conveniently avoided.)

>> Compare for “Foo Description Language Version 2":
>> urn:xmlns:acme:foodlv2
> I think to a degree the comparison is unfair.  Acme Corp. has the
> domain name "" because "" was taken.  Which means
> that "urn:xmlns:acme" was likely to also have been taken, so Acme
> Corp. will be using "urn:xmlns:acmecorp:..." or some such for their
> URNs.  That lengthens the final example to
> "urn:xmlns:acmecorp:foodlv2", which is still the shortest but is now
> only 3 characters shorter than example 2.

That is true…but the comparison may not necessarily be unfair.

The minimum HTTP URL would be:

= 22 chars

actually, the REAL minimum URL would be:

= 21 chars

thanks to ICANN’s new policy/cash cow of charging for TLDs. :)

the most minimum URNs would be:

= 22 chars


= 17 chars

or (if you want to compress foodlv2, which you can because it’s in the acme-divided area)

= 16 chars

The human mind wishes to fill in gaps and organize things into neat categories. Any of these could be acceptable. But the proposal has less to do with minimum characters, and more to do with avoiding encoding things that don’t matter to the task at hand.

An issue with HTTP URLs is that you’re sharing a namespace with the web server, and with the DNS infrastructure. I.e., requires reserving some directory for XML things instead of regular webpages; it also requires that you keep on paying for if you want the “association” semantics (as well as the uniqueness guarantees: the next owner of could devise another unrelated foodlv2 spec, and would never know that someone else came beforehand to define a prior one). And since it’s .co, it depends on the geopolitical situation with the nation of Colombia. (Compare with .ly, which was quite popular a couple of years back.) These are unnecessary dependencies for a one-off identifier.

If a random identifier is sufficient,
will suit any namespace identifier purpose just fine. But the human mind is going to reject that in favor of something with a bit more internal and external meaning. (Internal = it has names like “acme” in it; External = you can dereference the URI to get useful things like syntax specifications or schema definitions.)