Aracılığıyla paylaş


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 booleanstring 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
  }
}

Bahşiş

cli veya API'ler ile sorgulayarak bir ikizin JSON gösterimini görebilirsiniz.

İş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 stringstring 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: