<?xml version="1.0" encoding="US-ASCII"?>

<!-- initial working draft used "xri", second one uses "simple" -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- Getting references from the online citation library.
     There has to be one entity for each item to be referenced. -->
<!ENTITY rfc2119 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc3986 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3986.xml">
<!ENTITY rfc3987 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3987.xml">
<!ENTITY rfc4627 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4627.xml">
<!ENTITY rfc3490 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3490.xml">
<!ENTITY rfc5890 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5890.xml">
<!ENTITY rfc6055 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6055.xml">

<!-- Outline of entity definition for citations to Internet Drafts
     &lt;!ENTITY I-D.mrose-writing-rfcs SYSTEM 
     "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.mrose-writing-rfcs">
     corresponding to a draft filename draft-mrose-writing-rfcs-nn.txt.
     Naming convention for draft-ietf-xx-yy is that
       ietf-xx-yy  is latest version
       draft-ietf-xx-yy-NN is that version.  Similarly for draft-foo
       rather than draft-ietf: foo-xx-yy and draft-foo-xx-yy-NN
   -->
<!-- Fudge for XMLmind which doesn't have this built in -->
<!ENTITY nbsp "&#160;">

]>
<!-- Extra statement used by XSLT processors to control the output style. -->
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- Processing Instructions- PIs (for a complete list and description,
     see file http://xml.resource.org/authoring/README.html.
     You may find that some sphisticated editors are not able to edit PIs when palced here.
     An alternative position is just inside the rfc elelment as noted below. -->
<!-- Some of the more generally applicable PIs that most I-Ds might want to use -->
<!-- Try to enforce the ID-nits conventions and DTD validity -->
<?rfc strict="yes" ?>
<!-- Items used when reviewing the document -->
<!-- Controls display of <cref> elements -->
<?rfc comments="yes" ?>
<!-- When no, put comments at end in comments section,
     otherwise, put inline -->
<?rfc inline="yes" ?>
<!-- When yes, insert editing marks: editing marks consist of a 
     string such as <29> printed in the blank line at the 
     beginning of each paragraph of text. -->
<?rfc editing="no" ?>
<!-- Create Table of Contents (ToC) and set some options for it.  
     Note the ToC may be omitted for very short documents,but idnits insists on a ToC 
     if the document has more than 15 pages. -->
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<!-- If "yes" eliminates blank lines before main section entries. -->
<?rfc tocdepth="3"?>
<!-- Sets the number of levels of sections/subsections... in ToC.
   Can be overridden by 'toc="include"/"exclude"' on the section
   element-->
<!-- Choose the options for the references. 
     Some like symbolic tags in the references (and citations) and others prefer 
     numbers. The RFC Editor always uses symbolic tags.
     The tags used are the anchor attributes of the references. -->
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<!-- If "yes", causes the references to be sorted in order of tags.
			 This doesn't have any effect unless symrefs is "yes" also. -->
<!-- These two save paper: Just setting compact to "yes" makes savings by not starting each 
     main section on a new page but does not omit the blank lines between list items. 
     If subcompact is also "yes" the blank lines between list items are also omitted. -->
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<!-- end of list of popular I-D processing instructions -->
<!-- Information about the document.
     category values: std, bcp, info, exp, and historic
     For Internet-Drafts, specify attribute "ipr".
     (ipr values are: full3978, noModification3978, noDerivatives3978), 
     (2008 IETF Trust versions: trust200811, noModificationTrust200811, noDerivativeTrust200811
     Also for Internet-Drafts, you must specify a value for attributes "docName" which is 
     typically the file name under which it is filed - but need not be - and,if relevant, 
     "iprExtract".  
     Note that the value for iprExtract is the anchor attribute value of a section (such as 
     a MIB specification) that can be extracted for separate publication, and is only useful 
     when the value of "ipr" is not "full3978".
     "updates" and "obsoletes" attributes can also be specified here,
     their arguments are comma-separated lists of RFC numbers (just
	 the numbers) -->
<!-- Per Marshall Rose, 20090225 add trust200811,
    noModificationTrust200811, noDerivativesTrust200811, trust200902,
    noModificationTrust200902, noDerivativesTrust200902,
	pre5378Trust200902 -->

<rfc  docName="draft-klensin-iri-sri-00.txt"
     ipr="trust200902"  category="std"
	  obsoletes="3987">
     <!-- obsoletes='2821, 821' updates='1123' category='std' -->   


  <!-- ***** FRONT MATTER ***** -->

  <front>

	<title abbrev="SRI">An XML-based Simple Resource Identifier </title>

    <!-- add 'role="editor"' below for the editors if appropriate -->
    <author fullname="John C Klensin" initials="J.C." surname="Klensin">
      <organization/>
      <address>
        <postal>
          <street>1770 Massachusetts Ave, Ste 322</street>
          <city>Cambridge</city> <region>MA</region>
          <code>02140</code>
          <country>USA</country>
        </postal>
        <phone>+1 617 491 5735</phone>
        <email>john-ietf@jck.com</email>
      </address>
    </author>

	<author fullname="Subramanian Moonesamy" initials="S." surname="Moonesamy">
	   <organization/>
	   <address>
		  <postal>
			 <street>76, Ylang Ylang Avenue</street>
			 <city>Quatre Bornes</city>
			 <country>Mauritius</country>
		  </postal>
		  <email>sm+ietf@elandsys.com</email>
	   </address>
	</author>


    <date month="July" day="9" year="2012" />

    <!-- month and day are optional -->

    <!-- Meta-data Declarations -->
    <area>Applications</area>

    <!-- WG name at the upperleft corner of the doc,
         IETF fine for individual submissions.  You can also
         omit this element in which case in defaults to "Network Working Group" -
         a hangover from the ancient history of the IETF!    -->
    <workgroup>IETF</workgroup>
    <!-- You can add <keyword/> elements here.  They will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff output. -->
	<!-- <keyword>Text</keyword> (as many of those elements as needed -->

	
    <abstract>
      <t>While the URI specification has been widely deployed, it has
		 long been recognized that many valid URIs, especially those
		 that contain extensive information in the "tail" are
		 unsuitable for user presentation, especially for
		 internationalized environments.  IRIs have been proposed as a
		 solution for that problem but inherit (and are constrained
		 by) the complex and sometimes method-dependent syntax model
		 of URIs as well as positional and ordering assumptions that
		 make them more difficult to localize than is desirable.</t>
	  <t>This specification illustrates a way to define an "above URI"
		 model for a localization-friendly simple reference identifier
		 (SRI) that explicitly identifies fields and is more 
		 appropriate than IRIs to support localization.  The current
		 version is intended simply to initiate a discussion.  In
		 particular, while it is written to use an XML element syntax
		 model, variations using JSON or
		 some other system with explicitly-labeled data fields might
		 be as, or more, appropriate. </t>
    </abstract>
	
  </front>

  <middle>
    <section title="Introduction">
      <t>While the URI specification <xref target="RFC3986"/> has been
		 widely deployed, it has 
		 long been recognized that many valid URIs, especially those
		 that contain extensive information in the "tail" are
		 unsuitable for user presentation, especially for
		 internationalized environments.
		 IRIs <xref target="RFC3987"/> have been proposed as a
		 solution for that problem but inherit (and are constrained
		 by) the complex and sometimes method-dependent syntax model
		 of URIs as well as positional and ordering assumptions that
		 make them more difficult to localize than is desirable.</t>
	  <t>This specification illustrates a way to define a
		 localization-friendly "above URI"
		 simple syntax (a "SRI") that explicitly identifies fields and is more
		 appropriate than IRIs to support localization.</t>
	  <t><cref>Note in Draft: "Simple" is chosen in the grand
		 tradition of "simple" protocols like SMTP and SIP".
		 Certainly the parsing of the compound identifier into
		 components is simpler than the URI model.  But suggestions
		 for alternate terms would be welcome if "simple" turns into
		 flame-bait.</cref></t> 

	  <t> This specification obviates most, if not all, of the
		 perceived need for IRIs and hence obsoletes the 
		 specification of them in RFC 3087.  A discussion of the
		 reasons for that action appears in
		 <xref target="ObsoleteIRI"/>.</t>

	  <section title="Terminology">
		 <t>The terms "i18n" and "l10n" are liberally used as
			abbreviations for "internationalization" and
			"localization", respectively, in this specification. </t>
		 
		  <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
			  <xref target="RFC2119">RFC 2119</xref>.</t>
	  </section>

	  <section title="Status and Discussion">
		 <t><cref>RFC Editor: Please remove this subsection.</cref></t>
		 <t> This draft is a pre-proposal to stimulate discussion of
			the IRI approach and alternatives to it.  While it is
			deliberately incomplete, the path to an actual proposal
			should be clear.  Also, the choice of an XML element
			syntax model <xref target="XML"/> structure was
			fairly arbitrary.  It would probably be equally reasonable
			to support a JSON <xref target="RFC4627"/> or other
			structure instead (or additionally) as long as the basic
			syntax chosen supports clear identification of data
			elements and a very precise and context-independent
			syntax for element values.</t> 
		 <t>Discussion of this draft should occur on the IRI WG
			mailing list.  Details about subscription and archives for
			the list may be found at XXXXX.</t>
		</section>

    </section>

	<section title="Tagged Elements">
	   <t>Much of the complexity in the URI specification lies in
		  trying to identify and extract the various parts of a URI.
		  That process is complicated by scheme-dependent elements and
		  the associated delimiters which may be reserved or not
		  depending on the scheme.   That work may be appropriate if
		  some system actually needs to parse and execute a URI -- an
		  activity that requires understanding the scheme in any
		  event-- but may be less appropriate for an i18n / l10n
		  overlay.</t>
	   <t>This specification overcomes that problem and the associated
		  complexities introduced by characters outside the ASCII
		  repertoire, URI escaping conventions, and so on by
		  eliminating the constraint of forward compatibility with
		  URIs in favor of a more international format that can be
		  easily localized and equally easily be mapped into that URI
		  syntax.</t>
	</section>

	<section title="Data Element Description">
	   <t>This section maps the various components of URIs into XML
		  elements.  For purposes of this specification, the URI
		  syntax is discarded; only the data elements are retained.
		  The mapping from an XML-structured document using these
		  elements to URI syntax should be fairly obvious
		  <cref>...and possibly covered in more detail in a future
			 version of this spec</cref>.
		  It is obviously possible to specify a collection of elements
		  with this specification that, when mapped back into URI
		  syntax, will be invalid or confusing for a particular
		  scheme.  If that is perceived as an issue, specific lists of
		  what elements are valid for which schemes should be easy to
		  compile.</t>
	   <t>The basic structure starts with a localization-friendly
		  element that contains all other elements (and has no direct
		  textual content):
		  <vspace blankLines="0"/>
		  &lt;SRI&gt;  </t>

	   <t><cref>Note in Draft: Each of the subsections that follow can
		  probably benefit from some fleshing-out.  For this version,
		  the general intent should be clear.  It is likely that
		  several more subsidiary elements are needed, but that is a
		  topic for future discussion.</cref></t>

	   <section title="scheme Element">
		  <t>&lt;scheme&gt;
			 SchemeName
			 &lt;/scheme&gt; </t>
		  <t>The Scheme element has no subsidiary elements.</t>
	   </section>

	   <section title="authority Element">
		  <t>&lt;authority&gt;
			 <vspace blankLines="0"/>
			 Authority elements as below.
			 <vspace blankLines="0"/>
			 &lt;/authority&gt; </t>
		  <t>The Authority element has the subsidiary elements listed
			 in the subsections below.</t>
	   <section title="user-info Element">
	   </section>
	   <section title="host Element">
			 <t>Domain names are subject to special rules because of
				IDNA considerations, so the normal content of the host
				element is a domain element.  [Domain-]relative URIs
				do not use the domain element.</t>
		  <section title="domain Element" anchor="domain">
			 <t>&lt;domain&gt;
				Fully-qualified-domain-name
				&lt;/domain&gt; </t>
		  </section>
	   </section>
	   <section title="port Element">
		  <t>&lt;port&gt;
			 NN
			&lt;port&gt;
			 <vspace blankLines="0"/>
			 NN is a numeric port number.</t>
	   </section>
	   </section>


	   <section title="path Element">
		  <t>&lt;path&gt;
			 PathString
			 &lt;/path&gt; </t>
		  <t><cref>Subsidiary elements here, including &lt;domain&gt;
			 and/or &lt;SRI&gt; when appropriate.</cref></t>
	   </section>
	   
	   <section title="query Element">
		  <t>&lt;query&gt;
			 QueryString
			 &lt;/query&gt; </t>
		  <t><cref>Subsidiary elements here, including &lt;domain&gt;
			 and/or &lt;SRI&gt; when appropriate.</cref></t>
	   </section>

	   <section title="fragment Element">
		  <t>&lt;fragment&gt;
			 FragmentName or other identifier
			 &lt;/fragment&gt; </t>
		  <t>The Fragment element has no subsidiary elements.</t>
	   </section>

	</section>

	<section title="Internationalization and Escapes">
	   <t>Part of the goal for the format specified here is to express
		  the abstract components of a URI as naturally as possible.
		  Consequently, any text component of any element can be
		  expressed in UTF-8 in normalization form NFC.  Escapes ("%"
		  or otherwise) are prohibited except as required by XML.  If
		  "%" appears, it must be doubled in mapping to URI
		  syntax.</t>
	</section>

	<section title="Examples">
	   <t>
		  <cref>There should be several of these, each showing a URI
		  and the matching XRI form.</cref></t>

	   <t>The URI that would appear as
		  <vspace blankLines="0"/>
		  http://example.com/test?sri=http://example.net/
	      <vspace blankLines="0"/>
	      Would appear in this form as:</t>

	   <figure><artwork>
	     &lt;uri&gt;
		&lt;sri&gt;
		  &lt;scheme&gt;http&lt;/scheme&gt;
		  &lt;authority&gt;
                    &lt;host&gt;
		      &lt;domain&gt;example.com&lt;/domain&gt;
		    &lt;/host&gt;
		  &lt;/authority&gt;
		  &lt;path&gt;/test&lt;/path&gt;
		  &lt;query&gt;
		    &lt;sri&gt;
		      &lt;scheme&gt;http&lt;/scheme&gt;
		      &lt;authority&gt;
		        &lt;host&gt;
			  &lt;domain&gt;example.net&lt;/domain&gt;
			&lt;/host&gt;
		       &lt;/authority&gt;
		    &lt;/sri&gt;
		  &lt;/query&gt;
		&lt;/sri&gt;
	    &lt;/uri&gt;
	   </artwork></figure>

	   <t><cref>Note in draft: RFC (and I-D) constraints prohibit
		  showing one of these data structures with characters in it
		  outside the ASCII repertoire.  If the document ever
		  progresses to RFC, an alternate form that can show such
		  examples including such characters should be a
		  requirement.</cref></t> 
	</section>

<!--   ....... end example/format sections ...  -->	
	
    <section anchor="Acknowledgments" title="Acknowledgements">
      <t>Some of the structuring information for this document was
		 derived from a W3C working draft on URLs
	     <xref target="W3C-URL"/> as well as the URI specification.
		 The thinking that led to this work started with a discussion
		 many years ago with James Seng in which he pointed out that
		 the "natural" ordering of components of compound identifiers
		 differed by culture.</t>
    </section>

    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="IANA" title="IANA Considerations">
	  <t><cref> RFC Editor: Please remove this section before
		 publication.</cref></t>
      <t>This memo includes no requests to or actions for IANA.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The model introduced in this specification does not raise any
		 security issues not already present in the URI specification
		 that would not be caught by a URI processor.  Because it is
		 less subtle and complex than the URI specification, it may
		 actually lead to a reduction in vunerabilities.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split to informative and normative -->

    <references title="Normative References">

	  &rfc2119;
	  &rfc3986;        <!-- URI -->
	  &rfc3987;        <!-- IRI -->

	  <reference anchor="XML" target="http://www.w3.org/TR/REC-xml">
        <front>
          <title>Extensible Markup Language (XML) 1.0 (Second Edition), W3C=20 Recommendation</title>
          <author initials="T." surname="Bray" role="editor">
            <organization></organization>
	        <address/>
          </author>
          <author initials="J." surname="Paoli" role="editor">
            <organization></organization>
	        <address/>
          </author>
          <author initials="C.M." surname="Sperberg-McQueen" role="editor">
            <organization></organization>
	        <address/>
          </author>
          <author initials="E." surname="Maler" role="editor">
            <organization></organization>
	        <address/>
          </author>
          <date year="2000" month="October" day="6" />
        </front>
      </reference>
		 
    </references>

    <references title="Informative References">

	   &rfc4627;		<!-- JSON -->
	   &rfc3490;		<!-- IDNA2003 -->
	   &rfc5890;		<!-- IDNA2008 -->
	   &rfc6055;		<!-- IAB IDN encoding considerations -->

	   <reference anchor="IRI-Charter"
				  target="http://datatracker.ietf.org/wg/iri/charter/">
		  <front>
			 <title>Internationalized Resource Identifiers (iri)</title>
			 <author><organization>IETF</organization><address/></author>
			 <date year="2019"/>
		  </front>
		  <seriesInfo name="Captured" value="2012-07-05" />
	   </reference>
	   
	   <reference anchor="W3C-URL"
				  target="http://www.w3.org/TR/url/">
		  <front>
			 <title>URL</title>
			 <author><organization>W3C</organization><address/></author>
			 <date year="2012"/>
		  </front>
		  <seriesInfo name="Captured" value="2012-07-03" />
	   </reference>
			 
	   
      <!-- Right back at the beginning we defined an entity which (we asserted) would contain
             XML needed for a reference... this is where we use it. -->

    </references>

<!--   Sections below here become  Appendices.  -->

	<section title="This Specification and the IRI Approach"
			anchor="ObsoleteIRI">
	   <t>The original IRI specification <xref target="RFC3987"/> was intended as a
		  strict superset of the URI syntax <xref target="RFC3986"/>
		  with all URI forms being permitted but with the use of
		  non-escaped UTF-8 strings also being allowed.  IRIs were not
		  separate protocol identifiers or intended for use "on the
		  wire".  Instead, they were intended as an overlay for URIs
		  that was more convenient for users.  In part because of the
		  interaction with the original <xref target="RFC3490"/>
		  and revised <xref target="RFC5890"/> versions of the IDNA
		  specification, the mapping from IRIs to URIs was not unique:
		  one could map a domain name expressed as a UTF-8 string into
		  either a URI escape sequence or into a set of IDNA A-labels.
		  That choice interacted badly with the domain name encoding
		  considerations discussed by the IAB <xref target="RFC6055"/>
		  and, more importantly, with URI comparisons in caches and
		  similar contexts.</t>
	   <t>Based on those and other considerations, an IETF WG charged
		  with IRI revision <xref target="IRI-Charter"/> concluded
		  that IRIs should be treated as a separate protocol
		  identifier, primarily for use in new protocols, rather than
		  as a strictly-forward-compatible URI overlay.  That decision
		  immediately raised the question of whether it was more
		  valuable to preserve a URI-like syntax or depart from it
		  entirely.  This specification resulted from the desire to
		  explore the possibilities that would be opened up by
		  abandoning the constraint of apparent similarity to the URI
		  syntax.   But, just as the decision to move to a separate
		  protocol identifier essentially recognizes that the IRIs
		  defined in RFC 3987 was not feasible and an IRI variation
		  that defined a new protocol element while retaining the
		  general form of the URI syntax would obsolete 3987, this
		  specification does as well: whether the underlying syntax
		  model is changed or not, the WG has concluded that IRIs as
		  defined in RFC 3987 are inappropriate for general use on
		  the public Internet.</t>
	</section>

	<section title="XML DTD">
	   <figure><artwork>
		  &lt;!ELEMENT uri (sri)&gt;

		  &lt;!-- Simple Resource Identifier  --&gt;
		  &lt;!ELEMENT sri (scheme, authority, path?, query?,
		                      fragment?)&gt;

		  &lt;!ELEMENT authority ( user-info?, host, port?)&gt;

		  &lt;!ELEMENT scheme (#PCDATA)&gt;

		  &lt;!ELEMENT user-info (#PCDATA)&gt;

		  &lt;!ELEMENT host (domain | ip-address)&gt;

		  &lt;!ELEMENT port ((#PCDATA)&gt;

		  &lt;!ELEMENT path (#PCDATA | domain | sri)*&gt;

		  &lt;!ELEMENT query (#PCDATA | domain | sri)*&gt;

		  &lt;!ELEMENT fragment (#PCDATA)*&gt;

		  &lt;!-- This contains a FQDN  --&gt;
		  &lt;!ELEMENT domain (#PCDATA)&gt;

		  &lt;!ELEMENT ip-address (#PCDATA)&gt;
	  </artwork></figure>
	</section>


<!--
	<section title="Change Log" anchor="ChangeLog">
	   <section title="Changes from version -00 to -01">
		  <t><list style="symbols">
			 <t>Blather</t>
		  </list></t>
	   </section>
	</section>      -->

  </back>
</rfc>
