Lägga till taggar i digitala tvillingar
Den här artikeln beskriver hur du lägger till olika typer av taggar i modeller och digitala tvillingar och hur du frågar med hjälp av taggarna.
Du kan använda begreppet taggar för att ytterligare identifiera och kategorisera dina digitala tvillingar. I synnerhet kan användare vilja replikera taggar från befintliga system, till exempel Haystack-taggar, i sina Azure Digital Twins-instanser.
Det här dokumentet beskriver mönster som kan användas för att implementera taggar på digitala tvillingar.
Taggar läggs först till som egenskaper i modellen som beskriver en digital tvilling. Den egenskapen anges sedan på tvillingen när den skapas baserat på modellen. Därefter kan taggarna användas i frågor för att identifiera och filtrera dina tvillingar.
Markörtaggar
En markörtagg är en enkel sträng som används för att markera eller kategorisera en digital tvilling, till exempel "blå" eller "röd". Den här strängen är taggens namn och markörtaggar har inget meningsfullt värde – taggen är betydande bara av dess närvaro (eller frånvaro).
Lägga till markörtaggar i modellen
Markörtaggar modelleras som en DTDL-karta från string
till boolean
. Det booleska mapValue
objektet ignoreras eftersom taggens närvaro är allt som är viktigt.
Här är ett utdrag från en tvillingmodell som implementerar en markörtagg som en egenskap:
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "boolean"
}
}
},
Lägga till markörtaggar till digitala tvillingar
När egenskapen tags
är en del av en digital tvillings modell kan du ange markörtaggen i den digitala tvillingen genom att ange värdet för den här egenskapen.
Här är ett kodexempel på hur du anger markör tags
för en tvilling med hjälp av .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);
När du har skapat en tvilling med taggegenskaper enligt exemplet ovan ser tvillingen ut så hä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
}
}
Dricks
Du kan se en tvillings JSON-representation genom att fråga den med CLI eller API:er.
Fråga med markörtaggar
När taggar har lagts till i digitala tvillingar kan taggarna användas för att filtrera tvillingarna i frågor.
Här är en fråga för att hämta alla tvillingar som har taggats som "röda":
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
Du kan också kombinera taggar för mer komplexa frågor. Här är en fråga för att hämta alla tvillingar som är runda och inte röda:
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND IS_DEFINED(tags.round)
Värdetaggar
En värdetagg är ett nyckel/värde-par som används för att ge varje tagg ett värde, till exempel "color": "blue"
eller "color": "red"
. När en värdetagg har skapats kan den också användas som en markörtagg genom att ignorera taggens värde.
Lägga till värdetaggar i modellen
Värdetaggar modelleras som en DTDL-karta från string
till string
. mapKey
Både och mapValue
är betydande.
Här är ett utdrag från en tvillingmodell som implementerar en värdetagg som en egenskap:
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "string"
}
}
}
Lägga till värdetaggar till digitala tvillingar
Precis som med markörtaggar kan du ange värdetaggen i en digital tvilling genom att ange värdet för den här tags
egenskapen från modellen. Om du vill använda en värdetagg som en markörtagg kan du ange tagValue
fältet till det tomma strängvärdet (""
).
Nedan visas JSON-organen för två tvillingar som har värdetaggar som representerar deras storlekar. Tvillingarna i exemplet har också värdetaggar för "röd" eller "lila" som används som markörtaggar.
Exempel twin1, med en värdetagg för stor storlek och en markörtagg med "röd":
{
"$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"
}
}
Exempel på Twin2, med en värdetagg för liten storlek och en markörtagg med "lila":
{
"$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"
}
}
Fråga med värdetaggar
Precis som med markörtaggar kan du använda värdetaggar för att filtrera tvillingarna i frågor. Du kan också använda värdetaggar och markörtaggar tillsammans.
I exemplet ovan red
används som en markörtagg. Kom ihåg att det här är en fråga för att hämta alla tvillingar som har taggats som "röda":
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
Här är en fråga för att hämta alla entiteter som är små (värdetaggen) och inte röda:
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND tags.size = 'small'
Nästa steg
Läs mer om att utforma och hantera digitala tvillingmodeller:
Läs mer om att fråga tvillingdiagrammet: