Document URL: http://www.mantiscorp.com/vrml/umel/proposals/urn.html
Authors: Mitra, Chris Marrin, and members of the VRML-UMEL Working Group.
Note: This proposal is based on an earlier
document that describes the use of URNs in relation to VRML. Authored by
Mitra, the original URN work is referenced in the VRML specification and
is available at:
URNs are ideal for naming elements of a library independent of their actual location. In fact, this is exactly what URNs were originally designed for, making them ideal for use with the Universal Media Element Library.
URN resolution (how a browser "resolves", or translates, a URN into a file) is the key issue addressed in this UMEL recommended practice proposal. While the Internet Engineering Task Force (IETF) has spent many years attempting to define how URNs should be resolved, an issue which remains outstanding, the lack of a standard solution for URN resolution does not preclude the use of URNs for our purposes. Since "url" fields in VRML are multi-value, unlike those in HTML (which are single-value), and will only resolve to a previously installed library, our use of URNs is not contingent on the network-wide resolution method currently being sought by the IETF.
This document specifies a resolution mechanism to be used when a browser encounters a URN in a multi-value url field.
|Is the defined prefix for all URNs.|
|Specifies that this is the VRML Consortium's namespace (i.e. a place where the VRML Consortium defines the rules on name allocation).|
|Is a string assigned by the VRML Consortium that specifies who is assigning names. In this case, it specifies that the names are being assigned by the Universal Medial Element Library working group. The the VRML Consortium could, for example, also allocate "lw" to Living Worlds defined names (for example Prototypes) or "pharmaceutical" to a working group assigning names to Pharmaceutically related media elements.|
|Is an example string assigned by the UMEL working group that is used to reference a specific media element, which is a texture in this case (note: the exact format of this string is still to be determined by that group).|
When the browser determines the location of the library, it will replace the initial sub-string of the URN with the location of the library, and find the file relative to that location. For instance, if the browser determines that the library "urn:vrml:umel:" is installed at "C:\vrml-libraries\umel\" then it will look for the file above at "C:\vrml-libraries\umel\texture\wood\oak001.gif". If it finds the library is at "http://vrml.org/libs/umel", it will then retrieve the file from "http://vrml.org/libs/umel/texture/wood/oak001.gif".
Note that on some platforms the character "/" in the URN will need to be replaced with the appropriate directory hierarchy separator character, for example "\" in DOS.
If the file is not found at the location specified, the browser
will then move to the next string in the url field. The next string
in the url field will typically be the location (URL) of the
file, although it might also be another URN.
HKEY_LOCAL_MACHINE\VRML\PROTOCOLS\urnwhere the key's name is derived from the URN, and the value gives the URL of the installed location of a specific library. This is a semi-colon separated list of alternative locations.
Continuing the example above, the key HKEY_LOCAL_MACHINE\VRML\PROTOCOLS\urn\vrml\umel would have a value "file:///C|/vrml-libraries/umel".
If the library might optionally be found on a CD, then it might also have a value of "file:C|/vrml-libraries/umel;D:"
urn:vrml:umel: file:///usr/local/lib/vrml-libraries/umelor for multiple entries, with one option available locally via HTTP:
urn:vrml:umel: file:///usr/local/lib/vrml-libraries/umel,http://myserver/vrml-libraries/umelwhere the part on the right is the initial sub-string being matched, and it is separated by white-space before the comma (and optionally white-space) separated locations of the libraries.
Continuation lines may be separated by white-space, so the above could
urn:vrml:umel: file:///usr/local/lib/vrml-libraries/umel, http://myserver/vrml-libraries/umel
Note: The Preferences folder itself may need to be creating
under System 6.x and earlier if it doesn't already exist since these versions
of the Macintosh OS don't inherently support the notion of "Preferences"
as System 7.x and greater does.
World Wide Web Consortium Addressing: http://www.w3.org/Addressing/Addressing.html
"Functional Requirements for Uniform Resource Names"
Memo: RFC 1737
"Resolution of Uniform Resource Identifiers using the Domain Name