Sdílet prostřednictvím


Informace o modelech dvojčat a jejich definování ve službě Azure Digital Twins

Klíčovou charakteristikou služby Azure Digital Twins je schopnost definovat vlastní slovník a vytvořit graf dvojčete v sebedefinovaných pojmech vaší firmy. Tato funkce je poskytována prostřednictvím modelů poskytovaných uživatelem. Modely si můžete představit jako podstatná jména v popisu vašeho světa. Modely Azure Digital Twins jsou reprezentované v jazyce DTDL (Digital Twin Definition Language) založeném na formátu JSON.LD.

Model je podobný třídě v objektově orientovaném programovacím jazyce, který definuje tvar dat pro jeden konkrétní koncept ve skutečném pracovním prostředí. Modely mají názvy (například Room nebo TemperatureSensor) a obsahují prvky, jako jsou vlastnosti, komponenty a vztahy, které popisují, co tento typ entity ve vašem prostředí dělá. Později použijete tyto modely k vytvoření digitálních dvojčat, která představují konkrétní entity, které splňují popis tohoto typu.

Jazyk DTDL (Digital Twin Definition Language) pro modely

Modely pro Azure Digital Twins se definují pomocí DTDL (Digital Twins Definition Language).

Úplný popis jazyka pro DTDL v3 můžete zobrazit v GitHubu: DTDL verze 3 Language Description. Tato stránka obsahuje referenční podrobnosti DTDL a příklady, které vám pomůžou začít psát vlastní modely DTDL.

DTDL vychází z jazyka JSON-LD a je nezávislý na programovacích jazycích. DTDL není exkluzivní pro Azure Digital Twins. Používá se také k reprezentaci dat zařízení v jiných službách IoT, jako je ioT technologie Plug and Play.

Zbytek tohoto článku shrnuje, jak se jazyk používá ve službě Azure Digital Twins.

Podporované verze DTDL

Azure Digital Twins podporuje DTDL verze 2 a 3 (zkrácené v dokumentaci na verzi 2 a v3). V3 je doporučená volba pro modelování ve službě Azure Digital Twins na základě rozšířených možností, mezi které patří:

Kde jsou tyto funkce popsány v dokumentaci, jsou doprovázeny poznámkou, že jsou dostupné pouze v DTDL v3. Úplný seznam rozdílů mezi DTDL v2 a v3 najdete v tématu Popis jazyka DTDL v3: Změny z verze 2.

Azure Digital Twins také podporuje použití kombinace modelů v2 a v3 ve stejné instanci. Při použití modelů obou verzí mějte na paměti následující omezení:

  • Rozhraní v2 nemůže rozšířit rozhraní v3 nebo mít součást s rozhraním v3 jako jeho schéma.
  • Naopak rozhraní v3 může rozšířit rozhraní v2 a rozhraní v3 může mít jako schéma komponentu s rozhraním v2.
  • Relace můžou odkazovat v obou směrech ze zdroje modelu v2 na cíl modelu v3 nebo naopak ze zdroje modelu v3 do cíle modelu v2.

Můžete také migrovat existující modely v2 do verze 3. Pokyny k tomu najdete v tématu Převod modelů v2 na verzi 3.

Poznámka:

Azure Digital Twins Explorer v současné době plně podporuje modely DTDL v2 a podporuje omezené funkce pro modely DTDL v3.

Modely DTDL v3 lze zobrazit na panelu Modely a dvojčata vytvořená pomocí modelů DTDL v3 je možné zobrazit a upravit (včetně modelů s vlastnostmi pole). Modely DTDL v3 se ale nezobrazí na panelu Graf modelů a nedají se importovat pomocí Průzkumníka služby Azure Digital Twins. K importu modelů DTDL v3 do vaší instance použijte jiné vývojářské rozhraní, jako jsou rozhraní API a sady SDK nebo Azure CLI.

Přehled modelů

Modely typu dvojčete lze psát v libovolném textovém editoru. Jazyk DTDL se řídí syntaxí JSON, takže byste měli ukládat modely s rozšířením .json. Použití rozšíření JSON umožní mnoha programovacím textovým editorům poskytovat základní kontrolu syntaxe a zvýraznění dokumentů DTDL. Pro Visual Studio Code je k dispozici také rozšíření DTDL.

Toto jsou pole v rozhraní modelu:

Pole Popis
@id Identifikátor modelu digitálního dvojčete (DTMI) pro model ve formátu dtmi:<domain>:<unique-model-identifier>;<model-version-number>. V DTDL v3 může být číslo verze vynecháno nebo strukturováno jako číslo verze se dvěma částmi<major>.<minor> ().
@type Identifikuje druh popsaných informací. Pro rozhraní je Interfacetyp .
@context Nastaví kontext dokumentu JSON. Modely by se měly používat dtmi:dtdl:context;2 pro DTDL v2 nebo dtmi:dtdl:context;3 pro DTDL v3. Modely DTDL v3 můžou také v tomto poli pojmenovat další rozšíření funkcí.
displayName [volitelné] Umožňuje definovat popisný název modelu. Pokud toto pole nepoužíváte, použije model úplnou hodnotu DTMI.
contents Všechna zbývající data rozhraní jsou zde umístěna jako pole definic atributů. Každý atribut musí poskytnout @type (Property, Relationshipnebo Component) k identifikaci typu informací o rozhraní, které popisuje, a pak sadu vlastností, které definují skutečný atribut. V další části jsou podrobně popsány atributy modelu.

Tady je příklad základního modelu DTDL. Tento model popisuje domovskou stránku s jednou vlastností ID. Model Home také definuje relaci s modelem podlahy, který lze použít k označení, že dvojče Home je připojeno k určitým dvojčatům podlahy.

{
  "@id": "dtmi:com:adt:dtsample:home;1",
  "@type": "Interface",
  "@context": "dtmi:dtdl:context;3",
  "displayName": "Home",
  "contents": [
    {
      "@type": "Property",
      "name": "id",
      "schema": "string"     
    },    
    {
      "@type": "Relationship",
      "@id": "dtmi:com:adt:dtsample:home:rel_has_floors;1",
      "name": "rel_has_floors",
      "displayName": "Home has floors",
      "target": "dtmi:com:adt:dtsample:floor;1"
    }
  ]
}

Atributy modelu

Hlavní informace o modelu jsou dány jeho atributy, které jsou definovány v contents části rozhraní modelu.

Tady jsou atributy, které jsou k dispozici v DTDL, které jsou podporovány ve službě Azure Digital Twins. Rozhraní modelu DTDL používané pro Azure Digital Twins může obsahovat nulu, jednu nebo mnoho z následujících polí:

  • Vlastnost – Vlastnosti jsou datová pole, která představují stav entity (například vlastnosti v mnoha objektově orientovaných programovacích jazycích). Vlastnosti mají záložní úložiště a dají se kdykoli číst. Další informace naleznete v části Vlastnosti níže.

  • Vztah – Vztahy umožňují vyjádřit, jak se digitální dvojče může zapojit do jiných digitálních dvojčat. Relace můžou představovat různé sémantické významy, například contains ("podlaha obsahuje místnost"), cools ("místnost chladivého vzduchu"), isBilledTo ("kompresor se účtuje uživateli") a tak dále. Relace umožňují řešení poskytovat graf vzájemně propojených entit. Relace můžou mít také vlastní vlastnosti. Další informace naleznete v části Relace níže.

  • Komponenta – Komponenty umožňují sestavit rozhraní modelu jako sestavení jiných rozhraní, pokud chcete. Příkladem komponenty je rozhraní frontCamera (a jiné rozhraní komponenty backCamera), které se používá při definování modelu pro telefon. Nejprve definujte rozhraní pro frontCamera, jako by šlo o vlastní model, a pak na něj při definování telefonu odkazujte.

    Komponentu použijte k popisu něčeho, co je nedílnou součástí vašeho řešení, ale nepotřebuje samostatnou identitu a není potřeba vytvářet, odstraňovat ani měnit uspořádání v grafu dvojčete nezávisle. Pokud chcete, aby entity měly nezávislé existence v grafu dvojčat, představují je jako samostatná digitální dvojčata různých modelů propojených relacemi.

    Tip

    Komponenty lze také použít pro organizaci k seskupení sad souvisejících vlastností v rámci rozhraní modelu. V této situaci si jednotlivé komponenty můžete představit jako obor názvů nebo složku uvnitř rozhraní.

    Další informace naleznete v části Součásti níže.

Popis jazyka DTDL v3 také definuje příkazy a telemetrii, ale ani jedno z nich se nepoužívá ve službě Azure Digital Twins. Příkazy nejsou podporované a telemetrie , i když je povolená v definicích modelu, nemá v modelování Azure Digital Twins žádný jedinečný případ použití. Místo použití telemetrie DTDL byste měli k ukládání informací o stavu dvojčete použít vlastnosti DTDL.

Poznámka:

I když v modelech DTDL není potřeba definovat pole telemetrie pro ukládání příchozích dat zařízení, azure Digital Twins může generovat události jako telemetrii pomocí rozhraní SendTelemetry API. Tím se aktivuje událost telemetrie digitálního dvojčete, kterou může obslužná rutina události přijmout, aby se mohly provádět akce s jinými dvojčaty nebo aktivovat podřízené služby.

Vlastnosti

Tato část obsahuje podrobnější informace o vlastnostech v modelech DTDL.

Podrobné informace o polích, která se mohou objevit jako součást vlastnosti, naleznete v popisu jazyka DTDL v3.

Poznámka:

Atribut writable DTDL pro vlastnosti se v současné době ve službě Azure Digital Twins nepodporuje. Dá se přidat do modelu, ale Azure Digital Twins ho nevynutí. Další informace najdete v poznámkách DTDL specifických pro službu.

Schéma

Podle DTDL může být schéma atributů vlastností standardním primitivním typem –integer , stringdouble, a – a booleandalšími typy, jako dateTime durationa .

Kromě primitivních typů můžou pole vlastností obsahovat tyto komplexní typy:

  • Object
  • Map
  • Enum
  • Array, pouze v DTDL v3. Array Typ pro vlastnosti není podporován v DTDL v2.

Můžou to být také sémantické typy, které umožňují anotovat hodnoty pomocí jednotek. V DTDL v2 se nativně podporují sémantické typy. V DTDL v3 je můžete zahrnout s rozšířením funkce.

Příklad základní vlastnosti

Tady je základní příklad vlastnosti modelu DTDL. Tento příklad ukazuje vlastnost ID domovské stránky.

{
  "@id": "dtmi:com:adt:dtsample:home;1",
  "@type": "Interface",
  "@context": "dtmi:dtdl:context;3",
  "displayName": "Home",
  "contents": [
    {
      "@type": "Property",
      "name": "id",
      "schema": "string"     
    },    
    {
      "@type": "Relationship",
      "@id": "dtmi:com:adt:dtsample:home:rel_has_floors;1",
      "name": "rel_has_floors",
      "displayName": "Home has floors",
      "target": "dtmi:com:adt:dtsample:floor;1"
    }
  ]
}

Příklad komplexního typu objektu

Vlastnosti můžou být komplexních typů, včetně typu Object .

Následující příklad ukazuje jinou verzi modelu Home s vlastností pro jeho adresu. address je objekt s vlastními poli pro ulici, město, stát a zip.

{
  "@id": "dtmi:com:adt:dtsample:home;1",
  "@type": "Interface",
  "@context": "dtmi:dtdl:context;3",
  "displayName": "Home",
  "extends": "dtmi:com:adt:dtsample:core;1",
  "contents": [
    {
      "@type": "Property",
      "name": "address",
      "schema": {
        "@type": "Object",
        "fields": [
          {
            "name": "street",
            "schema": "string"
          },
          {
            "name": "city",
            "schema": "string"
          },
          {
            "name": "state",
            "schema": "string"
          },
          {
            "name": "zip",
            "schema": "string"
          }
        ]
      }
    },
    {
      "@type": "Relationship",
      "@id": "dtmi:com:adt:dtsample:home:rel_has_floors;1",
      "name": "rel_has_floors",
      "displayName": "Home has floors",
      "target": "dtmi:com:adt:dtsample:floor;1",
      "properties": [
        {
          "@type": "Property",
          "name": "lastOccupied",
          "schema": "dateTime"
        }
      ]
    }
  ]
}

Příklad sémantického typu DTDL v2

Sémantické typy slouží k vyjádření hodnoty jednotkou. Vlastnosti služby Azure Digital Twins můžou používat libovolný z sémantických typů podporovaných DTDL.

V DTDL v2 se nativně podporují sémantické typy. Další informace o sémantických typech v DTDL v2 naleznete v tématu Sémantické typy v DTDL v2 Language Description. Další informace o sémantických typech v DTDL v3 najdete v rozšíření funkcí QuantitativeTypes DTDL v3.

Následující příklad ukazuje model senzoru DTDL v2 s sémantickým typem vlastnosti pro vlhkost a teplotu.

{
  "@id": "dtmi:com:adt:dtsample:v2sensor;1",
  "@type": "Interface",
  "@context": "dtmi:dtdl:context;2",
  "displayName": "Sensor (v2 model)",
  "contents": [
    {
      "@type": ["Property", "Temperature"],
      "name": "Temperature",
      "schema": "double",
      "unit": "degreeFahrenheit"    
    },
    {
      "@type": ["Property", "Humidity"],
      "name": "Humidity",
      "schema": "double",
      "unit": "gramPerCubicMetre" 
    }
  ]
}

Důležité

Vlastnost musí být prvním prvkem @type pole, za nímž následuje sémantický typ. V opačném případě nemusí být pole viditelné v Průzkumníku služby Azure Digital Twins.

Relace

Tato část obsahuje podrobnější informace o relacích v modelech DTDL.

Úplný seznam polí, která se můžou zobrazit jako součást relace, najdete v tématu Popis jazyka DTDL v3.

Poznámka:

Atributy writable, minMultiplicitya maxMultiplicity DTDL pro relace se v současné době nepodporují ve službě Azure Digital Twins. Dají se přidat do modelu, ale Azure Digital Twins je nevynucuje. Další informace najdete v poznámkách DTDL specifických pro službu.

Příklad základní relace

Tady je základní příklad relace modelu DTDL. V tomto příkladu je znázorněna relace na modelu Domů, která umožňuje připojení k modelu podlahy.

{
  "@id": "dtmi:com:adt:dtsample:home;1",
  "@type": "Interface",
  "@context": "dtmi:dtdl:context;3",
  "displayName": "Home",
  "contents": [
    {
      "@type": "Property",
      "name": "id",
      "schema": "string"     
    },    
    {
      "@type": "Relationship",
      "@id": "dtmi:com:adt:dtsample:home:rel_has_floors;1",
      "name": "rel_has_floors",
      "displayName": "Home has floors",
      "target": "dtmi:com:adt:dtsample:floor;1"
    }
  ]
}

Poznámka:

Pro relace @id je volitelné pole. @id Pokud není k dispozici, procesor rozhraní digitálního dvojčete mu ho přiřadí.

Cílové a necílové relace

Relace lze definovat s cílem nebo bez ní. Cíl určuje, jaké typy dvojčat může relace dosáhnout. Můžete například zahrnout cíl, který určí, že model Domů může mít rel_has_floors vztah pouze s dvojčaty, která jsou dvojčata floor.

Někdy můžete chtít definovat relaci bez konkrétního cíle, aby se relace mohla připojit k mnoha různým typům dvojčat.

Tady je příklad relace modelu DTDL, který nemá cíl. V tomto příkladu je relace určená k definování, jaké senzory může místnost obsahovat, a vztah se může připojit k libovolnému typu.

{
  "@id": "dtmi:com:adt:dtsample:room;1",
  "@type": "Interface",
  "@context": [
    "dtmi:dtdl:context;3",
    "dtmi:dtdl:extension:quantitativeTypes;1"
  ],
  "displayName": "Room",
  "extends": "dtmi:com:adt:dtsample:core;1",
  "contents": [
    {
      "@type": ["Property", "Humidity"],
      "name": "humidity",
      "schema": "double",
      "unit": "gramPerCubicMetre"
    },
    {
      "@type": "Component",
      "name": "thermostat",
      "schema": "dtmi:com:adt:dtsample:thermostat;1"
    },
    {
      "@type": "Relationship",
      "@id": "dtmi:com:adt:dtsample:room:rel_has_sensors;1",
      "name": "rel_has_sensors",
      "displayName": "Room has sensors"
    }
  ]
},

Vlastnosti relací

DTDL také umožňuje, aby relace měly vlastní vlastnosti. Když definujete relaci v rámci modelu DTDL, může mít relace vlastní properties pole, ve kterém můžete definovat vlastní vlastnosti pro popis stavu specifického pro relaci.

Následující příklad ukazuje jinou verzi modelu Home, kde rel_has_floors relace má vlastnost představující, když související floor byl naposledy obsazen.

{
  "@id": "dtmi:com:adt:dtsample:home;1",
  "@type": "Interface",
  "@context": "dtmi:dtdl:context;3",
  "displayName": "Home",
  "extends": "dtmi:com:adt:dtsample:core;1",
  "contents": [
    {
      "@type": "Property",
      "name": "address",
      "schema": {
        "@type": "Object",
        "fields": [
          {
            "name": "street",
            "schema": "string"
          },
          {
            "name": "city",
            "schema": "string"
          },
          {
            "name": "state",
            "schema": "string"
          },
          {
            "name": "zip",
            "schema": "string"
          }
        ]
      }
    },
    {
      "@type": "Relationship",
      "@id": "dtmi:com:adt:dtsample:home:rel_has_floors;1",
      "name": "rel_has_floors",
      "displayName": "Home has floors",
      "target": "dtmi:com:adt:dtsample:floor;1",
      "properties": [
        {
          "@type": "Property",
          "name": "lastOccupied",
          "schema": "dateTime"
        }
      ]
    }
  ]
}

Komponenty

Tato část obsahuje podrobnější informace o komponentách v modelech DTDL.

Úplný seznam polí, která se můžou zobrazit jako součást komponenty, naleznete v popisu jazyka DTDL v3.

Příklad základní komponenty

Tady je základní příklad komponenty v modelu DTDL. Tento příklad ukazuje model místnosti, který používá termostatický model jako součást.

[
  {
    "@id": "dtmi:com:adt:dtsample:room;1",
    "@type": "Interface",
    "@context": [
      "dtmi:dtdl:context;3",
      "dtmi:dtdl:extension:quantitativeTypes;1"
    ],
    "displayName": "Room",
    "extends": "dtmi:com:adt:dtsample:core;1",
    "contents": [
      {
        "@type": ["Property", "Humidity"],
        "name": "humidity",
        "schema": "double",
        "unit": "gramPerCubicMetre"
      },
      {
        "@type": "Component",
        "name": "thermostat",
        "schema": "dtmi:com:adt:dtsample:thermostat;1"
      },
      {
        "@type": "Relationship",
        "@id": "dtmi:com:adt:dtsample:room:rel_has_sensors;1",
        "name": "rel_has_sensors",
        "displayName": "Room has sensors"
      }
    ]
  },
  {
    "@context": [
      "dtmi:dtdl:context;3",
      "dtmi:dtdl:extension:quantitativeTypes;1"
    ],
    "@id": "dtmi:com:adt:dtsample:thermostat;1",
    "@type": "Interface",
    "displayName": "thermostat",
    "contents": [
      {
        "@type": ["Property", "Temperature"],
        "name": "temperature",
        "schema": "double",
        "unit": "degreeFahrenheit"
      }
    ]
  }
]

Pokud by jiné modely v tomto řešení měly obsahovat také termostat, můžou odkazovat na stejný termostatický model jako součást ve svých vlastních definicích, stejně jako místnost.

Důležité

Rozhraní komponenty (termostat v příkladu výše) musí být definováno ve stejném poli jako všechna rozhraní, která ji používají (Místnost v příkladu výše), aby bylo možné najít odkaz na součást.

Dědičnost modelu

Někdy se můžete chtít ještě více specializovat na model. Může být například užitečné mít obecnou modelovou místnost a specializované varianty ConferenceRoom a Gym. Pro vyjádření specializace DTDL podporuje dědičnost. Rozhraní mohou dědit z jednoho nebo více jiných rozhraní. Můžete to udělat tak, že do modelu přidáte extends pole.

Oddíl extends je název rozhraní nebo pole názvů rozhraní (což umožňuje rozšíření rozhraní dědit z více nadřazených modelů). Jeden nadřazený objekt může sloužit jako základní model pro více rozšiřujících rozhraní.

Poznámka:

V DTDL v2 může mít každá z nich extends maximálně dvě rozhraní. V DTDL v3 neexistuje žádný limit počtu okamžitých hodnot pro hodnotu extends.

V DTDL v2 i v3 je celkový limit hloubky hierarchie extends 10.

Následující příklad znovu představuje model Home z předchozího příkladu DTDL jako podtyp většího modelu "jádra". Nejprve je definován nadřazený model (Core) a potom podřízený model (Home) je na něm založen pomocí .extends

{
    "@id": "dtmi:com:adt:dtsample:core;1",
    "@type": "Interface",
    "@context": "dtmi:dtdl:context;3",
    "displayName": "Core",
    "contents": [
        {
            "@type": "Property",
            "name": "id",
            "schema": "string"
        },
        {
            "@type": "Property",
            "name": "name",
            "schema": "string"
        }
    ]
}
{
  "@id": "dtmi:com:adt:dtsample:home;1",
  "@type": "Interface",
  "@context": "dtmi:dtdl:context;3",
  "displayName": "Home",
  "extends": "dtmi:com:adt:dtsample:core;1",
  "contents": [
    {

V tomto případě Core přispívá ID a název na domovskou stránku. Další modely můžou také rozšířit základní model, aby získaly tyto vlastnosti. Tady je model místnosti, který rozšiřuje stejné nadřazené rozhraní:

{
  "@id": "dtmi:com:adt:dtsample:room;1",
  "@type": "Interface",
  "@context": [
    "dtmi:dtdl:context;3",
    "dtmi:dtdl:extension:quantitativeTypes;1"
  ],
  "displayName": "Room",
  "extends": "dtmi:com:adt:dtsample:core;1",

Po použití dědičnosti zpřístupňuje rozšiřující rozhraní všechny vlastnosti z celého řetězce dědičnosti.

Rozšiřující rozhraní nemůže změnit žádné definice nadřazených rozhraní; může je přidávat pouze do nich. Také nemůže předefinovat schopnost, která už je definovaná v žádném z jeho nadřazených rozhraní (i když jsou schopnosti definované tak, aby byly stejné). Pokud například nadřazené rozhraní definuje double vlastnost mass, rozšiřující rozhraní nemůže obsahovat deklaraci mass, i když je to také double.

Rozšíření funkcí DTDL v3

DTDL v3 umožňuje jazyková rozšíření, která definují další třídy metamodelu, které můžete použít k psaní bohatších modelů. Tato část popisuje třídy rozšíření funkcí, které můžete použít k přidání nejádrových funkcí do modelů DTDL v3.

Každé rozšíření funkcí je identifikováno specifikátorem kontextu, což je jedinečná hodnota DTMI (Digital Twin Model Identifier). Pokud chcete povolit rozšíření funkcí v modelu, přidejte specifikátor kontextu rozšíření do pole modelu @context (spolu s obecným specifikátorem dtmi:dtdl:context;3kontextu DTDL ). Do stejného modelu můžete přidat více rozšíření funkcí.

Tady je příklad toho, jak @context toto pole může vypadat s rozšířeními funkcí. Následující výňatek pochází z modelu, který používá rozšíření QuantitativeTypes i rozšíření Annotation.

  "@context": [
      "dtmi:dtdl:context;3",
      "dtmi:dtdl:extension:quantitativeTypes;1",
      "dtmi:dtdl:extension:annotation;1"
  ]

Po přidání rozšíření funkcí do modelu budete mít přístup k typům doplňku tohoto rozšíření v modelu. Do pole elementu DTDL můžete přidat doplňkové typy @type , abyste elementu poskytli další možnosti. Typ doplňku může do elementu přidat další vlastnosti.

Tady je například výňatek z modelu, který používá rozšíření Poznámky. Toto rozšíření má adjunkt typ volal ValueAnnotation, který je přidán v příkladu níže k elementu vlastnosti. Přidání tohoto doplňkového typu do elementu vlastnosti umožňuje elementu mít další annotates pole, které slouží k označení další vlastnosti, která je označena tímto elementem.

{
  "@type": [ "Property", "ValueAnnotation" ],
  "name": "currentTempAccuracy",
  "annotates": "currentTemp",
  "schema": "double"
  },

Zbytek této části vysvětluje rozšíření poznámek a další rozšíření funkcí DTDL v3 podrobněji.

Rozšíření poznámek

Rozšíření Annotation slouží k přidání vlastních metadat do elementu vlastnosti v modelu DTDL v3. Jeho specifikátor kontextu je dtmi:dtdl:extension:annotation;1.

Toto rozšíření zahrnuje typ doplňku ValueAnnotation , který lze přidat do elementu vlastnosti DTDL. Typ ValueAnnotation přidá jedno pole do elementu, annotatescož umožňuje pojmenovat jinou vlastnost, která je anotována aktuálním prvkem.

Další podrobnosti a příklady tohoto rozšíření najdete v tématu Popis jazyka DTDL v3.

Rozšíření historizace

Rozšíření Historization slouží k určení vlastnosti v modelu DTDL v3 jako něčeho, co by mělo být historizováno (což znamená, že historická posloupnost hodnot by měla být zaznamenána spolu s časy, kdy se hodnoty mění). Jeho specifikátor kontextu je dtmi:dtdl:extension:historization;1.

Toto rozšíření zahrnuje typ doplňku Historized , který lze přidat jako spolutyp do elementu vlastnosti DTDL, který indikuje, že služba by měla zachovat historické hodnoty elementu a zpřístupnit je pro dotazování a analýzu. Typ Historized doplňku nepřidá do elementu žádná pole.

Další podrobnosti a příklady tohoto rozšíření naleznete v tématu Historization extension in the DTDL v3 Language Description.

Přepsání rozšíření

Přepsání rozšíření slouží k přepsání vlastnosti v modelu DTDL V3 s hodnotou instance. Používá se v kombinaci s rozšířením poznámek a jeho specifikátorem kontextu je dtmi:dtdl:extension:overriding;1.

Toto rozšíření zahrnuje typ doplňku Override , který lze přidat do vlastnosti DTDL, která je také spolutypována ValueAnnotation (z rozšíření poznámek). Typ Override přidá do elementu jedno pole, které umožňuje pojmenovat pole u anotovaného elementu, overrideskterý se má přepsat hodnotou aktuálního elementu.

Další podrobnosti a příklady tohoto rozšíření najdete v tématu Přepsání rozšíření v popisu jazyka DTDL v3.

Rozšíření QuantitativeTypes

Rozšíření QuantitativeTypes slouží k povolení sémantických typů, typů jednotek a jednotek v modelu DTDL v3. Jeho specifikátor kontextu je dtmi:dtdl:extension:quantitativeTypes;1.

Toto rozšíření umožňuje použití mnoha sémantických typů jako spojnicových typů, které lze přidat do CommandRequest, Pole, MapValue nebo vlastnosti v DTDL v3. Sémantické typy přidávají do elementu jedno pole, unitkteré přijímá platnou jednotku, která odpovídá sémantickému typu.

Další podrobnosti o rozšíření, včetně příkladů a úplného seznamu podporovaných sémantických typů a jednotek, naleznete v části QuantitativeTypes rozšíření v DTDL v3 Language Description.

Poznámky DTDL specifické pro službu

Ne všechny služby, které používají DTDL, implementují úplně stejné funkce DTDL. Služba Azure Digital Twins v současné době nepodporuje některé funkce DTDL, mezi které patří:

  • Příkazy DTDL
  • Atribut writable vlastností nebo relací. I když je možné tento atribut nastavit podle specifikací DTDL, azure Digital Twins tuto hodnotu nepoužívá. Místo toho se tyto atributy vždy považují za zapisovatelné externími klienty, kteří mají obecná oprávnění k zápisu do služby Azure Digital Twins.
  • Vlastnosti minMultiplicity a maxMultiplicity relace. I když je možné tyto atributy nastavit podle specifikací DTDL, azure Digital Twins tyto hodnoty nevynucuje.

Aby byl model DTDL kompatibilní se službou Azure Digital Twins, musí také splňovat tyto požadavky:

  • Všechny prvky DTDL nejvyšší úrovně v modelu musí být typu Interface. Důvodem tohoto požadavku je, že rozhraní API modelu Azure Digital Twins můžou přijímat objekty JSON, které představují rozhraní nebo pole rozhraní. V důsledku toho nejsou na nejvyšší úrovni povoleny žádné jiné typy elementů DTDL.
  • DTDL pro Azure Digital Twins nesmí definovat žádné příkazy.
  • Azure Digital Twins umožňuje pouze jednu úroveň vnoření součástí, což znamená, že rozhraní, které se používá jako komponenta, nemůže mít žádné samotné komponenty.
  • Rozhraní nelze definovat v rámci jiných rozhraní DTDL; musí být definovány jako samostatné entity nejvyšší úrovně s vlastními ID. Když pak jiné rozhraní chce toto rozhraní zahrnout jako součást nebo prostřednictvím dědičnosti, může odkazovat na své ID.

Nástroje pro modelování a osvědčené postupy

Tato část popisuje další aspekty a doporučení pro modelování.

Použití stávajících standardních ontologií

Ontologie je sada modelů, které komplexně popisují danou doménu, jako je výroba, stavební struktury, systémy IoT, inteligentní města, energetické sítě, webový obsah a další.

Pokud je vaše řešení pro určité odvětví, které používá jakýkoli druh standardu modelování, zvažte, že začnete s předem existující sadou modelů navržených pro vaše odvětví, a nemusíte navrhovat modely úplně od začátku. Microsoft spolupracuje s odborníky na domény a vytvořil model DTDL založený na oborových standardech, aby pomohl minimalizovat nové vynalézavost a podpořit konzistenci a jednoduchost napříč oborovými řešeními. Další informace o těchto ontologiích, včetně toho, jak je používat a jaké ontologie jsou nyní k dispozici, si můžete přečíst v tématu Co je ontologie?.

Zvážení dopadů na dotazy

Při navrhování modelů tak, aby odrážely entity ve vašem prostředí, může být užitečné se podívat dopředu a zvážit důsledky dotazu vašeho návrhu. Můžete chtít navrhnout vlastnosti způsobem, který zabrání velkým sadám výsledků při procházení grafu. Můžete také chtít modelovat relace, na které bude potřeba odpovědět v jednom dotazu jako relace na jedné úrovni.

Ověření modelů

Po vytvoření modelu se doporučuje před jejich nahráním do instance Služby Azure Digital Twins ověřit modely offline.

Pro účely ověření modelů se na NuGetu poskytuje knihovna analyzátoru DTDL na straně klienta .NET: DTDLParser. Knihovnu analyzátoru můžete použít přímo v kódu jazyka C#. Ukázkové použití analyzátoru můžete zobrazit také v souboru DTDLParserResolveSample na GitHubu.

Hromadné nahrávání a odstraňování modelů

Jakmile dokončíte vytváření, rozšiřování nebo výběr modelů, musíte je nahrát do instance služby Azure Digital Twins, aby byly dostupné pro použití ve vašem řešení.

Mnoho modelů můžete nahrát do jednoho volání rozhraní API pomocí rozhraní API importu úloh. Rozhraní API může současně přijímat až limit služby Azure Digital Twins pro počet modelů v instanci a v případě potřeby automaticky změní pořadí modelů, aby bylo možné přeložit závislosti mezi nimi. Podrobné pokyny a příklady, které používají toto rozhraní API, najdete v pokynech k hromadnému importu modelů.

Alternativou k rozhraní API pro import úloh je ukázka nahrávače modelů, která k nahrání více souborů modelu najednou používá jednotlivá rozhraní API modelu. Ukázka také implementuje automatické změny pořadí pro řešení závislostí modelu. V současné době funguje jenom s verzí 2 DTDL.

Pokud potřebujete odstranit všechny modely v instanci Služby Azure Digital Twins najednou, můžete použít ukázku odstranění modelu. Jedná se o projekt, který obsahuje rekurzivní logiku pro zpracování závislostí modelu prostřednictvím procesu odstranění. V současné době funguje jenom s verzí 2 DTDL.

Nebo pokud chcete vymazat data v instanci odstraněním všech modelů spolu se všemi dvojčaty a relacemi, můžete použít rozhraní API pro odstranění úloh.

Vizualizace modelů

Po nahrání modelů do instance Azure Digital Twins je můžete zobrazit pomocí Průzkumníka služby Azure Digital Twins. Průzkumník obsahuje seznam všech modelů v instanci a také graf modelu, který znázorňuje jejich vzájemné vztahy, včetně dědičnosti a vztahů modelu.

Poznámka:

Azure Digital Twins Explorer v současné době plně podporuje modely DTDL v2 a podporuje omezené funkce pro modely DTDL v3.

Modely DTDL v3 lze zobrazit na panelu Modely a dvojčata vytvořená pomocí modelů DTDL v3 je možné zobrazit a upravit (včetně modelů s vlastnostmi pole). Modely DTDL v3 se ale nezobrazí na panelu Graf modelů a nedají se importovat pomocí Průzkumníka služby Azure Digital Twins. K importu modelů DTDL v3 do vaší instance použijte jiné vývojářské rozhraní, jako jsou rozhraní API a sady SDK nebo Azure CLI.

Tady je příklad toho, jak může graf modelu vypadat:

Snímek obrazovky s Průzkumníkem služby Azure Digital Twins Panel Graf modelu je zvýrazněný.

Další informace o prostředí modelu v Průzkumníku služby Azure Digital Twins najdete v tématu Prozkoumání modelů a grafu modelů.

Další kroky