<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mendez-opsawg-yang-normalization-00" category="std" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="yang-normalization">Normalized Representation of YANG Data for Equivalence Evaluation</title>
    <seriesInfo name="Internet-Draft" value="draft-mendez-opsawg-yang-normalization-00"/>
    <author fullname="Ana Méndez">
      <organization>Telefonica</organization>
      <address>
        <email>ana.mendezperez@telefonica.com</email>
      </address>
    </author>
    <author fullname="Diego López">
      <organization>Telefonica</organization>
      <address>
        <email>diego.r.lopez@telefonica.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="22"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>normalization</keyword>
    <keyword>datastore</keyword>
    <keyword>equivalent representation</keyword>
    <abstract>
      <?line 56?>

<t>This document defines a normalization procedure for YANG-modeled information. The procedure enables different serialized representations conveying equivalent information to produce the same normalized representation independently of the input encoding and applicable representation conventions. The normalized representation is intended to support comparison, hashing, integrity verification, provenance, and other procedures that require consistent representation of equivalent YANG-modeled information.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ana-mp26.github.io/yang-state-normalization/draft-mendez-opsawg-yang-normalization.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mendez-opsawg-yang-normalization/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Operations and Management Area Working Group Working Group mailing list (<eref target="mailto:opsawg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/opsawg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ana-mp26/yang-state-normalization"/>.</t>
    </note>
  </front>
  <middle>
    <?line 61?>

<section anchor="intro">
      <name>Introduction</name>
      <t>YANG is widely used to model configuration data, operational state, notifications, and other information exchanged between network management systems.</t>
      <t>Data modeled using YANG can be represented through different encodings, including XML, JSON, and CBOR. Furthermore, equivalent YANG-modeled information may be serialized differently by distinct implementations due to representation-specific conventions, ordering choices, or encoding mechanisms.</t>
      <t>These differences make it difficult to determine whether two representations convey the same information. As a result, operations such as datastore comparison, data deduplication, fingerprint generation, integrity verification, provenance processing, and message-broker compaction often depend on representation-specific artifacts rather than on the underlying information itself.</t>
      <t>Existing canonicalization mechanisms operate at the encoding level. For example, XML, JSON, and CBOR provide independent procedures for producing deterministic encodings of individual documents. However, these mechanisms do not address the broader problem of obtaining a common representation across different encodings.</t>
      <t>This document defines a normalization procedure for YANG-modeled information that produces a deterministic representation independent of the original encoding. The procedure enables equivalent YANG-modeled information to converge into the same normalized representation, providing a stable basis for comparison, fingerprint generation, integrity verification, and other operational uses.</t>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document focuses on representation equivalence of YANG-modeled data.
The procedure defined in this document is intended to identify when different serialized representations convey equivalent information. Semantic equivalence is outside the scope of this document.</t>
      </section>
    </section>
    <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="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<ul spacing="normal">
        <li>
          <t>Representation: A concrete serialized einstance of YANG-modeled data. Examples include XML, JSON, and CBOR encodings conveying the same underlying information.</t>
        </li>
        <li>
          <t>Normalized Representation: A deterministic representation generated by the normalization procedure defined in this document.</t>
        </li>
        <li>
          <t>Representation Equivalence: Two representations are representation-equivalent when they produce identical normalized representations.</t>
        </li>
        <li>
          <t>Fingerprint: A cryptographic digest calculated from a normalized representation.</t>
        </li>
        <li>
          <t>Schema-Independent Normalization: A normalization procedure that does not require access to the corresponding YANG schema during processing.</t>
        </li>
        <li>
          <t>Semantic Equivalence: The property whereby two representations correspond to the same YANG-modeled information after considering all schema-dependent semantics.</t>
        </li>
      </ul>
    </section>
    <section anchor="problem-statement">
      <name>Problem Statement</name>
      <t>YANG-modeled data can be represented using different encodings, including XML <xref target="RFC7950"/>, JSON <xref target="RFC7951"/>, and CBOR <xref target="RFC9254"/>.</t>
      <t>Existing canonicalization mechanisms operate within a particular encoding and produce deterministic representations of individual documents. Examples include XML Canonicalization (XML-C14N), the JSON Canonicalization Scheme (JCS) <xref target="RFC8785"/>, and the deterministic encoding rules defined for CBOR <xref target="RFC8949"/>.</t>
      <t>These mechanisms enable a representation expressed using a particular encoding to be transformed into a deterministic byte sequence. However, they do not provide a common representation across different encodings, nor do they necessarily address all representation variations that may arise from encoding rules or implementation choices.</t>
      <t>Ordering is one possible source of such variation. These differences may arise from implementation choices, internal datastore representations, module augmentations, or serialization procedures.</t>
      <t>For example, one implementation may produce:</t>
      <sourcecode type="xml"><![CDATA[
<aaa>
  <bbb/>
  <ccc/>
  <ddd/>
</aaa>
]]></sourcecode>
      <t>while another implementation may produce:</t>
      <sourcecode type="xml"><![CDATA[
<aaa>
  <ddd/>
  <bbb/>
  <ccc/>
</aaa>
]]></sourcecode>
      <t>If the order of these nodes is not semantically significant, both serialized representations convey equivalent information despite having different element ordering and byte sequences.</t>
      <t>As a result, equivalent YANG-modeled information may produce different serialized representations and therefore different fingerprints, hashes, or signatures. Direct comparison of serialized representations cannot reliably determine whether two representations convey the same information.</t>
      <t>A normalization procedure operating above the encoding-specific representation layer is therefore needed to enable representation-independent comparison of YANG-modeled data.</t>
      <section anchor="operational-use-cases">
        <name>Operational Use Cases</name>
        <t>The absence of a representation-independent form of YANG-modeled data affects several operational scenarios, including:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Datastore State Comparison:</strong>  Network management systems frequently compare datastore snapshots obtained from different devices, controllers, or processing stages. Equivalent YANG-modeled data represented through different encodings or ordering conventions may appear different when compared directly, despite conveying the same information.</t>
          </li>
          <li>
            <t><strong>Message Broker Applications:</strong> YANG-modeled information is increasingly exchanged through message broker infrastructures and data distribution systems. Consistent representation of equivalent information can support operations such as message deduplication, topic compaction, change detection, and content synchronization.</t>
          </li>
          <li>
            <t><strong>Data Synchronization and Replication:</strong> Operational environments frequently exchange YANG-modeled data between multiple systems. A deterministic normalized representation can simplify data comparison, synchronization procedures, and consistency verification across distributed environments.</t>
          </li>
          <li>
            <t><strong>Data Deduplication:</strong> Storage and processing systems may benefit from the ability to identify equivalent information independently of the original representation. A normalized representation provides a stable basis for content identification and deduplication.</t>
          </li>
          <li>
            <t><strong>Provenance and Integrity Verification:</strong> Where stable and deterministic representations are required to generate reproducible fingerprints, hashes, and signatures and provenance records.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="normalization-procedure">
      <name>Normalization Procedure</name>
      <t>The normalization procedure takes a serialized YANG data document as input and produces a deterministic normalized representation.</t>
      <section anchor="abstract-syntax-tree">
        <name>Abstract Syntax Tree</name>
        <t>The procedure parses the input document according to its encoding and constructs an abstract syntax tree (AST) of the serialized data representation. Abstract syntax trees are described in Section 1.1 of <xref target="Harper2016"/>.</t>
        <t>For the purposes of this document, the AST does not represent every detail of the concrete input syntax. It preserves only the structural and content-related information required by the normalization procedure. This information consists of node identifiers, textual values, hierarchical relationships, and node multiplicity.</t>
        <t>The AST provides a common, encoding-independent representation of serialized YANG-modeled data. It is constructed without consulting a YANG schema. Consequently, it represents the observable structure and textual values exposed by the serialized document but does not resolve schema-dependent YANG semantics.</t>
        <t>The tree contains a synthetic document root. The synthetic root provides a common container for the top-level nodes of the serialized input document. It does not correspond to a YANG data node and uses an empty identifier reserved for this purpose.</t>
        <t>Each node below the synthetic document root has a non-empty identifier and is one of the following:</t>
        <ul spacing="normal">
          <li>
            <t>a leaf node, which contains a textual value and has no child nodes;</t>
          </li>
          <li>
            <t>an inner node, which contains zero or more child nodes and has no textual value.</t>
          </li>
        </ul>
        <t>A node cannot contain both a textual value and child nodes.
The abstract syntax tree preserves node multiplicity. Multiple nodes may have the same identifier, and identical nodes are not implicitly removed.</t>
      </section>
      <section anchor="tree-construction">
        <name>Tree Construction</name>
        <t>The input document is first parsed according to the syntax and structure of the selected encoding. Malformed input or an unsupported document structure causes normalization to fail.</t>
        <t>The procedure creates the synthetic document root and adds the top-level data nodes obtained from the serialized document as its children.</t>
        <t>The following conceptual rules are then applied:</t>
        <ol spacing="normal" type="1"><li>
            <t>An XML element, JSON object member, or CBOR map entry that contains nested data is represented as an inner node.</t>
          </li>
          <li>
            <t>An XML element, JSON object member, or CBOR map entry that contains a scalar value is represented as a leaf node.</t>
          </li>
          <li>
            <t>The name exposed by the input encoding is used to derive the node identifier.</t>
          </li>
          <li>
            <t>A sequence of data items is represented as sibling nodes having the identifier associated with the sequence. The sequence itself does not produce an additional node.</t>
          </li>
          <li>
            <t>An empty sequence produces no nodes.</t>
          </li>
          <li>
            <t>An empty structured value is represented as an inner node having no children.</t>
          </li>
          <li>
            <t>The encoding-specific representation of the YANG <tt>empty</tt> type is represented as a leaf having an empty textual value.</t>
          </li>
          <li>
            <t>Scalar values are converted to textual form.</t>
          </li>
          <li>
            <t>The same construction rules are applied to every nested data item until the complete abstract data tree has been constructed.</t>
          </li>
        </ol>
        <t>These rules are recursive in definition. An implementation is not required to use recursion internally, provided that it produces the same abstract data tree.</t>
        <t>XML attributes are not represented in the abstract data tree defined by this version, the treatment of attributes is TBD. XML elements and their textual content are processed as data-tree nodes and values, respectively.</t>
        <t><strong>TBD:</strong>  Specify the treatment of YANG metadata annotations, namespace-qualified identifiers, namespace declarations, format-specific constructs, and malformed or unsupported input structures.
This initial version focuses on the fundamental normalization procedure. The treatment of schema-specific semantics, including default values, identityref and leafref resolution, and ordered-by-user semantics, is TBD.
Further versions of this document are expected to determine whether these aspects require specific normalization rules or are inherently addressed by the general normalization procedure.
Where specific handling is required to preserve equivalence, the corresponding rules will be incorporated into the normalization procedure.</t>
        <t>The same YANG-modeled information <bcp14>MUST</bcp14> produce the same normalized representation regardless of the original serialization format.</t>
        <artwork><![CDATA[
       Serialized YANG Data Document
             XML / JSON / CBOR
                      |
                      v
          Encoding-Specific Parsing
                      |
                      v
            Abstract Data Tree
                      |
                      v
       Identifier and Value Processing
                      |
                      v
     Deterministic Subtree Encoding
                      |
                      v
            Child Node Sorting
                      |
                      v
       Normalized Byte Representation
                      |
                      v
    Comparison / Hashing / Signing /...
]]></artwork>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section illustrates how equivalent YANG-modeled data represented using different serialization formats and encodings can produce the same normalized representation.
The following XML and JSON representations examples are based on the interface data model originally defined in <xref target="RFC7223"/> and convey equivalent information.</t>
      <sourcecode type="xml"><![CDATA[
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
    xmlns:iana-if-type="urn:ietf:params:xml:ns:yang:iana-if-type"
    xmlns:vlan="http://example.com/vlan">
  <interface>
    <name>eth0</name>
    <type>iana-if-type:ethernetCsmacd</type>
    <enabled>false</enabled>
  </interface>
  <interface>
    <name>eth1</name>
    <type>iana-if-type:ethernetCsmacd</type>
    <enabled>true</enabled>
    <vlan:vlan-tagging>true</vlan:vlan-tagging>
  </interface>
  <interface>
    <name>eth1.10</name>
    <type>iana-if-type:l2vlan</type>
    <enabled>true</enabled>
    <vlan:base-interface>eth1</vlan:base-interface>
    <vlan:vlan-id>10</vlan:vlan-id>
  </interface>
  <interface>
    <name>lo1</name>
    <type>iana-if-type:softwareLoopback</type>
    <enabled>true</enabled>
  </interface>
</interfaces>
]]></sourcecode>
      <sourcecode type="json"><![CDATA[
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "enabled": true,
        "name": "lo1",
        "type": "iana-if-type:softwareLoopback"
      },
      {
        "vlan:vlan-id": 10,
        "enabled": true,
        "type": "iana-if-type:l2vlan",
        "vlan:base-interface": "eth1",
        "name": "eth1.10"
      },
      {
        "enabled": false,
        "type": "iana-if-type:ethernetCsmacd",
        "name": "eth0"
      },
      {
        "vlan:vlan-tagging": true,
        "name": "eth1",
        "enabled": true,
        "type": "iana-if-type:ethernetCsmacd"
      }
    ]
  }
}
]]></sourcecode>
      <t>The following non-normative textual tree illustrates the intended outcome: equivalent XML, JSON, and CBOR representations are expected to produce the same normalized representation.</t>
      <sourcecode type="text"><![CDATA[
interfaces
├─ interface
│  ├─ enabled = true
│  ├─ name = lo1
│  └─ type = iana-if-type:softwareLoopback
├─ interface
│  ├─ enabled = false
│  ├─ name = eth0
│  └─ type = iana-if-type:ethernetCsmacd
├─ interface
│  ├─ enabled = true
│  ├─ name = eth1
│  ├─ type = iana-if-type:ethernetCsmacd
│  └─ vlan-tagging = true
└─ interface
   ├─ base-interface = eth1
   ├─ enabled = true
   ├─ name = eth1.10
   ├─ type = iana-if-type:l2vlan
   └─ vlan-id = 10
]]></sourcecode>
    </section>
    <section anchor="relationship-to-existing-work">
      <name>Relationship to Existing Work</name>
      <t>The normalization procedure defined in this document is intended to complement existing efforts related to the processing, identification, and distribution of YANG-modeled information.</t>
      <t>The YANG provenance mechanisms defined in <xref target="I-D.ietf-opsawg-yang-provenance"/> operate on serialized representations of YANG data and can benefit from a stable, representation-independent normalization procedure capable of producing equivalent representations across different serialization formats.</t>
      <t>Similarly, work related to message broker identification and key generation for YANG-modeled information, such as <xref target="I-D.ietf-nmop-yang-message-broker-message-key"/>, may benefit from a normalization procedure that produces stable representations for equivalent information independently of their original encoding.</t>
      <t>This document does not modify or replace such mechanisms. Instead, it provides a potential foundation that can be used by higher-level procedures requiring consistent representation of equivalent YANG-modeled information.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The normalization procedure defined in this document is intended to provide a deterministic representation of YANG-modeled data. It does not, by itself, provide integrity, authenticity, confidentiality, or provenance guarantees.</t>
      <t>Security properties may be obtained by applying appropriate mechanisms, such as cryptographic hash functions, digital signatures, or provenance procedures, to the resulting normalized representation.
Implementations relying on the normalized representation for integrity verification or provenance applications <bcp14>MUST</bcp14> use cryptographically secure algorithms appropriate for the intended use case.
Incorrect normalization procedures may result in different representations producing the same normalized output or in equivalent information producing different normalized representations. Such situations may negatively affect comparison, fingerprint generation, and verification procedures.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation status</name>
      <t>An open-source reference implementation, written in Java, is available at https://github.com/tefiros/yang-data-normalization.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="Harper2016">
          <front>
            <title>Practical Foundations for Programming Languages</title>
            <author initials="R." surname="Harper" fullname="Robert Harper">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="Second Edition" value=""/>
          <refcontent>Cambridge University Press, ISBN 978-1-107-15030-0</refcontent>
        </reference>
        <reference anchor="RFC7223">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes configuration data and state data (status information and counters for the collection of statistics).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7223"/>
          <seriesInfo name="DOI" value="10.17487/RFC7223"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </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="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="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>
        <reference anchor="I-D.ietf-opsawg-yang-provenance">
          <front>
            <title>Applying COSE Signatures for YANG Data Provenance</title>
            <author fullname="Diego Lopez" initials="D." surname="Lopez">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Antonio Pastor" initials="A." surname="Pastor">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Alex Huang Feng" initials="A. H." surname="Feng">
              <organization>Deutsche Telekom</organization>
            </author>
            <author fullname="Ana Méndez Pérez" initials="A. M." surname="Pérez">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document defines a mechanism based on CBOR Object Signing and
   Encryption (COSE) signatures to provide and verify the provenance of
   YANG data, so it is possible to verify the origin and integrity of a
   dataset, even when those data are going to be processed and/or
   applied in workflows where a crypto-enabled data transport directly
   from the original data source is not available.  As the application
   of evidence-based OAM automation and the use of tools such as AI/ML
   grow, provenance validation becomes more relevant in all scenarios,
   in support of the assuring the origin and integrity of data.  The use
   of compact signatures facilitates the inclusion of provenance strings
   in any YANG schema requiring them.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-yang-provenance-07"/>
        </reference>
        <reference anchor="I-D.ietf-nmop-yang-message-broker-message-key">
          <front>
            <title>YANG Message Keys for Message Broker Integration</title>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <author fullname="Ahmed Elhassany" initials="A." surname="Elhassany">
              <organization>Swisscom</organization>
            </author>
            <author fullname="Alex Huang Feng" initials="A. H." surname="Feng">
              <organization>Deutsche Telekom</organization>
            </author>
            <author fullname="Benoît Claise" initials="B." surname="Claise">
              <organization>Everything OPS</organization>
            </author>
            <author fullname="Paolo Lucente" initials="P." surname="Lucente">
              <organization>NTT</organization>
            </author>
            <date day="2" month="July" year="2026"/>
            <abstract>
              <t>   This document specifies a mechanism to define a unique Message key
   for a YANG to Message Broker integration and a topic addressing
   scheme based on YANG-Push subscription type and YANG Schema Node
   Identifier.  This enables YANG data consumption of a subset of
   subscribed YANG data, either per specific YANG data node, identifier
   or telemetry message type, by indexing and organizing in Message
   Broker topics.  It helps to index the information by using data
   taxonomy and organizes data in partitions and shards of Message
   Brokers and time series databases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-nmop-yang-message-broker-message-key-02"/>
        </reference>
      </references>
    </references>
    <?line 368?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document is based on work partially funded by the EU Horizon Europe projects CYBERNEMO (grant 101168182) and 3C4AI (grant 101298630).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
