Přidání značek do digitálních dvojčat

Tento článek popisuje, jak přidat různé typy značek do modelů a digitálních dvojčat a jak dotazovat pomocí značek.

Koncept značek můžete použít k další identifikaci a kategorizaci digitálních dvojčat. Konkrétně mohou uživatelé chtít replikovat značky z existujících systémů, jako jsou Haystack Tags, v rámci svých instancí Služby Azure Digital Twins.

Tento dokument popisuje vzory, které lze použít k implementaci značek v digitálních dvojčatech.

Značky se nejprve přidají jako vlastnosti v rámci modelu , který popisuje digitální dvojče. Tato vlastnost se pak nastaví na dvojčeti při jeho vytvoření na základě modelu. Potom můžete značky použít v dotazech k identifikaci a filtrování dvojčat.

Značky značek

Značka značky je jednoduchý řetězec, který slouží k označení nebo kategorizaci digitálního dvojčete, například "modrá" nebo "červená". Tento řetězec je název značky a značky značky nemají žádnou smysluplnou hodnotu – značka je významná jenom díky přítomnosti (nebo nepřítomnosti).

Přidání značek do modelu

Značky jsou modelovány jako mapa DTDL z string do boolean. Logická hodnota mapValue je ignorována, protože přítomnost značky je vše, co je důležité.

Tady je výňatek z modelu dvojčete, který implementuje značku značky jako vlastnost:

{
      "@type": "Property",
      "name": "tags",
      "schema": {
        "@type": "Map",
        "mapKey": {
          "name": "tagName",
          "schema": "string"
        },
        "mapValue": {
          "name": "tagValue",
          "schema": "boolean"
        }
      }
    },

Přidání značek do digitálních dvojčat

tags Jakmile je vlastnost součástí modelu digitálního dvojčete, můžete značku značky v digitálním dvojčeti nastavit nastavením hodnoty této vlastnosti.

Tady je příklad kódu, jak nastavit značku tags dvojčete pomocí sady .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);

Po vytvoření dvojčete s vlastnostmi značek podle výše uvedeného příkladu bude dvojče vypadat takto:

{
  "$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

Reprezentaci JSON dvojčete můžete zobrazit tak, že se na něj dotazujete pomocí rozhraní příkazového řádku nebo rozhraní API.

Dotaz se značkami

Po přidání značek do digitálních dvojčat je možné značky použít k filtrování dvojčat v dotazech.

Tady je dotaz, který získá všechna dvojčata označená jako "červená":

SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)

Značky můžete také kombinovat pro složitější dotazy. Tady je dotaz pro získání všech dvojčat, která jsou zaokrouhlená, a ne červená:

SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND IS_DEFINED(tags.round)

Značky hodnot

Značka hodnoty je pár klíč-hodnota, který slouží k poskytnutí hodnoty každé značky, například "color": "blue" nebo "color": "red". Jakmile je značka hodnoty vytvořená, můžete ji také použít jako značku značky tím, že ignoruje hodnotu značky.

Přidání značek hodnot do modelu

Značky hodnot jsou modelovány jako mapování DTDL z string do string. mapKey Oba i ty mapValue jsou významné.

Tady je výňatek z modelu dvojčete, který implementuje značku hodnoty jako vlastnost:

{
  "@type": "Property",
  "name": "tags",
  "schema": {
    "@type": "Map",
    "mapKey": {
      "name": "tagName",
      "schema": "string"
    },
    "mapValue": {
      "name": "tagValue",
      "schema": "string"
    }
  }
}

Přidání značek hodnot do digitálních dvojčat

Stejně jako u značek značek můžete nastavit značku hodnoty v digitálním dvojčeti nastavením hodnoty této tags vlastnosti z modelu. Pokud chcete jako značku značky použít značku hodnoty, můžete pole nastavit tagValue na prázdnou řetězcovou hodnotu ("").

Níže jsou uvedena těla JSON dvou dvojčat, která mají značky hodnot, které představují jejich velikosti. Dvojčata v příkladu mají také značky hodnot pro "červené" nebo "fialové", které se používají jako značky značek.

Příklad Twin1 se značkou hodnoty pro velkou velikost a značkou značky "červená":

{
  "$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"
  }
}

Příklad Twin2 se značkou hodnoty pro malou velikost a značkou značky "fialová":

{
  "$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"
  }
}

Dotazování se značkami hodnot

Stejně jako u značek značek můžete použít značky hodnot k filtrování dvojčat v dotazech. Značky hodnot a značky můžete použít také společně.

Z výše uvedeného red příkladu se používá jako značka značky. Mějte na paměti, že se jedná o dotaz, který získá všechna dvojčata označená jako "červená":

SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)

Tady je dotaz pro získání všech entit, které jsou malé (značka hodnoty), a ne červené:

SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND tags.size = 'small'

Další kroky

Přečtěte si další informace o navrhování a správě modelů digitálních dvojčat:

Přečtěte si další informace o dotazování grafu dvojčete: