<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc compact="yes"?>
<?rfc strict="yes"?>
<?rfc symrefs="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>

<rfc category="bcp" docName="draft-ietf-urnbis-rfc3406bis-urn-ns-reg-09" ipr="trust200902" obsoletes="3406">

  <front>

    <title abbrev="URN Namespaces">Uniform Resource Name (URN) Namespace Definition Mechanisms</title>

    <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
      <organization>&amp;yet</organization>
      <address>
        <email>ietf@stpeter.im</email>
      </address>
    </author>

    <date/>

    <area>Applications</area>
    <workgroup>URNBIS</workgroup>
    <keyword>Uniform Resource Name</keyword>
    <keyword>URN</keyword>
    <keyword>Uniform Resource Identifier</keyword>
    <keyword>URI</keyword>

    <abstract>
      <t>This document supplements the Uniform Resource Name (URN) syntax specification by defining the concept of a URN namespace, as well as mechanisms for defining and registering such namespaces. This document obsoletes RFC 3406.</t>
    </abstract>

  </front>

  <middle>

    <section title='Introduction' anchor='intro'>
      <t>A Uniform Resource Name (URN) <xref target='I-D.ietf-urnbis-rfc2141bis-urn'/> is a Uniform Resource Identifier (URI) <xref target='RFC3986'/> that is intended to serve as a persistent, location-independent resource identifier.  This document supplements the Uniform Resource Name (URN) syntax specification <xref target='I-D.ietf-urnbis-rfc2141bis-urn'/> by defining:</t>
      <t>
        <list style='numbers'>
          <t>The concept of a URN namespace.</t>
          <t>A mechanism for defining a URN namespace and associating it with a public identifier (called a Namespace ID or "NID").</t>
          <t>Procedures for registering NIDs with the Internet Assigned Numbers Authority (IANA).</t>
        </list>
      </t>
      <t>Syntactically, the NID follows the 'urn' scheme name.  For instance, a URN in the 'example' namespace <xref target='RFC6963'/> might be of the form "urn:example:foo".</t>
      <t>This document rests on two key assumptions:</t>
      <t>
        <list style='numbers'>
          <t>
            Assignment of a URN is a managed process.
            <vspace blankLines='1'/>
            A string that conforms to the URN syntax is not necessarily a valid URN, because a URN needs to be assigned according to the rules of a particular namespace (in terms of syntax, semantics, and process).
          </t>
          <t>
            The space of URN namespaces is itself managed.
            <vspace blankLines='1'/>
            A string in the namespace identifier slot of the URN syntax is not necessarily a valid URN namespace identifier, because in order to be valid a namespace needs to be defined and registered in accordance with the rules of this document.
          </t>
        </list>
      </t>
      <t>URN namespaces were originally defined in <xref target='RFC2611'/>, which was obsoleted by <xref target='RFC3406'/>.  Based on experience with defining and registering URN namespaces since that time, this document specifies URN namespaces with the smallest reasonable set of changes from <xref target='RFC3406'/>, while at the same time simplifying the registration process.  This document obsoletes RFC 3406.</t>
    </section>

    <section title='Terminology' anchor='terms'>
      <t>Several important terms used in this document are defined in the URN syntax specification <xref target='I-D.ietf-urnbis-rfc2141bis-urn'/>.</t>
      <t>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 <xref target='RFC2119'/>.</t>
    </section>

    <section title='What is a URN Namespace?' anchor='whatis'>
      <t>A URN namespace is a collection of identifiers that are (1) unique, (2) assigned in a consistent way, and (3) assigned according to a common definition.</t>
      <t>
        <list style='numbers'>
          <t>The "uniqueness" constraint means that an identifier within the namespace is never assigned to more than one resource and never reassigned to a different resource, even if the identifier itself is deprecated or becomes obsolete.</t>
          <t>The "consistent assignment" constraint means that an identifier within the namespace is assigned by an organization or created in accordance with a process or algorithm that is always followed.</t>
          <t>The "common definition" constraint means that there are clear definitions for the syntax of identifiers within the namespace and the process of assigning or creating them.</t>
        </list>
      </t>
      <t>A URN namespace is identified by a particular NID in order to ensure the global uniqueness of URNs and, optionally, to provide a cue regarding the structure of URNs assigned within a namespace.</t>
      <t>With regard to global uniqueness, using different NIDs for different collections of identifiers ensures that no two URNs will be the same for different resources, since each collection is required to uniquely assign each identifier.  However, a single resource can have more than one URN assigned to it for different purposes (e.g., some numbers might be valid identifiers in two different identifier systems, where the namespace identifier differentiates between the resulting URNs).</t>
      <t>With regard to the structure of URNs assigned within a namespace, the development of an identifier structure (and thereby a collection of identifiers) depends on the requirements of the community defining the identifiers, how the identifiers will be assigned and used, etc.  These issues are beyond the scope of URN syntax and the general rules for URN namespaces, because they are specific to the community defining a namespace (e.g., the bibliographic and publishing communities in the case of the 'ISBN' and 'ISSN' namespaces, or the developers of extensions to the Extensible Messaging and Presence Protocol in the case of the 'XMPP' namespace).</t>
      <t>URN namespaces inherit certain rights and responsibilities by the nature of URNs <xref target='I-D.ietf-urnbis-rfc2141bis-urn'/>, e.g.:</t>
      <t>
        <list style='numbers'>
          <t>They uphold the general principles of a well-managed URN namespace by providing persistent identification of resources and unique assignment of identifier strings.</t>
          <t>They can be registered in global registration services.</t>
        </list>
      </t>
    </section>

    <section title='URN Namespace Types' anchor='types'>

      <t>There are two types of URN namespace: formal and informal.  These are distinguished by the expected level of service, the information needed to define the namespace, and the procedures for registration.  Because the majority of the namespaces registered so far have been formal, this document concentrates on formal namespaces.</t>
      <t>Note: <xref target='RFC3406'/> defined a third type of "experimental namespaces", denoted by prefixing the namespace identifier with the string "X-".  Consistent with <xref target='RFC6648'/>, this specification removes the experimental category.  Because experimental namespaces were never registered, removing the experimental category has no impact on the existing registries or future registration procedures.</t>

      <section title='Formal Namespaces' anchor='types-formal'>
        <t>A formal namespace provides benefit to some subset of users on the Internet (e.g., it would not make sense for a formal namespace to be used only by a community or network that is not connected to the Internet).  For example, it would be inappropriate for a NID to effectively force someone to use a proprietary network or service not open to the general Internet user.  The intent is that, while the community of those who might actively use the names assigned within that NID might be small, the potential use of identifiers within that NID is open to any user on the Internet.  Formal NIDs might be appropriate when some aspects are not fully open.  For example, a namespace might make use of a fee-based, privately managed, or proprietary registry for assignment of URNs in the namespace.  However, it might still benefit some Internet users if the associated services have openly-published access protocols.</t>
        <t>An organization that will assign URNs within a formal namespace ought to meet the following criteria:</t>
        <t>
          <list style='numbers'>
            <t>Organizational stability and the ability to maintain the URN namespace for a long time; absent such evidence, it ought to be clear how the namespace can remain viable if the organization can no longer maintain the namespace.</t>
            <t>Competency in name assignment.  This will improve the likelihood of persistence (e.g. to minimize the likelihood of conflicts).</t>
            <t>Commitment to not reassigning existing names and to allowing old names to continue to be valid, even if the owners or assignees of those names are no longer members or customers of that organization.  With regard to URN resolution <xref target='RFC2276'/>, this does not mean that there needs to be resolution of such names, only that the names will not resolve to false or stale information.</t>
          </list>
        </t>
        <t>A formal namespace establishes a particular NID, subject to the following constraints (above and beyond the syntax rules specified in <xref target='I-D.ietf-urnbis-rfc2141bis-urn'/>):</t>
        <t>
          <list style='numbers'>
            <t>It MUST NOT be an already-registered NID.</t>
            <t>It MUST NOT start with "urn-" (which is reserved for informal namespaces).</t>
            <t>It MUST be more than two characters long.</t>
            <t>It MUST NOT start with "aa-", where "aa" is any combination of two ASCII letters.</t>
            <t>It MUST NOT start with the string "xn--", which is reserved for potential representation of DNS A-labels in the future <xref target='RFC5890'/>.</t>
          </list>
        </t>
        <t>All two-letter combinations, and all two-letter combinations followed by "-" and any sequence of valid NID characters, are reserved for potential use as countrycode-based NIDs for eventual national registrations of URN namespaces.  The definition and scoping of rules for allocation of responsibility for such countrycode-based namespaces is beyond the scope of this document.</t>
      </section>

      <section title='Informal Namespaces' anchor='types-informal'>
        <t>Informal namespaces are full-fledged URN namespaces, with all the associated rights and responsibilities.  Informal namespaces differ from formal namespaces in the process for assigning a NID: for an informal namespace, the registrant does not designate the NID; instead, IANA assigns a NID consisting of the string 'urn-' followed by one or more digits (e.g., "urn-7") where the digits consist of the next available number in the sequence of positive integers assigned to informal namespaces.  Thus the syntax of an informal namespace is:</t>
        <figure>
          <artwork><![CDATA[
    "urn-" <number>
          ]]></artwork>
        </figure>
        <t>The only restrictions on &lt;number&gt; are that it (1) consist strictly of ASCII digits and (2) not cause the NID to exceed the length limitations defined in the URN syntax specification <xref target='I-D.ietf-urnbis-rfc2141bis-urn'/>.</t>
      </section>

    </section>

    <section title='Defining a URN Namespace' anchor='definition'>

      <t>The definition of a formal namespace ought to pay particular attention to:</t>
      <t>
        <list style='numbers'>
          <t>The purpose of the namespace.</t>
          <t>The syntax of URNs assigned within the namespace.</t>
          <t>The process for assigning URNs within the namespace.</t>
          <t>The security implications of assigning and using the assigned URNs.</t>
          <t>Optionally, the process for resolving URNs issued within the namepace.</t>
        </list>
      </t>
      <t>The following sections explain these matters in greater detail.  For convenience, a template for defining and registering a URN namespace is provided under <xref target='template'/>.  This information can be especially helpful to entities that wish to request assignment of a URN in a namespace and to entities that wish to provide URN resolution for a namespace.</t>

      <section title='Purpose' anchor='definition-purpose'>
        <t>The "Purpose" section of the template describes matters such as:</t>
        <t>
          <list style='numbers'>
            <t>The kinds of resources identified by URNs assigned within the namespace.</t>
            <t>Why it is preferable to use URNs rather than some other technology (e.g., URIs) and why no existing URN namespace is a good fit.</t>
            <t>The kinds of software applications that can use or resolve the assigned URNs (e.g., by differentiating among disparate namespaces, identifying resources in a persistent fashion, or meaningfully resolving and accessing services associated with the namespace).</t>
            <t>The scope of the namespace (public vs. private, global vs. local to a particular organization, nation, or industry).  For example, a namespace claiming to deal in "national identification numbers" ought to have a global scope and address all identity number structures, whereas a URN scheme for a particular national identification number system would need to handle only the structure for that nation's identity numbers.</t>
            <t>How the intended community (and the Internet community at large) will benefit from using or resolving the assigned URNs.</t>
            </list>
          </t>
      </section>

      <section title='Syntax' anchor='definition-syntax'>
        <t>The "Syntax" section of the template describes:</t>
        <t>
          <list style='numbers'>
            <t>A description of the structure of URNs within the namespace, in conformance with the fundamental URN syntax <xref target='I-D.ietf-urnbis-rfc2141bis-urn'/>.  The structure might be described in terms of a formal definition (e.g., using Augmented BNF for Syntax Specifications (ABNF) as specified in <xref target='RFC5234'/>), an algorithm for generating conformant URNs, a regular expression for parsing the identifier into components, or by explaining that the structure is opaque.</t>
            <t>Any special character encoding rules for assigned URNs (e.g., which character ought to always be used for single-quotes).</t>
            <t>Rules for determining equivalence between two identifiers in the namespace.  Such rules ought to always have the effect of eliminating false negatives that might otherwise result from comparison.  If it is appropriate and helpful, reference can be made to the equivalence rules defined in the URI specification <xref target='RFC3986'/>.  Examples of equivalence rules include equivalence between uppercase and lowercase characters in the Namespace Specific String, between hyphenated and non-hyphenated groupings in the identifier string, or between single-quotes and double-quotes.  (Note that these are not normative statements for any kind of best practice related to handling of equivalences between characters in general; they are statements limited to one particular namespace only.)</t>
            <t>Any special considerations necessary for conforming with the URN syntax.  This is particularly applicable in the case of legacy naming systems that are used in the context of URNs.  For example, if a namespace is used in contexts other than URNs, it might make use of characters that are reserved in the URN syntax.  This section ought to note any such characters, and outline necessary mappings to conform to URN syntax.  Normally, this will be handled by percent-encoding the character as specified in the URI specification <xref target='RFC3986'/>.</t>
          </list>
        </t>
      </section>

      <section title='Assignment' anchor='definition-assignment'>
        <t>The "Assignment" section of the template describes matters such as:</t>
        <t>
          <list style='numbers'>
            <t>Mechanisms or authorities for assigning URNs to resources.  It ought to make clear whether assignment is completely open (e.g., following a particular algorithm), completely closed (e.g., for a private organization), or limited in various ways (e.g., delegated to authorities recognized by a particular organization); if limited, it ought to explain how to become an assigner of identifiers or how to request assignemtn of identifers from existing assignment authorities.</t>
            <t>Methods for ensuring that URNs within the namespace are unique.  For example, identifiers might be assigned sequentially or in accordance with some well-defined process by a single authority, assignment might be partitioned among delegated authorities that are individually responsible for respecting uniqueness rules, or URNs might be created independently following an algorithm that itself guarantees uniqueness.</t>
          </list>
        </t>

      </section>

      <section title='Security and Privacy' anchor='definition-security'>
        <t>The "Security" section of the template describes any potential issues related to security and privacy with regard to assignment, use, and resolution of identifiers within the namespace.  Examples of such issues include the consequences of producing false negatives and false positives during comparison for equivalence (see also <xref target='RFC6943'/>), leakage of private information when identifiers are communicated on the public Internet, the potential for directory harvesting, and various issues discussed in the guidelines for security considerations in RFCs <xref target='RFC3552'/> and the privacy considerations for Internet protocols <xref target='RFC6973'/>.</t> 
      </section>

      <section title='Resolution' anchor='definition-resolution'>
        <t>The "Resolution" section specifies the rules for resolution of URNs assigned within the namespace.  If such URNs are intended to be resolvable, the namespace needs to be registered in a Resolution Discovery System (RDS, see <xref target='RFC2276'/>) such as DDDS.  Resolution then proceeds according to standard URI resolution processes, as well as the mechanisms of the RDS.  This section ought to lists the requirements for becoming a recognized resolver of URNs in the relevant namespace (and being so listed in the RDS registry).  Answers might include, but are not limited to:</t>
        <t>
          <list style='numbers'>
            <t>The namespace is not listed with an RDS; therefore this section is not applicable.</t>
            <t>Resolution mirroring is completely open, with a mechanism for updating an appropriate RDS.</t>
            <t>Resolution is controlled by entities to which assignment has been delegated.</t>
          </list>
        </t>
      </section>

    </section>

    <section title='Registration Template' anchor='template'>

      <section title='Namespace ID' anchor='template-nid'>
        <t>Requested of IANA (formal) or assigned by IANA (informal).</t>
      </section>

      <section title='Version' anchor='template-version'>
        <t>The version of the registration, starting with 1 and incrementing by 1 with each new version.</t>
      </section>

      <section title='Date' anchor='template-date'>
        <t>The date when the registration is requested of IANA, using the format YYYY-MM-DD.</t>
      </section>

      <section title='Registrant' anchor='template-registrant'>
        <t>The person or organization that has registered the NID, including the following information:</t>
        <t>
          <list style='symbols'>
            <t>The name and address of the registering organization.</t>
            <t>The name and contact information (email, phone number, and/or postal address) of the designated contact person.</t>
          </list>
        </t>
      </section>

      <section title='Purpose' anchor='template-purpose'>
        <t>Described under <xref target='definition-purpose'/> of this document.</t>
      </section>

      <section title='Syntax' anchor='template-syntax'>
        <t>Described under <xref target='definition-syntax'/> of this document.</t>
      </section>

      <section title='Assignment' anchor='template-assignment'>
        <t>Described under <xref target='definition-assignment'/> of this document.</t>
      </section>

      <section title='Resolution' anchor='template-resolution'>
        <t>Described under <xref target='definition-resolution'/> of this document.</t>
      </section>

      <section title='Documentation' anchor='template-documentation'>
        <t>A pointer to an RFC, a specification published by another standards development organization, or another stable document that provides further information about the namespace.</t>
      </section>

    </section>

    <section title='Registering a URN Namespace' anchor='registration'>

      <section title='Formal Namespaces' anchor='registration-formal'>
        <t>The registration policy for formal namespaces is Expert Review as defined in the "IANA Considerations" document <xref target='RFC5226'/>.  The key steps for registration of a formal namespace are:</t>
        <t>
          <list style='numbers'>
            <t>Fill out the namespace registration template (see <xref target='template'/>).  This can be done as part of an Internet-Draft or a specification in another series, although that is not necessary.</t>
            <t>Send the completed template to the urn-nid@ietf.org discussion list for review.</t>
            <t>If necessary to address comments received, repeat steps 1 and 2.</t>
            <t>If the designated experts approve the request, the IANA will register the requested NID.</t>
          </list>
        </t>
        <t>A formal namespace registration can be revised by updating the registration template, following the same steps outlined above for new registrations.  A revised registration should making special note of any relevant changes in the underlying technologies or namespace management processes.</t>
      </section>

      <section title='Informal Namespaces' anchor='registration-informal'>
        <t>The registration policy for informal namespaces is First Come First Served <xref target='RFC5226'/>.  The key steps for registration of an informal namespace are:</t>
        <t>
          <list style='numbers'>
            <t>Write a completed namespace definition template (see <xref target='template'/>).</t>
            <t>Send it to the urn-nid@ietf.org discussion list for feedback.</t>
            <t>Once the review period has expired, send the final template to IANA (via the iana@iana.org email address).</t>
          </list>
        </t>
        <t>An informal namespace registration can be revised by updating the registration template, following the same steps outlined above for new registrations.</t>

      </section>

    </section>

    <section title='Guidelines for Designated Experts' anchor='guidelines'>
      <t>Experience to date with NID registration requests has shown that registrants sometimes do not initially understand some of the subtleties of URN namespaces, and that defining the namespace in the form of a specification enables the registrants to clearly formulate their "contract" with the intended user community.  Therefore, although the registration policy for formal namespaces is Expert Review and a stable specification is not strictly required, the designated experts for NID registration requests ought to encourage applicants to provide a stable specification documenting the namespace definition.</t>
      <t>Naming can be difficult and contentious; the designated experts and applicants are strongly encouraged to work together in a spirit of good faith and mutual understanding to achieve rough consensus on progressing registrations through the process.  They are also encouraged to bring additional expertise into the discussion if that would be helpful in adding perspective or otherwise resolving issues.</t>
    </section>

    <section title='IANA Considerations' anchor='iana'>
      <t>This document outlines the processes for registering URN namespaces, and has implications for the IANA in terms of registries to be maintained.  In all cases, the IANA ought to assign the appropriate NID (formal or informal) once the procedures outlined in this document have been completed.</t>
    </section>

    <section title='Security and Privacy Considerations' anchor='security'>
      <t>This document largely focuses on providing mechanisms for the declaration of public information.  Nominally, these declarations will be of relatively low security profile, however there is always the danger of "spoofing" and providing misinformation.  Information in these declarations ought to be taken as advisory.</t>
      <t>The definition of a URN namespace needs to account for potential security and privacy issues related to assignment, use, and resolution of identifiers within the namespace.</t>
    </section>

  </middle>

  <back>

    <references title="Normative References">

<reference anchor='I-D.ietf-urnbis-rfc2141bis-urn'>
<front>
<title>Uniform Resource Name (URN) Syntax</title>
<author initials='P' surname='Saint-Andre' fullname='Peter Saint-Andre' role='editor'>
    <organization />
</author>
<date month='January' day='23' year='2014' />
<abstract><t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is intended to serve as a persistent, location-independent resource identifier.  This document defines the canonical syntax for URIs under the "urn" scheme, guidelines for URN namespaces, requirements for URN presentation and transmission, and methods for determining URN equivalence.  This document obsoletes RFC 2141.</t></abstract>
</front>
<seriesInfo name='Internet-Draft' value='draft-ietf-urnbis-rfc2141bis-urn-07' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-urnbis-rfc2141bis-urn-07.txt' />
</reference>

<reference anchor='RFC2119'>
<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date year='1997' month='March' />
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   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:
<list>
<t>
      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.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>
<seriesInfo name='BCP' value='14' />
<seriesInfo name='RFC' value='2119' />
<format type='TXT' octets='4723' target='http://www.rfc-editor.org/rfc/rfc2119.txt' />
<format type='HTML' octets='17491' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
<format type='XML' octets='5777' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
</reference>

<reference anchor='RFC3986'>
<front>
<title abbrev='URI Generic Syntax'>Uniform Resource Identifier (URI): Generic Syntax</title>
<author initials='T.' surname='Berners-Lee' fullname='Tim Berners-Lee'>
<organization abbrev='W3C/MIT'>World Wide Web Consortium</organization>
<address>
<postal>
<street>Massachusetts Institute of Technology</street>
<street>77 Massachusetts Avenue</street>
<city>Cambridge</city>
<region>MA</region>
<code>02139</code>
<country>USA</country></postal>
<phone>+1-617-253-5702</phone>
<facsimile>+1-617-258-5999</facsimile>
<email>timbl@w3.org</email>
<uri>http://www.w3.org/People/Berners-Lee/</uri></address></author>
<author initials='R.' surname='Fielding' fullname='Roy T. Fielding'>
<organization abbrev='Day Software'>Day Software</organization>
<address>
<postal>
<street>5251 California Ave., Suite 110</street>
<city>Irvine</city>
<region>CA</region>
<code>92617</code>
<country>USA</country></postal>
<phone>+1-949-679-2960</phone>
<facsimile>+1-949-679-2972</facsimile>
<email>fielding@gbiv.com</email>
<uri>http://roy.gbiv.com/</uri></address></author>
<author initials='L.' surname='Masinter' fullname='Larry Masinter'>
<organization abbrev='Adobe Systems'>Adobe Systems Incorporated</organization>
<address>
<postal>
<street>345 Park Ave</street>
<city>San Jose</city>
<region>CA</region>
<code>95110</code>
<country>USA</country></postal>
<phone>+1-408-536-3024</phone>
<email>LMM@acm.org</email>
<uri>http://larry.masinter.net/</uri></address></author>
<date year='2005' month='January' />
<area>Applications</area>
<keyword>uniform resource identifier</keyword>
<keyword>URI</keyword>
<keyword>URL</keyword>
<keyword>URN</keyword>
<keyword>WWW</keyword>
<keyword>resource</keyword>
<abstract>
<t>
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.
</t></abstract></front>
<seriesInfo name='STD' value='66' />
<seriesInfo name='RFC' value='3986' />
<format type='TXT' octets='141811' target='http://www.rfc-editor.org/rfc/rfc3986.txt' />
<format type='HTML' octets='213584' target='http://xml.resource.org/public/rfc/html/rfc3986.html' />
<format type='XML' octets='163534' target='http://xml.resource.org/public/rfc/xml/rfc3986.xml' />
</reference>

<reference anchor='RFC5226'>
<front>
<title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
<author initials='T.' surname='Narten' fullname='T. Narten'>
<organization /></author>
<author initials='H.' surname='Alvestrand' fullname='H. Alvestrand'>
<organization /></author>
<date year='2008' month='May' />
<abstract>
<t>Many protocols make use of identifiers consisting of constants and other well-known values. Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec). To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority. For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).&lt;/t>&lt;t> In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made. If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role. This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.&lt;/t>&lt;t> This document obsoletes RFC 2434. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract></front>
<seriesInfo name='BCP' value='26' />
<seriesInfo name='RFC' value='5226' />
<format type='TXT' octets='66160' target='http://www.rfc-editor.org/rfc/rfc5226.txt' />
</reference>

    </references>

    <references title="Informative References">

<reference anchor='RFC2276'>
<front>
<title abbrev='URN Resolution'>Architectural Principles of Uniform Resource Name Resolution</title>
<author initials='K.' surname='Sollins' fullname='Karen Sollins'>
<organization>MIT Laboratory for Computer Science</organization>
<address>
<postal>
<street>545 Technology Sq.</street>
<street>Cambridge</street>
<street>MA 02139</street></postal>
<phone>+1 617 253 6006</phone>
<email>sollins@lcs.mit.edu</email></address></author>
<date year='1998' month='January' />
<area>Applications</area>
<keyword>security</keyword>
<keyword>uniform resource</keyword>
<abstract>
<t>
   This document addresses the issues of the discovery of URN (Uniform
   Resource Name) resolver services that in turn will directly translate
   URNs into URLs (Uniform Resource Locators) and URCs (Uniform Resource
   Characteristics).  The document falls into three major parts, the
   assumptions underlying the work, the guidelines in order to be a
   viable Resolver Discovery Service or RDS, and a framework for
   designing RDSs.  The guidelines fall into three principle areas:
   evolvability, usability, and security and privacy.  An RDS that is
   compliant with the framework will not necessarily be compliant with
   the guidelines.  Compliance with the guidelines will need to be
   validated separately.
</t></abstract></front>
<seriesInfo name='RFC' value='2276' />
<format type='TXT' octets='64811' target='http://www.rfc-editor.org/rfc/rfc2276.txt' />
<format type='XML' octets='63656' target='http://xml.resource.org/public/rfc/xml/rfc2276.xml' />
</reference>

<reference anchor='RFC2611'>
<front>
<title>URN Namespace Definition Mechanisms</title>
<author initials='L.' surname='Daigle' fullname='Leslie L. Daigle'>
<organization>Thinking Cat Enterprises</organization>
<address>
<email>leslie@thinkingcat.com</email></address></author>
<author initials='D.' surname='van Gulik' fullname='Dirk-Willem van Gulik'>
<organization>ISIS/STA/CEO - TP 270, Joint Research Centre Ispra</organization>
<address>
<postal>
<street />
<city>Ispra</city>
<region />
<code>21020</code>
<country>IT</country></postal>
<phone>+39 332 789549</phone>
<facsimile>+39 332 789185</facsimile>
<email>Dirk.vanGulik@jrc.it</email></address></author>
<author initials='R.' surname='Iannella' fullname='Renato Iannella'>
<organization>DSTC Pty Ltd</organization>
<address>
<postal>
<street>The Uni of Queensland</street>
<street>Gehrmann Labs</street>
<city />
<region />
<code>4072</code>
<country>AU</country></postal>
<phone>+61 7 33654310</phone>
<facsimile>+61 7 33654311</facsimile>
<email>renato@dstc.edu.au</email></address></author>
<author initials='P.' surname='Faltstrom' fullname='Patrik Faltstrom'>
<organization>Tele2/Swipnet</organization>
<address>
<postal>
<street>Borgarfjordsgatan 16</street>
<street>P.O. Box 62</street>
<city>Kista</city>
<region />
<code>S-164 94</code>
<country>SE</country></postal>
<phone>+46 56 264000</phone>
<facsimile>+46 56 264200</facsimile>
<email>paf@swip.net</email></address></author>
<date year='1999' month='June' />
<abstract>
<t>The URN WG has defined a syntax for Uniform Resource Names (URNs), as well as some proposed mechanisms for their resolution and use in Internet applications,. 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, and this document lays out general definitions of and mechanisms for establishing URN "namespaces".</t></abstract></front>
<seriesInfo name='BCP' value='33' />
<seriesInfo name='RFC' value='2611' />
<format type='TXT' octets='26916' target='http://www.rfc-editor.org/rfc/rfc2611.txt' />
</reference>

<reference anchor='RFC3406'>
<front>
<title>Uniform Resource Names (URN) Namespace Definition Mechanisms</title>
<author initials='L.' surname='Daigle' fullname='L. Daigle'>
<organization /></author>
<author initials='D.' surname='van Gulik' fullname='D. van Gulik'>
<organization /></author>
<author initials='R.' surname='Iannella' fullname='R. Iannella'>
<organization /></author>
<author initials='P.' surname='Faltstrom' fullname='P. Faltstrom'>
<organization /></author>
<date year='2002' month='October' />
<abstract>
<t>This 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.</t></abstract></front>
<seriesInfo name='BCP' value='66' />
<seriesInfo name='RFC' value='3406' />
<format type='TXT' octets='43707' target='http://www.rfc-editor.org/rfc/rfc3406.txt' />
</reference>

<reference anchor='RFC3552'>
<front>
<title>Guidelines for Writing RFC Text on Security Considerations</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'>
<organization /></author>
<author initials='B.' surname='Korver' fullname='B. Korver'>
<organization /></author>
<date year='2003' month='July' />
<abstract>
<t>All RFCs are required to have a Security Considerations section.  Historically, such sections have been relatively weak.  This document provides guidelines to RFC authors on how to write a good Security Considerations section.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract></front>
<seriesInfo name='BCP' value='72' />
<seriesInfo name='RFC' value='3552' />
<format type='TXT' octets='110393' target='http://www.rfc-editor.org/rfc/rfc3552.txt' />
</reference>

<reference anchor='RFC5234'>
<front>
<title>Augmented BNF for Syntax Specifications: ABNF</title>
<author initials='D.' surname='Crocker' fullname='D. Crocker'>
<organization /></author>
<author initials='P.' surname='Overell' fullname='P. Overell'>
<organization /></author>
<date year='2008' month='January' />
<abstract>
<t>Internet 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]</t></abstract></front>
<seriesInfo name='STD' value='68' />
<seriesInfo name='RFC' value='5234' />
<format type='TXT' octets='26359' target='http://www.rfc-editor.org/rfc/rfc5234.txt' />
</reference>

<reference anchor='RFC5890'>
<front>
<title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
<author initials='J.' surname='Klensin' fullname='J. Klensin'>
<organization /></author>
<date year='2010' month='August' />
<abstract>
<t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version.  It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t></abstract></front>
<seriesInfo name='RFC' value='5890' />
<format type='TXT' octets='54245' target='http://www.rfc-editor.org/rfc/rfc5890.txt' />
</reference>

<reference anchor='RFC6648'>
<front>
<title>Deprecating the "X-" Prefix and Similar Constructs in Application Protocols</title>
<author initials='P.' surname='Saint-Andre' fullname='P. Saint-Andre'>
<organization /></author>
<author initials='D.' surname='Crocker' fullname='D. Crocker'>
<organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'>
<organization /></author>
<date year='2012' month='June' />
<abstract>
<t>Historically, designers and implementers of application protocols have often distinguished between standardized and unstandardized parameters by prefixing the names of unstandardized parameters with the string "X-" or similar constructs.  In practice, that convention causes more problems than it solves.  Therefore, this document deprecates the convention for newly defined parameters with textual (as opposed to numerical) names in application protocols.  This memo documents an Internet Best Current Practice.</t></abstract></front>
<seriesInfo name='BCP' value='178' />
<seriesInfo name='RFC' value='6648' />
<format type='TXT' octets='28393' target='http://www.rfc-editor.org/rfc/rfc6648.txt' />
</reference>

<reference anchor='RFC6943'>
<front>
<title>Issues in Identifier Comparison for Security Purposes</title>
<author initials='D.' surname='Thaler' fullname='D. Thaler'>
<organization /></author>
<date year='2013' month='May' />
<abstract>
<t>Identifiers such as hostnames, URIs, IP addresses, and email addresses are often used in security contexts to identify security principals and resources.  In such contexts, an identifier presented via some protocol is often compared using some policy to make security decisions such as whether the security principal may access the resource, what level of authentication or encryption is required, etc.  If the parties involved in a security decision use different algorithms to compare identifiers, then failure scenarios ranging from denial of service to elevation of privilege can result.  This document provides a discussion of these issues that designers should consider when defining identifiers and protocols, and when constructing architectures that use multiple protocols.</t></abstract></front>
<seriesInfo name='RFC' value='6943' />
<format type='TXT' octets='62676' target='http://www.rfc-editor.org/rfc/rfc6943.txt' />
</reference>

<reference anchor='RFC6963'>
<front>
<title>A Uniform Resource Name (URN) Namespace for Examples</title>
<author initials='P.' surname='Saint-Andre' fullname='P. Saint-Andre'>
<organization /></author>
<date year='2013' month='May' />
<abstract>
<t>This document defines a Uniform Resource Name (URN) namespace identifier enabling the generation of URNs that are appropriate for use in documentation and in URN-related testing and experimentation.</t></abstract></front>
<seriesInfo name='BCP' value='183' />
<seriesInfo name='RFC' value='6963' />
<format type='TXT' octets='11749' target='http://www.rfc-editor.org/rfc/rfc6963.txt' />
</reference>

<reference anchor='RFC6973'>
<front>
<title>Privacy Considerations for Internet Protocols</title>
<author initials='A.' surname='Cooper' fullname='A. Cooper'>
<organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'>
<organization /></author>
<author initials='B.' surname='Aboba' fullname='B. Aboba'>
<organization /></author>
<author initials='J.' surname='Peterson' fullname='J. Peterson'>
<organization /></author>
<author initials='J.' surname='Morris' fullname='J. Morris'>
<organization /></author>
<author initials='M.' surname='Hansen' fullname='M. Hansen'>
<organization /></author>
<author initials='R.' surname='Smith' fullname='R. Smith'>
<organization /></author>
<date year='2013' month='July' />
<abstract>
<t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications.  It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices.  It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t></abstract></front>
<seriesInfo name='RFC' value='6973' />
<format type='TXT' octets='89198' target='http://www.rfc-editor.org/rfc/rfc6973.txt' />
</reference>

    </references>

    <section title='Changes from RFC 3406' anchor='changes'>
      <t>This document makes the following substantive changes from <xref target='RFC3406'/>:</t>
      <t>
        <list style='numbers'>
          <t>Relaxes the registration policy for formal namespaces from "IETF Review" to "Expert Review" <xref target='RFC5226'/>.</t>
          <t>Removes the category of experimental namespaces, consistent with <xref target='RFC6648'/>.</t>
          <t>Simplifies the registration template.</t>
        </list>
      </t>
      <t>In addition, some of the text has been updated to be consistent with the definition of Uniform Resource Identifiers (URIs) <xref target='RFC3986'/> and the processes for registering information with the IANA <xref target='RFC5226'/>, as well as more modern guidance with regard to security issues <xref target='RFC3552'/> and identifier comparison <xref target='RFC6943'/>.</t>
    </section>

    <section title='Contributors' anchor='contribs'>
      <t>RFC 3406, which provided the basis for this document, was authored by Leslie Daigle, Dirk-Willem van Gulik, Renato Iannella, and Patrik Faltstrom.  Their work is gratefully acknowledged.</t>
    </section>

    <section title='Acknowledgements' anchor='acks'>
      <t>Thanks to Marc Blanchet, Juha Hakala, Paul Jones, John Klensin, and Barry Leiba for their input.</t>
    </section>

  </back>
</rfc>
