İ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:
- DTMI sürüm gevşemesi
- Özellikler için dizi desteği
- Model devralma için artan sınırlar
-
Özellik uzantıları
- Özel arabirim şemalarını semantik türlerle süsleme özelliği (QuantitativeTypes uzantısıyla sağlanır)
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.
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 , Relationship veya 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
gibicontains
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 frontCamera arabirimi (ve backCamera'nın başka bir bileşen arabirimi) gösteriliyor. Öncelikle frontCamera için kendi modeliymiş gibi bir arabirim tanımlayın ve ardından Phone'ı 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 yayımlayabilir. 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.
Properties
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
, string
ve ) ve boolean
ve gibi duration
dateTime
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 , minMultiplicity
ve 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 extends
sı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 extends
bu 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",
"extends": "dtmi:com:adt:dtsample:core;1",
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 mass
tanımlıyorsa, genişleten arabirim aynı zamanda bir double
olsa bile bildirimini mass
iç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;3
yanı 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ı ValueAnnotation
bir 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 annotates
bir 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 overrides
bir 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, unit
anlam 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 vemaxMultiplicity
ö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
Interface
olmalı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.
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:
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
Endüstri standardı ontolojileri temel alan modeller oluşturma hakkında bilgi edinin: Ontoloji nedir?
API işlemleriyle modelleri yönetme hakkında ayrıntılı bilgi edinin: DTDL modellerini yönetme
Dijital ikizler oluşturmak için modellerin nasıl kullanıldığı hakkında bilgi edinin: Dijital ikizler ve ikiz grafı