656
656
<t >
657
657
Other keywords may take into account the dynamic scope that
658
658
exists during the evaluation of a schema, typically together
659
- with an instance document. The outermost dynamic scope is the
660
- root schema of the schema document in which processing begins.
659
+ with an instance document.
660
+ The outermost dynamic scope is the schema object at
661
+ which processing begins, even if it is not a schema resource root.
661
662
The path from this root schema to any particular keyword (that
662
663
includes any "$ref" and "$dynamicRef" keywords that may have
663
664
been resolved) is considered the keyword's "validation path."
1632
1633
</t >
1633
1634
<t >
1634
1635
When schemas are downloaded,
1635
- for example by a generic user-agent that doesn't know until runtime which schemas to download,
1636
+ for example by a generic user-agent that does not know until runtime which schemas to download,
1636
1637
see <xref target =" hypermedia" >Usage for Hypermedia</xref >.
1637
1638
</t >
1638
1639
<t >
2083
2084
"additionalProperties", whose behavior is defined in terms of
2084
2085
"properties" and "patternProperties"
2085
2086
</t >
2086
- <t >
2087
- "unevaluatedProperties", whose behavior is defined in terms of
2088
- annotations from "properties", "patternProperties",
2089
- "additionalProperties" and itself
2090
- </t >
2091
2087
<t >
2092
2088
"items", whose behavior is defined in terms of "prefixItems"
2093
2089
</t >
2094
2090
<t >
2095
- "unevaluatedItems", whose behavior is defined in terms of annotations
2096
- from "prefixItems", "items", "contains", and itself
2091
+ "contains", whose behavior is defined in terms of "minContains"
2097
2092
</t >
2098
2093
</list >
2099
2094
</t >
2380
2375
</t >
2381
2376
<t >
2382
2377
The annotation result of this keyword is the set of instance
2383
- property names matched by this keyword. Annotation results
2384
- for "properties" keywords from multiple schemas applied to
2385
- the same instance location are combined by taking the union
2386
- of the sets.
2378
+ property names matched by this keyword.
2387
2379
</t >
2388
2380
<t >
2389
2381
Omitting this keyword has the same assertion behavior as
2406
2398
</t >
2407
2399
<t >
2408
2400
The annotation result of this keyword is the set of instance
2409
- property names matched by this keyword. Annotation results
2410
- for "patternProperties" keywords from multiple schemas applied to
2411
- the same instance location are combined by taking the union
2412
- of the sets.
2401
+ property names matched by this keyword.
2413
2402
</t >
2414
2403
<t >
2415
2404
Omitting this keyword has the same assertion behavior as
2436
2425
<t >
2437
2426
The annotation result of this keyword is the set of instance
2438
2427
property names validated by this keyword's subschema.
2439
- Annotation results for "additionalProperties" keywords from
2440
- multiple schemas applied to the same instance location are combined
2441
- by taking the union of the sets.
2442
2428
</t >
2443
2429
<t >
2444
2430
Omitting this keyword has the same assertion behavior as
2521
2507
before the next to indicate the same syntax and semantics
2522
2508
as those listed here.
2523
2509
</t >
2510
+
2511
+ <section title =" Keyword Independence" >
2512
+ <t >
2513
+ Schema keywords typically operate independently, without
2514
+ affecting each other's outcomes. However, the keywords in this
2515
+ vocabulary are notable exceptions:
2516
+ <list >
2517
+ <t >
2518
+ "unevaluatedItems", whose behavior is defined in terms of annotations
2519
+ from "prefixItems", "items", "contains", and itself
2520
+ </t >
2521
+ <t >
2522
+ "unevaluatedProperties", whose behavior is defined in terms of
2523
+ annotations from "properties", "patternProperties",
2524
+ "additionalProperties" and itself
2525
+ </t >
2526
+ </list >
2527
+ </t >
2528
+ </section >
2529
+
2524
2530
<section title =" unevaluatedItems" anchor =" unevaluatedItems" >
2525
2531
<t >
2526
2532
The value of "unevaluatedItems" MUST be a valid JSON Schema.
2530
2536
adjacent keywords that apply to the instance location being validated.
2531
2537
Specifically, the annotations from "prefixItems", "items", and "contains",
2532
2538
which can come from those keywords when they are adjacent to the
2533
- "unevaluatedItems" keyword. Those two annotations, as well as
2539
+ "unevaluatedItems" keyword. Those three annotations, as well as
2534
2540
"unevaluatedItems", can also result from any and all adjacent
2535
2541
<xref target =" in-place" >in-place applicator</xref > keywords.
2536
2542
This includes but is not limited to the in-place applicators
2599
2605
<t >
2600
2606
The annotation result of this keyword is the set of instance
2601
2607
property names validated by this keyword's subschema.
2602
- Annotation results for "unevaluatedProperties" keywords from
2603
- multiple schemas applied to the same instance location are combined
2604
- by taking the union of the sets.
2605
2608
</t >
2606
2609
<t >
2607
2610
Omitting this keyword has the same assertion behavior as
2648
2651
structure that matches the exact structure of the schema.
2649
2652
</t >
2650
2653
</list >
2651
- An implementation SHOULD provide at least the "flag", "basic", or "detailed"
2654
+ An implementation SHOULD provide at least one of the "flag", "basic", or "detailed"
2652
2655
format and MAY provide the "verbose" format. If it provides one or more of the
2653
- complex formats, it MUST also provide the "flag" format. Implementations SHOULD
2654
- specify in their documentation which formats they support.
2656
+ "detailed" or "verbose" formats, it MUST also provide the "flag" format.
2657
+ Implementations SHOULD specify in their documentation which formats they support.
2655
2658
</t >
2656
2659
2657
2660
</section >
2704
2707
Note that "absolute" here is in the sense of "absolute filesystem path"
2705
2708
(meaning the complete location) rather than the "absolute-URI"
2706
2709
terminology from RFC 3986 (meaning with scheme but without fragment).
2707
- Keyword absolute locations will always have a fragment in order to
2710
+ Keyword absolute locations will have a fragment in order to
2708
2711
identify the keyword.
2709
2712
</cref >
2710
2713
</t >
@@ -2716,8 +2719,8 @@ https://example.com/schemas/common#/$defs/count/minimum
2716
2719
</artwork >
2717
2720
</figure >
2718
2721
<t >
2719
- This information MAY be omitted only if either the relative location contains
2720
- no references or if the schema does not declare an absolute URI as its "$id".
2722
+ This information MAY be omitted only if either the dynamic scope did not pass
2723
+ over a reference or if the schema does not declare an absolute URI as its "$id".
2721
2724
</t >
2722
2725
<t >
2723
2726
The JSON key for this information is "absoluteKeywordLocation".
@@ -3083,7 +3086,7 @@ https://example.com/schemas/common#/$defs/count/minimum
3083
3086
<t >
3084
3087
Instances and schemas are both frequently written by untrusted third parties, to be
3085
3088
deployed on public Internet servers.
3086
- Validators should take care that the parsing and validating against schemas doesn't consume excessive
3089
+ Validators should take care that the parsing and validating against schemas does not consume excessive
3087
3090
system resources.
3088
3091
Validators MUST NOT fall into an infinite loop.
3089
3092
</t >
@@ -3093,7 +3096,7 @@ https://example.com/schemas/common#/$defs/count/minimum
3093
3096
excessive consumption of system resources in such a scenario.
3094
3097
</t >
3095
3098
<t >
3096
- Servers MUST ensure that malicious parties can't change the functionality of
3099
+ Servers MUST ensure that malicious parties cannot change the functionality of
3097
3100
existing schemas by uploading a schema with a pre-existing or very similar "$id".
3098
3101
</t >
3099
3102
<t >
@@ -3599,9 +3602,9 @@ https://example.com/schemas/common#/$defs/count/minimum
3599
3602
behavior is undefined.
3600
3603
</t >
3601
3604
<t >
3602
- Vocabulary authors should provide a meta-schema that validates the
3605
+ Vocabulary authors SHOULD provide a meta-schema that validates the
3603
3606
expected usage of the vocabulary's keywords on their own. Such meta-schemas
3604
- should not forbid additional keywords, and must not forbid any
3607
+ SHOULD not forbid additional keywords, and MUST not forbid any
3605
3608
keywords from the Core vocabulary.
3606
3609
</t >
3607
3610
<t >
@@ -3644,10 +3647,10 @@ https://example.com/schemas/common#/$defs/count/minimum
3644
3647
keywords in that vocabulary, is shown after the main example meta-schema.
3645
3648
</t >
3646
3649
<t >
3647
- The main example meta-schema also restricts the usage of the Applicator
3650
+ The main example meta-schema also restricts the usage of the Unevaluated
3648
3651
vocabulary by forbidding the keywords prefixed with "unevaluated", which
3649
3652
are particularly complex to implement. This does not change the semantics
3650
- or set of keywords defined by the Applicator vocabulary. It just ensures
3653
+ or set of keywords defined by the other vocabularies. It just ensures
3651
3654
that schemas using this meta-schema that attempt to use the keywords
3652
3655
prefixed with "unevaluated" will fail validation against this meta-schema.
3653
3656
</t >
@@ -3682,7 +3685,7 @@ https://example.com/schemas/common#/$defs/count/minimum
3682
3685
{"$ref": "https://example.com/meta/example-vocab",
3683
3686
],
3684
3687
"patternProperties": {
3685
- "^unevaluated.*$ ": false
3688
+ "^unevaluated": false
3686
3689
},
3687
3690
"properties": {
3688
3691
"localKeyword": {
0 commit comments