DTMI検証拡張参照
JSONスキーマ検証プロパティを使用してデータ検証ルールを定義できるように、DTMI検証拡張をデジタル・ツイン・モデルに追加します。
デジタル・ツイン・モデルでは、JSONスキーマ検証仕様を使用して、収集データの検証に検証プロパティを追加します。デジタル・ツイン・モデルでのDTMI拡張の使用方法を学習するには、シナリオ: デジタル・ツイン・モデルへのJSONスキーマ検証の追加を参照してください。
- 文字列や整数などのプリミティブ・プロパティの場合、検証制約は、プロパティまたはテレメトリ定義内のスキーマ・フィールドの横に兄弟プロパティとして追加されます。
- 配列の場合、検証は配列自体に適用されます。たとえば、
minItemsやuniqueItemsは配列スキーマの兄弟として定義されますが、配列スキーマ内に配置される値範囲や文字列パターンなどの各要素に適用される制約は、elementSchemaに対する兄弟プロパティです。
IoTプラットフォームでは、次のJSONスキーマ検証キーワードがサポートされています。
- 数値インスタンス:
numberおよびinteger - 文字列:
"schema": "string" - 配列
minItems、maxItemsおよびuniqueItems - オブジェクト:
required。必須およびオプションのオブジェクト・フィールドを参照してください。
exclusiveMinimumおよびexclusiveMaximum検証では、unsignedLongスキーマ・タイプを使用すると、標準longの範囲を超える値を2倍に変換できます。この変換によって精度が失われる可能性があるため、exclusiveMinimumまたはexclusiveMaximumに近い値は、有効であるように見えても検証に合格しない場合があります。| 検証 | データ型 | これらの@typesで有効です。 | スキーマ・タイプに適用されます。 | 例 |
|---|---|---|---|---|
| 番号 | 配列 CommandRequest CommandResponse 列挙 フィールド MapValue プロパティ テレメトリ |
| |
| 番号 | 配列 CommandRequest CommandResponse 列挙 フィールド MapValue プロパティ テレメトリ |
| |
| 整数 | 配列 CommandRequest CommandResponse 列挙 フィールド MapKey MapValue プロパティ テレメトリ |
| |
multipleOf | 番号 | 配列 CommandRequest CommandResponse 列挙 フィールド MapValue プロパティ テレメトリ |
| |
pattern | 文字列 | 配列 CommandRequest CommandResponse 列挙 フィールド MapKey MapValue プロパティ テレメトリ |
| |
| 整数 | 配列 CommandRequest CommandResponse フィールド MapValue プロパティ テレメトリ | 配列スキーマ(すべてのプリミティブ型) | |
uniqueItems | ブール値 | 配列 CommandRequest CommandResponse フィールド MapValue プロパティ テレメトリ | 配列スキーマ(すべてのプリミティブ型) | |
required | フィールド名の配列 | オブジェクト | オブジェクト・スキーマ。fieldsの横に追加します。 | 空のリストを指定すると、宣言されたすべてのフィールドがオプションになります。検証拡張を使用し、次に説明する |
必須およびオプションのオブジェクト・フィールド
オブジェクト・スキーマでrequiredを使用するには、既存のdtmi:com:oracle:dtdl:extension:validation;1コンテキストおよび包含コンテンツ上のValidatedコタイプを使用します。新しい検証拡張バージョンは不要です。
オブジェクト・スキーマのfieldsの横にrequiredを追加します。この値は、指定する必要があるフィールド名の配列です。配列にリストされていない宣言済フィールドはオプションであり、省略できます。
- オブジェクトに
requiredプロパティがない場合、宣言されたすべてのフィールドは必須のままです。 "required": []では、宣言されたすべてのフィールドはオプションです。指定されたフィールド値は、そのスキーマおよび制約を満たす必要があります。- 使用可能な値がない場合は、オプションのフィールドを省略します。省略されたフィールドのかわりにJSON nullを送信しないでください。指定する値は、宣言されたスキーマおよび制約を満たす必要があります。
- 各オブジェクトのリストは、その直属のフィールドにのみ適用されます。ネストされたオブジェクトには、独自のリストがあります。ネストされたオブジェクト自体をオプションにするには、親のリストからそのフィールド名を省略します。指定する場合は、独自のルールを満たす必要があります。
- 配列要素またはマップ値として使用されるオブジェクトにも同じルールが適用されます。各オブジェクトは、独自のスキーマのリストを使用します。
たとえば、"required": ["errorCount", "stale", "state"]を使用すると、センサーは、必要なヘルス・フィールドを保持しながら、読取りが成功するまでlastSuccessTimeを省略できます。センサー・モデルの例およびネストされたオブジェクトの例を参照してください。