Skip to content

Commit f1422a0

Browse files
committed
update unevaluated* dependency sections to remove notions of annotation control
1 parent 51285b3 commit f1422a0

File tree

1 file changed

+27
-37
lines changed

1 file changed

+27
-37
lines changed

jsonschema-core.md

Lines changed: 27 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1645,27 +1645,23 @@ and the instance value are affected by this keyword.
16451645
This keyword produces an annotation value which is the largest index to which
16461646
this keyword applied a subschema. The value MAY be a boolean true if a subschema
16471647
was applied to every index of the instance, such as is produced by the `items`
1648-
keyword. This annotation affects the behavior of `items` and `unevaluatedItems`.
1648+
keyword.
1649+
1650+
The presence of this keyword affects the behaviors of [`items`](#items) and
1651+
[`unevaluatedItems`](#unevaluateditems).
16491652

16501653
##### `items` {#items}
16511654

16521655
The value of `items` MUST be a valid JSON Schema.
16531656

1654-
This keyword applies its subschema to all instance elements at indexes greater
1655-
than the length of the `prefixItems` array in the same schema object, as
1656-
reported by the annotation result of that `prefixItems` keyword. If no such
1657-
annotation result exists, `items` applies its subschema to all instance array
1658-
elements.[^11]
1659-
1660-
[^11]: Note that the behavior of `items` without `prefixItems` is identical to
1661-
that of the schema form of `items` in prior drafts. When `prefixItems` is
1662-
present, the behavior of `items` is identical to the former `additionalItems`
1663-
keyword.
1657+
This keyword applies its subschema to all instance elements at indices greater
1658+
than the length of the `prefixItems` array in the same schema object. If
1659+
`prefixItems` does not exist within the same schema object, `items` applies its
1660+
subschema to all instance array elements.
16641661

16651662
If the `items` subschema is applied to any positions within the instance array,
16661663
it produces an annotation result of boolean true, indicating that all remaining
1667-
array elements have been evaluated against this keyword's subschema. This
1668-
annotation affects the behavior of `unevaluatedItems`.
1664+
array elements have been evaluated against this keyword's subschema.
16691665

16701666
Omitting this keyword has the same assertion behavior as an empty schema.
16711667

@@ -1674,6 +1670,9 @@ that produces the same effect, such as by directly checking for the presence and
16741670
size of a `prefixItems` array. Implementations that do not support annotation
16751671
collection MUST do so.
16761672

1673+
The presence of this keyword affects the behavior of
1674+
[`unevaluatedItems`](#unevaluateditems).
1675+
16771676
#### Keywords for Applying Subschemas to Objects
16781677

16791678
##### `properties`
@@ -1685,11 +1684,13 @@ Validation succeeds if, for each name that appears in both the instance and as a
16851684
name within this keyword's value, the child instance for that name successfully
16861685
validates against the corresponding schema.
16871686

1687+
Omitting this keyword has the same assertion behavior as an empty object.
1688+
16881689
The annotation result of this keyword is the set of instance property names
1689-
which are also present under this keyword. This annotation affects the behavior
1690-
of `additionalProperties` and `unevaluatedProperties`.
1690+
which are also present under this keyword.
16911691

1692-
Omitting this keyword has the same assertion behavior as an empty object.
1692+
The presence of this keyword affects the behavior of
1693+
[`additionalProperties`(#additionalProperties) and [`unevaluatedProperties`](#unevaluatedproperties).
16931694

16941695
##### `patternProperties`
16951696

@@ -1704,11 +1705,13 @@ instance for that name successfully validates against each schema that
17041705
corresponds to a matching regular expression. Recall: regular expressions are
17051706
not implicitly anchored.
17061707

1708+
Omitting this keyword has the same assertion behavior as an empty object.
1709+
17071710
The annotation result of this keyword is the set of instance property names
1708-
matched by at least one property under this keyword. This annotation affects the
1709-
behavior of `additionalProperties` and `unevaluatedProperties`.
1711+
matched by at least one property under this keyword.
17101712

1711-
Omitting this keyword has the same assertion behavior as an empty object.
1713+
The presence of this keyword affects the behavior of
1714+
[`additionalProperties`(#additionalproperties) and [`unevaluatedProperties`](#unevaluatedproperties).
17121715

17131716
##### `additionalProperties` {#additionalproperties}
17141717

@@ -1723,26 +1726,13 @@ that do not appear in the annotation results of either `properties` or
17231726
For all such properties, validation succeeds if the child instance validates
17241727
against the `additionalProperties` schema.
17251728

1726-
The annotation result of this keyword is the set of instance property names
1727-
validated by this keyword's subschema. This annotation affects the behavior of
1728-
`unevaluatedProperties`.
1729-
17301729
Omitting this keyword has the same assertion behavior as an empty schema.
17311730

1732-
Implementations MAY choose to implement or optimize this keyword in another way
1733-
that produces the same effect, such as by directly checking the names in
1734-
`properties` and the patterns in `patternProperties` against the instance
1735-
property set. Implementations that do not support annotation collection MUST do
1736-
so.[^12]
1737-
1738-
[^12]: In defining this option, it seems there is the potential for ambiguity in
1739-
the output format. The ambiguity does not affect validation results, but it does
1740-
affect the resulting output format. The ambiguity allows for multiple valid
1741-
output results depending on whether annotations are used or a solution that
1742-
"produces the same effect" as draft-07. It is understood that annotations from
1743-
failing schemas are dropped. See our [Decision
1744-
Record](https://github.com/json-schema-org/json-schema-spec/tree/HEAD/adr/2022-04-08-cref-for-ambiguity-and-fix-later-gh-spec-issue-1172.md)
1745-
for further details.
1731+
The annotation result of this keyword is the set of instance property names
1732+
validated by this keyword's subschema.
1733+
1734+
The presence of this keyword affects the behavior of
1735+
[`unevaluatedProperties`](#unevaluatedproperties).
17461736

17471737
##### `propertyNames`
17481738

0 commit comments

Comments
 (0)