<?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.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-href-11" category="std" consensus="true" submissionType="IETF" xml:lang="en" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.14.1 -->
  <front>
    <title>Constrained Resource Identifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-11"/>
    <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 abbrev="Fraunhofer SIT">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="2022" month="September" day="07"/>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <t>The Constrained Resource Identifier (CRI) is a complement to the Uniform
Resource Identifier (URI) that serializes the URI components in Concise
Binary Object Representation (CBOR) instead of 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>The present revision -10 of this draft contains an experimental
addition that allows representing user information
(<tt>https://alice@chains.example</tt>) in the URI authority component.
This feature lacks test vectors and implementation experience at the
time of writing and requires discussion.</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>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The <xref target="RFC3986">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 RFC 3986.</t>
      <t>This document defines the <em>Constrained Resource Identifier (CRI)</em> by
constraining URIs to a simplified subset and serializing their
components in <xref target="RFC8949">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 RFC 3986 (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="RFC9110">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="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <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 (rendered in plain text as the new term surrounded by
underscores).</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">The scheme name can be any Unicode string (see
Definition D80 in <xref target="Unicode"/>) that matches the syntax of a URI
scheme (see <xref section="3.1" sectionFormat="of" target="RFC3986"/>, which constrains schemes to
ASCII) and is lowercase (see Definition D139 in <xref target="Unicode"/>).
The scheme is always present.</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 <xref section="3.3" sectionFormat="of" target="RFC3986"/> are modeled by two different
values used in place of an absent authority:  </t>
          <ul spacing="normal">
            <li>the path can begin with a root ("/", as when the authority is
present), or</li>
            <li>the path can be rootless.</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">A userinfo is a text string built out of unreserved
  characters (<xref section="2.3" sectionFormat="of" target="RFC3986"/>) or "sub-delims" (<xref section="2.2" sectionFormat="of" target="RFC3986"/>); 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.</li>
        <li anchor="c-ip-address">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).</li>
        <li anchor="c-reg-name">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 <xref section="3.2.2" sectionFormat="of" target="RFC3986"/>, a registered name can be empty, for
which case a scheme can define a default for the host.)</li>
        <li anchor="c-port-range">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 <xref section="3.2.3" sectionFormat="of" target="RFC3986"/>), or ports with redundant
leading zeros, are not supported.</li>
        <li anchor="c-port-omitted">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 -->
        </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 (<xref section="6.2.2" sectionFormat="of" target="RFC3986"/>, not on the scheme-specific Scheme-Based
Normalization level (<xref section="6.2.3" sectionFormat="of" target="RFC3986"/>).  </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">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.</li>
        <li anchor="c-fragment">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.</li>
        <li anchor="c-escaping">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.</li>
        <li anchor="c-mapping">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. -->
        </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.
(An example of this is <tt>[0, ["p"]]</tt> which appends a slash and the path segment "p" to its base).</t>
        <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 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="RFC3986"/>,
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>
        </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="RFC8820"/>).
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>map the scheme name to lowercase (<xref format="counter" target="c-scheme"/>);</li>
        <li>map the registered name to NFC (<xref format="counter" target="c-reg-name"/>) and split it on
embedded dots;</li>
        <li>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}}); -->
        </li>
        <li>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"/>).</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 (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 serialization of CRIs in
<xref target="RFC8949">Concise Binary Object Representation (CBOR)</xref>.
To reduce representation size, CRIs are not serialized 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 serialization of CRI references is specified in
<xref target="cbor-serialization"/>.</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
unspecified;
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-serialization">
        <name>CBOR Serialization</name>
        <t>A CRI or CRI reference is encoded as a CBOR array <xref target="RFC8949"/>, with the
structure as described in the <xref target="RFC8610">Concise Data Definition Language
(CDDL)</xref> <xref target="RFC9165">including its control extensions</xref> as follows: <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>
        <figure anchor="cddl">
          <name>CDDL for CRI CBOR serialization</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,
  local-part
]


CRI-Reference = [
  ((scheme / null, authority / no-authority)
   // discard),                 ; relative reference
  local-part
]

local-part = (
  path / null,
  query / null,
  fragment / null
)

scheme      = scheme-name / scheme-id
scheme-name = text .regexp "[a-z][a-z0-9+.-]*"
scheme-id   = (COAP / COAPS / HTTP / HTTPS / URN / DID /
               other-scheme)
              .within nint
COAP = -1 COAPS = -2 HTTP = -3 HTTPS = -4 URN = -5 DID = -6
other-scheme = nint .feature "scheme-id-extension"

no-authority = NOAUTH-NOSLASH / NOAUTH-LEADINGSLASH
NOAUTH-LEADINGSLASH = null .feature "no-authority"
NOAUTH-NOSLASH = 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>This CDDL specification is simplified for exposition and needs to be augmented by the
following rule for interchange of CRIs and CRI references: Trailing null values <bcp14>MUST</bcp14> be removed, and
two leading null values (scheme and authority both not given) are
represented by using the <tt>discard</tt> alternative instead.</t>
        <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>
        <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.
"." 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 <xref section="4.2" sectionFormat="of" target="RFC3986"/> calls "relative
references" (i.e., references that need to undergo a resolution
process to obtain a URI) correspond to the CRI form that starts with
<tt>discard</tt>.  The exception are relative references with an <tt>authority</tt>
(called a "network-path reference" in <xref section="4.2" sectionFormat="of" target="RFC3986"/>), 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 850 300">
                <g transform="translate(40 50)">
                  <text x="-30" y="-10">cri-reference:</text>
                  <path class="station" d="M5.5 94 v12 m 4 0 v-12" fill="none" stroke="black" stroke-width="1.5"/>
                  <path class="station" d="M780.5 94 v12 m 4 0 v-12" fill="none" stroke="black" stroke-width="1.5"/>
                  <path class="arrow" d="M397 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="70" x="90" y="90"/>
                  <text class="rule" text-anchor="middle" x="125" y="105">scheme</text>
                  <rect class="rule" fill="none" height="20" rx="0" ry="0" stroke="black" stroke-width="1.5" width="90" x="180" y="90"/>
                  <text class="rule" text-anchor="middle" x="225" y="105">authority</text>
                  <rect class="rule" fill="none" height="20" rx="0" ry="0" stroke="black" stroke-width="1.5" width="70" x="145" y="120"/>
                  <text class="rule" text-anchor="middle" x="180" y="135">discard</text>
                  <path class="arrow" d="M527 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="350" y="90"/>
                  <text class="rule" text-anchor="middle" x="375" y="105">path</text>
                  <path class="arrow" d="M562 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="50" x="450" y="90"/>
                  <text class="rule" text-anchor="middle" x="475" y="105">query</text>
                  <path class="arrow" d="M597 70 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="550" y="90"/>
                  <text class="rule" text-anchor="middle" x="595" y="105">fragment</text>
                  <path d="M40 20 v70" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M750 90 q0 10 10 10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M330 40 v50" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M720 90 q0 10 10 10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M430 60 v30" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M690 90 q0 10 10 10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M530 80 v10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M660 90 q0 10 10 10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M640 100 h140" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M520 100 q10 0 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M530 80 q0 -10 10 -10 h110 q10 0 10 10 v10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M500 100 h50" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M420 100 q10 0 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M430 60 q0 -10 10 -10 h240 q10 0 10 10 v30" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M400 100 h50" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M320 100 q10 0 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M330 40 q0 -10 10 -10 h370 q10 0 10 10 v50" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M290 110 v10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M215 130 h65 q10 0 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M70 120 q0 10 10 10 h65" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M290 110 q0 -10 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M270 100 h80" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M160 100 h20" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M60 100 q10 0 10 10 v10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M30 100 q10 0 10 -10" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M40 20 q0 -10 10 -10 h690 q10 0 10 10 v70" fill="none" stroke="black" stroke-width="1.5"/>
                  <path d="M10 100 h80" fill="none" stroke="black" stroke-width="1.5"/>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[cri-reference:
        ╭──────────────────────────────────────>───────────────────────────────────────╮
        │                                                                              │
        │                               ╭─────────────────────>─────────────────────╮  │
        │                               │                                           │  │
        │                               │          ╭──────────────>──────────────╮  │  │
        │                               │          │                             │  │  │
        │                               │          │           ╭──────>───────╮  │  │  │
        │                               │          │           │              │  │  │  │
    │├──╯──╮── scheme ── authority ──╭──╯── path ──╯── query ──╯── fragment ──╰──╰──╰──╰──┤│
           │                         │
           ╰──────── discard ────────╯

]]></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 -- 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 -- equivalent to "did" /
 true,           / authority = NOAUTH-NOSLASH /
 ["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="ingesting-and-encoding-a-cri-reference">
        <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 number 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>If the array is entirely empty, replace it with <tt>[0]</tt>.</li>
          <li>If discard is present in the transfer form (i.e., the outer array
starts with true or an unsigned number), set scheme and authority to null.</li>
          <li>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>.</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 "").</t>
      </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>Establish the base CRI of the CRI reference and express it in the
  form of an abstract absolute CRI reference.</li>
          <li>Initialize a buffer with the sections from the base CRI.</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 number, 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>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.</li>
          <li>Apart from the path and discard, copy all non-null sections from
the CRI reference to the buffer in sequence; unset fragment in the buffer if
query is non-null in the CRI reference (and therefore has been
copied to the buffer).</li>
          <li>Return the sections in the buffer as the resolved CRI.</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="RFC3986">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>
        </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 <xref section="5.3" sectionFormat="of" target="RFC3986"/>.</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 number.
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 (<xref section="2.3" sectionFormat="of" target="RFC3986"/>) or
"sub-delims" (<xref section="2.2" sectionFormat="of" target="RFC3986"/>) <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 a dot
("."), or not in
the set of unreserved characters (<xref section="2.3" sectionFormat="of" target="RFC3986"/>) or
"sub-delims" (<xref section="2.2" sectionFormat="of" target="RFC3986"/>) <bcp14>MUST</bcp14> be
percent-encoded.</t>
            <t>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 (<xref section="3.2.2" sectionFormat="of" target="RFC3986"/>).
Any zone-id is appended to the string, separated by "%25" as
defined in <xref section="2" sectionFormat="of" target="RFC6874"/>, or as specified in a superseding
zone-id specification document <xref target="I-D.carpenter-6man-rfc6874bis"/>; 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>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 <xref section="4.2" sectionFormat="of" target="RFC3986"/>).
</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 (<xref section="3.3" sectionFormat="of" target="RFC3986"/>), 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 (<xref section="3.3" sectionFormat="of" target="RFC3986"/>), 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 (<xref section="3.3" sectionFormat="of" target="RFC3986"/>), 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="pet">
      <name>Extended CRI: Accommodating Percent Encoding (PET)</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>Basic CRI does not support URI components that <em>require</em>
percent-encoding (<xref section="2.1" sectionFormat="of" target="RFC3986"/>) 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>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>
      <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 semantically meaningful
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 anchor="impl">
      <name>Implementation Status</name>
      <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 <xref section="10" sectionFormat="of" target="RFC8949"/> for additional
security considerations relating to CBOR.</t>
      <t>The security considerations discussed in <xref section="7" sectionFormat="of" target="RFC3986"/> 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>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <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>
        <reference anchor="RFC3987" target="https://www.rfc-editor.org/info/rfc3987">
          <front>
            <title>Internationalized Resource Identifiers (IRIs)</title>
            <author fullname="M. Duerst" initials="M." surname="Duerst">
              <organization/>
            </author>
            <author fullname="M. Suignard" initials="M." surname="Suignard">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc6874">
          <front>
            <title>Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter">
              <organization/>
            </author>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire">
              <organization/>
            </author>
            <author fullname="R. Hinden" initials="R." surname="Hinden">
              <organization/>
            </author>
            <date month="February" year="2013"/>
            <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 specification (RFC 3986) accordingly.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6874"/>
          <seriesInfo name="DOI" value="10.17487/RFC6874"/>
        </reference>
        <reference anchor="I-D.carpenter-6man-rfc6874bis" target="https://www.ietf.org/archive/id/draft-carpenter-6man-rfc6874bis-03.txt">
          <front>
            <title>Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</title>
            <author fullname="Brian Carpenter">
	 </author>
            <author fullname="Stuart Cheshire">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Robert M. 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="RFC8610" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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>
        <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">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <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>
        <reference anchor="RFC9165" target="https://www.rfc-editor.org/info/rfc9165">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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>
        <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="M. Ersue" initials="M." surname="Ersue">
              <organization/>
            </author>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <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>
        <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">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <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>
        <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">
              <organization/>
            </author>
            <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>
        <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>
      </references>
    </references>
    <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">Initial (Lone/Leading) Empty Path Segments:</li>
      </ol>
      <ul spacing="normal">
        <li>
          <em>Lone empty path segments:</em>
  As per <xref target="RFC3986"/>, <tt>s://x</tt> is distinct from <tt>s://x/</tt> -- i.e., a URI
  with an empty path is different from one with a lone empty path segment.
  However, in HTTP, 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.
  <cref anchor="leps-tbd">TBD: add similar text for HTTP, if that can be made.</cref>
  After discussing HTTP semantics, <xref section="6.2.3" sectionFormat="of" target="RFC3986"/> even states:</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>
          <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.</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 removeInRFC="true" anchor="change-log">
      <name>Change Log</name>
      <t>Changes from -08 to -09</t>
      <ul spacing="normal">
        <li>Identify more esoteric features with a CDDL ".feature".</li>
        <li>Clarify that well-formedness requires removing trailing nulls.</li>
        <li>Fragments can contain PET.</li>
        <li>Percent-encoded text in PET is treated as byte strings.</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="RFC3986"/>).
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>Fix the encoding of NOAUTH-NOSLASH / NOAUTH-LEADINGSLASH</li>
        <li>Add URN and DID schemes, add example.</li>
        <li>Add PET</li>
        <li>Remove hopeless attempt to encode "remote trailing nulls" rule in
CDDL (which is not a transformation language).</li>
      </ul>
      <t>Changes from -06 to -07</t>
      <ul spacing="normal">
        <li>More explicitly discuss constraints (<xref target="constraints"/>), add examples (<xref target="sp-constraints"/>).</li>
        <li>Make CDDL more explicit about special simple values.</li>
        <li>Lots of gratuitous changes from XML2RFC redefinition of <tt>&lt;tt&gt;</tt>
semantics.</li>
      </ul>
      <t>Changes from -05 to -06</t>
      <ul spacing="normal">
        <li>
          <t>rework authority:
          </t>
          <ul spacing="normal">
            <li>split reg-names at dots;</li>
            <li>add optional zone identifiers <xref target="RFC6874"/> to IP addresses</li>
          </ul>
        </li>
      </ul>
      <t>Changes from -04 to -05</t>
      <ul spacing="normal">
        <li>Simplify CBOR structure.</li>
        <li>Add implementation status section.</li>
      </ul>
      <t>Changes from -03 to -04:</t>
      <ul spacing="normal">
        <li>Minor editorial improvements.</li>
        <li>Renamed path.type/path-type to discard.</li>
        <li>Renamed option to section, substructured into items.</li>
        <li>Simplified the table "resolution-variables".</li>
        <li>Use the CBOR structure inspired by Jim Schaad's proposals.</li>
      </ul>
      <t>Changes from -02 to -03:</t>
      <ul spacing="normal">
        <li>Expanded the set of supported schemes (#3).</li>
        <li>Specified creation, normalization and comparison (#9).</li>
        <li>Clarified the default value of the <tt>path.type</tt> option (#33).</li>
        <li>Removed the <tt>append-relation</tt> path.type option (#41).</li>
        <li>Renumbered the remaining path.types.</li>
        <li>Renumbered the option numbers.</li>
        <li>Restructured the document.</li>
        <li>Minor editorial improvements.</li>
      </ul>
      <t>Changes from -01 to -02:</t>
      <ul spacing="normal">
        <li>Changed the syntax of schemes to exclude upper case characters (#13).</li>
        <li>Minor editorial improvements (#34 #37).</li>
      </ul>
      <t>Changes from -00 to -01:</t>
      <ul spacing="normal">
        <li>None.</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>
    </section>
  </back>
  <!-- ##markdown-source:
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
P0OMX//fgBUbTOykAAA=

-->

</rfc>
