<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-asdf-instance-information-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="SDF Instance Information">Instance Information for SDF</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-asdf-instance-information-07"/>
    <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>
    <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="02"/>
    <area/>
    <workgroup>ASDF</workgroup>
    <keyword>IoT</keyword>
    <keyword>Link</keyword>
    <keyword>Information Model</keyword>
    <keyword>Interaction Model</keyword>
    <keyword>Data Model</keyword>
    <abstract>
      <?line 75?>

<t>This document discusses types of Instance Information to be used in
conjunction with the Semantic Definition Format (SDF) for Data and
Interactions of Things (draft-ietf-asdf-sdf) and will ultimately
define Representation Formats for them as well as ways to use SDF
Models to describe them.</t>
      <t><cref anchor="status">The present revision –07 adds an experimental section on linking <tt>sdfProtocolMap</tt> and <tt>sdfContext</tt> which has been yet another result of the discussions that happened during and after IETF 124.</cref></t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-bormann-asdf-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 88?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Semantic Definition Format for Data and Interactions of Things
(SDF, <xref target="I-D.ietf-asdf-sdf"/>) is a format for domain experts to use in the creation
and maintenance of data and interaction models 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="I-D.ietf-asdf-sdf"/> 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>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>mapping files</em> <xref target="I-D.bormann-asdf-sdf-mapping"/> that apply to the SDF model
providing the abstract data model.</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>Instance-related Message:</dt>
          <dd>
            <t>A message that describes the state or a state change of a specific instance.
(TBC -- also: do we need this additional term?)</t>
          </dd>
          <dt>Message Archetype:</dt>
          <dd>
            <t>In the context of instance-related messages:
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 instance-related message archetypes.</t>
          </dd>
          <dt>Proofshot:</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).
We are not saying that the Proofshot <em>is</em> the instance because there
may be different ways to make one from an Instance (or to consume
one in updating the state of the Instance), and because the
proofshot, being a message, is not situated.
</t>
            <t>Proofshots are snapshots, and they are "proofs" in the photographic
sense, i.e., they may not be of perfect quality.
Not all state that is characteristic of an Instance may be included
in a Proofshot (e.g., information about an active action that is not
embedded in an action resource).
Proofshots may depend on additional context (such as the identity of
the Instance and a Timestamp).</t>
            <t>An interaction affordance to obtain a Proofshot may not be provided
by every Instance.
An Instance may provide separate Construction affordances instead of
simply setting a Proofshot.</t>
            <t>Discuss Proofshots of a Thing (device) and of other components.</t>
            <t>Discuss concurrency problems with getting and setting Proofshots.</t>
            <t>Discuss Timestamps appropriate for Things (<xref section="4.4" sectionFormat="of" target="I-D.ietf-iotops-7228bis"/>, <xref target="I-D.amsuess-t2trg-raytime"/>).</t>
            <t>TODO: Also mention the other message types we had so far (context snapshot,
      context patch, identity manifest) here?</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 proofshots, in that they embody a state, however this
state needs to be precise so the construction can actually happen.
</t>
            <t>Discuss YANG config=true approach.</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 anchor="terms-we-are-trying-not-to-use">
        <name>Terms we are trying not to use</name>
        <dl>
          <dt>Non-affordance:</dt>
          <dd>
            <t>Originally a term for information that is the subject of
interactions with other Instances than the Thing (called "offDevice"
now), this term is now considered confusing as it would often just
be an affordance of another Instance than the Thing.
In this draft version, we are trying to use a new keyword called
<tt>sdfContext</tt> that is supposed to be slightly more accurate, replacing
the <tt>$context</tt> concept that was used in previous draft versions.</t>
          </dd>
        </dl>
      </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 <em>message</em>, which adheres to a uniform 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 instance-related 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>Based on these considerations (as illustrated by the systematization in <xref target="instance-message-dimensions"/>), we can identify the following four message archetypes:</t>
      <!-- TODO: The names probably need to be improved -->

<ol spacing="normal" type="1"><li>
          <t><em>State reports</em> that may contain contain both affordance-related and context information, including information about a Thing's identity,</t>
        </li>
        <li>
          <t><em>Construction messages</em>, which trigger a Thing's initial configuration process or its commissioning,</t>
        </li>
        <li>
          <t><em>State report updates</em> that indicate changes that have occurred since a reference state report, and</t>
        </li>
        <li>
          <t><em>State patches</em> that update the Thing's state.</t>
        </li>
      </ol>
      <!-- TODO: I am not really happy with the entry names yet-->
<table anchor="instance-message-dimensions">
        <name>Systematization of instance-related 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">Status Report</td>
            <td align="center">Status Report Update</td>
          </tr>
          <tr>
            <th align="center">State Change</th>
            <td align="center">Construction</td>
            <td align="center">State Patch</td>
          </tr>
        </tbody>
      </table>
      <t>The uniform message format can be used for all four message archetypes.
<xref target="syntax"/> specifies the formal syntax of instance-related 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 instance-related 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.lee-asdf-digital-twin-09"/> that each correspond with one of the four archetypes.</t>
      <section anchor="axioms-for-instance-related-messages">
        <name>Axioms for instance-related messages</name>
        <!-- TODO: Integrate this into the document in a better way -->

<t>Instance-related messages can be messages that relate to a property, action, or
event (input or output data), or they can be "proofshots" (extracted state
information, either in general or in a specific form such as a context snapshot etc.).</t>
        <t>Instance-related 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
instance-related message is interchanged (at least conceptually), or it may be a
"built-in" interaction (such as a proofshot, a context snapshot, ...) 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.
Instance-related messages use JSON pointers into the model in order to link the
instance-related information to the model.</t>
        <t>Instance-related 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>Instance-related 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>
        <t>To identify the reference state for a delta/patch, we need</t>
        <ul spacing="normal">
          <li>
            <t>device identity (thingId?)</t>
          </li>
          <li>
            <t>state info (timestamp? state/generation identifier?)</t>
          </li>
        </ul>
      </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"/>.
Note that <tt>sdfContext</tt> <em>could</em> also be modelled via <tt>sdfProperty</tt>.</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>
      </section>
    </section>
    <section anchor="message-format">
      <name>Message Format</name>
      <t>The data model of instance-related 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>
      <t>TODO: Decide where we want to keep this:</t>
      <t>One interesting piece of offDevice information is the model itself, including 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.
Multiple models may apply to the same device (including but not only revisions of the same models).</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, "status report update" messages can utilize the <tt>previousMessageId</tt> in order to link two messages and indicate the state change.</t>
        <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 instance-related message</td>
            </tr>
            <tr>
              <td align="left">previousMessageId</td>
              <td align="left">string</td>
              <td align="left">Identifier used to connect this instance-related message to a previous one</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, instance-related 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 instance-related 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 entry point the <tt>sdfInstance</tt> quality from the next section is referring to.
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>. Has to be based on a namespace identifier from the <tt>namespaces</tt> map.</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>Since we are using the <tt>sdfInstance</tt> keyword as an entry point at the location pointed to via the <tt>model</tt> specfied in <tt>sdfInstanceOf</tt>, the instance-related message has to follow the structure of this part of the model (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 instance-related 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">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>
      <t>TODO: Decide whether we want to add specific CDDL schemas for the four archetypes via extension points in the "base schema"</t>
      <t>TODO: The description of the individual messages probably has to be expanded.
      Maybe some of the content from the six example messages should be moved here.</t>
      <section anchor="state-reports">
        <name>State Reports</name>
        <t>This instance-related 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-state-report+json</tt> <bcp14>MUST</bcp14> be indicated if supported by the protocol used for transmission.</t>
        <t>State reports <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>
      </section>
      <section anchor="construction-messages">
        <name>Construction Messages</name>
        <t>(These might not be covered here but via dedicated actions.)</t>
        <t>Construction messages are structurally equivalent to state reports, with the main difference being that the recipient is supposed to initiate a configuration or comissioning process upon when receiving it.
Furthermore, construction messages <bcp14>MUST</bcp14> be indicated by a different media type, namely <tt>application/sfd-construction+json</tt>.</t>
      </section>
      <section anchor="state-report-updates">
        <name>State Report Updates</name>
        <t>State report updates are messages that only describe updates relative to a previous message.
For this purpose, a <tt>previousMessageId</tt> <bcp14>MUST</bcp14> be present in the info block.
When transmitting state report updates, the media type <tt>application/sdf-state-report-update+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>
      </section>
      <section anchor="state-patches">
        <name>State Patches</name>
        <t>State patches are structurally equivalent to state report updates.
However, they utilize the patch mechanism (using the provided <tt>patchMethod</tt>) to alter the state of a Thing instead of reporting state changes.
Since they 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-state-patch+json</tt> <bcp14>MUST</bcp14> be used if possible.</t>
      </section>
    </section>
    <section anchor="message-purposes-and-usecases">
      <name>Message Purposes and Usecases</name>
      <t>The four archetypes can be further subdivided into (at least) six kinds of messages that all deal with different use cases.
While the archetypes each have their own media type that can be used to identity them during a message exchange, the six concete messages in this section are may only be identified by their content.</t>
      <t>TODO: Consider only describing the different kinds of state reports</t>
      <t>State Reports can be used as</t>
      <ul spacing="normal">
        <li>
          <t><em>Context snapshots</em> that only report context information about a Thing,</t>
        </li>
        <li>
          <t><em>Proofshots</em> that report a Thing's state (or parts of it), which may include context information, or</t>
        </li>
        <li>
          <t><em>Identity manifests</em> that report information related to a Thing's identity.</t>
        </li>
      </ul>
      <t>In the case of state report updates, we have <em>Deltas</em> that indicate state changes compared to a previous context snapshot, proofshot message, or identity manifest.</t>
      <t>State patches can appear as <em>Patch messages</em> that indicate state changes that should be <em>applied</em> to a Thing.</t>
      <t>And finally, we have the <em>Construction Messages</em> that initiate a Thing's (re)configuration or its comissioning</t>
      <t>As we can see, the great amount of variation within the state report archetype in the case of messages 1 to 3 comes from the different kinds and the characteristic of the information that is the reported in the eventual message.
However, the message format stays identical across the three manifestations of the archetype.</t>
      <t>In the remainder of this section, we will discuss the differences of these three messages in particular and will also deal with the potential modelling of construction messages.</t>
      <section anchor="context-snapshots">
        <name>Context Snapshots</name>
        <t>Context snapshots are state reports that only include context information via the <tt>sdfContext</tt> keyword.</t>
        <t><xref target="example-context"/> gives an example for this kind of instance-related message by showing a status report message that only contains context information.</t>
        <figure anchor="example-context">
          <name>Example of an SDF context snapshot.</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a42"
  },
  "namespace": {
    "models": "https://example.com/models",
    "sensors": "https://example.com/sensors"
  },
  "defaultNamespace": "models",
  "sdfInstanceOf": {
    "model": "sensors:#/sdfObject/envSensor"
  },
  "sdfInstance": {
    "sdfContext": {
      "timestamp": "2025-07-01T12:00:00Z",
      "thingId": "envSensor:abc123",
      "installationInfo": {
        "floor": 3,
        "mountType": "ceiling",
        "indoorOutdoor": "indoor"
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <t>This kind of message may become especially relevant later in conjunction with the <tt>sdfProtocolMap</tt> introduced in <xref target="I-D.ietf-asdf-sdf-protocol-mapping"/> for complementing protocol-specific information at the model-level with instance-related context information such as IP addresses.</t>
      </section>
      <section anchor="proofshots">
        <name>Proofshots</name>
        <t>(See defn above.)</t>
        <t>Proofshots are similar to context snapshots, with the important difference that
they are not only reporting the context information associated with an entity but
also state information associated with its interaction affordances (properties,
actions, and events).
As in the case of the Context Snapshot, the Proofshot may also contain concrete
values that reflect context information associated with a device via the
<tt>sdfContext</tt> keyword <xref target="I-D.ietf-asdf-sdf-nonaffordance"/>.</t>
        <t>TODO: 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.</t>
        <t>The following examples are based on <xref target="I-D.ietf-asdf-sdf-nonaffordance"/> and <xref target="I-D.lee-asdf-digital-twin-09"/>.
<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"
  },
  "namespace": {
    "models": "https://example.com/models",
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "models",
  "sdfInstanceOf": {
    "model": "sensors:#/sdfObject/envSensor"
  },
  "sdfInstance": {
    "sdfContext": {
      "timestamp": "2025-07-01T12:00:00Z",
      "thingId": "envSensor:abc123",
      "installationInfo": {
        "mountType": "ceiling"
      }
    },
    "sdfProperty": {
      "temperature": 23.124
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="construction-messages-1">
        <name>Construction Messages</name>
        <t>Construction messages enable the creation of the digital instance, e.g., initialization/commissioning of a device or creation of its digital twins.
Construction messages are like proofshots, in that they embody a state, however this state needs to be precise so the construction can actually happen.</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). This output -- which can once again be modeled as an instance-related
message -- may be referred to as an <em>identity manifest</em> when it primarily
contains identity-related context information.</t>
        <t>Construction messages need to refer to some kind of constructor in order to be able to start 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.
As the device that is being constructed will not be initialized before the
construction has finished, the <tt>sdfAction</tt> has to be modeled as an external or
"off-device" action. This raises the question whether the <tt>sdfAction</tt> still
belongs into the SDF model that corresponds with the class the resulting device
instance belongs to.</t>
        <t>(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.)</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.</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": {
    "models": "https://example.com/models",
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "models",
  "sdfInstanceOf": {
    "model": "sensors:#/sdfObject/envSensor"
  },
  "sdfInstance": {
    "sdfContext": {
      "timestamp": "2025-07-01T08:15:00Z",
      "thingId": "envSensor:unit42",
      "deviceIdentity": {
        "manufacturer": "HealthTech Inc.",
        "firmwareVersion": "1.4.3"
      }
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="delta-messages">
        <name>Delta Messages</name>
        <t>TODO: Reword</t>
        <t>When the state of a device at a given point in time is known (e.g., due to a
previous instance-related message), an external entity might only be interested in the
changes since that point in time. Or it might want to adjust its state and/or
context the device operates in. For both purposes, instance-related messages
can be used.</t>
        <t><xref target="code-sdf-delta-message"/> shows an example that contains an instance-related
message reporting a "proofshot delta", that is the state changes that occured
compared to the ones reported in the previous message (identified via its
<tt>previousMessageId</tt>). In this example, only the temperature as measured by the
sensor has changed, so only that information 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 instance-related 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": {
    "cap": "https://example.com/capability/cap",
    "models": "https://example.com/models"
  },
  "defaultNamespace": "cap",
  "sdfInstanceOf": {
    "model": "models:/sdfObject/envSensor"
  },
  "sdfInstance": {
    "sdfProperty": {
      "temperature": 24
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="patch-messages">
        <name>Patch Messages</name>
        <t>Yet another purpose for instance-related messages is the application of updates
to a device's configuration via a so-called patch message.
Such a message is shown in <xref target="code-sdf-context-patch"/>, where a change of the
device's <tt>mountType</tt> is reflected. This message type might be especially
relevant for digital twins <xref target="I-D.lee-asdf-digital-twin-09"/>, where changes to physical
attributes (such as the location) need to be reflected somehow.</t>
        <figure anchor="code-sdf-context-patch">
          <name>Example of an SDF context patch message that uses the common instance-related message format.</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a42"
  },
  "namespace": {
    "models": "https://example.com/models",
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "models",
  "sdfInstanceOf": {
    "model": "sensors:#/sdfObject/envSensor",
    "patchMethod": "merge-patch"
  },
  "sdfInstance": {
    "sdfContext": {
      "installationInfo": {
        "mountType": "wall"
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <t>TODO: Maybe the following can be shortened or even removed</t>
        <t>When comparing  <xref target="code-sdf-delta-message"/> and <xref target="code-sdf-context-patch"/>, we
can see that the main difference between the messages is the <em>purpose</em> these
message are being used for. This purpose could be implicitly reflected by the
nature of the resource that accepts or returns the respective message type.
It would also be possible to indicate the purpose more explicitly by using a
different content format when transferring the messages over the wire.
Another difference, however, lays in the fact that the context patch is not
including a <tt>previousMessageId</tt>, which might be sufficient to distinguish the
two message types.</t>
        <t>Despite their different purpose, both messages will apply some kind of patch
algorithm.
JSON Merge Patch <xref target="RFC7396"/> is probably a strong contender for the default
algorithm that will be used a little bit differently depending on the message
type (the context patch will be applied "internally" by the device, while
the delta message will be processed together with its predecessor by a
consumer). As there might be cases where the Merge Patch algorithm is not
sufficient, different algorithms (that can be IANA registered) are going to be
settable via the <tt>patchMethod</tt> field within the <tt>sdfInstanceOf</tt> quality.</t>
      </section>
      <section anchor="identity-manifest">
        <name>Identity Manifest</name>
        <t>Identity manifests belong like proofshots and context snapshots to the Status Report archetype.
However, their use case is tied more strongly to identity information which may be modeled as context information.</t>
        <t><xref target="code-sdf-identity-manifest"/> shows an example of an identity manifest, that is structurally identical to the construction message shown in <xref target="code-sdf-construction-message"/>.
What makes qualifies the message as an identity manifest is its media type, which differs from the construction message, as well as the circumstances under which the message might be emitted -- for instance, as the <em>result</em> of a construction.</t>
        <figure anchor="code-sdf-identity-manifest">
          <name>Example for an SDF construction message</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "messageId": "75532020-8f64-4daf-a241-fcb0b6dc4a42"
  },
  "namespace": {
    "models": "https://example.com/models",
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "models",
  "sdfInstanceOf": {
    "model": "sensors:#/sdfObject/envSensor"
  },
  "sdfInstance": {
    "sdfContext": {
      "timestamp": "2025-07-01T08:15:00Z",
      "thingId": "envSensor:unit42",
      "deviceIdentity": {
        "manufacturer": "HealthTech Inc.",
        "firmwareVersion": "1.4.3"
      }
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="linking-sdfprotocolmap-and-sdfcontext-via-json-pointers">
      <name>Linking <tt>sdfProtocolMap</tt> and <tt>sdfContext</tt> via JSON Pointers</name>
      <t>(This section is currently still experimental.)</t>
      <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:
All instances of a smart light may use similar CoAP resources, with the only difference being the concrete IP address they are using.
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.
A (hypothetical) CoAP protocol mapping specification could define an interface for parameters such as an IP address.
Via a <tt>contextMap</tt> (this name is still under discussion), the <tt>sdfProtocolMapping</tt> definition within a model could point (via a JSON pointer) to a compatible <tt>sdfContext</tt> definition that may further restrict the set of allowed values via its 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": {
    "models": "https://example.com/models",
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "models",
  "sdfObject": {
    "sensor": {
      "sdfContext": {
        "ipAddress": {
          "type": "string"
        }
      },
      "sdfProperty": {
        "temperature": {
          "type": "number",
          "sdfProtocolMap": {
            "coap": {
              "contextMap": {
                "ipAddress": "#/sdfObject/sensor/sdfContext/\
                                                           ipAddress"
              },
              "read": {
                "method": "GET",
                "href": "/temperature",
                "contentType": 60
              }
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
      <t><xref target="code-sdf-ipaddress-context"/> shows how a status report (in the "old" terminology, the message would be called a context snapshot) can provide the necessary IP address that is needed to actually retrieve the temperature value from the sensor described by the SDF model above.</t>
      <figure anchor="code-sdf-ipaddress-context">
        <name>Example of a status report 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": {
    "models": "https://example.com/models",
    "sensors": "https://example.com/sensor"
  },
  "defaultNamespace": "models",
  "sdfInstanceOf": {
    "model": "sensors:#/sdfObject/sensor"
  },
  "sdfInstance": {
    "sdfContext": {
      "ipAddress": "192.168.1.5"
    }
  }
}
]]></sourcecode>
      </figure>
      <t>This approach can become very verbose in a nested model and may need refinement in future draft revisions.
The general principle, however, is promising as it follows the principle of cleanly separating class from instance-related information.</t>
    </section>
    <section anchor="examples-for-sdf-constructors">
      <name>Examples for SDF Constructors</name>
      <t>TODO: This section needs to be updated/reworked/removed</t>
      <t><xref target="code-sdf-constructor-action"/> shows a potential approach for describing
constructors via the <tt>sdfAction</tt> keyword with a set of construction parameters
contained in its <tt>sdfInputData</tt>.</t>
      <t>As the constructor action is modeled as being detached from the device and
performed by an external <tt>constructor</tt> in this example, both the resulting model
and the initial instance description (which can be considered an identity
manifest) are returned.
The schema information that governs the shape of both the model and the instance
message are referred to via the <tt>sdfRef</tt> keyword.</t>
      <t>DISCUSS: Note that the action may also return a pointer to an external SDF model
and provide the additional information from the constructor via an SDF Mapping
File. These are aspects that still require discussion, examples, and
implementation experience.</t>
      <figure anchor="code-sdf-constructor-action">
        <name>Example for SDF model with constructors</name>
        <sourcecode type="sdf"><![CDATA[=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "info": {
    "title": "Example document for SDF with actions as constructors \
                                                  for instantiation",
    "version": "2019-04-24",
    "copyright": "Copyright 2019 Example Corp. All rights reserved.",
    "license": "https://example.com/license"
  },
  "namespace": {
    "sdf": "https://example.com/common/sdf/definitions",
    "cap": "https://example.com/capability/cap"
  },
  "defaultNamespace": "cap",
  "sdfObject": {
    "constructor": {
      "sdfAction": {
        "construct": {
          "sdfInputData": {
            "$comment": "DISCUSS: Do we need to establish a \
connection between constructor parameters and the resulting instance\
                                                  -related message?",
            "type": "object",
            "properties": {
              "temperatureUnit": {
                "type": "string"
              },
              "ipAddress": {
                "type": "string"
              }
            },
            "required": [
              "temperatureUnit"
            ]
          },
          "sdfOutputData": {
            "$comment": "Would we point to the JSON Schema \
                                                  definitions here?",
            "type": "object",
            "properties": {
              "model": {
                "type": "object",
                "properties": {
                  "sdfRef": "sdf:#/sdf/model/format"
                }
              },
              "instance": {
                "type": "object",
                "properties": {
                  "sdfRef": "sdf:#/instance/message/format"
                }
              }
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="discussion">
      <name>Discussion</name>
      <t>(TODO)</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <ul spacing="normal">
        <li>
          <t>Pieces of instance-related information might only be available in certain scopes, e.g. certain security-related configuration parameters</t>
        </li>
      </ul>
      <t>(TODO)</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="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>
        <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="20" month="October" year="2025"/>
            <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 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-02"/>
        </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.bormann-asdf-sdf-mapping">
          <front>
            <title>Semantic Definition Format (SDF): Mapping files</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="20" month="July" year="2025"/>
            <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 mapping files provide a mechanism to represent this
   augmentation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-asdf-sdf-mapping-07"/>
        </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="4" month="November" year="2025"/>
            <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-03"/>
        </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.lee-asdf-digital-twin-09">
          <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>
            <author fullname="Joo-Sang Youn" initials="J." surname="Youn">
              <organization>DONG-EUI University</organization>
            </author>
            <author fullname="Yong-Geun Hong" initials="Y." surname="Hong">
              <organization>Daejeon University</organization>
            </author>
            <date day="4" month="July" year="2025"/>
            <abstract>
              <t>   This memo specifies SDF modeling for a digital twin, i.e. a digital
   twin system, and its 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 a digital twin that
   contain Things as components.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-lee-asdf-digital-twin-09"/>
        </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="I-D.ietf-asdf-sdf-protocol-mapping">
          <front>
            <title>Protocol Mapping for SDF</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="16" month="October" year="2025"/>
            <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 specific IP and non-IP protocols such
   as Bluetooth Low Energy, Zigbee or HTTP and CoAP.

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

<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 instance-related messages are pointing to in this document.
Note how the namespace is managed here to export the <tt>envSensor</tt> component into
<tt>models:#/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 instance-related messages in this draft</name>
        <sourcecode type="sdf"><![CDATA[{
  "namespace": {
    "models": "https://example.com/models",
    "sensors": "https://example.com/sensors"
  },
  "defaultNamespace": "models",
  "sdfObject": {
    "envSensor": {
      "sdfContext": {
        "timestamp": {
          "type": "string"
        },
        "thingId": {
          "type": "string"
        },
        "deviceIdentity": {
          "manufacturer": {
            "type": "string"
          },
          "firmwareVersion": {
            "type": "string"
          }
        },
        "installationInfo": {
          "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 Instance-related 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
 ? 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 equivalent to that of an sdfThing.
sdf-instance = 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 anchor="roads-not-taken">
      <name>Roads Not Taken</name>
      <t>This appendix documents previous modelling approaches that we eventually
decided against pursuing further.
Its main purpose is to illustrate our development process, showing
which kind of alternatives we considered before choosing a particular way
to describe instance information.
We will remove this appendix as soon as this document is about to be finished.</t>
      <section anchor="using-sdf-models-as-proofshots">
        <name>Using SDF Models as Proofshots</name>
        <t>As shown in <xref target="code-instance-syntactic-sugar-illustration"/>,
the proofshot format could have also been modeled via SDF models where
all <tt>sdfProperty</tt> definitions are given <tt>const</tt>values.
However, this concept is not capable of capturing actions and events.</t>
        <figure anchor="code-instance-syntactic-sugar-illustration">
          <name>SDF instance proposal for Figure 2 in [I-D.lee-asdf-digital-twin-09]</name>
          <sourcecode type="sdf"><![CDATA[=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "info": {
    "title": "An example model of the heater #1 in the boat #007 (\
                                        that resembles a proofshot)",
    "version": "2025-07-15",
    "copyright": "Copyright 2025. All rights reserved."
  },
  "namespace": {
    "models": "https://example.com/models"
  },
  "defaultNamespace": "models",
  "sdfThing": {
    "boat007": {
      "label": "Digital Twin of Boat #007",
      "description": "A ship equipped with heating and navigation \
                                                            systems",
      "sdfContext": {
        "scimObjectId": {
          "type": "string"
        },
        "identifier": {
          "type": "string",
          "const": "urn:boat:007:heater:1"
        },
        "location": {
          "type": "object",
          "const": {
            "wgs84": {
              "latitude": 35.2988233791372,
              "longitude": 129.25478376484912,
              "altitude": 0.0
            },
            "postal": {
              "city": "Ulsan",
              "post-code": "44110",
              "country": "South Korea"
            },
            "w3w": {
              "what3words": "toggle.mopped.garages"
            }
          }
        },
        "owner": {
          "type": "string",
          "default": "ExamTech Ltd.",
          "const": "ExamTech Ltd."
        }
      },
      "sdfRequired": "#/sdfThing/boat007/sdfObject/heater1",
      "sdfObject": {
        "heater": {
          "label": "Cabin Heater",
          "description": "Temperature control system for cabin \
                                                            heating",
          "sdfProperty": {
            "characteristic": {
              "description": "Technical summary of the heater",
              "type": "string",
              "default": "12V electric heater, 800W, automatic \
                                                             cutoff",
              "const": "12V electric heater, 800W, automatic cutoff"
            },
            "status": {
              "description": "Current operational status",
              "type": "string",
              "enum": [
                true,
                false,
                "error"
              ],
              "default": false,
              "const": false
            },
            "report": {
              "type": "string",
              "const": "On February 24, 2025, the boat #007's \
                              heater #1 was on from 9 a.m. to 6 p.m."
            }
          },
          "sdfEvent": {
            "overheating": {
              "$comment": "Note that it is unclear how to properly \
model events or event history with the approach illustrated by this \
                                                           example.",
              "maintenanceSchedule": "Next scheduled maintenance \
                                                               date",
              "sdfOutputData": {
                "type": "string",
                "format": "date-time",
                "const": "2025-07-15T07:27:15+0000"
              }
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <section anchor="alternative-instance-keys">
          <name>Alternative Instance Keys</name>
          <t>Below you can see an alternative instance modelling approach with IDs as (part of the) instance keys.</t>
          <figure anchor="code-off-device-instance-alternative">
            <name>SDF instance proposal (with IDs as part of the instance keys) for Figure 2 in [I-D.lee-asdf-digital-twin-09]</name>
            <sourcecode type="sdf"><![CDATA[=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "info": {
    "title": "A proofshot example for heater #1 on boat #007",
    "version": "2025-07-15",
    "copyright": "Copyright 2025. All rights reserved.",
    "proofshotId": "026c1f58-7bb9-4927-81cf-1ca0c25a857b"
  },
  "namespace": {
    "models": "https://example.com/models",
    "boats": "https://example.com/boats"
  },
  "defaultNamespace": "boats",
  "sdfInstance": {
    "models:#/sdfThing/boat/007": {
      "sdfInstanceOf": "models:#/sdfThing/boat",
      "heater": "models:#/sdfThing/boat/sdfObject/heater/001",
      "scimObjectId": "a2e06d16-df2c-4618-aacd-490985a3f763",
      "identifier": "urn:boat:007:heater:1",
      "location": {
        "wgs84": {
          "latitude": 35.2988233791372,
          "longitude": 129.25478376484912,
          "altitude": 0
        },
        "postal": {
          "city": "Ulsan",
          "post-code": "44110",
          "country": "South Korea"
        },
        "w3w": {
          "what3words": "toggle.mopped.garages"
        }
      },
      "owner": "ExamTech Ltd."
    },
    "models:#/sdfThing/boat/sdfObject/heater/001": {
      "characteristic": "12V electric heater, 800W, automatic cutoff\
                                                                   ",
      "status": "error",
      "report": "On February 24, 2025, the boat #007's heater #1 \
                                       was on from 9 a.m. to 6 p.m.",
      "sdfEvent": {
        "maintenanceSchedule": [
          {
            "outputValue": "2025-04-10",
            "timestamp": "2024-04-10T02:00:00Z"
          },
          {
            "outputValue": "2026-04-10",
            "timestamp": "2025-04-10T02:00:00Z"
          }
        ]
      }
    }
  }
}
]]></sourcecode>
          </figure>
        </section>
      </section>
    </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-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-identity-manifest"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-identity-manifest"/></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-sdf-constructor-action"/>:</dt>
        <dd>
          <t><xref format="title" target="code-sdf-constructor-action"/></t>
        </dd>
        <dt><xref target="code-off-device-model"/>:</dt>
        <dd>
          <t><xref format="title" target="code-off-device-model"/></t>
        </dd>
        <dt><xref target="code-instance-syntactic-sugar-illustration"/>:</dt>
        <dd>
          <t><xref format="title" target="code-instance-syntactic-sugar-illustration"/></t>
        </dd>
        <dt><xref target="code-off-device-instance-alternative"/>:</dt>
        <dd>
          <t><xref format="title" target="code-off-device-instance-alternative"/></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:
H4sIAAAAAAAAA+192XYbyZXge35FNNRzBLKR4KoNVaUyLUo2u0tLiyyX3eUa
M4EMkGkBmXBGghQsy2f+YX5h3uYT5q3nT+ZL5m6xJRIgq2zP8ekenrIFJCJj
uXHj7vdGmqbJzUgdJUlTNDM9UmelabJyouHDtKrnWVNUpYJP6vz0VZKNx7WG
5vC5s2EyyRp9VdWrkTJNnpim1tkc+nx58SqZVKXRpVmakWrqpU6SvJqU2RyG
zOts2qRj7KQs08zk07SQzuGD6zydQeemScrlfKzrUZLD11GSwRAj1eslt1X9
4aqulouROsG5ftAreJSPEpWqs+oC//mmKD/Q12Bpr6tcz/hho+tsEj88zZpM
vt3ocgnjKSWD9P79f52ocw1zboqJOtXToizo5VfUN8GMXs/KPOzcqGqqLq6L
8sr8+/9UfZzrTg+6nWfFbKRw9T8rdDMdVvUVDlY018sxjIbP0tsrAs9eF3h6
SZItm+sKIJMqBuyLrDaNLtXPGbTQHXQ6Ut+WxY2uTdH87//RqJ/Xeg5NLv7t
DH7GDdPNSL2rTDPNJtfq6Gj/+HgffpkUDWwqN8avAJKROk0Pnx49ekbfl2WD
2/4LjUOt4NHiuiqhzT8dP0uPDw/Sw4On6eOjZ4cH8JPmtU6ycfWz5o8FLdXO
+Z+zUr2v7piu7+P3WTmsqfnPlmWRjunnYa675pSUDKsb2saz9HRIQCWEg/8B
zuZT+OH9qxdPD58+HakZoYs6vzh99mSkrptm0fVaWlZlNoVtyHFHRgq+pv57
krgt4mHfvzy/wH+VarL6CoGNHY/29m5vb4fFxAyXk2Ko8+Xen6eFnuWAJnuL
5djs5YUxum5oq/fsT78Lnw4XNH3omE/yST25Lho9aZZ1NlPnzWqmDSFjc60B
X01xVSIqvtENHp10nBmdq/Nq2tzCmQrf1oa6tdiFn+1uva9W6pVMhn5o79kK
h3iRzQoAQllkA3VW3xSlprZ0gNXh/v4+fYWFFDArANdIunp3PTwdApoFixzc
p2vYwcePn+3zDqYMfn785OjZ45Gaa4B8usiayTU8fkB7OsuyuuBNrfWMxjKE
ETVSAmkU0Sj4X7Na6BQHoZaCL10N03m2WACMYGz+QF3ChJ4dHx7BqW+aOsSt
omqqhUmfHB4+HRdIMAGDjTTI5mapjUmbw6a+Suts1RS4E/JBGs205rHzAihI
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

-->

</rfc>
