/opendigitaltwins-dtdl

Digital Twins Definition Language

Creative Commons Attribution 4.0 InternationalCC-BY-4.0

Digital Twins Definition Language

The Digital Twins Definition Language (DTDL) is a language for describing models and interfaces for IoT digital twins. Digital twins are models of entities in the physical environment such as shipping containers, rooms, factory floors, or logical entities that participate in IoT solutions. Using DTDL to describe a digital twin's capabilities enables the IoT solutions to leverage the semantics of the entity.

DTDL is open to the community and Microsoft welcomes collaboration with customers, partners, and the industry. It is based on open W3C standards such as JSON-LD and RDF which allow for easier adoption across services and tooling.

🎯 DTDL Versions

DTDL has evolved over time, resulting in the next versions:

Version Docs Notes
v1-preview dtdlv1.md Out of support
v2 DTDL.v2.md Supported in ADT, IoTCentral and IoT Plug and Play
v3 DTDL.v3.md Supported in ADT and IoT Plug and Play

👉 A Simple Example

The next interface describes a thermostat reporting temperature as degreeCelsius:

{
  "@context": [
    "dtmi:dtdl:context;3",
    "dtmi:dtdl:extension:quantitativeTypes;1"
  ],
  "@id": "dtmi:com:example:Thermostat;1",
  "@type": "Interface",
  "displayName": "Thermostat",
  "description": "Reports current temperature.",
  "contents": [
    {
      "@type": [
        "Telemetry",
        "Temperature"
      ],
      "name": "temperature",
      "displayName" : "Temperature",
      "description" : "Temperature in degrees Celsius.",
      "schema": "double",
      "unit": "degreeCelsius"
    }
  ]
}

☁️ Services using DTDL

🛠️ Developer Tools for DTDL

📖 Modeling Guides