diffs between previous version and this

Larry Masinter (masinter@parc.xerox.com)
Wed, 27 Jul 1994 09:26:12 PDT

To: uri@bunyip.com
Subject: diffs between previous version and this
From: Larry Masinter <masinter@parc.xerox.com>
Message-Id: <94Jul27.092624pdt.2760@golden.parc.xerox.com>
Date: Wed, 27 Jul 1994 09:26:12 PDT

For those who have asked, here is a diff between the previous version
and the one I just mailed out for discussion on Thursday:

================================================================
2,3c2,3
< draft-ietf-uri-url-05.txt L. Masinter
< Expires February 26, 1995 M. McCahill

---
> interim draft 5.2                                            L. Masinter
> Expires February 27, 1995                                    M. McCahill
5c5
<                                                            July 26, 1994
---
>                                                            July 27, 1994
28c28
<      This Internet Draft expires February 26, 1995.
---
>      This Internet Draft expires February 27, 1995.
53,54c53,54
<    for a resource available on the Internet. As there are many
<    different method of accessing resources, there are several
---
>    for a resource available on the Internet. Just as there are many
>    different methods of access to resources, there are several
57,58c57,58
<    The generic syntax provides a framework for new schemes for names
<    to be resolved using as yet undefined protocols.
---
>    The generic syntax provides a framework for new URL schemes to be
>    resolved using as yet undefined protocols.
61,62c61,62
<    rules of a completely specified name; second, we give the rules
<    under which parts of the name may be omitted in a well-defined
---
>    rules of a completely specified URL; second, we give the rules
>    under which parts of the URL may be omitted in a well-defined
67,69c67
<    A URL consists of a scheme specifier followed by a string whose
<    format is a function of the scheme. A BNF description of the URL
<    syntax is given in section 5. URLs are written as
---
>    URLs are written as follows:
71c69
<          URL:<scheme>:<scheme-specific-part>
---
>        URL:<scheme>:<scheme-specific-part>
73,75c71
< 2.1.1. URL Label
< 
<    URLs start with a constant prefix "URL:". This prefix is used to
---
>    A URL starts with a constant prefix "URL:".  This prefix is used to
77c73,74
<    elements.
---
>    elements. The part of the URL after the initial prefix is known as
>    the URL body.
79c76,84
< 2.1.2. Scheme
---
>    The body of the URL contains the name of the scheme being used
>    (<scheme>) followed by a colon and then a string (the
>    <scheme-specific-part>) whose interpretation depends on the scheme.
> 
>    Scheme names consist of lower case letters "a"--"z", digits, and
>    the characters plus ("+"), period ("."), and hyphen ("-"). For
>    resiliency, programs interpreting URLs should allow upper case
>    letters as equivalent to lower case in scheme names (e.g., allow
>    "HTTP" as well as "http").
81,94c86
<    After the initial "URL:" string, the next component of a URL is the
<    name of the scheme used, followed by a colon. Scheme names are made
<    of lower case letters "a"--"z", digits, and the character plus
<    ("+"), period ("."), and hyphen ("-"). For resiliancy, programs
<    interpreting URLs may wish to allow upper case letters as
<    equivalent to lower case in scheme names (e.g., allow
<    "URL:HTTP://host/" as well as "URL:http://host/").
< 
< 2.1.3. Scheme Specific Part
< 
<    The syntax for the rest of the URL varies depending on the scheme.
<    However, there is a common syntax shared by many schemes that use
<    IP-based protocols to specified Internet hosts, as specified in 
<    Section 3.1. 
---
>    A BNF description of the URL syntax is given in Section 5.
111,118c103,110
<    Many URL schemes have characters that are _reserved_; their
<    appearance in the scheme-specific part of the URL has a designated
<    semantics. If it is necessary to designate a byte in a component of
<    a URL that would otherwise be represented by a reserved character,
<    it is necessary to represent that byte encoded. The characters ";",
<    "/", "?", ":", "@", "=" and "&" are the characters which may be
<    reserved for special meaning within a scheme.  No other characters
<    may be reserved within a scheme.
---
>    Many URL schemes reserve certain characters for a special meaning;
>    their appearance in the scheme-specific part of the URL has a
>    designated semantics. If it is necessary to designate a byte in a
>    component of a URL that would otherwise be represented by a
>    reserved character, it is necessary to represent that byte encoded.
>    The characters ";", "/", "?", ":", "@", "=" and "&" are the
>    characters which may be reserved for special meaning within a
>    scheme.  No other characters may be reserved within a scheme.
160c152
<    prospero                Prospero directory service
---
>    prospero                Prospero Directory Service
196,197c188,189
<     while <URL:ftp://foo:@host.com/> has a user name of "foo" and no
<     password.
---
>     while <URL:ftp://foo:@host.com/> has a user name of "foo" and an
>     empty password.
225c217
<    FTP URLs follow the syntax described in section 3.1.  The port
---
>    FTP URLs follow the syntax described in Section 3.1.  The port
233c225
<    conventions for "anonymous" FTP are to be used, as followed:
---
>    conventions for "anonymous" FTP are to be used, as follows:
310c302
<    HTTP URLs take the following form:
---
>    The body of an HTTP URL takes the form:
312c304
<      URL:http://<host>:<port>/<path>?<searchpart>
---
>       http://<host>:<port>/<path>?<searchpart>
315,319c307,311
<    is omitted, the port defaults to 80.  <path> is a HTTP selector,
<    and <searchpart> is a query string. The <path> is optional, as is
<    the <searchpart> and its preceding "?". If neither <path> nor
<    <searchpart> is present, the "/" may also be omitted.  No user name
<    or password is allowed.
---
>    is omitted, the port defaults to 80.  No user name or password is
>    allowed.  <path> is a HTTP selector, and <searchpart> is a query
>    string. The <path> is optional, as is the <searchpart> and its
>    preceding "?". If neither <path> nor <searchpart> is present, the
>    "/" may also be omitted.
331,336c323,328
<    items and collections of items (directories). The Gopher+
<    protocol is a set of upward compatible extensions to the base
<    Gopher protocol and is specified in [2]. Gopher+ supports
<    associating arbitrary sets of attributes and alternate data
<    representations with Gopher items. Gopher URLs accommodate both 
<    Gopher and Gopher+ items and item attributes.
---
>    items and collections of items (directories). The Gopher+ protocol
>    is a set of upward compatible extensions to the base Gopher
>    protocol and is specified in [2]. Gopher+ supports associating
>    arbitrary sets of attributes and alternate data representations
>    with Gopher items. Gopher URLs accommodate both Gopher and Gopher+
>    items and item attributes.
340c332
<    Gopher URLs have the following form:
---
>    The body of a Gopher URL takes the form: 
342c334
<     URL:gopher://<host>:<port>/<gopher-path>
---
>       gopher://<host>:<port>/<gopher-path>
344c336
<     where <gopher-path> is one of
---
>    where <gopher-path> is one of
347a340
>        <gophertype><selector>%09<gopher+_string>
366,369c359,362
<    gophertype character, in which case that character will occur twice
<    consecutively. The gopher selector string may be an empty string;
<    this is how gopher clients refer to the top-level directory on a
<    gopher server.
---
>    <gophertype> character, in which case that character will occur
>    twice consecutively. The gopher selector string may be an empty
>    string; this is how gopher clients refer to the top-level directory
>    on a gopher server.
389a383,393
>    When a gopher client retrieves an item from a Gopher+ server, the
>    client send Gopher+ commands to the gopher server by appending a
>    <tab> and the gopher+ commands after the gopher selector (and the
>    <tab> and search string in the case of a gopher search item). If a
>    Gopher+ URL does not refer to a Gopher search type, the Gopher
>    client sends to the server the gopher selector string, followed by
>    a tab, followed by the gopher+ commands. If the Gopher+ URL refers
>    to a Gopher search type, the client sends to the gopher server the
>    gopher selector string, followed by a tab, followed the search
>    string, followed by a tab, followed by the gopher+ commands.
> 
398c402
<    a Gopher electronic for associated with it. 
---
>    a Gopher electronic form associated with it.
470c474
<    Mailto URLs take the form:
---
>    The body of a mailto URL takes the form:
472c476
<         URL:mailto:<rfc822-addr-spec>
---
>         mailto:<rfc822-addr-spec>
491c495
<    News URLs take one of two forms:
---
>    The body of a news URL takes one of two forms:
493,494c497,498
<      URL:news:<newsgroup-name>
<      URL:news:<message-id>
---
>      news:<newsgroup-name>
>      news:<message-id>
504c508,509
<    The URL "news:*" is used to refer to "all available news groups".
---
>    If <newsgroup-name> is "*" (as in <URL:news:*>), it is used to
>    refer to "all available news groups".
514c519,521
<    (RFC 977). NNTP URLs take the form:
---
>    (RFC 977). 
> 
>    The body of a nntp URL take the form:
516c523
<      URL:nntp://<host>:<port>/<newsgroup-name>/<article-number>
---
>       nntp://<host>:<port>/<newsgroup-name>/<article-number>
518,519c525,526
<    where <host> and <port> are as described in 3.1. If :<port> is
<    omitted, the port defaults to 119.
---
>    where <host> and <port> are as described in Section 3.1. If :<port>
>    is omitted, the port defaults to 119.
537c544
<    Telnet URLs take the form
---
>    The body of a telnet URL takes the form:
539c546
<      URL:telnet://<user>:<password>@<host>:<port> [ / ]
---
>        telnet://<user>:<password>@<host>:<port> [ / ]
541c548
<    as specified in section 3.1. The port defaults to 23; the <user>
---
>    as specified in Section 3.1. The port defaults to 23; the <user>
555c562,566
<    WAIS URLs take the following forms:
---
>    The body of a WAIS URLs takes one the following forms:
> 
>      wais://<host>:<port>/<database>
>      wais://<host>:<port>/<database>?<search>
>      wais://<host>:<port>/<database>/<wtype>/<wpath>
557,563c568,572
<      URL:wais://<host>:<port>/<database>
<      URL:wais://<host>:<port>/<database>?<search>
<      URL:wais://<host>:<port>/<database>/<wtype>/<wpath>
< 
<    If :<port> is omitted, the port defaults to 210. The first form
<    designates a WAIS database that is available for searching. The
<    second form designates a particular search.
---
>    where <host> and <port> are as described in Section 3.1. If :<port>
>    is omitted, the port defaults to 210.  The first form designates a
>    WAIS database that is available for searching. The second form
>    designates a particular search.  <database> is the name of the WAIS
>    database being queried.
584c593
<    FILE URLs take the form:
---
>    The body of a file URL takes the form:
586c595
<    URL:file://<host>/<path>
---
>        file://<host>/<path>
588c597
<    Where <host> is the fully qualified domain name of the system on
---
>    where <host> is the fully qualified domain name of the system on
593c602,603
<           DISK$USER:[MY.NOTES]NOTE123456.TXT
---
> 
>      DISK$USER:[MY.NOTES]NOTE123456.TXT
597c607
<           URL:file://vms.host.edu/my/notes/note12345.txt
---
>      <URL:file://vms.host.edu/disk$user/my/notes/note12345.txt>
610,613c620,621
<    accessed via the Prospero Directory Service. Prospero URLs are
<    are interpreted by using a Prospero Directory Service to determine
<    appropriate access methods for a resource; an access method
<    might itself be represented as (a different) URL.
---
>    accessed via the Prospero Directory Service. The Prospero protocol
>    is defined elsewhere [16].
615c623
<    Prospero URLs take the form:
---
>    The body of a prospero URLs takes the form:
617c625
<     URL:prospero://<host>:<port>/<hsoname>;<field>=<value>
---
>       prospero://<host>:<port>/<hsoname>;<field>=<value>
619,620c627,629
<    as specified in section 3.1 The port defaults to 1525. No username
<    or password is allowed.
---
>    where <host> and <port> are as described in Section 3.1. If :<port>
>    is omitted, the port defaults to 1525. No username or password is
>    allowed.
622,623c631,646
<    The <hsoname> corresponds to the host specific object name, as
<    defined in the document describing the Prospero protocol.[16].
---
>    Prospero URLs are interpreted by contacting an a Prospero directory
>    server on the specified host and port to determine appropriate
>    access methods for a resource, which might themselves be
>    represented as different URLs. External Prospero links are
>    represented as URLs of the underlying access method and are not
>    represented as Prospero URLs.
> 
>    The <hsoname> is the host-specific object name in the Prospero
>    protocol, suitably encoded.  This name is opaque and interpreted by
>    the Prospero server.  The semicolon ";" is reserved and may not
>    appear without quoting in the <hsoname>.
> 
>    Note that a slash "/" may appear in the <hsoname> without quoting
>    and no significance may be assumed by the application.  Though
>    slashes may indicate hierarchical structure on the server, such
>    structure is not guaranteed.
625c648
<    In addition, after the <hsoname>, optional field and values
---
>    In addition, after the <hsoname>, optional fields and values
627,629c650,652
<    URL.  When present, each field value pair is separated from each
<    other and from the rest of the URL by a semicolon (;).  The name of
<    the field and its value are separated by an equal sign (=).  If
---
>    URL.  When present, each field/value pair is separated from each
>    other and from the rest of the URL by a ";" (semicolon).  The name
>    of the field and its value are separated by a "=" (equal sign). If
631c654
<    example, the version-number field can be specified to identify a
---
>    example, the OBJECT-VERSION field can be specified to identify a
647c670
<    URL schemes must have demonstratable utility and operability.  One
---
>    URL schemes must have demonstrable utility and operability.  One
679,684c702,707
<    url            = "URL:" unlabelled
<    unlabelled     = httpaddress | ftpaddress | newsaddress |
<                     nntpaddress | telnetaddress | gopheraddress |
<                     waisaddress | mailtoaddress | fileaddress |
<                     prosperoaddress | otheraddress
<    otheraddress   = scheme ":" schemepart
---
>    url            = "URL:" urlbody
>    urlbody        = httpbody | ftpbody | newsbody |
>                     nntpbody | telnetbody | gopherbody |
>                     waisbody | mailtobody | filebody |
>                     prosperobody | otherbody
>    otherbody      = scheme ":" schemepart
697,699c720,722
<    ftpaddress     = "ftp://" login [ "/" path [ ";type=" ftptype ]]
<    path           = segment *[ "/" segment ]
<    segment        = *[ uchar | "?" | ":" | "@" | "&" | "=" ]
---
>    ftpbody        = "ftp://" login [ "/" fpath [ ";type=" ftptype ]]
>    fpath          = fsegment *[ "/" fsegment ]
>    fsegment       = *[ uchar | "?" | ":" | "@" | "&" | "=" ]
702c725,729
<    httpaddress    = "http://" hostport [ "/" path [ "?" search ]]
---
>    filebody       = "file://" host [ "/" fpath ]
> 
>    httpbody       = "http://" hostport [ "/" hpath [ "?" search ]]
>    hpath          = hsegment *[ "/" hsegment ]
>    hsegment       = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
705c732
<    gopheraddress  = "gopher://" hostport [ / [ gtype [ selector
---
>    gopherbody     = "gopher://" hostport [ / [ gtype [ selector
711,712c738,739
<    mailtoaddress  = "mailto:" encoded822addr
<    encoded822addr = *xchar
---
>    mailtobody     = "mailto:" encoded822addr
>    encoded822addr = 1*xchar
714c741
<    newsaddress    = "news:" grouppart
---
>    newsbody       = "news:" grouppart
719c746
<    nntpaddress    = "nntp://" hostport "/" group [ "/" digits ]
---
>    nntpbody       = "nntp://" hostport "/" group [ "/" digits ]
721c748
<    telnetaddress  = "telnet://" login [ "/" ]
---
>    telnetbody     = "telnet://" login [ "/" ]
723c750
<    waisaddress    = waisdatabase | waisindex | waisdoc
---
>    waisbody       = waisdatabase | waisindex | waisdoc
731c758,760
<    prosperoaddress= "prospero://" hostport "/" path *[ fieldspec ]
---
>    prosperobody   = "prospero://" hostport "/" ppath *[ fieldspec ]
>    ppath          = psegment *[ "/" psegment ]
>    psegment       = *[ uchar | "?" | ":" | "@" | "&" | "=" ]
856c885
<   [1] Anklesaria, F., et.al. (1993) "The Internet Gopher Protocol", 
---
>   [1] Anklesaria, F., et al. (1993) "The Internet Gopher Protocol", 
859c888
<   [2] Anklesaria, F., et.al. (1993) "Gopher+ upward compatible 
---
>   [2] Anklesaria, F., et al. (1993) "Gopher+ upward compatible 
916,920c945,948
<  [16] Neuman, B. Clifford, (1992) "Prospero: A Tool for Organizing
<       Internet Resources", Electronic Networking: Research,
<       Applications and Policy, Vol 1 No 2, Meckler Westport CT USA.
<       See also <URL:ftp://prospero.isi.edu/pub/prospero/
<       doc/prospero-protocol.PS.Z>.
---
>  [16] Neuman, B. Clifford, and Augart, Steven (1993). "The Prospero
>       Protocol", USC Information Sciences Institute, June 1993 and as
>       updated from time to time, <URL:ftp://prospero.isi.edu/pub/
>       prospero/doc/prospero-protocol.PS.Z>.
967d994
<