Riferimento estensione convalida DTMI

Aggiungere un'estensione di convalida DTMI al modello gemello digitale in modo da poter definire le regole di convalida dei dati utilizzando le proprietà di convalida dello schema JSON.

Nei modelli digital twin, utilizzare JSON Schema Validation Specifications per aggiungere proprietà di convalida ai dati inclusi di convalida. Per informazioni su come utilizzare l'estensione DTMI nel modello digital twin, vedere Scenario: Add JSON Schema Validation to a Digital Twin Model.

  • Per le proprietà primitive, ad esempio stringhe o numeri interi, i vincoli di convalida vengono aggiunti come proprietà di pari livello accanto al campo dello schema all'interno della proprietà o della definizione di telemetria.
  • Per arrays, le convalide si applicano all'array stesso, ad esempio minItems o uniqueItems, sono definite come pari livello dello schema dell'array, mentre i vincoli che si applicano a ciascun elemento, ad esempio gli intervalli di valori o i pattern di stringhe, che vengono posizionati all'interno dello schema dell'array, come proprietà di pari livello a elementSchema.

La piattaforma IoT supporta le seguenti parole chiave di convalida dello schema JSON:

  • Istanze numeriche, incluse: number e integer
  • Stringhe: "schema": "string"
  • Array minItem, maxItems e uniqueItems
Nota

Per la convalida exclusiveMinimum e exclusiveMaximum, quando si utilizza il tipo di schema unsignedLong, i valori possono essere convertiti in valori doppi se superano l'intervallo di un valore standard lungo. Questa conversione può comportare una perdita di precisione, pertanto i valori vicini a exclusiveMinimum o exclusiveMaximum potrebbero non superare la convalida anche se sembrano essere validi.
ConvalidaTipo di datiValido su @typesSi applica ai tipi di schemaEsempi

exclusiveMinimum

exclusiveMaximum

Numero

Array

CommandRequest

CommandResponse

Enumerazione

Campo

MapValue

Property

Telemetria

  • Schemi primitivi (numerici)
  • Array di schemi primitivi (numerici)
{
   "@type": "Telemetry",
   "name": "minMaxProperty",
   "schema": "integer",
   "exclusiveMinimum": 0,
   "exclusiveMaximum": 100
}
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "integer",
      "exclusiveMinimum": 1,
      "exclusiveMaximum": 10
}

minimum

maximum

Numero

Array

CommandRequest

CommandResponse

Enumerazione

Campo

MapValue

Property

Telemetria

  • Schemi primitivi (numerici)
  • Array di schemi primitivi (numerici)
{
   "@type": "Telemetry",
   "name": "minMaxProperty",
   "schema": "integer",
   "minimum": 0,
   "maximum": 100
}
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "integer",
      "minimum": 1,
      "maximum": 10
}

minLength

maxLength

Numero intero

Array

CommandRequest

CommandResponse

Enumerazione

Campo

MapKey

MapValue

Property

Telemetria

  • Schemi primitivi (stringa)
  • Array di schemi primitivi (stringa)
{
   "@type": "Telemetry",
   "name": "minMaxLengthProperty",
   "schema": "string",
   "minLength": 0,
   "maxLength": 2048
}
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "string",
      "minLength": 1,
      "maxLength": 2048
}
multipleOfNumero

Array

CommandRequest

CommandResponse

Enumerazione

Campo

MapValue

Property

Telemetria

  • Schemi primitivi (numerici)
  • Array di schemi primitivi (numerici)
{
   "@type": "Telemetry",
   "name": "minMaxProperty",
   "schema": "integer",
   "multipleOf": 2
}
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "integer",
      "multipleOf": 2
}
patternStringa

Array

CommandRequest

CommandResponse

Enumerazione

Campo

MapKey

MapValue

Property

Telemetria

  • Schemi primitivi (stringa)
  • Array di schemi primitivi (stringa)
{
   "@type": "Telemetry",
   "name": "patternProperty",
   "schema": "string",
   "pattern": "^[a-zA-Z]+$"
}
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "string",
      "pattern": "^[a-zA-Z]+$"
}

minItems

maxItems

Numero intero

Array

CommandRequest

CommandResponse

Campo

MapValue

Property

Telemetria

Schema array (tutti i tipi primitivi)
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "string"
   },
   "minItems": 1,
   "maxItems": 10
}
uniqueItemsBoolean

Array

CommandRequest

CommandResponse

Campo

MapValue

Property

Telemetria

Schema array (tutti i tipi primitivi)
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "string"
   },
   "uniqueItems": true
}