<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-asdf-instance-information-06" 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-06"/>
    <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="01"/>
    <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 –06 takes into account the discussion that happened during IETF 123 and 124 as well as the interim meetings inbetween, and intends to harmonize different instance-related message concepts via a common format.</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="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 819?>

<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-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+192XYbyZXge35FNNRzRNIAuGpDVanMEiUXu7VZpFwul2vM
RGaATAvIhDMSpGBZPvMP8wvzNp8wbz1/Ml8yd4stkQBZ1fYZn+7hKVtAIjKW
Gzfufm8MBoPkeqQOk6QpmqkeqdPSNGmZafgwqepZ2hRVqeCTOjt5kaTjca2h
OXzubJhkaaMvq3o5UqbJE9PUOp1Bn8/PXyRZVRpdmoUZqaZe6CTJq6xMZzBk
XqeTZjDGTspykJp8Miikc/jgOh9MoXPTJOViNtb1KMnh6yhJYYiR6vWSm6r+
cFlXi/lIHeNcP+glPMpHiRqo0+oc/3lZlB/oa7C0V1Wup/yw0XWaxQ9P0iaV
b9e6XMB4SskgvX/7X8fqTMOcmyJTJ3pSlAW9/IL6JpjR62mZh50bVU3U+VVR
Xpp/+59qC+e63YNuZ2kxHSlc/S8L3UyGVX2JgxXN1WIMo+Gzwc0lgWe3Czy9
JEkXzVUFkBkoBuyztDaNLtU3DFroDjodqfdlca1rUzT/+3806ptaz6DJ+e9O
4WfcMN2M1NvKNJM0u1KHh3tHR3vwS1Y0sKncGL8CSEbqZHDw+PDBE/q+KBvc
9l9pHGoJj+ZXVQltfnH0ZHB0sD842H88eHj45GAfftK81iwdV79s/lzQUu2c
/yUt1bvqlun6Pv6YlsOamv9yURaDMf08zHXXnJKSYXVN23g6OBkSUAnh4H+A
s/kEfnj34tnjg8ePR2pK6KLOzk+ePBqpq6aZd702KKsyncA25LgjIwVfB/57
krgt4mHfPT87x3+VatL6EoGNHY92d29uboZFZoaLrBjqfLH710mhpzmgye58
MTa7eWGMrhva6l370x/Cp8M5TR865pN8XGdXRaOzZlGnU3XWLKfaEDI2Vxrw
1RSXJaLia93g0RmMU6NzdVZNmhs4U+Hb2lC3Frvws92td9VSvZDJ0A/tPVvi
EM/SaQFAKIu0r07r66LU1JYOsDrY29ujr7CQAmYF4BpJV2+vhidDQLNgkf27
dA07+PDhkz3ewQGDnx8/OnzycKRmGiA/mKdNdgWP79GeTtO0LnhTaz2lsQxh
RI2UQBpFNAr+1yzneoCDUEvBl66Gg1k6nwOMYGz+QF3ChJ4cHRzCqW+aOsSt
omqquRk8Ojh4PC6QYAIGG2mQzsxCGzNoDpr6clCny6bAnZAP0miqNY+dF0BB
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

-->

</rfc>
