Dijital ikizlere etiket ekleme
Bu makalede, modellere ve dijital ikizlere farklı etiket türlerinin nasıl ekleneceği ve etiketleri kullanarak nasıl sorgu yapılacağı açıklanmaktadır.
Dijital ikizlerinizi daha fazla tanımlamak ve kategorilere ayırmak için etiket kavramını kullanabilirsiniz. Özellikle kullanıcılar, Azure Digital Twins örneklerinde Haystack Etiketleri gibi mevcut sistemlerden etiketleri çoğaltmak isteyebilir.
Bu belgede, dijital ikizlerde etiket uygulamak için kullanılabilecek desenler açıklanmaktadır.
Etiketler ilk olarak modele bir dijital ikiz tanımlayan özellikler olarak eklenir. Bu özellik daha sonra modele göre oluşturulduğunda ikizde ayarlanır. Bundan sonra etiketler, ikizlerinizi tanımlamak ve filtrelemek için sorgularda kullanılabilir.
İşaretçi etiketleri
İşaretleyici etiketi, dijital ikizleri işaretlemek veya kategorilere ayırmak için kullanılan "mavi" veya "kırmızı" gibi basit bir dizedir. Bu dize etiketin adıdır ve işaretçi etiketleri anlamlı bir değere sahip değildir; etiket yalnızca varlığı (veya yokluğu) nedeniyle önemlidir.
Modele işaretleyici etiketleri ekleme
İşaretçi etiketleri ile DTDL Eşlemesi boolean
string
olarak modellenir. Önemli olan tek şey etiketin varlığı olduğundan boole mapValue
değeri yoksayılır.
Bir özellik olarak işaretçi etiketi uygulayan ikiz modelden bir alıntı aşağıdadır:
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "boolean"
}
}
},
Dijital ikizlere işaretçi etiketleri ekleme
tags
Özellik bir dijital ikizin modelinin parçası olduktan sonra, bu özelliğin değerini ayarlayarak dijital ikizde işaretleyici etiketini ayarlayabilirsiniz.
.NET SDK'sını kullanarak bir ikiz için işaretleyici tags
ayarlamaya ilişkin bir kod örneği aşağıda verilmişti:
IDictionary<string, bool> tags = new Dictionary<string, bool>
{
{ "oceanview", true },
{ "VIP", true }
};
var twin = new BasicDigitalTwin
{
Metadata = { ModelId = "dtmi:example:Room;1" },
Contents =
{
{ "Temperature", 75 },
{ "tags", tags },
},
};
await client.CreateOrReplaceDigitalTwinAsync<BasicDigitalTwin>("myTwinID", twin);
Yukarıdaki örneğe göre etiket özelliklerine sahip bir ikiz oluşturduktan sonra ikiz şöyle görünür:
{
"$dtId": "myTwinID",
"$etag": "W/\"e7429259-6833-46b4-b443-200a77a468c2\"",
"$metadata": {
"$model": "dtmi:example:Room;1",
"Temperature": {
"lastUpdateTime": "2021-08-03T14:24:42.0850614Z"
},
"tags": {
"lastUpdateTime": "2021-08-03T14:24:42.0850614Z"
}
},
"Temperature": 75,
"tags": {
"VIP": true,
"oceanview": true
}
}
İşaretçi etiketleri olan sorgu
Etiketler dijital ikizlere eklendikten sonra, sorgulardaki ikizleri filtrelemek için kullanılabilir.
"Kırmızı" olarak etiketlenmiş tüm ikizleri almak için bir sorgu aşağıda verilmiştir:
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
Daha karmaşık sorgular için etiketleri de birleştirebilirsiniz. Yuvarlak olan ve kırmızı olmayan tüm ikizleri almak için bir sorgu aşağıdadır:
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND IS_DEFINED(tags.round)
Değer etiketleri
Değer etiketi, her etikete veya "color": "red"
gibi "color": "blue"
bir değer vermek için kullanılan bir anahtar-değer çiftidir. Bir değer etiketi oluşturulduktan sonra, etiketin değeri yoksayılarak işaretleyici etiketi olarak da kullanılabilir.
Modele değer etiketleri ekleme
Değer etiketleri ile DTDL Eşlemesi string
string
olarak modellenir. hem hem mapKey
de önemli mapValue
.
Özellik olarak bir değer etiketi uygulayan ikiz modelinden bir alıntı aşağıdadır:
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "string"
}
}
}
Dijital ikizlere değer etiketleri ekleme
İşaretçi etiketlerinde olduğu gibi, modelden bu tags
özelliğin değerini ayarlayarak dijital ikizde değer etiketini ayarlayabilirsiniz. Bir değer etiketini işaretçi etiketi olarak kullanmak için, alanı boş dize değerine (""
) ayarlayabilirsiniztagValue
.
Aşağıda, boyutlarını temsil eden değer etiketlerine sahip iki ikizin JSON gövdeleri yer almaktadır. Örnekteki ikizler de işaretleyici etiketleri olarak kullanılan "kırmızı" veya "mor" için değer etiketlerine sahiptir.
Boyut olarak büyük bir değer etiketi ve "kırmızı" işaretçi etiketiyle örnek İkiz1:
{
"$dtId": "Twin1",
"$etag": "W/\"d3997593-cc5f-4d8a-8683-957becc2bcdd\"",
"$metadata": {
"$model": "dtmi:example:ValueTags;1",
"tags": {
"lastUpdateTime": "2021-08-03T14:43:02.3150852Z"
}
},
"tags": {
"red": "",
"size": "large"
}
}
Küçük boyut için bir değer etiketi ve "mor" işaretçi etiketi ile Örnek İkiz2:
{
"$dtId": "Twin2",
"$etag": "W/\"e215e586-b14a-4234-8ddb-be69ebfef878\"",
"$metadata": {
"$model": "dtmi:example:ValueTags;1",
"tags": {
"lastUpdateTime": "2021-08-03T14:43:53.1517123Z"
}
},
"tags": {
"purple": "",
"size": "small"
}
}
Değer etiketleriyle sorgulama
İşaretçi etiketlerinde olduğu gibi, sorgulardaki ikizleri filtrelemek için değer etiketlerini kullanabilirsiniz. Değer etiketlerini ve işaretçi etiketlerini birlikte de kullanabilirsiniz.
Yukarıdaki örnekte işaretçi red
etiketi olarak kullanılmaktadır. Bunun "kırmızı" olarak etiketlenmiş tüm ikizleri almak için bir sorgu olduğunu unutmayın:
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
Küçük (değer etiketi) ve kırmızı olmayan tüm varlıkları almak için bir sorgu aşağıdadır:
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND tags.size = 'small'
Sonraki adımlar
Dijital ikiz modellerini tasarlama ve yönetme hakkında daha fazla bilgi edinin:
İkiz grafını sorgulama hakkında daha fazla bilgi edinin: