<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.18 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc strict="yes"?>
<?rfc compact="yes"?>

<rfc ipr="trust200902" docName="draft-t2t-senml-as-coreconf-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SenML CORECONF">SenML is CORECONF (almost)</title>

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

<texttable>
      <ttcol align='left'>SenML Element</ttcol>
      <ttcol align='left'>YANG Equivalent</ttcol>
      <c>Measurement</c>
      <c>List</c>
      <c>Field</c>
      <c>Leaf</c>
      <c>Label</c>
      <c>Leaf Name</c>
      <c>Value Type</c>
      <c>Leaf Type</c>
      <c>Record</c>
      <c>Grouping/Container</c>
</texttable>

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

<t><list style="symbols">
  <t>bn:<br />
  Base Name, which is directly mapped to String</t>
  <t>bt:<br />
  Base Time, which is mapped to closest type available in YANG, decimal64.</t>
  <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>
  <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>
  <t>bs:<br />
  Base Sum, live Base Value, can be mapped to decimal64 type and its precision can be overridden later.</t>
  <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>
  <t>n:<br />
  Name, modeled as string.</t>
  <t>u:<br />
  Unit, modeled as string.</t>
  <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>
  <t>s:<br />
  Sum, mapped as a decimal64 with 5 digit precision.</t>
  <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>
  <t>ut:<br />
  Update Time, mapped as a decimal64 with 5 digit precision.</t>
  <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>
</list></t>

</section>
<section anchor="yang-model-for-senml-implementation"><name>YANG Model for SenML: Implementation</name>

<figure><artwork><![CDATA[
<CODE BEGINS> file "senml.yang"
module senml {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:senml";

  prefix sen;

  organization
    "LWM2M Working Group";

  typedef Integer {
    type union{
      type int8;
      type int16;
      type int32;
      type int64;
    }
  }

  typedef Number {
    type decimal64{
      fraction-digits "5";
    }
  }

  grouping senml-grouping {
    leaf bn {
      type string;
    }

    leaf bt {
      type Number;
    }

    leaf bu {
      type string;
      must "(. = 'm' or . = 'kg' or . = 'g' or . = 's' or . = 'A' or . = 'K' 
      or . = 'cd' or . = 'mol' or . = 'Hz' or . = 'rad' or . = 'sr' or . = 'N' 
      or . = 'Pa' or . = 'J' or . = 'W' or . = 'C' or . = 'V' or . = 'F' or . = 'Ohm' 
      or . = 'S' or . = 'Wb' or . = 'T' or . = 'H' or . = 'Cel' or . = 'lm' or . = 'lx' 
      or . = 'Bq' or . = 'Gy' or . = 'Sv' or . = 'kat' or . = 'm2' or . = 'm3' 
      or . = 'l' or . = 'm/s' or . = 'm/s2' or . = 'm3/s' or . = 'l/s' or . = 'cd/m2' 
      or . = 'W/m2' or . = 'bit' or . = 'bit/s' or . = 'lat' or . = 'lon' or . = 'pH' 
      or . = 'dB' or . = 'dBW' or . = 'Bspl' or . = 'count' or . = '/' or . = '%' 
      or . = '%RH' or . = '%EL' or . = 'EL' or . = '1/s' or . = '1/min' or . = 'beat/min' 
      or . = 'beats' or . = 'S/m' )" {
        description
          "The unit must be from the approved unit list";
        error-message
          "Invalid unit. Unit must be one from SenML Units Registry";
      }
    }

    leaf bv {
      type Number;
    }

    leaf bs {
      type Number;
    }

    leaf bver {
      type Integer;
    }

    leaf n {
      type string;
    }

    leaf u {
      type string;
    }

    choice valueleaf {
      description
        "Exactly one Value field MUST appear unless there is a
         Sum field, in which case it is allowed to have no Value field";
      leaf v {
        type Number;
      }

      leaf vs {
        type string;
      }

      leaf vb {
        type boolean;
      }

      leaf vd {
        type string;
      }
    }

    leaf s {
      type Number;
    }

    leaf t {
      type Number;
    }

    leaf ut {
      type Number;
    }
  }

  list e {
    key t;
    uses senml-grouping;
    min-elements 0;
    max-elements unbounded;
  }
}
<CODE ENDS>
]]></artwork></figure>

<t>The pyang tool can be used to visualize the YANG tree:</t>

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

<t>An example instance of JSON data instance for the above YANG model is presented below:</t>

<figure><artwork><![CDATA[
file "senml_example.json"
{
    "senml:e": [
        {
            "bn": "urn:dev:ow:10e2073a0108006:",
            "bt": 1220076.10,
            "n": "temperature",
            "u": "Cel",
            "v": 23.1,
            "t" : 1
        },
        {
            "n": "humidity",
            "u": "%RH",
            "v": 67.3,
            "t": 2
        }
    ]
}
]]></artwork></figure>

<t>It is possible to validate this YANG model against a SenML data in json encoding as shown below using yangson library:</t>

<figure><sourcecode type="python"><![CDATA[
<CODE BEGINS> file "validate_senml_yang.py"
import json
import yangson

from yangson import DataModel as DM
from yangson.enumerations import ContentType

# This function is required to convert all numerical values to strings due to yangson's strict typing 
def convert_numbers_to_strings(d):
    for key, value in d.items():
        if isinstance(value, (int, float)):
            d[key] = str(float(value))
        elif isinstance(value, dict):
            convert_numbers_to_strings(value)  # Recursive call for nested dictionaries
        elif isinstance(value, list):
            for item in value:
                convert_numbers_to_strings(item)
    return d

# Create a data model from model definition in JSON format and path to YANG modules
dm = DM.from_file("./yang-library-senml.json", ["./"])

# Load the SenML data in JSON format
jsonData = json.load(open("senml_example.json"))

jsonData = convert_numbers_to_strings(jsonData)
rootInstanceNode = dm.from_raw(jsonData)

# Validate the root instance node
try:
    rootInstanceNode.validate(ctype=ContentType.all)
    print("Validation successful")
except:
    print("Validation failed")
<CODE ENDS>
]]></sourcecode></figure>

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

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

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

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

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

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

<t>Corresponding CBOR encoded hexadecimal is shown below:</t>

<figure><artwork><![CDATA[
CBOR Hex:

a119ea6082a621781b75726e3a6465763a6f773a3130653230373361303130383030363a22fb3ff004189374bc6a006b74656d7065726174757265016343656c02fb403719999999999a0601a4006868756d6964697479016325524802fb4050d333333333330602
]]></artwork></figure>

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

<texttable>
      <ttcol align='left'>4 byte module-name</ttcol>
      <ttcol align='left'>JSON Size</ttcol>
      <ttcol align='left'>CORECONF Size</ttcol>
      <ttcol align='left'>Compression %</ttcol>
      <c>Present</c>
      <c>136 Bytes</c>
      <c>104 Bytes</c>
      <c>23.53</c>
      <c>Absent</c>
      <c>125 Bytes</c>
      <c>100 Bytes</c>
      <c>19.99</c>
</texttable>

</section>
<section anchor="further-work"><name>Further work</name>

<t>Some areas of future work have been identified to improve SenML YANG modelling-</t>

<t><list style="numbers" type="1">
  <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>
  <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>
  <t>Add secondary units described in <xref target="RFC8798"/> in the base units constraints.</t>
  <t>Uniqueness for SIDs can be restored by modifying SenML-CBOR label value for "n" to be any unused integer except 0.</t>
</list></t>

</section>


  </middle>

  <back>



    <references title='Normative References' anchor="sec-normative-references">



<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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
F5Q4pzsXcrCNcnEViOwqymOkckYxkyIf3Yis0JBwRg7Y/FoqYxdcaAURPvjC
35jxzfCqLR7BszYDpRjALsCgIiYU0mKsZexXPWa1onyWPf0RM2sgH+FD8esy
WiAxjZEFru4H0mBh0ACSzb4kelguBAG9xJAO8p2nKe9+BeiIl+i1+YRKNyLK
xDKRDgJY18zLHnWcrcTQJbXmc6luy7yapAv0wUzeZU3DrRE30aIJ7YrdBhgG
NAbiLVaAEGDCEd3V+Q35GzjVm/Nrfga3UWQLjGRJ7DFVQbv71A/9qtgFgtCc
7HoI1IXjkavhTRxTSGownirUgrTabiG6dXk6cJE6OGzdOBUa0BI3AfOe68pf
044he7ekijEYW1S3HEGy79xtJAQPjidLSaGK5thJl5tNlqMQkWdOhMue+AjM
GwxfgXLAzrwefhjgIKkl2Mqt9ASBIw46FVmvFERHFZhr4jFyidol78GV1nXR
cABzQTQ8EGDestCjl/77v4WhFUkSIqmr6GQFKTxWrQzbwS4AfmhXq2wCntFn
oHbgURPWk1q+VQI5mSFwdMwrK5FCuOi6MCRfMvkkukT8SeFA5TfJRLTFa0gw
xiSXCduTldqA0hd3UqYmZASAWxMq21iLRddgXKm8wRGoAxzGsKQnbrFmB5N7
NmCVxYJ3xHg1r8VmxhltlS6NMyJLTVTjHVcy2WCAymme3XazA2nq13UDfTRk
4mAAJJ48YsNFCRbnV9a9WdfHut00YmjsjZ+yXgc4STKBVQPUSsiwvguCV9kt
c7rXzP+MP6ZN/USa3UEtijIEAPuExRE6Ps0nWlYcrnkz5LSjsuUAmT1mmwt4
ObiyDgCDm9oxKkdQs4A4PQcpdMhFccxWlLCnc4KGlrnZnU6LWkUyxzubUGRh
XM5b4i/qRGGBOi/Kh15mZH2wYvIZ8tfgswF0blTkM5PlHJwdHAXewLTPOM2P
iwVMw9hY1P9g1gsKGu0fzEKN2Zv1CiPI5qwrTGn8WW8puMVaszfL/nSz3jCv
HKyXhl+HZ1ZjYNaTJ08CDPVr0UMVPjQiurpwaefUYjKUrjhCYsdSjMJr4xav
zFPl+rZK46ozvh2Ms/RxAcZ8i2EnuLFI76xaQRid5WC30SV68QX5V+UVi5yg
N8MONI6Qs6HYNKpNvSpH9lIXRnO/0mArNq7Mgyd5KKNj2UUxBTsBg3jNQQl0
xmUm/E1pHzq3tYyV8/hVcg9kRKx7mJfyMTm4bGg5GtGWY6Dw+7GIMgEbW0Z2
Goo9hR3CJTb3xEU5RIooAxy426P2nM+AFBoFplLGkGyZEw9WbRPaEzTMfx6I
7zHBQCNKTh6CVwyI4OxLrAiRcVqCkiuqPzEkuodxVQhjHQyNa1W568VKriNx
EePRQcQhuOi6rBCSc8gJjaW45UDP5Gzg49hSksyjbSSw1pU2w0sIlUCPbAKL
cC1YGxo6grqyXbMOF6GqrdlCFkx23ubBwi9Z1xSii4gqKbYcpoyXqhQXQL27
sQggmVikvGLg++6jwptgLvOKzF3mHcBhQNSAU/UQ2hVtZ1RewpCR3T3VgWoo
fPIzln3drRUEOf0mTrBT8eIQHsODWq5SOQKLIZSci66JNEHyYrVcytxmLbUM
68Bk+lxFaMndkFEhBjJNw2fMHvIQZZ5qHGwEtQ0NmOYuYRv1R1j5F3j6991V
UWz07PDw7u6uny8XIZiAIsv7EOsdwk/8h/MemdUhroa00xgEP82IWGrVwpKT
WGLqVT2T6KUSbUrEtYmqkuuRsrIsFOKRTrMTRv3zSoM0hyjSjAFxOpPKVARF
BwmC/qoDgpGU6xQTZwqtqwiRos1cWnFvVNQw3Ik+SqIs5ni3sJTLebCUuaTY
8eOMd8+zEs0HDtZJfDcm0t68ObxfJ5oMwnAYjg4fxbTiwEYF4t3F+fm5mB4f
haPB4ERUO1TwlJTyfpOAUvTxkQDbwv3h0WQ4OB0fH1grCZQuE/YeRMV7BXqO
5nd4LNC8UOgCrIjVrULfZTynK3P6xh6PaE4IRAM2QrrPch+Jq3I9R4MKJ7db
U/AWg1tfR8nkiIlNjDoGJwOvyX7yvqQQLP45pXagfv96F56ORuPxdDQYT06O
j6b96fHJ4KQnWt5O//Xe5KTIzVUG0gWqN1dgT3LFef08Sih0q7am6I92M9IK
CZ8L2mwea2qMJDNYb89BhP4m5ukMQh8Md55FYGyvqKblTu3KCWsgOZve6wJj
SFxZ1FbeqNrKasEigUOA6LOkuysfp1eOrhCjA9SyBvUnKqwZN2kKyQ6yJlSM
7JuDc5kFQzCIkNltcjETS3S6CmS5EsNwshRmYfDOinNd2Zmh6IKyrlHdaf1B
M9jDZJdBcrXFIMb5MZaYMsgc7WrPgNs9xpUpn55i1RZJsK2R4C0b7Ado0JBK
R1WiQyUhgPax0wwSLwMJg4dcQbKQmtwNIh+y2Fj5vcNoGMiX1i+0SlYbtcZD
ypj5pmtIX5drzC0hCvXP8HvYUzUe6FThvY+lEV0kk8zrhLKV10ppUwoL0dQ1
biGAH1g0wk0x39MabI6QigI2Ul5Yd4JOqRhO6D/jEXumwuCqSXuc8rDeWOgA
gWUT8XQCzbLcMgcmmSxw29vq3nbe28Z2kaEc5y+se/bXM8iuZcTaz2+wLlrb
IbLpvHEzGN2QPuPNILurdcluSUKSXaagL1QcySUbPaALzyMHbWWQS5wUGYGp
Z1ZSypFmJgDgLBaP7+SCRMKwPqobVGNLST4r5uNqZ2PYvPyp5cJVlhnZbGMS
Z3djjPUFvh4WVKhHq8nuonZ922veS4RcvFn6EZfN/nMTpeIVIsJU2t6jOE9U
i9NwmehiJRxExR33pw1lZv+HU6MwIUjp6N6MDW3Nh8I7gEvcBuAdCC664DJT
tHOVCadtCeS+oa1KEFSDxfN2iwNzfYpnRmNTwl4F+US+zrExE8ot6OGvpbTh
yh6SXwuQLzBMX9s8MQj+B/6Cv5+9fn4unp2/vLi6/g6kECxVh6LvPhafOoGx
XvRKfAL64Gt7ZyOG/eG3pgtHb7AE3inzdIaJyYzuuPUMYp5Zqme4akZAOt8G
sAKOtFT3CJZ++sVq4kHn1c+Xo0vxM2RnaGOprsArkaZgcF1I9onmE6XJRvFv
YWlfnHzbeDGcNN+MR803kyN+8yXAf96uJtbxNnXyZTdeYg8MBs4mvukcdxrA
XFWL0xz3kyGQqsxTUTsIWz4Lx5tX1Ocxfi3zyofhCTZpnW5fPBGP14/RbtPj
x9vq2XvU1ePT6vE/HwsDzb5ZxNXoOkuqH9//Vj3nkTdL59Xz1R68H6Nq9Ifq
8efq8ax6fFs9vqgeX6/We2CvPVDz6vnGw9fbQXrnSDxaJfd7gJ/9Wg2/3FXP
11uPxFHhEWnkPY/34Hk7rw917UdtoT+W+D8W8SFu0QD786G/LwTOtR81YD6y
SZZWPzbf74GNnz32nj0mPdMb7yTUIFf9PKwev9kD+c0bjxPfnL+qfvjPQx/l
4eFaeXjOIdnjNw3QOOAtuz4E1h50nM4IE4lunIHivw4W/DFUZRWaewkopVxb
jpzYOHe+dSshOMvycI2J8a304V2kVGSkRX0KgBxkikAQOvunnyhAfiNvAXK+
c7C/7Kv+9g+aCP0H522dATQzjSnen/oHjdhXbJOZZoIyCpVoiV3QxpbOuRez
va2iK3H50/XNg5FbxYXrPx3CeZs4RhCaW0+C9ojqTmcn6+bsupVuzJ43Z885
vH1gevx7wJtc+YPi8AcdUPnVeWYux2FmIgaABU+A+FA3nCUPgCqH7rZuYN5F
99W7Mp2DgYEs81va44uJd86vnl9/xwEQ9ZbQTRvdvjULp+7SriqJ4L3dzIRP
/26Whku+zqtCJxM5zfgV7P4fYZjfCfk38a54z5TgN/P0H070mCe10aIadaFG
bUL51eXb31uuf28CqLudYhTdH/aQb9m+/Opo1+nzwT/4/WcamnW3B+73Zzub
T9LA0S3QbSvobP6+bvq8bfocpxstasyPq/kO/W3cBM/vPYq2k9S/umudULYy
ncXVq7irVPNNf7bk2rKp7Zu3NnuK5tis51U2lRbVtSTV1a04e/H/B7NL/xed
pZ2AdZKHZrIzE++cNansCk2ZpzBKeUAstzOAPRzI0WA6jgbDwclgMJl1eo0F
BSwYjkaDwXTSHw4aowStkGtswsCOiubqEschLGu+38L70bg/bLwuOgI2c+++
9B46Bu27KtcqVsWudVMIR9o2nUz7471NAZdqT3p6D8aIOXpBbmWTae74KjL/
orHeFh3dYqtE4Tq/7GUO8qi6IsBKyQovmYi3pkyFNglnJWqeR/lu9pX8z27/
gQWBuhA2u07A9SvazD4bqEFAkYndwwxidYWzUMDo+WVtTl+m5dpe1tgFeGsM
Uolle0xjqey2LNOF7X8ybWCxaQ8Hy1SgOxYECtsUbAeAq3VqEZdEUrPtY21b
yrBzCcgSYFZnYH1IySnpD0X2wSzvxgczYhcqE3ikninXAM3jvsLW3a6ZgH8K
G1Ss/nXNxVEX8smeWCZZVBx4c/Evfgcg30PACbt1aQYvOjioIsWkFWgMR2gA
+8ohGKgQj/DC3rQQYVMHnSqVVMdFiFjtyZXUv7c7+unG7ggJ6YGUoVn14d9B
EFfymXMJSg7ERf6f0d0M1nC8HmyUIX6sLkjspZi7y0xjsYnwXijza7A6iNdA
7OeXfYTyAYW92+kfUkXDqAXfPLLN64l3MNp5f4C4vMKuUrSmdcXzdg1wETVa
PiEV6WMjajfbyLTbZlGBx/6KrxDHzjoI8iwrLgwvrrDj54mI13yYPLrzJgLC
b71mBYELK8eQwtIAv0piijeA9q36dxcYqT3xlLIPMsNsombwbuet67jEziK8
6FuWSecgkPfY/jt7YOoyAsrHMG0vGPs0E33bQhdudsUqS7+QJfjq7XEQYK9k
70GH1xN3kuI6e8nOjMRrcraNXvgHdOB2CRI0WwyfDOCvV2/hqcd/9atx89vu
F6KoPSEg4A0HZpSi3SpgFEGA7frm76ntACgy/NSF/4QI//RfQNsyUL+YR++H
xg6hDB4a304Do5aBw3lKY+PWMU1jR61jBY0dt46VNDZpHdvS2LR9DOJQHD1p
G2VET9uGCM/hoG2I0By20eSQsBy2UqXkZa1UoQMMW4myndNYK1G2MY21EmWr
g+CFslz8Z5lSP0kfBMreZQemSIkdcijj1RUiRD6DQXOYMh0YmZpwxDVQGaUB
oVHLXaUy2CtLbW4ae+Ui/iiL75rxNtn1ldwpcDCUIYMKFtxF6fXJeF071JGm
uQNlabsXas0L9UtEq3z/X+oyfEhd2qQmOD49PW0VQlAXHGtXCU1j7aJd0Fi7
SpQ01q5KWxprlXqnLq2Cnz6sn/ph9SweNCGsLu2Ky+rSbmC2D9sQVpd2bWd1
abdLoC4s1igsWLoxH4rkxFnsdtcsxdRkA1Ta2SsW8h+uxyfv+bd8iywHid9k
/MmIWYA7sPtu7c8y18i5uQye59lHmfJdErXw4kWO+Ugw4c8OMAmhroZsvSnN
1ftcigG3phSLWusb9x55bSlVx84mxA/CEqqo4J0VhkcImpTTfdAG6HvdkzgP
u3cgbsDuetRA10bODpg31LJoKC4BNMp71B83dNd8zMP2AoE5exGr6DbNYIeF
DeP8L4dd8KJqyY01BZ/YuYp3n8Ix2LI+yKWfg4WjmXj8lZT0sT8ZwDz2Es7a
2HDGdwD+u9F+ojkBHLzUUnxCmDaZ3AOIde0GwGYSCQBHX6qU8awmf1XrI11O
3kemZvAArWj69/IefkfD4amMJoOTUTQZDacnw/n0eDqayHE0OZocTyfw3+UU
6DQejgeT4/FoPBhPx+MJ/MI34xP4NxjDrNFoOR8vl6C7w5PT8fRovphEQNf5
FKBM4imsBajD6RFBPwbPNj4aw8hiAOuOAObw1P1Fg8lgGB3B6pPJyRRWT04B
l1NYe4rrRsfHo6MTXnc8iMfVH6wb2Yx6abu4UdnwdtK18DsRXaocwq8jMd+h
Ceh2LCk6B5xprrF4T0qfNj0c0s84M+1cGb+utYTzZzem2yXS2I0EumQ+X+RF
9Js+uuBr38gH1mjstY3q9H8XebD99xe6LthhPzvKhj2g/3G5jH3S9DGeMA3L
kf0slj7gypXmThhcSZmOa7arG0CLS1iTRGo33RNB0/jOeBk86MtA8Zn3uMZi
6+fqfPY3YJRL7rz9hvrihWmO/9Fcj38Ww/FEPKPjfgbNAkdif4B+Ho9h6tM5
zcSpo2M3iiE5P+OP0/7pqW1af2Q/0xfYJwxOBBuoIwizuEu0pK+R6UMisqVz
/LjEawvFHnLzrSyztcpJ8AuuEEJ+sFXcjFNrtzKNNTyTWwpsvQTBYgEd823a
qdjlcmm67ygkAytvRcVGRRE5J/6akt0QMAW/XwYQFMs1vvtFFrcz1dxZ9QMx
4i+6vU/K8Ev06gONbU9sQaK38x5ePlS9JHizoPyoNGo06l4759EM/AIxphb7
r/SJ1bvDrLLPPQpXOMMhjuiSDT+qxtsgapbwuqex6y3LWV85DHbuz3e6poPH
OGx20vgtQZlSbG2TSE6KxQB7NP4XNQzXcOhIAAA=

-->

</rfc>

