<?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.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-asdf-sdf-compact-03" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.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-03"/>
    <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="October" day="24"/>
    <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/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/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 presentation 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
       pedaling/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 the order 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-12.txt">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>PassiveLogic</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="30" month="June" 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.  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.  Tools convert this format to
   database formats and other serializations as needed.


   // 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 (-12) collects
   // smaller changes up to 2022-06-30.  It also removes deprecated
   // elements from SDF 1.0.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-12"/>
        </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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

-->

</rfc>
