İkiz modelleri ve bunları Azure Digital Twins'de tanımlama hakkında bilgi edinin

Azure Digital Twins'in temel özelliklerinden biri, kendi kelime dağarcığınızı tanımlayıp işletmenizin kendi tanımlı terimlerinde ikiz grafınızı oluşturabilmektir. Bu özellik, kullanıcı tarafından sağlanan modeller aracılığıyla sağlanır. Modelleri dünyanızın bir açıklamasında isim olarak düşünebilirsiniz. Azure Digital Twins modelleri JSON-LD tabanlı Dijital İkiz Tanım Dili 'nde (DTDL) temsil edilir.

Model, nesne odaklı programlama dilindeki bir sınıfa benzer ve gerçek iş ortamınızda belirli bir kavram için veri şekli tanımlar. Modellerin adları (Room veya TemperatureSensor gibi) vardır ve ortamınızdaki bu tür bir varlığın ne yaptığını açıklayan özellikler, bileşenler ve ilişkiler gibi öğeler içerir. Daha sonra, bu tür açıklamaya uyan belirli varlıkları temsil eden dijital ikizler oluşturmak için bu modelleri kullanacaksınız.

Modeller için Dijital İkiz Tanım Dili (DTDL)

Azure Digital Twins modelleri Digital Twins Tanım Dili (DTDL) kullanılarak tanımlanır.

DTDL v3 için tam dil açıklamasını GitHub'da görüntüleyebilirsiniz: DTDL Sürüm 3 Dil Açıklaması. Bu sayfa, kendi DTDL modellerinizi yazmaya başlamanıza yardımcı olacak DTDL başvuru ayrıntılarını ve örneklerini içerir.

JSON-LD tabanlı bir dil olan DTDL, programlama dilinden bağımsız olarak çalışır. DTDL, Azure Digital Twins'e özel değildir. Ayrıca IoT Tak Çalıştır gibi diğer IoT hizmetlerindeki cihaz verilerini göstermek için de kullanılır.

Bu makalenin geri kalanında, dilin Azure Digital Twins'de nasıl kullanıldığı özetlenir.

Desteklenen DTDL sürümleri

Azure Digital Twins, DTDL 2 ve 3 sürümlerini destekler (belgelerde sırasıyla v2 ve v3 olarak kısaltılmıştır). V3, Azure Digital Twins'de aşağıdakiler gibi genişletilmiş özelliklerine göre modelleme için önerilen seçenektir:

Bu özelliklerin belgelerde ele alındığı durumlarda, bunlara yalnızca DTDL v3'te kullanılabildiklerini belirten bir not eşlik eder. DTDL v2 ile v3 arasındaki farkların tam listesi için bkz . DTDL v3 Dil Açıklaması: Sürüm 2'den Yapılan Değişiklikler.

Azure Digital Twins, aynı örnekte v2 ve v3 modellerinin bir karışımını kullanmayı da destekler. Her iki sürümün modellerini birlikte kullanırken aşağıdaki kısıtlamaları göz önünde bulundurun:

  • Bir v2 arabirimi v3 arabirimini genişletemez veya şeması v3 arabirimine sahip bir bileşene sahip olamaz.
  • Buna karşılık, bir v3 arabirimi v2 arabirimini genişletebilir ve v3 arabiriminin şeması v2 arabirimine sahip bir bileşeni olabilir .
  • İlişkiler , v2 model kaynağından v3 model hedefine veya v3 model kaynağından v2 model hedefine kadar her iki yönde de işaret edebilir.

Ayrıca mevcut v2 modellerini v3'e de geçirebilirsiniz. Bunun nasıl yapılacağını açıklayan yönergeler için bkz . v2 modellerini v3'e dönüştürme.

Not

Azure Digital Twins Gezgini şu anda DTDL v2 modellerini tam olarak destekler ve DTDL v3 modelleri için sınırlı işlevselliği destekler. Azure Digital Twins Gezgini'nde DTDL v3 modelleri Modeller panelinde görüntülenebilir ve DTDL v3 modelleri ile oluşturulan ikizler görüntülenebilir ve düzenlenebilir (dizi özellikleri olanlar dahil). Ancak DTDL v3 modelleri Model Grafı panelinde gösterilmez ve Azure Digital Twins Gezgini kullanılarak içeri aktarılamaz . DTDL v3 modellerini örneğinize aktarmak için API'ler ve SDK'lar veya Azure CLI gibi başka bir geliştirici arabirimi kullanın.

Modele genel bakış

İkiz türündeki modeller herhangi bir metin düzenleyicisinde yazılabilir. DTDL dili JSON söz dizimini izler, bu nedenle .json uzantılı modelleri depolamanız gerekir. JSON uzantısını kullanmak birçok programlama metin düzenleyicisinin DTDL belgeleriniz için temel söz dizimi denetimi ve vurgulama sağlamasına olanak tanır. Visual Studio Code için kullanılabilen bir DTDL uzantısı da vardır.

Model arabirimindeki alanlar şunlardır:

Alan Açıklama
@id Model için biçiminde dtmi:<domain>:<unique-model-identifier>;<model-version-number>bir Dijital İkiz Model Tanımlayıcısı (DTMI). DTDL v3'te sürüm numarası atlanabilir veya iki parçalı (<major>.<minor>) sürüm numarası olarak yapılandırılabilir.
@type Açıklanan bilgi türünü tanımlar. Arabirim için türü şeklindedir Interface.
@context JSON belgesinin bağlamını ayarlar. Modeller DTDL v2 veya dtmi:dtdl:context;3 DTDL v3 için kullanılmalıdırdtmi:dtdl:context;2. DTDL v3 modelleri bu alandaki ek özellik uzantılarını da adlandırabilir.
displayName [isteğe bağlı] Model için kolay bir ad tanımlama seçeneği sunar. Bu alanı kullanmazsanız, model tam DTMI değerini kullanır.
contents Kalan tüm arabirim verileri, öznitelik tanımları dizisi olarak buraya yerleştirilir. Her öznitelik, tanımladığı arabirim bilgilerinin türünü tanımlamak için bir @type (Property, Relationshipveya Component) ve ardından gerçek özniteliği tanımlayan bir özellik kümesi sağlamalıdır. Sonraki bölümde model öznitelikleri ayrıntılı olarak açıklanmaktadır.

Aşağıda temel bir DTDL modeli örneği verilmiştır. Bu model, kimlik için bir özelliği olan bir Giriş'i açıklar. Ev modeli, bir Ev ikizinin belirli Floor ikizlerine bağlı olduğunu belirtmek için kullanılabilen Floor modeliyle bir ilişki de tanımlar.

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

Model öznitelikleri

Bir model hakkındaki ana bilgiler, model arabiriminin contents bölümünde tanımlanan öznitelikleri tarafından verilir.

Azure Digital Twins'de desteklenen DTDL'de kullanılabilen öznitelikler aşağıdadır. Azure Digital Twins için kullanılan bir DTDL model arabirimi aşağıdaki alanların her birini sıfır, bir veya daha fazla içerebilir:

  • Özellik - Özellikler, bir varlığın durumunu temsil eden veri alanlarıdır (nesne odaklı programlama dillerindeki özellikler gibi). Özellikler, yedekleme depolama alanına sahiptir ve her zaman okunabilir. Daha fazla bilgi için aşağıdaki Özellikler'e bakın.

  • İlişki - İlişkiler, bir dijital ikizin diğer dijital ikizlerle nasıl ilişkilendirilebileceğini temsil etmesine olanak verir. İlişkiler ("zemin oda içerir"), ("hvac soğutma odası"), cools ("kompresör kullanıcıya faturalandırılır") isBilledTo gibi contains farklı anlamsal anlamları temsil edebilir. İlişkiler, çözümün birbiriyle ilişkili varlıkların grafiğini sağlamasına olanak sağlar. İlişkiler kendi özelliklerine de sahip olabilir. Daha fazla bilgi için aşağıdaki İlişkiler bölümüne bakın.

  • Bileşen - Bileşenler, isterseniz model arabiriminizi diğer arabirimlerin bir derlemesi olarak oluşturmanıza olanak sağlar. Bir bileşene örnek olarak telefon için model tanımlamada kullanılan bir ön Kamera arabirimi (ve arka Kamera başka bir bileşen arabirimi) gösteriliyor. önce front Kamera için kendi modeliymiş gibi bir arabirim tanımlayın ve ardından Telefon tanımlarken bu arabirime başvurun.

    Çözümünüzün ayrılmaz bir parçası olan ancak ayrı bir kimliğe ihtiyaç duymayan ve ikiz grafiğinde bağımsız olarak oluşturulması, silinmesi veya yeniden düzenlenmesi gerekmeyen bir şeyi açıklamak için bir bileşen kullanın. Varlıkların ikiz grafında bağımsız varlıklarının olmasını istiyorsanız, bunları ilişkilere bağlı farklı modellerin ayrı dijital ikizleri olarak temsil edin.

    İpucu

    Bileşenler, bir model arabirimindeki ilgili özellik kümelerini gruplandırmak için kuruluş için de kullanılabilir. Bu durumda, her bileşeni arabirimin içinde bir ad alanı veya "klasör" olarak düşünebilirsiniz.

    Daha fazla bilgi için aşağıdaki Bileşenler bölümüne bakın.

DTDL v3 Dil Açıklaması, Komutları ve Telemetriyi de tanımlar, ancak bunların hiçbiri Azure Digital Twins'de kullanılmaz. Komutlar desteklenmez ve Telemetri (model tanımlarında izin verilse de) Azure Digital Twins modellemesinde benzersiz kullanım örneği içermez. DTDL telemetrisi kullanmak yerine, ikiz durumu bilgilerini depolamak için DTDL özelliklerini kullanmanız gerekir.

Not

Gelen cihaz verilerini depolamak için DTDL modellerinizde Telemetri alanlarını tanımlamanıza gerek olmasa da, Azure Digital Twins SendTelemetry API'sini kullanarak olayları telemetri olarak yayabilir. Bu, diğer ikizler üzerinde eylem yapmak veya aşağı akış hizmetlerini tetikleme amacıyla bir olay işleyicisi tarafından alınabilen bir Dijital İkiz Telemetri İletisi olayını tetikler.

Özellikler

Bu bölüm, DTDL modellerindeki özellikler hakkında daha ayrıntılı bilgi sunar.

Bir özelliğin parçası olarak görünebilecek alanlar hakkında kapsamlı bilgi için bkz . DTDL v3 Dil Açıklaması'nda Özellik.

Not

writable Özellikler için DTDL özniteliği şu anda Azure Digital Twins'de desteklenmiyor. Modele eklenebilir, ancak Azure Digital Twins bunu zorlamaz. Daha fazla bilgi için bkz . Hizmete özgü DTDL notları.

Şema

DTDL'ye göre, özellik özniteliklerinin şeması standart bir ilkel tür (integer, double, stringve ) ve booleanve gibi durationdateTime diğer türler olabilir.

İlkel türlere ek olarak, özellik alanları şu karmaşık türlere sahip olabilir:

  • Object
  • Map
  • Enum
  • Array, yalnızca DTDL v3'te. Array özellikler türü DTDL v2'de desteklenmez.

Bunlar, birimlerle değerlere açıklama eklemenizi sağlayan anlamsal türler de olabilir. DTDL v2'de anlam türleri yerel olarak desteklenir; DTDL v3'te bunları bir özellik uzantısıyla ekleyebilirsiniz.

Temel özellik örneği

Aşağıda, DTDL modelinde bir özelliğin temel bir örneği verilmiştir. Bu örnekte, bir Home'un ID özelliği gösterilmektedir.

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

Karmaşık Nesne türü örneği

Özellikler, bir Object tür de dahil olmak üzere karmaşık türlerden oluşabilir.

Aşağıdaki örnekte, Adresi için bir özelliği olan Giriş modelinin başka bir sürümü gösterilmektedir. address sokak, şehir, eyalet ve zip için kendi alanları olan bir nesnedir.

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

DTDL v2 anlam türü örneği

Anlam türleri bir değeri bir birimle ifade etmek içindir. Azure Digital Twins özellikleri, DTDL tarafından desteklenen anlam türlerinden herhangi birini kullanabilir.

DTDL v2'de anlam türleri yerel olarak desteklenir. DTDL v2'deki anlam türleri hakkında daha fazla bilgi için bkz . DTDL v2 Dil Açıklaması'nda anlam türleri. DTDL v3'teki anlam türleri hakkında bilgi edinmek için bkz . QuantitativeTypes DTDL v3 özellik uzantısı.

Aşağıdaki örnekte Nem ve Sıcaklık için semantik tür özelliklerine sahip bir DTDL v2 Algılayıcı modeli gösterilmektedir.

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

Önemli

"Özellik" , dizinin ilk öğesi @type ve ardından semantik tür olmalıdır. Aksi takdirde, alan Azure Digital Twins Gezgini'nde görünmeyebilir.

İlişki

Bu bölüm, DTDL modellerindeki ilişkiler hakkında daha ayrıntılı bilgi sunar.

bir ilişkinin parçası olarak görünebilecek alanların kapsamlı bir listesi için bkz . DTDL v3 Dil Açıklamasında İlişki.

Not

writableİlişkiler için , minMultiplicityve maxMultiplicity DTDL öznitelikleri şu anda Azure Digital Twins'de desteklenmemektedir. Bunlar modele eklenebilir, ancak Azure Digital Twins bunları zorlamaz. Daha fazla bilgi için bkz . Hizmete özgü DTDL notları.

Temel ilişki örneği

Aşağıda, DTDL modelinde bir ilişkinin temel bir örneği verilmiştır. Bu örnekte, Giriş modelinde bir Floor modeline bağlanmasına izin veren bir ilişki gösterilmektedir.

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

Not

İlişkiler için isteğe @id bağlı bir alandır. Sağlanmazsa @id , dijital ikiz arabirim işlemcisi bir tane atar.

Hedeflenen ve hedeflenmeyen ilişkiler

İlişkiler hedefle veya hedef olmadan tanımlanabilir. Hedef, ilişkinin ulaşabileceği ikiz türlerini belirtir. Örneğin, Ev modelinin yalnızca Floor ikizleri olan ikizlerle ilişkisi olabileceğini belirtmek için bir rel_has_floors hedef ekleyebilirsiniz.

Bazen, ilişkinin birçok farklı ikiz türüne bağlanabilmesi için belirli bir hedefi olmayan bir ilişki tanımlamak isteyebilirsiniz.

Aşağıda, hedefi olmayan bir DTDL modelinde ilişki örneği verilmiştır. Bu örnekte ilişki, bir Odanın hangi algılayıcılara sahip olabileceğini tanımlamaya yöneliktir ve ilişki herhangi bir türe bağlanabilir.

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

İlişkilerin özellikleri

DTDL ayrıca ilişkilerin kendi özelliklerine sahip olmasını sağlar. Bir DTDL modeli içinde ilişki tanımladığınızda, ilişkinin kendi properties alanı olabilir ve burada ilişkiye özgü durumu tanımlamak için özel özellikler tanımlayabilirsiniz.

Aşağıdaki örnekte, ilişkinin ilgili Katın en son ne zaman kaplandığını temsil eden bir özelliğe sahip olduğu rel_has_floors Giriş modelinin başka bir sürümü gösterilmektedir.

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

Bileşenler

Bu bölüm, DTDL modellerindeki bileşenler hakkında daha ayrıntılı bilgi sağlar.

Bir bileşenin parçası olarak görünebilecek alanların kapsamlı bir listesi için bkz . DTDL v3 Dil Açıklaması'nda Bileşen.

Temel bileşen örneği

Aşağıda, DTDL modelinde bir bileşenin temel bir örneği verilmiştır. Bu örnekte termostat modelini bileşen olarak kullanan bir Oda modeli gösterilmektedir.

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

Bu çözümdeki diğer modeller de bir termostat içermesi gerekiyorsa, Room'un yaptığı gibi kendi tanımlarındaki bir bileşenle aynı termostat modeline başvurabilir.

Önemli

Bileşen başvurusunun bulunabilmesi için bileşen arabiriminin (yukarıdaki örnekte termostat) onu kullanan tüm arabirimlerle aynı dizide tanımlanması gerekir (Yukarıdaki örnekte Oda).

Model devralma

Bazen, bir modeli daha fazla özelleştirmek isteyebilirsiniz. Örneğin, genel bir model Oda ve özel çeşitlemeler ConferenceRoom ve Gym olması yararlı olabilir. DTDL, özelleştirmeyi ifade etmek için devralmayı destekler. Arabirimler bir veya daha fazla arabirimden devralabilir. Modele bir extends alan ekleyerek bunu yapabilirsiniz.

extends bölümü bir arabirim adı veya arabirim adları dizisidir (genişleten arabirimin birden çok üst modelden devralmasına izin verir). Tek bir üst, birden çok genişletme arabirimi için temel model görevi görebilir.

Not

DTDL v2'de her extends birinin en fazla iki arabirimi listelenebilir. DTDL v3'te, bir için anlık değerlerin sayısında bir extendssınır yoktur.

Hem DTDL v2 hem de v3'te hiyerarşinin extends toplam derinlik sınırı 10'dur.

Aşağıdaki örnek, önceki DTDL örneğindeki Giriş modelini daha büyük bir "çekirdek" modelin alt türü olarak yeniden hayal eder. Önce üst model (Core) tanımlanır ve ardından alt model (Home) kullanılarak extendsbu model üzerinde oluşturulur.

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

Bu durumda Core, Giriş'e bir kimlik ve ad ekler. Diğer modeller de bu özellikleri almak için Core modelini genişletebilir. Aynı üst arabirimi genişleten bir Oda modeli aşağıdadır:

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

Devralma uygulandıktan sonra, genişleten arabirim devralma zincirinin tamamından tüm özellikleri kullanıma sunar.

Genişleten arabirim, üst arabirim tanımlarının hiçbirini değiştiremez; yalnızca bunlara eklenebilir. Ayrıca, üst arabirimlerinden herhangi birinde önceden tanımlanmış bir özelliği yeniden tanımlayamaz (özellikler aynı olacak şekilde tanımlansa bile). Örneğin, bir üst arabirim bir double özelliği masstanımlıyorsa, genişleten arabirim aynı zamanda bir doubleolsa bile bildirimini massiçeremez.

DTDL v3 özellik uzantıları

DTDL v3, daha zengin modeller yazmak için kullanabileceğiniz ek meta model sınıflarını tanımlayan dil uzantılarını etkinleştirir. Bu bölümde, DTDL v3 modellerinize çekirdek olmayan özellikler eklemek için kullanabileceğiniz özellik uzantısı sınıfları açıklanmaktadır.

Her özellik uzantısı, benzersiz bir Dijital İkiz Model Tanımlayıcısı (DTMI) değeri olan bağlam tanımlayıcısıyla tanımlanır. Modelde özellik uzantısını etkinleştirmek için uzantının bağlam tanımlayıcısını modelin @context alanına ekleyin (genel DTDL bağlam tanımlayıcısının dtmi:dtdl:context;3yanı sıra). Aynı modele birden çok özellik uzantısı ekleyebilirsiniz.

Bu alanın özellik uzantılarıyla nasıl @context görünebileceğine dair bir örnek aşağıda verilmiştir. Aşağıdaki alıntı hem QuantitativeTypes uzantısını hem de Ek Açıklama uzantısınıkullanan bir modelden alınıyor.

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

Bir modele özellik uzantısı ekledikten sonra, bu uzantının model içindeki ek türlerine erişebilirsiniz. Bir DTDL öğesinin alanına ek özellikler sağlamak için ek türler @type ekleyebilirsiniz. adjunct türü, öğesine ek özellikler ekleyebilir.

Örneğin, Ek Açıklama uzantısını kullanan bir modelden bir alıntı aşağıda verilmişti. Bu uzantı, aşağıdaki örnekte bir özellik öğesine eklenen adlı ValueAnnotationbir adjunct türüne sahiptir. Bu adjunct türünü özellik öğesine eklemek, öğenin bu öğe tarafından ek açıklama eklenen başka bir özelliği göstermek için kullanılan ek annotates bir alana sahip olmasını sağlar.

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

Bu bölümün geri kalanında Ek Açıklama uzantısı ve diğer DTDL v3 özellik uzantıları daha ayrıntılı olarak açıklanmaktadır.

Ek açıklama uzantısı

Ek Açıklama uzantısı, DTDL v3 modelindeki bir özellik öğesine özel meta veriler eklemek için kullanılır. Bağlam tanımlayıcısı şeklindedir dtmi:dtdl:extension:annotation;1.

Bu uzantı, DTDL özellik öğesine eklenebilen adjunct türünü içerir ValueAnnotation . türü ValueAnnotation öğesine annotatesbir alan ekler. Bu, geçerli öğe tarafından ek açıklama eklenen başka bir özelliği adlandırmanıza olanak tanır.

Bu uzantının diğer ayrıntıları ve örnekleri için bkz . DTDL v3 Dil Açıklaması'nda Ek Açıklama uzantısı.

Geçmişe ayırma uzantısı

Historization uzantısı, bir DTDL v3 modelindeki bir özelliği geçmişe dönüştürülmesi gereken bir şey olarak tanımlamak için kullanılır (değerlerin geçmiş sırasının ve değerlerin değiştiği zamanların kaydedilmesi gerektiği anlamına gelir). Bağlam tanımlayıcısı şeklindedir dtmi:dtdl:extension:historization;1.

Bu uzantı, hizmetin öğenin geçmiş değerlerini kalıcı hale getirmesi ve bunları sorgulama ve analiz için kullanılabilir hale getirmesi gerektiğini belirtmek için DTDL özellik öğesine ortak tür olarak eklenebilecek adjunct türünü içerir Historized . Historized adjunct türü öğeye alan eklemez.

Bu uzantının diğer ayrıntıları ve örnekleri için bkz . DTDL v3 Dil Açıklaması'ndaki Historization uzantısı.

Uzantı geçersiz kılınıyor

Geçersiz kılma uzantısı , DTDL V3 modelindeki bir özelliği örnek değeriyle geçersiz kılmak için kullanılır. Ek açıklama uzantısıyla birlikte kullanılır ve bağlam tanımlayıcısı olurdtmi:dtdl:extension:overriding;1.

Bu uzantı, aynı zamanda birlikte ValueAnnotation yazılan bir DTDL özelliğine (ek açıklama uzantısından) eklenebilen adjunct türünü içerirOverride. türü Override öğesine overridesbir alan ekler. Bu, geçerli öğenin değeri tarafından geçersiz kılınacak ek açıklamalı öğedeki bir alanı adlandırmanıza olanak tanır.

Bu uzantının diğer ayrıntıları ve örnekleri için bkz . DTDL v3 Dil Açıklaması'nda uzantıyı geçersiz kılma.

QuantitativeTypes uzantısı

QuantitativeTypes uzantısı, DTDL v3 modelinde anlamsal türleri, birim türlerini ve birimleri etkinleştirmek için kullanılır. Bağlam tanımlayıcısı şeklindedir dtmi:dtdl:extension:quantitativeTypes;1.

Bu uzantı, bir CommandRequest, Alan, MapValue veya DTDL v3'teki bir özelliğe eklenebilen birçok semantik türün adjunct türleri olarak kullanılmasını sağlar. Anlam türleri, öğesine, unitanlam türüne karşılık gelen geçerli bir birim kabul eden bir alan ekler.

Örnekler ve desteklenen semantik türlerin ve birimlerin tam listesi de dahil olmak üzere uzantı hakkında daha fazla ayrıntı için DTDL v3 Dil Açıklaması'ndaki QuantitativeTypes uzantısına bakın.

Hizmete özgü DTDL notları

DTDL kullanan tüm hizmetler DTDL'nin tam olarak aynı özelliklerini uygulamaz. Azure Digital Twins'in şu anda desteklemediği bazı DTDL özellikleri vardır:

  • DTDL komutları
  • writable Özellikler veya ilişkilerdeki öznitelik. Bu öznitelik DTDL belirtimlerine göre ayarlansa da, değer Azure Digital Twins tarafından kullanılmaz. Bunun yerine, bu öznitelikler her zaman Azure Digital Twins hizmetinde genel yazma izinlerine sahip dış istemciler tarafından yazılabilir olarak değerlendirilir.
  • minMultiplicity İlişkilerdeki ve maxMultiplicity özellikleri. Bu öznitelikler DTDL belirtimlerine göre ayarlansa da, değerler Azure Digital Twins tarafından zorlanmaz.

DTDL modelinin Azure Digital Twins ile uyumlu olması için şu gereksinimleri de karşılaması gerekir:

  • Modeldeki tüm üst düzey DTDL öğeleri türünde Interfaceolmalıdır. Bu gereksinimin nedeni, Azure Digital Twins model API'lerinin bir arabirimi veya arabirim dizisini temsil eden JSON nesnelerini alabilmesidir. Sonuç olarak, en üst düzeyde başka DTDL öğe türlerine izin verilmez.
  • Azure Digital Twins için DTDL hiçbir komut tanımlamamalıdır.
  • Azure Digital Twins yalnızca tek bir bileşen iç içe yerleştirme düzeyine izin verir, yani bileşen olarak kullanılan bir arabirimin kendisi herhangi bir bileşene sahip olamaz.
  • Arabirimler diğer DTDL arabirimleri içinde satır içinde tanımlanamaz; kendi kimliklerine sahip ayrı üst düzey varlıklar olarak tanımlanmalıdır. Daha sonra, başka bir arabirim bu arabirimi bir bileşen olarak veya devralma yoluyla eklemek istediğinde, kimliğine başvurabilir.

Modelleme araçları ve en iyi yöntemler

Bu bölümde modellemeyle ilgili dikkat edilmesi gereken ek noktalar ve öneriler açıklanmaktadır.

Mevcut endüstri standardı ontolojileri kullanma

Ontoloji, üretim, yapı yapıları, IoT sistemleri, akıllı şehirler, enerji şebekeleri, web içeriği ve daha fazlası gibi belirli bir alanı kapsamlı bir şekilde açıklayan bir model kümesidir.

Çözümünüz herhangi bir tür modelleme standardı kullanan belirli bir sektöre yönelikse, modellerinizi sıfırdan tasarlamak yerine sektörünüz için tasarlanmış önceden var olan bir model kümesiyle başlamayı göz önünde bulundurun. Microsoft, yeniden keşfi en aza indirmek ve endüstri çözümleri arasında tutarlılığı ve basitliği teşvik etmek amacıyla sektör standartlarına dayalı DTDL model onlogies oluşturmak için etki alanı uzmanlarıyla işbirliği yaptı. Bu ontolojiler hakkında nasıl kullanılacağı ve şu anda hangi ontolojilerin kullanılabilir olduğu dahil olmak üzere daha fazla bilgi için bkz. Ontoloji nedir?.

Sorgu etkilerini göz önünde bulundurun

Modelleri ortamınızdaki varlıkları yansıtacak şekilde tasarlarken, ileriye bakmak ve tasarımınızın sorgu etkilerini göz önünde bulundurmak yararlı olabilir. Özellikleri graf geçişinin büyük sonuç kümelerini önleyecek şekilde tasarlamak isteyebilirsiniz. Tek bir sorguda yanıtlanması gereken ilişkileri de tek düzeyli ilişkiler olarak modellemek isteyebilirsiniz.

Modelleri doğrulama

Model oluşturduktan sonra modellerinizi Azure Digital Twins örneğine yüklemeden önce çevrimdışı olarak doğrulamanız önerilir.

Modellerinizi doğrulamanıza yardımcı olmak için NuGet: DTDLParser üzerinde bir .NET istemci tarafı DTDL ayrıştırma kitaplığı sağlanır. Ayrıştırıcı kitaplığını doğrudan C# kodunuzda kullanabilirsiniz. Ayrıştırıcının örnek kullanımını GitHub'daki DTDLParserResolveSample'da da görüntüleyebilirsiniz.

Modelleri toplu olarak karşıya yükleme ve silme

Modellerinizi oluşturmayı, genişletmeyi veya seçmeyi tamamladıktan sonra, bunları çözümünüzde kullanılabilir hale getirmek için Azure Digital Twins örneğine yüklemeniz gerekir.

İşleri İçeri Aktar API'sini kullanarak tek bir API çağrısında birçok modeli karşıya yükleyebilirsiniz. API, bir örnekteki model sayısı için Azure Digital Twins sınırına kadar aynı anda kabul edebilir ve aralarındaki bağımlılıkları çözmek için gerekirse modelleri otomatik olarak yeniden sıralar. Bu API'yi kullanan ayrıntılı yönergeler ve örnekler için bkz . modeller için toplu içeri aktarma yönergeleri.

İşleri İçeri Aktar API'sinin alternatifi, aynı anda birden çok model dosyasını karşıya yüklemek için tek tek model API'lerini kullanan Model yükleyici örneğidir. Örnek ayrıca model bağımlılıklarını çözmek için otomatik yeniden sıralama uygular. Şu anda yalnızca DTDL'nin 2. sürümüyle çalışır.

Azure Digital Twins örneğindeki tüm modelleri aynı anda silmeniz gerekiyorsa Model Silici örneğini kullanabilirsiniz. Bu, silme işlemi aracılığıyla model bağımlılıklarını işlemek için özyinelemeli mantık içeren bir projedir. Şu anda yalnızca DTDL'nin 2. sürümüyle çalışır.

Veya tüm ikizler ve ilişkilerle birlikte tüm modelleri silerek bir örnekteki verileri temizlemek istiyorsanız, İşleri Sil API'sini kullanabilirsiniz.

Modelleri görselleştirme

Modelleri Azure Digital Twins örneğine yükledikten sonra, bunları görüntülemek için Azure Digital Twins Gezgini'ni kullanabilirsiniz. Gezgin, örnekteki tüm modellerin listesinin yanı sıra, devralma ve model ilişkileri de dahil olmak üzere birbirleriyle ilişkilerini gösteren bir model grafiği içerir.

Not

Azure Digital Twins Gezgini şu anda DTDL v2 modellerini tam olarak destekler ve DTDL v3 modelleri için sınırlı işlevselliği destekler. Azure Digital Twins Gezgini'nde DTDL v3 modelleri Modeller panelinde görüntülenebilir ve DTDL v3 modelleri ile oluşturulan ikizler görüntülenebilir ve düzenlenebilir (dizi özellikleri olanlar dahil). Ancak DTDL v3 modelleri Model Grafı panelinde gösterilmez ve Azure Digital Twins Gezgini kullanılarak içeri aktarılamaz . DTDL v3 modellerini örneğinize aktarmak için API'ler ve SDK'lar veya Azure CLI gibi başka bir geliştirici arabirimi kullanın.

Aşağıda model grafiğinin nasıl görünebileceğine bir örnek verilmişti:

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

Azure Digital Twins Gezgini'ndeki model deneyimi hakkında daha fazla bilgi için bkz . Modelleri ve Model Grafiğini keşfetme.

Sonraki adımlar