<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-asdf-instance-information-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="SDF Instance Information">Instance Information for SDF</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-instance-information-03"/>
    <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>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Applications and Real-Time</area>
    <workgroup>ASDF</workgroup>
    <keyword>IoT</keyword>
    <keyword>Link</keyword>
    <keyword>Information Model</keyword>
    <keyword>Interaction Model</keyword>
    <keyword>Data Model</keyword>
    <abstract>
      <?line 77?>

<t>This document specifies instance-related messages to be used in conjunction with the Semantic Definition Format (SDF) for Data and Interactions of Things (RFC 9880).
Split into four "archetypes", SDF messages are always governed by SDF models, strictly separating instance and class information.
<em>Context</em> information plays a crucial role both for lifecycle management and actual device interaction.</t>
      <t><cref anchor="status">This revision refines the structure and terminology used with SDF messages, and further improves the alignment with the non-affordance draft and its sdfContext keyword.</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-ietf-asdf-instance-information/"/>.
      </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/ietf-wg-asdf/instance-information"/>.</t>
    </note>
  </front>
  <middle>
    <?line 87?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Semantic Definition Format for Data and Interactions of Things
(SDF, <xref target="RFC9880"/>) is a format for domain experts to use in the creation
and maintenance of data and interaction models in the Internet of
Things.</t>
      <t>SDF is an Interaction Modeling format, enabling a modeler to describe
the digital interactions that a class of Things (devices) offers,
including the abstract data types of messages used in these
interactions.</t>
      <t>SDF is designed to be independent of specific ecosystems that specify
conventions for performing these interactions, e.g., over Internet
protocols or over ecosystem-specific protocol stacks.</t>
      <t>SDF does not define representation formats for the <em>Instance Information</em> that is
exchanged in, or the subject of such, interactions; this is left to the
specific ecosystems, which tend to have rather different ways to
represent this information.</t>
      <t>This document discusses Instance Information in different types and roles.
It defines an <em>abstraction</em> of this, as an eco-system independent way to reason about this information.
This abstraction can be used at a <em>conceptual</em> level, e.g., to define models that govern the instance information.
However, where this is desired, it also can be used as the basis for a concrete <em>neutral representation</em> (Format) that can actually be used for interchange to exchange information and parameters for interactions to be performed.
In either case, the structure and semantics of this information are governed by SDF Models.</t>
      <t>This document is truly work in progress.
It freely copies examples from the <xref target="I-D.ietf-asdf-sdf-nonaffordance"/> document that evolves in
parallel, with a goal of further synchronizing the development where that
hasn't been fully achieved yet.
After the discussion stabilizes, we'll need to discuss how the
information should be distributed into the different documents and/or
how documents should be merged.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The definitions of <xref target="RFC6690"/>, <xref target="RFC8288"/>, and <xref target="RFC9880"/> apply.</t>
        <t>Terminology may need to be imported from <xref target="LAYERS"/>.</t>
        <dl>
          <dt>Representation:</dt>
          <dd>
            <t>As defined in Section <xref target="RFC9110" section="3.2" sectionFormat="bare"/> of RFC 9110 <xref target="STD97"/>, but understood to
analogously apply to other interaction styles than Representational
State Transfer <xref target="REST"/> as well.</t>
          </dd>
          <dt>Instantiation:</dt>
          <dd>
            <t>Instantiation is a process that takes a Model, some Context
Information, and possibly information from a Device and creates an
Instance.</t>
          </dd>
          <dt>Instance:</dt>
          <dd>
            <t>Anything that can be interacted with based on the SDF model.
E.g., the Thing itself (device), a Digital Twin, an Asset Management
system...
Instances are modeled as "data at rest", not "data in flight" (the
latter are called "Message" and actually are/have a Representation).
Instances that relate to a single Thing are bound together by some
form of identity.
Instances become useful if they are "situated", i.e., with a
physical or digital "address" that they can be found at and made the
subject of an interaction.</t>
          </dd>
          <dt>Message:</dt>
          <dd>
            <t>A Representation that is exchanged in, or is the subject of, an
Interaction.
Messages are "data in flight", not instance "data at rest" (the
latter are called "Instance" and are modeled by the interaction
model).
</t>
            <t>Depending on the specific message, an abstract data model for the
message may be provided by the <tt>sdfData</tt> definitions (or of
declarations that look like these, such as <tt>sdfProperty</tt>) of an SDF
model.</t>
            <t>Deriving an ecosystem specific representation of a message may be
aided by <em>Supplements</em> <xref target="I-D.ietf-asdf-sdf-mapping"/> that apply to the SDF model
providing the abstract data model.</t>
          </dd>
          <dt>Message Archetype:</dt>
          <dd>
            <t>A message with specific content and effect, covering a wider set of different use cases.
In this document, we are observing a total of four such archetypes:
Snapshot Messages, Construction Messages, Delta Messages, and Patch Messages.</t>
          </dd>
          <dt>Snapshot:</dt>
          <dd>
            <t>A message that attempts to describe the state of an Instance at a
particular moment (which may be part of the context).
This state information may either be related to interaction affordances
or to the Thing's context.
</t>
            <t>When a Snapshot message contains affordance-related information,
it may be considered a "proofshot" -- they are "proofs" in the
photographic sense, i.e., they may not be of perfect quality, as
inaccuracies could occur while capturing the affordance state.</t>
            <t>Conversely, Snapshot messages that (only) contain context information
may be referred to as "Context Snapshots".</t>
            <t>Not all state that is characteristic of an Instance may be included
in a Snapshot (e.g., information about an active action that is not
embedded in an action resource).
Snapshots may depend on additional context (such as the identity of
the Instance and a Timestamp).</t>
            <t>An interaction affordance to obtain a Snapshot may not be provided
by every Instance; instead, the affordance may be "baked into" the
device and could be discoverable via a well-known URI.</t>
          </dd>
          <dt>Delta:</dt>
          <dd>
            <t>Delta messages are syntactically similar to Snapshots, but may be
used to only report information that has <em>changed</em> compared to a
given reference Snapshot or Delta message.</t>
          </dd>
          <dt>Construction:</dt>
          <dd>
            <t>Construction messages enable the creation of a digital Instance,
e.g., initialization/commissioning of a device or creation of its
digital twins.
They are like Snapshots, in that they embody a state, however this
state needs to be precise so the construction can actually happen.</t>
          </dd>
          <dt>Patch:</dt>
          <dd>
            <t>Patch messages update the otherwise immutable state of a device or its
digital twin by triggering a reconfiguration or recommisioning.
Similar to Delta messages, Patch messages are referring to an already
existing state that is altered in accordance with the information
contained within the message.</t>
          </dd>
        </dl>
        <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="instance-information-and-sdf">
      <name>Instance Information and SDF</name>
      <t>The instantiation of an SDF model does not directly express an instance, which is, for example, a physical device or a digital twin.
Instead, the instantiation produces an instance-related SDF <em>message</em>, which adheres to a common message format and is always controlled by the corresponding SDF model.
Depending on the recipient and its purpose, a message can be interpreted as a report regarding the state of a Thing or the instruction to change it when consumed by the recipient.</t>
      <t>Taking into account previous revisions of this document as well as <xref target="I-D.ietf-asdf-sdf-nonaffordance"/>, we identified two main dimensions for covering the potential use cases for SDF messages:</t>
      <ol spacing="normal" type="1"><li>
          <t>the intended effect of a message, which can either be a report or an update of a Thing's state, and</t>
        </li>
        <li>
          <t>the actual content of the message, which may be freestanding (without a reference to a previous message or state) or relative (with such a reference).</t>
        </li>
      </ol>
      <t>The distinction of the intended effect between "update" or "state" is comparable to YANG's "config" statement (<xref section="7.21.1" sectionFormat="of" target="RFC7950"/>), a flag value indicating whether a definition represents configuration or state data.</t>
      <t>Based on these considerations (as illustrated by the systematization in <xref target="instance-message-dimensions"/>), we can identify the following four message archetypes:</t>
      <ol spacing="normal" type="1"><li>
          <t><em>Snapshot</em> messages that may contain contain both affordance-related and context information, including information about a Thing's identity,</t>
        </li>
        <li>
          <t><em>Construction</em> messages that trigger a Thing's initial configuration process or its commissioning,</t>
        </li>
        <li>
          <t><em>Delta</em> messages that indicate changes that have occurred since a reference state report, and</t>
        </li>
        <li>
          <t><em>Patch</em> messages that update the Thing's state.</t>
        </li>
      </ol>
      <table anchor="instance-message-dimensions">
        <name>Systematization of messages along the dimensions "Content" and "(Intended) Effect".</name>
        <thead>
          <tr>
            <!-- FIXME: This does not work with kramdown-rfc at the moment -->

            <!-- <th colspan="2" rowspan="2"></th> -->


            <th colspan="2"/>
            <th colspan="2" align="center">Content</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <th colspan="2"/>
            <th align="center">Freestanding</th>
            <th align="center">Relative</th>
          </tr>
          <tr>
            <!-- TODO: Vertical alignment is apparently not supported at the moment -->

            <th rowspan="2" align="center">(Intended)        <br/>
Effect</th>
            <th align="center">State Exposure</th>
            <td align="center">Snapshot</td>
            <td align="center">Delta</td>
          </tr>
          <tr>
            <th align="center">State Change</th>
            <td align="center">Construction</td>
            <td align="center">Patch</td>
          </tr>
        </tbody>
      </table>
      <t>The common message format can be used for all four message archetypes.
<xref target="syntax"/> specifies the formal syntax of SDF messages that all normative statements as well as the examples in this document will adhere to.
This syntax can serve to describe both the abstract structure and the concrete shape of the messages that can be used as a neutral form in interchange.</t>
      <t>In the following, we will first outline a number of general principles for SDF messages, before detailing the specific archetypes we define in this document.
The specification text itself will be accompanied by examples that have been inspired by <xref target="I-D.ietf-asdf-sdf-nonaffordance"/> and <xref target="I-D.ietf-asdf-digital-twin"/> that each correspond with one of the four archetypes.</t>
      <section anchor="axioms-for-sdf-messages">
        <name>Axioms for SDF messages</name>
        <t>SDF messages are controlled by a <em>model</em> (class-level information),
which normally is the interaction model of the device.
That interaction model may provide a model of the interaction during which the
message is interchanged (at least conceptually), or it may be a
"built-in" interaction (such as a Snapshot or Construction Message) that is
implicitly described by the entirety of the interaction model.
This may need to be augmented/composed in some way, as device modeling may be
separate from e.g. asset management system modeling or digital twin modeling.
SDF messages use JSON pointers into the model in order to link the
information to the model.</t>
        <t>SDF messages are conceptual and will often be mapped into
ecosystem-specific protocol messages (e.g., a bluetooth command).
It is still useful to be able to represent them in a neutral ("red-star")
format, which we build here as an adaption of the JSON-based format of the
models themselves.
An ecosystem might even decide to use the neutral format as its
ecosystem-specific format (or as an alternative format).</t>
        <t>SDF messages may be plain messages, or they may be deltas (from a
previous state) and/or patches (leading from a previous or the current state to
a next state).
Several media types can be defined for deltas/patches; JSON merge-patch <xref target="RFC7396"/> is already in use in SDF (for <tt>sdfRef</tt>) and therefore is a likely candidate.
(Assume that some of the models will be using
<eref target="https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type">Conflict-free replicated data types (CRDTs)</eref> to facilitate patches.)</t>
      </section>
      <section anchor="context-information">
        <name>Context Information</name>
        <t>Messages always have context, typically describing the "me" and the
"you" of the interaction, the "now" and "here", allowing deictic
statements such as "the temperature here" or "my current draw".</t>
        <t>Messages may have to be complemented by this context for
interpretation, i.e., the context needed may need to be reified in the
message (compare the use of SenML "n").
Information that enables interactions via application-layer protocols (such as an IP address) can also be considered context information.</t>
        <t>For this purpose, we are using the <tt>sdfContext</tt> keyword introduced by <xref target="I-D.ietf-asdf-sdf-nonaffordance"/>.</t>
        <t>TODO: explain how <xref target="RFC9039"/> could be used to obtain device names (using <tt>urn:dev:org</tt> in the example).</t>
        <t>Note that one interesting piece of context information is the model itself, including the information block and the default namespace.
This is of course not about the device or its twin (or even its asset management), because models and devices may want to associate freely.
Also note that multiple models may apply to the same device (including but not only revisions of the same models).</t>
      </section>
    </section>
    <section anchor="message-format">
      <name>Message Format</name>
      <t>The data model of SDF messages makes use of the structural features of SDF models (e.g., when it comes to metadata and namespace information), but is also different in crucial aspects.</t>
      <section anchor="information-block">
        <name>Information Block</name>
        <t>The information block contains the same qualities as an SDF model and, additionally, a mandatory <tt>messageId</tt> to uniquely identify the message.
Furthermore, Delta messages can utilize the <tt>previousMessageId</tt> in order to link two messages and indicate the state change.</t>
        <!-- TODO: Do we actually need a version quality for SDF messages? -->

<table anchor="infoblockqual">
          <name>Qualities of the Information Block</name>
          <thead>
            <tr>
              <th align="left">Quality</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">title</td>
              <td align="left">string</td>
              <td align="left">A short summary to be displayed in search results, etc.</td>
            </tr>
            <tr>
              <td align="left">description</td>
              <td align="left">string</td>
              <td align="left">Long-form text description (no constraints)</td>
            </tr>
            <tr>
              <td align="left">version</td>
              <td align="left">string</td>
              <td align="left">The incremental version of the definition</td>
            </tr>
            <tr>
              <td align="left">modified</td>
              <td align="left">string</td>
              <td align="left">Time of the latest modification</td>
            </tr>
            <tr>
              <td align="left">copyright</td>
              <td align="left">string</td>
              <td align="left">Link to text or embedded text containing a copyright notice</td>
            </tr>
            <tr>
              <td align="left">license</td>
              <td align="left">string</td>
              <td align="left">Link to text or embedded text containing license terms</td>
            </tr>
            <tr>
              <td align="left">messageId</td>
              <td align="left">string</td>
              <td align="left">Unique identifier of this SDF message</td>
            </tr>
            <tr>
              <td align="left">previousMessageId</td>
              <td align="left">string</td>
              <td align="left">Identifier used to connect this SDF message to a previous one</td>
            </tr>
            <tr>
              <td align="left">timestamp</td>
              <td align="left">string</td>
              <td align="left">Indicates the point in time this SDF message refers to</td>
            </tr>
            <tr>
              <td align="left">features</td>
              <td align="left">array of strings</td>
              <td align="left">List of extension features used</td>
            </tr>
            <tr>
              <td align="left">$comment</td>
              <td align="left">string</td>
              <td align="left">Source code comments only, no semantics</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="namespaces-block">
        <name>Namespaces Block</name>
        <t>Similar to SDF models, SDF messages contain a namespaces block with a <tt>namespace</tt> map and the <tt>defaultNamespace</tt> setting.
In constrast to models, including a <tt>namespace</tt> quality is mandatory as at least one namespace reference is needed to be able to refer to the SDF model the message corresponds with.</t>
        <table anchor="nssec">
          <name>Namespaces Block</name>
          <thead>
            <tr>
              <th align="left">Quality</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">namespace</td>
              <td align="left">map</td>
              <td align="left">Defines short names mapped to namespace URIs, to be used as identifier prefixes</td>
            </tr>
            <tr>
              <td align="left">defaultNamespace</td>
              <td align="left">string</td>
              <td align="left">Identifies one of the prefixes in the namespace map to be used as a default in resolving identifiers</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="instance-of-block">
        <name>Instance-of Block</name>
        <t>Distinct from SDF models are two instance-specific blocks, the first of which is identified via the <tt>sdfInstanceOf</tt> keyword.
Via the <tt>model</tt> keyword, this quality defines the <tt>sdfObject</tt> or <tt>sdfThing</tt> the <tt>sdfInstance</tt> quality from the next section is referring to.
The <tt>version</tt>, <tt>minVersion</tt>, <tt>maxVersion</tt>, <tt>exclusiveMinVersion</tt>, amd <tt>exclusiveMaxVersion</tt> qualities optionally allow for specifying a version or version range of the model.
Furthermore, via the <tt>patchMethod</tt> field, a patch algorithm different from JSON Merge Patch can be specified.</t>
        <table anchor="iobsec">
          <name>Instance-of Block</name>
          <thead>
            <tr>
              <th align="left">Quality</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">model</td>
              <td align="left">string</td>
              <td align="left">Defines the entry point for <tt>sdfInstance</tt> by pointing to an <tt>sdfObject</tt> or an <tt>sdfThing</tt>. Always refers to the target namespace indicated by the <tt>defaultNamespace</tt>and <tt>namespaces</tt> qualities.</td>
            </tr>
            <tr>
              <td align="left">version</td>
              <td align="left">string</td>
              <td align="left">The exact version the model this message is referring to.</td>
            </tr>
            <tr>
              <td align="left">minVersion</td>
              <td align="left">string</td>
              <td align="left">The (inclusive) minimal version of the model this message is referring to.</td>
            </tr>
            <tr>
              <td align="left">maxVersion</td>
              <td align="left">string</td>
              <td align="left">The (inclusive) maximal version of the model this message is referring to.</td>
            </tr>
            <tr>
              <td align="left">exclusiveMinVersion</td>
              <td align="left">string</td>
              <td align="left">The exclusive minimal version of the model this message is referring to.</td>
            </tr>
            <tr>
              <td align="left">exclusiveMaxVersion</td>
              <td align="left">string</td>
              <td align="left">The exclusive maximal version of the model this message is referring to.</td>
            </tr>
            <tr>
              <td align="left">patchMethod</td>
              <td align="left">string</td>
              <td align="left">Allows for overriding the default patch method (JSON Merge Patch) by providing a registered value.</td>
            </tr>
            <tr>
              <td align="left">$comment</td>
              <td align="left">string</td>
              <td align="left">Source code comments only, no semantics</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="instance-block">
        <name>Instance Block</name>
        <t>In the instance block, state information for properties, actions, and events as well as context information can be included.
Depending on the archetype, this information will either be used to report a Thing's current state, to report state <em>changes</em>, or to update state via a patch or reconfiguration.</t>
        <t>In addition to the <tt>messageId</tt> and <tt>previousMessageId</tt> from the <tt>info</tt> block, we are able to refer to</t>
        <ul spacing="normal">
          <li>
            <t>the point in time when the information regarding the device state has been captured (via the <tt>timestamp</tt> quality) and</t>
          </li>
          <li>
            <t>the device identity (via the <tt>thingId</tt> qualitity in the <tt>sdfInstance</tt> block).</t>
          </li>
        </ul>
        <t>The SDF message has to follow the structure of the definition that is indicated by the <tt>model</tt> entry point  (although, depending on the archetype, information that has not changed or will not be updated can be left out.)</t>
        <t>The alternating structure of the SDF model (e. g., <tt>sdfObject/envSensor/sdfProperty/temperature</tt>) is repeated within the message, with the top-level <tt>sdfObject</tt> or <tt>sdfThing</tt> being replaced by <tt>sdfInstance</tt> at the entry point.
Note that we also have to replicate a nested structure via <tt>sdfThing</tt> and/or <tt>sdfObject</tt> if present in the referenced SDF model.</t>
        <!-- TODO: The descriptions need some refinement here. Also: Maybe we need to specify the shape of the qualities in addional sections -->

<table anchor="ibsec">
          <name>Instance Block</name>
          <thead>
            <tr>
              <th align="left">Quality</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">thingId</td>
              <td align="left">string</td>
              <td align="left">(Optional) identifier of the instance (e.g., a UUID)</td>
            </tr>
            <tr>
              <td align="left">sdfThing</td>
              <td align="left">map</td>
              <td align="left">Values for the thing entries in the referenced SDF definition</td>
            </tr>
            <tr>
              <td align="left">sdfObject</td>
              <td align="left">map</td>
              <td align="left">Values for the object entries in the referenced SDF definition</td>
            </tr>
            <tr>
              <td align="left">sdfContext</td>
              <td align="left">map</td>
              <td align="left">Values for the context entries in the referenced SDF definition</td>
            </tr>
            <tr>
              <td align="left">sdfProperty</td>
              <td align="left">map</td>
              <td align="left">Values for the properties in the referenced SDF definition</td>
            </tr>
            <tr>
              <td align="left">sdfAction</td>
              <td align="left">map</td>
              <td align="left">Values for the actions in the referenced SDF definition</td>
            </tr>
            <tr>
              <td align="left">sdfEvent</td>
              <td align="left">map</td>
              <td align="left">Values for the events in the referenced SDF definition</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="message-archetypes">
      <name>Message Archetypes</name>
      <t>Based on the common message format defined in <xref target="message-format"/> and the systematization from <xref target="instance-message-dimensions"/>, we can derive a set of four archetypes that serve different use cases and recipients.</t>
      <section anchor="snapshot-messages">
        <name>Snapshot Messages</name>
        <t>This message contains information on a Thing's state, both in terms of context information and the state of individual affordances.
In the message, the <tt>previousMessageId</tt> field in the information block <bcp14>MUST NOT</bcp14> be present.
Furthermore, when transmitting this message in its JSON format, the content type <tt>application/sdf-snapshot+json</tt> <bcp14>MUST</bcp14> be indicated if supported by the protocol used for transmission.</t>
        <t>Snapshot messages <bcp14>MAY</bcp14> only contain values for a <em>subset</em> of all possible affordances and context information exposed by a Thing.
Security-related aspects, e.g. regarding authentication and authorization, <bcp14>MUST</bcp14> be taken into account when issueing a state report for a requesting party.</t>
        <t>In practical use, we can at least differentiate two use cases for snapshot messages.
The corresponding message variants are (colloquially) referred to as "Context Snapshots" and "Proofshots".</t>
        <t>Context Snapshots <em>only</em> contain context information related to a Thing (indicated via the <tt>sdfContext</tt> quality).
<xref target="example-context"/> gives an example for this kind of message.</t>
        <figure anchor="example-context">
          <name>Example of an SDF context snapshot.</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a42",
    "timestamp": "2025-07-01T12:00:00Z"
  },
  "namespace": {
    "sensors": "https://example.com/sensors"
  },
  "defaultNamespace": "sensors",
  "sdfInstanceOf": {
    "model": "#/sdfObject/envSensor"
  },
  "sdfInstance": {
    "thingId": "envSensor:abc123",
    "sdfProperty": {
      "installationInfo": {
        "floor": 3,
        "mountType": "ceiling",
        "indoorOutdoor": "indoor"
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <t>Proofshot Messages are supersets of context snapshots that may also include state information associated with a Thing's <em>interaction affordances</em>(properties, actions, and events).</t>
        <t><cref anchor="other-affordances">Note that while the format for describing the state of properties is clearly governed by the schema information from the corresponding <tt>sdfProperty</tt> definition, it is still unclear how to best model the state of <tt>sdfAction</tt>s and <tt>sdfEvent</tt>s.</cref></t>
        <t><xref target="code-off-device-instance"/> shows a proofshot that captures the state of a
sensor.
Here, every property and context definition of the corresponding SDF model
(see <xref target="code-off-device-model"/>) is mapped to a concrete value that satisfies
the associated schema.</t>
        <figure anchor="code-off-device-instance">
          <name>SDF proofshot example.</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a42",
    "timestamp": "2025-07-01T12:00:00Z"
  },
  "namespace": {
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "sensors",
  "sdfInstanceOf": {
    "model": "#/sdfObject/envSensor"
  },
  "sdfInstance": {
    "thingId": "envSensor:abc123",
    "sdfProperty": {
      "installationInfo": {
        "mountType": "ceiling"
      },
      "temperature": 23.124
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="construction-messages">
        <name>Construction Messages</name>
        <t>Construction messages are structurally equivalent to snapshot messages but may only contain context information.
Furthermore, the recipient of a construction message is supposed to initiate a configuration or comissioning process upon recption.
Construction messages <bcp14>MUST</bcp14> be indicated by the media type <tt>application/sfd-construction+json</tt> if possible.</t>
        <t>A construction message for a temperature sensor might assign an identity and/or complement it by temporary identity information (e.g., an IP address);
its processing might also generate construction output (e.g., a public key or an IP address if those are generated on device) which can be described via Snapshot or Delta messages.</t>
        <t>The creation of Construction messages is linked to the invocation of a constructor that starts the actual construction process.
In practice, these constructors are going to be modeled as an <tt>sdfAction</tt>, although the way the <tt>sdfAction</tt> is going to be used exactly is not entirely clear yet.</t>
        <!-- TODO: Maybe this note could also be removed -->
<t><cref anchor="note-destructor">Note that it is not quite clear what a destructor would be for a physical instance -- apart from a scrap metal press, but according to RFC 8576 we would want to move a system to a re-usable initial state, which is pretty much a constructor.</cref></t>
        <t><xref target="code-sdf-construction-message"/> shows a potential SDF construction message that initializes a device, setting its <tt>manufacturer</tt> and <tt>firmwareVersion</tt> as context information.
The construction message also assigns a <tt>thingId</tt>, the <tt>unit</tt> of reported temperature values, and an initial <tt>ipAddress</tt> that can be used with the interaction affordances that may be present in the corresponding SDF model.</t>
        <figure anchor="code-sdf-construction-message">
          <name>Example for an SDF construction message</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a42"
  },
  "namespace": {
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "sensors",
  "sdfInstanceOf": {
    "model": "#/sdfObject/envSensor"
  },
  "sdfInstance": {
    "thingId": "envSensor:unit42",
    "sdfProperty": {
      "ipAddress": "192.168.1.5",
      "unit": "Cel",
      "deviceIdentity": {
        "manufacturer": "HealthTech Inc.",
        "firmwareVersion": "1.4.3"
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <t>A special type of construction message that only contains identity-related information may be called an <em>Identity Manifest</em>.
<xref target="code-sdf-identity-manifest"/> shows an example of an identity manifest that is structurally identical to the construction message from <xref target="code-sdf-construction-message"/>, with the non-identity-related information left out.</t>
        <!-- TODO: Evaluate whether this approach actually works -->
<t>Via <tt>sdfRequired</tt>, an SDF model can indicate which context information must be present and therefore initialized within an instance.
All definitions included in <tt>sdfRequired</tt> <bcp14>MUST</bcp14> also be present in a construction message, while definitions could be left out.</t>
        <figure anchor="code-sdf-identity-manifest">
          <name>Example of an SDF identity manifest</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a42"
  },
  "namespace": {
    "models": "https://example.com/models"
  },
  "defaultNamespace": "sensors",
  "sdfInstanceOf": {
    "model": "#/sdfObject/envSensor"
  },
  "sdfInstance": {
    "thingId": "envSensor:unit42",
    "sdfProperty": {
      "deviceIdentity": {
        "manufacturer": "HealthTech Inc.",
        "firmwareVersion": "1.4.3"
      }
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="delta-messages">
        <name>Delta Messages</name>
        <t>Delta messages describe updates to a Thing's state relative to a previous message.
For this purpose, a <tt>previousMessageId</tt> <bcp14>MUST</bcp14> be present in the info block.
When transmitting delta messages, the media type <tt>application/sdf-delta+json</tt> <bcp14>MUST</bcp14> be used if possible.</t>
        <t>By default, the values contained in the message are applied to the preceding message(s) via the JSON Merge Patch algorithm.
Via the <tt>patchMethod</tt> quality, different patch algorithms <bcp14>MAY</bcp14> be indicated.</t>
        <t><xref target="code-sdf-delta-message"/> shows an example Delta message that reports state changes compared to the ones reported in the previous message (identified via its <tt>previousMessageId</tt>).
In this example, only the temperature that has been measured by the sensor has changed, which is why it is the only piece of information that is included.</t>
        <t>Delta messages could be used in the Series Transfer Pattern <xref target="STP"/>, which may be one way to model a telemetry stream from a device.</t>
        <figure anchor="code-sdf-delta-message">
          <name>Example of an SDF message that serves as a delta.</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Example SDF delta message",
    "previousMessageId": "026c1f58-7bb9-4927-81cf-1ca0c25a857b",
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a42"
  },
  "namespace": {
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "sensors",
  "sdfInstanceOf": {
    "model": "#/sdfObject/envSensor"
  },
  "sdfInstance": {
    "sdfProperty": {
      "temperature": 24
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="patch-messages">
        <name>Patch Messages</name>
        <t>Patch messages are structurally equivalent to delta messages, but once again are only allowed to contain context information.
They utilize a patch <em>mechanism</em> (which may be explicitly indicated via the <tt>patchMethod</tt> quality) to <em>alter</em> the state of a Thing instead of <em>reporting</em> state changes.
Since patch messages are not referring to a preceding message, a <tt>previosMessageId</tt> <bcp14>MUST NOT</bcp14> be present in the information block.
When transmitting state patches, the media type <tt>application/sdf-patch+json</tt> <bcp14>MUST</bcp14> be used if possible.</t>
        <t>An example Patch Message is shown in <xref target="code-sdf-context-patch"/>, where a change of the device's <tt>mountType</tt> is signalled.</t>
        <figure anchor="code-sdf-context-patch">
          <name>Example of an SDF context patch message that uses the common message format.</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a42"
  },
  "namespace": {
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "sensors",
  "sdfInstanceOf": {
    "model": "#/sdfObject/envSensor",
    "patchMethod": "merge-patch"
  },
  "sdfInstance": {
    "sdfProperty": {
      "installationInfo": {
        "mountType": "wall"
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <t>Practical uses for patch message include digital twins <xref target="I-D.ietf-asdf-digital-twin"/>, where changes to physical attributes (such as the location) need to be reflected in the digital representation of a Thing.</t>
      </section>
    </section>
    <section anchor="application-scenarios">
      <name>Application Scenarios</name>
      <t>The common message format and the four archetypes are usable in a number of use cases, some of which we are going to specify in the following.
Other specifications may define additional use cases SDF messages can be used for.</t>
      <section anchor="construction">
        <name>Construction</name>
        <t>In SDF models, we can treat a Thing's <tt>sdfProperty</tt> definitions as construction parameters.
Construction messages can serve as an ecosystem-independent way for initializing properties, especially those that are specified as non-writable.</t>
        <t><xref target="code-sdf-construction-sdf-context"/> shows an example for an SDF model where the <tt>ipAddress</tt> and <tt>deviceIdentity</tt> are supposed to be initialized at construction time, since they are required and not writable via regular interactions during runtime.
As the <tt>unit</tt> property has a default value (<tt>Cel</tt> for degrees Celcius), it does not have to be initialized during construction.
However, for all of these properties, a reconfiguration during runtime is possible.</t>
        <t>In this example, the <tt>deviceIdentity</tt> would be retrievable like a "regular", but immutable property affordance.
While the <tt>ipAddress</tt> might be used for interaction affordances (e.g., by other models that build upon this one), the <tt>temperature</tt> property is "importing" the value of the <tt>unit</tt> property via a new quality called <tt>sdfParameters</tt>, where pairs of quality names and JSON pointers are used to import values from <tt>sdfProperty</tt> definitions.</t>
        <t><xref target="code-sdf-construction-sdf-context"/> shows an example for an SDF model where the <tt>ipAddress</tt> and <tt>deviceIdentity</tt> are supposed to be initialized at construction time, since they are modeled as mandatory (via <tt>sdfRequired</tt>) <tt>sdfContext</tt> definitions, making them non-writable via "regular" interactions during runtime.
As the <tt>unit</tt> property has a default value (<tt>Cel</tt> for degrees Celcius), it does not have to be initialized during construction.
However, for all of these context definitions, a reconfiguration during runtime is possible.</t>
        <t>While the <tt>ipAddress</tt> might be used for interaction affordances (e.g., by other models that build upon this one), the <tt>temperature</tt> property is "importing" the value of the <tt>unit</tt> property via a new quality called <tt>sdfParameters</tt>, where pairs of quality names and JSON pointers are used to import values from <tt>sdfContext</tt> definitions.</t>
        <figure anchor="code-sdf-construction-sdf-context">
          <name>Example for SDF model with constructors</name>
          <sourcecode type="sdf"><![CDATA[{
  "namespace": {
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "sensors",
  "sdfObject": {
    "sensor": {
      "sdfRequired": [
        "ipAddress",
        "deviceIdentity"
      ],
      "sdfContext": {
        "ipAddress": {
          "type": "string"
        },
        "deviceIdentity": {
          "type": "object",
          "properties": {
            "manufacturer": {
              "type": "string"
            },
            "firmwareVersion": {
              "type": "string"
            }
          }
        },
        "unit": {
          "writable": false,
          "type": "string",
          "default": "Cel"
        }
      },
      "sdfProperty": {
        "temperature": {
          "writable": false,
          "type": "number",
          "sdfParameters": {
            "unit": "#/sdfObject/sensor/sdfContext/unit"
          }
        }
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <t>Based on the SDF model above, a Construction Message such as the one shown in <xref target="code-sdf-construction-message"/> can trigger the construction process.
As indicated via <tt>sdfRequired</tt>, this process must involve the initialization of the device's identity definitions and IP address.</t>
      </section>
      <section anchor="protocol-binding-information">
        <name>Protocol Binding Information</name>
        <t>When using the <tt>sdfProtocolMap</tt> concept introduced in <xref target="I-D.ietf-asdf-sdf-protocol-mapping"/>, some protocols may need context information such as a hostname or an IP address to actually be usable for interactions.
This corresponds with the fact that the parameters related to application-layer protocols are often <em>class-level</em> information and therefore not necessarily instance-specific.</t>
        <t>For example, all instances of a smart light may use similar CoAP resources, with the only difference being the concrete IP address assigned to them.
Therefore, we can utilize context information that varies between instances to complement the model information provided via an <tt>sdfProtocolMap</tt>.</t>
        <t><xref target="code-sdf-protocol-map-plus-context"/> illustrates the potential relationship between the two concepts in an SDF model.
Here, a (hypothetical) CoAP protocol mapping specification defines an interface for parameters such as an IP address.
Via JSON pointers, the <tt>sdfParameters</tt> within the <tt>sdfProtocolMap</tt> are linked to compatible <tt>sdfProperty</tt> definitions that may further restrict the set of allowed values via their schema.</t>
        <figure anchor="code-sdf-protocol-map-plus-context">
          <name>Example of an SDF model where a CoAP-based protocol map points to the definition of relevant context information: an IP address.</name>
          <sourcecode type="sdf"><![CDATA[=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "namespace": {
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "sensors",
  "sdfObject": {
    "sensor": {
      "sdfRequired": [
        "ipAddress"
      ],
      "sdfContext": {
        "ipAddress": {
          "type": "string"
        }
      },
      "sdfProperty": {
        "temperature": {
          "type": "number",
          "sdfProtocolMap": {
            "coap": {
              "sdfParameters": {
                "ipAddress": "#/sdfObject/sensor/sdfContext/\
                                                           ipAddress"
              },
              "sdfOperations": {
                "read": {
                  "method": "GET",
                  "href": "/temperature",
                  "contentType": 60
                }
              }
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <t><xref target="code-sdf-ipaddress-context"/> shows how a Snapshot Message can report the necessary IP address that is needed for retrieving the temperature value from the sensor described by the SDF model above.</t>
        <figure anchor="code-sdf-ipaddress-context">
          <name>Example of a snapshot message that provides the IP address needed to perform a CoAP-based interaction with the sensor from the previous figure.</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a47"
  },
  "namespace": {
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "sensors",
  "sdfInstanceOf": {
    "model": "#/sdfObject/sensor"
  },
  "sdfInstance": {
    "sdfContext": {
      "ipAddress": "192.168.1.5"
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="modelling-the-state-of-interaction-affordances">
        <name>Modelling the State of Interaction Affordances</name>
        <t>Snapshot and (in a relative fashion) Delta Messages can report the current state associated with interaction affordances.
For <tt>sdfProperty</tt> (and <tt>sdfContext</tt>) definitions, this is very straightforward, as previously seen in in <xref target="code-sdf-delta-message"/>.</t>
        <t>Actions and events, however, need to be handled differently: In the case of actions, the state of one or more actions is reported, which might already be in a completed or error state, or may also still be running.
For events, a history is reported that includes the returned values.
The exact of number of action and event reports is implementation-dependent and may vary between deployments.
Models that add additional <tt>sdfProtocolMap</tt> definitions may also define protocol-specific ways to control the size of the histories returned.</t>
        <t><xref target="code-snapshot-with-actions-and-events"/> shows an example of a Snapshot Message for a lightswitch which reports the results of two <tt>toggle</tt> actions, one of which failed.
The successfully completed action caused the emission of a <tt>toggleEvent</tt> with the same <tt>timestamp</tt>.
As the lightswitch was turned on, the event was emitted with a value of <tt>true</tt>.</t>
        <figure anchor="code-snapshot-with-actions-and-events">
          <name>Example of an SDF Snapshot Messages that reports an action and an event history.</name>
          <sourcecode type="sdf"><![CDATA[=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "info": {
    "title": "Example SDF Snapshot Message with an Action and an \
                                                     Event History.",
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a85"
  },
  "namespace": {
    "cap": "https://example.com/capability/cap"
  },
  "defaultNamespace": "cap",
  "sdfInstanceOf": {
    "model": "#/sdfObject/lightSwitch"
  },
  "sdfInstance": {
    "sdfAction": {
      "toggle": [
        {
          "timestamp": "2026-01-11T22:39:35.000Z",
          "status": "complete",
          "inputValue": null,
          "outputValue": null
        },
        {
          "timestamp": "2026-01-11T22:34:35.000Z",
          "status": "error",
          "inputValue": null,
          "outputValue": "Toggle failed.",
          "$comment": "This action completed with an error, which \
                               is why an error message was returned."
        }
      ]
    },
    "sdfEvent": {
      "toggleEvent": [
        {
          "timestamp": "2026-01-11T22:39:35.000Z",
          "outputValue": true
        }
      ]
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="model-and-message-conversion">
      <name>Model and Message Conversion</name>
      <t>SDF messages increase the semantic capabilities of SDF, which means that it can cover more ecosystem-specific concepts when used as a conversion input or output.
This allows us to better cover description formats that use instance-related information in their data models, but poses a challenge when the distinction from model-related information is not clearly drawn.</t>
      <t><xref target="code-wot-td-example"/> shows an initial example from the Web of Things (WoT) ecosystem that uses a CoAP Protocol Binding in its property affordance <tt>status</tt>.
Analyzing this model, we can quickly see that most of the information contained is actually model-related information that could apply to other lamps as well.
This includes the schema information for the status, the security mode (or lack thereof) as well as the protocol binding information.
Important exceptions are the hostname or (in this case) the IP address of the Thing, its <tt>id</tt> as well as its <tt>title</tt> that are specific to this device.</t>
      <figure anchor="code-wot-td-example">
        <name>WoT TD example showcasing a mix of model and instance information.</name>
        <sourcecode type="yaml"><![CDATA[{
  "@context": [
    "https://www.w3.org/2022/wot/td/v1.1",
    {
      "cov": "http://www.example.org/coap-binding#"
    }
  ],
  "id": "urn:uuid:b38acf9d-493c-408c-90bf-868c1f5326d4",
  "title": "CoAP Lamp No. 2",
  "description": "A lamp example that uses CoAP.",
  "securityDefinitions": {
    "nosec_sc": {
      "scheme": "nosec"
    }
  },
  "security": [
    "nosec_sc"
  ],
  "properties": {
    "status": {
      "type": "string",
      "readOnly": true,
      "forms": [
        {
          "cov:method": "GET",
          "href": "coap://[2001:DB8::1]/status",
          "contentType": "application/cbor",
          "cov:contentFormat": 60,
          "op": [
            "readproperty"
          ]
        }
      ]
    }
  }
}
]]></sourcecode>
      </figure>
      <t><xref target="code-sdf-model-for-wot-example"/> illustrates how an SDF model can cover the model-related information from the WoT TD example.
Note that this example contains a separate <tt>ipAddress</tt> property that is used for this piece of context information that serves as a paramter for resolved CoAP URL.</t>
      <figure anchor="code-sdf-model-for-wot-example">
        <name>SDF model containing the model-related information from the previous WoT example.</name>
        <sourcecode type="sdf"><![CDATA[{
  "namespace": {
    "lamps": "https://example.com/lamps"
  },
  "defaultNamespace": "lamps",
  "sdfObject": {
    "lamp": {
      "title": "CoAP Lamp",
      "description": "A lamp example that uses CoAP.",
      "sdfContext": {
        "ipAddress": {
          "type": "string"
        }
      },
      "sdfProperty": {
        "status": {
          "type": "string",
          "writable": false,
          "observable": false,
          "sdfProtocolMap": {
            "coap": {
              "sdfParameters": {
                "ipAddress": "#/sdfObject/lamp/sdfContext/ipAddress"
              },
              "sdfOperations": {
                "read": {
                  "method": "GET",
                  "href": "/status",
                  "contentFormat": 60
                }
              }
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
      <t><xref target="code-sdf-message-for-wot-example"/> in turn shows an SDF message that contains only the instance-related information from the WoT TD example.
Besides the contextual <tt>ipAddress</tt>, this includes also the current value of the <tt>status</tt> property.
The <tt>id</tt> that was part of the WoT TD has been mapped to the <tt>thingId</tt> quality under <tt>sdfInstance</tt>.
The instance-specific <tt>title</tt> has no real equivalent in SDF messages yet, but it could be added to <tt>sdfInstance</tt> in future revisions.</t>
      <figure anchor="code-sdf-message-for-wot-example">
        <name>SDF message containing the instance-related information from the previous WoT example.</name>
        <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Example SDF Snapshot Message for CoAP Lamp No. 2.",
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4af3"
  },
  "namespace": {
    "lamps": "https://example.com/lamps"
  },
  "defaultNamespace": "lamps",
  "sdfInstanceOf": {
    "model": "#/sdfObject/lamp"
  },
  "sdfInstance": {
    "thingId": "urn:uuid:b38acf9d-493c-408c-90bf-868c1f5326d4",
    "$comment": "Should we put the Thing's title here?",
    "sdfContext": {
      "ipAddress": "2001:DB8::1"
    },
    "sdfProperty": {
      "status": "on"
    }
  }
}
]]></sourcecode>
      </figure>
      <t>While these examples highlight the potential of SDF messages for a clean separation of model and instance information, they also raise a number of questions, for example about the role of namespaces for SDF conversion results and the location where the resulting SDF models may be stored to potentially make them accessible to consumers.
In practice, these questions may not be as relevant when converting from SDF to (in this case) WoT or when using SDF only as an internal translation medium for bridging between two ecosystems.
However, these considerations emphasize the need for a set of standardized, reusable building blocks that can also be used for model and message conversion.</t>
    </section>
    <section anchor="discussion">
      <name>Discussion</name>
      <t>SDF messages close an important semantic gap of SDF, which so far was only capable of describing device classes and not instances.
There are, however, a few aspects that need special consideration and have to be addressed by more fine-grained specifications in the future that will buid upon this one.</t>
      <t>SDF messages allow for noting down timestamps that currently relate to the message as a whole.
Since the values contained within an SDF message might reflect state updates such as measurements that occurred before composing the message, this timestamp cannot accurately reflect the device state at that exact moment.
In this sense, SDF messages really are imperfect "proofshots" when it comes to the state of affordances, also considering that there might be concurrency problems if a device is updated while generating a Snapshot or Delta message.</t>
      <t>With IoT devices, many additional potential time-related problems arise, as devices might have access to (credible) time information <xref target="I-D.amsuess-t2trg-raytime"/> or can only measure time unreliably due to resource constraints, accuracy problems, and/or their sleeping behavior (<xref section="4.4" sectionFormat="of" target="I-D.ietf-iotops-7228bis"/>).
In cases like these, timestamps might have to be omitted from SDF messages or need to be estimated by a more reliable intermediary.</t>
      <!-- TODO: these are still open: -->

<t>Discuss expressing a device's "purpose of life" via context information</t>
      <t>Discuss using context information to indicate provence</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC9880"/> apply to this document as well.</t>
      <t>Entities processing SDF messages need to take measures to ensure the provenance of SDF messages, including authenticity and integrity.
For this purpose, they may use the context and state information contained within a given message.</t>
      <t>Instance-related information may might only be available in certain scopes, e.g. when it comes to security-related configuration parameters.
This information <bcp14>MUST NOT</bcp14> be exposed to unauthorized entities and therefore <bcp14>MUST</bcp14> be excluded from SDF messages.
Deployments <bcp14>MAY</bcp14> rely on an authorization framework such as ACE-OAuth <xref target="RFC9200"/> to limit the included information or access to messages as a whole to a certain scope.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO: Add media type registrations</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9880">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="M. Koster" initials="M." role="editor" surname="Koster"/>
            <author fullname="C. Bormann" initials="C." role="editor" surname="Bormann"/>
            <author fullname="A. Keränen" initials="A." surname="Keränen"/>
            <date month="January" year="2026"/>
            <abstract>
              <t>The Semantic Definition Format (SDF) is a format for domain experts to use in the creation and maintenance of data and interaction models that describe Things, i.e., physical objects that are available for interaction over a network. An SDF specification describes definitions of SDF Objects/SDF Things and their associated interactions (Events, Actions, and Properties), as well as the Data types for the information exchanged in those interactions. Tools convert this format to database formats and other serializations as needed.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9880"/>
          <seriesInfo name="DOI" value="10.17487/RFC9880"/>
        </reference>
        <reference anchor="RFC8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <referencegroup anchor="STD97" target="https://www.rfc-editor.org/info/std97">
          <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110">
            <front>
              <title>HTTP Semantics</title>
              <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
              <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
              <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
              <date month="June" year="2022"/>
              <abstract>
                <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
                <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="97"/>
            <seriesInfo name="RFC" value="9110"/>
            <seriesInfo name="DOI" value="10.17487/RFC9110"/>
          </reference>
        </referencegroup>
        <reference anchor="I-D.ietf-asdf-sdf-nonaffordance">
          <front>
            <title>Semantic Definition Format (SDF) Extension for Non-Affordance Information</title>
            <author fullname="Jungha Hong" initials="J." surname="Hong">
              <organization>Electronics and Telecommunications Research Institute</organization>
            </author>
            <author fullname="Hyunjeong Lee" initials="H." surname="Lee">
              <organization>Electronics and Telecommunications Research Institute</organization>
            </author>
            <date day="27" month="October" year="2026"/>
            <abstract>
              <t>   This document describes an extension to the Semantic Definition
   Format (SDF) for representing non-affordance information of Things,
   such as physical, contextual, and descriptive metadata.  This
   extension introduces a new Class Name Keyword, sdfContext, that
   enables comprehensive modeling of Things and improves semantic
   clarity.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-nonaffordance-06"/>
        </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="REST" target="http://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf">
          <front>
            <title>Architectural Styles and the Design of Network-based Software Architectures</title>
            <author initials="R." surname="Fielding" fullname="Roy Fielding">
              <organization>University of California, Irvine</organization>
            </author>
            <date year="2000"/>
          </front>
          <seriesInfo name="Ph.D." value="Dissertation, University of California, Irvine"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </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-mapping">
          <front>
            <title>Semantic Definition Format (SDF): Supplements</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Jan Romann" initials="J." surname="Romann">
              <organization>Universität Bremen</organization>
            </author>
            <date day="18" month="February" year="2026"/>
            <abstract>
              <t>   The Semantic Definition Format (SDF) is a format for domain experts
   to use in the creation and maintenance of data and interaction models
   that describe Things, i.e., physical objects that are available for
   interaction over a network.  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.

   An SDF specification often needs to be augmented by additional
   information that is specific to its use in a particular ecosystem or
   application.  SDF Supplements provide a mechanism to represent this
   augmentation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-mapping-01"/>
        </reference>
        <reference anchor="I-D.ietf-iotops-7228bis">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Mehmet Ersue" initials="M." surname="Ersue">
         </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Carles Gomez" initials="C." surname="Gomez">
              <organization>Universitat Politecnica de Catalunya</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   The Internet Protocol Suite is increasingly used on small devices
   with severe constraints on power, memory, and processing resources,
   creating constrained-node networks.  This document provides a number
   of basic terms that have been useful in research and standardization
   work for constrained-node networks.

   This document obsoletes RFC 7228.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-iotops-7228bis-10"/>
        </reference>
        <reference anchor="I-D.amsuess-t2trg-raytime">
          <front>
            <title>Raytime: Validating token expiry on an unbounded local time interval</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="19" month="October" year="2024"/>
            <abstract>
              <t>   When devices are deployed in locations with no real-time access to
   the Internet, obtaining a trusted time for validation of time limited
   tokens and certificates is sometimes not possible.  This document
   explores the options for deployments in which the trade-off between
   availability and security needs to be made in favor of availability.
   While considerations are general, terminology and examples primarily
   focus on the ACE framework.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-t2trg-raytime-03"/>
        </reference>
        <reference anchor="I-D.ietf-asdf-digital-twin">
          <front>
            <title>Semantic Definition Format (SDF) Modeling for Digital Twin</title>
            <author fullname="Hyunjeong Lee" initials="H." surname="Lee">
              <organization>Electronics and Telecommunications Research Institute</organization>
            </author>
            <author fullname="Jungha Hong" initials="J." surname="Hong">
              <organization>Electronics and Telecommunications Research Institute</organization>
            </author>
            <date day="14" month="October" year="2026"/>
            <abstract>
              <t>   This memo specifies SDF modeling for digital twins, i.e., digital
   twin systems, and their things.  An SDF is a format that is used to
   create and maintain data and interaction, and to represent the
   various kinds of data that is exchanged for these interactions.  The
   SDF format can be used to model the characteristics, behavior and
   interactions of things, i.e. physical objects, in digital twins that
   contain things as components.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-digital-twin-06"/>
        </reference>
        <reference anchor="LAYERS" target="https://github.com/t2trg/wishi/wiki/NOTE:-Terminology-for-Layers">
          <front>
            <title>Terminology for Layers</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
          <refcontent>WISHI Wiki</refcontent>
        </reference>
        <reference anchor="STP">
          <front>
            <title>The Series Transfer Pattern (STP)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Klaus Hartke" initials="K." surname="Hartke">
              <organization>Ericsson</organization>
            </author>
            <date day="7" month="April" year="2020"/>
            <abstract>
              <t>   Many applications make use of Series of data items, i.e., an array of
   data items where new items can be added over time.  Where such Series
   are to be made available using REST protocols such as CoAP or HTTP,
   the Series has to be mapped into a structure of one or more resources
   and a protocol for a client to obtain the Series and to learn about
   new items.

   Various protocols have been standardized that make Series-shaped data
   available, with rather different properties and objectives.  The
   present document is an attempt to extract a common underlying pattern
   and to define media types and an access scheme that can be used right
   away for further protocols that provide Series-shaped data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-t2trg-stp-03"/>
        </reference>
        <reference anchor="RFC9039">
          <front>
            <title>Uniform Resource Names for Device Identifiers</title>
            <author fullname="J. Arkko" initials="J." surname="Arkko"/>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="June" year="2021"/>
            <abstract>
              <t>This document describes a new Uniform Resource Name (URN) namespace for hardware device identifiers. A general representation of device identity can be useful in many applications, such as in sensor data streams and storage or in equipment inventories. A URN-based representation can be passed along in applications that need the information.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9039"/>
          <seriesInfo name="DOI" value="10.17487/RFC9039"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="I-D.ietf-asdf-sdf-protocol-mapping">
          <front>
            <title>SDF Protocol Mapping</title>
            <author fullname="Rohit Mohan" initials="R." surname="Mohan">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Bart Brinckman" initials="B." surname="Brinckman">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Lorenzo Corneo" initials="L." surname="Corneo">
              <organization>Ericsson</organization>
            </author>
            <date day="15" month="September" year="2026"/>
            <abstract>
              <t>   This document defines protocol mapping extensions for the Semantic
   Definition Format (SDF) to enable mapping of protocol-agnostic SDF
   affordances to protocol-specific operations.  The protocol mapping
   mechanism allows SDF models to specify how properties, actions, and
   events should be accessed using a specific protocol.  This document
   defines protocol mappings for Bluetooth Low Energy and Zigbee, and
   the mechanism can be extended to other protocols such as HTTP and
   CoAP.  This document also describes a method to extend SCIM with an
   SDF model mapping.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-protocol-mapping-12"/>
        </reference>
      </references>
    </references>
    <?line 914?>

<section anchor="example-sdf-model">
      <name>Example SDF Model</name>
      <t><xref target="code-off-device-model"/> shows the model all of the examples for SDF messages are pointing to in this document.
Note how the namespace is managed here to export the <tt>envSensor</tt> component into
<tt>sensors:#/sdfObject/envSensor</tt>, which is the "entry point" used in the instance
messages within the main document.</t>
      <figure anchor="code-off-device-model">
        <name>SDF Model that serves as a reference point for the SDF messages in this draft</name>
        <sourcecode type="sdf"><![CDATA[{
  "namespace": {
    "sensors": "https://example.com/sensors"
  },
  "defaultNamespace": "sensors",
  "sdfObject": {
    "envSensor": {
      "sdfContext": {
        "deviceIdentity": {
          "writable": false,
          "type": "object",
          "properties": {
            "manufacturer": {
              "type": "string"
            },
            "firmwareVersion": {
              "type": "string"
            }
          }
        },
        "installationInfo": {
          "writable": false,
          "type": "object",
          "properties": {
            "floor": {
              "type": "integer"
            },
            "mountType": {
              "enum": [
                "ceiling",
                "wall"
              ]
            }
          }
        }
      },
      "sdfProperty": {
        "temperature": {
          "type": "number",
          "unit": "Cel"
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="syntax">
      <name>Formal Syntax of SDF Messages</name>
      <sourcecode type="cddl"><![CDATA[
start = sdf-instance-message-syntax

sdf-instance-message-syntax = {
 ; info will be required in most process policies
 ? info: sdfinfo
 namespace: named<text>
 ? defaultNamespace: text
 ? sdfInstanceOf: sdf-instance-of
 ? sdfInstance: sdf-instance
}

sdfinfo = {
 ? title: text
 ? description: text
 ? version: text
 ? copyright: text
 ? license: text
 ? messageId: text
 ; Identifier used to connect this instance message to a previous
 ; one:
 ; Allows this instance message to only contain values that have
 ; actually changed, turning it into a "Delta" or a "Patch",
 ; depending on the purpose of the message.
 ? previousMessageId: text
 ? timestamp: modified-date-time
 ? modified: modified-date-time
 ? features: [
             ]
 optional-comment
}

sdf-instance-of = {
 model: text
 ? patchMethod: text ; default is merge-patch
 optional-comment
}

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

; 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 }

commonqualities = (
 optional-comment
)

; For describing the state of instances at a given point in time
;
; An sdfInstance can refer to either an sdfThing or an sdfObject.
; Structurally, it is mostly equivalent to that of an sdfThing
; with the additiona of a thingId quality.
sdf-instance = (
    ? thingId: text

    thingqualities
)
objectqualities = {
 commonqualities

 cpaedataqualities
}

thingqualities = {
 sdfThing: named<thingqualities>

 sdfObject: named<objectqualities>

 commonqualities

 cpaedataqualities
}

cpaedataqualities = (
 ? sdfContext: named<allowed-types>

 ; Models the current state of the instance's properties
 ? sdfProperty: named<allowed-types>

 ; Models the current state of the instance's action affordances
 ;
 ; DISCUSS: How should the state of actions be modeled?
 ? sdfAction: named<any>

 ; Models an history for every event affordance
 ? sdfEvent: named<eventhistory>
)

eventhistory = [* eventqualities]

eventqualities = {
    outputValue: allowed-types
    timestamp: modified-date-time
}

allowed-types = number / text / bool / null
              / [* number] / [* text] / [* bool]
              / {* text => any}

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>
    </section>
    <section numbered="false" anchor="list-of-figures">
      <name>List of Figures</name>
      <dl spacing="compact" indent="11">
        <dt><xref target="example-context"/>:</dt>
        <dd>
          <t><xref format="title" target="example-context"/></t>
        </dd>
        <dt><xref target="code-off-device-instance"/>:</dt>
        <dd>
          <t><xref format="title" target="code-off-device-instance"/></t>
        </dd>
        <dt><xref target="code-sdf-construction-message"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-construction-message"/></t>
        </dd>
        <dt><xref target="code-sdf-identity-manifest"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-identity-manifest"/></t>
        </dd>
        <dt><xref target="code-sdf-delta-message"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-delta-message"/></t>
        </dd>
        <dt><xref target="code-sdf-context-patch"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-context-patch"/></t>
        </dd>
        <dt><xref target="code-sdf-construction-sdf-context"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-construction-sdf-context"/></t>
        </dd>
        <dt><xref target="code-sdf-protocol-map-plus-context"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-protocol-map-plus-context"/></t>
        </dd>
        <dt><xref target="code-sdf-ipaddress-context"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-ipaddress-context"/></t>
        </dd>
        <dt><xref target="code-snapshot-with-actions-and-events"/>:</dt>
        <dd>
          <t><xref format="title" target="code-snapshot-with-actions-and-events"/></t>
        </dd>
        <dt><xref target="code-wot-td-example"/>:</dt>
        <dd>
          <t><xref format="title" target="code-wot-td-example"/></t>
        </dd>
        <dt><xref target="code-sdf-model-for-wot-example"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-model-for-wot-example"/></t>
        </dd>
        <dt><xref target="code-sdf-message-for-wot-example"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-message-for-wot-example"/></t>
        </dd>
        <dt><xref target="code-off-device-model"/>:</dt>
        <dd>
          <t><xref format="title" target="code-off-device-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="instance-message-dimensions"/>:</dt>
        <dd>
          <t><xref format="title" target="instance-message-dimensions"/></t>
        </dd>
        <dt><xref target="infoblockqual"/>:</dt>
        <dd>
          <t><xref format="title" target="infoblockqual"/></t>
        </dd>
        <dt><xref target="nssec"/>:</dt>
        <dd>
          <t><xref format="title" target="nssec"/></t>
        </dd>
        <dt><xref target="iobsec"/>:</dt>
        <dd>
          <t><xref format="title" target="iobsec"/></t>
        </dd>
        <dt><xref target="ibsec"/>:</dt>
        <dd>
          <t><xref format="title" target="ibsec"/></t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>(TODO)</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
/wELiFciOMsAAA==

-->

</rfc>
