Menambahkan tag ke kembar digital
Artikel ini menjelaskan cara menambahkan berbagai jenis tag ke model dan kembar digital, dan cara mengkueri menggunakan tag.
Anda dapat menggunakan konsep tag untuk mengidentifikasi dan mengkategorikan kembar digital Anda lebih lanjut. Secara khusus, pengguna mungkin ingin mereplikasi tag dari sistem yang ada, seperti Haystack Tags, dalam instans Azure Digital Twins mereka.
Dokumen ini menjelaskan pola yang dapat digunakan untuk mengimplementasikan tag pada kembar digital.
Tag pertama kali ditambahkan sebagai properti dalam model yang menjelaskan kembaran digital. Properti tersebut kemudian diatur pada kembar saat dibuat berdasarkan model. Setelah itu, tag dapat digunakan dalam kueri untuk mengidentifikasi dan memfilter kembar Anda.
Tag penanda
Tag penanda adalah string sederhana yang digunakan untuk menandai atau mengategorikan kembar digital, seperti "biru" atau "merah". String ini adalah nama tag, dan tag penanda tidak memiliki nilai yang berarti—tag signifikan hanya dengan kehadirannya (atau ketidakhadiran).
Menambahkan tag penanda ke model
Tag penanda dimodelkan sebagai Peta DTDL dari string
ke boolean
. Boolean mapValue
diabaikan, karena kehadiran tag adalah paling yang penting.
Berikut adalah kutipan dari model kembar yang mengimplementasikan tag penanda sebagai properti:
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "boolean"
}
}
},
Menambahkan tag penanda ke kembar digital
Setelah properti tags
menjadi bagian dari model kembar digital, Anda dapat mengatur tag penanda di kembar digital dengan mengatur nilai properti ini.
Berikut adalah contoh kode tentang cara mengatur penanda tags
untuk kembar menggunakan .NET SDK:
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);
Setelah Anda membuat kembar dengan properti tag sesuai dengan contoh di atas, kembar akan terlihat seperti ini:
{
"$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
}
}
Tip
Anda dapat melihat representasi JSON kembaran dengan mengkuerinya dengan CLI atau API.
Kueri dengan tag penanda
Setelah tag ditambahkan ke kembar digital, tag dapat digunakan untuk memfilter si kembar dalam kueri.
Berikut adalah kueri untuk mendapatkan semua kembar yang telah ditandai sebagai "merah":
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
Anda juga dapat menggabungkan tag untuk kueri yang lebih kompleks. Berikut adalah kueri untuk mendapatkan semua kembar yang bulat, dan bukan merah:
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND IS_DEFINED(tags.round)
Tag nilai
Tag nilai adalah pasangan nilai kunci yang digunakan untuk memberi setiap tag nilai, seperti "color": "blue"
atau "color": "red"
. Setelah tag nilai dibuat, tag juga dapat digunakan sebagai tag penanda dengan mengabaikan nilai tag.
Menambahkan tag nilai ke model
Tag nilai dimodelkan sebagai Peta DTDL dari string
ke string
. Baik mapKey
yang maupun mapValue
adalah signifikan.
Berikut adalah kutipan dari model kembar yang menerapkan tag nilai sebagai properti:
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "string"
}
}
}
Menambahkan tag nilai ke kembar digital
Seperti tag penanda, Anda dapat mengatur tag nilai dalam kembaran digital dengan mengatur nilai properti tags
ini dari model. Untuk menggunakan tag nilai sebagai tag penanda, Anda bisa mengatur bidang tagValue
ke nilai string kosong (""
).
Berikut adalah isi JSON dua kembaran yang memiliki tag nilai untuk mewakili ukuran mereka. Kembaran dalam contoh juga memiliki tag nilai untuk "merah" atau "ungu" yang digunakan sebagai tag penanda.
Contoh Twin1, dengan tag nilai untuk ukuran besar dan tag penanda "merah":
{
"$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"
}
}
Contoh Twin2, dengan tag nilai untuk ukuran kecil dan tag penanda "ungu":
{
"$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"
}
}
Kueri dengan tag nilai
Seperti tag penanda, Anda dapat menggunakan tag nilai untuk memfilter si kembar dalam kueri. Anda juga dapat menggunakan tag nilai dan tag penanda bersama-sama.
Dari contoh di atas, red
sedang digunakan sebagai tag penanda. Ingat bahwa ini adalah kueri untuk mendapatkan semua kembar yang telah ditandai sebagai "merah":
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
Berikut adalah kueri untuk mendapatkan semua entitas yang kecil (tag nilai), dan bukan merah:
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND tags.size = 'small'
Langkah berikutnya
Baca selengkapnya tentang merancang dan mengelola model kembar digital:
Baca selengkapnya tentang mengkueri grafik kembar: