Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Klíčovou charakteristikou služby Azure Digital Twins je schopnost definovat vlastní slovník a vytvořit graf dvojčete v termínech, které si vaše firma sama stanoví. 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 je založen na JSON-LD a je nezávislý na programovacím jazyce. 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 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ří:
- Relaxace verzí DTMI
- Podpora polí pro vlastnosti
- Zvýšená omezení dědičnosti modelů
-
Rozšíření funkcí
- Možnost doplnit vlastní schémata rozhraní sémantickými typy (k dispozici s rozšířením QuantitativeTypes)
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ě dvojčat s vlastnostmi pole). Modely DTDL v3 se ale nezobrazují na panelu Graf modelů a není možné 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 modelu
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 typ Interface. |
@context |
Nastaví kontext dokumentu JSON. Modely by 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 domov s jednou vlastností pro 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("místnost se nachází na podlaze"),cools("HVAC chladí místnost"),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.
Návod
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ž není potřeba definovat pole telemetrie v modelech DTDL 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, double, string a boolean – a dalšími typy, jako jsou dateTime a duration.
Kromě primitivních typů můžou pole vlastností obsahovat tyto komplexní typy:
ObjectMapEnum-
Array, pouze v DTDL v3.ArrayTyp 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 funkcí.
Příklad základní vlastnosti
Tady je základní příklad vlastnosti modelu DTDL. Tento příklad ukazuje vlastnost ID domu.
{
"@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.
Vztahy
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ěn vztah u modelu Domu, který umožňuje připojení k modelu patra.
{
"@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. Pokud není k dispozici @id, procesor rozhraní digitálního dvojčete přiřadí jedno.
Cílové a necílové vztahy
Relace lze definovat s cílem nebo bez ní. Cíl specifikuje, na jaké typy dvojčat může vztah dosáhnout. Můžete například zahrnout cíl, který určí, že model Domácí může mít rel_has_floors vztah pouze s dvojčaty, která jsou patrová dvojčata.
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 Domov, kde rel_has_floors relace má vlastnost představující, kdy související Podlaží bylo naposledy obsazeno.
{
"@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"
}
]
}
]
}
Součásti
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 měly jiné modely v tomto řešení také obsahovat termostat, mohou jako součást ve svých vlastních definicích odkazovat na stejný model termostatu, stejně jako to dělá 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 možná budete chtít model dále specializovat. 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 rodičovský rozhraní 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ý extends uvedeno 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 na něm podřízený model (Home) staví 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 do Home. Další modely můžou také rozšířit základní model, aby získaly tyto vlastnosti. Zde 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á typ adjunktu nazvaný ValueAnnotation, který je v následujícím příkladu přidán do prvku 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 k tomuto rozšíření najdete v části Rozšíření anotací v popisu 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řepisování rozšíření
Rozšiřující přepsání se používá k přepsání vlastnosti v modelu DTDL V3 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 přídatný typ Override, který lze přidat do vlastnosti DTDL, která je také spolutypována s ValueAnnotation (z rozšíření poznámek). Typ Override přidá do elementu jedno pole, overrides, které vám umožní pojmenovat pole na anotovaném elementu, které má být přepsáno 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 se používá k aktivaci 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
writablena vlastnostech nebo vztazích. 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 relace
minMultiplicityamaxMultiplicity. 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?.
Zvažte důsledky dotazu
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 doporučujeme, abyste modely před nahráním do instance Služby Azure Digital Twins ověřili offline.
Pro účely ověření modelů se na NuGetu poskytuje knihovna analyzátoru DTDL na straně klienta .NET: DTDLParser. Můžete přímo ve svém kódu v jazyce C# použít knihovnu analyzátoru. 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 během jednoho volání rozhraní API pomocí API pro import ú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 se vyřešily 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ě dvojčat s vlastnostmi pole). Modely DTDL v3 se ale nezobrazují na panelu Graf modelů a není možné 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:
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
Seznamte se s vytvářením modelů založených na standardních ontologiích: Co je ontologie?
Podrobnější informace o správě modelů pomocí operací rozhraní API: Správa modelů DTDL
Informace o tom, jak se modely používají k vytváření digitálních dvojčat: Digitální dvojčata a graf dvojčat