<?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.40 (Ruby 4.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-asdf-sdf-compact-10" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.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-10"/>
    <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="2026" month="July" day="07"/>
    <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><cref anchor="abs4">The present version of this document is mostly a proof of concept;
it received positive initial feedback on the approach taken and is
awaiting completion of the initial implementation.</cref></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 108?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Semantic Definition Format (SDF, <xref target="RFC9880"/>) 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 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="RFC9880"/>.  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="RFC9880"/> 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="RFC9880" section="8" sectionFormat="bare">Security Considerations</xref> of <xref target="RFC9880"/>.)</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-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="RFC9880">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="M. Koster" initials="M." role="editor" surname="Koster"/>
            <author fullname="C. Bormann" initials="C." role="editor" surname="Bormann"/>
            <author fullname="A. Keränen" initials="A." surname="Keränen"/>
            <date month="January" year="2026"/>
            <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, and 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.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9880"/>
          <seriesInfo name="DOI" value="10.17487/RFC9880"/>
        </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 235?>

<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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
/xfC/yOAgyoAAA==

-->

</rfc>
