Skip to content

Commit 96ff071

Browse files
committed
Move "unevaluated*" into a separate vocabulary
This change just moves things to the right new section, which includes some vocabulary section boilerplate. Further changes will modify the contents of the moved sections appropriately.
1 parent 8c6ab0e commit 96ff071

File tree

1 file changed

+118
-96
lines changed

1 file changed

+118
-96
lines changed

jsonschema-core.xml

Lines changed: 118 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -2350,52 +2350,6 @@
23502350
</t>
23512351
</section>
23522352

2353-
<section title="unevaluatedItems" anchor="unevaluatedItems">
2354-
<t>
2355-
The value of "unevaluatedItems" MUST be a valid JSON Schema.
2356-
</t>
2357-
<t>
2358-
The behavior of this keyword depends on the annotation results of
2359-
adjacent keywords that apply to the instance location being validated.
2360-
Specifically, the annotations from "prefixItems", "items", and "contains",
2361-
which can come from those keywords when they are adjacent to the
2362-
"unevaluatedItems" keyword. Those two annotations, as well as
2363-
"unevaluatedItems", can also result from any and all adjacent
2364-
<xref target="in-place">in-place applicator</xref> keywords.
2365-
This includes but is not limited to the in-place applicators
2366-
defined in this document.
2367-
</t>
2368-
<t>
2369-
If no relevant annotations are present, the "unevaluatedItems"
2370-
subschema MUST be applied to all locations in the array.
2371-
If a boolean true value is present from any of the relevant annotations,
2372-
"unevaluatedItems" MUST be ignored. Otherwise, the subschema
2373-
MUST be applied to any index greater than the largest annotation
2374-
value for "prefixItems", which does not appear in any annotation
2375-
value for "contains".
2376-
</t>
2377-
<t>
2378-
This means that "prefixItems", "items", "contains", and all in-place
2379-
applicators MUST be evaluated before this keyword can be evaluated.
2380-
Authors of extension keywords MUST NOT define an in-place applicator
2381-
that would need to be evaluated before this keyword.
2382-
</t>
2383-
<t>
2384-
If the "unevaluatedItems" subschema is applied to any
2385-
positions within the instance array, it produces an
2386-
annotation result of boolean true, analogous to the
2387-
behavior of "items".
2388-
</t>
2389-
<t>
2390-
Omitting this keyword has the same assertion behavior as
2391-
an empty schema.
2392-
</t>
2393-
<t>
2394-
Implementations that do not collect annotations MUST raise an error
2395-
upon encountering this keyword.
2396-
</t>
2397-
</section>
2398-
23992353
<section title="contains">
24002354
<t>
24012355
The value of this keyword MUST be a valid JSON Schema.
@@ -2503,56 +2457,6 @@
25032457
</t>
25042458
</section>
25052459

2506-
<section title="unevaluatedProperties" anchor="unevaluatedProperties">
2507-
<t>
2508-
The value of "unevaluatedProperties" MUST be a valid JSON Schema.
2509-
</t>
2510-
<t>
2511-
The behavior of this keyword depends on the annotation results of
2512-
adjacent keywords that apply to the instance location being validated.
2513-
Specifically, the annotations from "properties", "patternProperties",
2514-
and "additionalProperties", which can come from those keywords when
2515-
they are adjacent to the "unevaluatedProperties" keyword. Those
2516-
three annotations, as well as "unevaluatedProperties", can also
2517-
result from any and all adjacent
2518-
<xref target="in-place">in-place applicator</xref> keywords.
2519-
This includes but is not limited to the in-place applicators
2520-
defined in this document.
2521-
</t>
2522-
<t>
2523-
Validation with "unevaluatedProperties" applies only to the child
2524-
values of instance names that do not appear in the "properties",
2525-
"patternProperties", "additionalProperties", or
2526-
"unevaluatedProperties" annotation results that apply to the
2527-
instance location being validated.
2528-
</t>
2529-
<t>
2530-
For all such properties, validation succeeds if the child instance
2531-
validates against the "unevaluatedProperties" schema.
2532-
</t>
2533-
<t>
2534-
This means that "properties", "patternProperties", "additionalProperties",
2535-
and all in-place applicators MUST be evaluated before this keyword can
2536-
be evaluated. Authors of extension keywords MUST NOT define an in-place
2537-
applicator that would need to be evaluated before this keyword.
2538-
</t>
2539-
<t>
2540-
The annotation result of this keyword is the set of instance
2541-
property names validated by this keyword's subschema.
2542-
Annotation results for "unevaluatedProperties" keywords from
2543-
multiple schemas applied to the same instance location are combined
2544-
by taking the union of the sets.
2545-
</t>
2546-
<t>
2547-
Omitting this keyword has the same assertion behavior as
2548-
an empty schema.
2549-
</t>
2550-
<t>
2551-
Implementations that do not collect annotations MUST raise an error
2552-
upon encountering this keyword.
2553-
</t>
2554-
</section>
2555-
25562460
<section title="propertyNames">
25572461
<t>
25582462
The value of "propertyNames" MUST be a valid JSON Schema.
@@ -2570,6 +2474,124 @@
25702474
</section>
25712475
</section>
25722476

2477+
<section title="A Vocabulary for Unevaluated Locations">
2478+
<t>
2479+
Meta-schemas that do not use "$vocabulary" SHOULD be considered to
2480+
require this vocabulary as if its URI were present with a value of true.
2481+
</t>
2482+
<t>
2483+
The current URI for this vocabulary, known as the Unevaluated Applicator
2484+
vocabulary, is:
2485+
&lt;https://json-schema.org/draft/2019-09/vocab/unevaluated&gt;.
2486+
</t>
2487+
<t>
2488+
The current URI for the corresponding meta-schema is:
2489+
<eref target="https://json-schema.org/draft/2019-09/meta/unevaluated"/>.
2490+
</t>
2491+
<t>
2492+
Updated vocabulary and meta-schema URIs MAY be published between
2493+
specification drafts in order to correct errors. Implementations
2494+
SHOULD consider URIs dated after this specification draft and
2495+
before the next to indicate the same syntax and semantics
2496+
as those listed here.
2497+
</t>
2498+
<section title="unevaluatedItems" anchor="unevaluatedItems">
2499+
<t>
2500+
The value of "unevaluatedItems" MUST be a valid JSON Schema.
2501+
</t>
2502+
<t>
2503+
The behavior of this keyword depends on the annotation results of
2504+
adjacent keywords that apply to the instance location being validated.
2505+
Specifically, the annotations from "prefixItems", "items", and "contains",
2506+
which can come from those keywords when they are adjacent to the
2507+
"unevaluatedItems" keyword. Those two annotations, as well as
2508+
"unevaluatedItems", can also result from any and all adjacent
2509+
<xref target="in-place">in-place applicator</xref> keywords.
2510+
This includes but is not limited to the in-place applicators
2511+
defined in this document.
2512+
</t>
2513+
<t>
2514+
If no relevant annotations are present, the "unevaluatedItems"
2515+
subschema MUST be applied to all locations in the array.
2516+
If a boolean true value is present from any of the relevant annotations,
2517+
"unevaluatedItems" MUST be ignored. Otherwise, the subschema
2518+
MUST be applied to any index greater than the largest annotation
2519+
value for "prefixItems", which does not appear in any annotation
2520+
value for "contains".
2521+
</t>
2522+
<t>
2523+
This means that "prefixItems", "items", "contains", and all in-place
2524+
applicators MUST be evaluated before this keyword can be evaluated.
2525+
Authors of extension keywords MUST NOT define an in-place applicator
2526+
that would need to be evaluated before this keyword.
2527+
</t>
2528+
<t>
2529+
If the "unevaluatedItems" subschema is applied to any
2530+
positions within the instance array, it produces an
2531+
annotation result of boolean true, analogous to the
2532+
behavior of "items".
2533+
</t>
2534+
<t>
2535+
Omitting this keyword has the same assertion behavior as
2536+
an empty schema.
2537+
</t>
2538+
<t>
2539+
Implementations that do not collect annotations MUST raise an error
2540+
upon encountering this keyword.
2541+
</t>
2542+
</section>
2543+
2544+
<section title="unevaluatedProperties" anchor="unevaluatedProperties">
2545+
<t>
2546+
The value of "unevaluatedProperties" MUST be a valid JSON Schema.
2547+
</t>
2548+
<t>
2549+
The behavior of this keyword depends on the annotation results of
2550+
adjacent keywords that apply to the instance location being validated.
2551+
Specifically, the annotations from "properties", "patternProperties",
2552+
and "additionalProperties", which can come from those keywords when
2553+
they are adjacent to the "unevaluatedProperties" keyword. Those
2554+
three annotations, as well as "unevaluatedProperties", can also
2555+
result from any and all adjacent
2556+
<xref target="in-place">in-place applicator</xref> keywords.
2557+
This includes but is not limited to the in-place applicators
2558+
defined in this document.
2559+
</t>
2560+
<t>
2561+
Validation with "unevaluatedProperties" applies only to the child
2562+
values of instance names that do not appear in the "properties",
2563+
"patternProperties", "additionalProperties", or
2564+
"unevaluatedProperties" annotation results that apply to the
2565+
instance location being validated.
2566+
</t>
2567+
<t>
2568+
For all such properties, validation succeeds if the child instance
2569+
validates against the "unevaluatedProperties" schema.
2570+
</t>
2571+
<t>
2572+
This means that "properties", "patternProperties", "additionalProperties",
2573+
and all in-place applicators MUST be evaluated before this keyword can
2574+
be evaluated. Authors of extension keywords MUST NOT define an in-place
2575+
applicator that would need to be evaluated before this keyword.
2576+
</t>
2577+
<t>
2578+
The annotation result of this keyword is the set of instance
2579+
property names validated by this keyword's subschema.
2580+
Annotation results for "unevaluatedProperties" keywords from
2581+
multiple schemas applied to the same instance location are combined
2582+
by taking the union of the sets.
2583+
</t>
2584+
<t>
2585+
Omitting this keyword has the same assertion behavior as
2586+
an empty schema.
2587+
</t>
2588+
<t>
2589+
Implementations that do not collect annotations MUST raise an error
2590+
upon encountering this keyword.
2591+
</t>
2592+
</section>
2593+
</section>
2594+
25732595
<section title="Output Formatting" anchor="output">
25742596
<t>
25752597
JSON Schema is defined to be platform-independent. As such, to increase compatibility

0 commit comments

Comments
 (0)