Subject: [URN] Java URN Framework Impl Available (V0.2)

From: Justin Couch <[email-masked]>
Date: Tue, 22 Dec 1998 23:13:19 +0800

Long promised, finally delivered...

This is the second release of a URN/URI implementation in Java.

The first release was oriented purely around the UMEL requirements and
(I don't think was notified to this list). Now, having undergone an
extensive re-write, it now is a much more general implementation. 

While you're downloading (then read on):

http://www.vlc.com.au/~justin/java/urn/urn_0.2.zip
http://www.vlc.com.au/~justin/java/urn/urn_0.2.tar.Z

ftp://ftp.vlc.com.au/pub/urn_0.2.zip
ftp://ftp.vlc.com.au/pub/urn_0.2.tar.Z

(BTW, this is the _only_ documentation, apart from the javadoc, that
comes with the classes. Don't delete this email!)

As you may have gathered from my questions over the past few weeks, the
implementation today is more interested in being a framework for
gathering multiple RDS implementations and dealing with the associated
high level management problems this generates rather than one particular
implementation. Therefore, using the wonderful :) plug & pray
architecture of the code, you can quickly test different implementations
of the same RDS without recoding your application. It's actually built
so that you can change most of the parameters on the fly within your
code (eg changing system properties without restarting the app) with a
moderate level of optomisation built in. 

The design has been heavily influenced by the java.net.URL class and
general Java coding philosphy. That is, there are many ways to acheive
the same end. For example, adding an RDS can use either a factory
producer, a system property or a default package name. The order for
querying RDSs may be either through a file or a system property. etc
etc. I'm trying to take a holistic view to URN/URL/URI/URC rather than
just trying to bolt bits to the outside of the current java language
stuff. Hence you'll see a new URL class there that replaces the standard
Java one (although currently the method signatures look identical!). At
this stage, I'm only partly holistically implemented.

At this stage, the code is going out, not for application use, but for
concept testing. That is, am I barking up the right tree? Most of the
design decisions have been based on educated guesses as I can't find any
scrawlings on dealing with most of the issues relating to dealing with
multiple RDS's. I intend to write up something about it over the next
week, but haven't yet (blood level getting high in the caffine system).
Also, I feel that its raised some questions that I'll be directing at
specific people.

With the code is a very, very simple resolver for a very small case for
the vrml NID and uses a file based definition of the resolution that can
be done (it doesn't do I2R, only I2L). The idea is that you use this as
a guide to implementing your own. I do intend to implement other
resolvers based on DNS and JINI, but that comes at some time later after
I have the basic framework complete. For example, I haven't started
implementing the ResourceConnection stuff yet.

To run the test code (after the usual classpath setup) try the
following:

java -Durn.resolve.pkgs=org.vrml.umel.net.resolve \
-Durn.resolve.order=file URNTest

which should produce a bunch of ugly text output.

For the mop up: The package will definitely change from its current. I'm
split as to whether I should do something like org.ietf.uri.net or use
one of several different company based packages. 

Licensing - Ha, what's that. If the code works, use it. Ignore anything
in the file. It's a mess and every one says something different. If you
do use it and do some debugging/mods, I'd love to know about it. If you
implement RDS's that you'd like to contribute to the public domain cause
let me know too! Once I get close to a V1.0 there'll be something like
BSD or LGPL put onto it. 

Finally, don't spread this too wide at the moment. It's early days yet.
Many changes, many bugs (I've only half tested most of the code). As
always, happy to answer questions (I'll be here between Christmas and
New Years - no holidays for me this year).

Enjoy!

-- 
Justin Couch
Senior Software Engineer                           VRML-Java Author
ADI Ltd, Systems Group.
[email-masked]                    http://www.vlc.com.au/~justin/
-------------------------------------------------------------------
"Look through the lens, and the light breaks down into many lights.
 Turn it or move it, and a new set of arrangements appears... is it
 a single light or many lights, lights that one must know how to
 distinguish, recognise and appreciate? Is it one light with many
 frames or one frame for many lights?"      -Suocomandante Marcos
-------------------------------------------------------------------

Date: Tue, 22 Dec 1998 23:13:19 +0800
From: Justin Couch <[email-masked]>
Organization: ADI Ltd Systems Group
To: IETF URN WG <[email-masked]>
Subject: [URN] Java URN Framework Impl Available (V0.2)
Sender: [email-masked]
Reply-To: Justin Couch <[email-masked]>

Long promised, finally delivered...

This is the second release of a URN/URI implementation in Java.

The first release was oriented purely around the UMEL requirements and
(I don't think was notified to this list). Now, having undergone an
extensive re-write, it now is a much more general implementation. 

While you're downloading (then read on):

http://www.vlc.com.au/~justin/java/urn/urn_0.2.zip
http://www.vlc.com.au/~justin/java/urn/urn_0.2.tar.Z

ftp://ftp.vlc.com.au/pub/urn_0.2.zip
ftp://ftp.vlc.com.au/pub/urn_0.2.tar.Z

(BTW, this is the _only_ documentation, apart from the javadoc, that
comes with the classes. Don't delete this email!)

As you may have gathered from my questions over the past few weeks, the
implementation today is more interested in being a framework for
gathering multiple RDS implementations and dealing with the associated
high level management problems this generates rather than one particular
implementation. Therefore, using the wonderful :) plug & pray
architecture of the code, you can quickly test different implementations
of the same RDS without recoding your application. It's actually built
so that you can change most of the parameters on the fly within your
code (eg changing system properties without restarting the app) with a
moderate level of optomisation built in. 

The design has been heavily influenced by the java.net.URL class and
general Java coding philosphy. That is, there are many ways to acheive
the same end. For example, adding an RDS can use either a factory
producer, a system property or a default package name. The order for
querying RDSs may be either through a file or a system property. etc
etc. I'm trying to take a holistic view to URN/URL/URI/URC rather than
just trying to bolt bits to the outside of the current java language
stuff. Hence you'll see a new URL class there that replaces the standard
Java one (although currently the method signatures look identical!). At
this stage, I'm only partly holistically implemented.

At this stage, the code is going out, not for application use, but for
concept testing. That is, am I barking up the right tree? Most of the
design decisions have been based on educated guesses as I can't find any
scrawlings on dealing with most of the issues relating to dealing with
multiple RDS's. I intend to write up something about it over the next
week, but haven't yet (blood level getting high in the caffine system).
Also, I feel that its raised some questions that I'll be directing at
specific people.

With the code is a very, very simple resolver for a very small case for
the vrml NID and uses a file based definition of the resolution that can
be done (it doesn't do I2R, only I2L). The idea is that you use this as
a guide to implementing your own. I do intend to implement other
resolvers based on DNS and JINI, but that comes at some time later after
I have the basic framework complete. For example, I haven't started
implementing the ResourceConnection stuff yet.

To run the test code (after the usual classpath setup) try the
following:

java -Durn.resolve.pkgs=org.vrml.umel.net.resolve \
-Durn.resolve.order=file URNTest

which should produce a bunch of ugly text output.

For the mop up: The package will definitely change from its current. I'm
split as to whether I should do something like org.ietf.uri.net or use
one of several different company based packages. 

Licensing - Ha, what's that. If the code works, use it. Ignore anything
in the file. It's a mess and every one says something different. If you
do use it and do some debugging/mods, I'd love to know about it. If you
implement RDS's that you'd like to contribute to the public domain cause
let me know too! Once I get close to a V1.0 there'll be something like
BSD or LGPL put onto it. 

Finally, don't spread this too wide at the moment. It's early days yet.
Many changes, many bugs (I've only half tested most of the code). As
always, happy to answer questions (I'll be here between Christmas and
New Years - no holidays for me this year).

Enjoy!

-- 
Justin Couch
Senior Software Engineer                           VRML-Java Author
ADI Ltd, Systems Group.
[email-masked]                    http://www.vlc.com.au/~justin/
-------------------------------------------------------------------
"Look through the lens, and the light breaks down into many lights.
 Turn it or move it, and a new set of arrangements appears... is it
 a single light or many lights, lights that one must know how to
 distinguish, recognise and appreciate? Is it one light with many
 frames or one frame for many lights?"      -Suocomandante Marcos
-------------------------------------------------------------------

From: Ron Daniel <[email-masked]>
To: "'Justin Couch'" <[email-masked]>, IETF URN WG <[email-masked]>
Subject: RE: [URN] Looking for URC specs
Date: Mon, 21 Dec 1998 08:18:55 -0800
Sender: [email-masked]
Reply-To: Ron Daniel <[email-masked]>

There is no URC work in the IETF. The RDF work in the W3C
is the closest thing to it.

Ron

> -----Original Message-----
> From:	Justin Couch [SMTP:[email-masked]]
> Sent:	Friday, December 18, 1998 10:46 PM
> To:	IETF URN WG
> Subject:	[URN] Looking for URC specs
> 
> Can someone please point me in the direction of URC work. I couldn't
> find any docs in the IETF drafts directory nor anything in the RFC
> list. 
> 
> -- 
> Justin Couch
> Senior Software Engineer                           VRML-Java Magic
> ADI Ltd, Systems Group.
> [email-masked]                    http://www.vlc.com.au/~justin/
> -------------------------------------------------------------------
> "Look through the lens, and the light breaks down into many lights.
>  Turn it or move it, and a new set of arrangements appears... is it
>  a single light or many lights, lights that one must know how to
>  distinguish, recognise and appreciate? Is it one light with many
>  frames or one frame for many lights?"      -Suocomandante Marcos
> -------------------------------------------------------------------

Date: Mon, 21 Dec 1998 01:31:43 -0500 (EST)
From: JR <[email-masked]>
To: <[email-masked]>
Subject: [URN] advert: adults only: Golf, Gambling and Girls
Sender: [email-masked]
Reply-To: JR <[email-masked]>

10 day tours to Asia.  First class gambling - better than Vegas.  
World class golf - courses designed by the best Americans.
The girls - the girls are fantastic; warm, friendly, beautiful and eager to meet and date 
you.
For more information, go to http://www.wilson3gtours.com or call 415-951-2465.

Date: Mon, 21 Dec 1998 00:56:42 -0500 (EST)
From: JR <[email-masked]>
To: <[email-masked]>
Subject: [URN] advert: adults only: Golf, Gambling and Girls
Sender: [email-masked]
Reply-To: JR <[email-masked]>

10 day tours to Asia.  First class gambling - better than Vegas.  
World class golf - courses designed by the best Americans.
The girls - the girls are fantastic; warm, friendly, beautiful and eager to meet and date 
you.
For more information, go to http://www.wilson3gtours.com or call 415-951-2465.

Date: Sat, 19 Dec 1998 14:46:22 +0800
From: Justin Couch <[email-masked]>
Organization: ADI Ltd Systems Group
To: IETF URN WG <[email-masked]>
Subject: [URN] Looking for URC specs
Sender: [email-masked]
Reply-To: Justin Couch <[email-masked]>

Can someone please point me in the direction of URC work. I couldn't
find any docs in the IETF drafts directory nor anything in the RFC list. 

-- 
Justin Couch
Senior Software Engineer                           VRML-Java Magic
ADI Ltd, Systems Group.
[email-masked]                    http://www.vlc.com.au/~justin/
-------------------------------------------------------------------
"Look through the lens, and the light breaks down into many lights.
 Turn it or move it, and a new set of arrangements appears... is it
 a single light or many lights, lights that one must know how to
 distinguish, recognise and appreciate? Is it one light with many
 frames or one frame for many lights?"      -Suocomandante Marcos
-------------------------------------------------------------------

From: "Fred L. Drake" <[email-masked]>
Date: Mon, 14 Dec 1998 11:19:44 -0500 (EST)
To: "Martin J. Duerst" <[email-masked]>
Cc: IETF URN WG <[email-masked]>
Subject: RE: [URN] URN Resolution in deployable networks
Sender: [email-masked]
Reply-To: "Fred L. Drake" <[email-masked]>

Martin J. Duerst writes:
 > This looks like each scheme implementation is completely independent
 > of each other. If this is true, it may not help implement new schemes.
 > If there is a library of common functions e.g. for parsing URIs,
 > great, if not, I guess it would help adding one.

  Grail is written in Python, and functions for parsing "typical"
URL-like strings are available in the Python standard library, but any
parsing of scheme-specific data would need to be added.  If the data
is similar to that of ftp: or http:, it would be trivial to handle.
It is always possible to at least pick off the NID using the existing
functions.

 > "httpAPI" seems to imply that Grail has to be recompiled/relinked for
 > each additional URN. This would be a huge development problem. Of
 > course, if Grail is in Java or something similar, then it's a different

  Grail is written in Python, so adding modules can be done at
runtime.  For example, if you come across a new scheme, foobar:, you
can go find (or write) a handler, foobarAPI.py, and place the file in
either of two directories (depending on permissions), and then access
foobar: resources.  All without restarting Grail.

 > Also, the basic approach seems to be "one specific way of resolving
 > for each schema", which is probably more appropriate for URLs than
 > for URNs (where as far as I understand, the idea seems to be to
 > move avay from specifics of resolution to more general resolution
 > that may be more flexible to deploy).

  Given a general resolution package, I think it would be easy to
create a resolver for Grail (esp. if people actually use the URN:
prefix).  Perhaps it's time for me to look further into NAPTR and
accessing DNS directly from Python.

 > It may be that it's not a problem in the near future, but because
 > the standards are written the other way round, and there is no
 > check in the registration procedures as far as I know, there
 > is a high probability that it will be a problem somewhere sooner

  This is of some concern.  I'll have to think about how to change the 
implementation to deal with the separation better.
  Thank you for your comments!

  -Fred

--
Fred L. Drake, Jr.	     <[email-masked]>
Corporation for National Research Initiatives
1895 Preston White Dr.	    Reston, VA  20191

Date: Sat, 12 Dec 1998 08:00:43 +0900
To: "Fred L. Drake" <[email-masked]>
From: "Martin J. Duerst" <[email-masked]>
Subject: RE: [URN] URN Resolution in deployable networks
Cc: IETF URN WG <[email-masked]>
Sender: [email-masked]
Reply-To: "Martin J. Duerst" <[email-masked]>

At 12:51 98/12/08 -0500, Fred L. Drake wrote:

>   Perhaps this is a good chance for me to describe the mechanisms
> we've used in the Grail Internet browser
> (http://grail.cnri.reston.va.us/grail).  For those who aren't familiar 
> with Grail (just about everybody ;), I'll just mention that it is a
> graphical browser that is intended to allow experimentation with a
> number of things, including Web-related protocols (including URN
> resolution).
>   Grail provides an extension architecture for URI schemes.  Each
> scheme is implemented as a separate module.  For example, HTTP is
> implemented in a module called "protocols.httpAPI".  Support for CNRI
> Handles (hdl:), Digital Object Identifiers (doi:), and IETF documents
> (ietf:) are included with the browser; additional modules that
> conform to a documented interface can be added to an installed copy of 
> Grail.

This looks like each scheme implementation is completely independent
of each other. If this is true, it may not help implement new schemes.
If there is a library of common functions e.g. for parsing URIs,
great, if not, I guess it would help adding one.

"httpAPI" seems to imply that Grail has to be recompiled/relinked for
each additional URN. This would be a huge development problem. Of
course, if Grail is in Java or something similar, then it's a different
thing.

Also, the basic approach seems to be "one specific way of resolving
for each schema", which is probably more appropriate for URLs than
for URNs (where as far as I understand, the idea seems to be to
move avay from specifics of resolution to more general resolution
that may be more flexible to deploy).

>   One aspect of Grail's support for URNs which may be somewhat
> problematical is that there is no distinction between URN schemes and
> URL schemes.  This means that URN:hdl:foo is the same as hdl:foo.  I
> don't expect that this is likely to be a significant problem in the
> near future; have others dealt with this issue in their
> implementations?

It may be that it's not a problem in the near future, but because
the standards are written the other way round, and there is no
check in the registration procedures as far as I know, there
is a high probability that it will be a problem somewhere sooner
or later.

Regards,   Martin.

#-#-#  Martin J. Du"rst, World Wide Web Consortium
#-#-#  mailto:[email-masked]   http://www.w3.org

Date: Wed, 9 Dec 1998 20:58:22 -0500
To: Justin Couch <[email-masked]>
From: "John C. Mallery" <[email-masked]>
Subject: Re: [URN] URN Resolution in deployable networks
Cc: Michael Richardson <[email-masked]>, IETF URN WG <[email-masked]>
Sender: [email-masked]
Reply-To: "John C. Mallery" <[email-masked]>

1. Define a priviledged IP address, probably 10.x.x.x as the root URN resolver.
The analogy is to an subnet gateway.

2. Use the revised HTTP resolution extension.

3. Drive on.

Date: Wed, 9 Dec 1998 20:58:22 -0500
To: Justin Couch <[email-masked]>
From: "John C. Mallery" <[email-masked]>
Subject: Re: [URN] URN Resolution in deployable networks
Cc: Michael Richardson <[email-masked]>, IETF URN WG <[email-masked]>
Sender: [email-masked]
Reply-To: "John C. Mallery" <[email-masked]>

1. Define a priviledged IP address, probably 10.x.x.x as the root URN resolver.
The analogy is to an subnet gateway.

2. Use the revised HTTP resolution extension.

3. Drive on.

Date: Wed, 09 Dec 1998 12:22:04 +0800
From: Justin Couch <[email-masked]>
Organization: ADI Ltd Systems Group
To: [email-masked]
CC: [email-masked]
Subject: Re: [URN] URN Resolution in deployable networks
Sender: [email-masked]
Reply-To: Justin Couch <[email-masked]>

Michael Mealling wrote:

> In the absence of anything else I would suggest you take a look at
> the WIRE stuff that Lewis Girod came up with that uses HTTP redirect
> extensions:
> draft-girod-urn-res-using-wire-00.txt
> draft-girod-w3-id-res-ext-00.txt
> 
> It might not be what you need but it is an alternative to NAPTR
> that can work within very tightly constrained networks. You might
> also check out Keith Moore's RCDS stuff. Can you provide a link, Keith?

Yes please. Would love to see some of this stuff.

As a summary of everything (I've had a few offline starters too) it
seems that there are a few groups working on these higher level goals
(deciding which resolution service to use for a URN) and alternate
resolving schemes. However, there doesn't seem to be any coordinated
approach at this stage to developing a per-platform solution (eg Unix
setup, win32 setup etc). Generally I feel this is because there is not
enough useage hence everyone is in experimental stages.   Also, no-one
appears to be doing it in Java so it looks as though we're at least on
our own at this stage. 

My current plan of action is to keep talking with various people offline
to see what we can come up with. This work will be done in conjunction
with the VRMLC UMEL group. I'll let you all know how we get on over
time....

-- 
Justin Couch
Senior Software Engineer                          VRML-Java Mystery
ADI Ltd, Systems Group.
[email-masked]                    http://www.vlc.com.au/~justin/
-------------------------------------------------------------------
"Look through the lens, and the light breaks down into many lights.
 Turn it or move it, and a new set of arrangements appears... is it
 a single light or many lights, lights that one must know how to
 distinguish, recognise and appreciate? Is it one light with many
 frames or one frame for many lights?"      -Suocomandante Marcos
-------------------------------------------------------------------

From: Michael Mealling <[email-masked]>
Subject: Re: [URN] URN Resolution in deployable networks
To: [email-masked]
Date: Tue, 8 Dec 1998 23:43:31 -0500 (EST)
Cc: [email-masked], [email-masked]
Sender: [email-masked]
Reply-To: Michael Mealling <[email-masked]>

Justin Couch said this:
> Michael Richardson wrote:
> >   If you have a small ad-hoc network, then you could easily have a DNS
> > server. End of problem. Your DNS server will have to know if the
> > Internet is available or not.
> 
> That just doesn't work for a lot of situations. Our networks are
> constructed on the fly. A couple of guys sit down in the back of an
> aircraft or a shed somewhere, run a capble between the two of them and
> then swap stuff. In this case, every machine must have a DNS installed
> on it because you never know the topology of the network. Also, this
> means you need to go through all sorts of nasty things like simulating
> root servers so that you can look up urn.net and many other sysadmin
> style tasks. These users will be quicker to put two rounds between your
> eyes at 100m than to start a computer, so the system has _real_ simple.
> All I need to get right is to work out how to decide how to resolve a
> URN in situations where we don't have DNS. DNS is not the solution to
> every problem in the world unfortunately.
> 

I have to agree with Justin here. Karen did some work on computing
requirements of disaster situations and came to some of the same
conclusions.

In the absence of anything else I would suggest you take a look at
the WIRE stuff that Lewis Girod came up with that uses HTTP redirect
extensions:
draft-girod-urn-res-using-wire-00.txt
draft-girod-w3-id-res-ext-00.txt

It might not be what you need but it is an alternative to NAPTR
that can work within very tightly constrained networks. You might
also check out Keith Moore's RCDS stuff. Can you provide a link, Keith?

-MM

-- 
--------------------------------------------------------------------------------
Michael Mealling	|      Vote Libertarian!       | www.rwhois.net/michael
Sr. Research Engineer   |   www.ga.lp.org/gwinnett     | ICQ#:         14198821
Network Solutions	|          www.lp.org          |  [email-masked]

Date: Wed, 09 Dec 1998 10:33:20 +0800
From: Justin Couch <[email-masked]>
Organization: ADI Ltd Systems Group
To: Michael Richardson <[email-masked]>
CC: IETF URN WG <[email-masked]>
Subject: Re: [URN] URN Resolution in deployable networks
Sender: [email-masked]
Reply-To: Justin Couch <[email-masked]>

Michael Richardson wrote:

>   If you have a small ad-hoc network, then you could easily have a DNS
> server. End of problem. Your DNS server will have to know if the
> Internet is available or not.

That just doesn't work for a lot of situations. Our networks are
constructed on the fly. A couple of guys sit down in the back of an
aircraft or a shed somewhere, run a capble between the two of them and
then swap stuff. In this case, every machine must have a DNS installed
on it because you never know the topology of the network. Also, this
means you need to go through all sorts of nasty things like simulating
root servers so that you can look up urn.net and many other sysadmin
style tasks. These users will be quicker to put two rounds between your
eyes at 100m than to start a computer, so the system has _real_ simple.
All I need to get right is to work out how to decide how to resolve a
URN in situations where we don't have DNS. DNS is not the solution to
every problem in the world unfortunately.

-- 
Justin Couch
Senior Software Engineer                           VRML-Java Worker
ADI Ltd, Systems Group.
[email-masked]                    http://www.vlc.com.au/~justin/
-------------------------------------------------------------------
"Look through the lens, and the light breaks down into many lights.
 Turn it or move it, and a new set of arrangements appears... is it
 a single light or many lights, lights that one must know how to
 distinguish, recognise and appreciate? Is it one light with many
 frames or one frame for many lights?"      -Suocomandante Marcos
-------------------------------------------------------------------

To: Justin Couch <[email-masked]>
cc: IETF URN WG <[email-masked]>
Subject: Re: [URN] URN Resolution in deployable networks 
Date: Tue, 08 Dec 1998 16:59:10 -0500
From: Michael Richardson <[email-masked]>
Sender: [email-masked]
Reply-To: Michael Richardson <[email-masked]>

  If you have a small ad-hoc network, then you could easily have a DNS
server. End of problem. Your DNS server will have to know if the
Internet is available or not.

From: "Fred L. Drake" <[email-masked]>
Date: Tue, 8 Dec 1998 12:51:27 -0500 (EST)
To: IETF URN WG <[email-masked]>
Subject: RE: [URN] URN Resolution in deployable networks
Sender: [email-masked]
Reply-To: "Fred L. Drake" <[email-masked]>

Ron Daniel writes:
 > You are correct that the NAPTR approach for resolving URNs
 > does not handle all cases. Its intent is to be one of the last
 > resolution mechanisms that is tried, not the first. For
 > example, when I was at Los Alamos our experimental URN
 > resolver would first look at the incoming URNs. If they
 > were from a 'known' scheme like SICIs, the resolver would talk
 > to a system running at thte library. (For Handles, we talked
 > with a system running at CNRI). Only if those systems did not
 > know the URN, or if it was from a different namesapce, did we
 > fall back to using the NAPTR routines.

  Perhaps this is a good chance for me to describe the mechanisms
we've used in the Grail Internet browser
(http://grail.cnri.reston.va.us/grail).  For those who aren't familiar 
with Grail (just about everybody ;), I'll just mention that it is a
graphical browser that is intended to allow experimentation with a
number of things, including Web-related protocols (including URN
resolution).
  Grail provides an extension architecture for URI schemes.  Each
scheme is implemented as a separate module.  For example, HTTP is
implemented in a module called "protocols.httpAPI".  Support for CNRI
Handles (hdl:), Digital Object Identifiers (doi:), and IETF documents
(ietf:) are included with the browser; additional modules that
conform to a documented interface can be added to an installed copy of 
Grail.
  One aspect of Grail's support for URNs which may be somewhat
problematical is that there is no distinction between URN schemes and
URL schemes.  This means that URN:hdl:foo is the same as hdl:foo.  I
don't expect that this is likely to be a significant problem in the
near future; have others dealt with this issue in their
implementations?
  I'm always interested in hearing about possible improvements to
Grail, although the resources available to deal with problems tends to 
be fairly low (Grail was not developed in association with the Handle
system, and I'm not part of the Handle group here at CNRI), but I try
to fix any problems that I can to make Grail more useful.  If there
are likely to be any problems with Grail's system for scheme
extensibility, especially in the area of URN support, I'd be most
interested in learning more about it.

  -Fred

--
Fred L. Drake, Jr.	     <[email-masked]>
Corporation for National Research Initiatives
1895 Preston White Dr.	    Reston, VA  20191

From: Ron Daniel <[email-masked]>
To: "'Justin Couch'" <[email-masked]>, IETF URN WG <[email-masked]>
Subject: RE: [URN] URN Resolution in deployable networks
Date: Tue, 8 Dec 1998 07:51:09 -0800 
Sender: [email-masked]
Reply-To: Ron Daniel <[email-masked]>

Hi Justin,

You are correct that the NAPTR approach for resolving URNs
does not handle all cases. Its intent is to be one of the last
resolution mechanisms that is tried, not the first. For
example, when I was at Los Alamos our experimental URN
resolver would first look at the incoming URNs. If they
were from a 'known' scheme like SICIs, the resolver would talk
to a system running at thte library. (For Handles, we talked
with a system running at CNRI). Only if those systems did not
know the URN, or if it was from a different namesapce, did we
fall back to using the NAPTR routines.

What NAPTR tres to provide is a fallack method of discovering a
resolver. But it does assume certain things, like being
connected to the Internet. It also makes certain implementation
choices, like use of DNS rather than starting another system from
scratch. Some other consequences flow from that choice, such as not
having access control over the rewrite rules.

It may be that one or more of those choices are inappropriate for
your system. However, you may be able to reuse other parts of
the URN architecture, such as the resolution services.

Best regards,

Ron Daniel Jr.
DATAFUSION, Inc.
139 Townsend Street, Ste. 100
San Francisco, CA  94107
415.222.0100 fax 415.222.0150 
[email-masked]
http://www.datafusion.net

> -----Original Message-----
> From:	Justin Couch [SMTP:[email-masked]]
> Sent:	Tuesday, December 08, 1998 12:26 AM
> To:	IETF URN WG
> Subject:	[URN] URN Resolution in deployable networks
> 
> Folks,
> 
> I'm looking into the usage of URNs in smaller scale settings than the
> Internet and at least think I'm finding shortcomings in the general
> scheme. However, perhaps I am also looking for alternative schemes or
> completely in the wrong direction. I'm not really sure, so I'll
> explain
> away:
> 
> We're building deployable systems for various military uses in the
> Special Forces and also civilian emergency service arenas. A typical
> characteristic of this is that the devices are usually notebook or
> smaller (Anything down to a Palmpilot) but have networking capability
> at
> least part of the time. For example there may be two or three
> notebooks
> in the middle of the bush somewhere all connected in a mini-lan. One
> of
> these may be acting as a typical server situation which holds a small
> database or other resource. These networks are typically built on the
> fly and by "dumb" users (your average soldier with minimal computer
> training).
> 
> All of this lends itself perfectly to the idea of of using URNs for
> naming various resources that need to be accessed. The code doesn't
> need
> to be recompiled, the user doesn't need to know what the server
> machine
> is (ie configure the application on the fly) and life is pretty rosy
> for
> the developers too as we can use a consistent scheme across many
> different resources
> 
> However, this sort of situation seems not be addressed by the current
> URN DNS resolution schemes. For example, under the DNS scheme, it
> assumes that you have a network all the time, where URNs may not
> necessarily point to a network based resource (eg palmpilot). There
> needs to be some other resource fetch scheme to determine where to
> first
> start resolving names.
> 
> For example, if we were running a unix box we could look at
> resolv.conf
> and determine that we should be doing a lookup of a urn scheme first
> from NIS or /etc/hosts before going to DNS. On a SMB machine we could
> use a WINS service. If you look at the implementation I did for the
> UMEL
> working group over at the VRML consortium, this just uses a local
> bindings file for resolution but doesn't handle a generic "check DNS"
> capability.
> 
> So the question is, are there any higher level efforts currently
> underway that provide the meta-resolution service for URNs? Related to
> this, are there any other efforts relating to URN resolution in other
> areas other than DNS (NIS or WINS for example)? If not, is anyone
> interested in looking at this problem with us?
> 
> -- 
> Justin Couch
> Senior Software Engineer                           VRML-Java Author
> ADI Ltd, Systems Group.
> [email-masked]                    http://www.vlc.com.au/~justin/
> -------------------------------------------------------------------
> "Look through the lens, and the light breaks down into many lights.
>  Turn it or move it, and a new set of arrangements appears... is it
>  a single light or many lights, lights that one must know how to
>  distinguish, recognise and appreciate? Is it one light with many
>  frames or one frame for many lights?"      -Suocomandante Marcos
> -------------------------------------------------------------------

Date: Tue, 08 Dec 1998 21:21:19 +0800
From: Justin Couch <[email-masked]>
Organization: ADI Ltd Systems Group
To: John Curran <[email-masked]>
CC: IETF URN WG <[email-masked]>
Subject: Re: [URN] URN Resolution in deployable networks
Sender: [email-masked]
Reply-To: Justin Couch <[email-masked]>

John Curran wrote:

> Hmm...   I have to admit that I disagree with your assessment,
> but it's definitely a matter of perspective.

Cool, that's what I'm looking for. Also, I suppose I didn't really quite
word it well enough. I find no problems with the DNS resolution scheme
(actually I like it a _lot_). Where I am finding general URN
shortcomings is in the client side "API" scheme of deciding how to do
the resolution. For example, like there are a bunch of POSIX calls to
say "get the IP address of machine x.y.z" which then looks at
NIS/DNS/local to do that resolution, there would be a set of "get
resouce urn:a:b:c" which then looks at NIS/DNS/local for resolution.
This is what I'm currently interested in exploring.
 
> there is
> no reason for the URN resolution specification to highlight any local
> alternative
> configuration that may specify that certain classes of URN are first locally
> resolved by their very nature.

Agreed. It's definitely not what I'm after. As I noted above, probably
me phrasing it wrong.

> This isn't a shortcoming in the DNS resolution scheme; it simply means
> that URN's have not been around long enough to have people start stitching
> it into their own favorite resolution systems.

Yup, agreed. I'm one of those coming along looking at the next level of
usage above just one resolver and attempting to find out where to head.
As I understand the nature of this WG, it deals with URN resolution in
general, of which the DNS scheme is the obvious first start. However, it
is also of use for non-DNS schemes, and higher level "requirements" such
as what I am trying to chase down. Is that correct? If not, please point
me in the right direction as I'm still finding my feet here (list
traffic isn't high enough to get a general feel of the types/level of
discussion, even after being subscribed for almost two months).

-- 
Justin Couch
Senior Software Engineer                           VRML-Java Worker
ADI Ltd, Systems Group.
[email-masked]                    http://www.vlc.com.au/~justin/
-------------------------------------------------------------------
"Look through the lens, and the light breaks down into many lights.
 Turn it or move it, and a new set of arrangements appears... is it
 a single light or many lights, lights that one must know how to
 distinguish, recognise and appreciate? Is it one light with many
 frames or one frame for many lights?"      -Suocomandante Marcos
-------------------------------------------------------------------

Date: Tue, 08 Dec 1998 08:51:44 -0500
To: Justin Couch <[email-masked]>
From: John Curran <[email-masked]>
Subject: Re: [URN] URN Resolution in deployable networks
Cc: IETF URN WG <[email-masked]>
Sender: [email-masked]
Reply-To: John Curran <[email-masked]>

At 04:26 PM 12/08/1998 +0800, Justin Couch wrote:
>Folks,
>
>I'm looking into the usage of URNs in smaller scale settings than the
>Internet and at least think I'm finding shortcomings in the general
>scheme.

Hmm...   I have to admit that I disagree with your assessment,
but it's definitely a matter of perspective.

>For example, if we were running a unix box we could look at resolv.conf
>and determine that we should be doing a lookup of a urn scheme first
>from NIS or /etc/hosts before going to DNS. On a SMB machine we could
>use a WINS service.

All of the above are "local" system services to handle resolution of tokens...
Just as the DNS spec for host resolution doesn't talk about NIS (but you can 
certain define NIS to perform this resolution function prior to DNS), there
is 
no reason for the URN resolution specification to highlight any local
alternative 
configuration that may specify that certain classes of URN are first locally 
resolved by their very nature.

This isn't a shortcoming in the DNS resolution scheme; it simply means
that URN's have not been around long enough to have people start stitching 
it into their own favorite resolution systems.

/John

Date: Tue, 08 Dec 1998 16:26:27 +0800
From: Justin Couch <[email-masked]>
Organization: ADI Ltd Systems Group
To: IETF URN WG <[email-masked]>
Subject: [URN] URN Resolution in deployable networks
Sender: [email-masked]
Reply-To: Justin Couch <[email-masked]>

Folks,

I'm looking into the usage of URNs in smaller scale settings than the
Internet and at least think I'm finding shortcomings in the general
scheme. However, perhaps I am also looking for alternative schemes or
completely in the wrong direction. I'm not really sure, so I'll explain
away:

We're building deployable systems for various military uses in the
Special Forces and also civilian emergency service arenas. A typical
characteristic of this is that the devices are usually notebook or
smaller (Anything down to a Palmpilot) but have networking capability at
least part of the time. For example there may be two or three notebooks
in the middle of the bush somewhere all connected in a mini-lan. One of
these may be acting as a typical server situation which holds a small
database or other resource. These networks are typically built on the
fly and by "dumb" users (your average soldier with minimal computer
training).

All of this lends itself perfectly to the idea of of using URNs for
naming various resources that need to be accessed. The code doesn't need
to be recompiled, the user doesn't need to know what the server machine
is (ie configure the application on the fly) and life is pretty rosy for
the developers too as we can use a consistent scheme across many
different resources

However, this sort of situation seems not be addressed by the current
URN DNS resolution schemes. For example, under the DNS scheme, it
assumes that you have a network all the time, where URNs may not
necessarily point to a network based resource (eg palmpilot). There
needs to be some other resource fetch scheme to determine where to first
start resolving names.

For example, if we were running a unix box we could look at resolv.conf
and determine that we should be doing a lookup of a urn scheme first
from NIS or /etc/hosts before going to DNS. On a SMB machine we could
use a WINS service. If you look at the implementation I did for the UMEL
working group over at the VRML consortium, this just uses a local
bindings file for resolution but doesn't handle a generic "check DNS"
capability.

So the question is, are there any higher level efforts currently
underway that provide the meta-resolution service for URNs? Related to
this, are there any other efforts relating to URN resolution in other
areas other than DNS (NIS or WINS for example)? If not, is anyone
interested in looking at this problem with us?

-- 
Justin Couch
Senior Software Engineer                           VRML-Java Author
ADI Ltd, Systems Group.
[email-masked]                    http://www.vlc.com.au/~justin/
-------------------------------------------------------------------
"Look through the lens, and the light breaks down into many lights.
 Turn it or move it, and a new set of arrangements appears... is it
 a single light or many lights, lights that one must know how to
 distinguish, recognise and appreciate? Is it one light with many
 frames or one frame for many lights?"      -Suocomandante Marcos
-------------------------------------------------------------------