<?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.19 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-t2t-senml-as-coreconf-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.0 -->
  <front>
    <title abbrev="SenML CORECONF">SenML is CORECONF (almost)</title>
    <seriesInfo name="Internet-Draft" value="draft-t2t-senml-as-coreconf-00"/>
    <author initials="M." surname="Gudi" fullname="Manoj Gudi">
      <organization>Institut MINES TELECOM; IMT Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie</street>
          <street>CS 17607</street>
          <city>35576 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>manoj.gudi@imt-atlantique.net</email>
      </address>
    </author>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <organization>Institut MINES TELECOM; IMT Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie</street>
          <street>CS 17607</street>
          <city>35576 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>Laurent.Toutain@imt-atlantique.fr</email>
      </address>
    </author>
    <author initials="" surname="Alejandro Fernadez" fullname="Alejandro Fernadez">
      <organization>Institut MINES TELECOM; IMT Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie</street>
          <street>CS 17607</street>
          <city>35576 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>javier-alejandro.fernandez-cordova@imt-atlantique.net</email>
      </address>
    </author>
    <author initials="" surname="Jean-Marie BONNIN" fullname="Jean-Marie BONNIN">
      <organization>Institut MINES TELECOM; IMT Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie</street>
          <street>CS 17607</street>
          <city>35576 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>jm.bonnin@imt-atlantique.fr</email>
      </address>
    </author>
    <date year="2024" month="September" day="12"/>
    <workgroup>t2t Research Group</workgroup>
    <abstract>
      <?line 76?>

<t>SenML is one of the data formats used by the Internet-of-Things (IoT) devices to send simple sensor readings and device parameters over the network. However, a lack of a YANG model for SenML means it cannot be used by the applications which already use YANG for data modeling and validation. Furthermore, some of the encoding formats and tools available for YANG models, cannot be used by the devices sending data in SenML format. This document provides one of the ways to model SenML data in YANG. Additionally, SenML data is encoded into CORECONF format using this YANG model to concisely represent the data.</t>
    </abstract>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In its simplest form, an IoT device consists of at least one sensor, and ability to send measurements of this sensor over the network. Occasionally, the device parameters can also be sent over the network to monitor and manipulate its behavior. Such devices are constrained on energy, network (in its availability as well as bandwidth), and data processing capabilities as they embed low power processors. Consequently, SenML is an appropriate choice for representing this nature of data from these devices.</t>
      <t>As much as SenML is useful in building simple IoT applications, a well-defined data model for the same would allow developers and engineers alike to build more complex data systems if the data can be modeled in YANG. Subsequently, the YANG model of SenML can leverage SID based CORECONF representation of its data to further reduce network footprint and improve its interoperability with other network devices.</t>
    </section>
    <section anchor="senml-format">
      <name>SenML Format</name>
      <t>SenML or Sensor Measurement Lists is an data format used by the constrained devices to send sensor information over the networks <xref target="RFC8428"/>. These measurements are often structured as key-value pairs where the keys (also known as fields) describe the associated sensor data. Each field has a well defined label, whether it is mandatory to be included and the permitted values it can carry. SenML also reduces sending redundant information over the network by introducing concepts such as base-name, base-unit, base-version, base-time and base-value.</t>
      <t>The format specifies how the application payload can be serialized in three popular formats before sending it over the network- JSON (JavaScript Object Notation) <xref target="RFC8259"/>, CBOR (Concise Binary Object Representation)<xref target="RFC8949"/> and XML (Extensible Markup Language).</t>
      <t>Although a SenML record has a well-defined Concise Data Definition Language (CDDL) for JSON and CBOR representations in section 11 of {RFC8428}}, the lack of an accompanying data model means it is harder to use it for applications with strict requirement for data organization and validation. Additionally, SenML CDDL cannot be used directly to extend to other  data formats such as CoAP Management Interface (CORECONF)<xref target="I-D.ietf-core-comi"/>.</t>
    </section>
    <section anchor="yang-model-language">
      <name>YANG Model Language</name>
      <t>YANG or Yet Another Next Generation is data modeling language used to describe the organization and constraints on the configuration and state data of the network devices. This data is typically exchanged using NETCONF or RESTCONF protocols <xref target="RFC7950"/>. As YANG models are considered de-facto interchange formats for a particular protocol (or application) which allows network device manufacturers to build inter-operable devices. YANG has rich data types, language features, and supports several extensions for constructing user-defined data types, recursive data models and allowing inheritance to reuse existing data models <xref target="RFC6095"/> among others.</t>
      <!--
YANG organizes the data hierarchically in a tree format. The fundamental element of a YANG module which contains data is called a leaf, and each leaf is associated with a well-defined data type. The relationship between these leaves are modeled using elements such as containers, lists, grouping, choice etc. The entire YANG model can be visualized as a tree using helpful tools such as pyang. YANG models also outline a way to encode into popular serialization formats such as JSON, CBOR and XML in {{RFC9254}}. 
-->

<t>Logically, to model SenML format into a YANG model, the measurements can be designed as YANG lists and each SenML record is a grouping containing leaves of SenML fields and values <xref target="RFC9254"/>. Additional constraints and rules can be added to the model ensuring conformance with SenML specification. Visually it can be represented as follows:</t>
      <table>
        <thead>
          <tr>
            <th align="left">SenML Element</th>
            <th align="left">YANG Equivalent</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Measurement</td>
            <td align="left">List</td>
          </tr>
          <tr>
            <td align="left">Field</td>
            <td align="left">Leaf</td>
          </tr>
          <tr>
            <td align="left">Label</td>
            <td align="left">Leaf Name</td>
          </tr>
          <tr>
            <td align="left">Value Type</td>
            <td align="left">Leaf Type</td>
          </tr>
          <tr>
            <td align="left">Record</td>
            <td align="left">Grouping/Container</td>
          </tr>
        </tbody>
      </table>
      <t>Section 11 of <xref target="RFC8428"/> specifies how SenML format is described for encoding into JSON, XML and CBOR. However, IoT devices which use YANG data models don't have any easy way to incorporate and validate their SenML measurements. Additionally, in absence of a YANG model, low powered devices which send measurements in SenML, cannot use CORECONF representation model without resorting to some sort of intermediate data processing. Hence, if SenML has a YANG model, these low powered devices can describe their data entirely in it. Their data can further be transformed in CORECONF, which complies with SenML-CBOR encoding rules before transmitting it over the network.</t>
      <t>To enable accurate, fast and efficient transmission of data conforming to YANG models, Schema Identifiers (known as SIDs) can be generated and assigned for each YANG element <xref target="I-D.ietf-core-sid"/> . These SIDs can be used to transform data in CORECONF format as demonstrated in <xref target="I-D.toutain-t2t-sid-extension"/>. An example of this is also described in <xref target="transforming-senml-to-coreconf">Transforming SenML to CORECONF</xref> below.</t>
    </section>
    <section anchor="yang-model-for-senml-considerations">
      <name>YANG Model for SenML: Considerations</name>
      <t>As described in <xref target="RFC8428"/>, SenML measurements consists of field and a value, and each field is identified by its label (which are different for JSON and CBOR). Each value has a well-defined data-type for encoding in JSON, in CBOR or in XML as outlined in <eref target="https://www.rfc-editor.org/rfc/rfc8428#section-12.2">section 12.2 RFC 8428</eref>.
Hence, to describe a generic SenML model in YANG, it is necessary to represent each field as a YANG leaf with the most appropriate YANG type associated with the type from the "XML Type" Column.</t>
      <t>A user data type is created in the YANG model to make XML Integer like type-definition. XML <eref target="https://www.w3.org/TR/xmlschema11-2/#double">Double type</eref> follows <eref target="https://ieeexplore.ieee.org/document/4610935">IEEE 754-2008 definition</eref>, which results in approximately 15 significant digits. However for the YANG model, XML Double is replaced by a Number type, which is a decimal64 type with 5 precision digits and has a range of [-92233720368547.75808, 92233720368547.75807]. This is chosen arbitrarily to balance precision and range in YANG but can be changed by the user later.</t>
      <ul spacing="normal">
        <li>
          <t>bn:<br/>
  Base Name, which is directly mapped to String</t>
        </li>
        <li>
          <t>bt:<br/>
  Base Time, which is mapped to closest type available in YANG, decimal64.</t>
        </li>
        <li>
          <t>bu:<br/>
  Base Unit, which can be mapped to string type in YANG with special rules where units can be restricted to ones listed in Section 12.1 (primary units) of <xref target="RFC8428"/> or can be extended to support secondary units described Section 3 in <xref target="RFC8798"/>.</t>
        </li>
        <li>
          <t>bv:<br/>
  Base Value, which can be mapped to decimal64 type in YANG, with precision of 5 digits. This can be overridden using redefine keyword when this YANG module is imported.</t>
        </li>
        <li>
          <t>bs:<br/>
  Base Sum, live Base Value, can be mapped to decimal64 type and its precision can be overridden later.</t>
        </li>
        <li>
          <t>bver:<br/>
  Base Version, which is an integer can be modeled union type to assume either as a int8, int16, int32 or int64 types.</t>
        </li>
        <li>
          <t>n:<br/>
  Name, modeled as string.</t>
        </li>
        <li>
          <t>u:<br/>
  Unit, modeled as string.</t>
        </li>
        <li>
          <t>leaves v,vs,vb,vd:<br/>
  Value, Value String, Value Boolean and Value Data, modeled as a choice type as exactly one field must appear unless there is a sum field, in which case it is allowed to have no value fields.</t>
        </li>
        <li>
          <t>s:<br/>
  Sum, mapped as a decimal64 with 5 digit precision.</t>
        </li>
        <li>
          <t>t:<br/>
  Time, mapped as a decimal64 with 5 digit precision. Although it is optional in SenML to provide time but for this YANG model, it is mandatory-leaf if measurement lists are used as time is the key for the measurements list (e).</t>
        </li>
        <li>
          <t>ut:<br/>
  Update Time, mapped as a decimal64 with 5 digit precision.</t>
        </li>
        <li>
          <t>list e:<br/>
  SenML measurement lists, labeled here as "e" (events) is mapped as a list type in YANG with constraint on time (t) as the key. Thus, t has to be present and unique in the measurement lists.</t>
        </li>
      </ul>
    </section>
    <section anchor="yang-model-for-senml-implementation">
      <name>YANG Model for SenML: Implementation</name>
      <sourcecode markers="true" name="senml.yang"><![CDATA[
{::include senml.yang}
]]></sourcecode>
      <t>The pyang tool can be used to visualize the YANG tree:</t>
      <artwork><![CDATA[
$ pyang -f tree senml.yang
module: senml
  +--rw e* [t]
     +--rw bn?         string
     +--rw bt?         decimal64
     +--rw bu?         string
     +--rw bv?         decimal64
     +--rw bs?         decimal64
     +--rw bver?       Integer
     +--rw n?          string
     +--rw u?          string
     +--rw (valueleaf)?
     |  +--:(v)
     |  |  +--rw v?    decimal64
     |  +--:(vs)
     |  |  +--rw vs?   string
     |  +--:(vb)
     |  |  +--rw vb?   boolean
     |  +--:(vd)
     |     +--rw vd?   string
     +--rw s?          decimal64
     +--rw t           decimal64
     +--rw ut?         decimal64
]]></artwork>
      <t>An example instance of JSON data instance for the above YANG model is presented below:</t>
      <artwork><![CDATA[
file "senml_example.json"
{::include senml_example.json}
]]></artwork>
      <t>It is possible to validate this YANG model against a SenML data in json encoding as shown below using yangson library:</t>
      <sourcecode type="python"><![CDATA[
<CODE BEGINS> file "validate_senml_yang.py"
{::include validate_senml_yang.py}
<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="transforming-senml-to-coreconf">
      <name>Transforming SenML to CORECONF</name>
      <t>Next, for the above YANG model, we can generate the SIDs using pyang tool starting from integer 60000, as follows:</t>
      <artwork><![CDATA[
$ pyang --sid-extension --sid-generate-file=60000:100 --sid-list senml.yang 

SID        Assigned to
---------  --------------------------------------------------
60000      module senml
60001      data /senml:e
60002      data /senml:e/bn
60003      data /senml:e/bs
60004      data /senml:e/bt
60005      data /senml:e/bu
60006      data /senml:e/bv
60007      data /senml:e/bver
60008      data /senml:e/n
60009      data /senml:e/s
60010      data /senml:e/t
60011      data /senml:e/u
60012      data /senml:e/ut
60013      data /senml:e/v
60014      data /senml:e/vb
60015      data /senml:e/vd
60016      data /senml:e/vs

File senml@unknown.sid created
Number of SIDs available : 100
Number of SIDs used : 17
]]></artwork>
      <t>However, we can modify the SIDs manually so that the resultant CORECONF will have deltas conforming to SenML-CBOR Labels as defined in section 12.2 of <xref target="RFC8428"/>:</t>
      <artwork><![CDATA[
SID        Assigned to
---------  --------------------------------------------------
60010      module senml
60000      data /senml:e
59998      data /senml:e/bn
59994      data /senml:e/bs
59997      data /senml:e/bt
59996      data /senml:e/bu
59995      data /senml:e/bv
59999      data /senml:e/bver
60000      data /senml:e/n
60005      data /senml:e/s
60006      data /senml:e/t
60001      data /senml:e/u
60007      data /senml:e/ut
60002      data /senml:e/v
60004      data /senml:e/vb
60008      data /senml:e/vd
60003      data /senml:e/vs
]]></artwork>
      <t>SID allocation rule states that for every unique YANG identifier, there is a corresponding unique SID number<xref target="I-D.ietf-core-sid"/>. This rule is broken here to ensure the delta for "n" is computed to be 0 to match SenML-CBOR label definition.
Hence, top-level key "e" and "n" have the same SID. However, "e" is not part of existing SenML label set as defined in the section 4.3 of <xref target="RFC8428"/>.</t>
      <t>The resulting CORECONF diagnostic format of the data instance is shown below:</t>
      <artwork><![CDATA[
{60000: [{-3: 1.001,
          -2: 'urn:dev:ow:10e2073a0108006:',
          0: 'temperature',
          1: 'Cel',
          2: 23.1,
          6: 1},
         {0: 'humidity',
          1: '%RH',
          2: 67.3,
          6: 2}]
}
]]></artwork>
      <t>Corresponding CBOR encoded hexadecimal is shown below:</t>
      <artwork><![CDATA[
CBOR Hex:

a119ea6082a621781b75726e3a6465763a6f773a3130653230373361303130383030363a22fb3ff004189374bc6a006b74656d7065726174757265016343656c02fb403719999999999a0601a4006868756d6964697479016325524802fb4050d333333333330602
]]></artwork>
      <t>If the module name contained in the first 4 bytes ("a119ea60") is removed, then the resultant CBOR conforms to SenML CBOR specification and can be easily parsed by SenML parsers.</t>
      <t>Thus, a SenML CBOR representation can be almost CORECONF representation just by adding 4 bytes of the encoded module name.</t>
      <t>Finally, a simple comparison of the JSON with the corresponding CORECONF-CBOR encoded form is shown below:</t>
      <table>
        <thead>
          <tr>
            <th align="left">4 byte module-name</th>
            <th align="left">JSON Size</th>
            <th align="left">CORECONF Size</th>
            <th align="left">Compression %</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Present</td>
            <td align="left">136 Bytes</td>
            <td align="left">104 Bytes</td>
            <td align="left">23.53</td>
          </tr>
          <tr>
            <td align="left">Absent</td>
            <td align="left">125 Bytes</td>
            <td align="left">100 Bytes</td>
            <td align="left">19.99</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="further-work">
      <name>Further work</name>
      <t>Some areas of future work have been identified to improve SenML YANG modelling-</t>
      <ol spacing="normal" type="1"><li>
          <t>Base units can be either modelled as enumerated type or identityref type, so they can be assigned a SID value. This should ideally further reduce the CORECONF-CBOR encoded message.</t>
        </li>
        <li>
          <t>Constraints on having leaves v, vs, vb, vd optional if s is available as described in Section 4.2 of <xref target="RFC8428"/></t>
        </li>
        <li>
          <t>Add secondary units described in <xref target="RFC8798"/> in the base units constraints.</t>
        </li>
        <li>
          <t>Uniqueness for SIDs can be restored by modifying SenML-CBOR label value for "n" to be any unused integer except 0.</t>
        </li>
      </ol>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC8428">
        <front>
          <title>Sensor Measurement Lists (SenML)</title>
          <author fullname="C. Jennings" initials="C." surname="Jennings"/>
          <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
          <author fullname="J. Arkko" initials="J." surname="Arkko"/>
          <author fullname="A. Keranen" initials="A." surname="Keranen"/>
          <author fullname="C. Bormann" initials="C." surname="Bormann"/>
          <date month="August" year="2018"/>
          <abstract>
            <t>This specification defines a format for representing simple sensor measurements and device parameters in Sensor Measurement Lists (SenML). Representations are defined in JavaScript Object Notation (JSON), Concise Binary Object Representation (CBOR), Extensible Markup Language (XML), and Efficient XML Interchange (EXI), which share the common SenML data model. A simple sensor, such as a temperature sensor, could use one of these media types in protocols such as HTTP or the Constrained Application Protocol (CoAP) to transport the measurements of the sensor or to be configured.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8428"/>
        <seriesInfo name="DOI" value="10.17487/RFC8428"/>
      </reference>
      <reference anchor="RFC8798">
        <front>
          <title>Additional Units for Sensor Measurement Lists (SenML)</title>
          <author fullname="C. Bormann" initials="C." surname="Bormann"/>
          <date month="June" year="2020"/>
          <abstract>
            <t>The Sensor Measurement Lists (SenML) media type supports the indication of units for a quantity represented. This short document registers a number of additional unit names in the IANA registry for units in SenML. It also defines a registry for secondary units that cannot be in SenML's main registry, as they are derived by linear transformation from units already in that registry.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8798"/>
        <seriesInfo name="DOI" value="10.17487/RFC8798"/>
      </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="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="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="RFC8259">
        <front>
          <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
          <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
          <date month="December" year="2017"/>
          <abstract>
            <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
            <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="90"/>
        <seriesInfo name="RFC" value="8259"/>
        <seriesInfo name="DOI" value="10.17487/RFC8259"/>
      </reference>
      <reference anchor="RFC6095">
        <front>
          <title>Extending YANG with Language Abstractions</title>
          <author fullname="B. Linowski" initials="B." surname="Linowski"/>
          <author fullname="M. Ersue" initials="M." surname="Ersue"/>
          <author fullname="S. Kuryla" initials="S." surname="Kuryla"/>
          <date month="March" year="2011"/>
          <abstract>
            <t>YANG -- the Network Configuration Protocol (NETCONF) Data Modeling Language -- supports modeling of a tree of data elements that represent the configuration and runtime status of a particular network element managed via NETCONF. This memo suggests enhancing YANG with supplementary modeling features and language abstractions with the aim to improve the model extensibility and reuse. This document defines an Experimental Protocol for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6095"/>
        <seriesInfo name="DOI" value="10.17487/RFC6095"/>
      </reference>
      <reference anchor="I-D.ietf-core-sid">
        <front>
          <title>YANG Schema Item iDentifier (YANG SID)</title>
          <author fullname="Michel Veillette" initials="M." surname="Veillette">
            <organization>Trilliant Networks Inc.</organization>
          </author>
          <author fullname="Alexander Pelov" initials="A." surname="Pelov">
            <organization>IMT Atlantique</organization>
          </author>
          <author fullname="Ivaylo Petrov" initials="I." surname="Petrov">
            <organization>Google Switzerland GmbH</organization>
          </author>
          <author fullname="Carsten Bormann" initials="C." surname="Bormann">
            <organization>Universität Bremen TZI</organization>
          </author>
          <author fullname="Michael Richardson" initials="M." surname="Richardson">
            <organization>Sandelman Software Works</organization>
          </author>
          <date day="22" month="December" year="2023"/>
          <abstract>
            <t>   YANG Schema Item iDentifiers (YANG SID) are globally unique 63-bit
   unsigned integers used to identify YANG items, as a more compact
   method to identify YANG items that can be used for efficiency and in
   constrained environments (RFC 7228).  This document defines the
   semantics, the registration, and assignment processes of 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.


   // The present version (–24) is intended to address the remaining
   // IESG comments.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-core-sid-24"/>
      </reference>
      <reference anchor="I-D.ietf-core-comi">
        <front>
          <title>CoAP Management Interface (CORECONF)</title>
          <author fullname="Michel Veillette" initials="M." surname="Veillette">
            <organization>Trilliant Networks Inc.</organization>
          </author>
          <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
            <organization>consultant</organization>
          </author>
          <author fullname="Alexander Pelov" initials="A." surname="Pelov">
            <organization>IMT Atlantique</organization>
          </author>
          <author fullname="Andy Bierman" initials="A." surname="Bierman">
            <organization>YumaWorks</organization>
          </author>
          <author fullname="Carsten Bormann" initials="C." surname="Bormann">
            <organization>Universität Bremen TZI</organization>
          </author>
          <date day="23" month="July" year="2024"/>
          <abstract>
            <t>   This document describes a network management interface for
   constrained devices and networks, called CoAP Management Interface
   (CORECONF).  The Constrained Application Protocol (CoAP) is used to
   access datastore and data node resources specified in YANG, or SMIv2
   converted to YANG.  CORECONF uses the YANG to CBOR mapping and
   converts YANG identifier strings to numeric identifiers for payload
   size reduction.  CORECONF extends the set of YANG based protocols,
   NETCONF and RESTCONF, with the capability to manage constrained
   devices and networks.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-core-comi-18"/>
      </reference>
      <reference anchor="I-D.toutain-t2t-sid-extension">
        <front>
          <title>SID Extension to efficiently manipulate YANG Data Models</title>
          <author fullname="Laurent Toutain" initials="L." surname="Toutain">
            <organization>Institut MINES TELECOM; IMT Atlantique</organization>
          </author>
          <author fullname="Manoj G" initials="M." surname="G">
            <organization>Institut MINES TELECOM; IMT Atlantique</organization>
          </author>
          <author fullname="Javier Alejandro FERNANDEZ" initials="J. A." surname="FERNANDEZ">
            <organization>Institut MINES TELECOM; IMT Atlantique</organization>
          </author>
          <date day="26" month="March" year="2024"/>
          <abstract>
            <t>   As the Internet of Things (IoT) systems are becoming more pervasive
   with their rapid adoption, they are also becoming more complex in
   their architecture.  Hence, a tool is required to generate prototype
   code based on the YANG models for constrained devices [RFC7228] to
   improve interoperability and increase the reusability of software
   components.  A novel approach is introduced in this document to
   generate software prototypes (also called stubs) in the C language
   for the CORECONF protocol [I-D.ietf-core-comi] using YANG Schema Item
   iDentifiers (YANG SID [I-D.ietf-core-sid]).  These stubs greatly
   reduce the complexity of navigating the CORECONF structure by
   abstracting the corresponding YANG SIDs.  This document elaborates on
   the procedure to generate YANG SIDs for a given YANG model of a
   system, which then generates C stubs using the tools developed by the
   authors with the help of an example (sensor.yang file).

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-toutain-t2t-sid-extension-00"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
