Subject: [URN] About RFC2168

From: lislee <[email-masked]>
Date: Fri, 02 Apr 1999 17:52:25 +0900

I'm a student interested in URN system, especially in URN resolution
system.
I am preparing for my master's thesis about URN system.

After reading   RFC2168(Resolution of Uniform Resource Identifiers using
the Domain Name System)  ,
and   Internet Draft(The Naming Authority Pointer (NAPTR) DNS Resource
Record)  , I can roughly understand how to resolve URN using NAPTR RR.

I have some question about RFC2168.
Anybody who knows about my question tell me some advice.

<In RFC2168>
Example 2
---------

   Consider a URN namespace based on MIME Content-Ids. The URN might
   look like this:

                 urn:cid:[email-masked]

   (Note that this example is chosen for pedagogical purposes, and does
   not conform to the recently-approved CID URL scheme.)

   The first step in the resolution process is to find out about the CID

   namespace. The namespace identifier, cid, is extracted from the URN,
   prepended to urn.net, and the NAPTR for cid.urn.net looked up. It
   might return records of the form:

 cid.urn.net
  ;;       order pref flags service        regexp           replacement
   IN NAPTR 100   10   ""  ""  "/urn:cid:.+@([^\.]+\.)(.*)$/\2/i"    .

   We have only one NAPTR response, so ordering the responses is not a
   problem.  The replacement field is empty, so we check the regexp
   field and use the pattern provided there. We apply that regexp to the

   entire URN to see if it matches, which it does.  The \2 part of the
   substitution expression returns the string "gatech.edu". Since the
   flags field does not contain "s" or "a", the lookup is not terminal
   and our next probe to DNS is for more NAPTR records:
   lookup(query=NAPTR, "gatech.edu").
<In RFC2168>

The NAPTR record has a string 'cid', so 'cid.urn.net' is retrived at the
1st look-up.
But I guess 'cid' is not a resolver of that URN, only a NID.
So it has no flag value, and no replacement value, but has regexp value.

And 2nd NAPTR look-up is processed with the string 'gatech.edu'.
My first question is that why the 2nd look-up is processed with
'gatech.edu', not else string?
How does the \2 part of the substitution expression return the string
"gatech.edu"?
And when the replacement field has value, and when it doesn't have
value?

I can imagine that I'll make URN as like <urn:k-univ:yonsei:d/lis/99-1>.

'k-univ' means "Korean Universities", and 'yonsei' means "Yonsei
University".
And the resolver of this URN is yonsei., its URL is
<http://www.yonse.ac.kr>.
And 'k-univ' is not a resolver, it's URL is <http://www.k-univ.ac.kr>
But I register NID of this URN as 'k-univ', because all the URNs of each
university should be managed in
'k-univ'.

If 'k-univ' is a resolver of that URN, maybe the result of querying
'k-univ.urn.net' is as follow.

k-univ.urn.net
;;                 order   pref  flags
service                       regexp               replacement
IN NAPTR   100     10   "s"    "http+N2L+N2C+N2R"
''''             http.www.k-univ.ac.kr

And client can discover the resolver of that URN, and access it to
http.www.k-univ.ac.kr.

But 'k-univ' is not a resolver, so the result of querying
'k-univ.urn.net' is like that(it is my imagination)

k-univ.urn.net
;;                 order   pref   flags
service                     regexp                           replacement

IN NAPTR   100     10     ""              ""              "/urn:k-univ:
'^.*yonsei.*$/\?/?"            .

Because, 'k-univ is not a resolver of that URN, flags field has no
value, and replacement has no value, and
regexp has some value. (I don't know exactly what the value is. the
example is my free
expression.)

And record returned from the query on "yonsei" might look like:

yonsei IN NAPTR
  ;;              order pref flags
service                      regexp                  replacement
 IN NAPTR 100   10   "s"      " http+N2L+N2C+N2R"
.                http.www.yonse.ac.kr

And client can discover the resolver of that URN, and access it to
http.www.yonsei.ac.kr.

Is there any problem above my imagination?
When I make my URN, should not I use the character '/' which is a
reserved character in URN syntax(RFC2141).
Or should Iuse "%" encoding?

My 2nd question is like that:

I chance to meet the internet-draft,  Handle System: A Persistent Global
Name Service Overview and Syntax.
I think Handle System doesn't use RDS(Resolver Discovery Service),
instead it resolves handle(a kind of
URN) directly.

Anybody who knows the difference of NAPTR and Handle system tell me the
difference.
And in Handle System syntax, the character '/' is used.
I know that the character '/' is a reserved character in URN
syntax(RFC2141).