web-dev-qa-db-ja.com

JSONスキーマドラフトバージョン4の「additionalProperties」キーワードについて

仕様へのリンク: http://json-schema.org/latest/json-schema-validation.html#anchor64

セクション5.4.4.2には次のように記載されています。

これら3つのキーワードに対するオブジェクトインスタンスの検証が成功するかどうかは、「additionalProperties」の値に依存します。その値がブール値trueまたはスキーマの場合、検証は成功します。 ...

セクション5.4.4.3には次のように記載されています。

「additionalProperties」が存在しない場合は、値として空のスキーマが存在すると見なされます。

OK、「additionalProperties」が存在しない場合は、空のスキーマが存在すると見なされます。そして、それが(あらゆる種類の)スキーマである場合、オブジェクトは他の考慮事項に関係なく正常に検証されます。

しかし、これはセクション5.4.4.5「例」のアサーションと矛盾します。これは、指定されたインスタンスが指定されたスキーマ(「additionalProperties」に何も指定していない)に対して検証に失敗することを示しています。

誰かがどこでどのように私が仕様を間違って解釈しているのか説明できますか?

26
Hammerite

仕様にエラーを見つけたので、実際に何かを誤解していない。

IETFのWebサイトには、インターネットドラフトの更新バージョン(2日後)があり、この例は異なります。

参照: http://tools.ietf.org/html/draft-fge-json-schema-validation-00#page-1

ドキュメントはインターネットドラフトであるため、おそらく http://datatracker.ietf.org/ のバージョンが正しいバージョンです。

このメモのステータス

このインターネットドラフトは、
BCP 78およびBCP 79の規定。

Internet-DraftsInternet Engineeringの作業文書です
タスクフォース(IETF)
。他のグループも配布する可能性があることに注意してください
インターネットドラフトとしての作業文書。現在のインターネットのリスト
ドラフトは http://datatracker.ietf.org/drafts/current/ にあります。

インターネットドラフトはインターネットエンジニアリングの作業文書です
タスクフォース(IETF)。

さらに、2つのバージョンには異なる日付と有効期限があります。

  • リンクするバージョン-記述:2013年1月30日および有効期限:2013年8月3日
  • ietfのバージョン-2013年2月1日、有効期限:2013年8月5日

IETFバージョン:

このスキーマは例として使用されます。

   {
       "properties": {
           "p1": {}
       },
       "patternProperties": {
           "p": {},
           "[0-9]": {}
       },
       "additionalProperties": false

これは検証するインスタンスです:

{"p1":true、 "p2":null、 "a32&o": "foobar"、 "":[]、 "fiddle":42、 "Apple": "pie"}

3つのプロパティセットは次のとおりです。

   s  [ "p1", "p2", "a32&o", "", "fiddle", "Apple" ]

   p  [ "p1" ]

   pp [ "p", "[0-9]" ]

アルゴリズムの2つのステップの適用:

      after the first step, "p1" is removed from "s";

      after the second step, "p2" (matched by "p"), "a32&o" (matched by
      "[0-9]") and "Apple" (matched by "p") are removed from "s".

セット "s"には、まだ2つの要素 ""と "fiddle"が含まれています。したがって、検証は失敗します。

32