Uniform Resource Name (URN) SyntaxCisco Systems, Inc.1899 Wynkoop Street, Suite 600DenverCO80202USA+1-303-308-3282psaintan@cisco.com
Applications
URNBISUniform Resource NameUniform Resource IdentifierA Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is intended to serve as a persistent, location-independent resource identifier. The general class of URNs is differentiated from all other URIs through the use of the 'urn' URI scheme. This document defines the canonical syntax for URNs, guidelines for URN namespaces, requirements for URN presentation and transmission, and methods for determining URN equivalence. This document obsoletes RFC 2141.A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is intended to serve as a persistent, location-independent resource identifier. The general class of URNs is differentiated from all other URIs through the use of the 'urn' URI scheme. This document defines the canonical syntax for URNs, guidelines for URN namespaces, requirements for URN presentation and transmission, and methods for determining URN equivalence.URNs were originally defined in . The goal of this document is to specify URNs with the smallest reasonable set of changes from the original definition while ensuring consistency with the updated specification of URIs in . If approved, this document will obsolete RFC 2141.The discussion venue for this specification is the mailing list of the URNBIS Working Group; further information can be found at .Many important terms used in this document are defined in the URI specification .The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in .The requirements for URNs are specified in . This document does not modify or update those requirements.The syntax for a URN is defined as follows using the Augmented Backus-Naur Form (ABNF) as specified in .The following sections describe provide additional information about these rules.The syntax here is slightly more restrictive than what was defined in , since it forbids the hyphen character "-" at the end of a NID.NIDs are case insensitive (e.g., "ISBN" and "isbn" identify the same namespace).Depending on the rules governing a namespace, names that are valid in a namespace might contain characters that are not allowed in URNs according to the urnchar rule (e.g., characters outside the ASCII range or characters that are reserved in URIs, such as "/", "?", and "#"). Such a string MUST be translated into a conformant NSS before using it as a protocol element or otherwise passing it on to other applications. Translation is done by percent-encoding each disallowed character using the method defined in .The "%" character is allowed only for the purpose of percent-encoding.If a namespace designates one or more characters conforming to the urnchar rule as having special meaning for that namespace (e.g., "@") and the namespace also uses that character in a literal sense, when used in a literal sense the character MUST be percent-encoded (e.g., "%40"). For related considerations with regard to NID registration, see .The URN syntax defines the canonical format for URNs. All URN transport and interchanges MUST take place in this format. Further, all URN-aware applications MUST offer the option of displaying URNs in this canonical form to allow for direct transcription (for example by cut and paste techniques). Such applications might support display of URNs in a more human-friendly form and might use a character set that includes characters that are not permitted in URN syntax as defined in this RFC (i.e., when displaying URNs to humans, such applications might replace percent-encoded strings with characters in an extended character set such as Unicode).For various purposes such as caching, often it is desirable to determine if two URNs are "the same". This is done by testing for "lexical equivalence".Two URNs are lexically equivalent if they are octet-by-octet equal after the following preprocessing rules:normalize the case of the URI scheme "urn"normalize the case of the NIDnormalize the case of any percent-encodingNote: Percent-encoded characters MUST NOT be decoded.URN namespaces MAY define additional rules for lexical equivalence, such as case-insensitivity of the NSS (or parts thereof). Such rules MUST always have the effect of eliminating some of the false negatives obtained by the procedure above and MUST NOT result in treating two URNs as not equivalent if the procedure here says they are equivalent. For related considerations with regard to NID registration, see .The following URN comparisons highlight the lexical equivalence rules:URN:foo:a123,456urn:foo:a123,456urn:FOO:a123,456urn:foo:A123,456urn:foo:a123%2C456URN:FOO:a123%2c456URNs 1, 2, and 3 are lexically equivalent. URN 4 is not lexically equivalent to any of the other URNs in the above set. URNs 5 and 6 are lexically equivalent only to each other.Functional equivalence is determined within a given namespace and managed by resolvers for that namespace, and thus is beyond the scope of this document. For related considerations with regard to NID registration, see .The URN syntax has been defined so that URNs can be used in places where URIs are expected. A resolver that conforms to the URI specification will extract a scheme of "urn" rather than a scheme value of "urn:<nid>".A URN MUST be considered an opaque URI by URI resolvers and passed (with the "urn" scheme) to a URN resolver for resolution. The URN resolver can either be an external resolver that the URI resolver knows of, or it can be functionality built-in to the URI resolver.To minimize user confusion, a URI browser SHOULD display the complete URN (including the "urn" scheme) to ensure that there is no confusion between URN namespace identifiers and URL scheme identifiers.This document specifies the syntax for URNs. While some namespaces resolvers may assign special meaning to certain of the characters of the Namespace Specific String, any security consideration resulting from such assignment are outside the scope of this document. For related considerations with regard to NID registration, see .This section formally registers a URI scheme of 'urn'.[Note to RFC Editor: please change "XXXX" to the number assigned to this document upon publication.]urnpermanentSee Section 4 of RFC&rfc.number;.The 'urn' scheme identifies Uniform Resource Names, which are persistent, location-independent resource identifiers.See Section 4.2 of RFC&rfc.number;.Uniform Resource Names are used in a wide variety of applications, including bibliographical reference systems and as names for Extensible Markup Language (XML) namespaces.There are no known interoperability concerns related to use of the 'urn' URI scheme.See Section 9 of RFC&rfc.number;.URNBIS WG [mailto:urn@ietf.org]This scheme is registered under the IETF tree. As such, the IETF maintains change control.None.Key words for use in RFCs to Indicate Requirement LevelsHarvard University1350 Mass. Ave.CambridgeMA 02138- +1 617 495 3864sob@harvard.edu
General
keyword
In many standards track documents several words are used to signify
the requirements in the specification. These words are often
capitalized. This document defines these words as they should be
interpreted in IETF documents. Authors who follow these guidelines
should incorporate this phrase near the beginning of their document:
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
RFC 2119.
Note that the force of these words is modified by the requirement
level of the document in which they are used.
Uniform Resource Identifier (URI): Generic SyntaxWorld Wide Web ConsortiumMassachusetts Institute of Technology77 Massachusetts AvenueCambridgeMA02139USA+1-617-253-5702+1-617-258-5999timbl@w3.orghttp://www.w3.org/People/Berners-Lee/Day Software5251 California Ave., Suite 110IrvineCA92617USA+1-949-679-2960+1-949-679-2972fielding@gbiv.comhttp://roy.gbiv.com/Adobe Systems Incorporated345 Park AveSan JoseCA95110USA+1-408-536-3024LMM@acm.orghttp://larry.masinter.net/
Applications
uniform resource identifierURIURLURNWWWresource
A Uniform Resource Identifier (URI) is a compact sequence of characters
that identifies an abstract or physical resource. This specification
defines the generic URI syntax and a process for resolving URI references
that might be in relative form, along with guidelines and security
considerations for the use of URIs on the Internet.
The URI syntax defines a grammar that is a superset of all valid URIs,
allowing an implementation to parse the common components of a URI
reference without knowing the scheme-specific requirements of every
possible identifier. This specification does not define a generative
grammar for URIs; that task is performed by the individual
specifications of each URI scheme.
Augmented BNF for Syntax Specifications: ABNFInternet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]Functional Requirements for Uniform Resource NamesMIT Laboratory for Computer Science545 Technology SquareCambridgeMA02139US+1 617 253 2673sollins@lcs.mit.eduXerox Palo Alto Research Center3333 Coyote Hill RoadPalo AltoCA94304US+1 415 812 4365+1 415 812 4333masinter@parc.xerox.comURN SyntaxAT&T15621 Drexel CircleOmahaNE 68135-2358USA+1 402 894-9456jayhawk@ds.internic.net
Applications
URNuniform resource
Uniform Resource Names (URNs) are intended to serve as persistent,
location-independent, resource identifiers. This document sets
forward the canonical syntax for URNs. A discussion of both existing
legacy and new namespaces and requirements for URN presentation and
transmission are presented. Finally, there is a discussion of URN
equivalence and how to determine it.
Uniform Resource Names (URN) Namespace Definition MechanismsThis document lays out general definitions of and mechanisms for establishing Uniform Resource Names (URN) "namespaces". The URN WG has defined a syntax for URNs in RFC 2141, as well as some proposed mechanisms for their resolution and use in Internet applications in RFC 3401 and RFC 3405. The whole rests on the concept of individual "namespaces" within the URN structure. Apart from proof-of-concept namespaces, the use of existing identifiers in URNs has been discussed in RFC 2288. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.This document makes the following substantive changes from :Disallowed "-" at the end of a NID.Allowed the "~" and "&" characters in an NSS.Formally registered 'urn' as a URI scheme.RFC 2141, which provided the basis for this document, was authored by Ryan Moats.Thanks to Julian Reschke for his corrections to the ABNF.