draft-ietf-urn-ietf-06.txt   draft-ietf-urn-ietf-07.txt 
Internet-Draft Ryan Moats Internet-Draft Ryan Moats
draft-ietf-urn-ietf-06.txt AT&T draft-ietf-urn-ietf-07.txt AT&T
Expires in six months October 1998
A URN Namespace for IETF Documents A URN Namespace for IETF Documents
Filename: draft-ietf-urn-ietf-06.txt Filename: draft-ietf-urn-ietf-07.txt
Status of This Memo Status of This Memo
This document is an Internet-Draft. Internet-Drafts are working This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts. distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet- documents at any time. It is inappropriate to use Internet-
Drafts as reference material or to cite them other than as ``work Drafts as reference material or to cite them other than as ``work
in progress.'' in progress.''
To learn the current status of any Internet-Draft, please check To learn the current status of any Internet-Draft, please check
the ``1id-abstracts.txt'' listing contained in the Internet- the ``1id-abstracts.txt'' listing contained in the Internet-
Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net
(Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East (Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East
Coast), or ftp.isi.edu (US West Coast). Coast), or ftp.isi.edu (US West Coast).
Abstract Abstract
A system for Uniform Resource Names (URNs) must be capable of A system for Uniform Resource Names (URNs) must be capable of
supporting new naming systems. As an example of proposing a new supporting new naming systems. As an example of proposing a new
namespace, this document proposes the 'ietf' namespace. This namespace, this document proposes the 'ietf' namespace. This
namespace consists of the RFC family of documents (RFCs, STDs, FYIs, namespace consists of the RFC family of documents (RFCs, STDs, FYIs,
and BCPs) developed by the IETF and published by the RFC editor and and BCPs) developed by the IETF and published by the RFC Editor, the
the minutes of working groups (WG) and birds of a feather (BOF) minutes of working groups (WG) and birds of a feather (BOF) meetings
meetings that occur during IETF conferences. Both the current URN that occur during IETF conferences, and the Internet Drafts published
framework and URN syntax support this namespace. by the Internet Drafts Editor. Both the current URN framework and
URN syntax support this namespace.
0.1 Changes from -02 0.1 Changes from -02
This document has been restructured to use the template proposed in This document has been restructured to use the template proposed in
draft-ietf-urn-nid-req-03.txt. Example Perl scripts for resolving draft-ietf-urn-nid-req-03.txt. Example Perl scripts for resolving
this namespace have been supplied in an Appendix. this namespace have been supplied in an Appendix.
0.2 Changes from -03 0.2 Changes from -03
Text was added to the template clarifying persistence and uniqueness. Text was added to the template clarifying persistence and uniqueness.
skipping to change at page 2, line 22 skipping to change at page 2, line 22
More clarifications for the persistence section. In addition, More clarifications for the persistence section. In addition,
cleaned up some typos and ensured that the Appendix examples are cleaned up some typos and ensured that the Appendix examples are
functional functional
0.4 Changes from -05 0.4 Changes from -05
Based on a number of requests, i-ds have been added to the structure Based on a number of requests, i-ds have been added to the structure
and resolvers. In addition, some examples have been added. and resolvers. In addition, some examples have been added.
0.4 Changes from -06
Some changes of the template to conform with draft-ietf-urn-nid-req-
06.txt. Minor editing of some of the sections for more clarity.
1. Introduction 1. Introduction
This document proposes the "ietf" namespace, which consists of the This document proposes the "ietf" namespace, which consists of the
RFC family of documents (RFCs, STDs, FYIs, and BCPs) developed by the RFC family of documents (RFCs, STDs, FYIs, and BCPs) developed by the
IETF and published by the RFC editor and the minutes of working IETF and published by the RFC editor and the minutes of working
groups (WG) and birds of a feather (BOF) meetings that occur during groups (WG) and birds of a feather (BOF) meetings that occur during
IETF conferences. IETF conferences.
The namespace specification is for a formal namespace. The namespace specification is for a formal namespace.
2. Specification Template 2. Specification Template
Namespace ID: Namespace ID:
"ietf" requested. "ietf" requested.
Registration Information:
Registration version number: 1
Registration date: 1998-10-09
Declared registrant of the namespace: Declared registrant of the namespace:
Ryan Moats Ryan Moats
jayhawk@att.com jayhawk@att.com
Declaration of structure: Declaration of structure:
The identifier has the following ABNF [2] specification: The identifier has the following ABNF [2] specification:
NSS = (family ":" number) / ("mtg-" number "-" wgbofname) NSS = (family ":" number) / ("mtg-" number "-" wgbofname)
( "id:" name) ( "id:" name)
family = "rfc" / "std" / "fyi" / "bcp" family = "rfc" / "std" / "fyi" / "bcp"
number = 1*DIGIT number = 1*DIGIT
wgbofname = 1*LETDIGIT wgbofname = 1*LETDIGIT
name = id draft designation with "draft-" and trailing name = id draft name beginning with "draft-" and trailing
type removed (e.g. ietf-urn-ietf-06) type removed (e.g. ietf-urn-ietf-06)
LETDIGIT = DIGIT / %x41-%x5a / %x61-%x7a LETDIGIT = DIGIT / %x41-%x5a / %x61-%x7a
DIGIT = %x30-%x39 DIGIT = %x30-%x39
If the IESG (or it successor) adds a new document If the IESG (or it successor) adds a new document
series, this ABNF specification will need to be series, this ABNF specification will need to be
updated. Further, if a working group or BOF is updated. Further, if a working group or BOF is
created that used characters outside the range of this created that used characters outside the range of this
ABNF specification, this specification will need to be ABNF specification, this specification will need to be
updated. Any system intended to resolve names for updated. Any system intended to resolve names for
skipping to change at page 3, line 46 skipping to change at page 4, line 8
Identifier persistence considerations: Identifier persistence considerations:
Persistence of the URNs of this namespace is Persistence of the URNs of this namespace is
independent of the mutability of the underlying independent of the mutability of the underlying
documents. A URN once assigned will never be documents. A URN once assigned will never be
reassigned to a different resource; the assignment is reassigned to a different resource; the assignment is
persistent and immutable. Distinct from this, the persistent and immutable. Distinct from this, the
resources identified as RFCs are immutable, whereas resources identified as RFCs are immutable, whereas
the other sorts of documents, STDs, FYIs, and BCPs are the other sorts of documents, STDs, FYIs, and BCPs are
not. They may be composites of one or more RFCs and not. They may be composites of one or more RFCs and
the set of RFCs that comprise them may change with the set of RFCs that includes them may change with
time. It is important to note that this mutability of time. It is important to note that this mutability of
some resources is independent of the immutability of some resources is independent of the immutability of
URN assignment to a resource. URN assignment to a resource.
Process of identifier assignment: Process of identifier assignment:
Assignment of URNs from this namespace occurs in two Assignment of URNs from this namespace occurs in three
ways. The first is when a new RFC, FYI, STD or BCP is ways. The first is through publication of a new RFC,
passed by the IESG and published by the RFC FYI, STD or BCP is by the RFC Editor. This new document
Editor. This new document will have a new series will have a new series number and will therefore define
number and will therefore define a new URN. The a new URN. The document mappings maintained by the
document mappings maintained by the RFC Editor (the RFC Editor (the index files "rfc-index.txt",
index files "rfc-index.txt", "fyi-index.txt", "fyi-index.txt", "bcp-index.txt" and "std-index.txt")
"bcp-index.txt" and "std-index.txt") are defined to be are defined to be the definitive statement of the
the definitive statement of the assignment of RFC assignment of RFC Family URNs in this namespace.
Family URNs in this namespace.
The second way a URN is assigned is when a working The second way a URN is assigned is through the filing
group or birds of a feather files meeting minutes as of meeting minutes by a working group or birds of a
part of an IETF conference. The list of minutes feather as part of an IETF conference. The list of
maintained by the IETF for each working group and minutes maintained by the IETF for each working group
conference in the subtree pointed at by the URL and conference in the subtree pointed at by the URL
ftp://ietf.org/ietf/ is considered the definitive ftp://ietf.org/ietf/ is considered the definitive
assignment of URNs for working group or birds of a assignment of URNs for working group or birds of a
feather minutes. feather minutes.
The third way a URN is assigned is through the The third way a URN is assigned is through the
publication of a new internet-draft by the Internet publication of a new internet-draft by the Internet
Draft Editor. This draft will have a distinct name Draft Editor. This draft will have a distinct name
(and version number) and therefore defined a new URN. (and version number) and therefore defined a new URN.
The document mapping maintained by the Internet Drafts The document mapping maintained by the Internet Drafts
editor ("1id-abstracts.txt") is defined as the editor ("1id-abstracts.txt") is defined as the
definitive statement of the assignment of URNs for definitive statement of the assignment of URNs for
this portion of the namespace. this portion of the namespace.
Process of identifier resolution: Process of identifier resolution:
A mirrored copy of the underlying documentation is A mirrored copy of the underlying documentation is
required to resolve these URNs. Resolution via required to resolve these URNs. Resolution via
HTTP is accomplished by a set of simple Perl cgi-bin HTTP is done by a set of simple Perl cgi-bin
scripts presented in Appendix A. scripts presented in Appendix A.
Rules for Lexical Equivalence: Rules for Lexical Equivalence:
The entire URN is case-insensitive. The entire URN is case-insensitive.
Conformance with URN Syntax: Conformance with URN Syntax:
There are no additional characters reserved. There are no additional characters reserved.
skipping to change at page 7, line 16 skipping to change at page 7, line 25
my($ietfnum, $sesnam) = @_; my($ietfnum, $sesnam) = @_;
&urn_error("404 Not Found0) if (!defined $number2date{$ietfnum}); &urn_error("404 Not Found0) if (!defined $number2date{$ietfnum});
my($date)=$number2date{$ietfnum}; my($date)=$number2date{$ietfnum};
my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt"; my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt";
if (-f $link) { if (-f $link) {
print "Status: 200 OK70; print "Status: 200 OK70;
print "Content-type: text/html70; print "Content-type: text/html70;
print "<HTML>0TITLE>Citation for $urn</TITLE>0; print "<HTML>0TITLE>Citation for $urn</TITLE>0;
print "<BODY>0; print "<BODY>0;
print "<H1><A HREF= print "<H1><A HREF=
print "Minutes of the $sesnam working group from the " . &end($ietfnum) . " IETF"; print "Minutes of the $sesnam working group from the " . &end($ietfnum)
. " IETF";
print "</BODY>0/HTML>0; print "</BODY>0/HTML>0;
return; return;
} }
my($link)="$wgpath/$date/$sesnam-minutes-$date.txt"; my($link)="$wgpath/$date/$sesnam-minutes-$date.txt";
if (-f $link) { if (-f $link) {
print "Status: 200 OK70; print "Status: 200 OK70;
print "Content-type: text/html70; print "Content-type: text/html70;
print "<HTML>0TITLE>Citation for $urn</TITLE>0; print "<HTML>0TITLE>Citation for $urn</TITLE>0;
print "<BODY>0; print "<BODY>0;
print "<H1><A HREF= print "<H1><A HREF=
print "Minutes of the $sesnam working group from the " . &end($ietfnum) . " IETF"; print "Minutes of the $sesnam working group from the " . &end($ietfnum)
. " IETF";
print "</BODY>0/HTML>0; print "</BODY>0/HTML>0;
return; return;
} }
&urn_error("404 Not Found0); &urn_error("404 Not Found0);
} }
sub end { sub end {
my($inarg)=@_; my($inarg)=@_;
return $inarg . "st" if ($inarg =~ /1$/); return $inarg . "st" if ($inarg =~ /1$/);
return $inarg . "nd" if ($inarg =~ /2$/); return $inarg . "nd" if ($inarg =~ /2$/);
skipping to change at page 14, line 52 skipping to change at page 15, line 13
sub resolve2 { sub resolve2 {
my($ietfnum, $sesnam) = @_; my($ietfnum, $sesnam) = @_;
&urn_error("404 Not Found0) if (!defined $number2date{$ietfnum}); &urn_error("404 Not Found0) if (!defined $number2date{$ietfnum});
my($date)=$number2date{$ietfnum}; my($date)=$number2date{$ietfnum};
my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt"; my($link)="$wgpath/$sesnam/$sesnam-minutes-$date.txt";
if (-f $link) { if (-f $link) {
$link=~s/^/ftp///; $link=~s/^/ftp///;
my($ftplink)="ftp://$host/$link"; my($ftplink)="ftp://$host/$link";
my($httplink)="http://$host/$link"; my($httplink)="http://$host/$link";
my($glink)="gopher://$host:70/0/$link"; my($glink)="gopher://$host:70/0/$link";
if ($accept =~ /text/uri-list/) { #look for text/uri-list, otherwise text/html if ($accept =~ /text/uri-list/) { #look for text/uri-list, otherwise
text/html
print "Status: 200 OK0; print "Status: 200 OK0;
print "Content-type: text/uri-list0; print "Content-type: text/uri-list0;
print "#$urn0; print "#$urn0;
print "$ftplink0; print "$ftplink0;
print "$httplink0; print "$httplink0;
print "$glink0; print "$glink0;
} }
if ($accept =~ /text/html/) { if ($accept =~ /text/html/) {
print "Status: 200 OK0; print "Status: 200 OK0;
print "Content-type: text/html0HTML>0; print "Content-type: text/html0HTML>0;
skipping to change at page 15, line 31 skipping to change at page 15, line 42
print "</UL>0/body>0/HTML>0; print "</UL>0/body>0/HTML>0;
} }
return; return;
} }
my($link)="$wgpath/$date/$sesnam-minutes-$date.txt"; my($link)="$wgpath/$date/$sesnam-minutes-$date.txt";
if (-f $link) { if (-f $link) {
$link=~s/^/ftp///; $link=~s/^/ftp///;
my($ftplink)="ftp://$host/$link"; my($ftplink)="ftp://$host/$link";
my($httplink)="http://$host/$link"; my($httplink)="http://$host/$link";
my($glink)="gopher://$host:70/0/$link"; my($glink)="gopher://$host:70/0/$link";
if ($accept =~ /text/uri-list/) { #look for text/uri-list, otherwise text/html if ($accept =~ /text/uri-list/) { #look for text/uri-list, otherwise
text/html
print "Status: 200 OK0; print "Status: 200 OK0;
print "Content-type: text/uri-list0; print "Content-type: text/uri-list0;
print "#$urn0; print "#$urn0;
print "$ftplink0; print "$ftplink0;
print "$httplink0; print "$httplink0;
print "$glink0; print "$glink0;
} }
if ($accept =~ /text/html/) { if ($accept =~ /text/html/) {
print "Status: 200 OK0; print "Status: 200 OK0;
print "Content-type: text/html0HTML>0; print "Content-type: text/html0HTML>0;
skipping to change at page 16, line 35 skipping to change at page 16, line 45
} }
$try="/ftp/$pathbase{$scheme}$value.html"; $try="/ftp/$pathbase{$scheme}$value.html";
if (-f $try) { if (-f $try) {
push(@urls, "http://$host/$pathbase{$scheme}$value.html"); push(@urls, "http://$host/$pathbase{$scheme}$value.html");
push(@urls, "ftp://$host/$pathbase{$scheme}$value.html"); push(@urls, "ftp://$host/$pathbase{$scheme}$value.html");
} }
&urn_error("404 Not Found0) if ($#urls == -1); &urn_error("404 Not Found0) if ($#urls == -1);
MIME_SWITCH: { MIME_SWITCH: {
if ($accept =~ /text/uri-list/) { #look for text/uri-list, otherwise text/html if ($accept =~ /text/uri-list/) { #look for text/uri-list, otherwise
text/html
print "Status: 200 OK0; print "Status: 200 OK0;
print "Content-type: text/uri-list0; print "Content-type: text/uri-list0;
print "#$urn0; print "#$urn0;
foreach $i (@urls) { foreach $i (@urls) {
print "$i0; print "$i0;
} }
last MIME_SWITCH; last MIME_SWITCH;
} }
if ($accept =~ /text/html/) { if ($accept =~ /text/html/) {
print "Status: 200 OK0; print "Status: 200 OK0;
skipping to change at page 18, line 6 skipping to change at page 18, line 16
} }
$try="/ftp/$pathbase{$scheme}$value.html"; $try="/ftp/$pathbase{$scheme}$value.html";
if (-f $try) { if (-f $try) {
push(@urls, "http://$host/$pathbase{$scheme}$value.html"); push(@urls, "http://$host/$pathbase{$scheme}$value.html");
push(@urls, "ftp://$host/$pathbase{$scheme}$value.html"); push(@urls, "ftp://$host/$pathbase{$scheme}$value.html");
} }
&urn_error("404 Not Found0) if ($#urls == -1); &urn_error("404 Not Found0) if ($#urls == -1);
MIME_SWITCH: { MIME_SWITCH: {
if ($accept =~ /text/uri-list/) { #look for text/uri-list, otherwise text/html if ($accept =~ /text/uri-list/) { #look for text/uri-list, otherwise
text/html
print "Status: 200 OK0; print "Status: 200 OK0;
print "Content-type: text/uri-list0; print "Content-type: text/uri-list0;
print "#$urn0; print "#$urn0;
foreach $i (@urls) { foreach $i (@urls) {
print "$i0; print "$i0;
} }
last MIME_SWITCH; last MIME_SWITCH;
} }
if ($accept =~ /text/html/) { if ($accept =~ /text/html/) {
print "Status: 200 OK0; print "Status: 200 OK0;
 End of changes. 18 change blocks. 
32 lines changed or deleted 49 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/