Subject: URN syntax: <hex>. URNs and URIs

From: Dieter Köhler <[email-masked]>
Date: Wed, 7 Aug 2002 13:56:33 +0200

Section 2.3.1 of RFC 2141 states: "The presence of an "%" character in an URN
MUST be followed by two characters from the <hex> character set."  However, this
requirement is not met by the syntax notation:

   <NSS>         ::= 1*<URN chars>

   <URN chars>   ::= <trans> | "%" <hex> <hex>

   <trans>       ::= <upper> | <lower> | <number> | <other> | <reserved>

   <reserved>    ::= '%" | "/" | "?" | "#"

It should rather read:

   <NSS>         ::= 1*<URN chars>

   <URN chars>   ::= <trans> | <escape>

   <trans>       ::= <upper> | <lower> | <number> | <other> | <reserved>

   <reserved>    ::= "/" | "?" | "#"

   <escape>      ::= "%" <hex> <hex>

I think it would be important to clarify this in a update RFC, because if only
following the formal syntax given in 2141 URNs are not conforming to the URI
specification as described in RFC 2396.  A related issue is that RFC 2141 does
not explicitly explain its relation to RFC 2396.  I guess the intention was that
URNs form a class which is a subset of the URI class.

Dieter Köhler, M.A.

Institute of Philosophy
University of Karlsruhe
Germany