<?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-rfc2629 version 1.6.2 (Ruby 3.1.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-asdf-sdf-compact-02" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.1 -->
  <front>
    <title abbrev="OneDM SDF compact">Semantic Definition Format (SDF) for Data and Interactions of Things: Compact Notation</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-asdf-sdf-compact-02"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann" role="editor">
      <organization ascii="Universitaet Bremen TZI">Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2022" month="February" day="28"/>
    <area>Applications</area>
    <workgroup>T2TRG</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The Semantic Definition Format (SDF) is a format for domain experts to
use in the creation and maintenance of data and interaction models in
the Internet of Things.  It was created as a common language for use
in the development of the One Data Model liaison organization (OneDM)
definitions.  Tools convert this format to database formats and other
serializations as needed.</t>
      <t>The SDF format is mainly intended for interchange between machine
generation and machine processing.  However, there is often a need for
humans to look at and edit SDF models.</t>
      <t>Similar to the way Relax-NG as defined in ISO/IEC 19757-2 has an XML
format and a compact format (Annex C), this specification defines a
compact format to go along SDF's JSON format.</t>
      <t>The present version of this document is mostly a proof of concept, but
was deemed useful to obtain initial feedback on the approach taken.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-bormann-asdf-sdf-compact/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        A Semantic Definition Format for Data and Interactions of Things (asdf) Working Group mailing list (<eref target="mailto:asdf@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/asdf/"/>.
      </t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Semantic Definition Format (SDF) is a format for domain experts to
use in the creation and maintenance of data and interaction models in
the Internet of Things.  It was created as a common language for use
in the development of the One Data Model liaison organization (OneDM)
definitions.  Tools convert this format to database formats and other
serializations as needed.</t>
      <t>The SDF format is mainly intended for interchange between machine
generation and machine processing.  However, there is often a need for
humans to look at and edit SDF models.</t>
      <t>Similar to the way Relax-NG as defined in ISO/IEC 19757-2 has an XML
format and a compact format (Annex C), this specification defines a
compact format to go along SDF's JSON format.</t>
      <t>The present version of this document is mostly a proof of concept, but
was deemed useful to obtain initial feedback on the approach taken.</t>
      <t>(References: <xref target="I-D.ietf-asdf-sdf"/>, <xref target="RELAXNG"/>.)</t>
      <t>The intention is to be able to bidirectionally translate between
compact and JSON form, without appreciable semantic losses.  This will
allow viewing SDF in compact form, apply edits if needed, and then
continuing processing it in JSON form.  As a limitation of this
approach, it will be difficult to always recreate the order of map
entries (members of JSON objects) in the JSON form; this order is
essentially arbitrary as maps (JSON objects) in JSON are unordered.
(In the long run, it may be useful to define a canonical order in the
SDF specification or here.)</t>
      <t>An initial prototype of a converter from compact form to JSON form was
constructed during the ASDF/WISHI hackathon preceding IETF110.
A more complete, bidirectionally operating version of this tool is
planned for release soon.</t>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>The SDF compact format is a YAML file <xref target="YAML"/>; a good part of the work
needed for a compact representation is already done by the increased
user-friendliness of YAML over JSON.</t>
      <t>In addition, all the sections defined with <tt>named&lt;...&gt;</tt> in the CDDL
definition of SDF have been compacted into map entries with
space-separated keys, giving the kind first and the name next.
This saves the need for another level of hierarchy and reminds the
reader of the kind of item being specified.</t>
      <t>The map key <tt>description</tt> is replaced by <tt>:</tt>, which also is rendered
in the most compact form possible in YAML.</t>
      <t>The dataqualities readable, writable, and observable, together with
optionality, are compressed into a four-character map key:  The first
three are translated into <tt>rwo</tt> when set (default in SDF) and into
<tt>---</tt> when not set.  The fourth character is <tt>?</tt> for optional and <tt>!</tt>
for required.</t>
      <t>The value of this abbreviated key is a CDDL <xref target="RFC8610"/> rendition of the
attributes defined in the <tt>jsonschema</tt> production in <xref section="A" sectionFormat="of" target="I-D.ietf-asdf-sdf"/>.  To further reduce noise, a top-level array
production in the CDDL can be represented as an array in the YAML
(i.e., does not require additional quotes).</t>
      <section anchor="ex-compact">
        <name>Example Definition</name>
        <t>This is an SDF-compact version of a slightly modified copy of the
<tt>sdfobject-cadence.sdf.json</tt> model found at the time of writing in
OneDM's SDF playground.
(This example was chosen more or less randomly; better examples can
probably be found.  The modification is the addition of a <tt>unit</tt> quality.)</t>
        <sourcecode type="sdfc"><![CDATA[
info:
  copyright: Copyright 2018-2019 Open Connectivity Foundation, Inc. All rights reserved.
  version: '2019-06-11'
  title: Cadence
  license: https://github.com/one-data-model/oneDM/blob/master/LICENSE

object cadence:
  :: This Resource describes the cadence, which is the number of
     revolutions of crank per minute when cyclists pedal the
     pedals. The unit, which is the default unit, is rpm. The cadence
     Property is a read-only value that is provided by the
     server. When range (from "oic. r. baseresource") is omitted the
     default is 0 to +MAXFLOAT.
  property cadence:
    r-o!: integer .ge 0
    unit: 1/min
    :: This Property describes the rate at which a cyclist is pedalling/turning
       the pedals.
  property range:
    r-o?: [2*2 integer]
    :: The valid range for the Property in the Resource as an integer.
       The first value in the array is the minimum value, the second value in the
       array is the maximum value.
  property step:
    r-o?: integer
    :: Step value across the defined range when the range is an integer.  This
       is the increment for valid values across the range; so if range is 0..10
       and step is 2 then valid values are 0,2,4,6,8,10.
]]></sourcecode>
        <t>The result of automatically converting this YAML file using the
prototype <tt>sdfc</tt> tool back into the JSON form of SDF is given in
<xref target="ex-json"/>.
Except for the <tt>unit</tt> addition, it is semantically identical to the
sdfobject-cadence.sdf.json.
Differences are visible in the order of map entries (members in JSON
objects); a future version of the <tt>sdfc</tt> tool could attempt to
preserve more of this order, even though it does not carry semantics.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="I-D.ietf-asdf-sdf" target="https://www.ietf.org/archive/id/draft-ietf-asdf-sdf-10.txt">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="Michael Koster">
              <organization>PassiveLogic</organization>
            </author>
            <author fullname="Carsten Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="16" month="January" year="2022"/>
            <abstract>
              <t>   The Semantic Definition Format (SDF) is a format for domain experts
   to use in the creation and maintenance of data and interaction models
   in the Internet of Things.  It was created as a common language for
   use in the development of the One Data Model liaison organization
   (OneDM) definitions.  Tools convert this format to database formats
   and other serializations as needed.

   An SDF specification describes definitions of SDF Objects and their
   associated interactions (Events, Actions, Properties), as well as the
   Data types for the information exchanged in those interactions.


   // A JSON format representation of SDF 1.0 was defined in version
   // (-00) of this document; version (-05) was designated as an
   // _implementation draft_, labeled SDF 1.1, at the IETF110 meeting of
   // the ASDF WG (2021-03-11).  The present version (-10) collects a
   // few smaller changes as input to the 2022-01-17 ASDF WG interim.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-10"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="YAML" target="https://yaml.org/spec/1.2.2/">
          <front>
            <title>YAML Ain't Markup Language (YAML™) version 1.2</title>
            <author initials="O." surname="Ben-Kiki" fullname="Oren Ben-Kiki">
              <organization/>
            </author>
            <author initials="C." surname="Evans" fullname="Clark Evans">
              <organization/>
            </author>
            <author initials="I." surname="dot Net" fullname="Ingy dot Net">
              <organization/>
            </author>
            <date year="2021" month="October" day="01"/>
          </front>
          <seriesInfo name="Revision" value="1.2.2"/>
        </reference>
        <reference anchor="RELAXNG">
          <front>
            <title>Information technology — Document Schema Definition Language (DSDL) — Part 2: Regular-grammar-based validation — RELAX NG</title>
            <author>
              <organization>ISO/IEC</organization>
            </author>
            <date year="2008" month="December" day="15"/>
          </front>
          <seriesInfo name="ISO/IEC" value="19757-2"/>
        </reference>
      </references>
    </references>
    <section anchor="ex-json">
      <name>Example in SDF JSON format</name>
      <sourcecode type="application/sdf+json"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "info": {
    "title": "Cadence",
    "license": "https://github.com/one-data-model/oneDM/blob/master/\
                                                            LICENSE",
    "version": "2019-06-11",
    "copyright": "Copyright 2018-2019 Open Connectivity Foundation, \
                                           Inc. All rights reserved."
  },
  "sdfObject": {
    "cadence": {
      "description": "This Resource describes the cadence, which is \
the number of revolutions of crank per minute when cyclists pedal \
the pedals. The unit, which is the default unit, is rpm. The \
cadence Property is a read-only value that is provided by the server\
. When range (from \"oic. r. baseresource\") is omitted the default \
                                                 is 0 to +MAXFLOAT.",
      "sdfProperty": {
        "step": {
          "type": "integer",
          "writable": false,
          "description": "Step value across the defined range when \
the range is an integer.  This is the increment for valid values \
across the range; so if range is 0..10 and step is 2 then valid \
                                            values are 0,2,4,6,8,10."
        },
        "range": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "maxItems": 2,
          "minItems": 2,
          "writable": false,
          "description": "The valid range for the Property in the \
Resource as an integer. The first value in the array is the minimum \
          value, the second value in the array is the maximum value."
        },
        "cadence": {
          "type": "integer",
          "minimum": 0,
          "writable": false,
          "description": "This Property describes the rate at which \
                          a cyclist is pedalling/turning the pedals."
        }
      },
      "sdfRequired": [
        "#/sdfObject/cadence/sdfProperty/cadence"
      ]
    }
  }
}
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The idea for this draft originated at the IETF110 ASDF/WISHI hackathon.
The author would like to thank the attendees for initial feedback.</t>
      <!--  LocalWords:  SDF namespace defaultNamespace instantiation OMA
 -->
<!--  LocalWords:  affordances ZigBee LWM OCF sdfObject sdfThing
 -->
<!--  LocalWords:  idempotency Thingness sdfProperty sdfEvent sdfRef
 -->
<!--  LocalWords:  namespaces sdfRequired Optionality sdfAction
 -->
<!--  LocalWords:  sdfProduct dereferenced dereferencing atomicity
 -->
<!--  LocalWords:  interworking
 -->

</section>
  </back>
  <!-- ##markdown-source:
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
6WV1Y/t/ATimmmfBIwAA

-->

</rfc>
