<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-asdf-instance-information-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="SDF Instance Information">Instance Information for SDF</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-instance-information-00"/>
    <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="23"/>
    <area>Applications and Real-Time</area>
    <workgroup>A Semantic Definition Format for Data and Interactions of Things</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 is the first one after the adoption by the ASDF Working Group. Content-wise, it is unchanged compared to the preceding individual draft revision.</cref></t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-asdf-instance-information/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        A Semantic Definition Format for Data and Interactions of Things 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="2" month="December" 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-02"/>
        </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="acknowledgments">
      <name>Acknowledgments</name>
      <t>(TODO)</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
srjAvBcFW0J19tnGgPxf4r+Fd2vDAAA=

-->

</rfc>
