<?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.6.26 (Ruby 2.6.3) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-asdf-digital-twin-03" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="SDF modeling for digital twin">Semantic Definition Format (SDF) modeling for Digital Twin</title>
    <seriesInfo name="Internet-Draft" value=""/>
    <author fullname="Hyunjeong Lee" role="editor" initials="H." surname="Lee">
      <organization abbrev="ETRI">Electronics and Telecommunications Research Institute</organization>
      <address>
        <postal>
          <street>218 Gajeong-ro, Yuseong-gu</street>
          <city>Daejeon</city>
          <region/>
          <code>34129</code>
          <country>South Korea</country>
        </postal>
        <phone>+82 42 860 1213</phone>
        <email>hjlee294@etri.re.kr</email>
      </address>
    </author>
    <author fullname="Jungha Hong" initials="J." surname="Hong">
      <organization abbrev="ETRI">Electronics and Telecommunications Research Institute</organization>
      <address>
        <postal>
          <street>218 Gajeong-ro, Yuseong-gu</street>
          <city>Daejeon</city>
          <region/>
          <code>34129</code>
          <country>South Korea</country>
        </postal>
        <phone>+82 42 860 0926</phone>
        <email>jhong@etri.re.kr</email>
      </address>
    </author>
    <area>ART</area>
    <workgroup>ASDF</workgroup>
    <keyword>Internet-Draft</keyword>
    <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>
  <middle>
    <!--section 1-->
    <section>
      <name>Introduction</name>
      <t>A digital twin is defined as a digital representation of an object of interest and
        may require different capabilities, for example, synchronization and real-time support,
        according to the specific domain of application. <xref target="Y.4600"/>.
        Digital twin help organizations improve important functional objectives,
        including real-time control, off-line analytics, and predictive maintenance,
        by modeling and simulating objects in the real world.
        Therefore, it is important for a digital twin to represent
        as much real-world information about the object as possible when digitally representing the object.
      </t>
      <t>Nowadays, digital twin technologies are applied in various domains including manufacturing, energy, medical, farm, transportation, etc.
		  And a common format is needed to represent the objects in the domains as digital twins.
		  SDF <xref target="I-D.ietf-asdf-sdf"/> can be used for modeling objects as digital twins.
      </t>
      <t>This document specifies the modeling and guidance on how to use SDF to represent objects as digital twins.
      </t>
    </section>
    <!--section 1-->

     <!--section 2-->
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This specification uses the terminology specified in <xref target="I-D.ietf-asdf-sdf"/> in particular "Class Name Keyword", "Object", and "Affordance".</t>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
      "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
      "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in BCP 14
      <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
    </section>
    <!--section 2-->

    <!--section 3-->
    <section>
      <name>SDF structure for digital twin</name>
      <t>This section describes SDF structure to represent a thing or an object as a digital twin.
        The architecture of a digital twin based on the SDF model is illustrated in <xref target="basic-arch-fig" format="default"/>,
        following the guidelines of <xref target="ISO23247-3"/>.</t>
      <t> The physical layer comprises affordance and non-affordance objects. From the real-world objects,
          only those deemed relevant are selected for representation as digital twins.
      </t>
      <t> The digital twin sublayer is structured into three sublayers: the device communication sublayer,
          the digital twin sublayer, and the application sublayer.
      </t>
      <t> The device communication sublayer is responsible for monitoring and collecting data
          from both affordance and non-affordance objects.
          This sublayer provides the necessary data to synchronize the physical objects with their digital twin counterparts.
      </t>
      <t> The digital twin sublayer ensures synchronization between the affordance and non-affordance objects
          and their respective digital twins using the data provided by the Device Communication Sublayer.
      </t>
      <t>The Application sublayer presents the synchronized values of the digital twins to users
         to facilitate informed decision making.
      </t>
      <figure anchor="basic-arch-fig">
        <name>Basic Architecture of digital twin</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
        +---------------------------------------------+ - - - - - - - - - - -
        |            Application sublayer             |
        | +----------+ +------+ +--------+ +--------+ |
        | |  Human   | | HMI  | |  Apps  | |  Peers | |
        | +----------+ +------+ +--------+ +--------+ |
        +---------------------------------------------+
        |           Digital twin sublayer             |
        | +----------+ +-------------+ +------------+ |
        | | Operation| | Application | |  Resource  | |
        | |    and   | |     and     | | access and | |
        | |management| |   service   | |interchange | |
        | +----------+ +-------------+ +------------+ |
        | +-----------------------------------------+ |  Digital twin layer
        | |           Digital representation        | |
        | |   +-------------+   +----------------+  | |
        | |   |  Affordance |   | Non-affordance |  | |
        | |   |   objects   |   |    objects     |  | |
        | |   +-------------+   +----------------+  | |
        | +-----------------------------------------+ |
        +---------------------------------------------+
        |        Device communication sublayer        |
        |     +-------------+   +----------------+    |
        |     |    Data     |   |     Object     |    |
        |     | collection  |   |     control    |    |
        |     +-------------+   +----------------+    |
        +---------------------------------------------+ - - - - - - - - - - -
        |     +-------------+   +----------------+    |
        |     |  Affordance |   |  sdfContext    |    |
        |     |   objects   |   |    objects     |    |     Physical layer
        |     +-------------+   +----------------+    |
        +---------------------------------------------+ - - - - - - - - - - -
        				]]></artwork>
      </figure>
    </section>
    <!--section 3-->

    <!--section 4-->
    <section>
      <name>Motivation and design rationale</name>
      <t>The document is based on the underlying structure defined in <xref target="I-D.ietf-asdf-sdf"/>,
      which which standardizes the semantic definition format (SDF) for representing IoT affordance.
      This specification provides a strong basis for representing individual devices and their features (sdfProperty, sdfAction, sdfEvent, etc.),
      but additional mechanisms are needed to address the unique requirements of digital twin modeling.
      </t>
      <t>Digital twin systems defined in <xref target="ISO23247-3"/> often have to describe virtual representations of various physical assets,
        including metadata, identity, contextual relationships, historical data, as well as device interfaces. </t>
      <section>
        <name>Introduction of sdfContext</name>
        <t>A new SDF keyword sdfContext described in <xref target="I-D.draft-ietf-asdf-sdf-nonaffordance"/> is introduced to represent non-functional or metadata elements
          that describe a device or component without implying direct interaction:
        </t>
        <ul spacing="normal">
          <li>
            <t>Identifier (e.g., UUID, URN)</t>
          </li>
          <li>
            <t>Location (e.g. site, zone, GPS tag)</t>
          </li>
          <li>
            <t>Owner (e.g., representative, ,anufacturer)</t>
          </li>
        </ul>
        <t>These field can appear in both sdfObject and sdfThing contexts and
            follow the same structural pattern as sdfData and is designed for scalability.    </t>
      </section>
      <section>
        <name>Digital Twin Modeling using SDF elements</name>
        <t>To support hierarchical representations (e.g., a boat composed of heater, GPS, and battery subsystems),
        this document encourages use of sdfThing to aggregate related sdfObject components, along with metadata.</t>
        <t>The example mapping of digital twin attributes to SDF elements is shown in <xref target="digitaltwin2sdfthingqual"/>.
        </t>
        <table anchor="digitaltwin2sdfthingqual">
          <name>Digital Twin Modeling using elements of an SDF model</name>
          <thead>
            <tr>
              <th align="left">Attribute</th>
              <th align="left">Recommended Mapping</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Identifier</td>
              <td align="left">sdfContext</td>
              <td align="left">Globally unique digital twin ID (e.g., URN)</td>
            </tr>
            <tr>
              <td align="left">Characteristic</td>
              <td align="left">sdfProperty or sdfData</td>
              <td align="left">General description or domain properties</td>
            </tr>
            <tr>
              <td align="left">Schedule</td>
              <td align="left">sdfEvent or sdfData</td>
              <td align="left">Time-based actions, availability, or maintenance</td>
            </tr>
            <tr>
              <td align="left">Status</td>
              <td align="left">sdfAction or sdfProperty</td>
              <td align="left">Actual or calculated operating conditions</td>
            </tr>
            <tr>
              <td align="left">Location</td>
              <td align="left">sdfContext</td>
              <td align="left">Physical or logical location information</td>
            </tr>
            <tr>
              <td align="left">Report</td>
              <td align="left">sdfData</td>
              <td align="left">Measurement summaries, analytics, or logs</td>
            </tr>
            <tr>
              <td align="left">owner</td>
              <td align="left">sdfContext</td>
              <td align="left">Organization or entity responsible for the digital twin</td>
            </tr>
            <tr>
              <td align="left">Relationship</td>
              <td align="left">sdfRelation</td>
              <td align="left">Inter-object/inter-twin relationships</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section>
        <name>Relationship modeling</name>
        <!--section 6-->
          <t>
            The sdfRelation, defined in <xref target="I-D.draft-laari-asdf-relations"/>, is a structure for specifying logical or physical relationships between objects within an SDF model.
            If conventional sdfThing, sdfObject, and sdfProperty focus on defining the properties of individual digital twins,
            sdfRelation is a means of expressing interactions and structural links between them.
            Since these relationships go beyond a single digital twin definition, they must be managed in a separate structure, where sdfRelation is used.
            The sdfRelation keyword allows describing complex relationships beyond just the parent-child hierarchy.
            These relationships can include:</t>
        <ul spacing="normal">
          <li>
            <t>Physical relations (e.g., "inside", "next to")</t>
          </li>
          <li>
            <t>Functional relations (e.g., "controls", "is controlled by")</t>
          </li>
          <li>
            <t>Semantic relations (e.g., "similar to", "same as")</t>
          </li>
        </ul>
        <t>The sdfRelation definition can include the following fields as defined in <xref target="I-D.draft-laari-asdf-relations"/>:</t>
        <ul spacing="normal">
          <li>
            <t>relType: Specifies the type of relationship that can an external ontologies (e.g., SAREF<xref target="saref4bldg"/>) can refer to.</t>
          </li>
          <li>
            <t>target: Points to the SDF object or an external ontology term that is the target of the relationship.</t>
          </li>
          <li>
            <t>description: Provides a detailed textual explanation of the relationship.</t>
          </li>
          <li>
            <t>label: A short human-readable label for the relationship.</t>
          </li>
          <li>
            <t>property: Additional properties describing the relationship context.</t>
          </li>
          <li>
            <t>$comment: Optional properties including implementers notes.</t>
          </li>
        </ul>
        <t>An example of sdfRelation is shown in <xref target="example-sdfRelation"/>.
                The sdfProtocolMap in this example is defined in <xref target="I-D.draft-ietf-asdf-nipc"/> and <xref target="I-D.draft-ietf-asdf-protocol-mapping"/></t>
        <figure anchor="example-sdfRelation">
          <name>An example of sdfRelation</name>
          <sourcecode type="json" name="example-sdfRelation.sdf.json"><![CDATA[

{
   "sdfThing": {
      "Room001": {
          "description": "Contains lightbult and thermostat"
           "sdfObject": {
               "lightbulb": {
                 "description": "A smart lightbulb",
                 "sdfProperty": {
                     "adjacent-node": { "type": "object", "sdfType": "link"}
                  },
                  "sdfRelation": {
                     "sameRoomAsThermostat": {
                        "relType": "saref:isLocatedIn",
                        "target": "#/sdfObject/thermostat",
                        "description": "This lightbulb is located in the same room as the thermostat.",
                        "label": "Located together"
                     }
                  }
             },
             "thermostat": {
               "description": "A thermostat is in the same room as the lightbulb",
               "sdfProperty": {
                  "adjacent-node": {"type": "object","sdfType": "link"}
                }
              },
              "sdfProtocolMap": {
                "description": "Protocol between the lightbulb and thermostat",
                "ble": {
                  "services":
                      [{"serviceID": "361c9c4f-22d7-4a1e-824b-8b61045a566a"}],
                  "cached": false,
                  "cacheIdlePurge": 3600,
                  "unit": "Second",
                  "autoUpdate": true,
                  "bonding": "default"
              }
            }
         }
     }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <!--section 4.3-->

  </section>
    <!--section 4-->

  <section>
      <name>Examples of digital twin system</name>
      <!--section 5-->
        <section>
        <name>Overview</name>
        <t>
            Domain-specific examples are provided to illustrates how SDF-based Digital Twin
            representations can be modeled across various application areas.
            Each example is structured using the <tt>sdfThing</tt> construct
            to represent the physical entity, with associated <tt>sdfObject</tt>,
            <tt>sdfProperty</tt>, <tt>sdfAction</tt>, <tt>sdfEvent</tt>, and optional <tt>sdfContext</tt> or
            <tt>sdfRelation</tt> entries.
            These examples cover multiple domains such as maritime, healthcare,
            smart building and energy systems, enabling standardized modeling and interoperability across
            diverse use cases.
        </t>
      </section>
      <section>
        <name>Marine system</name>
        <t>
            <xref target="Component-marine"/> illustrates how various components of a maritime vessel—specifically <tt>Boat007</tt>—can be
            represented as a structured Digital Twin using the Semantic Definition Format (SDF) model.
            Each physical component, such as a heater or battery, is abstracted as an <tt>sdfObject</tt>,
            while the overall vessel is modeled as an <tt>sdfThing</tt>.
        </t>
        <t>
          For each component, key SDF elements such as <tt>sdfProperty</tt>, <tt>sdfAction</tt>, or
          <tt>sdfEvent</tt> are defined to describe the operational and contextual aspects of the system.
          Relationships such as <tt>sdfRelation</tt> are used to express functional connections (e.g.,
          the battery is <tt>connectedTo</tt> the controller), enabling richer modeling of interactions
          between components.
        </t>
        <t>
          This structure allows developers and systems integrators to:
        </t>
        <ul spacing="normal">
          <li>
            <t>Seamlessly capture and communicate device capabilities and states.</t>
          </li>
          <li>
            <t>Integrate operational data for real-time monitoring and analysis.</t>
          </li>
          <li>
            <t>Enable interoperability with other domains through standardized semantics.</t>
          </li>
        </ul>
        <table anchor="Component-marine">
          <name>Components and SDF elements of a marine system</name>
          <thead>
            <tr>
              <th align="left">Attribute</th>
              <th align="left">SDF element</th>
              <th align="left">Example properties</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Boat007</td>
              <td align="left">sdfThing</td>
              <td align="left">id, name, model, includes heater1 and battery1</td>
            </tr>
            <tr>
              <td align="left">Heater1</td>
              <td align="left">sdfObject</td>
              <td align="left">status (sdfProperty), temperature (sdfProperty), turnOn (sdfAction)</td>
            </tr>
            <tr>
              <td align="left">Thermostat1</td>
              <td align="left">sdfObject</td>
              <td align="left">setPoint, mode (sdfProperty)</td>
            </tr>
            <tr>
              <td align="left">Battery1</td>
              <td align="left">sdfObject</td>
              <td align="left">voltage (sdfProperty), chargeLevel (sdfProperty), battery-to-controller (sdfRelation)</td>
            </tr>
            <tr>
              <td align="left">Controller</td>
              <td align="left">sdfObject</td>
              <td align="left">status (sdfProperty), controlMode (sdfProperty)</td>
            </tr>
            <tr>
              <td align="left">Temp-to-Thermostat</td>
              <td align="left">sdfRelation</td>
              <td align="left">source: heater1.temperature, target: thermostat1.setPoint, relationType: regulatedBy</td>
            </tr>
            <tr>
              <td align="left">Battery-to-Controller</td>
              <td align="left">sdfRelation</td>
              <td align="left">source: batterySensor, target: powerController, relationType: connectedTo</td>
            </tr>
            <tr>
              <td align="left">Location</td>
              <td align="left">sdfContext</td>
              <td align="left">latitude, longitude, dockedAt (e.g., port007)</td>
            </tr>
          </tbody>
        </table>
        <t>
          In the context of <tt>Boat007</tt>, shown in <xref target="XML-marine"/>, such a Digital Twin can support various applications,
          including predictive maintenance, energy optimization, and fleet-level coordination,
          demonstrating the practicality and scalability of SDF-based Digital Twin modeling
          for mobility and transportation systems.
        </t>
        <figure anchor="XML-marine">
          <name>An example of marine system</name>
          <sourcecode type="json" name="XML-marine.sdf.json"><![CDATA[
          {
            "sdfThing": {
                "boat007": {
                "label": "Boat #007 with a heater",
                "description": "Contains heaters, fans, battery, etc."
                "sdfProperty": {
                   "status": {
                      "type": "boolean",
                      "description": "Indicates if the boat is powered"
                    }
                },
                "sdfObject": {
                   "heater1": {
                    "description": "A heater ",
                    "identityManifest": {
                       "manufacturer": "HeaterTech Inc.",
                        "model": "HEATER-2025-V1",
                        "firmwareVersion": "1.4.3",
                        "dateOfManufacture": "2025-04-20T09:00:00Z",
                        "certifications": [
                          { "scheme": "KS", "certId": "KS123", "region": "KR" } ]
                      },
                      "contextSnapshot": {
                        "thingId": "heater:unit5689",
                        "timestamp": "2025-05-23T10:20:00Z",
                        "installationInfo": {
                           "room": "kitchen",
                            "floor": 1,
                            "mountType": "freestanding",
                            "installationDate": "2025-06-01"
                        },
                        "usageProfile": {
                            "type": "residential",
                            "powerCircuit": "230V@60Hz",
                            "energyRating": "A++"
                        },
                        "location": {"lat": 35.1796, "lon": 129.0756 }
                      },
                      "sdfProperty": {
                          "status": {
                            "type": "boolean"
                            "description":"Whether the heater is powered"
                          },
                          "temperature": {
                             "type": "number",
                             "unit": "degreeCelsius",
                             "description": "Temperature of the heater"
                            }
                      },
                      "sdfAction": {
                          "turnOn": { "description": "Activate the heater" },
                          "turnOff": { "description": "Deactivate the heater" }
                      },
                      "contextPatch": {
                          "thingId": "heater:unit5689",
                          "timestamp": "2025-06-20T09:00:00Z",
                          "location": {"lat": "35.2988", "lon": "129.2547" },
                          "installationInfo": {"floor": 1, "mountType": "wall" }
                      }
                    },
                    "thermostat": {
                         "maintenanceSchedule": {
                            "timestamp": "2025-05-20T10:00:00Z"
                            "description": "Last maintained date"
                        }
                    },
                    "batterySensor1": {
                      "sdfProperty": {
                          "chargeLevel": {
                            "type": "number",
                            "unit": "percent",
                            "description": "Battery charge level"
                          },
                          "voltage": {
                            "type": "number",
                            "unit": "volt",
                            "description": "Battery voltage"
                        }
                      }
                    },
                    "powerController1": {
                       "sdfAction": {
                          "connect": {"description": "Connect power from the battery" },
                          "disconnect": {"description": "Disconn power from the battery"}
                          }
                      }
                  },
                  "sdfRelation": {
                    "temperature-control": {
                       "source": "#/sdfObject/heater1/sdfProperty/temperature",
                       "target": "#/sdfObject/thermostat1/sdfProperty/setPoint",
                       "relationType": "regulatedBy",
                       "directionality": "unidirectional",
                       "description": "The current temperature of the heater is regulated by the thermostat's setPoint value."
                    },
                    "battery-to-controller": {
                       "source": "#/sdfObject/batterySensor",
                       "target": "#/sdfObject/powerController",
                       "relationType": "connectedTo",
                       "directionality": "unidirectional"
                   }
                }
              }
            }
          }
          ]]></sourcecode>
        </figure>
      </section>
      <!--section 5.2 -->

       <section>
        <name>Healthcare system</name>
        <t>
           This example represents a digital twin for a patient health monitor system (patientMonitor001) assigned to a patient.
           The system reports real-time health properties while referencing contextual patient information
           with the components and elements shown in <xref target="Component-Healthcare"/>.
        </t>
        <table anchor="Component-Healthcare">
          <name>Components and SDF elements of a healthcare system</name>
          <thead>
            <tr>
              <th align="left">Attribute</th>
              <th align="left">SDF element</th>
              <th align="left">Example properties</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Patient monitor</td>
              <td align="left">sdfThing</td>
              <td align="left">patientMonitor001 as a digital twin</td>
            </tr>
            <tr>
              <td align="left">ECG Module</td>
              <td align="left">sdfObject</td>
              <td align="left">heartRate, rhythmType, signalStrength</td>
            </tr>
            <tr>
              <td align="left">Infusion Pump</td>
              <td align="left">sdfObject</td>
              <td align="left">flowRate, volumeRemaining, alarmStatus</td>
            </tr>
            <tr>
              <td align="left">Property</td>
              <td align="left">sdfProperty</td>
              <td align="left">e.g., temperature, bloodPressureSystolic, oxygenSaturation</td>
            </tr>
            <tr>
              <td align="left">Context info</td>
              <td align="left">sdfContext</td>
              <td align="left">bedNumber, wardLocation, patientID, usageScenario</td>
            </tr>
            <tr>
              <td align="left">Identity info</td>
              <td align="left">identityManifest</td>
              <td align="left">systemType, firmwareVersion, hospitalAssetTag</td>
            </tr>
            <tr>
              <td align="left">Relations</td>
              <td align="left">sdfRelation</td>
              <td align="left">ECG → AlarmSystem (relationType: monitoredBy)</td>
            </tr>
          </tbody>
        </table>
        <t>
           A digital twin example of a patient monitoring system with ECG and infusion pump components is illustated in <xref target="XML-healthcare"/>.
           in the healthcare domain, where a biosensor measuring the heart rate is functionally connected to an alert system that emits a high heart rate warning.
           This enables real-time patient monitoring in medical environments.
        </t>
        <figure anchor="XML-healthcare">
          <name>An example of healthcare </name>
          <sourcecode type="json" name="XML-healthcare.sdf.json"><![CDATA[
          {
            "sdfThing": {
              "patientMonitor001": {
              "sdfObject": {
                  "ecg": {
                      "sdfProperty": {
                          "heartRate": { "type": "number", "unit": "bpm" },
                          "rhythmType": { "type": "string" }
                        }
                    },
                    "infusionPump": {
                        "sdfProperty": {
                          "flowRate": { "type": "number", "unit": "ml/h" },
                          "volumeRemaining": { "type": "number", "unit": "ml" }
                        }
                    }
                  },
                  "sdfContext": {
                      "wardLocation": { "const": "ICU-5A" },
                      "patientID": { "const": "PT123456" }
                  },
                  "identityManifest": {
                    "manufacturer": "MediTech",
                    "model": "IM-500",
                    "serialNumber": "MT-IM500-00789"
                  },
                  "sdfRelation": {
                    "heartRate-to-alertSystem": {
                        "description": "The heart rate data from the biosensor is monitored by the alert system, which triggers a warning event when a high heart rate is detected.",
                        "source": "#/sdfObject/biosensor/sdfProperty/heartRate",
                        "target": "#/sdfObject/alertSystem/sdfEvent/highHeartRateAlert",
                        "relationType": "monitoredBy",
                        "directionality": "unidirectional"
                    }
                }
              }
            }
          }
          ]]></sourcecode>
        </figure>
      </section>
      <!--section 5.3 -->

       <section>
        <name>Smart building system</name>
        <!--section 5.4 -->
         <t>
           This example shows a digital twin representing a smart lighting control system within a smart building domain.
           The system uses both the MQTT protocol and the CoAP protocol to integrate lighting devices and occupancy-based controls.
           Contextual information such as room number, zone, and usage scenario is included to support location-based control and analysis.

        </t>
        <t> The SDF elements and related components used in this domain are described in <xref target="Component-SmartBuilding"/>.
        </t>
        <table anchor="Component-SmartBuilding">
          <name>Components and SDF elements of a smart building system</name>
          <thead>
            <tr>
              <th align="left">Attribute</th>
              <th align="left">SDF element</th>
              <th align="left">Example properties</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Smart room</td>
              <td align="left">sdfThing</td>
              <td align="left">roomControl001 as a digital twin, including lightController and sensorUnit </td>
            </tr>
            <tr>
              <td align="left">Light controller</td>
              <td align="left">sdfObject</td>
              <td align="left">brightness (sdfProperty), toggle (sdfAction)</td>
            </tr>
            <tr>
              <td align="left">Sensor unit</td>
              <td align="left">sdfObject</td>
              <td align="left">occupancy (sdfProperty), motionDetected (sdfEvent)</td>
            </tr>
            <tr>
              <td align="left">Property</td>
              <td align="left">sdfProperty</td>
              <td align="left">brightness:percent, occupancy:boolean</td>
            </tr>
            <tr>
              <td align="left">Action</td>
              <td align="left">sdfAction</td>
              <td align="left">toggle (on/off), dimTo (level)</td>
            </tr>
            <tr>
              <td align="left">Context info</td>
              <td align="left">sdfContext</td>
              <td align="left">roomNumber: “101”, zone: “eastWing”, usage: “office”</td>
            </tr>
            <tr>
              <td align="left">Identity info</td>
              <td align="left">identityManifest</td>
              <td align="left">vendor: “SmartBuild Inc.”, firmware: “v2.1.0”</td>
            </tr>
            <tr>
              <td align="left">Protocol</td>
              <td align="left">sdfProtocolMap</td>
              <td align="left">MQTT + CoAP for monitoring and control</td>
            </tr>
            <tr>
              <td align="left">Relations</td>
              <td align="left">sdfRelation</td>
              <td align="left">sensor-to-lightController (relationType: triggers)</td>
            </tr>
          </tbody>
        </table>
        <t>
           A digital twin representation of the smart building example is shown in <xref target="XML-SmartBuilding"/>.
           In this configuration, occupancy sensors trigger lighting control action through functional relationships,
           demonstrating real-time and context-aware behavior.
           Such modeling can be applicable to energy optimization, comfort control, and responsive automation in smart buildings.
        </t>
        <figure anchor="XML-SmartBuilding">
          <name>An example of smart building lighting system </name>
          <sourcecode type="json" name="XML-SmartBuilding.sdf.json"><![CDATA[
            {
              "sdfThing": {
                "roomControl001": {
                  "sdfContext": {
                    "roomNumber": "101",
                    "zone": "eastWing",
                    "usage": "office"
                  },
                  "sdfObject": {
                    "lightController": {
                      "sdfProperty": {
                        "brightness": {
                          "type": "integer",
                          "unit": "percent",
                          "description": "Current brightness level of the light"
                        }
                      },
                      "sdfAction": {
                        "toggle": {
                          "description": "Turns the light on or off"
                        },
                        "dimTo": {
                          "description": "Dims the light to the specified brightness"
                        }
                      },
                      "sdfProtocolMap": {
                        "mqtt": {
                          "topic": "building/room101/light",
                          "qos": 1,
                          "updateInterval": 5,
                          "unit": "seconds"
                        },
                        "coap": {
                          "method": "POST",
                          "href": "/room101/light/toggle"
                        }
                      }
                    },
                    "sensorUnit": {
                      "sdfProperty": {
                        "occupancy": {
                          "type": "boolean",
                          "description": "Whether the room is currently occupied"
                        }
                      },
                      "sdfEvent": {
                        "motionDetected": {
                          "description": "Triggered when motion is detected"
                        }
                      }
                    }
                  },
                  "sdfRelation": {
                    "sensorToLight": {
                      "source": "#/sdfThing/roomControl001/sdfObject/sensorUnit",
                      "target": "#/sdfThing/roomControl001/sdfObject/lightController",
                      "relationType": "triggers",
                      "directionality": "unidirectional"
                    }
                  }
                }
              }
            }
            ]]></sourcecode>
        </figure>
      </section>
      <!--section 5.4 -->


  </section>
    <!--section 5-->



  <section>
      <name>Requirements for implenmenting digital twin</name>
      <!--section 6-->
      <t>A digital twin is a partial representation of sdfThing or sdfObject that contains attributes such as sdfProperty, sdfAction and sdfEvent<xref target="ISO23247-1"/>.
      By representing sdfThing as a digital twin, crucial events that require appropriate action can be quickly detected and controlled.
       The requirements defined in <xref target="ISO23247-1"/> are applied to represent sdfThings and sdfObjects as digital twins.</t>
      <ul spacing="normal">
        <li>
          <t>Identification: sdfThings and sdfObjects should contain data that uniquely identify them as digital twins.</t>
        </li>
        <li>
          <t>Data acquisition: data related to sdfThing and sdfObject, such as sdfProperty, sdfEvent, and sdfAction, should be collected from IP and non-IP systems. </t>
        </li>
        <li>
          <t>Data analysis: collected data needs to be analyzed to understand the state of sdfThing and sdfObject. </t>
        </li>
        <li>
          <t>Accuracy: The sdfThings and sdfObjects should be represented as digital twins with appropriate levels of detail and accuracy, depending on the application.</t>
        </li>
        <li>
          <t>Synchronization: sdfThings and sdfObjects should be synchronized with the digital twin at intervals appropriate to the requirements of each application.
            Newly added or deleted sdfThings and sdfObjects should be recognized and reflected in the digital twin.</t>
        </li>
      </ul>
    </section>
    <!--section 6-->


    <section>
      <name>Procedure for digital twin implementation</name>
      <!--section 7 -->
      <section>
        <name>Overview</name>
        <t>
            It is essential to define a standardized implementation procedure to ensure interoperability, scalability, and effective lifecycle management across digital twin systems.
            This section outlines a step-by-step approach aligned with the Semantic Definition Format (SDF) model and its architecture,
            enabling consistent modeling, integration, and operation of digital twins in IoT environments.
            A general principles for representing an sdfThing as a digital twin within a specific domain is outlined as follows:</t>
        <ul spacing="normal">
          <li>
            <t>defining a purpose for expressing the observable object as a digital twin in the domain</t>
          </li>
          <li>
            <t>collecting and mapping data based on the roles of the observable object in the domain</t>
          </li>
          <li>
            <t>configuring the observable object into the digital twin based on the data for the purposes</t>
          </li>
          <li>
            <t>interworking among digital twins reflecting various roles of the observable object</t>
          </li>
          <li>
            <t>synchronizing the observable object and the digital twin</t>
          </li>
        </ul>
      </section>
      <section>
        <name>Procedure</name>
        <t>
        The procedure of digitally twinning the space and the objects contained in it is described.
        </t>
        <ul spacing="normal">
          <li>
            <t>
          Identifying and scoping physical assets: The first step is to clearly identify the physical assets that will be represented as digital twins.
          This step includes assigning a globally unique identifier, such as a URN or UUID, and determining the extent of modeling.
          It also involves deciding whether the unique identifier will cover the entire system or focus on a specific subsystem or component.
          Although all assets in space can be represented by digital twins,
          it is cost-effective to select assets for implementation purposes and configure them as digital twins.
            </t>
          </li>
          <li>
            <t>
          Defining a digital twin: A detailed digital twin should be defined using SDF structures, including sdfThing and sdfObject.
          This step requires specifying affordances such as sdfProperty, sdfAction, and sdfEvent,
          as well as non-affordance metadata like location, owner, and other descriptive elements through sdfContext.
            </t>
          </li>
          <li>
            <t>
          Metadata and contextualization: This step adds metadata that enriches the context of the digital twin,
          such as geographic location, ownership details, manufacturing information, and feature summaries.
          It can also support advanced analytics and management, including contextual attributes such as production schedules or maintenance periods.
            </t>
          </li>
          <li>
            <t>
          Binding interfaces and communications: Digital twins are bound to real-world communication interfaces and protocols such as MQTT, CoAP, and HTTP.
          This allows affordance of SDF models to interact with real-world data sources, APIs, and physical assets in a smooth and reliable manner.
            </t>
          </li>
          <li>
            <t>
            Verification and compliance: Once an asset is defined and bound as a digital twin, it should be validated against syntax and semantic rules
            using tools such as JSON schema validators or CDDL definitions.
            Compliance with specific SDF profiles or domain-specific standards must also be verified to ensure interoperability.
            </t>
          </li>
          <li>
            <t>
            Deployment and registration: After verification, the digital twins are deployed in a digital twin registry, edge system, or cloud infrastructure.
            This step involves registering the model with the discovery service for integration and use by other systems or stakeholders.
            </t>
          </li>
          <li>
            <t>
          Runtime monitoring and updating: During operations, digital twins need to continuously monitor real data and update their status accordingly.
          Properties updates, event processing, and partial updates using contextPatch messages should be supported for efficient and lightweight synchronization.
            </t>
          </li>
          <li>
            <t>
            Lifecycle and governance management: The life cycle of the digital twin is managed through version tracking, audit logs, and compliance documents.
            This step ensures safe and transparent governance and enables proper disposal and deregistration when assets are no longer available.
            </t>
          </li>
        </ul>
      </section>
    </section>
    <!--section 7-->


    <section>
      <name>Security Considerations</name>
      <!--section 8 -->
      <t>Only authorized users should have the authority to manage digital twins, sdfThings and sdfObjects.
        Also, Secure communication and metadata integrity are essential when implementing digital twins.
        All context messages, including contextPatch and identityManifest, must have mechanisms such as authentication and authorization applied.</t>
    </section>
    <!--section 8-->


    <section>
      <name>IANA Considerations</name>
      <!--section 9-->
      <t>This document has no IANA actions.</t>
    </section>
    <!--section 9-->
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="Y.4600">
          <front>
            <title>"Recommendation ITU-T Y.4600 (2022), Requirements and capabilities of a digital twin system for smart cities.</title>
            <author fullname="International Telecommunication Union"/>
            <date month="August" year="2022"/>
          </front>
        </reference>
        <!--&id.draft-ietf-asdf-sdf;-->
        <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>
        <!--  &id.draft-ietf-asdf-sdf-nonaffordance;-->
        <reference anchor="I-D.draft-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>ETRI</organization>
            </author>
            <author fullname="Hyunjeong Lee" initials="H." surname="Lee">
              <organization>ETRI</organization>
            </author>
            <date day="21" month="September" 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="I-D.draft-ietf-asdf-sdf-nonaffordance-01"/>
        </reference>
        <!--  &id.draft-laari-asdf-relations;-->
      <reference anchor="I-D.draft-laari-asdf-relations">
          <front>
            <title>Extended relation information for Semantic Definition Format (SDF)</title>
            <author fullname="Petri" initials="P." surname="Laari">
              <organization>Ericsson</organization>
            </author>
            <date day="28" month="January" year="2025"/>
            <abstract>
              <t>The Semantic Definition Format (SDF) base specification defines set
               of basic information elements that can be used for describing a large
               share of the existing data models from different ecosystems.  While
               these data models are typically very simple, such as basic sensors
               definitions, more complex models, and in particular bigger systems,
               benefit from ability to describe additional information on how
               different definitions relate to each other.  This document specifies
               an extension to SDF for describing complex relationships in class
               level descriptions.  This specification does not consider instance-
               specific information.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="I-D.draft-laari-asdf-relations-04"/>
        </reference>
        <reference anchor="I-D.draft-ietf-asdf-nipc">
          <front>
            <title>An Application Layer Interface for Non-IP device control (NIPC)</title>
            <author fullname="Bart Brinckman" initials="B." surname="Brinckman">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Rohit Mohan" initials="R." surname="Mohan">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Braeden Sanford" initials="B." surname="Sanford">
              <organization>Philips</organization>
            </author>
            <date day="20" month="September" year="2025"/>
            <abstract>
              <t>This memo describes an API that allows applications to perform
              operations against a gateway serving one or more devices described by
              an SDF model.  The document describes RESTful application layer
              interface to perform operations on those devices, as well as a CBOR-
              based publish-subscribe interface for streaming data.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="I-D.draft-ietf-asdf-nipc-13"/>
        </reference>
        <reference anchor="I-D.draft-ietf-asdf-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="I-D.draft-ietf-asdf-protocol-mapping-01"/>
        </reference>
        <reference anchor="ISO23247-1" target="https://www.iso.org/standard/75066.html">
          <front>
            <title>Automation systems and integration Digital twin framework for manufacturing - Part 1: Overview and general principles, ISO 23247-1.</title>
            <author fullname="ISO" initials="" surname="">
                </author>
            <date month="October" year="2021"/>
          </front>
        </reference>
        <reference anchor="ISO23247-3" target="https://www.iso.org/standard/78744.html">
          <front>
            <title>Automation systems and integration Digital twin framework for manufacturing - Part 3: Digital representation of manufacturing elements, ISO 23247-3.</title>
            <author fullname="ISO" initials="" surname="">
                </author>
            <date month="October" year="2021"/>
          </front>
        </reference>
        <reference anchor="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">
          <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="saref4bldg" target="https://saref.etsi.org/saref4bldg">
          <front>
            <title>SAREF extension for building</title>
            <author initials="M." surname="Poveda-Villaln" fullname="Mara Poveda-Villaln"/>
            <author initials="R." surname="Garcia-Castro" fullname="Ral Garcia-Castro"/>
            <date year="2020" month="June" day="05"/>
          </front>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This specification is based on work by the One Data Model group.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact fullname="Joo-Sang Youn" initials="J-S" surname="Youn">
        <organization abbrev="Dong-eui Univ">DONG-EUI University</organization>
        <address>
          <postal>
            <street>176 Eomgwangno Busan_jin_gu</street>
            <city>Busan</city>
            <region/>
            <code>47340</code>
            <country>South Korea</country>
          </postal>
          <phone>+82 51 890 1993</phone>
          <email>joosang.youn@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Yong-Geun Hong" initials="Y-G" surname="Hong">
        <organization>Daejeon University</organization>
        <address>
          <postal>
            <street>62 Daehak-ro, Dong-gu</street>
            <street/>
            <city>Daejeon</city>
            <region/>
            <code>34520</code>
            <country>South Korea</country>
          </postal>
          <phone>+82 42 280 4841</phone>
          <email>yonggeun.hong@gmail.com</email>
        </address>
      </contact>
    </section>
  </back>
</rfc>
