Uniform Resource Name


A Uniform Resource Name is a Uniform Resource Identifier that uses the scheme. URNs are globally unique persistent identifiers assigned within defined namespaces so they will be available for a long period of time, even after the resource which they identify ceases to exist or becomes unavailable. URNs cannot be used to directly locate an item and need not be resolvable, as they are simply templates that another parser may use to find an item.

URIs, URNs, and URLs

URNs were originally conceived to be part of a three-part information architecture for the Internet, along with Uniform Resource Locators and Uniform Resource Characteristics, a metadata framework. As described in the 1994 RFC 1737,, and later in the 1997 RFC 2141, URNs were distinguished from URLs, which identify resources by specifying their locations in the context of a particular access protocol, such as HTTP or FTP. In contrast, URNs were conceived as persistent, location-independent identifiers assigned within defined namespaces, typically by an authority responsible for the namespace, so that they are globally unique and persistent over long periods of time, even after the resource which they identify ceases to exist or becomes unavailable.
URCs never progressed past the conceptual stage, and other technologies such as the Resource Description Framework later took their place. Since RFC 3986 in 2005, use of the terms "Uniform Resource Name" and "Uniform Resource Locator" has been deprecated in technical standards in favor of the term Uniform Resource Identifier, which encompasses both, a view proposed in 2001 by a joint working group between the World Wide Web Consortium and Internet Engineering Task Force.
A URI is a string of characters used to identify a name or resource. URIs are used in many Internet protocols to refer to and access information resources. URI schemes include the http and ftp protocols, as well as hundreds of others.
In the "contemporary view", as it is called, all URIs identify or name resources, perhaps uniquely and persistently, with some of them also being "locators" which are resolvable in conjunction with a specified protocol to a representation of the resources.
Other URIs are not locators and are not necessarily resolvable within the bounds of the systems where they are found. These URIs may serve as names or identifiers of resources. Since resources can move, opaque identifiers which are not locators and are not bound to particular locations are arguably more likely than identifiers which are locators to remain unique and persistent over time. But whether a URI is resolvable depends on many operational and practical details, irrespective of whether it is called a "name" or a "locator". In the contemporary view, there is no bright line between "names" and "locators".
In accord with this way of thinking, the distinction between Uniform Resource Names and Uniform Resource Locators is now no longer used in formal Internet Engineering Task Force technical standards, though the latter term, URL, is still in wide informal use.
The term "URN" continues now as one of more than a hundred URI "schemes", urn:, paralleling http:, ftp:, and so forth. URIs of the urn: scheme are not locators, are not required to be associated with a particular protocol or access method, and need not be resolvable. They should be assigned by a procedure which provides some assurance that they will remain unique and identify the same resource persistently over a prolonged period. Some namespaces under the urn: scheme, such as urn:uuid: assign identifiers in a manner which does not require a registration authority, but most of them do. A typical URN namespace is urn:isbn, for International Standard Book Numbers. This view is continued in the 2017 RFC 8141.
There are other URI schemes, such as tag:, info:, and ni: which are similar to the urn: scheme in not being locators and not being associated with particular resolution or access protocols.

Syntax

The syntax of a urn: scheme URI is represented in the augmented Backus–Naur form as:

namestring = assigned-name


assigned-name = "urn" ":" NID ":" NSS
NID = 0*30
ldh = alphanum / "-"
NSS = pchar *
rq-components =

r-component = pchar *
q-component = pchar *
f-component = fragment
; general URI syntax rules
fragment = *
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
pct-encoded = "%" HEXDIG HEXDIG
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
sub-delims = "!" / "$" / "&" / "'" / "" / "*" / "+" / "," / ";" / "="
alphanum = ALPHA / DIGIT ; obsolete, usage is deprecated

or, in the form of a syntax diagram, as:
In 2017 the syntax for URNs was updated:
In order to ensure the global uniqueness of URN namespaces, their identifiers are required to be registered with the IANA. Registered namespaces may be "formal" or "informal". An exception to the registration requirement was formerly made for "experimental namespaces", since rescinded by RFC 8141.

Formal

Approximately sixty formal URN namespace identifiers have been registered. These are namespaces where Internet users are expected to benefit from their publication, and are subject to several restrictions. They must:
Informal namespaces are registered with IANA and assigned a number sequence as an identifier, in the format
Informal namespaces are fully fledged URN namespaces and can be registered in global registration services.

Experimental

An exception to the registration requirement was formerly made for "experimental namespaces". However, following the deprecation of the "X-" notation for new identifier names, RFC 8141 did away with experimental URN namespaces, indicating a preference for use of the urn:example namespace where appropriate.

Examples

Citations