6963
BEST CURRENT PRACTICE
A Uniform Resource Name (URN) Namespace for Examples
Authors: P. Saint-Andre
Date: May 2013
Working Group: NON WORKING GROUP
Stream: IETF
Abstract
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.
RFC 6963
BEST CURRENT PRACTICE
Internet Engineering Task Force (IETF) P. Saint-Andre
Request for Comments: 6963 Cisco Systems, Inc.
BCP: 183 May 2013
Category: Best Current Practice
ISSN: 2070-1721
<span class="h1">A Uniform Resource Name (URN) Namespace for Examples</span>
Abstract
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.
Status of This Memo
This memo documents an Internet Best Current Practice.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
BCPs is available in <a href="./rfc5741#section-2">Section 2 of RFC 5741</a>.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
<a href="https://www.rfc-editor.org/info/rfc6963">http://www.rfc-editor.org/info/rfc6963</a>.
Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and the IETF Trust's Legal
Provisions Relating to IETF Documents
(<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
<span class="grey">Saint-Andre Best Current Practice [Page 1]</span>
<span id="page-2" ></span>
<span class="grey"><a href="./rfc6963">RFC 6963</a> Example URNs May 2013</span>
Table of Contents
<a href="#section-1">1</a>. Introduction ....................................................<a href="#page-2">2</a>
<a href="#section-2">2</a>. Terminology .....................................................<a href="#page-2">2</a>
<a href="#section-3">3</a>. Completed Namespace Definition Template .........................<a href="#page-3">3</a>
<a href="#section-4">4</a>. Namespace Considerations ........................................<a href="#page-4">4</a>
<a href="#section-5">5</a>. Community Considerations ........................................<a href="#page-5">5</a>
<a href="#section-6">6</a>. Security Considerations .........................................<a href="#page-5">5</a>
<a href="#section-7">7</a>. IANA Considerations .............................................<a href="#page-5">5</a>
<a href="#section-8">8</a>. References ......................................................<a href="#page-6">6</a>
<a href="#appendix-A">Appendix A</a>. Acknowledgements .......................................<a href="#page-7">7</a>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
The Uniform Resource Name (URN) technology [<a href="./rfc2141" title=""URN Syntax"">RFC2141</a>] provides a way
to generate persistent, location-independent resource identifiers.
The primary "scope" of a URN is provided by its namespace identifier
(NID). As specified in [<a href="./rfc3406" title=""Uniform Resource Names (URN) Namespace Definition Mechanisms"">RFC3406</a>], there are three kinds of NIDs:
formal, informal, and experimental. Most of the NIDs registered to
date are formal. As far as is known, the few informal namespaces
have not been widely used, and the experimental namespaces are by
definition unregistered.
The experimental namespaces take the form "X-NID" (where "NID" is the
desired namespace identifier). Because the "X-" convention has been
deprecated in general [<a href="./rfc6648" title=""Deprecating the "">RFC6648</a>], it seems sensible to achieve the
same objective in a different way. Therefore, this document
registers a formal namespace identifier of "example", similar to
"example.com" and other domain names [<a href="./rfc2606" title=""Reserved Top Level DNS Names"">RFC2606</a>]. Under the "example"
NID, specification authors and code developers can mint URNs for use
in documentation and in URN-related testing and experimentation by
assigning their own unique Namespace Specific Strings without fear of
conflicts with current or future actual URNs. Such URNs are intended
for use as examples in documentation, testing of code for URN and URI
processing, URN-related experimentation, invalid URNs, and other
similar uses. They are not intended for testing non-URI code or for
building higher-level applications for use over the Internet or
private networks (e.g., as XML namespace names), since it is
relatively easy to mint URIs whose authority component is a domain
name controlled by the person or organization that wishes to engage
in such testing and experimentation.
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Terminology</span>
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
[<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>].
<span class="grey">Saint-Andre Best Current Practice [Page 2]</span>
<span id="page-3" ></span>
<span class="grey"><a href="./rfc6963">RFC 6963</a> Example URNs May 2013</span>
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Completed Namespace Definition Template</span>
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Namespace ID</span>
The Namespace ID "example" has been assigned.
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Registration Information</span>
Version 1
Date: 2013-04-24
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Declared Registrant of the Namespace</span>
Registering organization: IETF
Designated contact: IESG, [email protected]
<span class="h3"><a class="selflink" id="section-3.4" href="#section-3.4">3.4</a>. Declaration of Syntactic Structure</span>
URNs that use the "example" NID shall have the following structure:
urn:example:{NSS}
The Namespace Specific String (NSS) is a mandatory string of ASCII
characters [<a href="./rfc20" title=""ASCII format for network interchange"">RFC20</a>] that conforms to the URN syntax requirements
[<a href="./rfc2141" title=""URN Syntax"">RFC2141</a>] and provides a name that is useful within the relevant
documentation example, test suite, or other application.
<span class="h3"><a class="selflink" id="section-3.5" href="#section-3.5">3.5</a>. Relevant Ancillary Documentation</span>
See [<a href="./rfc6648" title=""Deprecating the "">RFC6648</a>] for information about deprecation of the "X-"
convention in protocol parameters and identifiers.
<span class="h3"><a class="selflink" id="section-3.6" href="#section-3.6">3.6</a>. Identifier Uniqueness Considerations</span>
Those who mint example URNs ought to strive for uniqueness in the
Namespace Specific String portion of the URN. However, such
uniqueness cannot be guaranteed through the assignment process.
Therefore, it is NOT RECOMMENDED for implementers to use example URNs
for any purposes other than documentation, private testing, and truly
experimental contexts.
<span class="h3"><a class="selflink" id="section-3.7" href="#section-3.7">3.7</a>. Identifier Persistence Considerations</span>
Once minted, an example URN is immutable. However, it is simply a
string; and there is no guarantee that the documentation, test suite,
or other application using the URN is immutable.
<span class="grey">Saint-Andre Best Current Practice [Page 3]</span>
<span id="page-4" ></span>
<span class="grey"><a href="./rfc6963">RFC 6963</a> Example URNs May 2013</span>
<span class="h3"><a class="selflink" id="section-3.8" href="#section-3.8">3.8</a>. Process of Identifier Assignment</span>
Assignment is completely open, since anyone can mint example URNs for
use in documentation, private testing, and other experimental
contexts.
<span class="h3"><a class="selflink" id="section-3.9" href="#section-3.9">3.9</a>. Process for Identifier Resolution</span>
Example URNs are not intended to be resolved, and the namespace will
probably never be registered with a Resolution Discovery System
(except to simply inform requesters that such URNs are merely
examples).
<span class="h3"><a class="selflink" id="section-3.10" href="#section-3.10">3.10</a>. Rules for Lexical Equivalence</span>
No special considerations; the rules for lexical equivalence
specified in [<a href="./rfc2141" title=""URN Syntax"">RFC2141</a>] apply.
<span class="h3"><a class="selflink" id="section-3.11" href="#section-3.11">3.11</a>. Conformance with URN Syntax</span>
No special considerations
<span class="h3"><a class="selflink" id="section-3.12" href="#section-3.12">3.12</a>. Validation Mechanism</span>
None
<span class="h3"><a class="selflink" id="section-3.13" href="#section-3.13">3.13</a>. Scope</span>
The scope of an example URN is limited to the documentation in which
it is found, the test in which it is used, the experiment in which it
appears, etc. Example URNs have no meaning outside such strictly
limited contexts.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Namespace Considerations</span>
No existing formal namespace enables entities to generate URNs that
are appropriate for use as examples in documentation and in
URN-related testing and experimentation. It could be argued that no
such formal namespace is needed, given that experimental namespaces
can be minted at will. However, experimental namespaces run afoul of
the trend away from using the "X-" convention in the names of
protocol parameters and identifiers [<a href="./rfc6648" title=""Deprecating the "">RFC6648</a>]. Additionally, in
practice, specification authors often mint examples using fake NIDs
that go unregistered because they are never intended to be used. To
minimize the possibility of confusion, use of this dedicated example
namespace is recommended for generating example URNs.
<span class="grey">Saint-Andre Best Current Practice [Page 4]</span>
<span id="page-5" ></span>
<span class="grey"><a href="./rfc6963">RFC 6963</a> Example URNs May 2013</span>
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Community Considerations</span>
The "example" NID is intended to provide a clean, easily recognizable
space for minting examples to be used in documentation and in
URN-related testing and experimentation. The NSS is best as a unique
string, generated by the person, organization, or other entity that
creates the documentation, test suite, or other application. There
is no issuing authority for example URNs, and it is not intended that
they can be resolved in any meaningful way.
The "example" NID does not obviate the need to coordinate with
issuing authorities for existing namespaces (e.g., minting
"urn:example:xmpp:foo" instead of requesting issuance of
"urn:xmpp:foo"), to register new namespace identifiers if existing
namespaces do not match one's desired functionality (e.g., minting
"urn:example:sha-1:29ead03e784b2f636a23ffff95ed12b56e2f2637" instead
of registering the "sha-1" NID), or to respect the basic spirit of
URN NID assignment (e.g., setting up shadow NIDs such as
"urn:example:MyCompany:*" instead of using, say, HTTP URIs).
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Security Considerations</span>
This document introduces no additional security considerations beyond
those associated with the use and resolution of URNs in general.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. IANA Considerations</span>
This document defines a URN NID registration of "example", which IANA
has added to the "Formal URN Namespaces" registry. The completed
registration template can be found in <a href="#section-3">Section 3</a>.
<span class="grey">Saint-Andre Best Current Practice [Page 5]</span>
<span id="page-6" ></span>
<span class="grey"><a href="./rfc6963">RFC 6963</a> Example URNs May 2013</span>
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. References</span>
<span class="h3"><a class="selflink" id="section-8.1" href="#section-8.1">8.1</a>. Normative References</span>
[<a id="ref-RFC20">RFC20</a>] Cerf, V., "ASCII format for network interchange", <a href="./rfc20">RFC 20</a>,
October 1969.
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-RFC2141">RFC2141</a>] Moats, R., "URN Syntax", <a href="./rfc2141">RFC 2141</a>, May 1997.
[<a id="ref-RFC3406">RFC3406</a>] Daigle, L., van Gulik, D., Iannella, R., and P. Faltstrom,
"Uniform Resource Names (URN) Namespace Definition
Mechanisms", <a href="https://www.rfc-editor.org/bcp/bcp66">BCP 66</a>, <a href="./rfc3406">RFC 3406</a>, October 2002.
<span class="h3"><a class="selflink" id="section-8.2" href="#section-8.2">8.2</a>. Informative References</span>
[<a id="ref-RFC2606">RFC2606</a>] Eastlake, D. and A. Panitz, "Reserved Top Level DNS
Names", <a href="https://www.rfc-editor.org/bcp/bcp32">BCP 32</a>, <a href="./rfc2606">RFC 2606</a>, June 1999.
[<a id="ref-RFC6648">RFC6648</a>] Saint-Andre, P., Crocker, D., and M. Nottingham,
"Deprecating the "X-" Prefix and Similar Constructs in
Application Protocols", <a href="https://www.rfc-editor.org/bcp/bcp178">BCP 178</a>, <a href="./rfc6648">RFC 6648</a>, June 2012.
<span class="grey">Saint-Andre Best Current Practice [Page 6]</span>
<span id="page-7" ></span>
<span class="grey"><a href="./rfc6963">RFC 6963</a> Example URNs May 2013</span>
<span class="h2"><a class="selflink" id="appendix-A" href="#appendix-A">Appendix A</a>. Acknowledgements</span>
Thanks to Martin Duerst, Barry Leiba, and Jim Schaad for their
feedback; to Christer Holmberg for his Gen-ART review; and to Benoit
Claise, Adrian Farrel, and Stephen Farrell for their helpful input
during IESG review. Julian Reschke inspired the work on this
document, provided valuable suggestions, and shepherded the document.
Author's Address
Peter Saint-Andre
Cisco Systems, Inc.
1899 Wynkoop Street, Suite 600
Denver, CO 80202
USA
EMail: [email protected]
Saint-Andre Best Current Practice [Page 7]
Annotations
Select text to annotate