DTMI検証拡張参照

JSONスキーマ検証プロパティを使用してデータ検証ルールを定義できるように、DTMI検証拡張をデジタル・ツイン・モデルに追加します。

デジタル・ツイン・モデルでは、JSONスキーマ検証仕様を使用して、収集データの検証に検証プロパティを追加します。デジタル・ツイン・モデルでのDTMI拡張の使用方法を学習するには、シナリオ: デジタル・ツイン・モデルへのJSONスキーマ検証の追加を参照してください。

  • 文字列や整数などのプリミティブ・プロパティの場合、検証制約は、プロパティまたはテレメトリ定義内のスキーマ・フィールドの横に兄弟プロパティとして追加されます。
  • 配列の場合、検証は配列自体に適用されます。たとえば、minItemsやuniqueItemsは配列スキーマの兄弟として定義されますが、配列スキーマ内に配置される値範囲や文字列パターンなどの各要素に適用される制約は、elementSchemaに対する兄弟プロパティです。

IoTプラットフォームでは、次のJSONスキーマ検証キーワードがサポートされています。

ノート

exclusiveMinimumおよびexclusiveMaximum検証では、unsignedLongスキーマ・タイプを使用すると、標準longの範囲を超える値を2倍に変換できます。この変換によって精度が失われる可能性があるため、exclusiveMinimumまたはexclusiveMaximumに近い値は、有効であるように見えても検証に合格しない場合があります。
検証データ型これらの@typesで有効です。スキーマ・タイプに適用されます。例

exclusiveMinimum

exclusiveMaximum

番号

配列

CommandRequest

CommandResponse

列挙

フィールド

MapValue

プロパティ

テレメトリ

  • (数値)プリミティブ・スキーマ
  • (数値)プリミティブ・スキーマの配列
{
   "@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

番号

配列

CommandRequest

CommandResponse

列挙

フィールド

MapValue

プロパティ

テレメトリ

  • (数値)プリミティブ・スキーマ
  • (数値)プリミティブ・スキーマの配列
{
   "@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

整数

配列

CommandRequest

CommandResponse

列挙

フィールド

MapKey

MapValue

プロパティ

テレメトリ

  • (文字列)プリミティブ・スキーマ
  • (文字列)プリミティブ・スキーマの配列
{
   "@type": "Telemetry",
   "name": "minMaxLengthProperty",
   "schema": "string",
   "minLength": 0,
   "maxLength": 2048
}
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "string",
      "minLength": 1,
      "maxLength": 2048
   }
}
multipleOf番号

配列

CommandRequest

CommandResponse

列挙

フィールド

MapValue

プロパティ

テレメトリ

  • (数値)プリミティブ・スキーマ
  • (数値)プリミティブ・スキーマの配列
{
   "@type": "Telemetry",
   "name": "minMaxProperty",
   "schema": "integer",
   "multipleOf": 2
}
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "integer",
      "multipleOf": 2
   }
}
pattern文字列

配列

CommandRequest

CommandResponse

列挙

フィールド

MapKey

MapValue

プロパティ

テレメトリ

  • (文字列)プリミティブ・スキーマ
  • (文字列)プリミティブ・スキーマの配列
{
   "@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

整数

配列

CommandRequest

CommandResponse

フィールド

MapValue

プロパティ

テレメトリ

配列スキーマ(すべてのプリミティブ型)
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "string"
   },
   "minItems": 1,
   "maxItems": 10
}
uniqueItemsブール値

配列

CommandRequest

CommandResponse

フィールド

MapValue

プロパティ

テレメトリ

配列スキーマ(すべてのプリミティブ型)
{
   "@type": "Property",
   "name": "arrayDataProperty",
   "schema": {
      "@type": "Array",
      "elementSchema": "string"
   },
   "uniqueItems": true
}
requiredフィールド名の配列オブジェクトオブジェクト・スキーマ。fieldsの横に追加します。

空のリストを指定すると、宣言されたすべてのフィールドがオプションになります。検証拡張を使用し、次に説明するValidated共型を含めます。

{
   "@type": "Object",
   "fields": [
      { "name": "lastSuccessTime", "schema": "dateTime" }
   ],
   "required": []
}

必須およびオプションのオブジェクト・フィールド

オブジェクト・スキーマでrequiredを使用するには、既存のdtmi:com:oracle:dtdl:extension:validation;1コンテキストおよび包含コンテンツ上のValidatedコタイプを使用します。新しい検証拡張バージョンは不要です。

オブジェクト・スキーマのfieldsの横にrequiredを追加します。この値は、指定する必要があるフィールド名の配列です。配列にリストされていない宣言済フィールドはオプションであり、省略できます。

  • オブジェクトにrequiredプロパティがない場合、宣言されたすべてのフィールドは必須のままです。
  • "required": []では、宣言されたすべてのフィールドはオプションです。指定されたフィールド値は、そのスキーマおよび制約を満たす必要があります。
  • 使用可能な値がない場合は、オプションのフィールドを省略します。省略されたフィールドのかわりにJSON nullを送信しないでください。指定する値は、宣言されたスキーマおよび制約を満たす必要があります。
  • 各オブジェクトのリストは、その直属のフィールドにのみ適用されます。ネストされたオブジェクトには、独自のリストがあります。ネストされたオブジェクト自体をオプションにするには、親のリストからそのフィールド名を省略します。指定する場合は、独自のルールを満たす必要があります。
  • 配列要素またはマップ値として使用されるオブジェクトにも同じルールが適用されます。各オブジェクトは、独自のスキーマのリストを使用します。

たとえば、"required": ["errorCount", "stale", "state"]を使用すると、センサーは、必要なヘルス・フィールドを保持しながら、読取りが成功するまでlastSuccessTimeを省略できます。センサー・モデルの例およびネストされたオブジェクトの例を参照してください。