<?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.31 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-yang-metadata-03" category="std" consensus="true" submissionType="IETF" updates="9595" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Metadata Annotations in YANG-CBOR">Representing metadata annotations in YANG-CBOR</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-yang-metadata-03"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <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>
    <date year="2026" month="February" day="11"/>
    <area>ART (Applications and Real-Time)</area>
    <workgroup>CBOR</workgroup>
    <abstract>
      <?line 48?>

<t>This specification defines the representation of metadata annotations
(RFC 7952) in YANG-CBOR (RFC 9254).</t>
      <t>It updates RFC 9595 to add a separate namespace enabling the
representation of SIDs for metadata annotations in the ".sid" files
defined there.</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-bormann-cbor-yang-metadata/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        cbor Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cabo/yang-metadata"/>.</t>
    </note>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification defines the representation of metadata annotations
<xref target="RFC7952"/> in YANG-CBOR <xref target="RFC9254"/>.</t>
      <t>It updates <xref target="RFC9595"/> to add a separate namespace enabling the
representation of SIDs for metadata annotations in the ".sid" files
defined there.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="BCP14"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>The term "CDDL" refers to the data definition language defined in
<xref target="RFC8610"/> and its registered extensions (such as those in <xref target="RFC9165"/>
and <xref target="RFC9741"/>), as
well as <xref target="RFC9682"/>.</t>
        <t>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>
        <t><cref anchor="cpa">RFC-Editor: <br/>
  This document uses the CPA (code point allocation)
  convention described in [I-D.bormann-cbor-draft-numbers].  For
  each usage of the term "CPA", please remove the prefix "CPA"
  from the indicated value and replace the residue with the value
  assigned by IANA; perform an analogous substitution for all other
  occurrences of the prefix "CPA" in the document.  Finally,
  please remove this note.</cref></t>
        <t>The terms of <xref target="RFC7952"/> and <xref target="RFC9254"/> apply.</t>
      </section>
    </section>
    <section anchor="specification">
      <name>Specification</name>
      <t>This section defines the metadata encoding for YANG-CBOR <xref target="RFC9254"/>,
analogous to the Subsections for YANG-XML and YANG-JSON of <xref section="5" sectionFormat="of" target="RFC7952"/>.</t>
      <t><xref section="5.2.1" sectionFormat="of" target="RFC7952"/> defines a "Metadata Object" for YANG-JSON.
Analogously, the YANG-CBOR encoding of metadata annotations uses a
<em>Metadata Map</em>, which is identical in structure to the other CBOR maps
used in <xref target="RFC9254"/>.</t>
      <t>Where YANG SIDs are used as the basis for the map keys for the metadata
map, the map's reference SID is the reference SID of the enclosing data
structure, as defined in <xref section="3.2" sectionFormat="of" target="RFC9254"/>.
Where names (<xref section="3.3" sectionFormat="of" target="RFC9254"/>) are used as the map keys for
the metadata map, they <bcp14>MUST</bcp14> be fully qualified, analogous to <xref section="5.2.1" sectionFormat="of" target="RFC7952"/>.</t>
      <t>Metadata annotations are added to a data node instance by replacing
the representation of the instance ("<tt>Instance-Representation</tt>") with
the structure specified in CDDL in <xref target="fig-metadata-tag"/>:</t>
      <figure anchor="fig-metadata-tag">
        <name>Metadata-Annotated Data Node</name>
        <sourcecode type="cddl"><![CDATA[
annotated-data-node<Instance-Representation> = #6.109([ ; CPA109
  metadata-map,
  Instance-Representation
])
]]></sourcecode>
      </figure>
      <t>In essence, the <tt>annotated-data-node</tt> <em>stands in</em> for the
<tt>Instance-Representation</tt>; a consuming implementation that wants to
ignore all metadata received can simply replace each
<tt>annotated-data-node</tt> by the <tt>Instance-Representation</tt> embedded in it.</t>
      <t><cref anchor="question">(Editor's note:) QUESTION:</cref> Do we need to represent metadata maps without the actual
instance representation present?  If yes, we could simply make the
second element of the array in <xref target="fig-metadata-tag"/> optional.</t>
      <t><cref anchor="question_1">(Editor's note:) QUESTION:</cref> This representation assumes that it is good that metadata
always come before the actual data node, as would also be the case
with XML attributes.
Sections <xref target="RFC7952" section="5.2.3" sectionFormat="bare"/> and <xref target="RFC7952" section="5.2.4" sectionFormat="bare"/> of <xref target="RFC7952"/> show examples with metadata last,
though.
Can we simply focus on one of these orders (always first, or always last), or do
we really need to support both (avoid!)?</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section provides a number of examples, based on the examples in
<xref section="5.2" sectionFormat="of" target="RFC7952"/>; please see the descriptions of these examples
there.
Note that the examples here always show an enclosing map if needed; this
is generally elided in <xref section="5.2" sectionFormat="of" target="RFC7952"/> (which shows only map key and
map value separated by colon).</t>
      <t>All but one example below use YANG SIDs (<xref section="3.2" sectionFormat="of" target="RFC9254"/>).
For this, the examples assume the example SID assignments in
<xref target="example-sids"/>, the relevant ones of which are also repeated at the
start of each subsection:</t>
      <table anchor="example-sids">
        <name>Example SID values</name>
        <thead>
          <tr>
            <th align="left">name</th>
            <th align="left">SID</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">cask</td>
            <td align="left">61600</td>
          </tr>
          <tr>
            <td align="left">seq</td>
            <td align="left">61601</td>
          </tr>
          <tr>
            <td align="left">name</td>
            <td align="left">61602</td>
          </tr>
          <tr>
            <td align="left">stuff</td>
            <td align="left">61603</td>
          </tr>
          <tr>
            <td align="left">example-last-modified:last-modified</td>
            <td align="left">61610</td>
          </tr>
          <tr>
            <td align="left">foo:flag</td>
            <td align="left">61620</td>
          </tr>
          <tr>
            <td align="left">bibliomod:folio</td>
            <td align="left">61630</td>
          </tr>
        </tbody>
      </table>
      <t>For computing the outermost SID deltas, the examples assume the
reference SID is 61000.</t>
      <t>TODO: Add explanatory text; add more examples.</t>
      <section anchor="s522">
        <name>Examples from <xref section="5.2.2" sectionFormat="of" target="RFC7952"/></name>
        <t>The examples here show that the map representing the instance
representation is not extended by a new member as in <xref section="5.2.2" sectionFormat="of" target="RFC7952"/>, but is enclosed in an <tt>annotated-data-node</tt> structure like in
the other examples.</t>
        <table anchor="s522-sids">
          <name>Example SID values for this section</name>
          <thead>
            <tr>
              <th align="left">name</th>
              <th align="left">SID</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">cask</td>
              <td align="left">61600</td>
            </tr>
            <tr>
              <td align="left">seq</td>
              <td align="left">61601</td>
            </tr>
            <tr>
              <td align="left">name</td>
              <td align="left">61602</td>
            </tr>
            <tr>
              <td align="left">example-last-modified:last-modified</td>
              <td align="left">61610</td>
            </tr>
          </tbody>
        </table>
        <t>"cask" is a container or anydata node:</t>
        <figure anchor="fig-cask">
          <name>Cask example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
   600: /CPA/ 109([                      # SID: 61600
     {
       10: "2015-09-16T10:27:35+02:00"   # SID: 61610
     },
     ... # instance representation in its own map
   ])
}
]]></sourcecode>
        </figure>
        <t>The same "cask" example with name-based CBOR maps (<xref section="3.3" sectionFormat="of" target="RFC9254"/>):</t>
        <figure anchor="fig-cask-name">
          <name>Cask example with a name-based item identifier</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
   "cask": /CPA/ 109([
     {
       "example-last-modified:last-modified":
         "2015-09-16T10:27:35+02:00"
     },
     ... # instance representation in its own map
   ])
}
]]></sourcecode>
        </figure>
        <t>"seq" is a list whose key is "name"; annotation "last-modified" is
added only to the first entry:</t>
        <figure anchor="fig-seq">
          <name>Seq example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
   601: [                                # SID: 61601
     /CPA/ 109([
       {
          9: "2015-09-16T10:27:35+02:00" # SID: 61610
       },
       {
          1: "one",                      # SID: 61602
          ...: ...
       }
     ]),
     {                       # no metadata annotation
       1: "two",                         # SID: 61602
       ...: ...
     }
   ]
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="examples-from-section-523-of-rfc7952">
        <name>Examples from <xref section="5.2.3" sectionFormat="of" target="RFC7952"/></name>
        <table anchor="s523-sids">
          <name>Example SID values for this section</name>
          <thead>
            <tr>
              <th align="left">name</th>
              <th align="left">SID</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">stuff</td>
              <td align="left">61603</td>
            </tr>
            <tr>
              <td align="left">example-last-modified:last-modified</td>
              <td align="left">61610</td>
            </tr>
            <tr>
              <td align="left">foo:flag</td>
              <td align="left">61620</td>
            </tr>
          </tbody>
        </table>
        <t>"flag" is a leaf node of the "boolean" type defined in module "foo".
The SID 61620 for "foo:flag" expresses both the name "flag" and the
namespace name "foo" in its CBOR encoding:</t>
        <figure anchor="fig-flag">
          <name>Foo:flag example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  620: 109([                             # SID: 61620
    {
      -10: "2015-09-16T10:27:35+02:00"   # SID: 61610
    },
    true
  ])
}
]]></sourcecode>
        </figure>
        <t>"stuff" is an anyxml node:</t>
        <figure anchor="fig-stuff">
          <name>Stuff example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  603: 109([                             # SID: 61603
    {
      7: "2015-09-16T10:27:35+02:00"     # SID: 61610
    },
    [1, null, "three"]
  ])
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="examples-from-section-524-of-rfc7952">
        <name>Examples from <xref section="5.2.4" sectionFormat="of" target="RFC7952"/></name>
        <table>
          <thead>
            <tr>
              <th align="left">name</th>
              <th align="left">SID</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">example-last-modified:last-modified</td>
              <td align="left">61610</td>
            </tr>
            <tr>
              <td align="left">bibliomod:folio</td>
              <td align="left">61630</td>
            </tr>
          </tbody>
        </table>
        <figure anchor="fig-folio">
          <name>Bibliomod:folio example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  630: [                                  # SID: 61630
    6,                 # SIDs below: -20 -> SID: 61610
    /CPA/ 109([{-20: "2015-06-18T17:01:14+02:00"}, 3]),
    /CPA/ 109([{-20: "2015-09-16T10:27:35+02:00"}, 7]),
    8,
  ]
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="add-more-examples">
        <name>(Add more examples)</name>
      </section>
    </section>
    <section anchor="sec-sids">
      <name>SIDs for Metadata Annotations</name>
      <t>The SID file format defined in <xref target="RFC9595"/> is extended by adding
another alternative in the enumeration used in the leaf <tt>namespace</tt>:</t>
      <artwork><![CDATA[
leaf namespace {
  type enumeration {
    [...]
    enum annotation {
      value 4;
      description
        "The namespace for all names of metadata attributes, as
         defined in YANG-metadata [RFC7952].";
    }
  }
}
]]></artwork>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC7952"/> and <xref target="RFC9254"/> apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="cbor-tags-registry">
        <name>CBOR Tags Registry</name>
        <t>In the registry "CBOR Tags" <xref target="IANA.cbor-tags"/>, IANA is requested to allocate one tag:</t>
        <ul spacing="normal">
          <li>
            <t>Tag: CPA109</t>
          </li>
          <li>
            <t>Data item: Array <tt>[metadata, ?data]</tt></t>
          </li>
          <li>
            <t>Semantics: "YANG data node with metadata annotations"</t>
          </li>
          <li>
            <t>Reference: This document</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7952">
          <front>
            <title>Defining and Using Metadata with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines a YANG extension that allows for defining metadata annotations in YANG modules. The document also specifies XML and JSON encoding of annotations and other rules for annotating instances of YANG data nodes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7952"/>
          <seriesInfo name="DOI" value="10.17487/RFC7952"/>
        </reference>
        <reference anchor="RFC9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for YANG SIDs for IETF-managed YANG modules. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned YANG SIDs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </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="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</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="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="RFC9741">
          <front>
            <title>Concise Data Definition Language (CDDL): Additional Control Operators for the Conversion and Processing of Text</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, provides "control operators" as its main language extension point. RFCs have added to this extension point in both an application-specific and a more general way.</t>
              <t>The present document defines a number of additional generally applicable control operators for text conversion (bytes, integers, printf-style formatting, and JSON) and for an operation on text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9741"/>
          <seriesInfo name="DOI" value="10.17487/RFC9741"/>
        </reference>
        <reference anchor="RFC9682">
          <front>
            <title>Updates to the Concise Data Definition Language (CDDL) Grammar</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="November" year="2024"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), as defined in RFCs 8610 and 9165, provides an easy and unambiguous way to express structures for protocol messages and data formats that are represented in Concise Binary Object Representation (CBOR) or JSON.</t>
              <t>This document updates RFC 8610 by addressing related errata reports and making other small fixes for the ABNF grammar defined for CDDL.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9682"/>
          <seriesInfo name="DOI" value="10.17487/RFC9682"/>
        </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="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="16" month="October" 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 -19
   // includes the definition of the cri'' application- extension. cri''
   // was previously defined in draft-ietf-core-href; however the latter
   // document overtook the present document in the approval process.
   // As the definition of cri'' is dependent on the present document
   // (and conversely has essentially no dependency on the technical
   // content of draft-ietf-core-href beyond its mere existence), the
   // text (including IANA considerations) has been moved here. -19 is
   // intended for use at the CBOR WG meeting at IETF 124.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-19"/>
        </reference>
      </references>
    </references>
    <?line 359?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Andy Bierman brought up the need for this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
