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: