<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.11 (Ruby 3.3.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-href-15" category="std" consensus="true" submissionType="IETF" xml:lang="en" updates="7595" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title>Constrained Resource Identifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-15"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann" role="editor">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <date year="2024" month="April" day="21"/>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <?line 89?>

<t>The Constrained Resource Identifier (CRI) is a complement to the Uniform
Resource Identifier (URI) that represents the URI components in Concise
Binary Object Representation (CBOR) instead of in a sequence of characters.
This simplifies parsing, comparison, and reference resolution in
environments with severe limitations on processing power, code size, and
memory size.</t>
      <t><cref anchor="status">(This "cref" paragraph will be removed by the RFC editor:)<br/>
The present revision –15 of this draft continues -14 by picking up
more comments, such as moving to a CRI scheme number registration
system based on unsigned numbers.
<br/>
This revision still contains open issues and is intended to serve
as a snapshot.</cref></t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-core-href/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Constrained RESTful Environments Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/href"/>.</t>
    </note>
  </front>
  <middle>
    <?line 109?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The <xref target="STD66">Uniform Resource Identifier (URI)</xref> and its most common
usage, the URI reference, are the Internet standard for linking to
resources in hypertext formats such as <xref target="W3C.REC-html52-20171214">HTML</xref>
or the <xref target="RFC8288">HTTP "Link" header field</xref>.</t>
      <t>A URI reference is a sequence of characters chosen from the repertoire
of US-ASCII characters.
The individual components of a URI reference are delimited by a number
of reserved characters, which necessitates the use of a character escape
mechanism called "percent-encoding" when these reserved characters are
used in a non-delimiting function.
The resolution of URI references involves parsing a character sequence
into its components, combining those components with the components of a
base URI, merging path components, removing dot-segments, and
recomposing the result back into a character sequence.</t>
      <t>Overall, the proper handling of URI references is quite intricate.
This can be a problem especially in <xref target="RFC7228">constrained environments</xref>,
where nodes often have severe code size and memory size limitations.
As a result, many implementations in such environments support only an
ad-hoc, informally-specified, bug-ridden, non-interoperable subset of
half of <xref target="STD66"/>.</t>
      <t>This document defines the <em>Constrained Resource Identifier (CRI)</em> by
constraining URIs to a simplified subset and representing their
components in <xref target="STD94">Concise Binary Object Representation (CBOR)</xref>
instead of a sequence of characters.
This allows typical operations on URI references such as parsing,
comparison, and reference resolution (including all corner cases) to be
implemented in a comparatively small amount of code.</t>
      <t>As a result of simplification, however, CRIs are not capable of
expressing all URIs permitted by the generic syntax of <xref target="STD66"/> (hence
the "constrained" in "Constrained Resource Identifier").
The supported subset includes all URIs of the
<xref target="RFC7252">Constrained Application Protocol (CoAP)</xref>, most URIs of the
<xref target="STD97">Hypertext Transfer Protocol (HTTP)</xref>,
<xref target="RFC8141">Uniform Resource Names (URNs)</xref>, and other similar URIs.
The exact constraints are defined in <xref target="constraints"/>.</t>
      <section anchor="notational-conventions">
        <name>Notational Conventions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="BCP14"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>In this specification, the term "byte" is used in its now customary
sense as a synonym for "octet".</t>
        <t>Terms defined in this document appear in <em>cursive</em> where they
are introduced (in the plaintext form of this document, they are
rendered as the new term surrounded by underscores).</t>
        <t>The general structure of data items is shown in the <xref target="RFC8610">Concise Data Definition
Language (CDDL)</xref> <xref target="RFC9165">including its control
extensions</xref>.
Specific examples are notated in CBOR Extended
Diagnostic Notation (EDN), as originally introduced in Section <xref target="RFC8949" section="8" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> and extended in <xref section="G" sectionFormat="of" target="RFC8610"/>.
(<xref target="I-D.ietf-cbor-edn-literals"/> more rigorously defines and further extends EDN.)</t>
      </section>
    </section>
    <section anchor="constraints">
      <name>Constraints</name>
      <t>A Constrained Resource Identifier consists of the same five components
as a URI: scheme, authority, path, query, and fragment.
The components are subject to the following constraints:</t>
      <ol spacing="normal" type="C%d."><li anchor="c-scheme">
          <t>The scheme name can be any Unicode string (see
Definition D80 in <xref target="Unicode"/>) that matches the syntax of a URI
scheme (see Section <xref target="RFC3986" section="3.1" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>, which constrains scheme names to
ASCII) and is lowercase (see Definition D139 in <xref target="Unicode"/>).
The scheme is always present.</t>
        </li>
        <li anchor="c-authority">
          <t>An authority is always a host identified by an IP
address or registered name, along with optional port information,
and optionally preceded by user information.  </t>
          <t>
Alternatively, the authority can be absent; the two cases for this
defined in Section <xref target="RFC3986" section="3.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/> are modeled by two different
values used in place of an absent authority:  </t>
          <ul spacing="normal">
            <li>
              <t>the path can be root-based (zero or more path components that are
each started in the URI with "/", as when the authority is
present), or</t>
            </li>
            <li>
              <t>the path can be rootless, which requires at least one path component.</t>
            </li>
          </ul>
          <t>
(Note that, in <xref target="cddl"/>, <tt>no-authority</tt> is marked as a feature, as
not all CRI implementations will support authority-less URIs.)</t>
        </li>
        <li anchor="c-userinfo">
          <t>A userinfo is a text string built out of unreserved
  characters (Section <xref target="RFC3986" section="2.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>) or "sub-delims" (Section <xref target="RFC3986" section="2.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>); any other character needs to be percent-encoded (<xref target="pet"/>).
Note that this excludes the ":" character, which is commonly
deprecated as a way to delimit a cleartext password in a userinfo.</t>
        </li>
        <li anchor="c-ip-address">
          <t>An IP address can be either an IPv4 address or an
IPv6 address, optionally with a zone identifier <xref target="RFC6874"/>.
Future versions of IP are not supported (it is likely that a binary
mapping would be strongly desirable, and that cannot be designed
ahead of time, so these versions need to be added as a future
extension if needed).</t>
        </li>
        <li anchor="c-reg-name">
          <t>A registered name is a sequence of one or more
<em>labels</em>, which, when joined with dots (".") in between them,
result in a Unicode string that is lowercase and in Unicode
Normalization Form C (NFC) (see Definition D120 in <xref target="Unicode"/>).
(The syntax may be further restricted by the scheme.
As per Section <xref target="RFC3986" section="3.2.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>, a registered name can be empty, for
which case a scheme can define a default for the host.)</t>
        </li>
        <li anchor="c-port-range">
          <t>A port is always an integer in the range from 0 to 65535.
Ports outside this range, empty ports (port subcomponents with no
digits, see Section <xref target="RFC3986" section="3.2.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), or ports with redundant
leading zeros, are not supported.</t>
        </li>
        <li anchor="c-port-omitted">
          <t>The port is omitted if and only if the port would be the same as the
scheme's default port (provided the scheme is defining such a default
port) or the scheme is not using ports.
<!-- Note that this is hard to do by a generic URI implementation
that may not know the scheme's default port -->
          </t>
        </li>
        <li anchor="c-path">
          <t>A path consists of zero or more path segments.
Note that a path of just a single zero-length path segment is allowed —
this is considered equivalent to a path of zero path segments by
HTTP and CoAP, but this equivalence does not hold for CRIs in general as they only perform
normalization on the Syntax-Based Normalization level (Section <xref target="RFC3986" section="6.2.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), not on the scheme-specific Scheme-Based
Normalization level (Section <xref target="RFC3986" section="6.2.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>).  </t>
          <t>
(A CRI implementation may want to offer scheme-cognizant
interfaces, performing this scheme-specific normalization for
schemes it knows.  The interface could assert which schemes the
implementation knows and provide pre-normalized CRIs.  This can
also relieve the application from removing a lone zero-length path
segment before putting path segments into CoAP Options, i.e., from
performing the check and jump in item 8 of <xref section="6.4" sectionFormat="of" target="RFC7252"/>.  See also <xref format="counter" target="sp-initial-empty"/> in <xref target="the-small-print"/>.)</t>
        </li>
        <li anchor="c-path-segment">
          <t>A path segment can be any Unicode string that is
in NFC, with the exception of the special "." and ".." complete path
segments.
Note that this includes the zero-length string.  </t>
          <t>
If no authority is present in a CRI, the leading path segment cannot be empty.
(See also <xref format="counter" target="sp-initial-empty"/> in <xref target="the-small-print"/>.)</t>
        </li>
        <li anchor="c-query">
          <t>A query always consists of one or more query parameters.
   A query parameter can be any Unicode string that is in NFC.
   It is often in the form of a "key=value" pair.
   When converting a CRI to a URI, query parameters are separated by an
   ampersand ("&amp;") character.
   (This matches the structure and encoding of the target URI in CoAP
   requests.)
   Queries are optional; there is a difference between an absent query
   and a single query parameter that is the empty string.</t>
        </li>
        <li anchor="c-fragment">
          <t>A fragment identifier can be any Unicode string that
   is in NFC.
   Fragment identifiers are optional; there is a difference between an
   absent fragment identifier and a fragment identifier that is the
   empty string.</t>
        </li>
        <li anchor="c-escaping">
          <t>The syntax of registered names, path segments, query
   parameters, and fragment identifiers may be further restricted and
   sub-structured by the scheme.
   There is no support, however, for escaping sub-delimiters
   that are not intended to be used in a delimiting function.</t>
        </li>
        <li anchor="c-mapping">
          <t>When converting a CRI to a URI, any character that is
   outside the allowed character range or is a delimiter in the URI syntax
   is percent-encoded.
   For CRIs, percent-encoding always uses the UTF-8 encoding form (see
   Definition D92 in <xref target="Unicode"/>) to convert the character to a sequence
   of bytes (that is then converted to a sequence of %HH triplets).
   <!-- As per 3986 2.1, use uppercase hex. -->
          </t>
        </li>
      </ol>
      <t>Examples for URIs at or beyond the boundaries of these constraints are in <xref format="counter" target="sp-constraints"/> in <xref target="the-small-print"/>.</t>
      <section anchor="constraints-not-expressed-by-the-data-model">
        <name>Constraints not expressed by the data model</name>
        <t>There are syntactically valid CRIs and CRI references that cannot be converted into a URI or URI reference, respectively.</t>
        <t>For CRI references, this is acceptable -- they can be resolved still and result in a valid CRI that can be converted back.
Examples of this are:</t>
        <ul spacing="normal">
          <li>
            <t><tt>[0, ["p"]]</tt>: appends a slash and the path segment "p" to its base
(and unsets the query and the fragment)</t>
          </li>
          <li>
            <t><tt>[0, null, []]</tt>: leaves the path alone but unsets the query and the fragment</t>
          </li>
        </ul>
        <t>(Full) CRIs that do not correspond to a valid URI are not valid on their own, and cannot be used.
Normatively they are characterized by the <xref target="cri-to-uri"/> process not producing a valid and syntax-normalized URI.
For easier understanding, they are listed here:</t>
        <ul spacing="normal">
          <li>
            <t>CRIs (and CRI references) containing a path component "." or "..".  </t>
            <t>
These would be removed by the remove_dot_segments algorithm of <xref target="STD66"/>,
and thus never produce a normalized URI after resolution.  </t>
            <t>
(In CRI references, the <tt>discard</tt> value is used to afford segment removal,
and with "." being an unreserved character, expressing them as "%2e" and "%2e%2e" is not even viable,
let alone practical).</t>
          </li>
          <li>
            <t>CRIs without authority whose path starts with two or more empty segments.  </t>
            <t>
When converted to URIs, these would violate the requirement that in absence of an authority, a URI's path cannot begin with two slash characters,
and they would be indistinguishable from a URI with a shorter path and a present but empty authority component.</t>
          </li>
          <li anchor="naked-rootless">
            <t>CRIs without authority that are rootless and do not have a path
component (e.g., <tt>["a", true]</tt>), which would be indistinguishable
from its root-based equivalent (<tt>["a"]</tt>) as both would have the URI <tt>a:</tt>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="creation-and-normalization">
      <name>Creation and Normalization</name>
      <t>In general, resource identifiers are created on the initial creation of a
resource with a certain resource identifier, or the initial exposition
of a resource under a particular resource identifier.</t>
      <t>A Constrained Resource Identifier <bcp14>SHOULD</bcp14> be created by
the naming authority that governs the namespace of the resource
identifier (see also <xref target="BCP190"/>).
For example, for the resources of an HTTP origin server,
that server is responsible for creating the CRIs for those resources.</t>
      <t>The naming authority <bcp14>MUST</bcp14> ensure that any CRI created
satisfies the constraints defined in <xref target="constraints"/>. The creation of a
CRI fails if the CRI cannot be validated to satisfy all of the
constraints.</t>
      <t>If a naming authority creates a CRI from user input, it <bcp14>MAY</bcp14> apply
the following (and only the following) normalizations to get the CRI
more likely to validate:</t>
      <ul spacing="normal">
        <li>
          <t>map the scheme name to lowercase (<xref format="counter" target="c-scheme"/>);</t>
        </li>
        <li>
          <t>map the registered name to NFC (<xref format="counter" target="c-reg-name"/>) and split it on
embedded dots;</t>
        </li>
        <li>
          <t>elide the port if it is the default port for the scheme
(<xref format="counter" target="c-port-omitted"/>);
<!-- * elide a single zero-length path segment ({{<c-path}}); -->
          </t>
        </li>
        <li>
          <t>map path segments, query parameters and the fragment identifier to
NFC form (<xref format="counter" target="c-path-segment"/>, <xref format="counter" target="c-query"/>, <xref format="counter" target="c-fragment"/>).</t>
        </li>
      </ul>
      <t>Once a CRI has been created, it can be used and transferred without
further normalization.
All operations that operate on a CRI <bcp14>SHOULD</bcp14> rely on the
assumption that the CRI is appropriately pre-normalized.
(This does not contradict the requirement that when CRIs are
transferred, recipients must operate on as-good-as untrusted input and
fail gracefully in the face of malicious inputs.)</t>
    </section>
    <section anchor="comparison">
      <name>Comparison</name>
      <t>One of the most common operations on CRIs is comparison: determining
whether two CRIs are equivalent, without dereferencing the CRIs (i.e.,
using
them to access their respective resource(s)).</t>
      <t>Determination of equivalence or difference of CRIs is based on simple
component-wise comparison. If two CRIs are identical
component-by-component (using code-point-by-code-point comparison for
components that are Unicode strings) then it is safe to conclude that
they are equivalent.</t>
      <t>This comparison mechanism is designed to minimize false negatives while
strictly avoiding false positives.
The constraints defined in <xref target="constraints"/> imply the most
common forms of syntax- and scheme-based normalizations in URIs, but do
not comprise protocol-based normalizations that require accessing the
resources or detailed knowledge of the scheme's dereference algorithm.
False negatives can be caused, for example, by CRIs that are not
appropriately pre-normalized and by resource aliases.</t>
      <t>When CRIs are compared to select (or avoid) a network action, such as
retrieval of a representation, fragment components (if any) should be
excluded from the comparison.</t>
    </section>
    <section anchor="cri-references">
      <name>CRI References</name>
      <t>The most common usage of a Constrained Resource Identifier is to embed
it in resource representations, e.g., to express a hyperlink between the
represented resource and the resource identified by the CRI.</t>
      <t>This section defines the representation of CRIs in
<xref target="STD94">Concise Binary Object Representation (CBOR)</xref>.
When reduced representation size is desired, CRIs are often not represented directly.
Instead, CRIs are indirectly referenced through <em>CRI references</em>.
These take advantage of hierarchical locality and provide a very compact
encoding.
The CBOR representation of CRI references is specified in
<xref target="cbor-representation"/>.</t>
      <t>The only operation defined on a CRI reference is <em>reference resolution</em>:
the act of transforming a CRI reference into a CRI.
<!-- , relative to a base URI -->
An application <bcp14>MUST</bcp14> implement this operation by applying
the algorithm specified in <xref target="reference-resolution"/> (or any algorithm
that is functionally equivalent to it).</t>
      <t>The reverse operation of transforming a CRI into a CRI reference is
not specified in detail in this document;
implementations are free to use any algorithm as long as reference
resolution of the resulting CRI reference yields the original CRI.
Notably, a CRI reference is not required to satisfy all of the
constraints of a CRI; the only requirement on a CRI reference is that
reference resolution <bcp14>MUST</bcp14> yield the original CRI.</t>
      <t>When testing for equivalence or difference, applications <bcp14>SHOULD NOT</bcp14>
directly compare CRI references; the references should be
resolved to their respective CRI before comparison.</t>
      <section anchor="cbor-representation">
        <name>CBOR Representation</name>
        <t><cref anchor="replace-xxxx">RFC Ed.: throughout this section, please replace
RFC-XXXX with the RFC number of this specification and remove this
note.</cref></t>
        <t>A CRI or CRI reference is encoded as a CBOR array (Major type 4 in
Section <xref target="RFC8949" section="3.1" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>), with the structure described in CDDL as
follows:</t>
        <figure anchor="cddl">
          <name>CDDL for CRI CBOR representation</name>
          <sourcecode type="cddl"><![CDATA[
; not expressed in this CDDL spec: trailing nulls to be left off

RFC-XXXX-Definitions = [CRI, CRI-Reference]

CRI = [
  scheme,
  authority / no-authority,
  path / null,
  query / null,
  fragment / null
]


CRI-Reference = [
  ((scheme / null, authority / no-authority)
   // discard),                 ; relative reference
  path / null,
  query / [] / null,            ; [] is explicit unset
  fragment / null
]

scheme      = scheme-name / scheme-id
scheme-name = text .regexp "[a-z][a-z0-9+.-]*"
scheme-id   = nint              ; -1 - scheme-number

no-authority = NOAUTH-ROOTBASED / NOAUTH-ROOTLESS
NOAUTH-ROOTBASED = null .feature "no-authority"
NOAUTH-ROOTLESS = true .feature "no-authority"

authority   = [?userinfo, host, ?port]
userinfo    = (false, text .feature "userinfo")
host        = (host-ip // host-name)
host-name   = (*text) ; lowercase, NFC labels
host-ip     = (bytes .size 4 //
               (bytes .size 16, ?zone-id))
zone-id     = text
port        = 0..65535

discard     = DISCARD-ALL / 0..127
DISCARD-ALL = true
path        = [*text]
query       = [+text]
fragment    = text

]]></sourcecode>
        </figure>
        <t>The rules <tt>scheme</tt>, <tt>authority</tt>, <tt>path</tt>, <tt>query</tt>, <tt>fragment</tt>
correspond to the (sub‑)components of a CRI, as described in
<xref target="constraints"/>, with the addition of the <tt>discard</tt> section.</t>
        <t anchor="prose">This CDDL specification is simplified for exposition and needs to be
augmented by the following rules for interchange of CRIs and CRI
references:</t>
        <ul spacing="normal">
          <li>
            <t>Trailing null values <bcp14>MUST</bcp14> be removed,</t>
          </li>
          <li>
            <t>two leading null values (scheme and authority both not given) <bcp14>MUST</bcp14>
be represented by using the <tt>discard</tt> alternative instead, and</t>
          </li>
          <li>
            <t>an empty path in a <tt>CRI</tt> <bcp14>MUST</bcp14> be represented as the empty array <tt>[]</tt>
(note that for <tt>CRI-Reference</tt> there is a difference between empty
and absent paths, represented by <tt>[]</tt> and <tt>null</tt>, respectively),</t>
          </li>
          <li>
            <t>an entirely empty outer array is not a valid CRI (but a valid CRI reference,
as per <xref target="ingest"/> equivalent to <tt>[0]</tt>, which essentially copies the
base CRI).</t>
          </li>
        </ul>
        <t>For interchange as separate encoded data items, CRIs <bcp14>MUST NOT</bcp14> use
indefinite length encoding (see
Section <xref target="RFC8949" section="3.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>); this requirement is relaxed for
specifications that embed CRIs into an encompassing CBOR
representation that does provide for indefinite length encoding.</t>
        <section anchor="scheme-id">
          <name><tt>scheme-name</tt> and <tt>scheme-id</tt></name>
          <t>In the scheme section, a CRI scheme can be given by its <tt>scheme-name</tt>
(a text string giving the scheme name as in URIs' scheme section,
mapped to lower case), or as a negative integer <tt>scheme-id</tt> derived
from the <em>scheme number</em>.
Scheme numbers are unsigned integers that are mapped to and from URI
scheme names by the "CRI Scheme Numbers" registry (<xref target="cri-reg"/>).
The relationship of a scheme number to its <tt>scheme-id</tt> is as follows:</t>
          <artset>
            <artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="5.009ex" role="img" viewBox="0 -791.3 43055.4 2156.8" width="100ex">
                <defs>
                  <path d="M390 441l-24 -146h-15c0 64 -36 120 -92 120c-25 0 -51 -17 -51 -58c0 -55 134 -147 134 -242c0 -62 -48 -125 -135 -125c-34 0 -98 20 -110 20c-9 0 -18 -4 -30 -21h-17l25 156h16c0 -63 41 -130 104 -130c59 0 73 50 73 89c0 82 -130 132 -130 230c0 79 59 107 114 107 c43 0 63 -20 92 -20c11 0 22 10 30 20h16Z" id="E1-STIXWEBNORMALI-1D460" stroke-width="1"/>
                  <path d="M363 111l12 -13c-51 -60 -113 -109 -198 -109c-97 0 -137 78 -137 155c0 140 121 297 263 297c50 0 97 -27 97 -76c0 -38 -16 -70 -54 -70c-26 0 -38 21 -38 38c0 24 29 36 29 58c0 12 -10 21 -34 21c-119 0 -176 -179 -176 -259c0 -87 49 -109 94 -109 c61 0 107 33 142 67Z" id="E1-STIXWEBNORMALI-1D450" stroke-width="1"/>
                  <path d="M469 106l14 -11c-29 -34 -78 -106 -133 -106c-18 0 -41 10 -41 42c0 12 1 26 64 267c2 7 7 29 7 44c0 19 -7 35 -24 35c-36 0 -102 -85 -134 -133c-34 -51 -62 -102 -67 -122l-32 -122h-78l152 600c1 4 2 7 2 10c0 13 -10 22 -31 22c-10 0 -21 -1 -29 -2l-2 14l159 24 l-109 -416h4c53 58 125 189 216 189c42 0 57 -34 57 -70c0 -22 -6 -43 -11 -64l-58 -230c-1 -5 -2 -7 -2 -10c0 -6 3 -14 13 -14c22 0 49 35 63 53Z" id="E1-STIXWEBNORMALI-210E" stroke-width="1"/>
                  <path d="M363 112l14 -13c-70 -86 -138 -110 -200 -110c-98 0 -137 84 -137 156c0 23 1 37 6 60c25 111 135 236 262 236c42 0 102 -14 102 -76c0 -127 -167 -176 -286 -182v-28c0 -64 52 -107 113 -107c42 0 90 18 126 64zM124 211h9c104 0 198 69 198 157c0 25 -19 43 -44 43 c-74 0 -134 -115 -163 -200Z" id="E1-STIXWEBNORMALI-1D452" stroke-width="1"/>
                  <path d="M667 107l13 -11c-32 -54 -84 -104 -131 -104c-22 0 -39 10 -39 49c0 7 1 17 6 37l56 221c4 14 6 23 6 40c0 20 -6 38 -24 38c-54 0 -164 -181 -179 -242l-34 -135h-79l77 299c2 9 5 25 5 40c0 20 -5 38 -23 38c-52 0 -162 -181 -178 -242l-35 -135h-78l95 374 c0 18 -6 31 -33 31c-8 0 -19 -1 -27 -2l-2 14l157 24l-44 -169h6c94 143 154 169 192 169c37 0 55 -37 55 -81c0 -17 -3 -32 -9 -52l-10 -36h5c29 52 81 114 130 147c22 15 41 22 61 22c36 0 54 -26 54 -71c0 -18 -1 -37 -7 -61l-61 -231c-1 -3 -2 -9 -2 -12 c0 -8 6 -12 15 -12c17 0 43 16 62 53Z" id="E1-STIXWEBNORMALI-1D45A" stroke-width="1"/>
                  <path d="M285 194h-246v63h246v-63Z" id="E1-STIXWEBMAIN-2D" stroke-width="1"/>
                  <path d="M257 566c0 -26 -22 -46 -48 -46c-29 0 -48 20 -48 46c0 25 19 50 48 50c26 0 48 -25 48 -50zM227 441l-92 -364c-1 -6 -1 -10 -1 -14c0 -7 6 -10 13 -10c22 0 28 12 64 51l13 -10c-35 -45 -85 -105 -134 -105c-28 0 -40 19 -40 46c0 12 0 31 79 338c1 2 2 9 2 12 c0 17 -8 22 -31 22c-9 0 -21 -2 -28 -4l-3 16Z" id="E1-STIXWEBNORMALI-1D456" stroke-width="1"/>
                  <path d="M527 668l-149 -598c-1 -3 -2 -9 -2 -12c0 -6 5 -9 15 -9c20 0 48 35 62 56l11 -12c-30 -45 -83 -105 -130 -105c-32 0 -40 23 -40 41c0 20 2 34 10 64h-5c-74 -93 -134 -105 -171 -105c-73 0 -88 74 -88 127c0 103 103 326 257 326c57 0 80 -26 81 -50h2l53 209 c1 4 2 8 2 12c0 13 -7 20 -33 20c-9 0 -20 -2 -27 -3l-4 15zM363 340c0 47 -15 71 -56 71c-99 0 -180 -200 -180 -296c0 -49 28 -66 56 -66c70 0 136 94 164 186c11 35 16 74 16 105Z" id="E1-STIXWEBNORMALI-1D451" stroke-width="1"/>
                  <path d="M637 320h-589v66h589v-66zM637 120h-589v66h589v-66Z" id="E1-STIXWEBMAIN-3D" stroke-width="1"/>
                  <path d="M621 220h-557v66h557v-66Z" id="E1-STIXWEBMAIN-2212" stroke-width="1"/>
                  <path d="M394 0h-276v15c74 4 95 25 95 80v449c0 34 -9 49 -30 49c-10 0 -27 -5 -45 -12l-27 -10v14l179 91l9 -3v-597c0 -43 20 -61 95 -61v-15Z" id="E1-STIXWEBMAIN-31" stroke-width="1"/>
                  <path d="M467 96l-5 -6c-28 -34 -76 -98 -128 -98c-32 0 -41 23 -41 46c0 13 4 29 7 40l57 221c2 8 7 28 7 42c0 19 -6 38 -24 38c-38 0 -101 -86 -132 -133c-36 -54 -62 -101 -68 -122l-33 -124h-77l95 374c0 18 -3 32 -30 32c-10 0 -21 -2 -28 -3l-2 15l159 23l-51 -189h3 c5 0 54 70 56 73c40 50 100 116 160 116c44 0 56 -29 56 -62c0 -25 -6 -50 -11 -70l-59 -231c-1 -2 -1 -5 -1 -10c1 -6 4 -14 15 -14c24 0 48 36 62 53Z" id="E1-STIXWEBNORMALI-1D45B" stroke-width="1"/>
                  <path d="M444 428l-89 -348c-1 -4 -1 -6 -1 -9c0 -8 4 -14 14 -14c21 0 40 26 57 46l5 6l13 -11c-23 -33 -74 -107 -132 -107c-29 0 -40 19 -40 52c0 9 1 25 4 37l26 95h-1c-7 -5 -97 -126 -137 -156c-23 -17 -49 -28 -72 -28c-47 0 -61 36 -61 74c0 21 3 40 8 59l59 231 c4 15 6 21 6 25c0 12 -11 23 -33 23c-7 0 -19 -1 -26 -3l-3 15l157 26l-84 -326c-2 -9 -3 -16 -3 -24c0 -21 8 -34 26 -34c25 0 65 31 100 77c43 57 89 146 109 219l21 75h77Z" id="E1-STIXWEBNORMALI-1D462" stroke-width="1"/>
                  <path d="M214 382l4 -4c33 32 72 63 121 63c70 0 111 -69 111 -151c0 -121 -109 -301 -266 -301c-53 0 -94 18 -139 48l144 563c1 4 2 8 2 11c-1 13 -16 21 -29 21c-10 0 -22 -1 -30 -4l-3 16l158 24zM179 252l-55 -215c0 -7 32 -19 55 -19c122 0 188 174 188 276 c0 70 -38 92 -71 92c-72 0 -106 -89 -117 -134Z" id="E1-STIXWEBNORMALI-1D44F" stroke-width="1"/>
                  <path d="M175 267l5 -1c9 18 21 38 32 56c34 54 82 119 137 119c29 0 44 -21 44 -48c0 -38 -24 -82 -65 -82c-39 0 -29 38 -47 38c-61 0 -148 -256 -153 -273l-21 -76h-77l92 364c3 11 4 18 4 23c0 13 -11 19 -33 19c-7 0 -21 -2 -27 -3l-2 15l157 23Z" id="E1-STIXWEBNORMALI-1D45F" stroke-width="1"/>
                </defs>
                <g fill="black" stroke="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)">
                  <g transform="translate(14519,0)">
                    <use xlink:href="#E1-STIXWEBNORMALI-1D460" x="0" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D450" x="440" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-210E" x="856" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="1369" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45A" x="1815" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="2525" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-2D" x="2971" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D456" x="3304" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D451" x="3616" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-3D" x="4426" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-2212" x="5389" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-31" x="6075" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-2212" x="6797" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D460" x="7705" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D450" x="8146" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-210E" x="8561" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="9075" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45A" x="9520" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="10231" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-2D" x="10676" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45B" x="11010" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D462" x="11507" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45A" x="11982" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D44F" x="12692" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="13163" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45F" x="13608" y="0"/>
                  </g>
                  <g transform="translate(14519,-1200)">
                    <use xlink:href="#E1-STIXWEBNORMALI-1D460" x="0" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D450" x="440" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-210E" x="856" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="1369" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45A" x="1815" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="2525" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-2D" x="2971" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45B" x="3304" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D462" x="3802" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45A" x="4276" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D44F" x="4987" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="5457" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45F" x="5903" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-3D" x="6589" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-2212" x="7552" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-31" x="8238" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-2212" x="8960" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D460" x="9868" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D450" x="10309" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-210E" x="10724" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="11238" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45A" x="11683" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="12394" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-2D" x="12839" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D456" x="13173" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D451" x="13484" y="0"/>
                  </g>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[scheme-id = -1 - scheme-number
scheme-number = -1 - scheme-id
]]></artwork>
          </artset>
          <t>For example, the scheme-name <tt>coap</tt> has the (unsigned integer)
scheme-number <tt>0</tt> which is represented in a (negative integer)
scheme-id <tt>-1</tt>.</t>
        </section>
        <section anchor="the-discard-section">
          <name>The <tt>discard</tt> Section</name>
          <t>The <tt>discard</tt> section can be used in a CRI reference when neither a
scheme nor an authority is present.
It then expresses the operations performed on a base CRI by CRI references that
are equivalent to URI references with relative paths and path prefixes such as "/", "./", "../", "../../", etc.<br/>
"." and ".." are not available in CRIs and are therefore expressed
using <tt>discard</tt> after a normalization step, as is the presence or absence of a leading "/".</t>
          <t>E.g., a simple URI reference "foo" specifies to remove one leading segment
from the base URI's path, which is represented in the equivalent CRI
reference discard section as the value <tt>1</tt>; similarly "../foo" removes
two leading segments, represented as <tt>2</tt>;
and "/foo" removes all segments, represented in the <tt>discard</tt> section as the value <tt>true</tt>.
The exact semantics of the section values are defined by
<xref target="reference-resolution"/>.</t>
          <t>Most URI references that Section <xref target="RFC3986" section="4.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/> calls "relative
references" (i.e., references that need to undergo a resolution
process to obtain a URI) correspond to the CRI reference form that starts with
<tt>discard</tt>.  The exception are relative references with an <tt>authority</tt>
(called a "network-path reference" in Section <xref target="RFC3986" section="4.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), which
discard the entire path of the base CRI.
These CRI references never carry a <tt>discard</tt> section: the value of
<tt>discard</tt> defaults to <tt>true</tt>.</t>
        </section>
        <section anchor="visualization">
          <name>Visualization</name>
          <t>The structure of a CRI reference is visualized using the somewhat limited means
of a railroad diagram:</t>
          <artset>
            <artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 530 360">
                <g transform="translate(40 50)">
                  <text x="-30" y="-10">cri-reference:</text>
                  <path class="station" d="M5.5 14 v12 m 4 0 v-12" fill="none" stroke="black" stroke-width="1.5"/>
                  <path class="station" d="M400.5 14 v12 m 4 0 v-12" fill="none" stroke="black" stroke-width="1.5"/>
                  <rect class="rule" fill="none" height="20" rx="0" ry="0" stroke="black" stroke-width="1.5" width="70" x="60" y="10"/>
                  <text class="rule" text-anchor="middle" x="95" y="25">scheme</text>
                  <rect class="rule" fill="none" height="20" rx="0" ry="0" stroke="black" stroke-width="1.5" width="90" x="150" y="10"/>
                  <text class="rule" text-anchor="middle" x="195" y="25">authority</text>
                  <rect class="rule" fill="none" height="20" rx="0" ry="0" stroke="black" stroke-width="1.5" width="70" x="115" y="40"/>
                  <text class="rule" text-anchor="middle" x="150" y="55">discard</text>
                  <rect class="rule" fill="none" height="20" rx="0" ry="0" stroke="black" stroke-width="1.5" width="90" x="290" y="10"/>
                  <text class="rule" text-anchor="middle" x="335" y="25">local-part</text>
                  <path d="M260 30 v10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M185 50 h65 q10 0 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M40 40 q0 10 10 10 h65" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M260 30 q0 -10 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M240 20 h50" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M130 20 h20" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M30 20 q10 0 10 10 v10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M380 20 h20" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M10 20 h50" fill="none" stroke="black" stroke-width="1.5"/>
                </g>
                <g transform="translate(40 160)">
                  <text x="-30" y="-10">local-part:</text>
                  <path class="station" d="M5.5 74 v12 m 4 0 v-12" fill="none" stroke="black" stroke-width="1.5"/>
                  <path class="station" d="M460.5 74 v12 m 4 0 v-12" fill="none" stroke="black" stroke-width="1.5"/>
                  <path class="arrow" d="M237 10 l-4 3 v-6 z" fill="none" stroke="black" stroke-width="1.5"/>
                  <rect class="rule" fill="none" height="20" rx="0" ry="0" stroke="black" stroke-width="1.5" width="50" x="60" y="70"/>
                  <text class="rule" text-anchor="middle" x="85" y="85">path</text>
                  <path class="arrow" d="M272 30 l-4 3 v-6 z" fill="none" stroke="black" stroke-width="1.5"/>
                  <rect class="rule" fill="none" height="20" rx="0" ry="0" stroke="black" stroke-width="1.5" width="50" x="160" y="70"/>
                  <text class="rule" text-anchor="middle" x="185" y="85">query</text>
                  <path class="arrow" d="M307 50 l-4 3 v-6 z" fill="none" stroke="black" stroke-width="1.5"/>
                  <rect class="rule" fill="none" height="20" rx="0" ry="0" stroke="black" stroke-width="1.5" width="90" x="260" y="70"/>
                  <text class="rule" text-anchor="middle" x="305" y="85">fragment</text>
                  <path d="M40 20 v50" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M430 70 q0 10 10 10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M140 40 v30" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M400 70 q0 10 10 10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M240 60 v10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M370 70 q0 10 10 10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M350 80 h110" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M230 80 q10 0 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M240 60 q0 -10 10 -10 h110 q10 0 10 10 v10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M210 80 h50" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M130 80 q10 0 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M140 40 q0 -10 10 -10 h240 q10 0 10 10 v30" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M110 80 h50" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M30 80 q10 0 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M40 20 q0 -10 10 -10 h370 q10 0 10 10 v50" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M10 80 h50" fill="none" stroke="black" stroke-width="1.5"/>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[cri-reference:
    │├──╮── scheme ── authority ──╭── local-part ──┤│
        │                         │
        ╰──────── discard ────────╯

local-part:
        ╭─────────────────────>─────────────────────╮
        │                                           │
        │          ╭──────────────>──────────────╮  │
        │          │                             │  │
        │          │           ╭──────>───────╮  │  │
        │          │           │              │  │  │
    │├──╯── path ──╯── query ──╯── fragment ──╰──╰──╰──┤│

]]></artwork>
          </artset>
          <t>This visualization does not go into the details of the elements.</t>
        </section>
        <section anchor="examples">
          <name>Examples</name>
          <sourcecode type="cbor-diag"><![CDATA[
[-1,             / scheme-id -- equivalent to "coap" /
 [h'C6336401',   / host /
  61616],        / port /
 [".well-known", / path /
  "core"]
]
]]></sourcecode>
          <sourcecode type="cbor-diag"><![CDATA[
[true,                  / discard /
 [".well-known",        / path /
  "core"],
 ["rt=temperature-c"]]  / query /
]]></sourcecode>
          <sourcecode type="cbor-diag"><![CDATA[
[-6,                / scheme-id -- equivalent to "did" /
 true,              / authority = NOAUTH-ROOTLESS /
 ["web:alice:bob"]  / path /
]
]]></sourcecode>
        </section>
        <section anchor="specific-terminology">
          <name>Specific Terminology</name>
          <t>A CRI reference is considered <em>well-formed</em> if it matches the
structure as expressed in <xref target="cddl"/> in CDDL, with the additional
requirement that trailing <tt>null</tt> values are removed from the array.</t>
          <t>A CRI reference is considered <em>absolute</em> if it is well-formed
and the sequence of sections starts with a non-null <tt>scheme</tt>.</t>
          <t>A CRI reference is considered <em>relative</em> if it is well-formed
and the sequence of sections is empty or starts with a section other
than those that would constitute a <tt>scheme</tt>.</t>
        </section>
      </section>
      <section anchor="ingest">
        <name>Ingesting and encoding a CRI Reference</name>
        <t>From an abstract point of view, a CRI Reference is a data structure
with six sections:</t>
        <t>scheme, authority, discard, path, query, fragment</t>
        <t>Each of these sections can be unset ("null"),
<!-- "not defined" in RFC 3986 -->
except for discard,
which is always an unsigned integer or <tt>true</tt>.  If scheme and/or
authority are non-null, discard must be <tt>true</tt>.</t>
        <t>When ingesting a CRI Reference that is in the transfer form, those
sections are filled in from the transfer form (unset sections are
filled with null), and the following steps are performed:</t>
        <ul spacing="normal">
          <li>
            <t>If the array is entirely empty, replace it with <tt>[0]</tt>.</t>
          </li>
          <li>
            <t>If discard is present in the transfer form (i.e., the outer array
starts with true or an unsigned integer), set scheme and authority to null.</t>
          </li>
          <li>
            <t>If scheme and/or authority are present in the transfer form (i.e.,
the outer array starts with null, a text string, or a negative integer), set
discard to <tt>true</tt>.</t>
          </li>
        </ul>
        <t>Upon encoding the abstract form into the transfer form, the inverse
processing is performed:  If scheme and/or authority are not null, the
discard value is not transferred (it must be true in this case).  If
they are both null, they are both left out and only discard is
transferred.
Trailing null values are removed from the array.
As a special case, an empty array is sent in place for a remaining
<tt>[0]</tt> (URI reference "").</t>
        <section anchor="unprocessable">
          <name>Error handling and extensibility</name>
          <t>It is recommended that specifications that describe the use of CRIs in CBOR-based protocols
use the error handling mechanisms outlined in this section.
Implementations of this document <bcp14>MUST</bcp14> adhere to these rules
unless a containing document overrides them.</t>
          <t>When encountering a CRI that is well-formed in terms of CBOR, but that</t>
          <ul spacing="normal">
            <li>
              <t>is not well-formed as a CRI,</t>
            </li>
            <li>
              <t>does not meet the other requirements on CRIs that are not covered by
the term "well-formed", or</t>
            </li>
            <li>
              <t>uses features not supported by the implementation,</t>
            </li>
          </ul>
          <t>the CRI is treated as "unprocessable".</t>
          <t>When encountering an unprocessable CRI,
the processor skips the entire CRI top-level array, including any CBOR
items contained in there,
and continues processing the CBOR items surrounding the unprocessable CRI.
(Note: this skipping can be implemented in bounded memory for CRIs
that do not use indefinite length encoding, as mandated in
<xref target="cbor-representation"/>.)</t>
          <t>The unprocessable CRI is treated as an opaque identifier
that is distinct from all processable CRIs,
and distinct from all unprocessable CRIs with different CBOR representations.
It is up to implementation whether unprocessable CRIs with identical representations
are treated as identical to each other or not.
Unprocessable CRIs cannot be dereferenced,
and it is an error to query any of their components.</t>
          <t>This mechanism ensures that CRI extensions
(using originally defined features or later extensions)
can be used without extending the compatibility hazard to the containing document.
For example,
if a collection of possible interaction targets contains several CRIs,
some of which use the "no-authority" feature,
an application consuming that collection that does not support that
feature can still offer the supported interaction targets.</t>
          <t>The duty of checking validity is with the recipients that rely on this
validity.
An intermediary that does not use the detailed information in a CRI
(or merely performs reference resolution) <bcp14>MAY</bcp14> pass on a CRI/CRI
reference without having fully checked it, relying on the producer
having generated a valid CRI/CRI reference.
This is true for both basic CRIs (e.g., checking for valid UTF-8) and
for extensions (e.g., checking both for valid UTF-8 and the minimal
use of PET elements in extended-cris as per <xref target="pet"/>).</t>
        </section>
      </section>
      <section anchor="reference-resolution">
        <name>Reference Resolution</name>
        <t>The term "relative" implies that a "base CRI" exists against which the
relative reference is applied. Aside from fragment-only references,
relative references are only usable when a base CRI is known.</t>
        <t>The following steps define the process of resolving any well-formed CRI
reference against a base CRI so that the result is a CRI in the form of
an absolute CRI reference:</t>
        <ol spacing="normal" type="1"><li>
            <t>Establish the base CRI of the CRI reference and express it in the
  form of an abstract absolute CRI reference.</t>
          </li>
          <li>
            <t>Initialize a buffer with the sections from the base CRI.</t>
          </li>
          <li>
            <t>If the value of discard is <tt>true</tt> in the CRI reference (which is
implicitly the case when scheme and/or authority are present in the reference), replace the
path in the buffer with the empty array, unset query and
fragment, and set a <tt>true</tt> authority to <tt>null</tt>.  If the value of
discard is an unsigned integer, remove as many elements
from the end of the path array; if it is non-zero, unset query and
fragment.  </t>
            <t>
Set discard to <tt>true</tt> in the buffer.</t>
          </li>
          <li>
            <t>If the path section is set in the CRI reference, append all
elements from the path array to the array in the path section in
the buffer; unset query and fragment.</t>
          </li>
          <li>
            <t>Apart from the path and discard, copy all non-null sections from
the CRI reference to the buffer in sequence; unset query in the buffer if query
is the empty array <tt>[]</tt> in the CRI reference; unset fragment in the buffer if
query is non-null in the CRI reference.</t>
          </li>
          <li>
            <t>Return the sections in the buffer as the resolved CRI.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="relationship-between-cris-uris-and-iris">
      <name>Relationship between CRIs, URIs, and IRIs</name>
      <t>CRIs are meant to replace both <xref target="STD66">Uniform Resource Identifiers (URIs)</xref>
and <xref target="RFC3987">Internationalized Resource Identifiers (IRIs)</xref>
in <xref target="RFC7228">constrained environments</xref>.
Applications in these environments may never need to use URIs and IRIs
directly, especially when the resource identifier is used simply for
identification purposes or when the CRI can be directly converted into a
CoAP request.</t>
      <t>However, it may be necessary in other environments to determine the
associated URI or IRI of a CRI, and vice versa. Applications can perform
these conversions as follows:</t>
      <dl newline="true">
        <dt>CRI to URI</dt>
        <dd>
          <t>A CRI is converted to a URI as specified in <xref target="cri-to-uri"/>.</t>
        </dd>
        <dt>URI to CRI</dt>
        <dd>
          <t>The method of converting a URI to a CRI is unspecified;
implementations are free to use any algorithm as long as converting
the resulting CRI back to a URI yields an equivalent URI.
</t>
          <t>Note that CRIs are defined to enable implementing conversions from
or to URIs analogously to processing URIs into CoAP Options and
back, with the exception that item 8 of <xref section="6.4" sectionFormat="of" target="RFC7252"/>
and item 7 of <xref section="6.5" sectionFormat="of" target="RFC7252"/> do not apply to CRI processing.
See <xref format="counter" target="sp-initial-empty"/> in <xref target="the-small-print"/> for more details.</t>
        </dd>
        <dt>CRI to IRI</dt>
        <dd>
          <t>A CRI can be converted to an IRI by first converting it to a URI as
specified in <xref target="cri-to-uri"/>, and then converting the URI
to an IRI as described in <xref section="3.2" sectionFormat="of" target="RFC3987"/>.</t>
        </dd>
        <dt>IRI to CRI</dt>
        <dd>
          <t>An IRI can be converted to a CRI by first converting it to a URI as
described in <xref section="3.1" sectionFormat="of" target="RFC3987"/>, and then
converting the URI to a CRI as described above.</t>
        </dd>
      </dl>
      <!-- What? -->
<t>Everything in this section also applies to CRI references, URI
references, and IRI references.</t>
      <section anchor="cri-to-uri">
        <name>Converting CRIs to URIs</name>
        <t>Applications <bcp14>MUST</bcp14> convert a CRI reference to a URI
reference by determining the components of the URI reference according
to the following steps and then recomposing the components to a URI
reference string as specified in Section <xref target="RFC3986" section="5.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>.</t>
        <dl newline="true">
          <dt>scheme</dt>
          <dd>
            <t>If the CRI reference contains a <tt>scheme</tt> section, the scheme
component of the URI reference consists of the value of that
section, if text (<tt>scheme-name</tt>); or, if a negative integer is given
(<tt>scheme-id</tt>), the lower case scheme name corresponding to the
scheme-id as per <xref target="scheme-id"/>.
Otherwise, the scheme component is unset.</t>
          </dd>
          <dt>authority</dt>
          <dd>
            <t>If the CRI reference contains a <tt>host-name</tt> or <tt>host-ip</tt> item, the
authority component of the URI reference consists of a host
subcomponent, optionally followed by a colon (":") character and a
port subcomponent, optionally preceded by a <tt>userinfo</tt> subcomponent.
Otherwise, the authority component is unset.
</t>
            <t>The host subcomponent consists of the value of the <tt>host-name</tt> or
<tt>host-ip</tt> item.</t>
            <t>The <tt>userinfo</tt> subcomponent, if present, is turned into a single
string by
appending a "@".  Otherwise, both the subcomponent and the "@" sign
are omitted.
Any character in the value of the <tt>userinfo</tt> elements that is not in
the set of unreserved characters (Section <xref target="RFC3986" section="2.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>) or
"sub-delims" (Section <xref target="RFC3986" section="2.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>) <bcp14>MUST</bcp14> be
percent-encoded.</t>
            <t>The <tt>host-name</tt> is turned into a single string by joining the
elements separated by dots (".").
Any character in the elements of a <tt>host-name</tt> item that is not in
the set of unreserved characters (Section <xref target="RFC3986" section="2.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>) or
"sub-delims" (Section <xref target="RFC3986" section="2.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>) <bcp14>MUST</bcp14> be
percent-encoded.
If there are dots (".") in such elements, the conversion fails
(percent-encoding is not able to represent such elements, as
normalization would turn the percent-encoding back to the unreserved
character that a dot is.)</t>
            <t anchor="host-ip-to-uri">The value of a <tt>host-ip</tt> item <bcp14>MUST</bcp14> be
represented as a string that matches the "IPv4address" or
"IP-literal" rule (Section <xref target="RFC3986" section="3.2.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>).
Any zone-id is appended to the string; the details for how this is
done are currently in flux in the URI specification: <xref section="2" sectionFormat="of" target="RFC6874"/> uses percent-encoding and a separator of "%25", while
proposals for a future superseding zone-id specification document
(such as <xref target="I-D.carpenter-6man-rfc6874bis"/>) are being prepared; this also leads to a modified
"IP-literal" rule as specified in these documents.</t>
            <t>If the CRI reference contains a <tt>port</tt> item, the port
subcomponent consists of the value of that item in decimal
notation.
Otherwise, the colon (":") character and the port subcomponent are
both omitted.</t>
          </dd>
          <dt>path</dt>
          <dd>
            <t anchor="colon">If the CRI reference contains a <tt>discard</tt> item of value <tt>true</tt>, the
path component is considered <em>rooted</em>.  If it
contains a <tt>discard</tt> item of value <tt>0</tt> and the <tt>path</tt> item is
present, the conversion fails.  If it contains a positive discard
item, the path component is considered <em>unrooted</em> and
prefixed by as many "../" components as the <tt>discard</tt> value minus
one indicates.  If the discard value is <tt>1</tt> and the first element of
the path contains a <tt>:</tt>, the path component is prefixed by "./"
(this avoids the first element to appear as supplying a URI scheme;
compare <tt>path-noscheme</tt> in Section <xref target="RFC3986" section="4.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>).
</t>
            <t>If the discard item is not present and the CRI reference contains an
authority that is <tt>true</tt>, the path component of the URI reference is
considered unrooted.  Otherwise, the path component is considered
rooted.</t>
            <t>If the CRI reference contains one or more <tt>path</tt> items, the path
component is constructed by concatenating the sequence of
representations of these items.  These representations generally
contain a leading slash ("/") character and the value of each item,
processed as discussed below.  The leading slash character is
omitted for the first path item only if the path component is
considered "unrooted".  <!-- A path segment that contains a colon
character (e.g., --> <!-- "this:that") cannot directly be used as
the first such item.  Such a --> <!-- segment MUST be preceded by a
dot-segment (e.g., "./this:that") --> <!-- unless scheme and/or
authority are present. -->
            </t>
            <t>Any character in the value of a <tt>path</tt> item that is not
in the set of unreserved characters or "sub-delims" or a colon
(":") or commercial at ("@") character <bcp14>MUST</bcp14> be
percent-encoded.</t>
            <t>If the authority component is present (not <tt>null</tt> or <tt>true</tt>) and the
path component does not match the "path-abempty" rule (Section <xref target="RFC3986" section="3.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), the conversion fails.</t>
            <t>If the authority component is not present, but the scheme component
is, and the path component does not match the "path-absolute",
"path-rootless" (authority == <tt>true</tt>) or "path-empty" rule (Section <xref target="RFC3986" section="3.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), the conversion fails.</t>
            <t>If neither the authority component nor the scheme component are
present, and the path component does not match the "path-absolute",
"path-noscheme" or "path-empty" rule (Section <xref target="RFC3986" section="3.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), the
conversion fails.</t>
          </dd>
          <dt>query</dt>
          <dd>
            <t>If the CRI reference contains one or more <tt>query</tt> items,
the query component of the URI reference consists of the value of
each item, separated by an ampersand ("&amp;") character.
Otherwise, the query component is unset.
</t>
            <t>Any character in the value of a <tt>query</tt> item that is not
in the set of unreserved characters or "sub-delims" or a colon
(":"), commercial at ("@"), slash ("/") or question mark ("?")
character <bcp14>MUST</bcp14> be percent-encoded.
Additionally, any ampersand character ("&amp;") in the item
value <bcp14>MUST</bcp14> be percent-encoded.</t>
          </dd>
          <dt>fragment</dt>
          <dd>
            <t>If the CRI reference contains a fragment item, the fragment
component of the URI reference consists of the value of that
item.
Otherwise, the fragment component is unset.
</t>
            <t>Any character in the value of a <tt>fragment</tt> item that is
not in the set of unreserved characters or "sub-delims" or a colon
(":"), commercial at ("@"), slash ("/") or question mark ("?")
character <bcp14>MUST</bcp14> be percent-encoded.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="extending">
      <name>Extending CRIs</name>
      <t>CRIs have been designed to relieve implementations operating on CRIs
from string scanning, which both helps constrained implementations and
implementations that need to achieve high throughput.</t>
      <t>The CRI structure described up to this point is termed the <em>Basic CRI</em>.
It should be sufficient for all applications that use the CoAP
protocol, as well as most other protocols employing URIs.</t>
      <t>However, Basic CRIs have one limitation: They do not support URI
components that <em>require</em> percent-encoding (Section <xref target="RFC3986" section="2.1" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>) to
represent them in the URI syntax, except where that percent-encoding
is used to escape the main delimiter in use.</t>
      <t>E.g., the URI</t>
      <sourcecode type="uri"><![CDATA[
https://alice/3%2f4-inch
]]></sourcecode>
      <t>is represented by the basic CRI</t>
      <sourcecode type="coap-diag"><![CDATA[
[-4, ["alice"], ["3/4-inch"]]
]]></sourcecode>
      <t>However, percent-encoding that is used at the application level is not
supported by basic CRIs:</t>
      <sourcecode type="uri"><![CDATA[
did:web:alice:7%3A1-balun
]]></sourcecode>
      <t>Extended forms of CRIs may be defined to enable these applications.
They will generally extend the potential values of text components of
URIs, such as userinfo, hostnames, paths, queries, and fragments.</t>
      <t>One such extended form is described in the following <xref target="pet"/>.
Consumers of CRIs will generally notice when an extended form is in
use, by finding structures that do not match the CDDL rules given in
<xref target="cddl"/>.
Future definitions of extended forms need to strive to be
distinguishable in their structures from the extended form presented
here as well as other future forms.</t>
      <t>Extensions to CRIs <bcp14>MUST NOT</bcp14> allow indefinite length items.
This provision ensures that recipients of CRIs can deal with unprocessable CRIs
as described in <xref target="unprocessable"/>.</t>
      <section anchor="pet">
        <name>Extended CRI: Accommodating Percent Encoding (PET)</name>
        <t>This section presents a method to represent percent-encoded segments
of userinfo, hostnames, paths, and queries, as well as fragments.</t>
        <t>The four CDDL rules</t>
        <sourcecode type="cddl"><![CDATA[
userinfo    = (false, text .feature "userinfo")
host-name   = (*text)
path        = [*text]
query       = [+text]
fragment    = text
]]></sourcecode>
        <t>are replaced with</t>
        <sourcecode type="cddl"><![CDATA[
userinfo    = (false, text-or-pet .feature "userinfo")
host-name   = (*text-or-pet)
path        = [*text-or-pet]
query       = [+text-or-pet]
fragment    = text-or-pet

text-or-pet = text /
    text-pet-sequence .feature "extended-cri"

; text1 and pet1 alternating, at least one pet1:
text-pet-sequence = [?text1, ((+(pet1, text1), ?pet1) // pet1)]
; pet is percent-encoded bytes
pet1 = bytes .ne ''
text1 = text .ne ""
]]></sourcecode>
        <t>That is, for each of the host-name, path, and query segments, and for
the userinfo and fragment components, an alternate representation is provided
besides a simple text string: a non-empty array of alternating non-blank text and byte
strings, the text strings of which stand for non-percent-encoded text,
while the byte strings retain the special
semantics of percent-encoded text without actually being
percent-encoded.</t>
        <t>The above DID URI can now be represented as:</t>
        <sourcecode type="cbor-diag"><![CDATA[
[-6, true, [["web:alice:7", ':', "1-balun"]]]
]]></sourcecode>
        <t>(Note that, in CBOR diagnostic notation, single quotes delimit
literals for byte strings, double quotes for text strings.)</t>
        <t>To yield a valid <tt>extended-cri</tt>, the use of byte strings <bcp14>MUST</bcp14> be
minimal.
Both the following examples are therefore not valid:</t>
        <sourcecode type="cbor-diag"><![CDATA[
[-6, true, [["web:alice:", '7:', "1-balun"]]]
[-6, true, [["web:alice:7", ':1', "-balun"]]]
]]></sourcecode>
        <t>An algorithm for constructing a valid <tt>text-pet-sequence</tt> might
repeatedly examine the byte sequences in each byte string; if such a
sequence stands for an unreserved ASCII character, or constitutes a
valid UTF-8 character ≥ U+0080, move this character over into a text
string by appending it to the end of the preceding text string,
prepending it to the start of the following text string, or splitting
the byte string and inserting a new text string with this character,
all while preserving the order of the bytes.  (Note that the
properties of UTF-8 make this a simple linear process.)</t>
        <aside>
          <t>Unlike the text elements of a path or a query, which through CoAP's
heritage are designed to be processable element by element, a
text-pet-sequence does not usually produce a semantically meaningful
division into array elements.
This consequence of the flexibility in delimiters offered in URIs is
demonstrated by this example, which structurally singles out the one
':' that is <em>not</em> a delimiter at the application level.
Applications designed for using CRIs will generally avoid using the
extended-cri feature.
Applications using existing URI structures that require
text-pet-sequence elements for their representation typically need
to process them byte by byte.</t>
        </aside>
      </section>
    </section>
    <section anchor="coap-integration">
      <name>CoAP Integration</name>
      <t>This section discusses ways in which CRIs can be used in the context
of the CoAP protocol <xref target="RFC7252"/>.</t>
      <section anchor="converting-between-coap-cris-and-sets-of-coap-options">
        <name>Converting Between CoAP CRIs and Sets of CoAP Options</name>
        <t>This section provides an analogue to Sections <xref target="RFC7252" section="6.4" sectionFormat="bare"/> and <xref target="RFC7252" section="6.5" sectionFormat="bare"/> of <xref target="RFC7252"/>:
Computing a set of CoAP options from a request CRI (<xref target="decompose-coap"/>) and computing a
request CRI from a set of COAP options (<xref target="compose-coap"/>).</t>
        <t>This section makes use of the mapping between CRI scheme numbers
and URI scheme names shown in <xref target="scheme-map"/>:</t>
        <table anchor="scheme-map">
          <name>Mapping CRI scheme numbers and URI scheme names</name>
          <thead>
            <tr>
              <th align="left">CRI scheme number</th>
              <th align="left">URI scheme name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">coap</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">coaps</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">coap+tcp</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">coaps+tcp</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">coap+ws</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">coaps+ws</td>
            </tr>
          </tbody>
        </table>
        <section anchor="decompose-coap">
          <name>Decomposing a Request CRI into a set of CoAP Options</name>
          <t>The steps to parse a request's options from a CRI »cri« are as
   follows.  These steps either result in zero or more of the Uri-Host,
   Uri-Port, Uri-Path, and Uri-Query Options being included in the
   request or they fail.</t>
          <t>Where the following speaks of deriving a text-string for a CoAP Option
value from a data item in the CRI, the presence of any
<tt>text-pet-sequence</tt> subitem (<xref target="pet"/>) in this item fails this algorithm.</t>
          <ol spacing="normal" type="1"><li>
              <t>If »cri« is not an absolute CRI reference, then fail this
algorithm.</t>
            </li>
            <li>
              <t>Translate the scheme-id into a URI scheme name as per
<xref target="scheme-id"/> and
<xref target="scheme-map"/>; if a scheme-id that corresponds to a scheme
number not in this list is being used, or if a scheme-name is
being used,
fail this algorithm.
Remember the specific variant of CoAP to be used based on this
URI scheme name.</t>
            </li>
            <li>
              <t>If »cri« has a <tt>fragment</tt> component, then fail this algorithm.</t>
            </li>
            <li>
              <t>If the <tt>host</tt> component of »cri« is a <tt>host-name</tt>, include a
Uri-Host Option and let that option's value be the text string
value of the <tt>host-name</tt>.  </t>
              <t>
If the <tt>host</tt> component of »cri« is a <tt>host-ip</tt>, check whether
the IP address given represents the request's
destination IP address (and, if present, zone-id).
Only if it does not, include a Uri-Host Option, and let that
option's value be the text value of the URI representation of
the IP address, as derived in <xref target="host-ip-to-uri"/>.</t>
            </li>
            <li>
              <t>If »cri« has a <tt>port</tt> component, then let »port« be that
component's unsigned integer value; otherwise, let »port« be
the default port number for the scheme.</t>
            </li>
            <li>
              <t>If »port« does not equal the request's destination UDP port,
include a Uri-Port Option and let that option's value be »port«.</t>
            </li>
            <li>
              <t>If the value of the <tt>path</tt> component of »cri« is empty or
consists of a single empty string, then move to the next step.  </t>
              <t>
Otherwise, for each element in the »path« component, include a
Uri-Path Option and let that option's value be the text string
value of that element.</t>
            </li>
            <li>
              <t>If »cri« has a <tt>query</tt> component, then, for each element in the
<tt>query</tt> component, include a Uri-Query Option and let that
option's value be the be the text string
value of that element.</t>
            </li>
          </ol>
        </section>
        <section anchor="compose-coap">
          <name>Composing a Request CRI from a Set of CoAP Options</name>
          <t>The steps to construct a CRI from a request's options are as follows.
   These steps either result in a CRI or they fail.</t>
          <ol spacing="normal" type="1"><li>
              <t>Based on the variant of CoAP used in the request, choose a
<tt>scheme-id</tt> as per <xref target="scheme-id"/> and table <xref target="scheme-map"/>.  Use
that as the first value in the resulting CRI array.</t>
            </li>
            <li>
              <t>If the request includes a Uri-Host Option, insert an
<tt>authority</tt> with its value determined as follows:
If the value of the  Uri-Host Option is a <tt>reg-name</tt>, include
this as the <tt>host-name</tt>.
If the value is an IP-literal or IPv4address, extract any
<tt>zone-id</tt>, and represent the IP address as a byte string of
the correct length in <tt>host-ip</tt>, followed by any <tt>zone-id</tt>
extracted if present.
If the value is none of the three, fail this algorithm.  </t>
              <t>
If the request does not include a Uri-Host Option, insert an
<tt>authority</tt> with <tt>host-ip</tt> being the byte string that
represents the request's destination IP address and,
if one is present in the request's destination, add a <tt>zone-id</tt>.</t>
            </li>
            <li>
              <t>If the request includes a Uri-Port Option, let »port« be that
option's value.  Otherwise, let »port« be the request's
destination UDP port.
If »port« is not the default port for the scheme, then insert
the integer value of »port« as the value of <tt>port</tt> in the
authority.
Otherwise, elide the <tt>port</tt>.</t>
            </li>
            <li>
              <t>Insert a <tt>path</tt> component that contains an array built from
the text string values of the Uri-Path Options in the request,
or an empty array if no such options are present.</t>
            </li>
            <li>
              <t>Insert a <tt>query</tt> component that contains an array built from
the text string values of the Uri-Query Options in the request,
or an empty array if no such options are present.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="coap-options">
        <name>CoAP Options for Forward-Proxies</name>
        <t>Apart from the above procedures to convert CoAP CRIs to and from sets
of CoAP Options, two additional CoAP Options are defined in <xref section="5.10.2" sectionFormat="of" target="RFC7252"/> that support requests to forward-proxies:</t>
        <ul spacing="normal">
          <li>
            <t>Proxy-Uri, and</t>
          </li>
          <li>
            <t>its more lightweight variant, Proxy-Scheme</t>
          </li>
        </ul>
        <t>This section defines analogues of these that employ CRIs and the URI
Scheme numbering provided by the present specification.</t>
        <section anchor="proxy-cri">
          <name>Proxy-CRI</name>
          <table anchor="tab-proxy-cri">
            <name>Proxy-Cri CoAP Option</name>
            <thead>
              <tr>
                <th align="left">No.</th>
                <th align="left">C</th>
                <th align="left">U</th>
                <th align="left">N</th>
                <th align="left">R</th>
                <th align="left">Name</th>
                <th align="left">Format</th>
                <th align="left">Length</th>
                <th align="left">Default</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">TBD235</td>
                <td align="left">x</td>
                <td align="left">x</td>
                <td align="left">-</td>
                <td align="left"> </td>
                <td align="left">Proxy-Cri</td>
                <td align="left">opaque</td>
                <td align="left">1-1023</td>
                <td align="left">(none)</td>
              </tr>
            </tbody>
          </table>
          <t>The Proxy-CRI Option carries an encoded CBOR data item that represents
an absolute CRI reference.
It is used analogously to Proxy-Uri as defined in <xref section="5.10.2" sectionFormat="of" target="RFC7252"/>.
The Proxy-Cri Option <bcp14>MUST</bcp14> take precedence over any of the Uri-Host,
Uri-Port, Uri-Path or Uri-Query options, as well as over any
Proxy-Uri Option (each of which <bcp14>MUST NOT</bcp14> be
included in a request containing the Proxy-Cri Option).</t>
        </section>
        <section anchor="proxy-scheme-number">
          <name>Proxy-Scheme-Number</name>
          <table anchor="tab-proxy-scheme-number">
            <name>Proxy-Scheme-Number CoAP Option</name>
            <thead>
              <tr>
                <th align="left">No.</th>
                <th align="left">C</th>
                <th align="left">U</th>
                <th align="left">N</th>
                <th align="left">R</th>
                <th align="left">Name</th>
                <th align="left">Format</th>
                <th align="left">Length</th>
                <th align="left">Default</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">TBD239</td>
                <td align="left">x</td>
                <td align="left">x</td>
                <td align="left">-</td>
                <td align="left"> </td>
                <td align="left">Proxy-Scheme-Number</td>
                <td align="left">uint</td>
                <td align="left">0-3</td>
                <td align="left">(none)</td>
              </tr>
            </tbody>
          </table>
          <t>The Proxy-Scheme-Number Option carries a CRI Scheme Number represented as a
CoAP unsigned integer.
It is used analogously to Proxy-Scheme as defined in <xref section="5.10.2" sectionFormat="of" target="RFC7252"/>.</t>
          <t>As per <xref section="3.2" sectionFormat="of" target="RFC7252"/>, CoAP Options are only defined as one of empty, (text) string,
opaque (byte string), or uint (unsigned integer).
The Option therefore carries an
unsigned integer that represents the CRI scheme-number (which relates to
a CRI scheme-id as defined in <xref target="scheme-id"/>).
For instance, the scheme name "coap" has the scheme-number 0 and is
represented as an unsigned integer by a zero-length CoAP Option value.</t>
          <t><cref anchor="location-scheme">TO DO: Discuss the need for a
location-scheme-numeric option?</cref></t>
        </section>
      </section>
    </section>
    <section anchor="impl">
      <name>Implementation Status</name>
      <t>(Boilerplate as per <xref section="2.1" sectionFormat="of" target="RFC7942"/>:)</t>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -22?>
      </t>
      <t>With the exception of the authority=true fix, host-names split into
labels, and <xref target="pet"/>, CRIs are implemented in <tt>https://gitlab.com/chrysn/micrurus</tt>.
A golang implementation of version -10 of this document is found at:
<tt>https://github.com/thomas-fossati/href</tt>
        <!-- see RFC 7942 -->
      </t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Parsers of CRI references must operate on input that is assumed to be
untrusted. This means that parsers <bcp14>MUST</bcp14> fail gracefully
in the face of malicious inputs.
Additionally, parsers <bcp14>MUST</bcp14> be prepared to deal with
resource exhaustion (e.g., resulting from the allocation of big data
items) or exhaustion of the call stack (stack overflow).
See Section <xref target="RFC8949" section="10" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> for additional
security considerations relating to CBOR.</t>
      <t>The security considerations discussed in Section <xref target="RFC3986" section="7" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/> and
<xref section="8" sectionFormat="of" target="RFC3987"/> for URIs and IRIs also apply to CRIs.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="cri-reg">
        <name>CRI Scheme Numbers Registry</name>
        <t>This specification defines a new "CRI Scheme Numbers" sub-registry in
the "CoRE Parameters" registry <xref target="IANA.core-parameters"/>, with the
policy "Expert Review" (Section <xref target="RFC8126" section="4.5" sectionFormat="bare"/> of RFC 8126 <xref target="BCP26"/>).
The objective is to have CRI scheme number values registered for all
registered URI schemes (Uniform Resource Identifier (URI) Schemes
registry), as well as exceptionally for certain text strings that the
Designated Expert considers widely used in constrained applications in
place of URI scheme names.</t>
        <section anchor="de-instructions">
          <name>Instructions for the Designated Expert</name>
          <t>The expert is instructed to be frugal in the allocation of CRI scheme
number values whose scheme-id values (<xref target="scheme-id"/>) have short
representations (1+0 and 1+1 encoding), keeping them in
reserve for applications that are likely to enjoy wide use and can
make good use of their shortness.</t>
          <t>When the expert notices that a registration has been made in the
Uniform Resource Identifier (URI) Schemes registry (see also <xref target="upd"/>),
the expert is requested to initiate a parallel registration in the CRI
Scheme Numbers registry.
CRI scheme number values in the range between 1000 and
20000 (inclusive) should be assigned unless a shorter representation
in CRIs appears desirable.</t>
          <t>The expert exceptionally also may make such a registration for text
strings that have not been registered in the Uniform Resource
Identifier (URI) Schemes registry if and only if the expert considers
them to be in wide use in place of URI scheme names in constrained
applications.
(Note that the initial registrations in <xref target="tab-numbers"/> in <xref target="sec-numbers"/> already include
such registrations for the text strings "mqtt" and "mqtts".)</t>
          <t>A registration in the CRI Scheme Numbers registry does not imply that
a URI scheme under this name exists or has been registered in the
Uniform Resource Identifier (URI) Schemes registry -- it essentially
is only providing an integer identifier for an otherwise uninterpreted
text string.</t>
          <t>Any questions or issues that might interest a wider audience might be
raised by the expert on the core-parameters@ietf.org mailing list for
a time-limited discussion.</t>
        </section>
        <section anchor="structure-of-entries">
          <name>Structure of Entries</name>
          <t>Each entry in the registry must include:</t>
          <dl newline="true">
            <dt>CRI scheme number:</dt>
            <dd>
              <t>An unsigned integer unique in this registry</t>
            </dd>
            <dt>URI scheme name:</dt>
            <dd>
              <t>a text string that would be acceptable for registration as a URI
Scheme Name in the Uniform Resource Identifier (URI) Schemes
registry</t>
            </dd>
            <dt>Reference:</dt>
            <dd>
              <t>a reference to a document, if available, or the registrant</t>
            </dd>
          </dl>
        </section>
        <section anchor="initial-registrations">
          <name>Initial Registrations</name>
          <t>The initial registrations for the CRI Scheme Numbers registry are
provided in <xref target="tab-numbers"/> in <xref target="sec-numbers"/>.</t>
        </section>
      </section>
      <section anchor="upd">
        <name>Update to "Uniform Resource Identifier (URI) Schemes" Registry</name>
        <t>RFC 7595 <xref target="BCP35"/> is updated to add the following note in the "Uniform
Resource Identifier (URI) Schemes" Registry <xref target="IANA.uri-schemes"/>:</t>
        <blockquote>
          <t>The CRI Scheme Numbers Registry registers numeric identifiers for what
essentially are URI Scheme names.
Registrants for the Uniform Resource Identifier (URI) Schemes Registry
are requested to make a parallel registration in the CRI Scheme
Numbers registry.
The number for this registration will be assigned by the Designated
Expert for that registry.</t>
        </blockquote>
      </section>
      <section anchor="cri-iana">
        <name>CBOR Diagnostic Notation Application-extension Identifiers Registry</name>
        <t>In the "Application-Extension Identifiers" registry in the "CBOR
Diagnostic Notation" registry group [IANA.cbor-diagnostic-notation],
IANA is requested to register the application-extension identifier
<tt>cri</tt> as described in <xref target="tab-iana"/> and defined in <xref target="edn-cri"/>.</t>
        <table anchor="tab-iana">
          <name>CBOR Extended Diagnostic Notation (EDN) Application-extension Identifier for CRI</name>
          <thead>
            <tr>
              <th align="left">Application-extension Identifier</th>
              <th align="left">Description</th>
              <th align="left">Change Controller</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">cri</td>
              <td align="left">Constrained Resource Identifier</td>
              <td align="left">IETF</td>
              <td align="left">RFC-XXXX, <xref target="edn-cri"/></td>
            </tr>
          </tbody>
        </table>
        <t><cref anchor="replace-xxxx_1">RFC Ed.: throughout this section, please replace
RFC-XXXX with the RFC number of this specification and remove this
note.</cref></t>
      </section>
      <section anchor="coap-option-numbers-registry">
        <name>CoAP Option Numbers Registry</name>
        <t>In the "CoAP Option Numbers" registry in the "CoRE Parameters" registry group <xref target="IANA.core-parameters"/>,
IANA is requested to register the CoAP Option Numbers
as described in <xref target="tab-iana-options"/> and defined in <xref target="coap-options"/>.</t>
        <table anchor="tab-iana-options">
          <name>New CoAP Option Numbers</name>
          <thead>
            <tr>
              <th align="left">No.</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD235</td>
              <td align="left">Proxy-Cri</td>
              <td align="left">RFC-XXXX</td>
            </tr>
            <tr>
              <td align="left">TBD239</td>
              <td align="left">Proxy-Scheme-Number</td>
              <td align="left">RFC-XXXX</td>
            </tr>
          </tbody>
        </table>
        <t><cref anchor="replace-xxxx_2">RFC Ed.: throughout this section, please replace
RFC-XXXX with the RFC number of this specification and remove this
note.</cref></t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <referencegroup anchor="STD66" target="https://www.rfc-editor.org/info/std66">
          <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986">
            <front>
              <title>Uniform Resource Identifier (URI): Generic Syntax</title>
              <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
              <author fullname="R. Fielding" initials="R." surname="Fielding"/>
              <author fullname="L. Masinter" initials="L." surname="Masinter"/>
              <date month="January" year="2005"/>
              <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. [STANDARDS-TRACK]</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="66"/>
            <seriesInfo name="RFC" value="3986"/>
            <seriesInfo name="DOI" value="10.17487/RFC3986"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC3987">
          <front>
            <title>Internationalized Resource Identifiers (IRIs)</title>
            <author fullname="M. Duerst" initials="M." surname="Duerst"/>
            <author fullname="M. Suignard" initials="M." surname="Suignard"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>This document defines a new protocol element, the Internationalized Resource Identifier (IRI), as a complement of the Uniform Resource Identifier (URI). An IRI is a sequence of characters from the Universal Character Set (Unicode/ISO 10646). A mapping from IRIs to URIs is defined, which means that IRIs can be used instead of URIs, where appropriate, to identify resources.</t>
              <t>The approach of defining a new protocol element was chosen instead of extending or changing the definition of URIs. This was done in order to allow a clear distinction and to avoid incompatibilities with existing software. Guidelines are provided for the use and deployment of IRIs in various protocols, formats, and software components that currently deal with URIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3987"/>
          <seriesInfo name="DOI" value="10.17487/RFC3987"/>
        </reference>
        <reference anchor="RFC6874">
          <front>
            <title>Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes how the zone identifier of an IPv6 scoped address, defined as in the IPv6 Scoped Address Architecture (RFC 4007), can be represented in a literal IPv6 address and in a Uniform Resource Identifier that includes such a literal address. It updates the URI Generic Syntax specification (RFC 3986) accordingly.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6874"/>
          <seriesInfo name="DOI" value="10.17487/RFC6874"/>
        </reference>
        <referencegroup anchor="BCP35" target="https://www.rfc-editor.org/info/bcp35">
          <reference anchor="RFC7595" target="https://www.rfc-editor.org/info/rfc7595">
            <front>
              <title>Guidelines and Registration Procedures for URI Schemes</title>
              <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
              <author fullname="T. Hansen" initials="T." surname="Hansen"/>
              <author fullname="T. Hardie" initials="T." surname="Hardie"/>
              <date month="June" year="2015"/>
              <abstract>
                <t>This document updates the guidelines and recommendations, as well as the IANA registration processes, for the definition of Uniform Resource Identifier (URI) schemes. It obsoletes RFC 4395.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="35"/>
            <seriesInfo name="RFC" value="7595"/>
            <seriesInfo name="DOI" value="10.17487/RFC7595"/>
          </reference>
        </referencegroup>
        <reference anchor="IANA.uri-schemes" target="http://www.iana.org/assignments/uri-schemes">
          <front>
            <title>Uniform Resource Identifier (URI) Schemes</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <referencegroup anchor="BCP26" target="https://www.rfc-editor.org/info/bcp26">
          <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
            <front>
              <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
              <author fullname="M. Cotton" initials="M." surname="Cotton"/>
              <author fullname="B. Leiba" initials="B." surname="Leiba"/>
              <author fullname="T. Narten" initials="T." surname="Narten"/>
              <date month="June" year="2017"/>
              <abstract>
                <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
                <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
                <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="26"/>
            <seriesInfo name="RFC" value="8126"/>
            <seriesInfo name="DOI" value="10.17487/RFC8126"/>
          </reference>
        </referencegroup>
        <reference anchor="IANA.core-parameters" target="http://www.iana.org/assignments/core-parameters">
          <front>
            <title>Constrained RESTful Environments (CoRE) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="Unicode" target="https://www.unicode.org/versions/Unicode13.0.0/">
          <front>
            <title>The Unicode Standard, Version 13.0.0</title>
            <author>
              <organization>The Unicode Consortium</organization>
            </author>
            <date year="2020" month="March"/>
          </front>
          <seriesInfo name="ISBN" value="978-1-936213-26-9"/>
        </reference>
        <referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/std94">
          <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
            <front>
              <title>Concise Binary Object Representation (CBOR)</title>
              <author fullname="C. Bormann" initials="C." surname="Bormann"/>
              <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
              <date month="December" year="2020"/>
              <abstract>
                <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
                <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="94"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC9165">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, provides "control operators" as its main language extension point.</t>
              <t>The present document defines a number of control operators that were not yet ready at the time RFC 8610 was completed:,, and for the construction of constants; / for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and for indicating the use of a non-basic feature in an instance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9165"/>
          <seriesInfo name="DOI" value="10.17487/RFC9165"/>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
            <front>
              <title>Key words for use in RFCs to Indicate Requirement Levels</title>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <date month="March" year="1997"/>
              <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. 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="14"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
          </reference>
          <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
            <front>
              <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
              <author fullname="B. Leiba" initials="B." surname="Leiba"/>
              <date month="May" year="2017"/>
              <abstract>
                <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
          </reference>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <referencegroup anchor="STD97" target="https://www.rfc-editor.org/info/std97">
          <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110">
            <front>
              <title>HTTP Semantics</title>
              <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
              <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
              <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
              <date month="June" year="2022"/>
              <abstract>
                <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
                <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="97"/>
            <seriesInfo name="RFC" value="9110"/>
            <seriesInfo name="DOI" value="10.17487/RFC9110"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier. With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance. With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA). This document obsoletes both RFCs 2141 and 3406.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8141"/>
          <seriesInfo name="DOI" value="10.17487/RFC8141"/>
        </reference>
        <reference anchor="RFC8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <referencegroup anchor="BCP190" target="https://www.rfc-editor.org/info/bcp190">
          <reference anchor="RFC8820" target="https://www.rfc-editor.org/info/rfc8820">
            <front>
              <title>URI Design and Ownership</title>
              <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
              <date month="June" year="2020"/>
              <abstract>
                <t>Section 1.1.1 of RFC 3986 defines URI syntax as "a federated and extensible naming system wherein each scheme's specification may further restrict the syntax and semantics of identifiers using that scheme." In other words, the structure of a URI is defined by its scheme. While it is common for schemes to further delegate their substructure to the URI's owner, publishing independent standards that mandate particular forms of substructure in URIs is often problematic.</t>
                <t>This document provides guidance on the specification of URI substructure in standards.</t>
                <t>This document obsoletes RFC 7320 and updates RFC 3986.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="190"/>
            <seriesInfo name="RFC" value="8820"/>
            <seriesInfo name="DOI" value="10.17487/RFC8820"/>
          </reference>
        </referencegroup>
        <reference anchor="W3C.REC-html52-20171214" target="https://www.w3.org/TR/2017/REC-html52-20171214/">
          <front>
            <title>HTML 5.2</title>
            <author fullname="Alex Danilo" role="editor"/>
            <author fullname="Arron Eicholz" role="editor"/>
            <author fullname="Sangwhan Moon" role="editor"/>
            <author fullname="Steve Faulkner" role="editor"/>
            <author fullname="Travis Leithead" role="editor"/>
            <date day="14" month="December" year="2017"/>
          </front>
          <seriesInfo name="W3C REC" value="REC-html52-20171214"/>
          <seriesInfo name="W3C" value="REC-html52-20171214"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-literals">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN): Application-Oriented Literals, ABNF, and Media Type</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="1" month="February" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation, CBOR (STD 94, RFC 8949),
   defines a "diagnostic notation" in order to be able to converse about
   CBOR data items without having to resort to binary data.

   This document specifies how to add application-oriented extensions to
   the diagnostic notation.  It then defines two such extensions for
   text representations of epoch-based date/times and of IP addresses
   and prefixes (RFC 9164).

   A few further additions close some gaps in usability.  To facilitate
   tool interoperation, this document specifies a formal ABNF definition
   for extended diagnostic notation (EDN) that accommodates application-
   oriented literals.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-08"/>
        </reference>
        <reference anchor="I-D.carpenter-6man-rfc6874bis">
          <front>
            <title>Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</title>
            <author fullname="Brian E. Carpenter" initials="B. E." surname="Carpenter">
         </author>
            <author fullname="Stuart Cheshire" initials="S." surname="Cheshire">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Bob Hinden" initials="R. M." surname="Hinden">
              <organization>Check Point Software</organization>
            </author>
            <date day="8" month="February" year="2022"/>
            <abstract>
              <t>   This document describes how the zone identifier of an IPv6 scoped
   address, defined as &lt;zone_id&gt; in the IPv6 Scoped Address Architecture
   (RFC 4007), can be represented in a literal IPv6 address and in a
   Uniform Resource Identifier that includes such a literal address.  It
   updates the URI Generic Syntax and Internationalized Resource
   Identifier specifications (RFC 3986, RFC 3987) accordingly, and
   obsoletes RFC 6874.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-carpenter-6man-rfc6874bis-03"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC4180">
          <front>
            <title>Common Format and MIME Type for Comma-Separated Values (CSV) Files</title>
            <author fullname="Y. Shafranovich" initials="Y." surname="Shafranovich"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This RFC documents the format used for Comma-Separated Values (CSV) files and registers the associated MIME type "text/csv". This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4180"/>
          <seriesInfo name="DOI" value="10.17487/RFC4180"/>
        </reference>
      </references>
    </references>
    <?line 1396?>

<section anchor="sec-numbers">
      <name>Mapping Scheme Numbers to Scheme Names</name>
      <t><cref anchor="replace-xxxx_3">RFC Ed.: throughout this section, please replace
RFC-XXXX with the RFC number of this specification and remove this
note.</cref></t>
      <t><xref target="tab-numbers"/> defines the initial mapping from CRI scheme numbers to
URI scheme names.</t>
      <table anchor="tab-numbers">
        <name>Mapping Scheme Numbers to Scheme Names</name>
        <thead>
          <tr>
            <th align="left">CRI scheme number</th>
            <th align="left">URI scheme name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0</td>
            <td align="left">coap</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">coaps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">http</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">https</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4</td>
            <td align="left">urn</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">did</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6</td>
            <td align="left">coap+tcp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7</td>
            <td align="left">coaps+tcp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8</td>
            <td align="left">coap+ws</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9</td>
            <td align="left">coaps+ws</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1059</td>
            <td align="left">ms-gamingoverlay</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1165</td>
            <td align="left">snmp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1220</td>
            <td align="left">cast</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1242</td>
            <td align="left">openid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1319</td>
            <td align="left">z39.50</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1328</td>
            <td align="left">dweb</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1466</td>
            <td align="left">psyc</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1528</td>
            <td align="left">ms-people</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1578</td>
            <td align="left">jar</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1658</td>
            <td align="left">wpid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1762</td>
            <td align="left">payment</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1895</td>
            <td align="left">news</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1905</td>
            <td align="left">irc6</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1926</td>
            <td align="left">turns</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1946</td>
            <td align="left">data</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">1982</td>
            <td align="left">ens</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2154</td>
            <td align="left">things</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2284</td>
            <td align="left">resource</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2326</td>
            <td align="left">skype</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2406</td>
            <td align="left">videotex</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2442</td>
            <td align="left">dpp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2747</td>
            <td align="left">upt</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2754</td>
            <td align="left">platform</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2790</td>
            <td align="left">ed2k</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2796</td>
            <td align="left">taler</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2806</td>
            <td align="left">fm</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">2945</td>
            <td align="left">ms-newsandinterests</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3005</td>
            <td align="left">xmlrpc.beep</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3018</td>
            <td align="left">ark</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3119</td>
            <td align="left">wss</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3143</td>
            <td align="left">tel</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3255</td>
            <td align="left">vscode-insiders</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3342</td>
            <td align="left">geo</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3348</td>
            <td align="left">rtmfp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3358</td>
            <td align="left">mtqp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3365</td>
            <td align="left">filesystem</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3503</td>
            <td align="left">proxy</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3524</td>
            <td align="left">sms</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3634</td>
            <td align="left">jms</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3646</td>
            <td align="left">mid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3690</td>
            <td align="left">ms-calculator</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3775</td>
            <td align="left">gitoid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3783</td>
            <td align="left">calculator</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3786</td>
            <td align="left">about</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3795</td>
            <td align="left">facetime</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3837</td>
            <td align="left">ymsgr</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3886</td>
            <td align="left">dict</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3906</td>
            <td align="left">ldaps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3920</td>
            <td align="left">rtmp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">3959</td>
            <td align="left">ms-settings-proximity</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4053</td>
            <td align="left">fax</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4102</td>
            <td align="left">ms-drive-to</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4153</td>
            <td align="left">res</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4183</td>
            <td align="left">webcal</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4193</td>
            <td align="left">embedded</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4315</td>
            <td align="left">xftp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4327</td>
            <td align="left">browserext</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4355</td>
            <td align="left">session</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4373</td>
            <td align="left">dav</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4419</td>
            <td align="left">ipps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4515</td>
            <td align="left">uuid-in-package</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4549</td>
            <td align="left">dhttp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4559</td>
            <td align="left">web3</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4590</td>
            <td align="left">iris.lwz</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4598</td>
            <td align="left">diaspora</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4619</td>
            <td align="left">rtsps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4674</td>
            <td align="left">beshare</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4709</td>
            <td align="left">gtalk</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4714</td>
            <td align="left">hxxps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4747</td>
            <td align="left">xrcp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4882</td>
            <td align="left">sgn</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4929</td>
            <td align="left">eid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">4951</td>
            <td align="left">submit</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5099</td>
            <td align="left">ar</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5109</td>
            <td align="left">ms-settings-airplanemode</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5134</td>
            <td align="left">steam</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5150</td>
            <td align="left">adt</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5152</td>
            <td align="left">ms-appinstaller</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5188</td>
            <td align="left">bb</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5217</td>
            <td align="left">udp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5296</td>
            <td align="left">example</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5347</td>
            <td align="left">ms-remotedesktop</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5410</td>
            <td align="left">ms-sttoverlay</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5425</td>
            <td align="left">irc</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5472</td>
            <td align="left">sieve</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5477</td>
            <td align="left">machineProvisioningProgressReporter</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5480</td>
            <td align="left">lvlt</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5492</td>
            <td align="left">sftp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5536</td>
            <td align="left">ms-excel</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5557</td>
            <td align="left">dlna-playcontainer</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5705</td>
            <td align="left">go</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5717</td>
            <td align="left">fido</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5728</td>
            <td align="left">chrome</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5823</td>
            <td align="left">shc</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5825</td>
            <td align="left">swidpath</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5883</td>
            <td align="left">microsoft.windows.camera.picker</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">5990</td>
            <td align="left">crid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6007</td>
            <td align="left">at</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6024</td>
            <td align="left">hcp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6030</td>
            <td align="left">content-type</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6109</td>
            <td align="left">jabber</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6144</td>
            <td align="left">dlna-playsingle</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6189</td>
            <td align="left">ms-spd</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6341</td>
            <td align="left">opaquelocktoken</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6349</td>
            <td align="left">soldat</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6380</td>
            <td align="left">z39.50s</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6388</td>
            <td align="left">ms-media-stream-id</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6411</td>
            <td align="left">ms-mixedrealitycapture</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6462</td>
            <td align="left">quic-transport</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6503</td>
            <td align="left">ham</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6516</td>
            <td align="left">nfs</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6609</td>
            <td align="left">ut2004</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6632</td>
            <td align="left">hydrazone</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6634</td>
            <td align="left">adiumxtra</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6651</td>
            <td align="left">tip</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6658</td>
            <td align="left">lpa</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6730</td>
            <td align="left">cstr</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6755</td>
            <td align="left">ms-settings-screenrotation</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6774</td>
            <td align="left">dab</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6792</td>
            <td align="left">ms-inputapp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6808</td>
            <td align="left">moz</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6840</td>
            <td align="left">acd</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6863</td>
            <td align="left">ms-access</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6883</td>
            <td align="left">im</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6903</td>
            <td align="left">pttp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6924</td>
            <td align="left">teamspeak</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">6992</td>
            <td align="left">payto</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7074</td>
            <td align="left">secret-token</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7126</td>
            <td align="left">iax</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7225</td>
            <td align="left">isostore</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7226</td>
            <td align="left">bitcoincash</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7285</td>
            <td align="left">smb</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7364</td>
            <td align="left">appdata</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7456</td>
            <td align="left">dtn</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7520</td>
            <td align="left">feed</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7667</td>
            <td align="left">ssh</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7743</td>
            <td align="left">ms-transit-to</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7809</td>
            <td align="left">ms-help</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7812</td>
            <td align="left">vscode</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7856</td>
            <td align="left">apt</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7868</td>
            <td align="left">ms-settings-notifications</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7874</td>
            <td align="left">shttp (OBSOLETE)</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7913</td>
            <td align="left">ethereum</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7923</td>
            <td align="left">tv</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">7942</td>
            <td align="left">microsoft.windows.camera.multipicker</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8041</td>
            <td align="left">msnim</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8085</td>
            <td align="left">ms-remotedesktop-launch</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8093</td>
            <td align="left">spiffe</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8099</td>
            <td align="left">redis</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8159</td>
            <td align="left">z39.50r</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8251</td>
            <td align="left">brid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8300</td>
            <td align="left">tftp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8387</td>
            <td align="left">content</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8454</td>
            <td align="left">wais</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8506</td>
            <td align="left">view-source</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8519</td>
            <td align="left">soap.beep</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8577</td>
            <td align="left">attachment</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8601</td>
            <td align="left">gopher</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8687</td>
            <td align="left">ircs</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8713</td>
            <td align="left">callto</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8765</td>
            <td align="left">bolo</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8766</td>
            <td align="left">notes</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8775</td>
            <td align="left">ipn</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">8830</td>
            <td align="left">ms-infopath</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9075</td>
            <td align="left">ms-settings</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9136</td>
            <td align="left">ms-useractivityset</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9154</td>
            <td align="left">modem</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9186</td>
            <td align="left">bitcoin</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9198</td>
            <td align="left">ms-settings-privacy</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9204</td>
            <td align="left">cap</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9278</td>
            <td align="left">com-eventbrite-attendee</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9312</td>
            <td align="left">pkcs11</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9318</td>
            <td align="left">ipp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9338</td>
            <td align="left">rediss</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9444</td>
            <td align="left">grd</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9453</td>
            <td align="left">ms-screensketch</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9487</td>
            <td align="left">matrix</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9520</td>
            <td align="left">xcon-userid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9535</td>
            <td align="left">sips</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9544</td>
            <td align="left">simpleledger</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9585</td>
            <td align="left">mvn</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9770</td>
            <td align="left">keyparc</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9805</td>
            <td align="left">magnet</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9816</td>
            <td align="left">vsls</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9859</td>
            <td align="left">drm</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9875</td>
            <td align="left">hcap</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9910</td>
            <td align="left">wtai</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9965</td>
            <td align="left">num</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">9981</td>
            <td align="left">ms-settings-language</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10119</td>
            <td align="left">imap</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10147</td>
            <td align="left">query</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10176</td>
            <td align="left">ves</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10196</td>
            <td align="left">acr</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10225</td>
            <td align="left">barion</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10229</td>
            <td align="left">acct</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10238</td>
            <td align="left">palm</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10241</td>
            <td align="left">ocf</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10247</td>
            <td align="left">lid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10317</td>
            <td align="left">h323</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10327</td>
            <td align="left">aim</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10333</td>
            <td align="left">turn</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10361</td>
            <td align="left">ms-stickers</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10373</td>
            <td align="left">ms-settings-location</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10380</td>
            <td align="left">dvb</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10467</td>
            <td align="left">xcon</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10518</td>
            <td align="left">ms-screenclip</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10551</td>
            <td align="left">pop</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10583</td>
            <td align="left">dat</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10591</td>
            <td align="left">ms-settings-nfctransactions</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10640</td>
            <td align="left">ms-settings-cloudstorage</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10687</td>
            <td align="left">afs</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10740</td>
            <td align="left">mqtt</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10744</td>
            <td align="left">gizmoproject</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10831</td>
            <td align="left">amss</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10868</td>
            <td align="left">mailserver</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10926</td>
            <td align="left">ni</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">10995</td>
            <td align="left">telnet</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11055</td>
            <td align="left">gg</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11060</td>
            <td align="left">blob</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11072</td>
            <td align="left">ms-settings-emailandaccounts</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11130</td>
            <td align="left">ms-project</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11255</td>
            <td align="left">xri</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11315</td>
            <td align="left">msrp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11351</td>
            <td align="left">ms-settings-connectabledevices</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11393</td>
            <td align="left">cabal</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11428</td>
            <td align="left">nih</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11467</td>
            <td align="left">ms-whiteboard</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11533</td>
            <td align="left">smp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11537</td>
            <td align="left">vnc</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11583</td>
            <td align="left">graph</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11645</td>
            <td align="left">dvx</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11718</td>
            <td align="left">lorawan</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11742</td>
            <td align="left">lastfm</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11799</td>
            <td align="left">w3</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11804</td>
            <td align="left">mumble</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11824</td>
            <td align="left">feedready</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11857</td>
            <td align="left">microsoft.windows.camera</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11892</td>
            <td align="left">wcr</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11945</td>
            <td align="left">ms-mobileplans</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11950</td>
            <td align="left">ms-settings-lock</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11962</td>
            <td align="left">ws</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">11999</td>
            <td align="left">rtspu</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12029</td>
            <td align="left">ms-settings-displays-topology</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12068</td>
            <td align="left">file</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12102</td>
            <td align="left">mailto</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12174</td>
            <td align="left">ms-launchremotedesktop</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12242</td>
            <td align="left">cvs</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12337</td>
            <td align="left">mms</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12400</td>
            <td align="left">ssb</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12422</td>
            <td align="left">iris.xpc</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12458</td>
            <td align="left">starknet</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12478</td>
            <td align="left">qb</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12493</td>
            <td align="left">mss</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12502</td>
            <td align="left">ventrilo</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12525</td>
            <td align="left">ms-lockscreencomponent-config</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12566</td>
            <td align="left">icap</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12569</td>
            <td align="left">mupdate</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12599</td>
            <td align="left">paparazzi</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12634</td>
            <td align="left">fish</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12644</td>
            <td align="left">sip</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12699</td>
            <td align="left">mt</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12705</td>
            <td align="left">acap</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12718</td>
            <td align="left">casts</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12726</td>
            <td align="left">reload</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12732</td>
            <td align="left">spotify</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12806</td>
            <td align="left">fuchsia-pkg</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12823</td>
            <td align="left">ms-gamebarservices</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12876</td>
            <td align="left">hyper</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">12932</td>
            <td align="left">dns</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13014</td>
            <td align="left">doi</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13026</td>
            <td align="left">ms-settings-power</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13068</td>
            <td align="left">git</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13094</td>
            <td align="left">openpgp4fpr</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13098</td>
            <td align="left">ms-secondary-screen-controller</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13228</td>
            <td align="left">mvrps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13285</td>
            <td align="left">snews</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13340</td>
            <td align="left">smtp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13348</td>
            <td align="left">pack</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13362</td>
            <td align="left">teliaeid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13372</td>
            <td align="left">mongodb</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13404</td>
            <td align="left">afp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13440</td>
            <td align="left">msrps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13442</td>
            <td align="left">ldap</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13451</td>
            <td align="left">mvrp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13499</td>
            <td align="left">nntp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13608</td>
            <td align="left">onenote</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13650</td>
            <td align="left">sarif</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13680</td>
            <td align="left">elsi</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13829</td>
            <td align="left">otpauth</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13846</td>
            <td align="left">info</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13862</td>
            <td align="left">aaa</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13923</td>
            <td align="left">svn</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">13986</td>
            <td align="left">iris</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14010</td>
            <td align="left">lbry</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14034</td>
            <td align="left">ms-search</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14090</td>
            <td align="left">ms-browser-extension</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14153</td>
            <td align="left">maps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14162</td>
            <td align="left">swid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14168</td>
            <td align="left">ms-officeapp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14180</td>
            <td align="left">ms-settings-bluetooth</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14310</td>
            <td align="left">ms-enrollment</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14347</td>
            <td align="left">dntp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14364</td>
            <td align="left">ms-walk-to</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14366</td>
            <td align="left">ms-getoffice</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14367</td>
            <td align="left">thismessage</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14460</td>
            <td align="left">message</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14477</td>
            <td align="left">prospero</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14526</td>
            <td align="left">aaas</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14595</td>
            <td align="left">market</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14627</td>
            <td align="left">stun</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14667</td>
            <td align="left">chrome-extension</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14830</td>
            <td align="left">itms</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14860</td>
            <td align="left">ms-whiteboard-cmd</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14867</td>
            <td align="left">wifi</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14868</td>
            <td align="left">icon</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14878</td>
            <td align="left">ftp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14901</td>
            <td align="left">stuns</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14906</td>
            <td align="left">mqtts</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14936</td>
            <td align="left">ms-settings-workplace</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14962</td>
            <td align="left">tn3270</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14972</td>
            <td align="left">pres</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">14982</td>
            <td align="left">p1</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15061</td>
            <td align="left">android</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15118</td>
            <td align="left">simplex</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15163</td>
            <td align="left">ms-visio</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15202</td>
            <td align="left">cid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15206</td>
            <td align="left">unreal</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15230</td>
            <td align="left">tool</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15254</td>
            <td align="left">ms-secondary-screen-setup</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15267</td>
            <td align="left">rtsp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15306</td>
            <td align="left">xfire</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15358</td>
            <td align="left">xmpp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15361</td>
            <td align="left">ms-settings-cellular</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15579</td>
            <td align="left">v-event</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15639</td>
            <td align="left">iris.beep</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15641</td>
            <td align="left">wyciwyg</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15645</td>
            <td align="left">ms-meetnow</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15679</td>
            <td align="left">ms-search-repair</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15773</td>
            <td align="left">ms-settings-camera</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15776</td>
            <td align="left">ms-virtualtouchpad</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15805</td>
            <td align="left">xmlrpc.beeps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15972</td>
            <td align="left">ipfs</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">15994</td>
            <td align="left">ms-settings-wifi</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16051</td>
            <td align="left">aw</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16069</td>
            <td align="left">first-run-pen-experience</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16079</td>
            <td align="left">oid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16134</td>
            <td align="left">iris.xpcs</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16138</td>
            <td align="left">drop</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16194</td>
            <td align="left">ms-publisher</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16281</td>
            <td align="left">leaptofrogans</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16292</td>
            <td align="left">rmi</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16300</td>
            <td align="left">soap.beeps</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16377</td>
            <td align="left">tag</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16585</td>
            <td align="left">ms-word</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16632</td>
            <td align="left">onenote-cmd</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16645</td>
            <td align="left">ms-powerpoint</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16728</td>
            <td align="left">hxxp</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16729</td>
            <td align="left">secondlife</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16884</td>
            <td align="left">rsync</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16918</td>
            <td align="left">vemmi</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">16933</td>
            <td align="left">ipns</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17039</td>
            <td align="left">swh</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17068</td>
            <td align="left">pwid</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17097</td>
            <td align="left">dtmi</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17134</td>
            <td align="left">dis</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17170</td>
            <td align="left">iotdisco</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17175</td>
            <td align="left">ms-restoretabcompanion</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17264</td>
            <td align="left">service</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17315</td>
            <td align="left">finger</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17361</td>
            <td align="left">web+ap</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">17381</td>
            <td align="left">ms-eyecontrolspeech</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
        </tbody>
      </table>
      <t>The assignments from this table can be extracted from the XML form of
this document (when stored in a file "this.xml") into CSV form
<xref target="RFC4180"/> using this short Ruby program:</t>
      <sourcecode type="ruby"><![CDATA[
require 'rexml/document'; include REXML
XPath.each(Document.new(File.read("this.xml")),"/rfc/back//tr") {|r|
  puts XPath.each(r,"td").map{|d|d.text()}[0..1].join(",")}
]]></sourcecode>
    </section>
    <section anchor="the-small-print">
      <name>The Small Print</name>
      <t>This appendix lists a few corner cases of URI semantics that
implementers of CRIs need to be aware of, but that are not
representative of the normal operation of CRIs.</t>
      <ol spacing="normal" type="SP%d." group="SP"><li anchor="sp-initial-empty">
          <t>Initial (Lone/Leading) Empty Path Segments:</t>
        </li>
      </ol>
      <ul spacing="normal">
        <li>
          <t><em>Lone empty path segments:</em>
  As per <xref target="STD66"/>, <tt>s://x</tt> is distinct from <tt>s://x/</tt> -- i.e., a URI
  with an empty path (<tt>[]</tt> in CRI) is different from one with a lone
  empty path segment (<tt>[""]</tt>).
  However, in HTTP and CoAP, they are implicitly aliased (for CoAP, in
  item 8 of <xref section="6.4" sectionFormat="of" target="RFC7252"/>).
  As per item 7 of <xref section="6.5" sectionFormat="of" target="RFC7252"/>, recomposition of a URI
  without Uri-Path Options from the other URI-related CoAP Options
  produces <tt>s://x/</tt>, not <tt>s://x</tt> -- CoAP prefers the lone empty path
  segment form.
  Similarly, after discussing HTTP semantics, Section <xref target="RFC3986" section="6.2.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/> states:</t>
        </li>
      </ul>
      <blockquote>
        <t>In general, a URI that uses the generic syntax for authority with an
  empty path should be normalized to a path of "/".</t>
      </blockquote>
      <ul spacing="normal">
        <li>
          <t><em>Leading empty path segments without authority</em>:
  Somewhat related, note also that URIs and URI references that do not
  carry an authority cannot represent initial empty path segments
  (i.e., that are followed by further path segments): <tt>s://x//foo</tt>
  works, but in a <tt>s://foo</tt> URI or an (absolute-path) URI reference of
  the form <tt>//foo</tt> the double slash would be mis-parsed as leading in
  to an authority.</t>
        </li>
      </ul>
      <ol spacing="normal" type="SP%d." group="SP"><li anchor="sp-constraints">
          <t>Constraints (<xref target="constraints"/>) of CRIs/basic CRIs  </t>
          <t>
While most URIs in everyday use can be converted to CRIs and back to URIs
matching the input after syntax-based normalization of the URI,
these URIs illustrate the constraints by example:  </t>
          <ul spacing="normal">
            <li>
              <t><tt>https://host%ffname</tt>, <tt>https://example.com/x?data=%ff</tt>      </t>
              <t>
All URI components must, after percent decoding, be valid UTF-8 encoded text.
Bytes that are not valid UTF-8 show up, for example, in BitTorrent web seeds.
<!-- <https://www.bittorrent.org/beps/bep_0017.html>, not sure this warrants an informative reference -->
              </t>
            </li>
            <li>
              <t><tt>https://example.com/component%3bone;component%3btwo</tt>, <tt>http://example.com/component%3dequals</tt>      </t>
              <t>
While delimiters can be used in an escaped and unescaped form in URIs with generally distinct meanings,
basic CRIs (i.e., without percent-encoded text <xref target="pet"/>) only support one escapable delimiter character per component,
which is the delimiter by which the component is split up in the CRI.      </t>
              <t>
Note that the separators <tt>.</tt> (for authority parts), <tt>/</tt> (for paths), <tt>&amp;</tt> (for query parameters)
are special in that they are syntactic delimiters of their respective components in CRIs.
Thus, the following examples <em>are</em> convertible to basic CRIs:      </t>
              <t><tt>https://interior%2edot/</tt>      </t>
              <t><tt>https://example.com/path%2fcomponent/second-component</tt>      </t>
              <t><tt>https://example.com/x?ampersand=%26&amp;questionmark=?</tt></t>
            </li>
            <li>
              <t><tt>https://alice@example.com/</tt>      </t>
              <t>
The user information can be expressed in CRIs if the "userinfo"
feature is present.  The URI <tt>https://@example.com</tt> is
represented as <tt>[-4, [false, "", "example", "com"]]</tt>; the <tt>false</tt>
serves as a marker that the next element is the userinfo.      </t>
              <t>
The rules do not cater for unencoded ":" in userinfo, which is
commonly considered a deprecated inclusion of a literal password.</t>
            </li>
          </ul>
        </li>
      </ol>
    </section>
    <section anchor="edn-cri">
      <name>CBOR Extended Diagnostic Notation (EDN): The "cri" Extension</name>
      <t><xref target="I-D.ietf-cbor-edn-literals"/> more rigorously defines and further extends the CBOR Extended
Diagnostic Notation (EDN), as originally introduced in Section <xref target="RFC8949" section="8" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> and extended in <xref section="G" sectionFormat="of" target="RFC8610"/>.
Among others, it provides an extension point for
"application-extension identifiers" that can be used to notate CBOR
data items in application-specific ways.</t>
      <t>The present document defines and registers (<xref target="cri-iana"/>) the
application-extension identifier "<tt>cri</tt>", which can be used to notate
an EDN literal for a CRI reference as defined in this document.</t>
      <t>The text of the literal is a URI Reference as per <xref target="STD66"/> or an IRI
Reference as per <xref target="RFC3987"/>.</t>
      <t>The value of the literal is a CRI reference that can be converted to
the text of the literal using the procedure of <xref target="cri-to-uri"/>.
Note that there may be more than one CRI reference that can be
converted to the URI/IRI reference given; implementations are expected
to favor the simplest variant available and make non-surprising
choices otherwise.</t>
      <t>As an example, the CBOR diagnostic notation</t>
      <sourcecode type="cbor-diag"><![CDATA[
cri'https://example.com/bottarga/shaved'
]]></sourcecode>
      <t>is equivalent to</t>
      <sourcecode type="cbor-diag"><![CDATA[
[-4, ["example", "com"], ["bottarga", "shaved"]]
]]></sourcecode>
      <t>See <xref target="cri-grammar"/> for an ABNF definition for the content of <tt>cri</tt> literals.</t>
      <section anchor="cri-grammar">
        <name>cri: ABNF Definition of URI Representation of a CRI</name>
        <t>The syntax of the content of <tt>cri</tt> literals can be described by the
ABNF for <tt>URI-reference</tt> in Section <xref target="RFC3986" section="4.1" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/> with certain
re-arrangements taken from <xref section="Figure 5" relative="#figure-5" sectionFormat="bare" target="I-D.ietf-cbor-edn-literals"/> of <xref target="I-D.ietf-cbor-edn-literals"/>;
these are reproduced in <xref target="abnf-grammar-cri"/>.
If the content is not ASCII only (i.e., for IRIs), first apply
<xref section="3.1" sectionFormat="of" target="RFC3987"/> and apply this grammar to the result.</t>
        <figure anchor="abnf-grammar-cri">
          <name>ABNF Definition of URI Representation of a CRI</name>
          <sourcecode type="abnf" name="cbor-edn-cri.abnf"><![CDATA[
app-string-cri = URI-reference
; ABNF from RFC 3986:

URI           = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

hier-part     = "//" authority path-abempty
                 / path-absolute
                 / path-rootless
                 / path-empty

URI-reference = URI / relative-ref

absolute-URI  = scheme ":" hier-part [ "?" query ]

relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

relative-part = "//" authority path-abempty
                 / path-absolute
                 / path-noscheme
                 / path-empty

scheme        = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

authority     = [ userinfo "@" ] host [ ":" port ]
userinfo      = *( unreserved / pct-encoded / sub-delims / ":" )
host          = IP-literal / IPv4address / reg-name
port          = *DIGIT

IP-literal    = "[" ( IPv6address / IPvFuture  ) "]"

IPvFuture     = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )

; Use IPv6address, h16, ls32, IPv4adress, dec-octet as re-arranged
; for PEG Compatibility in Figure 5 of [I-D.ietf-cbor-edn-literals]:

IPv6address   =                            6( h16 ":" ) ls32
              /                       "::" 5( h16 ":" ) ls32
              / [ h16               ] "::" 4( h16 ":" ) ls32
              / [ h16 *1( ":" h16 ) ] "::" 3( h16 ":" ) ls32
              / [ h16 *2( ":" h16 ) ] "::" 2( h16 ":" ) ls32
              / [ h16 *3( ":" h16 ) ] "::"    h16 ":"   ls32
              / [ h16 *4( ":" h16 ) ] "::"              ls32
              / [ h16 *5( ":" h16 ) ] "::"              h16
              / [ h16 *6( ":" h16 ) ] "::"

h16           = 1*4HEXDIG
ls32          = ( h16 ":" h16 ) / IPv4address
IPv4address   = dec-octet "." dec-octet "." dec-octet "." dec-octet
dec-octet     = "25" %x30-35         ; 250-255
              / "2" %x30-34 DIGIT    ; 200-249
              / "1" 2DIGIT           ; 100-199
              / %x31-39 DIGIT        ; 10-99
              / DIGIT                ; 0-9
ALPHA         = %x41-5a / %x61-7a
DIGIT         = %x30-39
HEXDIG        = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
; case insensitive matching, i.e., including lower case

reg-name      = *( unreserved / pct-encoded / sub-delims )

path          = path-abempty    ; begins with "/" or is empty
                 / path-absolute   ; begins with "/" but not "//"
                 / path-noscheme   ; begins with a non-colon segment
                 / path-rootless   ; begins with a segment
                 / path-empty      ; zero characters

path-abempty  = *( "/" segment )
path-absolute = "/" [ segment-nz *( "/" segment ) ]
path-noscheme = segment-nz-nc *( "/" segment )
path-rootless = segment-nz *( "/" segment )
path-empty    = 0<pchar>

segment       = *pchar
segment-nz    = 1*pchar
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
                 ; non-zero-length segment without any colon ":"

pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

query         = *( pchar / "/" / "?" )

fragment      = *( pchar / "/" / "?" )

pct-encoded   = "%" HEXDIG HEXDIG

unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
reserved      = gen-delims / sub-delims
gen-delims    = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
                 / "*" / "+" / "," / ";" / "="
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section removeInRFC="true" anchor="change-log">
      <name>Change Log</name>
      <t>Changes from -14 to -15</t>
      <ul spacing="normal">
        <li>
          <t>Make scheme numbers unsigned and map them to negative numbers used
as scheme-id values</t>
        </li>
      </ul>
      <t>Changes from -09 to -14</t>
      <ul spacing="normal">
        <li>
          <t>Editorial changes; move some examples to <xref target="the-small-print"/>, break up
railroad diagram; mention commonalities with (and tiny difference
from) CoAP Options; mention failure of percent-encoding for dots in
host-name components</t>
        </li>
        <li>
          <t>Explicitly mention invalid case in <xref target="naked-rootless"/> (rootless CRIs without
authority that do not have a path component)</t>
        </li>
        <li>
          <t>Generalize <xref target="extending"/>, discuss PET (percent-encoded text) extension in more detail</t>
        </li>
        <li>
          <t>Add registry of URI scheme numbers (<xref target="sec-numbers"/>, <xref target="iana-considerations"/>)</t>
        </li>
        <li>
          <t>Add user information to the authority ("userinfo" feature)</t>
        </li>
        <li>
          <t><xref target="cddl"/>: Use separate rule for CRI, allow <tt>[]</tt> for query in CRI
Reference; generalize scheme numbers, add userinfo; add list of
additional requirements in prose (<xref target="prose"/>)</t>
        </li>
        <li>
          <t>Discuss <xref format="title" target="unprocessable"/> (<xref target="unprocessable"/>)</t>
        </li>
        <li>
          <t>Conversion to URI: Handle <tt>:</tt> in first pathname component of a
CRI-Reference (<xref target="colon"/>)</t>
        </li>
        <li>
          <t>Add Christian Amsüss as contributor</t>
        </li>
        <li>
          <t>Add CBOR EDN application-extension "<tt>cri</tt>" (see <xref target="edn-cri"/> and
<xref target="cri-iana"/>).</t>
        </li>
        <li>
          <t>Add Section on CoAP integration (and new CoAP Options Proxy-Cri and
Proxy-Scheme-Number).</t>
        </li>
      </ul>
      <t>Changes from -08 to -09</t>
      <ul spacing="normal">
        <li>
          <t>Identify more esoteric features with a CDDL ".feature".</t>
        </li>
        <li>
          <t>Clarify that well-formedness requires removing trailing nulls.</t>
        </li>
        <li>
          <t>Fragments can contain PET.</t>
        </li>
        <li>
          <t>Percent-encoded text in PET is treated as byte strings.</t>
        </li>
        <li>
          <t>URIs with an authority but a completely empty path (e.g.,
<tt>http://example.com</tt>): CRIs with an authority component no longer
always produce at least a slash in the path component.  </t>
          <t>
For generic schemes, the conversion of <tt>scheme://example.com</tt> to a
CRI is now possible
because CRI produces a URI with an authority not followed by a slash
following the updated rules of <xref target="cri-to-uri"/>.
Schemes like http and coap do not distinguish between the empty path
and the path containing a single slash when an authority is set (as
recommended in <xref target="STD66"/>).
For these schemes, that equivalence allows implementations to
convert the just-a-slash URI to a CRI with a zero length path array
(which, however, when converted back, does not produce a slash after
the authority).  </t>
          <t>
(Add an appendix "the small print" for more detailed discussion of
pesky corner cases like this.)</t>
        </li>
      </ul>
      <t>Changes from -07 to -08</t>
      <ul spacing="normal">
        <li>
          <t>Fix the encoding of NOAUTH-NOSLASH / NOAUTH-LEADINGSLASH</t>
        </li>
        <li>
          <t>Add URN and DID schemes, add example.</t>
        </li>
        <li>
          <t>Add PET</t>
        </li>
        <li>
          <t>Remove hopeless attempt to encode "remote trailing nulls" rule in
CDDL (which is not a transformation language).</t>
        </li>
      </ul>
      <t>Changes from -06 to -07</t>
      <ul spacing="normal">
        <li>
          <t>More explicitly discuss constraints (<xref target="constraints"/>), add examples (<xref target="sp-constraints"/>).</t>
        </li>
        <li>
          <t>Make CDDL more explicit about special simple values.</t>
        </li>
        <li>
          <t>Lots of gratuitous changes from XML2RFC redefinition of <tt>&lt;tt&gt;</tt>
semantics.</t>
        </li>
      </ul>
      <t>Changes from -05 to -06</t>
      <ul spacing="normal">
        <li>
          <t>rework authority:
          </t>
          <ul spacing="normal">
            <li>
              <t>split reg-names at dots;</t>
            </li>
            <li>
              <t>add optional zone identifiers <xref target="RFC6874"/> to IP addresses</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>Changes from -04 to -05</t>
      <ul spacing="normal">
        <li>
          <t>Simplify CBOR structure.</t>
        </li>
        <li>
          <t>Add implementation status section.</t>
        </li>
      </ul>
      <t>Changes from -03 to -04:</t>
      <ul spacing="normal">
        <li>
          <t>Minor editorial improvements.</t>
        </li>
        <li>
          <t>Renamed path.type/path-type to discard.</t>
        </li>
        <li>
          <t>Renamed option to section, substructured into items.</t>
        </li>
        <li>
          <t>Simplified the table "resolution-variables".</t>
        </li>
        <li>
          <t>Use the CBOR structure inspired by Jim Schaad's proposals.</t>
        </li>
      </ul>
      <t>Changes from -02 to -03:</t>
      <ul spacing="normal">
        <li>
          <t>Expanded the set of supported schemes (#3).</t>
        </li>
        <li>
          <t>Specified creation, normalization and comparison (#9).</t>
        </li>
        <li>
          <t>Clarified the default value of the <tt>path.type</tt> option (#33).</t>
        </li>
        <li>
          <t>Removed the <tt>append-relation</tt> path.type option (#41).</t>
        </li>
        <li>
          <t>Renumbered the remaining path.types.</t>
        </li>
        <li>
          <t>Renumbered the option numbers.</t>
        </li>
        <li>
          <t>Restructured the document.</t>
        </li>
        <li>
          <t>Minor editorial improvements.</t>
        </li>
      </ul>
      <t>Changes from -01 to -02:</t>
      <ul spacing="normal">
        <li>
          <t>Changed the syntax of schemes to exclude upper case characters (#13).</t>
        </li>
        <li>
          <t>Minor editorial improvements (#34 #37).</t>
        </li>
      </ul>
      <t>Changes from -00 to -01:</t>
      <ul spacing="normal">
        <li>
          <t>None.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>CRIs were developed by <contact fullname="Klaus Hartke"/> for use in the Constrained
RESTful Application Language (CoRAL).
The current author team is completing this work with a view to achieve
good integration with the potential use cases, both inside and outside of CoRAL.</t>
      <t>Thanks to
<contact fullname="Christian Amsüss"/>,
<contact fullname="Thomas Fossati"/>,
<contact fullname="Ari Keränen"/>,
<contact fullname="Jim Schaad"/>,
<contact fullname="Dave Thaler"/>,
and
<contact fullname="Marco Tiloca"/>
for helpful comments and discussions that have shaped the
document.</t>
      <!--  LocalWords:  CRI normalizations dereferencing dereference CRIs
 -->
<!--  LocalWords:  untrusted subcomponent
 -->

</section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="K." surname="Hartke" fullname="Klaus Hartke">
        <organization>Ericsson</organization>
        <address>
          <postal>
            <street>Torshamnsgatan 23</street>
            <city>Stockholm</city>
            <code>16483</code>
            <country>Sweden</country>
          </postal>
          <email>klaus.hartke@ericsson.com</email>
        </address>
      </contact>
      <contact initials="C." surname="Amsüss" fullname="Christian Amsüss">
        <organization/>
        <address>
          <postal>
            <street>Hollandstr. 12/4</street>
            <city>Vienna</city>
            <code>1020</code>
            <country>Austria</country>
          </postal>
          <email>christian@amsuess.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
