<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.11 (Ruby 3.3.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-asdf-sdf-compact-06" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="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-06"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann" role="editor">
      <organization>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="2024" month="April" day="25"/>
    <area>Applications</area>
    <workgroup>T2TRG</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 65?>

<t>The Semantic Definition Format (SDF) is a format for domain experts to
use in the creation and maintenance of data and interaction models
that describe Things, i.e., physical objects that are available for
interaction over a network.
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-based
format and a compact format (its Annex C), this specification defines a
compact format to go along SDF's JSON-based 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>
    <?line 107?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Semantic Definition Format (SDF, <xref target="I-D.ietf-asdf-sdf"/>) is a format for domain experts to
use in the creation and maintenance of data and interaction models
that describe Things, i.e., physical objects that are available for
interaction over a network.
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 <xref target="RELAXNG"/> has an XML-based
format and a compact format (its Annex C), this specification defines a
compact format to go along SDF's JSON-based 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>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><xref target="fig-sdfc-example"/> is an SDF-compact representation 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>
        <figure anchor="fig-sdfc-example">
          <name>Example SDF model in SDF compact form</name>
          <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>
        </figure>
        <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
<tt>sdfobject-cadence.sdf.json</tt>.
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, neither in the JSON form nor in the compact form.</t>
      </section>
    </section>
    <section removeInRFC="true" anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not make any requests of IANA.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="I-D.ietf-asdf-sdf"/> apply.</t>
      <t>Additional security considerations arise as in all alternative
representation forms for a formal description technique.
(Security considerations are given for RELAX-NG compact form in
<xref target="RELAXNG"/>, Annex C.7 (Media type registration template for the RELAX
NG Compact Syntax); these actually apply to SDF in general.
A more detailed discussion of the consequences of using
dereferenceable identifiers can be found in the penultimate paragraph
of Section <xref target="I-D.ietf-asdf-sdf" section="8" sectionFormat="bare">Security Considerations</xref> of <xref target="I-D.ietf-asdf-sdf"/>.)</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>KTC</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="28" month="February" year="2024"/>
            <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
   that describe Things, i.e., physical objects that are available for
   interaction over a network.  An SDF specification describes
   definitions of SDF Objects/SDF Things 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.


   // The present revision (-18) adds security considerations, a few
   // editorial cleanups, discusses JSON pointer encodings, and adds
   // sockets to the CDDL for easier future extension.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-18"/>
        </reference>
      </references>
      <references anchor="sec-informative-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" target="https://www.iso.org/standard/52348.html">
          <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"/>
          <annotation>This specification is also publicly available at <eref target="https://standards.iso.org/ittf/PubliclyAvailableStandards/c052348_ISO_IEC_19757-2_2008(E).zip">https://standards.iso.org/ittf/PubliclyAvailableStandards/c052348_ISO_IEC_19757-2_2008(E).zip</eref>.</annotation>
        </reference>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
      </references>
    </references>
    <?line 236?>

<section anchor="ex-json">
      <name>Example in SDF JSON format</name>
      <t>This appendix shows the result of automatically converting
<xref target="fig-sdfc-example"/> into the JSON form of SDF.
It was produced using the prototype <tt>sdfc</tt> tool.</t>
      <t>Note that JSON was not designed to enable JSON texts to always fit
into the confines of the RFC format; the presentation here employs
<xref target="RFC8792"/> line wrapping, which is of course not visible in the actual
JSON text for the example presented in <xref target="fig-sdfc-example-JSON-form"/>.</t>
      <figure anchor="fig-sdfc-example-JSON-form">
        <name>Example SDF model in JSON text form, line-wrapped</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>
      </figure>
    </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>
