Delen via


Tags toevoegen aan digitale dubbels

In dit artikel wordt beschreven hoe u verschillende typen tags toevoegt aan modellen en digitale dubbels en hoe u query's uitvoert met behulp van de tags.

U kunt het concept tags gebruiken om uw digitale dubbels verder te identificeren en te categoriseren. Gebruikers willen met name tags repliceren van bestaande systemen, zoals Haystack Tags, binnen hun Azure Digital Twins-exemplaren.

In dit document worden patronen beschreven die kunnen worden gebruikt voor het implementeren van tags op digitale dubbels.

Tags worden eerst toegevoegd als eigenschappen in het model waarin een digitale dubbel wordt beschreven. Deze eigenschap wordt vervolgens ingesteld op de dubbel wanneer deze wordt gemaakt op basis van het model. Daarna kunnen de tags worden gebruikt in query's om uw tweelingen te identificeren en te filteren.

Markeringstags

Een markeringstag is een eenvoudige tekenreeks die wordt gebruikt om een digitale dubbel te markeren of te categoriseren, zoals 'blauw' of 'rood'. Deze tekenreeks is de naam van de tag en markeringstags hebben geen zinvolle waarde. De tag is significant, alleen vanwege de aanwezigheid (of afwezigheid).

Markeringstags toevoegen aan model

Markeringstags worden gemodelleerd als een DTDL-kaart van string naar boolean. De Booleaanse waarde mapValue wordt genegeerd, omdat de aanwezigheid van de tag alles is wat belangrijk is.

Hier volgt een fragment van een dubbelmodel dat een markeringstag als eigenschap implementeert:

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

Markeringstags toevoegen aan digitale dubbels

Zodra de tags eigenschap deel uitmaakt van het model van een digitale dubbel, kunt u de markeringstag in de digitale dubbel instellen door de waarde van deze eigenschap in te stellen.

Hier volgt een codevoorbeeld voor het instellen van een markering tags voor een dubbel met behulp van de .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);

Nadat u een dubbel met tageigenschappen hebt gemaakt volgens het bovenstaande voorbeeld, ziet de tweeling er als volgt uit:

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

Fooi

U kunt de JSON-weergave van een dubbel zien door er query's op uit te voeren met de CLI of API's.

Query's uitvoeren met markeringstags

Zodra tags zijn toegevoegd aan digitale dubbels, kunnen de tags worden gebruikt om de dubbels in query's te filteren.

Hier volgt een query om alle dubbels op te halen die zijn gelabeld als 'rood':

SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)

U kunt ook tags combineren voor complexere query's. Hier volgt een query om alle dubbels op te halen die rond zijn en niet rood:

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

Waardetags

Een waardetag is een sleutel-waardepaar dat wordt gebruikt om elke tag een waarde te geven, zoals "color": "blue" of "color": "red". Zodra een waardetag is gemaakt, kan deze ook worden gebruikt als markeringstag door de waarde van de tag te negeren.

Waardetags toevoegen aan model

Waardetags worden gemodelleerd als een DTDL-toewijzing van string naar string. Zowel de mapKey als de mapValue zijn significant.

Hier volgt een fragment van een dubbelmodel dat een waardetag als eigenschap implementeert:

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

Waardetags toevoegen aan digitale dubbels

Net als bij markeringstags kunt u de waardetag in een digitale dubbel instellen door de waarde van deze tags eigenschap in te stellen op basis van het model. Als u een waardetag wilt gebruiken als markeringstag, kunt u het tagValue veld instellen op de lege tekenreekswaarde ("").

Hieronder ziet u de JSON-lichamen van twee tweelingen met waardetags die hun grootten vertegenwoordigen. De tweelingen in het voorbeeld hebben ook waardetags voor 'rood' of 'paars' die worden gebruikt als markeringstags.

Voorbeelddubbel1, met een waardetag voor grote grootte en een markeringslabel van 'rood':

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

Voorbeelddubbel2, met een waardetag voor klein formaat en een markeringslabel van 'paars':

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

Query's uitvoeren met waardetags

Net als bij markeringstags kunt u waardetags gebruiken om de dubbels in query's te filteren. U kunt ook samen waardetags en markeringstags gebruiken.

Uit het bovenstaande red voorbeeld wordt gebruikt als een markeringstag. Houd er rekening mee dat dit een query is om alle dubbels op te halen die zijn gelabeld als 'rood':

SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)

Hier volgt een query om alle entiteiten op te halen die klein zijn (waardetag) en niet rood:

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

Volgende stappen

Lees meer over het ontwerpen en beheren van digitale dubbelmodellen:

Lees meer over het uitvoeren van query's op de tweelinggrafiek: