Megismerheti az ikermodelleket, és hogyan definiálhatja őket az Azure Digital Twinsben

Az Azure Digital Twins egyik fő jellemzője, hogy meg tudja határozni saját szókincsét, és az ikergráfot a vállalkozása ön által meghatározott feltételeiben építheti fel. Ezt a képességet a felhasználó által biztosított modellek biztosítják. A modelleket a világ leírásában főnevekként tekintheti. Az Azure Digital Twins-modellek a JSON-LD-alapú Digital Twin Definition Language (DTDL) nyelven jelennek meg.

A modell egy objektumorientált programozási nyelv osztályához hasonló, és egy adatalakzatot határoz meg egy adott fogalomhoz a valós munkahelyi környezetben. A modellek neve (például Helyiség vagy TemperatureSensor) és olyan elemeket tartalmaz, mint a tulajdonságok, összetevők és kapcsolatok, amelyek leírják, hogy mit tesz az ilyen típusú entitás a környezetben. Később ezeket a modelleket fogjuk használni olyan digitális ikerpéldányok létrehozására, amelyek az ilyen típusú leírásnak megfelelő entitásokat jelölik.

Digitális ikerdefiníciós nyelv (DTDL) modellekhez

Az Azure Digital Twins modelljei a Digital Twins Definíciós Nyelv (DTDL) használatával vannak definiálva.

A DTDL v3 teljes nyelvi leírását a GitHubon tekintheti meg: DTDL 3. verzió– nyelv leírása. Ez az oldal DTDL-referenciaadatokat és példákat tartalmaz a saját DTDL-modellek írásának megkezdéséhez.

A DTDL a JSON-LD nyelven alapul, és programnyelvtől független. A DTDL nem kizárólagos az Azure Digital Twins számára. Más IoT-szolgáltatások, például az IoT Plug and Play eszközadatainak megjelenítésére is szolgál.

A cikk további része összefoglalja, hogyan használják a nyelvet az Azure Digital Twinsben.

Támogatott DTDL-verziók

Az Azure Digital Twins támogatja a DTDL 2., illetve 3. verzióját (a dokumentációban 2- és 3-ra rövidítve). A V3 az Azure Digital Twinsben való modellezéshez ajánlott a kibővített képességek alapján, beleértve a következőket:

Ha ezeket a funkciókat a dokumentáció ismerteti, egy megjegyzés kíséri őket, hogy csak a DTDL v3-ban érhetők el. A DTDL v2 és a v3 közötti különbségek teljes listáját a DTDL v3 nyelvi leírásában találja : A 2. verzió változásai.

Az Azure Digital Twins emellett támogatja az azonos példányon belüli v2- és v3-modellek kombinációját is. Ha mindkét verzió modelljeit együtt használja, tartsa szem előtt az alábbi korlátozásokat:

  • A v2-illesztő nem tudja kiterjeszteni a v3-illesztőt, vagy olyan összetevővel rendelkezik, amelynek sémája v3 interfész.
  • Ezzel szemben a v3-illesztő kiterjesztheti a v2 interfészt, a v3-illesztő pedig rendelkezhet egy v2-adapterrel rendelkező összetevővel mint sémával.
  • A kapcsolatok bármelyik irányba mutathatnak, a v2-modell forrásától a v3-modellcélig, vagy fordítva a v3-modellforrástól a v2-modellcélig.

Meglévő v2-modelleket is áttelepíthet a v3-ra. Ennek módjával kapcsolatos útmutatást a v2-modellek konvertálása 3-ra című témakörben talál.

Feljegyzés

Az Azure Digital Twins Explorer jelenleg teljes mértékben támogatja a DTDL v2-modelleket, és támogatja a DTDL v3-modellek korlátozott funkcióit. Az Azure Digital Twins Explorerben a DTDL v3-modellek megtekinthetők a Modellek panelen, a DTDL v3-modellekkel létrehozott ikerpéldányok pedig megtekinthetők és szerkeszthetők (beleértve a tömbtulajdonságokkal rendelkezőket is). A DTDL v3-modellek azonban nem jelennek meg a Model Graph panelen, és nem importálhatók az Azure Digital Twins Explorerrel. Ha DTDL v3-modelleket szeretne importálni a példányba, használjon egy másik fejlesztői felületet, például az API-kat és az SDK-kat vagy az Azure CLI-t.

Modell áttekintése

Az ikermodellek bármilyen szövegszerkesztőben írhatók. A DTDL nyelv a JSON szintaxist követi, ezért a modelleket .json kiterjesztéssel kell tárolnia. A JSON-bővítmény használata számos programozási szövegszerkesztő számára lehetővé teszi a DTDL-dokumentumok alapszintű szintaxisellenőrzését és kiemelését. A Visual Studio Code-hoz egy DTDL-bővítmény is elérhető.

A modell felületének mezői a következők:

Mező Leírás
@id Digitális ikermodell-azonosító (DTMI) a modellhez a következő formátumban dtmi:<domain>:<unique-model-identifier>;<model-version-number>: . A DTDL v3-ban a verziószám elhagyható, vagy kétrészes (<major>.<minor>) verziószámként strukturálható.
@type Azonosítja a leírt információtípust. Egy interfész esetében a típus a következő Interface: .
@context Beállítja a JSON-dokumentum környezetét . A modelleknek DTDL v2-hez vagy dtmi:dtdl:context;3 DTDL v3-hoz kell használniukdtmi:dtdl:context;2. A DTDL v3-modellek további funkcióbővítményeket is elnevozhatnak ebben a mezőben.
displayName [nem kötelező] Lehetővé teszi a modell rövid nevének megadását. Ha nem használja ezt a mezőt, a modell a teljes DTMI-értékét fogja használni.
contents A fennmaradó interfészadatok attribútumdefiníciók tömbjeként kerülnek ide. Minden attribútumnak tartalmaznia kell egy @type (PropertyRelationshipvagy Component) elemet az általa leírt interfészadatok azonosításához, majd egy tulajdonságkészletet, amely meghatározza a tényleges attribútumot. A következő szakasz részletesen ismerteti a modellattribútumokat .

Íme egy példa egy alapszintű DTDL-modellre. Ez a modell egy kezdőlapot ír le egy azonosító egyetlen tulajdonságával. Az Otthoni modell egy padlómodellhez való kapcsolatot is definiál, amely azt jelzi, hogy egy otthoni ikerpéldány egyes emeleti ikerpéldányokhoz csatlakozik.

{
  "@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"
    }
  ]
}

Modellattribútumok

A modell fő információit azok az attribútumok adják meg, amelyek a contents modell felületének szakaszában vannak definiálva.

Az alábbi attribútumok érhetők el az Azure Digital Twinsben támogatott DTDL-ben. Az Azure Digital Twinshez használt DTDL-modellillesztők az alábbi mezők közül nullát, egyet vagy sokat tartalmazhatnak:

  • Tulajdonság – A tulajdonságok olyan adatmezők, amelyek egy entitás állapotát jelölő adatmezők (például számos objektumorientált programozási nyelv tulajdonságai). A tulajdonságok háttértárolóval rendelkeznek, és bármikor olvashatók. További információ: Tulajdonságok alább.

  • Kapcsolat – A kapcsolatok lehetővé teszik a digitális ikerpéldányok más digitális ikerpéldányokkal való bevonását. A kapcsolatok különböző szemantikai jelentéstartalmakat jelölhetnek, például contains ("a padló helyiséget tartalmaz"), cools ("hvac hűti a helyiséget"), isBilledTo ("a kompresszor a felhasználó számlájára kerül"), és így tovább. A kapcsolatok lehetővé teszik, hogy a megoldás egy gráfot biztosítson az egymással összefüggő entitásokról. A kapcsolatoknak saját tulajdonságaik is lehetnek. További információ: Kapcsolatok alább.

  • Összetevő – Az összetevők lehetővé teszik a modell felületének összeállítását más interfészek szerelvényeként, ha szeretné. Az összetevőkre példa egy előtér Kamera felület (és egy másik összetevő-felület Kamera), amely egy telefon modelljének meghatározásához használatos. Először határozzon meg egy kezelőfelületet Kamera mintha a saját modellje lenne, majd hivatkozzon rá a Telefon definiálásakor.

    Egy összetevővel olyan dolgot írhat le, amely a megoldás szerves része, de nincs szüksége külön identitásra, és nem kell külön létrehozni, törölni vagy átrendezni az ikergráfban egymástól függetlenül. Ha azt szeretné, hogy az entitások független létezéssel rendelkezzenek az ikergráfban, azokat különböző modellek különálló digitális ikerpéldányaiként jelölje, amelyeket kapcsolatok kötnek össze.

    Tipp.

    Az összetevők a szervezet számára is használhatók a kapcsolódó tulajdonságok csoportjainak a modellfelületen való csoportosításához. Ebben az esetben az egyes összetevőket névtérként vagy "mappának" tekintheti a felületen belül.

    További információ: Összetevők alább.

A DTDL v3 nyelvi leírása parancsokat és telemetriát is definiál, de ezek egyikét sem használják az Azure Digital Twinsben. A parancsok nem támogatottak, és a telemetriai adatok – bár a modelldefiníciókban engedélyezettek – nincs egyedi használati eset az Azure Digital Twins modellezésében. A DTDL-telemetria használata helyett DTDL-tulajdonságokat kell használnia az ikerállapot-adatok tárolásához.

Feljegyzés

Bár a DTDL-modellekben nincs szükség telemetriai mezők meghatározására a bejövő eszközadatok tárolásához, az Azure Digital Twins a SendTelemetry API használatával telemetriaként képes eseményeket kibocsátani. Ez elindít egy Digitális ikerpéldány telemetriai üzenet eseményt , amelyet egy eseménykezelő fogadhat más ikerpéldányokon végzett műveletek vagy az alárendelt szolgáltatások aktiválása érdekében.

Tulajdonságok

Ez a szakasz részletesebben ismerteti a DTDL-modellek tulajdonságait .

A tulajdonság részeként megjelenő mezőkkel kapcsolatos átfogó információkért tekintse meg a tulajdonságot a DTDL v3 nyelvi leírásában.

Feljegyzés

A writable tulajdonságok DTDL attribútuma jelenleg nem támogatott az Azure Digital Twinsben. Hozzáadható a modellhez, de az Azure Digital Twins nem kényszeríti ki. További információ: Szolgáltatásspecifikus DTDL-megjegyzések.

Séma

A DTDL-nek megfelelően a tulajdonságattribútumok sémája lehet egy szabványos primitív típus – , , és boolean– és más típusok, például dateTime és duration. stringdoubleinteger

A primitív típusok mellett a tulajdonságmezők az alábbi összetett típusokkal is rendelkezhetnek:

  • Object
  • Map
  • Enum
  • Array, csak a DTDL v3-ban. Array A tulajdonságok típusa nem támogatott a DTDL v2-ben.

Szemantikai típusok is lehetnek, amelyek lehetővé teszik az értékek egységekkel való megjegyzését. A DTDL 2-ben a szemantikai típusok natívan támogatottak, a DTDL v3-ban pedig egy funkcióbővítménnyel is felveheti őket.

Példa egyszerű tulajdonságra

Íme egy alapvető példa egy DTDL-modell tulajdonságára. Ez a példa egy Kezdőlap azonosító tulajdonságát mutatja be.

{
  "@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élda összetett objektumtípusra

A tulajdonságok összetett típusúak lehetnek, beleértve egy típust Object is.

Az alábbi példa a Home modell egy másik verzióját mutatja be, amelynek a címe egy tulajdonsággal rendelkezik. address egy objektum, amelynek saját mezői az utca, a város, az állam és 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élda DTDL v2 szemantikai típusra

A szemantikai típusok egy egység értékének kifejezésére használhatók. Az Azure Digital Twins tulajdonságai a DTDL által támogatott szemantikai típusok bármelyikét használhatják.

A DTDL v2-ben a szemantikai típusok natívan támogatottak. A DTDL v2 szemantikai típusairól a DTDL v2 nyelvi leírásában található szemantikai típusok című témakörben talál további információt. A DTDL v3 szemantikai típusairól a QuantitativeTypes DTDL v3 funkcióbővítményben tájékozódhat.

Az alábbi példa egy DTDL v2 érzékelőmodellt mutat be szemantikai típustulajdonságokkal a páratartalom és a hőmérséklet esetében.

{
  "@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" 
    }
  ]
}

Fontos

A "Tulajdonság" a tömb első elemének @type kell lennie, amelyet a szemantikai típus követ. Ellenkező esetben előfordulhat, hogy a mező nem látható az Azure Digital Twins Explorerben.

Kapcsolatok

Ez a szakasz részletesebben ismerteti a DTDL-modellek kapcsolatait .

A kapcsolat részeként megjelenő mezők átfogó listáját a DTDL v3 nyelvi leírásában található Kapcsolat című témakörben találja.

Feljegyzés

A writablekapcsolatokhoz tartozó , minMultiplicityés maxMultiplicity DTDL attribútumok jelenleg nem támogatottak az Azure Digital Twinsben. Ezek hozzáadhatók a modellhez, de az Azure Digital Twins nem kényszeríti őket. További információ: Szolgáltatásspecifikus DTDL-megjegyzések.

Egyszerű kapcsolati példa

Íme egy egyszerű példa egy DTDL-modell kapcsolatára. Ez a példa egy otthoni modell kapcsolatát mutatja be, amely lehetővé teszi, hogy csatlakozzon egy padlómodellhez.

{
  "@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"
    }
  ]
}

Feljegyzés

@id Kapcsolatok esetén egy nem kötelező mező. Ha nincs @id megadva, a digitális ikerfelület-feldolgozó hozzárendel egyet.

Célzott és nem célzott kapcsolatok

A kapcsolatok definiálhatók célokkal vagy anélkül is. A cél határozza meg, hogy a kapcsolat mely ikerpéldány-típusokat érheti el. Megadhat például egy célértéket, amely azt határozza meg, hogy egy otthoni modell csak olyan ikerpéldányokkal létesíthet rel_has_floors kapcsolatot, amelyek emeletes ikerpéldányok.

Előfordulhat, hogy konkrét cél nélkül szeretne kapcsolatot definiálni, hogy a kapcsolat számos különböző típusú ikerpéldányhoz kapcsolódjon.

Íme egy példa egy olyan kapcsolatra egy DTDL-modellen, amely nem rendelkezik célként. Ebben a példában a kapcsolat annak meghatározására használható, hogy a helyiség milyen érzékelőkkel rendelkezhet, és a kapcsolat bármilyen típushoz csatlakozhat.

{
  "@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"

Kapcsolatok tulajdonságai

A DTDL lehetővé teszi, hogy a kapcsolatok saját tulajdonságokkal rendelkezzenek. Ha egy kapcsolatot egy DTDL-modellben határoz meg, a kapcsolat saját properties mezővel rendelkezhet, ahol egyéni tulajdonságokat határozhat meg a kapcsolatspecifikus állapot leírásához.

Az alábbi példa a Home modell egy másik verzióját mutatja be, ahol a rel_has_floors kapcsolatnak van egy tulajdonsága, amely azt jelzi, hogy a kapcsolódó padló mikor volt utoljára elfoglalva.

{
  "@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"
        }
      ]
    }
  ]
}

Összetevők

Ez a szakasz részletesebben ismerteti a DTDL-modellek összetevőit .

Az összetevők részeként megjelenő mezők átfogó listáját a DTDL v3 nyelvi leírás összetevőjében találja.

Egyszerű összetevő – példa

Íme egy egyszerű példa egy DTDL-modell egyik összetevőjére. Ez a példa egy helyiségmodellt mutat be, amely egy termosztátmodellt használ összetevőként.

[
  {
    "@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"
      }
    ]
  }
]

Ha a megoldás más modelljeinek is termosztátot kell tartalmazniuk, a Roomhoz hasonlóan a saját definícióikban is hivatkozhatnak ugyanarra a termosztátmodellre, mint egy összetevőre.

Fontos

Az összetevő illesztőjét (a fenti példában található termosztátot) ugyanabban a tömbben kell meghatározni, mint az azt használó összes adaptert (a fenti példában helyiséget), hogy az összetevő hivatkozása megtalálható legyen.

Modellöröklés

Előfordulhat, hogy érdemes tovább szakosítani egy modellt. Hasznos lehet például egy általános modellterem, valamint a Konferenciaterem és a Tornaterem speciális változatai. A specializáció kifejezéséhez a DTDL támogatja az öröklést. A felületek egy vagy több más adaptertől örökölhetnek. Ezt úgy teheti meg, hogy hozzáad egy extends mezőt a modellhez.

A extends szakasz egy interfésznév vagy egy illesztőnévtömb (amely lehetővé teszi, hogy a bővítő felület több szülőmodelltől örököljön). Az egyetlen szülő több bővítő felület alapmodellje lehet.

Feljegyzés

A DTDL v2-ben mindegyik extends legfeljebb két csatolóval rendelkezhet. A DTDL v3-ban nincs korlátozva az azonnali értékek száma egy extends.

A DTDL v2 és a v3 esetében a hierarchia teljes mélységi korlátja extends 10.

Az alábbi példa a korábbi DTDL-példa Otthoni modelljét egy nagyobb "core" modell altípusaként képzeli el. Először a szülőmodell (Core) van definiálva, majd a gyermekmodell (Home) a használatával extendsépít rá.

{
    "@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": [
    {

Ebben az esetben a Core egy azonosítót és egy nevet ad hozzá a Kezdőlaphoz. Más modellek is bővíthetik a Core-modellt, hogy ezeket a tulajdonságokat is megkapják. Íme egy szobamodell, amely ugyanazt a szülőfelületet bővíti:

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

Az öröklés alkalmazása után a bővítő felület a teljes öröklési lánc összes tulajdonságát elérhetővé teszi.

A bővítő felület nem módosíthatja a szülőillesztők definícióit; csak hozzá lehet adni őket. A szülőfelületeken már definiált képességeket sem tudja újradefinini (még akkor sem, ha a képességek azonosak). Ha például egy szülőfelület definiál egy tulajdonságot doublemass, a bővítő felület nem tartalmazhat deklarációt mass, még akkor sem, ha az is egy double.

DTDL v3 szolgáltatásbővítmények

A DTDL v3 lehetővé teszi a további metamodellosztályokat definiáló nyelvi bővítményeket, amelyekkel részletesebb modelleket írhat. Ez a szakasz azokat a funkcióbővítményosztályokat ismerteti, amelyekkel nem alapvető funkciókat adhat hozzá a DTDL v3-modellekhez.

Minden funkcióbővítményt a környezetkijelölő azonosít, amely egy egyedi Digital Twin Model Identifier (DTMI) érték. Ha engedélyezni szeretne egy funkcióbővítményt egy modellben, adja hozzá a bővítmény környezetjelölőjét @context a modell mezőjéhez (az általános DTDL-környezetkijelölő dtmi:dtdl:context;3mellett). Több funkcióbővítményt is hozzáadhat ugyanahhoz a modellhez.

Íme egy példa arra, hogy @context ez a mező milyen lehet a funkcióbővítményekkel. Az alábbi részlet egy olyan modellből származik, amely a QuantitativeTypes és a Széljegyzet bővítményt is használja.

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

Miután hozzáadott egy funkcióbővítményt egy modellhez, hozzáférhet a bővítmény kiegészítő típusaihoz a modellen belül. A DTDL-elem mezőihez @type kiegészítő típusokat is hozzáadhat, hogy az elem további képességeket biztosítson. A kiegészítő típus további tulajdonságokat adhat az elemhez.

Íme például egy részlet egy olyan modellből, amely a Széljegyzet bővítményt használja. Ez a bővítmény egy melléknévtípussal ValueAnnotationrendelkezik, amelyet az alábbi példában egy tulajdonságelemhez adunk hozzá. Ha hozzáadja ezt a kiegészítő típust a tulajdonságelemhez, az elem további annotates mezővel rendelkezhet, amely az elem által jegyzett másik tulajdonság jelzésére szolgál.

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

A szakasz további része részletesebben ismerteti a Jegyzetkiterjesztést és az egyéb DTDL v3-funkcióbővítményeket.

Széljegyzetkiterjesztés

A Széljegyzet bővítmény egyéni metaadatokat ad hozzá egy DTDL v3-modell tulajdonságeleméhez. A környezetjelölője a .dtmi:dtdl:extension:annotation;1

Ez a bővítmény tartalmazza a ValueAnnotation kiegészítő típust, amely hozzáadható egy DTDL tulajdonságelemhez. A ValueAnnotation típus egy mezőt ad hozzá az elemhez, annotatesamely lehetővé teszi egy másik, az aktuális elem által jegyzett tulajdonság elnevezését.

További részletekért és példákért lásd a Jegyzetkiterjesztést a DTDL v3 nyelvi leírásában.

Historizációs bővítmény

A Historization bővítmény a DTDL v3-modell egyik tulajdonságának a historizált tulajdonságként való kijelölésére szolgál (ami azt jelenti, hogy az értékek előzménysorozatát rögzíteni kell, valamint az érték változásának időpontjait). A környezetjelölője a .dtmi:dtdl:extension:historization;1

Ez a bővítmény tartalmazza a Historized kiegészítő típust, amely egy DTDL tulajdonságelem társtípusaként adható hozzá, amely jelzi, hogy a szolgáltatásnak meg kell őriznie az elem előzményértékeit, és elérhetővé kell tennie őket lekérdezéshez és elemzéshez. A Historized kiegészítő típus nem ad hozzá mezőket az elemhez.

További részletekért és példákért lásd a Historization bővítményt a DTDL v3 nyelvi leírásában.

Felülbírálási bővítmény

A felülbíráló bővítmény egy DTDL V3-modell egy tulajdonságának felülbírálására szolgál példányértékkel. A széljegyzetbővítménnyel együtt használják, a környezetjelölője pedig a dtmi:dtdl:extension:overriding;1.

Ez a bővítmény tartalmazza a Override kiegészítő típust, amely hozzáadható egy DTDL tulajdonsághoz, amely szintén együtt van begépelve ValueAnnotation (a széljegyzetbővítményből). A Override típus egy mezőt ad hozzá az elemhez, overridesamely lehetővé teszi, hogy a jegyzetelt elem egyik mezőjét felülbírálja az aktuális elem értéke.

További részletekért és példákért tekintse meg a bővítmény felülbírálását a DTDL v3 nyelvi leírásában.

QuantitativeTypes bővítmény

A QuantitativeTypes bővítmény a szemantikai típusok, egységtípusok és egységek engedélyezésére szolgál egy DTDL v3-modellben. A környezetjelölője a .dtmi:dtdl:extension:quantitativeTypes;1

Ez a bővítmény számos szemantikai típus használatát teszi lehetővé kiegészítő típusokként, amelyek hozzáadhatók CommandRequesthez, mezőhöz, MapValue-hoz vagy egy tulajdonsághoz a DTDL v3-ban. A szemantikai típusok egy mezőt adnak hozzá az elemhez, unitamely a szemantikai típusnak megfelelő érvényes egységet fogad el.

A bővítménysel kapcsolatos további részletekért, beleértve a példákat és a támogatott szemantikai típusok és egységek teljes listáját, tekintse meg a QuantitativeTypes bővítményt a DTDL v3 nyelvi leírásában.

Szolgáltatásspecifikus DTDL-megjegyzések

A DTDL-t használó szolgáltatások nem implementálják pontosan ugyanazokat a DTDL-funkciókat. Vannak olyan DTDL-funkciók, amelyeket az Azure Digital Twins jelenleg nem támogat, például:

  • DTDL-parancsok
  • Tulajdonságok writable vagy kapcsolatok attribútuma. Bár ez az attribútum DTDL-specifikációk szerint állítható be, az Azure Digital Twins nem használja az értéket. Ehelyett ezeket az attribútumokat mindig írhatóként kezelik azok a külső ügyfelek, amelyek általános írási engedélyekkel rendelkeznek az Azure Digital Twins szolgáltatáshoz.
  • A minMultiplicity kapcsolatok tulajdonságai és maxMultiplicity tulajdonságai. Bár ezek az attribútumok DTDL-specifikációk szerint állíthatók be, az Azure Digital Twins nem kényszeríti ki az értékeket.

Ahhoz, hogy egy DTDL-modell kompatibilis legyen az Azure Digital Twins szolgáltatással, az alábbi követelményeknek is meg kell felelnie:

  • A modell összes legfelső szintű DTDL-elemének típusnak Interfacekell lennie. Ennek a követelménynek az az oka, hogy az Azure Digital Twins modell API-k olyan JSON-objektumokat fogadhatnak, amelyek interfészt vagy interfésztömböt képviselnek. Ennek eredményeképpen a legfelső szinten nem engedélyezett más DTDL-elemtípus.
  • Az Azure Digital Twinshez készült DTDL nem definiálhat parancsokat.
  • Az Azure Digital Twins csak egyetlen szintű összetevők beágyazását teszi lehetővé, ami azt jelenti, hogy az összetevőként használt interfészek nem tartalmazhatnak összetevőket.
  • Az illesztők más DTDL-adaptereken belül nem definiálhatók beágyazottan; ezeket külön legfelső szintű entitásként kell definiálni saját azonosítójukkal. Ezután, amikor egy másik interfész összetevőként vagy örökléssel szeretné felvenni ezt az interfészt, hivatkozhat az azonosítójára.

Modellezési eszközök és ajánlott eljárások

Ez a szakasz a modellezés további szempontjait és javaslatait ismerteti.

Meglévő iparági szabványú ontologikák használata

Az ontológia olyan modellek készlete, amelyek átfogóan leírják egy adott tartományt, például a gyártást, az épületszerkezeteket, az IoT-rendszereket, az intelligens városokat, az energiahálózatokat, a webes tartalmakat stb.

Ha a megoldás egy olyan iparághoz tartozik, amely bármilyen modellezési szabványt használ, fontolja meg, hogy egy már meglévő, az iparág számára tervezett modellkészlettel kezdje ahelyett, hogy a modelleket az alapoktól tervezze. A Microsoft tartományi szakértőkkel együttműködve DTDL-modelleket hozott létre az iparági szabványok alapján, hogy a lehető legkisebbre csökkentse az újragondolást, és ösztönözze a konzisztenciát és az egyszerűséget az iparági megoldásokban. Ezekről az ontológiákról bővebben is olvashat, többek között arról, hogyan használhatók, és milyen ontológiák érhetők el most a Mi az ontológia? című témakörben.

A lekérdezések következményeinek mérlegelése

A környezet entitásait tükröző modellek tervezésekor hasznos lehet előretekinteni, és figyelembe venni a tervezés lekérdezési következményeit. Érdemes lehet olyan tulajdonságokat tervezni, amelyek elkerülik a gráfbejárásból származó nagy eredményhalmazokat. Olyan kapcsolatokat is modellezhet, amelyeket egyetlen lekérdezésben egyszintű kapcsolatokként kell megválaszolni.

Modellek érvényesítése

A modell létrehozása után ajánlott offline állapotban ellenőrizni a modelleket, mielőtt feltöltené őket az Azure Digital Twins-példányba.

A modellek ellenőrzéséhez .NET ügyféloldali DTDL-elemzési kódtárat biztosít a NuGet: DTDLParser. Az elemzési kódtárat közvetlenül a C#-kódban használhatja. Az elemző mintahasználatát a GitHub DTDLParserResolveSample szolgáltatásában is megtekintheti.

Modellek tömeges feltöltése és törlése

Miután befejezte a modellek létrehozását, kibővítését vagy kiválasztását, fel kell töltenie őket az Azure Digital Twins-példányba, hogy elérhetővé tegye őket a megoldásban való használatra.

Több modellt is feltölthet egyetlen API-hívásban az Import Jobs API használatával. Az API egyszerre akár az Azure Digital Twins-korlátot is elfogadhatja a példányokban lévő modellek számára, és szükség esetén automatikusan átrendezi a modelleket a közöttük lévő függőségek feloldásához. Az API-t használó részletes utasításokért és példákért tekintse meg a modellek tömeges importálására vonatkozó utasításokat.

Az Import Jobs API alternatívája a Modellfeltöltő minta, amely az egyes modell API-k használatával egyszerre több modellfájlt tölt fel. A minta automatikus átrendezést is implementál a modellfüggőségek feloldásához. Jelenleg csak a DTDL 2-es verziójával működik.

Ha egy Azure Digital Twins-példány összes modelljét egyszerre kell törölnie, használhatja a Modelltörlő mintát. Ez egy rekurzív logikát tartalmazó projekt, amely a törlési folyamaton keresztül kezeli a modellfüggőségeket. Jelenleg csak a DTDL 2-es verziójával működik.

Ha az összes ikerpéldány és kapcsolat mellett az összes modell törlésével szeretné törölni a példány adatait, használhatja a Feladatok törlése API-t.

Modellek vizualizációja

Miután feltöltött modelleket az Azure Digital Twins-példányba, az Azure Digital Twins Explorerrel megtekintheti őket. Az Explorer tartalmazza a példány összes modelljének listáját, valamint egy modellgráfot , amely bemutatja, hogyan kapcsolódnak egymáshoz, beleértve az öröklést és a modellkapcsolatokat is.

Feljegyzés

Az Azure Digital Twins Explorer jelenleg teljes mértékben támogatja a DTDL v2-modelleket, és támogatja a DTDL v3-modellek korlátozott funkcióit. Az Azure Digital Twins Explorerben a DTDL v3-modellek megtekinthetők a Modellek panelen, a DTDL v3-modellekkel létrehozott ikerpéldányok pedig megtekinthetők és szerkeszthetők (beleértve a tömbtulajdonságokkal rendelkezőket is). A DTDL v3-modellek azonban nem jelennek meg a Model Graph panelen, és nem importálhatók az Azure Digital Twins Explorerrel. Ha DTDL v3-modelleket szeretne importálni a példányba, használjon egy másik fejlesztői felületet, például az API-kat és az SDK-kat vagy az Azure CLI-t.

Íme egy példa a modellgráfok megjelenésére:

Screenshot of Azure Digital Twins Explorer. The Model Graph panel is highlighted.

Az Azure Digital Twins Explorer modellélményével kapcsolatos további információkért tekintse meg a modellek és a Model Graph felfedezése című témakört.

Következő lépések