<?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.30 (Ruby 3.4.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-asdf-sdf-compact-09" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.1 -->
  <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-09"/>
    <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="2025" month="October" day="20"/>
    <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="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 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 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="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 Control AB</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="13" month="October" year="2025"/>
            <abstract>
              <t>   The Semantic Definition Format (SDF) is concerned with Things, namely
   physical objects that are available for interaction over a network.
   SDF is a format for domain experts to use in the creation and
   maintenance of data and interaction models that describe Things.  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.

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

-->

</rfc>
