<?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.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-asdf-sdf-mapping-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="SDF Mapping">Semantic Definition Format (SDF): Mapping files</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-asdf-sdf-mapping-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>
    <author initials="J." surname="Romann" fullname="Jan Romann">
      <organization>Universität Bremen</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>jan.romann@uni-bremen.de</email>
      </address>
    </author>
    <date year="2025" month="July" day="06"/>
    <area>Applications</area>
    <workgroup>ASDF</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 53?>

<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)
models.  Tools convert this format to database formats and other
serializations as needed.</t>
      <t>An SDF specification often needs to be augmented by additional
information that is specific to its use in a particular ecosystem or
application.
SDF mapping files provide a mechanism to represent this
augmentation.</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-mapping/"/>.
      </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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cabo/sdf-mapping"/>.</t>
    </note>
  </front>
  <middle>
    <?line 73?>

<section anchor="introduction">
      <name>Introduction</name>
      <!-- Just copying the abstract, for now... -->

<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)
models.  Tools convert this format to database formats and other
serializations as needed.</t>
      <t>An SDF specification often needs to be augmented by additional
information that is specific to its use in a particular ecosystem or
application.
SDF mapping files provide a mechanism to represent this
augmentation.</t>
      <section anchor="terminology-and-conventions">
        <name>Terminology and Conventions</name>
        <t>The definitions of <xref target="I-D.ietf-asdf-sdf"/> apply.</t>
        <!-- XXX -->

<t>The term "byte" is used in its now-customary sense as a synonym for
"octet".</t>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>An SDF mapping file provides augmentation information for one or more
SDF models.
Its main contents is a map from SDF name references (<xref section="4.3" sectionFormat="of" target="I-D.ietf-asdf-sdf"/>) to a set of qualities.</t>
      <t>When processing the mapping file together with one or more SDF
models, these qualities are added to the SDF model at the
referenced name, as in a merge-patch operation <xref target="RFC7396"/>.
Note that this is somewhat similar to the way <tt>sdfRef</tt> (<xref section="4.4" sectionFormat="of" target="I-D.ietf-asdf-sdf"/>) works, but in a
mapping file the arrows point in the inverse direction (from the
augmenter to the augmented).</t>
      <section anchor="example1">
        <name>Example Model 1 (ecosystem: IPSO/OMA)</name>
        <t>An example for an SDF mapping file is given in <xref target="code-example1"/>.
This mapping file is meant to attach to an SDF specification published
by OneDM, and to add qualities relevant to the IPSO/OMA ecosystem.
<cref anchor="namespace-note"><br/>
Note that this example uses namespaces to identify elements of the
referenced specification(s), but has un-namespaced quality names.
These two kinds of namespaces are unrelated in SDF, and a more
robust example may need to make use of Quality Name Prefixes
as defined in <xref section="2.3.3-3" sectionFormat="of" target="I-D.ietf-asdf-sdf"/> (independent of a potential
feature to add namespace references to definitions that are not
intended to go into the default namespace — these are SDF
definition namespaces and not quality namespaces, which are one
meta-level higher).</cref></t>
        <ul spacing="normal">
          <li>
            <t>Start of a mapping file for certain OneDM playground models:</t>
          </li>
        </ul>
        <figure anchor="code-example1">
          <name>A simple example of an SDF mapping file</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "IPSO ID mapping"
  },
  "namespace": {
    "onedm": "https://onedm.org/models"
  },
  "defaultNamespace": "onedm",
  "map": {
    "#/sdfObject/Digital_Input": {
      "id": 3200
    },
    "#/sdfObject/Digital_Input/sdfProperty/Digital_Input_State": {
      "id": 5500
    },
    "#/sdfObject/Digital_Input/sdfProperty/Digital_Input_Counter": {
      "id": 5501
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="example2">
        <name>Example Model 2 (ecosystem: W3C WoT)</name>
        <t>This example shows a translation of a hypothetical W3C WoT Thing Model
(as defined in Section 10 of <xref target="W3C.wot-thing-description11"/>)
into an SDF model plus a mapping file to catch Thing Model attributes
that don't currently have SDF qualities defined (namely, <tt>titles</tt> and
<tt>descriptions</tt> members used for internationalization).</t>
        <t>A second mapping file is more experimental in that it captures
information that is actually instance-specific,
in this case a <tt>forms</tt> member that binds the <tt>status</tt> property to an
instance-specific CoAP resource.
<cref anchor="td-note"><br/>
Namespaces are all wrong in this example.</cref></t>
        <t>The form really should be part of the class level; defining the entire
form instead of just the link in the instance information is a
symptom of not yet getting the class/instance boundary right.</t>
        <ul spacing="normal">
          <li>
            <t>The input: WoT Thing Model</t>
          </li>
        </ul>
        <figure anchor="code-wot-input">
          <name>Input: WoT Thing Model</name>
          <sourcecode type="json"><![CDATA[
{
    "@context": "https://www.w3.org/2022/wot/td/v1.1",
    "@type" : "tm:ThingModel",
    "title": "Lamp Thing Model",
    "titles": {
      "en": "Lamp Thing Model",
      "de": "Thing Model für eine Lampe"
    },
    "properties": {
        "status": {
            "description": "Current status of the lamp",
            "descriptions": {
              "en": "Current status of the lamp",
              "de": "Aktueller Status der Lampe"
            },
            "type": "string",
            "readOnly": true,
            "forms": [
              {
                "href": "coap://example.org/status"
              }
            ]
        }
    }
}
]]></sourcecode>
        </figure>
        <ul spacing="normal">
          <li>
            <t>The output: SDF model</t>
          </li>
        </ul>
        <figure anchor="code-wot-output1">
          <name>Output 1: SDF Model</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Lamp Thing Model"
  },
  "namespace": {
    "wot": "http://www.w3.org/ns/td"
  },
  "defaultNamespace": "wot",
  "sdfObject": {
    "LampThingModel": {
      "label": "Lamp Thing Model",
      "sdfProperty": {
        "status": {
          "description": "Current status of the lamp",
          "writable": false,
          "type": "string"
        }
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <ul spacing="normal">
          <li>
            <t>The other output: SDF mapping file for class information</t>
          </li>
        </ul>
        <figure anchor="code-wot-output2">
          <name>Output 2: SDF Mapping File</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Lamp Thing Model: WoT TM mapping"
  },
  "namespace": {
    "wot": "http://www.w3.org/ns/td"
  },
  "defaultNamespace": "wot",
  "map": {
    "#/sdfObject/LampThingModel": {
      "titles": {
        "en": "Lamp Thing Model",
        "de": "Thing Model für eine Lampe"
      }
    },
    "#/sdfObject/LampThingModel/sdfProperty/status": {
      "descriptions": {
        "en": "Current status of the lamp",
        "de": "Aktueller Status der Lampe"
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <ul spacing="normal">
          <li>
            <t>A third output: SDF mapping file for Protocol Bindings</t>
          </li>
        </ul>
        <figure anchor="code-wot-output3">
          <name>Output 3: SDF Mapping File for Protocol Bindings</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Lamp Thing Model: WoT TM Protocol Binding"
  },
  "namespace": {
    "wot": "http://www.w3.org/ns/td"
  },
  "defaultNamespace": "wot",
  "map": {
    "#/sdfObject/LampThingModel/sdfProperty/status": {
      "forms": [
        {
          "href": "coap://example.org/status"
        }
      ]
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="syntax">
      <name>Formal Syntax of SDF mapping files</name>
      <t>An SDF mapping file has three optional components that are taken
unchanged from SDF: The info block, the namespace declaration, and the
default namespace.
The mandatory fourth component, the "map", contains the mappings from
an SDF name reference (usually a namespace and a JSON pointer) to a
nested map providing a set of qualities to be merged in at the site
identified in the name reference.</t>
      <t><xref target="mapping-cddl"/> describes the syntax of SDF mapping files using CDDL <xref target="RFC8610"/>.</t>
      <figure anchor="mapping-cddl">
        <name>CDDL definition of SDF mapping file</name>
        <sourcecode type="cddl"><![CDATA[
start = sdf-mapping

sdf-mapping = {
 ; info will be required in most process policies
 ? info: sdfinfo
 ? namespace: named<text>
 ? defaultNamespace: text
 map: { * global-sdf-pointer => additionalqualities}
}

; we can't really be much more specific here:
additionalqualities = named<any>

; --------------------------------- import from SDF-base:

sdfinfo = {
 ? title: text
 ? description: text
 ? version: text
 ? copyright: text
 ? license: text
 ? modified: modified-date-time
 ? features: [
               * (any .feature "feature-name") ; EXTENSION-POINT
             ]
 optional-comment
 EXTENSION-POINT<"info-ext">
}

; Shortcut for a map that gives names to instances of X
; (has keys of type text and values of type X)
named<X> = { * text => X }

; EXTENSION-POINT is only used in framework syntax
EXTENSION-POINT<f> = ( * (quality-name .feature f) => any )
quality-name = text .regexp "([a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*"

; rough CURIE or JSON Pointer syntax:
global-sdf-pointer = text .regexp ".*[:#].*"

optional-comment = (
 ? $comment: text       ; source code comments only, no semantics
)

modified-date-time = text .abnf modified-dt-abnf
modified-dt-abnf = "modified-dt" .det rfc3339z

; RFC 3339 sans time-numoffset, slightly condensed
rfc3339z = '
   date-fullyear   = 4DIGIT
   date-month      = 2DIGIT  ; 01-12
   date-mday       = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on
                             ; month/year
   time-hour       = 2DIGIT  ; 00-23
   time-minute     = 2DIGIT  ; 00-59
   time-second     = 2DIGIT  ; 00-58, 00-59, 00-60 based on leap sec
                             ; rules
   time-secfrac    = "." 1*DIGIT
   DIGIT           =  %x30-39 ; 0-9

   partial-time    = time-hour ":" time-minute ":" time-second
                     [time-secfrac]
   full-date       = date-fullyear "-" date-month "-" date-mday

   modified-dt     = full-date ["T" partial-time "Z"]
'
]]></sourcecode>
      </figure>
      <t>The JSON pointer that is used on the left-hand side of the map can
point to a JSON map in the SDF model to be augmented by adding or
replacing map entries.
If necessary, the JSON map is created at the position indicated with
the contents of right-hand side of the map <cref anchor="example">(add examples)</cref>.
Alternatively, the JSON pointer can point to an array (also possibly
created if not existing before) and add an element to that array by
using the "<tt>‑</tt>" syntax introduced in the penultimate paragraph of
<xref section="4" sectionFormat="of" target="RFC6901"/>.</t>
    </section>
    <section anchor="augmentation-mechanism">
      <name>Augmentation Mechanism</name>
      <!-- TODO: Discuss used terminology -->
<t>An SDF model and a compatible mapping file can be combined to create
an <em>augmented</em> SDF model.
(This process can be repeated with multiple mapping files by using the
outcome of one augmentation as the input of the next one.)
As augmentation is not equal to instantiation, augmented SDF models
are still abstract in nature, but are enriched with ecosystem-specific
information.</t>
      <aside>
        <t>Note that it might be necessary to specify an augmentation mechanism for instance descriptions as well at a later point in time, once it has been decided what the instance description format might look like and whether such a format is needed.</t>
      </aside>
      <t>The augmentation mechanism is related to the resolution mechanism
defined in <xref section="4.4" sectionFormat="of" target="I-D.ietf-asdf-sdf"/>, but fundamentally different:</t>
      <t>Instead of a model file reaching out to other model files and
integrating aspects into itself via <tt>sdfRef</tt> (<em>pull</em> approach), the
mapping file <em>pushes</em> information into a new copy of a specific given
SDF model.
The original SDF model does not need to know which mapping files it
will be used with and can be used with several such mapping files
independently of each other.</t>
      <t>An augmented SDF model is produced from two inputs: An SDF model and a compatible mapping file, i.e. every JSON pointer within the keys of the mapping file's <tt>map</tt> object points to a location that already exists within the SDF model.
To perform the augmentation, a processor needs to iterate over all entries within the <tt>map</tt> object and apply the JSON merge-patch algorithm <xref target="RFC7396"/> by using an entry's key as the <tt>Target</tt> argument and the value as the <tt>Value</tt> argument.</t>
      <aside>
        <t>Note that, in contrast to an array, the entries of a JSON object are considered unordered, which means that the sequence in which the <tt>map</tt> entries are applied is implementation-dependent.
For this reason, we need to make sure that the contents of mapping
files can be applied independently of each other.
(We need to understand the onus in
ensuring this that is put on author of a mapping file.)</t>
        <t>The problem can be "avoided" by changing the data structure used by the <tt>map</tt> quality to an array of objects to ensure a deterministic application order.
This would essentially put most of the onus on the author of a mapping
file to get any order dependencies right.
More preferable would be to ensure the entries in the mapping file can
be applied independently and in any order.
More discussion and implementation experience is required.</t>
      </aside>
      <t>An example for an augmented SDF model can be seen in <xref target="code-augmented-sdf-model"/>.
This is the result of applying the WoT-specific mapping file from <xref target="code-wot-output2"/> to the SDF model shown in <xref target="code-wot-output1"/>.
This augmented SDF model is one step away from being converted to a WoT Thing Model or Thing Description,
which requires some information that cannot be provided in an SDF
model that is limited to the vocabulary defined in the SDF base specification.</t>
      <!-- TODO: Prefix WoT-specific qualities with wot:? -->
<figure anchor="code-augmented-sdf-model">
        <name>An SDF model that has been augmented with WoT-specific vocabulary.</name>
        <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Lamp Thing Model"
  },
  "namespace": {
    "wot": "http://www.w3.org/ns/td"
  },
  "defaultNamespace": "wot",
  "sdfObject": {
    "LampThingModel": {
      "label": "Lamp Thing Model",
      "titles": {
        "en": "Lamp Thing Model",
        "de": "Thing Model für eine Lampe"
      },
      "sdfProperty": {
        "status": {
          "description": "Current status of the lamp",
          "descriptions": {
            "en": "Current status of the lamp",
            "de": "Aktueller Status der Lampe"
          },
          "writable": false,
          "type": "string"
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
      <aside>
        <t>Since the pair of an SDF model and a mapping file is equivalent in
semantics to the augmented model created from the two, there is no
fundamental difference between specifying aspects in the SDF model or
leaving them in a mapping file.
Also, parts of an ecosystem-specific vocabulary may in fact be
mappable to the SDF base vocabulary.
Therefore, developing the mapping between SDF and an ecosystem
requires careful consideration which of the features should be available
to other ecosystems and therefore should best be part of the common
SDF model, and which are best handled in a mapping file specific to the
ecosystem.</t>
      </aside>
      <!-- TODO: Also needs to take NIPC into account somewhere -->

<section anchor="logging-augmentation">
        <name>Logging Augmentation</name>
        <t>Since an augmented model is not fundamentally different from any other
SDF model, it may be necessary to trace the provenance of the
information that flowed into it, e.g., in the info block.
<cref anchor="logging">A convention for "logging" the augmentation steps that
went into an augmented model needs to be developed.
(An array in the info block that receives additions from a mapping
file using the "<tt>‑</tt>" pointer syntax may be a good receptacle for
receiving information about multiple augmentations.)</cref></t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="media-type">
        <name>Media Type</name>
        <t>IANA is requested to add the following Media-Type to the "Media Types" registry.</t>
        <table align="left" anchor="new-media-types">
          <name>A media type for SDF mapping files</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Template</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">sdf-mapping+json</td>
              <td align="left">application/sdf-mapping+json</td>
              <td align="left">RFC XXXX, <xref target="media-type"/></td>
            </tr>
          </tbody>
        </table>
        <t><cref anchor="to-be-removed">RFC Editor: please replace RFC XXXX with this RFC number and remove this note.</cref></t>
        <dl spacing="compact">
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>sdf-mapping+json</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>none</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>none</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary (JSON is UTF-8-encoded text)</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t><xref target="seccons"/> of RFC XXXX</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>none</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t><xref target="media-type"/> of RFC XXXX</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Tools for data and interaction modeling that describes Things, i.e.,
 physical objects that are available for interaction over a network</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>A JSON Pointer fragment identifier may be used, as defined in
<xref section="6" sectionFormat="of" target="RFC6901"/>.</t>
          </dd>
          <dt>Person &amp; email address to contact for further information:</dt>
          <dd>
            <t>ASDF WG mailing list (asdf@ietf.org),
or IETF Applications and Real-Time Area (art@ietf.org)</t>
          </dd>
          <dt>Intended usage:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt>Restrictions on usage:</dt>
          <dd>
            <t>none</t>
          </dd>
          <dt>Author/Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Provisional registration:</dt>
          <dd>
            <t>no</t>
          </dd>
        </dl>
      </section>
      <section anchor="registries">
        <name>Registries</name>
        <t>(TBD: After any future additions, check if we need any.)</t>
      </section>
    </section>
    <section anchor="seccons">
      <name>Security Considerations</name>
      <t>Some wider issues are discussed in <xref target="RFC8576"/>.</t>
      <t>(Specifics: TBD.)</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6901">
          <front>
            <title>JavaScript Object Notation (JSON) Pointer</title>
            <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
            <author fullname="K. Zyp" initials="K." surname="Zyp"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6901"/>
          <seriesInfo name="DOI" value="10.17487/RFC6901"/>
        </reference>
        <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="RFC7396">
          <front>
            <title>JSON Merge Patch</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Snell" initials="J." surname="Snell"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This specification defines the JSON merge patch format and processing rules. The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7396"/>
          <seriesInfo name="DOI" value="10.17487/RFC7396"/>
        </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="17" month="March" 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-23"/>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
            <front>
              <title>Key words for use in RFCs to Indicate Requirement Levels</title>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <date month="March" year="1997"/>
              <abstract>
                <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
          </reference>
          <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
            <front>
              <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
              <author fullname="B. Leiba" initials="B." surname="Leiba"/>
              <date month="May" year="2017"/>
              <abstract>
                <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
          </reference>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8576">
          <front>
            <title>Internet of Things (IoT) Security: State of the Art and Challenges</title>
            <author fullname="O. Garcia-Morchon" initials="O." surname="Garcia-Morchon"/>
            <author fullname="S. Kumar" initials="S." surname="Kumar"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>The Internet of Things (IoT) concept refers to the usage of standard Internet protocols to allow for human-to-thing and thing-to-thing communication. The security needs for IoT systems are well recognized, and many standardization steps to provide security have been taken -- for example, the specification of the Constrained Application Protocol (CoAP) secured with Datagram Transport Layer Security (DTLS). However, security challenges still exist, not only because there are some use cases that lack a suitable solution, but also because many IoT devices and systems have been designed and deployed with very limited security capabilities. In this document, we first discuss the various stages in the lifecycle of a thing. Next, we document the security threats to a thing and the challenges that one might face to protect against these threats. Lastly, we discuss the next steps needed to facilitate the deployment of secure IoT systems. This document can be used by implementers and authors of IoT specifications as a reference for details about security considerations while documenting their specific security challenges, threat models, and mitigations.</t>
              <t>This document is a product of the IRTF Thing-to-Thing Research Group (T2TRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8576"/>
          <seriesInfo name="DOI" value="10.17487/RFC8576"/>
        </reference>
        <reference anchor="W3C.wot-thing-description11" target="https://www.w3.org/TR/wot-thing-description11/">
          <front>
            <title>Web of Things (WoT) Thing Description 1.1</title>
            <author/>
          </front>
          <seriesInfo name="W3C REC" value="wot-thing-description11"/>
          <seriesInfo name="W3C" value="wot-thing-description11"/>
        </reference>
      </references>
    </references>
    <?line 547?>

<section numbered="false" anchor="list-of-figures">
      <name>List of Figures</name>
      <dl spacing="compact" indent="11">
        <dt><xref target="code-example1"/>:</dt>
        <dd>
          <t><xref format="title" target="code-example1"/></t>
        </dd>
        <dt><xref target="code-wot-input"/>:</dt>
        <dd>
          <t><xref format="title" target="code-wot-input"/></t>
        </dd>
        <dt><xref target="code-wot-output1"/>:</dt>
        <dd>
          <t><xref format="title" target="code-wot-output1"/></t>
        </dd>
        <dt><xref target="code-wot-output2"/>:</dt>
        <dd>
          <t><xref format="title" target="code-wot-output2"/></t>
        </dd>
        <dt><xref target="code-wot-output3"/>:</dt>
        <dd>
          <t><xref format="title" target="code-wot-output3"/></t>
        </dd>
        <dt><xref target="mapping-cddl"/>:</dt>
        <dd>
          <t><xref format="title" target="mapping-cddl"/></t>
        </dd>
        <dt><xref target="code-augmented-sdf-model"/>:</dt>
        <dd>
          <t><xref format="title" target="code-augmented-sdf-model"/></t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="list-of-tables">
      <name>List of Tables</name>
      <dl spacing="compact" indent="11">
        <dt><xref target="new-media-types"/>:</dt>
        <dd>
          <t><xref format="title" target="new-media-types"/></t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This draft is based on discussions in the Thing-to-Thing Research
Group (T2TRG) and the SDF working group.  Input for <xref target="example1"/> was provided by <contact fullname="Ari Keränen"/>.</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:
H4sIAAAAAAAAA9U823bbRpLv/RU98Oxa8giUSDmJzfgSWpIzylqXsZh1Jh4n
AoEmiQgEOOiGaEZRzvzCnrOfMJ+xb/Mn8yVbl26gQVJ2Mns5Z3xOYqLRXV1d
XfcqOAxDcd2X+yIukjSf9GVlxuEjIUxqMtWXz4SUF2oW5SaN5aEap3lq0iKX
L4tyFhm5dXH4crsvT6L5HBbLcZopLaLRqFQAE965NyIp4jyaAcCkjMYmHOHy
PA8jnYxD/G/G88IsMkobIWL4e1KUy77UJhG6Gs1SrWFjs5wDkOOj4UtAONcq
15XuS1NWSoioVFFfDubzLIXlMFmLRVFeTcqimsM4oCOu1BKGEoCQG1XmyoSH
iA+srcy0KPtw2lAyogdRqY3K5QtGFd5IWZRAoK/z9FqVOjV/+6uRL0o1g0nD
b49pgjalUqYvzwttxlE8lfv7ew8f7tG7ODVwHF7AA0UC+xyGvUf7nzy2I1Vu
8NBfKtx0SYPzaZHDvN89fBw+7HXDXvdR+On+416XXsLVpFlfxtGo+ML8mHYA
QxovC7w9laSmKL1DfRXl8nXx0fP4oH+I8k5JS76o8jQc0YROojYjLK5VXimk
oyP7h9hnXJTyMDKRjPKErySK6eJkMZbDKTCEllvII9sAkNHBpy9SZcb2qJPU
TKsRU2DX4yQhctoDzobYvH558OnjvW5fzosU9+GhR59292BpkmT8/Nn+40/7
cqbKiQrnkYmn4h6N7z9+BONVmeLzm/2DzunZ8CiMYUCFvb3uXrfXhff0bFfs
7fX2ENk4TQH0cXjYQZxrfge2TsYizccrOD765DMApFWMzC14r0VhQoO0CBOl
4zKdI4W6cBR6kQihgLrAWnQh+Ofi6NXLvgzeArzwG/jzLhAiDEMZjYA9gcBC
vP0OiFAW4TvvJ68fTtVH5V2mWkZy3FxhAuyR5lK9n6vSaGkKAlVpJWHUAMQY
JJPA4D3jXBCsKI8VXnPi7j9t7l/OQDQyTWDMFHbhk4+UZYodmXZUZwdEY6lB
1jNZjH5QMW6Nk0EPyOgauCUaZcymiKQPvgCGhyOA/KOC6NCcYyMXkWZUVQJX
BxPiYjaD6VmUT6pooggOHIvm26Ml6lplxRxkwuBpcOgsV8zVJ3gKmaVRqnHT
chLl6Y9MiC2YdHiyTZD4sB0gflFkgEGRA3oGQAGdLZVNQXQaRVrZIU00K2C/
kjWPKtMos+A1op8rlaikI+j1ICd1rOcqTsdWPQK+qOBwHl6aBPJG1QRPAucf
LWWUJHT5UWYPbLm1yJnOgJ6Dh8tTwMneeSTnUQkcVGVRKVVc6CWo0pksGNWo
0dBMesRs5psQOS+L6zQBfEAY4ymQTc9wi1LNS6WR1EgcBsYYW2jE57MUBBrs
AYjiMfJ2UtGtC/HkN/D2q0oboPF8ibvhdTmx2KHrzYtFp9ORYfisJSb37skh
qLg0L7JisiTaH+A95WxnxJBYwYkL6a+bG5T021s677Jjtwd5ZOC4AjhyJoPR
0qgAqQnUQzEgSgIeoGC0AdEqlxINnWKe1Mu8yJczRFYERWyUCToMDYybROum
ZXDy9cUw2OG/JSgr/P366A9fH78+OsTfF78fvHpV/xB2xsXvz75+ddj8alYe
nJ2cHJ0e8mIYla0hEZwM/ghvkCrB2fnw+Ox08CpgCYFjge2vSD5QMJnPSBjh
LlnShBNvOv3NzW9eHJx3HwLltm5uQIn1ut3Ht7fb9ulR97OH+LSYqpy3LPJs
aR/hPpcC6K2ikvgwy8AwzFMTZaAzgHx6WixyCTKjgGYP3iJ53vXlk1E87z58
Zgfw1K1BR7jWIBFufWRtMVNyw9CGbWqStsZXyN3Gd/DH1rMjvjf45HmWgkIK
u4+ePyOZOAPtcp2qhRBWKfii5yRPtwSrJfsoJeCRgDSD5iqVIBCswsQxcC7Z
AlBioFvgiWwF7CDH4ETQduiJgCSP4RLABGi81gvFevlhZx8kR7DcbCOvAL8r
Uqx/rkC7mVTBJuIN3DUiCqu1k+LWIUwxUagZ5QK8Ax9ZREAwssQsIFQ1YLYb
CehM3Bhh1ieTqIKnStRYJ3QKYilSd57LIAuwgkwp0ADei9vbjjgtjGLlSZKB
GrSYqQUO6HSWorq0ey+ipbwEOrxW48s2iR4iORyJ0H7BUUaVIUREmwyo3cqy
WGh2e5zNStHAwNGTtLRQt+h28IjOAtSI1CZhu0Nq8Oh9NJsDcDZuXblV63fw
qs8vznbPTgbb8uae4nndW+Iz+0TME21gO6DEBNygnBUAesZhDQDoNkRqrS6Y
qSgn0xgZg742/tpk5ubVKEv1VCUCjBrZXdYbOD9JPAYoVaauLUw8ujtOY8I6
YBPw5vU8ilWYw22SC7Uy1Jd/+hMZp5XrdkQAPa9lvYZsL4gcmJLxUgIKMxIc
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
8d8FFt7XKEcAAA==

-->

</rfc>
