diff --git a/jsonschema-core.xml b/jsonschema-core.xml
index 2bacfd2a..f4bd28ab 100644
--- a/jsonschema-core.xml
+++ b/jsonschema-core.xml
@@ -656,8 +656,9 @@
Other keywords may take into account the dynamic scope that
exists during the evaluation of a schema, typically together
- with an instance document. The outermost dynamic scope is the
- root schema of the schema document in which processing begins.
+ with an instance document.
+ The outermost dynamic scope is the schema object at
+ which processing begins, even if it is not a schema resource root.
The path from this root schema to any particular keyword (that
includes any "$ref" and "$dynamicRef" keywords that may have
been resolved) is considered the keyword's "validation path."
@@ -1632,7 +1633,7 @@
When schemas are downloaded,
- for example by a generic user-agent that doesn't know until runtime which schemas to download,
+ for example by a generic user-agent that does not know until runtime which schemas to download,
see Usage for Hypermedia.
@@ -2083,17 +2084,11 @@
"additionalProperties", whose behavior is defined in terms of
"properties" and "patternProperties"
-
- "unevaluatedProperties", whose behavior is defined in terms of
- annotations from "properties", "patternProperties",
- "additionalProperties" and itself
-
"items", whose behavior is defined in terms of "prefixItems"
- "unevaluatedItems", whose behavior is defined in terms of annotations
- from "prefixItems", "items", "contains", and itself
+ "contains", whose behavior is defined in terms of "minContains"
@@ -2380,10 +2375,7 @@
The annotation result of this keyword is the set of instance
- property names matched by this keyword. Annotation results
- for "properties" keywords from multiple schemas applied to
- the same instance location are combined by taking the union
- of the sets.
+ property names matched by this keyword.
Omitting this keyword has the same assertion behavior as
@@ -2406,10 +2398,7 @@
The annotation result of this keyword is the set of instance
- property names matched by this keyword. Annotation results
- for "patternProperties" keywords from multiple schemas applied to
- the same instance location are combined by taking the union
- of the sets.
+ property names matched by this keyword.
Omitting this keyword has the same assertion behavior as
@@ -2436,9 +2425,6 @@
The annotation result of this keyword is the set of instance
property names validated by this keyword's subschema.
- Annotation results for "additionalProperties" keywords from
- multiple schemas applied to the same instance location are combined
- by taking the union of the sets.
Omitting this keyword has the same assertion behavior as
@@ -2521,6 +2507,26 @@
before the next to indicate the same syntax and semantics
as those listed here.
+
+
+
+ Schema keywords typically operate independently, without
+ affecting each other's outcomes. However, the keywords in this
+ vocabulary are notable exceptions:
+
+
+ "unevaluatedItems", whose behavior is defined in terms of annotations
+ from "prefixItems", "items", "contains", and itself
+
+
+ "unevaluatedProperties", whose behavior is defined in terms of
+ annotations from "properties", "patternProperties",
+ "additionalProperties" and itself
+
+
+
+
+
The value of "unevaluatedItems" MUST be a valid JSON Schema.
@@ -2530,7 +2536,7 @@
adjacent keywords that apply to the instance location being validated.
Specifically, the annotations from "prefixItems", "items", and "contains",
which can come from those keywords when they are adjacent to the
- "unevaluatedItems" keyword. Those two annotations, as well as
+ "unevaluatedItems" keyword. Those three annotations, as well as
"unevaluatedItems", can also result from any and all adjacent
in-place applicator keywords.
This includes but is not limited to the in-place applicators
@@ -2599,9 +2605,6 @@
The annotation result of this keyword is the set of instance
property names validated by this keyword's subschema.
- Annotation results for "unevaluatedProperties" keywords from
- multiple schemas applied to the same instance location are combined
- by taking the union of the sets.
Omitting this keyword has the same assertion behavior as
@@ -2648,10 +2651,10 @@
structure that matches the exact structure of the schema.
- An implementation SHOULD provide at least the "flag", "basic", or "detailed"
+ An implementation SHOULD provide at least one of the "flag", "basic", or "detailed"
format and MAY provide the "verbose" format. If it provides one or more of the
- complex formats, it MUST also provide the "flag" format. Implementations SHOULD
- specify in their documentation which formats they support.
+ "detailed" or "verbose" formats, it MUST also provide the "flag" format.
+ Implementations SHOULD specify in their documentation which formats they support.
@@ -2704,7 +2707,7 @@
Note that "absolute" here is in the sense of "absolute filesystem path"
(meaning the complete location) rather than the "absolute-URI"
terminology from RFC 3986 (meaning with scheme but without fragment).
- Keyword absolute locations will always have a fragment in order to
+ Keyword absolute locations will have a fragment in order to
identify the keyword.
@@ -2716,8 +2719,8 @@ https://example.com/schemas/common#/$defs/count/minimum
- This information MAY be omitted only if either the relative location contains
- no references or if the schema does not declare an absolute URI as its "$id".
+ This information MAY be omitted only if either the dynamic scope did not pass
+ over a reference or if the schema does not declare an absolute URI as its "$id".
The JSON key for this information is "absoluteKeywordLocation".
@@ -3083,7 +3086,7 @@ https://example.com/schemas/common#/$defs/count/minimum
Instances and schemas are both frequently written by untrusted third parties, to be
deployed on public Internet servers.
- Validators should take care that the parsing and validating against schemas doesn't consume excessive
+ Validators should take care that the parsing and validating against schemas does not consume excessive
system resources.
Validators MUST NOT fall into an infinite loop.
@@ -3093,7 +3096,7 @@ https://example.com/schemas/common#/$defs/count/minimum
excessive consumption of system resources in such a scenario.
- Servers MUST ensure that malicious parties can't change the functionality of
+ Servers MUST ensure that malicious parties cannot change the functionality of
existing schemas by uploading a schema with a pre-existing or very similar "$id".
@@ -3599,9 +3602,9 @@ https://example.com/schemas/common#/$defs/count/minimum
behavior is undefined.
- Vocabulary authors should provide a meta-schema that validates the
+ Vocabulary authors SHOULD provide a meta-schema that validates the
expected usage of the vocabulary's keywords on their own. Such meta-schemas
- should not forbid additional keywords, and must not forbid any
+ SHOULD not forbid additional keywords, and MUST not forbid any
keywords from the Core vocabulary.
@@ -3644,10 +3647,10 @@ https://example.com/schemas/common#/$defs/count/minimum
keywords in that vocabulary, is shown after the main example meta-schema.
- The main example meta-schema also restricts the usage of the Applicator
+ The main example meta-schema also restricts the usage of the Unevaluated
vocabulary by forbidding the keywords prefixed with "unevaluated", which
are particularly complex to implement. This does not change the semantics
- or set of keywords defined by the Applicator vocabulary. It just ensures
+ or set of keywords defined by the other vocabularies. It just ensures
that schemas using this meta-schema that attempt to use the keywords
prefixed with "unevaluated" will fail validation against this meta-schema.
@@ -3682,7 +3685,7 @@ https://example.com/schemas/common#/$defs/count/minimum
{"$ref": "https://example.com/meta/example-vocab",
],
"patternProperties": {
- "^unevaluated.*$": false
+ "^unevaluated": false
},
"properties": {
"localKeyword": {