Universal Media
Saved from http://www.mitra.biz/vrml/vrml2/vrml-urn-uml-19980619.htm
Maintained here by 3D Net Productions since 2007.


Recommended Practice Proposal

This document proposes the use of Uniform Resource Names (URNs) as the general mechanism which the Universal Media Element Library (UMEL) shall use to reference library media elements.

Authors: Mitra, Chris Marrin, and members of the VRML-UMEL Working Group.
Revised: 06/19/98

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:


VRML2.0 (ISO/IEC 14772-1:1997) requires that browsers either support or ignore URNs in "url" MFString fields. Conforming browsers are required to ignore URNs if they don't understand what to do with them, and to skip on to the first URL in the field in this case.

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.

URN Syntax

URNs used to reference an element in the UMEL will look like this:
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).
The naming authority  may also be any domain name registered to the supplier of a  library, meaning,  for example, that a URN could be of the form urn:vrml:sgi.com:toollibrary/0001.jpg  where sgi.com has allocated the name "toollibrary/0001.jpg"

URN Resolution

When a browser tries to resolve a URN, it will attempt to determine where a library is installed,  looking for the file there. In order to do this, the browser must first find configuration information (stored in a platform dependent location, as described in the Platform Specific Bindings section below) for an initial sub-string match. For example, with the URN above the browser is typically looking for a place that all or parts of the library "urn:vrml:umel:" is installed.

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.

Platform Specific Bindings

The following section defines binding information for the most common personal computing platforms.

Windows 95 and Windows NT

Windows 95 / NT configuration information is kept in the registry. Registry entries live under the following key:
where 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:"


In Unix there must exist a file at /etc/urn which contains one line per entry, such as:
 urn:vrml:umel:    file:///usr/local/lib/vrml-libraries/umel
or for multiple entries, with one option available locally via HTTP:
 urn:vrml:umel:    file:///usr/local/lib/vrml-libraries/umel,http://myserver/vrml-libraries/umel
where 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 be written:

 urn:vrml:umel:    file:///usr/local/lib/vrml-libraries/umel,



A file, identical to that for the Unix bindings above, is placed in the System/Preferences folder.

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.


This proposed media element referencing system inherently handles versioning, and so no additional mechanism is necessary to accommodate different versions of libraries and/or individual library elements. While a detailed discussion of library content versioning isn't appropriate for this proposal (this proposal deals specifically with the issue of referencing library elements using URNs, not content issues such as versioning), a brief explanation of how UMEL handles versioning for entire libraries (the "Textures" library, for example) as well as the individual elements in those libraries (such as a texture element named "redbrick.gif") follows:

UMEL versioning is an additive process. New and/or updated content is assigned a unique name and added alongside existing content. Existing UMEL content is never replaced with new or updated material; it is only added to over time. This approach applies to entire libraries as well as individual elements.

Specifically, UMEL versioning is handled on an element-by-element basis by the introduction of new files (images, audio clips and 3D objects) into the core set of libraries ("Textures", "Sounds" and "Objects"). Similarly UMEL accommodates versioning on a library-by-library basis by the introduction of entirely new libraries to the core system ("Textures2.0", "Sounds2.0" and "Objects2.0", for example, which will reside alongside the core libraries).

When a update to an existing library element is added to UMEL, it is given a unique file name to distinguish it from earlier versions of the element ("redbrick2.gif", for instance, would represent a new version of the "redbrick.gif" texture). Likewise, when a new version of the entire UMEL "Textures" library is introduced, it will be giving a unique name such as "Textures2.0" to distinguish it from the original "Textures" library.

This simple, elegant approach to versioning allows authors to specify precisely the media element they desire by name, without concern for changes or updates to UMEL. Since each new version of a library or element is assigned a unique name, authors can be certain that the elements they reference will never be replaced with an updated version. If they wish to take advantage of an updated library or element version, they do so by updating their VRML world's URN references accordingly.

Note: A directory named "version" (urn:vrml:umel:version) is reserved for future use should the need to track version numbers arise (inside this directory files related to library version numbers can be stored if needed).

Related Resources

The following URN-related information sources may be of use when evaluating this proposal.

Web pages

World Wide Web Consortium Addressing: http://www.w3.org/Addressing/Addressing.html

RFCs and Internet Drafts

The following Request For Comments (RFC) and Internet Draft documents are available from ftp://ftp.ietf.org/internet-drafts/ and various mirror sites:

"A URN Namespace for IETF Documents"
   Filename: draft-ietf-urn-ietf-07.txt
   Web: ftp://ftp.ietf.org/internet-drafts/draft-ietf-urn-ietf-07.txt

 "URN Namespace Mechanisms"
   Filename: draft-ietf-urn-nid-req-07.txt
   Web:  ftp://ftp.ietf.org/internet-drafts/draft-ietf-urn-nid-req-07.txt

"URN Syntax"
   Filename: draft-ietf-urn-syntax-06.txt
   Web: ftp://ftp.ietf.org/internet-drafts/draft-ietf-urn-syntax-06.txt

"Persistent Document Identifiers"
  Filename: draft-mallery-urn-pdi-00.txt
  Web: ftp://ftp.ietf.org/internet-drafts/draft-mallery-urn-pdi-00.txt

"URI Resolution Services Necessary for URN Resolution"
  Filename: draft-ietf-urn-resolution-services-07.txt
  Web: ftp://ftp.ietf.org/internet-drafts/draft-ietf-urn-resolution-services-07.txt

"Functional Requirements for Uniform Resource Names"
   Memo: RFC 1737

"URN Syntax"
   RFC 2141

"Resolution of Uniform Resource Identifiers using the Domain Name System"
  RFC 2168


URNs are an ideal mechanism for referencing VRML Universal Media Element Library (VRML-UMEL) elements such as textures, sounds and objects. Using URNs in VRML-UMEL does not require the IETF to define a standard resolution method. By following the recommended practice set forth in this document, VRML tool vendors, browser developers and content authors may use URNs to reference UMEL elements today.