<?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.24 (Ruby 3.4.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-href-19" category="std" consensus="true" submissionType="IETF" xml:lang="en" updates="7595" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <?v3xml2rfc table_borders="light"?>
  <front>
    <title>Constrained Resource Identifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-19"/>
    <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="2025" month="March" day="03"/>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <?line 107?>

<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) rather than as a sequence of characters.
This approach simplifies parsing, comparison, and reference resolution in
environments with severe limitations on processing power, code size, and
memory size.</t>
      <t>This RFC updates RFC 7595 to add a note on how the "URI Schemes"
registry of RFC 7595 cooperates with the "CRI Scheme Numbers"
registry created by the present RFC.</t>
      <t><cref anchor="status">(This "cref" paragraph will be removed by the RFC editor:)<br/>
The present revision –19 addresses WGLC comments.</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 126?>

<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 (Section <xref target="RFC3986" section="4.1" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>).
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 (Section <xref target="RFC3986" section="5" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>)
involves parsing a character sequence
into its components, combining those components with the components of a
base URI, merging path components, removing dot-segments (<tt>"." and
".."</tt>, see Section <xref target="RFC3986" section="3.3" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), 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 constrained environments <xref target="RFC7228"/><xref target="I-D.ietf-iotops-7228bis"/>,
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"/> (aperçu adapted from <xref target="GREENSPUN-10"/>).</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.
Analogously, <em>CRI references</em> are to CRIs what URI references are to
URIs.</t>
      <t>CRIs and CRI references allow typical operations on URIs and URI references such as parsing,
comparison, and reference resolution (including all corner cases) to be
implemented in a comparatively small amount of code and to be less
prone to bugs and interoperability issues.</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"/>.
CRI extensions (<xref target="extending"/>) can be defined to address some of the constraints.</t>
      <t>This RFC creates a "CRI Scheme Numbers" registry and updates <xref target="RFC7595"/>
to add a note on how this new registry cooperates with the "URI Schemes"
registry that <xref target="RFC7595"/> describes.</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 <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) 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>From URIs to CRIs: Considerations and Constraints</name>
      <section anchor="the-cri-interchange-data-model">
        <name>The CRI interchange data model</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 considerations and 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 segments 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 segment.</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"/>; see
<xref target="zone-id-issue"/>).
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"/> and <xref target="norm"/>).
(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>If the scheme's port handling is known to the
CRI creator, it is <bcp14>RECOMMENDED</bcp14> to omit the port 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.</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-leading-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 (<xref target="norm"/>), 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-leading-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 <xref target="norm"/>.
   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 <xref target="norm"/>.
   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, which are 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>
      <section anchor="discard">
        <name>CRI References: The <tt>discard</tt> Component</name>
        <t>As with URI references and URIs, CRI references are a shorthand for a
CRI that is expressed relative to a base CRI.
URI and CRI references often <em>discard</em> part or all of the trailing
path segments of the base URI or CRI.</t>
        <t>In a URI reference, this is expressed by syntax for its path component
such as leading special path segments <tt>.</tt> and <tt>..</tt> or a leading
slash before giving the path segments to be added at the end of the
(now truncated) base URI.
For use in CRI references, we instead add in a <tt>discard</tt> component as
an alternative to the <tt>scheme</tt> and <tt>authority</tt> components, making the
specification of discarding base URI path segments separate from
adding new path segments from the CRI reference.</t>
        <t>The discarding intent of a CRI reference is thus fully condensed to a
single value in its discard component:</t>
        <ul spacing="normal">
          <li>
            <t>An unsigned integer as the discard component specifies the number of
path segments to be discarded from the base CRI (note that this
includes the value 0 which cannot be expressed in URI references that then add any path component);</t>
          </li>
          <li>
            <t>the value <tt>true</tt> as the discard component
specifies discarding all path segments from the base CRI.</t>
          </li>
        </ul>
        <t>If a scheme or authority is present in a CRI reference, the discard
component is implicitly equivalent to a value of <tt>true</tt> and thus not
included in the interchanged data item.</t>
      </section>
      <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>CRI references of this kind can be acceptable -- they still can be resolved
and result in a valid full 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 dot-segments (path segment <tt>"."</tt> or <tt>".."</tt>).  </t>
            <t>
These segments 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 (see <xref target="discard"/>),
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 a leading empty segment
followed by at least one more segment.  </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.
(E.g., two leading empty segments would be indistinguishable from a URI with a shorter path and a present but empty authority component.)
(Compare <xref format="counter" target="c-path-segment"/>.)</t>
          </li>
          <li anchor="naked-rootless">
            <t>CRIs without authority that are rootless and have
an empty path
component (e.g., <tt>["a", true, []]</tt>), which would be indistinguishable
from its root-based equivalent (<tt>["a", null, []]</tt>) as both would have the URI <tt>a:</tt>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="norm">
      <name>Creation and Normalization</name>
      <t>In general, resource identifiers are generated when a
resource is initially created or exposed under a certain resource identifier.</t>
      <t>The naming authority that creates
a Constrained Resource Identifier <bcp14>SHOULD</bcp14> be the 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.
If the naming authority creates a URI instead that can be obtained as
a conversion result from a CRI (<xref target="cri-to-uri"/>) that CRI can be
considered to have been created by the naming authority.</t>
      <t>The naming authority <bcp14>MUST</bcp14> ensure that any CRI created
satisfies the required constraints defined in <xref target="constraints"/>. The creation of a
CRI fails if the CRI cannot be validated to satisfy all of the required
constraints.</t>
      <t>If a naming authority creates a CRI from user input, it may need to 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>
      <t>Note that the processing of CRIs does not imply that all the
constraints continuously need to be checked and enforced.
Specifically, the text normalization constraints (NFC) can be expanded
as:
The recipient of a CRI <bcp14>MAY</bcp14> reasonably expect the text labels to be in
NFC form, but as with any input <bcp14>MUST NOT</bcp14> fail (beyond possibly not
being able to process the specific CRI) if they are not.
So the onus of fulfilling the expectation is on the original creator
of the CRI, not on each processor (including consumer).
This consideration extends to the sources the CRI creator uses in
building the labels, which the CRI creator <bcp14>MAY</bcp14> in turn expect to be in
NFC form if that expectation is reasonable.
See <xref section="C" sectionFormat="of" target="MNU"/> for some background.</t>
      <t>CRIs have been designed with the objective that, after the above
normalization, conversion of two distinct CRIs to URIs do
not yield the "same" URI, including equivalence under syntax-based
normalization (Section <xref target="RFC3986" section="6.2.2" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>), but not including
protocol-based normalization.
Note that this objective exclusively applies to (full) CRIs, not
to CRI references: these need to be resolved relative to a base URI,
with results that may be equivalent or not depending on the base.</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) do not
play a role and typically are 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><xref target="cbor-representation"/> first 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 also 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, it is rarely appropriate
for applications to directly compare CRI references; instead, the
references are typically 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"/>).
<xref target="fig-railroad"/> has a coarse visualization of the structure of this
array, without going into the details of the elements.</t>
        <figure anchor="fig-railroad">
          <name>Overall Structure of a CRI or CRI Reference</name>
          <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>
        </figure>
        <t><xref target="cddl"/> has a more detailed description of the structure, in CDDL.</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,                         ; use [] for empty path
  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 anchor="discard1">We call the elements of the top-level array <em>sections</em>.
The sections containing the rules <tt>scheme</tt>, <tt>authority</tt>, <tt>path</tt>, <tt>query</tt>, <tt>fragment</tt>
correspond to the components of a URI and thus of a CRI, as described in
<xref target="constraints"/>.
For use in CRI references, the <tt>discard</tt> section (see also <xref target="discard"/>) provides an
alternative to the <tt>scheme</tt> and <tt>authority</tt> sections.</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 default values (<xref target="tbl-default"/>) <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.</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 empty outer array (<tt>[]</tt>) is not a valid CRI.
It is a valid CRI reference,
equivalent to <tt>[0]</tt> as per <xref target="ingest"/>, which essentially copies the
base CRI up to and including the path section, unsetting query and fragment.</t>
          </li>
        </ul>
        <table anchor="tbl-default">
          <name>Default Values for CRI Sections</name>
          <thead>
            <tr>
              <th align="left">Section</th>
              <th align="left">Default Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">scheme</td>
              <td align="left">–</td>
            </tr>
            <tr>
              <td align="left">authority</td>
              <td align="left">
                <tt>null</tt></td>
            </tr>
            <tr>
              <td align="left">discard</td>
              <td align="left">
                <tt>0</tt></td>
            </tr>
            <tr>
              <td align="left">path</td>
              <td align="left">
                <tt>[]</tt></td>
            </tr>
            <tr>
              <td align="left">query</td>
              <td align="left">
                <tt>null</tt></td>
            </tr>
            <tr>
              <td align="left">fragment</td>
              <td align="left">
                <tt>null</tt></td>
            </tr>
          </tbody>
        </table>
        <t>Application specifications that use CRIs may explicitly enable the use
of "stand-in" items (tags or simple values).
These are data items used in place of original representation items
such as strings or arrays, where the tag or simple value is defined to
stand for a data item that can be used in the position of the stand-in
item.
Examples would be (1) tags such as 21 to 23 (Section <xref target="RFC8949" section="3.4.5.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>) or 108 (<xref section="2.1" sectionFormat="of" target="I-D.bormann-cbor-notable-tags"/>), which stand for text string components but internally
employ more compact byte string representations, or (2) reference tags and
simple values as defined in <xref target="I-D.ietf-cbor-packed"/>.
Note that application specifications need to be explicit about which
stand-in items are allowed; otherwise, inconsistent interpretations at
different places in a system can lead to check/use vulnerabilities.</t>
        <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;
those specifications that are selective in where they provide for
indefinite length encoding are <bcp14>RECOMMENDED</bcp14> to not provide it for
embedded CRIs.</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="examples">
          <name>Examples</name>
          <figure anchor="fig-ex-1">
            <name>CRI for coap://198.51.100.1:61616/.well-known/core</name>
            <sourcecode type="cbor-diag"><![CDATA[
[-1,             / scheme-id -- equivalent to "coap" /
 [h'C6336401',   / host /
  61616],        / port /
 [".well-known", / path /
  "core"]
]
]]></sourcecode>
          </figure>
          <figure anchor="fig-ex-2">
            <name>CRI Reference for /.well-known/core?rt=temperature-c</name>
            <sourcecode type="cbor-diag"><![CDATA[
[true,                  / discard /
 [".well-known",        / path /
  "core"],
 ["rt=temperature-c"]  / query /
]
]]></sourcecode>
          </figure>
          <figure anchor="fig-ex-3">
            <name>CRI for did:web:alice:bob</name>
            <sourcecode type="cbor-diag"><![CDATA[
[-6,                / scheme-id -- equivalent to "did" /
 true,              / authority = NOAUTH-ROOTLESS /
 ["web:alice:bob"]  / path /
]
]]></sourcecode>
          </figure>
        </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 a <em>full</em> CRI 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>We refer to this as the <em>abstract form</em>, while the <em>interchange form</em> (<xref target="cddl"/>) has either
two sections for scheme and authority or one section for discard, but
never both of these alternatives.</t>
        <t>Each of the sections in the abstract form 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 is set to <tt>true</tt>.</t>
        <t>When ingesting a CRI reference that is in interchange form, those
sections are filled in from interchange form (unset sections are
filled with null), and the following steps are performed:</t>
        <ul spacing="normal">
          <li>
            <t>If the array is empty, replace it with <tt>[0]</tt>.</t>
          </li>
          <li>
            <t>If discard is present in interchange 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 interchange 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 interchange 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 the 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>
          <t>A system that is checking a CRI for some reason but is not its
ultimate recipient needs to consider the tension between security
requirements and the danger of ossification <xref target="RFC9170"/>: If the system rejects
anything that it does not know, it prevents the other components from
making use of extensions.
If it passes through extensions unknown to it, that might allow
semantics pass through that the system should have been designed to
filter out.</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 full CRI in the form of
an CRI reference:</t>
        <ol spacing="normal" type="1"><li>
            <t>Establish the base CRI of the CRI reference (compare Section <xref target="RFC3986" section="5.1" sectionFormat="bare"/> of RFC 3986 <xref target="STD66"/>) and express it in the form of an abstract (full) 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 constrained environments <xref target="RFC7228"/><xref target="I-D.ietf-iotops-7228bis"/>.
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-leading-empty"/> in <xref target="the-small-print"/> for more details.</t>
        </dd>
        <dt>CRI to IRI</dt>
        <dd anchor="critoiri">
          <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> element 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"/>) or a colon (":") <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>
            <aside>
              <t>Implementations with scheme-specific knowledge <bcp14>MAY</bcp14> convert
  individual elements by using the ToASCII procedure <xref section="4.1" sectionFormat="of" target="RFC3490"/> as discussed in more detail in <xref section="3.1" sectionFormat="of" target="RFC3987"/>.
  This should not be done if the next step of conversion is to an
  IRI as defined in <xref target="critoiri"/> (CRI to IRI).</t>
            </aside>
            <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"/>).</t>
            <t anchor="zone-id-issue">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.
While the discussion about the representation of zone-id information
in URIs is ongoing, CRIs maintain a position in the grammar for it
(<tt>zone-id</tt>).
This can be used by consenting implementations to exchange zone
information without being concerned by the ambiguity at the URI
syntax level.
The assumption is that the present specification (1) either will be
updated eventually to obtain consistent URI conversion of zone-id
information (2) or there will be no representation of zone-id
information in URIs.</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"]]]
]]></sourcecode>
        <sourcecode type="cbor-diag"><![CDATA[
[-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="integration-into-coap-and-ace">
      <name>Integration into CoAP and ACE</name>
      <t>This section discusses ways in which CRIs can be used in the context
of the CoAP protocol <xref target="RFC7252"/> and of Authorization for Constrained
Environments (ACE), specifically the Authorization Information Format
(AIF) <xref target="RFC9237"/>.</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 a full CRI, 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 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 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 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
a full CRI.
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"/>.
The Proxy-Scheme-Number Option <bcp14>MUST</bcp14> take precedence over any
Proxy-Scheme Option, which <bcp14>MUST NOT</bcp14> be included in a request
containing the Proxy-Scheme-Number Option.</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>
        </section>
      </section>
      <section anchor="toid">
        <name>ACE AIF</name>
        <t>The AIF (Authorization Information Format, <xref target="RFC9237"/>) defined by ACE by
default uses the local part of a URI to identify a resource for which
authorization is indicated.
The type and target of this information is an extension point, briefly
called <em>Toid</em> (Type of object identifier).
<xref target="toidreg"/> registers "CRI-local-part" as a Toid.
Together with <em>Tperm</em>, an extension point for a way to indicate
individual access rights (permissions), <xref section="2" sectionFormat="of" target="RFC9237"/>
defines its general Information Model as:</t>
        <sourcecode type="cddl"><![CDATA[
AIF-Generic<Toid, Tperm> = [* [Toid, Tperm]]
]]></sourcecode>
        <t>Using the definitions in <xref target="cddl"/> together with the <xref target="RFC9237"/> default Tperm
choice <tt>REST-method-set</tt>, this information model can be specialized as
in:</t>
        <sourcecode type="cddl"><![CDATA[
CRI-local-part = [path / null, ?query]
AIF-CRI = AIF-Generic<CRI-local-part, REST-method-set>
]]></sourcecode>
        <!-- cddlc -irfc9237 -sAIF-CRI -r2u -tcddl - -->

</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.
The security considerations discussed for URIs in <xref section="6" sectionFormat="of" target="RFC9237"/>
apply analogously to AIF-CRI <xref target="toid"/>.</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" registry in the
"Constrained RESTful Environments (CoRE) Parameters" registry group
<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 registrations in the CRI Scheme Numbers registry are
oblivious to the details of any URI Schemes registry registration, so
if a registration is later made in the URI Schemes registry that uses
such a previously unregistered text string as a name, the CRI Scheme
Numbers registration simply stays in place, even if the URI Schemes
registration happens to be for something different from what the
expert had in mind at the time for the CRI Scheme Numbers
registration.
Also note that the initial registrations 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>
          <t>The Reference field can simply be a copy of the reference field for the
URI-Scheme registration if that exists.
If not, it can contain helpful information (including the name of the
registrant) that may be available for the registration, with the
expectation that this will be updated if a URI-Scheme registration
under that URI scheme name is later made.</t>
        </section>
        <section anchor="initial-registrations">
          <name>Initial Registrations</name>
          <t>The initial registrations for the CRI Scheme Numbers registry are
provided 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 anchor="toidreg">
        <name>Media-Type subparameters for ACE AIF</name>
        <t>In the "Sub-Parameter Registry for application/aif+cbor and
application/aif+json" in the "Media Type Sub-Parameter Registries"
registry group <xref target="IANA.media-type-sub-parameters"/>, IANA is requested to
register:</t>
        <table anchor="tab-iana-toid">
          <name>ACE AIF Toid for CRI</name>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Name</th>
              <th align="left">Description/Specification</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Toid</td>
              <td align="left">CRI-local-part</td>
              <td align="left">local-part of CRI</td>
              <td align="left">
                <xref target="toid"/> of RFC-XXXX</td>
            </tr>
          </tbody>
        </table>
        <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>
      </section>
      <section anchor="content-format-for-cri-in-aif">
        <name>Content-Format for CRI in AIF</name>
        <t>IANA is requested to register a Content-Format identifier in the "CoAP
Content-Formats" registry (range 256-999), within the "Constrained
RESTful Environments (CoRE) Parameters" registry group
<xref target="IANA.core-parameters"/>, as follows:</t>
        <table anchor="tab-iana-toid-ct">
          <name>Content-Format for ACE AIF with CRI-local-part Toid</name>
          <thead>
            <tr>
              <th align="left">Content Type</th>
              <th align="left">Content Coding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/aif+cbor;Toid=CRI-local-part</td>
              <td align="left">-</td>
              <td align="left">TBD</td>
              <td align="left">RFC-XXXX</td>
            </tr>
          </tbody>
        </table>
        <t><cref anchor="replace-xxxx_4">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 anchor="sec-combined-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="https://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.media-type-sub-parameters" target="https://www.iana.org/assignments/media-type-sub-parameters">
          <front>
            <title>Media Type Sub-Parameter Registries</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC9237">
          <front>
            <title>An Authorization Information Format (AIF) for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Information about which entities are authorized to perform what operations on which constituents of other entities is a crucial component of producing an overall system that is secure. Conveying precise authorization information is especially critical in highly automated systems with large numbers of entities, such as the Internet of Things.</t>
              <t>This specification provides a generic information model and format for representing such authorization information, as well as two variants of a specific instantiation of that format for use with Representational State Transfer (REST) resources identified by URI path.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9237"/>
          <seriesInfo name="DOI" value="10.17487/RFC9237"/>
        </reference>
        <reference anchor="IANA.core-parameters" target="https://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:.plus,.cat, and.det for the construction of constants;.abnf/.abnfb for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and.feature 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="I-D.ietf-cbor-packed">
          <front>
            <title>Packed CBOR</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Mikolai Gütschow" initials="M." surname="Gütschow">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, RFC 8949 == STD 94)
   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.

   CBOR does not provide any forms of data compression.  CBOR data
   items, in particular when generated from legacy data models, often
   allow considerable gains in compactness when applying data
   compression.  While traditional data compression techniques such as
   DEFLATE (RFC 1951) can work well for CBOR encoded data items, their
   disadvantage is that the recipient needs to decompress the compressed
   form to make use of the data.

   This specification describes Packed CBOR, a set of CBOR tags and
   simple values that enable a simple transformation of an original CBOR
   data item into a Packed CBOR data item that is almost as easy to
   consume as the original CBOR data item.  A separate decompression
   step is therefore often not required at the recipient.


   // The present version (-14) adds additional stand-in items to the
   // previously updated implementation draft -13, with minor editorial
   // improvements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-packed-14"/>
        </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="RFC3490">
          <front>
            <title>Internationalizing Domain Names in Applications (IDNA)</title>
            <author fullname="P. Faltstrom" initials="P." surname="Faltstrom"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="A. Costello" initials="A." surname="Costello"/>
            <date month="March" year="2003"/>
            <abstract>
              <t>Until now, there has been no standard method for domain names to use characters outside the ASCII repertoire. This document defines internationalized domain names (IDNs) and a mechanism called Internationalizing Domain Names in Applications (IDNA) for handling them in a standard fashion. IDNs use characters drawn from a large repertoire (Unicode), but IDNA allows the non-ASCII characters to be represented using only the ASCII characters already allowed in so-called host names today. This backward-compatible representation is required in existing protocols like DNS, so that IDNs can be introduced with no changes to the existing infrastructure. IDNA is only meant for processing domain names, not free text. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3490"/>
          <seriesInfo name="DOI" value="10.17487/RFC3490"/>
        </reference>
        <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>
        <reference anchor="I-D.ietf-iotops-7228bis">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Mehmet Ersue" initials="M." surname="Ersue">
         </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Carles Gomez" initials="C." surname="Gomez">
              <organization>Universitat Politecnica de Catalunya</organization>
            </author>
            <date day="8" month="January" year="2025"/>
            <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="Internet-Draft" value="draft-ietf-iotops-7228bis-01"/>
        </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)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="8" month="January" year="2025"/>
            <abstract>
              <t>   This document formalizes and consolidates the definition of the
   Extended Diagnostic Notation (EDN) of the Concise Binary Object
   Representation (CBOR), addressing implementer experience.

   Replacing EDN's previous informal descriptions, it updates RFC 8949,
   obsoleting its Section 8, and RFC 8610, obsoleting its Appendix G.

   It also specifies and uses registry-based extension points, using one
   to support text representations of epoch-based dates/times and of IP
   addresses and prefixes.


   // (This cref will be removed by the RFC editor:) The present
   // revision (–16) addresses the first half of the WGLC comments,
   // except for the issues around the specific way how to best achieve
   // pluggable ABNF grammars for application-extensions.  It is
   // intended for use as a reference document for the mid-WGLC CBOR WG
   // interim meeting on 2025-01-08.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-16"/>
        </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="I-D.bormann-cbor-notable-tags">
          <front>
            <title>Notable CBOR Tags</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="12" month="February" year="2025"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, RFC 8949) 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.

   In CBOR, one point of extensibility is the definition of CBOR tags.
   RFC 8949's original edition, RFC 7049, defined a basic set of 16 tags
   as well as a registry that can be used to contribute additional tag
   definitions [IANA.cbor-tags].  Since RFC 7049 was published, at the
   time of writing some 190 definitions of tags and ranges of tags have
   been added to that registry.

   The present document provides a roadmap to a large subset of these
   tag definitions.  Where applicable, it points to an IETF standards or
   standard development document that specifies the tag.  Where no such
   document exists, the intention is to collect specification
   information from the sources of the registrations.  After some more
   development, the present document is intended to be useful as a
   reference document for the IANA registrations of the CBOR tags the
   definitions of which have been collected.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-notable-tags-12"/>
        </reference>
        <reference anchor="I-D.draft-ietf-core-href-18">
          <front>
            <title>Constrained Resource Identifiers</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="3" month="February" year="2025"/>
            <abstract>
              <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.

   This RFC updates RFC 7595 to add a note on how the URI Schemes
   registry RFC 7595 describes cooperates with the CRI Scheme Numbers
   registry created by the present RFC.


   // (This "cref" paragraph will be removed by the RFC editor:) The
   // present revision –18 integrates two small changes from the CoRE
   // interim on 2025-01-29 and should be ready for WGLC.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-18"/>
        </reference>
        <reference anchor="RFC9170">
          <front>
            <title>Long-Term Viability of Protocol Extension Mechanisms</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>The ability to change protocols depends on exercising the extension and version-negotiation mechanisms that support change. This document explores how regular use of new protocol features can ensure that it remains possible to deploy changes to a protocol. Examples are given where lack of use caused changes to be more difficult or costly.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9170"/>
          <seriesInfo name="DOI" value="10.17487/RFC9170"/>
        </reference>
        <reference anchor="GREENSPUN-10" target="https://en.wikipedia.org/wiki/Greenspun's_tenth_rule">
          <front>
            <title>Greenspun's tenth rule</title>
            <author>
              <organization>Wikipedia</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="MNU">
          <front>
            <title>Modern Network Unicode</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="2" month="March" year="2025"/>
            <abstract>
              <t>   BCP18 (RFC 2277) has been the basis for the handling of character-
   shaped data in IETF specifications for more than a quarter of a
   century now.  It singles out UTF-8 (STD63, RFC 3629) as the “charset”
   that MUST be supported, and pulls in the Unicode standard with that.

   Based on this, RFC 5198 both defines common conventions for the use
   of Unicode in network protocols and caters for the specific
   requirements of the legacy protocol Telnet.  In applications that do
   not need Telnet compatibility, some of the decisions of RFC 5198 can
   be cumbersome.

   The present specification defines “Modern Network Unicode” (MNU),
   which is a form of RFC 5198 Network Unicode that can be used in
   specifications that require the exchange of plain text over networks
   and where just mandating UTF-8 may not be sufficient, but there is
   also no desire to import all of the baggage of RFC 5198.

   As characters are used in different environments, MNU is defined in a
   one-dimensional (1D) variant that is useful for identifiers and
   labels, but does not use a structure of text lines.  A 2D variant is
   defined for text that is a sequence of text lines, such as plain text
   documents or markdown format.  Additional variances of these two base
   formats can be used to tailor MNU to specific areas of application.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-dispatch-modern-network-unicode-06"/>
        </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 1636?>

<section anchor="sec-numbers">
      <name>Mapping Scheme Numbers to Scheme Names</name>
      <t><cref anchor="replace-xxxx_5">RFC Ed.: throughout this section, please replace
RFC-XXXX with the RFC number of this specification and remove this
note.</cref></t>
      <t>Table 8 in <xref section="A" sectionFormat="of" target="I-D.draft-ietf-core-href-18"/> lists the initial mapping from
CRI scheme numbers to URI scheme names.
(This table was developed with a previous revision of the
Internet-Draft of the RFC derived from this document but is not copied
into the current draft or the actual RFC because it will be
out-of-date quickly, and because the IANA registry should be the focal
point for users of this registry, anyway.)</t>
      <t>The assignments from this table can be extracted from the XML form of
<xref target="I-D.draft-ietf-core-href-18"/> (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-leading-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 leading 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>
              <t>
These URIs can be expressed when using the <tt>extended-cri</tt> feature.</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 without the <tt>extended-cri</tt> feature:      </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 explicitly cater for unencoded ":" in userinfo (without
needing the <tt>extended-cri</tt> feature).
(We opted for including this syntactic feature instead of
disabling it as a mechanism against potential uses of colons for
the deprecated inclusion of unencrypted secrets.)</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 -16 to -17</t>
      <t>(Provisional integration of active PRs, please see github.)</t>
      <t>Changes from -15 to -16</t>
      <ul spacing="normal">
        <li>
          <t>Add note that CRI Scheme Number registrations are oblivious of the
actual URI Scheme registrations (if any).</t>
        </li>
        <li>
          <t>Add information about how this RFC updates <xref target="RFC7595"/> to abstract and
introduction.</t>
        </li>
      </ul>
      <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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
JuYZ8Z1yTfloEWoyKmHhUikSkrpgovYnHm9kwAgnk36Ei505bCFVOk1nXGzL
zrVMxN7idQOyF1YU2yVHa0VRqwOOw03ZdcS7NlI7t0VcWfrAtaPpue6NzDff
YchgFG9vfwfUy/zarj5bNLK2n3Fvjuzj0IWJVxwrST50A4iSLgTFxME/dJV1
G22PTjVB6wxk/WQymhbLzel5eVXlm8tsWq7LdXU6MvvRWbFIWkWBCOKSewzq
rJUSbDeuDA0kayz0VO8Zf6rzNU8Fe1omVTwvqgpG3DwHafLUSJ2ClHorItop
aT+WJhsU+mXxCIm7tt8AAv8a40hsspHfiIHuG2c/opAM21+tXYFAKjuk9w+E
WABzRRU6pB9QolmDK5mAxHyyE5+VyTSlhixG06ASxkcsAzfNQFPhyYAihNm8
wVhcjYGqUXGpaknJMVaASz+eJ+tK1FhKuHPeCmdeWiBj1fOZZGek+XPDLcqr
90YR5JpSj+8a70af/4N6zhxuN0hnXItYOSQfM5zM4ye7T76PMdhayg97XWb1
OMILX0njaqYqaJOQ4PrbHg8qyLklPGpnPZIxyj3x2D3xSFYXVDZ3dXa1/jKn
233BSuxYwZIeetIhD9vQUVVkYVGXgwujo/1X+w1cZgtjU0mugKajWFxeSQFf
lJVVMglLn6lVjWKie+2ReiJh2wL/pucFUpIcBpgchQGVB8Wbw0EENwtoTR0O
QhQPQI97GWF/ZxTo5DEkPFY0XRVwFa6i3iFS5ho2hFwjKPW4O3pgBLfG23Cy
GcAQz4HUOzwd1h2o4i1xFiLh7dhAsQerJiGHhg0cvI9czAzW67+9mj8V8x8I
ECuj+x4E1iZLraWKbBlNYY+UkuKnutho8ucUR0wxzQIOxTfkrLOUmsUw2vtJ
10lY1t9wQwKMR28E64m180hTF9RSjefQnhuD8+LMe1a01ZS/Jh5mKwNxLNK8
XJ8ltktDSHHcgZjwQC6pX7LT5+XjfqjJ86lW51j2rFk8qD/+mnX18ddj23cP
juJDmq5EWcKIOCN5EnzurbTvhKzVH1K+mWn+l+KKoC717meo/RgK7j8ripkX
24ppnriuHGP7pWNi7QDFeay255CgikirKmiSxCE374vRzl23PvJFol7X1+sV
wos7MrqzEhsTHxWpjaTpIKtBjXwRrsuFD5oGxdEpR+bWG6aOFaoJqPG+460t
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
dc53iuin4O2OkWyZVCSRVqzmx/9fw0kigT0/AQA=

-->

</rfc>
