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: