ドラフト-07 リリースノート
コアとバリデーションの仕様書において、ドラフト-07 は比較的マイナーな更新です。バリデーションキーワードと結果に関しては、ドラフト-06 と完全に後方互換性があります。
ハイパーメディアスキーマから移動されたキーワードと、インスタンスとスキーマのリンク推奨方法にいくつかの違いがあります。最後に、アノテーションキーワード値の収集プロセスが以前より明確に定義されました。
キーワード
- キーワードの動作に変更はありません
- キーワードは削除されていません
- いくつかのキーワードがハイパーメディアスキーマから移動され、そのうちの2つは名前が変更されました
キーワード | 変更 | 備考 |
---|---|---|
["$comment" ](../../draft-07/json-schema-core.html#rfc.section.9) | コアに追加 | エンドユーザーへの表示に適した["description" ](../../draft-07/json-schema-validation.html#rfc.section.10.1)とは対照的に、スキーママンテナへのメモを意図しています。 |
["if" , "then" , "else" ](../../draft-07/json-schema-validation.html#rfc.section.6.6) | バリデーションに追加 | 明示的な条件付きスキーマ評価 |
["readOnly" ](../../draft-07/json-schema-validation.html#rfc.section.10.3) | ハイパーメディアスキーマからバリデーションへ移動 | ハイパーメディア環境に限定されません |
["writeOnly" ](../../draft-07/json-schema-validation.html#rfc.section.10.3) | バリデーションに追加 | パスワードなど、一般的な書き込み専用フィールド |
["contentMediaType" ](../../draft-07/json-schema-validation.html#rfc.section.8) | ハイパーメディアスキーマからバリデーションへ移動 | 以前は["media": {"type": "..."} ](../../draft-06/json-schema-hypermedia.html#rfc.section.5.3) |
["contentEncoding" ](../../draft-07/json-schema-validation.html#rfc.section.8) | ハイパーメディアスキーマからバリデーションへ移動 | 以前は["media": {"binaryEncoding": "..."} ](../../draft-06/json-schema-hypermedia.html#rfc.section.5.3) |
"content*"
キーワードは、バリデーションを *要求* しません。
フォーマット
多数のフォーマットが追加、明確化、または古いドラフトから復元されました。
フォーマット | 変更 | 備考 |
---|---|---|
["iri" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.5) | 追加 | "uri" の国際化対応 |
["iri-reference" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.5) | 追加 | "uri-reference" の国際化対応 |
["uri-template" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.6) | IRI サポートに注意 | 個別の IRI テンプレート標準はありません |
["idn-email" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.2) | 追加 | "email" の国際化対応 |
["idn-hostname" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.3) | 追加 | "hostname" の国際化対応 |
["json-pointer" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.7) | 明確化 | 文字列形式のみ使用し、URI フラグメントは使用しません |
["relative-json-pointer" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.7) | 追加 | 相対 JSON ポインタ ドラフトを復活 |
["regex" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.8) | ドラフト-03 から復元 | ECMA 262 正規表現 |
["date" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.1) | ドラフト-03 から復元 | RFC 3339 "full-date" |
["time" ](../../draft-07/json-schema-validation.html#rfc.section.7.3.1) | ドラフト-03 から復元 | RFC 3339 "full-time" |
RFC 3339の日付、時間、期間に関するその他の名前は、将来の検討のために予約されています。拡張形式として追加する場合は、将来の互換性を確保するために、RFCでの使用方法と互換性のある方法で実装する必要があります。
キーワードの分類
検証プロセスに直接影響はありませんが、このドラフトのセットでは、キーワードを動作別に分類しています。これらの分類名はドキュメント全体で使用されるため、知っておくと便利です。
definitions
はこれらのいずれのカテゴリにも当てはまりません。ドル記号で始まるコアキーワードも同様です。
アノテーション値の収集
アノテーションキーワード(以前はメタデータキーワードと呼ばれていました)は、インスタンス内の同じ場所に適用される複数の値を収集する方法に関するガイダンスを提供します。デフォルトでは、否定されたスキーマ内に見つからないすべての値は、順序付けられていない集合として収集されます。以下の例外は、該当するキーワードの下に記載されています。
readOnly
とwriteOnly
は論理ORで処理する必要があります。examples
は、単一の収集された配列に平坦化される必要があります。
ハイパーメディア環境における JSON スキーマ
これらの変更は、多くの検証ユースケースには関連がなく、ハイパーシーマユーザーにとってより関心のあるものです。しかし、ハイパーシーマを使用していなくても、HTTPまたはその他のハイパーメディア環境を介してインスタンスドキュメントにアクセスする場合は、このセクションが役立つ場合があります。
インスタンスとスキーマのリンク
"profile"仕様の作者との議論の後、JSONスキーマでのその使用は正しくないという結論に至りました。使用する関係に関する新しいガイダンスは次のとおりです。
リンク関係 | 変更 | 備考 |
---|---|---|
"describedBy" | 変更なし | ネットワークアクセス可能なURL |
"profile" | 削除されました。"schema"を使用してください。 | 不透明な識別URI |
"schema" | 追加 | 不透明な識別URI |
"schema"は、過去のドラフトの"profile"と同様に、メディアタイプパラメータとしても使用できます。
インスタンスメディアタイプ
このセクションの変更は、検証よりもJSONハイパーシーマとの関連性が高いため、コア仕様の一部であるため、ここで説明します。
メディアタイプは、独自のURIフラグメント構文だけでなく、独自のパラメータも決定します。application/json
は、パラメータやURIフラグメントを許可しません。
application/schema-instance+json
は、メディアタイプパラメータとして"schema"をサポートし、JSONポインタ構文を使用してURIフラグメントを許可する、インスタンスで使用するためのオプションのメディアタイプです。
"schema"をメディアタイプパラメータとしてサポートすることで、ハイパーメディア環境でのスキーマベースのコンテンツネゴシエーションが可能になります。
JSONポインタURIフラグメントのサポートは、主にJSONハイパーシーマで役立ちます。ハイパーシーマの使用に関わる多くのURIは、ドキュメント全体ではなく、インスタンスドキュメント内の場所から発生するか、またはその場所を指しているためです。
ヘルプが必要ですか?
このドキュメントは役に立ちましたか?
それでもヘルプが必要ですか?
JSON Schemaの学習はしばしば混乱を招きますが、心配しないでください。お手伝いさせていただきます!