<?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.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-asdf-sdf-mapping-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="SDF Mapping">Semantic Definition Format (SDF): Mapping files</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-mapping-00"/>
    <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="December" day="19"/>
    <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-ietf-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 create a copy of the original SDF model.
It then iterates over all entries within the mapping file's <tt>map</tt> object [in an order to be specified; probably lexicographical].
During each iteration, the processor first obtains a reference to the target referred to by the JSON pointer contained an entry's key.
This reference is then used as the <tt>Target</tt> argument of the JSON Merge Patch algorithm <xref target="RFC7396"/> and the entry's value as the <tt>Patch</tt> argument; the target is replaced with the result of the merge-patch.</t>
      <t>Once the iteration has finished, the processor returns the resulting augmented SDF model.
Should the resolution of a JSON pointer or an application of the JSON Merge Patch algorithm fail, an error is thrown instead.</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.
For this purpose, a new quality called <tt>augmentationLog</tt> is introduced
that contains an array of URIs pointing to the mapping files that have been
used to augment the original SDF file (which can also be indicated via
the <tt>originalSdfModel</tt> quality).
These additional qualities allow for reproducing the augmentation process.</t>
        <t>For logging while performing an augmentation, the processor has to perform
the following steps:</t>
        <!-- TODO: This algorithm probably needs to be reworked or at least reformatted. -->
<ol spacing="normal" type="1"><li>
            <t>If the <tt>info</tt> block is not present in the model that is being augmented,
  the processor creates it.</t>
          </li>
          <li>
            <t>If the <tt>info</tt> block does not contain an <tt>augmentationLog</tt> quality, the processor
  performs the following steps:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>If the <tt>originalSdfModel</tt> quality is not present in the <tt>info</tt>
block, the processor adds it with a URI that can be used to
access the SDF model that is currently being augmented as its
value.</t>
              </li>
              <li>
                <t>The processor creates the <tt>augmentationLog</tt> quality with an
array containing URIs that can be used to access the current
mapping file as its sole item.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Otherwise, if <tt>augmentationLog</tt> does not contain an array, stop and
throw an error.</t>
          </li>
          <li>
            <t>Otherwise, the processor adds a URI that can be used to access the
current mapping file to the array of the <tt>augmentationLog</tt> quality.</t>
          </li>
        </ol>
        <!-- [^logging] -->

<figure anchor="augmentation-log">
          <name>An augmented SDF model with an augmentation log and information regarding the original SDF model.</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Augmented SDF model with augmentation log.",
    "augmentationLog": [
      "https://example.org/sdf-mapping-file-1",
      "https://example.org/sdf-mapping-file-2"
    ],
    "originalSdfModel": "https://example.org/original-sdf-model"
  }
}
]]></sourcecode>
        </figure>
      </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="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>
        <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 590?>

<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:
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

-->

</rfc>
