Hinzufügen von Tags zu digitalen Zwillingen

In diesem Artikel wird beschrieben, wie Sie Modellen und digitalen Zwillingen verschiedene Typen von Tags hinzufügen und mithilfe der Tags abfragen.

Sie können das Konzept der Tags verwenden, um Ihre digitalen Zwillinge genauer zu anzugeben und zu kategorisieren. Insbesondere möchten Benutzer möglicherweise Tags aus vorhandenen Systemen wie etwa Haystack-Tags in ihren Azure Digital Twins-Instanzen replizieren.

In diesem Artikel werden Muster beschrieben, die zum Implementieren von Tags für digitale Zwillinge verwendet werden können.

Tags werden zuerst als Eigenschaften innerhalb des Modells hinzugefügt, das einen digitalen Zwilling beschreibt. Diese Eigenschaft wird dann für den Zwilling festgelegt, wenn dieser auf der Grundlage des Modells erstellt wird. Danach können die Tags in Abfragen verwendet werden, um die Zwillinge zu identifizieren und zu filtern.

Markertags

Bei einem Markertag handelt es sich um eine einfache Zeichenfolge, die zum Markieren oder Kategorisieren eines digitalen Zwillings (z. B. „blue“ oder „red“) verwendet wird. Bei dieser Zeichenfolge handelt es sich um den Namen des Tags. Markertags haben keinen aussagekräftigen Wert – das Tag ist allein durch sein Vorhandensein (oder Fehlen) von Bedeutung.

Hinzufügen eines Markertags zu einem Modell

Markertags werden als DTDL-Zuordnung zwischen string und boolean modelliert. Der boolesche mapValue wird ignoriert, da nur das Vorhandensein des Tags wichtig ist.

Im Folgenden finden Sie einen Auszug aus einem Zwillingsmodell, mit dem ein Markertag als Eigenschaft implementiert wird:

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

Hinzufügen von Markertags zu digitalen Zwillingen

Nachdem die tags-Eigenschaft Teil des Modells des digitalen Zwillings ist, können Sie das Markertag im digitalen Zwilling festlegen, indem Sie den Wert dieser Eigenschaft festlegen.

Hier sehen Sie ein Codebeispiel zum Festlegen des Markers tags für einen Zwilling unter Verwendung des .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);

Nachdem Sie einen Zwilling mit Tageigenschaften gemäß dem obigen Beispiel erstellt haben, sieht der Zwilling wie folgt aus:

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

Tipp

Sie können die JSON-Darstellung eines Zwillings anzeigen, indem Sie ihn mit der CLI oder APIs abfragen.

Abfragen mit Markertags

Nachdem digitalen Zwillingen Tags hinzugefügt wurden, können die Tags zum Filtern der Zwillinge in Abfragen verwendet werden.

Im Folgenden finden Sie eine Abfrage, mit der alle Zwillinge abgerufen werden, die mit „red“ getaggt sind:

SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)

Tags können auch zu komplexeren Abfragen kombiniert werden. Im Folgenden finden Sie eine Abfrage, mit der alle Zwillinge abgerufen werden, die rund und nicht rot sind:

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

Werttags

Bei einem Werttag handelt es sich um ein Schlüssel-Wert-Paar, das verwendet wird, um einem Tag einen Wert zuzuweisen, z. B. "color": "blue" oder "color": "red". Nachdem ein Werttags erstellt wurde, kann es durch Ignorieren des Tagwerts auch als Markertag verwendet werden.

Hinzufügen eines Werttags zu einem Modell

Werttags werden als DTDL-Zuordnung zwischen string und string modelliert. Sowohl mapKey als auch mapValue sind von Bedeutung.

Im Folgenden finden Sie einen Auszug aus einem Zwillingsmodell, mit dem ein Werttag als Eigenschaft implementiert wird:

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

Hinzufügen von Werttags zu digitalen Zwillingen

Wie ein Markertag können Sie auch das Werttag in einem digitalen Zwilling festlegen, indem Sie den Wert der tags-Eigenschaft über das Modell festlegen. Wenn Sie ein Werttag als Markertag verwenden möchten, können Sie das tagValue-Feld auf den leeren Zeichenfolgenwert ("") festlegen.

Im Folgenden finden Sie die JSON-Textkörper von zwei Zwillingen, die Werttags zur Darstellung ihrer Größen aufweisen. Die Zwillinge im Beispiel verfügen auch über Werttags für „rot“ oder „violett“, die als Markertags verwendet werden.

Beispiel-Twin1 mit einem Werttag für die Größe „large“ und einem Markertag „red“:

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

Beispiel-Twin2 mit einem Werttag für die Größe „small“ und einem Markertag „purple“:

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

Abfragen mit Werttags

Wie Markertags können Sie auch Werttags zum Filtern von Zwillingen in Abfragen verwenden. Sie können Werttags und Markertags auch zusammen verwenden.

Im obigen Beispiel wird red als Markertag verwendet. Denken Sie daran, dass es sich hierbei um eine Abfrage handelt, mit der alle Zwillinge abgerufen werden, die mit „red“ getaggt sind:

SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)

Im Folgenden finden Sie eine Abfrage, mit der alle Entitäten abgerufen werden, die klein (Werttag) und nicht rot sind:

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

Nächste Schritte

Erfahren Sie mehr über das Entwerfen und Verwalten von Modellen digitaler Zwillinge:

Erfahren Sie mehr über das Abfragen des Zwillingsgraphen: