Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как добавлять различные типы тегов в модели и цифровые двойники, а также как запрашивать их с помощью тегов.
Вы можете использовать концепцию тегов для дальнейшего определения и классификации цифровых двойников. Например, может потребоваться реплицировать теги из существующих систем, таких как Теги Haystack, в экземпляре Azure Digital Twins.
В этом документе описываются шаблоны, которые можно использовать для реализации тегов в цифровых двойниках.
Теги сначала добавляются в качестве свойств в модели , описывающей цифровой двойник. Затем это свойство присваивается двойнику при его создании на основе модели. После этого теги можно использовать в запросах для идентификации и фильтрации двойников.
Теги маркеров
Тег маркера — это простая строка, используемая для маркировки или классификации цифрового двойника, например синего или красного. Эта строка — это имя тега, и теги маркеров не имеют понятного значения— тег имеет важное значение только по его присутствию (или отсутствия).
Добавление тегов маркеров в модель
Теги маркеров моделируются как карта языка определения цифровых двойников (DTDL) от string
до boolean
. Логическое значение mapValue
игнорируется, так как важно лишь наличие тега.
Ниже приведен фрагмент двойной модели, реализующий маркерный тег в качестве свойства.
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "boolean"
}
}
},
Добавьте теги-маркеры к цифровым двойникам
tags
После того как свойство становится частью модели цифрового двойника, можно установить тег маркера в цифровом двойнике, задав значение этого свойства.
Ниже приведен пример кода для настройки маркера tags
для двойника с помощью .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);
После создания двойника со свойствами тегов в соответствии с предыдущим примером двойник будет выглядеть следующим образом:
{
"$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
}
}
Подсказка
Представление JSON двойника можно увидеть, запрашивая его с помощью интерфейса командной строки или API.
Запрос с тегами маркеров
После добавления тегов в цифровые двойники теги можно использовать для фильтрации двойников в запросах.
Ниже приведен запрос, чтобы получить все двойники, помеченные красным цветом:
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
Вы также можете объединить теги для более сложных запросов. Ниже приведен запрос для получения всех двойников, которые являются круглыми, а не красными:
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND IS_DEFINED(tags.round)
Теги значений
Тег значения — это пара "ключ-значение", которая используется для предоставления каждого тега значения, например "color": "blue"
или"color": "red"
. После создания тега значения его также можно использовать в качестве тега маркера, игнорируя значение тега.
Добавление тегов значений в модель
Теги значений моделируются как карта DTDL от string
до string
. И mapKey
, и mapValue
имеют значительное значение.
Ниже приведен фрагмент модели двойников, реализующий тег значения в качестве свойства:
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "string"
}
}
}
Добавьте теги значений в цифровые двойники
Как и для маркерных тегов, тег значения в цифровом двойнике можно задать путем установки значения этого tags
свойства из модели. Чтобы использовать тег значения в качестве тега маркера, можно задать tagValue
поле пустым строковым значением (""
).
В следующем примере показаны тела JSON двух двойников, которые имеют теги значений для представления их размеров. Близнецы в примере также имеют теги значений для красного или фиолетового, используемые как маркерные теги.
Пример Twin1 с тегом значения для большого размера и тегом маркера красного цвета:
{
"$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"
}
}
Пример Twin2 с тегом значения для маленького размера и тегом маркера фиолетового цвета:
{
"$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"
}
}
Запрос с тегами значений
Как и теги маркеров, можно использовать теги значений для фильтрации двойников в запросах. Вы также можете использовать теги значений и теги маркеров вместе.
В предыдущем примере red
используется в качестве тега маркера. Помните, что этот запрос получает все двойники, помеченные красным цветом:
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
Ниже приведен запрос, чтобы получить все сущности, которые являются небольшими (тегом значения), а не красным:
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND tags.size = 'small'
Дальнейшие шаги
- Дополнительные сведения о проектировании моделей цифровых двойников и управлении ими: управление моделями DTDL.
- Узнайте больше о запросах графа двойников: Запрос графа двойников.