<?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.32 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-yang-metadata-00" category="std" consensus="true" submissionType="IETF" updates="9595" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="Metadata Annotations in YANG-CBOR">Representing metadata annotations in YANG-CBOR</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-yang-metadata-00"/>
    <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="March" day="14"/>
    <area>WIT (Web and Internet Transport)</area>
    <workgroup>core</workgroup>
    <abstract>
      <?line 47?>

<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-ietf-core-yang-metadata/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        core 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/draft-ietf-core-yang-metadata"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
          <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="2" month="March" year="2026"/>
            <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 -20
   // includes the definition of raw strings. -20 is intended for use at
   // IETF 125.

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

<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>
