<?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-gudi-t2trg-senml-as-coreconf-00" 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="October" day="07"/>

    
    <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 <xref target="RFC8428"/>, the lack of an accompanying data model (specifically in YANG), 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
    "IMT Atlantique";

  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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
sNlJ42cEZUqxtU0iOSkWA2zP+F/jPdSyBkkAAA==

-->

</rfc>

