diff --git a/jsonschema-hyperschema.xml b/jsonschema-hyperschema.xml index 53910bbf..eb1cb5e7 100644 --- a/jsonschema-hyperschema.xml +++ b/jsonschema-hyperschema.xml @@ -175,32 +175,6 @@ relations for the instance, with URIs incorporating values from the instance. - -
- - Hyper-schema keywords can be applied when the instance is valid against - the schema that includes those keywords. - - - Hyper-schemas MUST NOT be applied to an instance if the instance fails to - validate against the validation keywords within or containing the hyper-schema. - Hyper-schema keywords in branches of an "anyOf", "oneOf", or "if"/"then"/"else" - that do not validate, or in a "dependencies" subschema that is not relevant - to the instance, MUST be ignored. - - - Hyper-schema keywords in a subschema contained within a "not", at any depth, - including any number of intervening additional "not" subschemas, MUST be - ignored. - - - If the subschema for a "contains" keyword contains hyper-schema keywords they - MUST be applied to all array elements that validate against the schema. While - finding a single validating element is sufficient to determine the validation - outcome, when hyper-schema keywords are present, the subschema MUST be evaluated - against all array elements. - -
@@ -211,6 +185,17 @@
+ + Hyper-schema keywords can be applied when the instance is valid against + the schema that includes those keywords, as outlined in + Section 10.1 of JSON Schema validation. + + + When multiple subschemas are applicable to a given sub-instance, all "link" + arrays MUST be concatenated, in any order, into a single array. Each object + in the resulting array MUST retain its own list of applicable "base" values, + in resolution order, from the same schema and any parent schemas. +
If present, this keyword is resolved against the current URI base that the diff --git a/jsonschema-validation.xml b/jsonschema-validation.xml index 780dd7d8..6d849bc7 100644 --- a/jsonschema-validation.xml +++ b/jsonschema-validation.xml @@ -769,106 +769,6 @@
-
-
- - This keyword's value MUST be an object. - Each member value of this object MUST be a valid JSON Schema. - - - This keyword plays no role in validation per se. Its role is to provide - a standardized location for schema authors to inline JSON Schemas into a - more general schema. - - - - As an example, here is a schema describing an array of positive - integers, where the positive integer constraint is a subschema in - "definitions": - -
- - - -
-
-
- -
- - The value of both of these keywords MUST be a string. - - - Both of these keywords can be used to decorate a user interface with - information about the data produced by this user interface. A title will - preferably be short, whereas a description will provide explanation about - the purpose of the instance described by this schema. - -
- -
- - There are no restrictions placed on the value of this keyword. - - - This keyword can be used to supply a default JSON value associated with a - particular schema. It is RECOMMENDED that a default value be valid against - the associated schema. - -
- -
- - The value of this keyword MUST be a boolean. - - - If it has a value of boolean true, this keyword indicates that the value of the - instance is managed exclusively by the owning authority, and attempts by an - application to modify the value of this property are expected to be ignored or - rejected by that owning authority. - - - For example, this property would be used to mark a database-generated serial - number as read-only. - - - This keyword can be used to assist in user interface instance generation. - - - Omitting this keyword has the same behavior as a value of false. - -
- -
- - The value of this keyword MUST be an array. - There are no restrictions placed on the values within the array. - - - This keyword can be used to provide sample JSON values associated with a - particular schema, for the purpose of illustrating usage. It is - RECOMMENDED that these values be valid against the associated schema. - - - Implementations MAY use the value of "default", if present, as - an additional example. If "examples" is absent, "default" - MAY still be used in this manner. - -
- -
-
@@ -1200,6 +1100,181 @@
+
+ + The "definitions" keywords provides a standardized location for schema + authors to inline re-usable JSON Schemas into a more general schema. + The keyword does not directly affect the validation result. + + + This keyword's value MUST be an object. + Each member value of this object MUST be a valid JSON Schema. + + + As an example, here is a schema describing an array of positive + integers, where the positive integer constraint is a subschema in + "definitions": + +
+ + + +
+
+
+ +
+ + Schema validation is a useful mechanism for annotating instance data + with additional information. This section describes the rules for + determining when and how annotations apply to an instance, and specifies + a small general-purpose annotation vocabulary. + + + Additional vocabularies SHOULD make use of this mechanism for applying + their keywords to instances. + +
+ + Annotations can be applied to an instance when it is valid against + the schema that includes the annotation keywords. For any given location + in the instance (referred to as a sub-instance), each (sub)schema against + which it successfully validates is considered to be applicable + to that sub-instance. The (sub)schema is said to be attached + to each sub-instance to which it applies. + + + A validation implementation MAY choose to implement determining subschema + applicability and providing access to the value(s) of applicable annotation + keywords. Implementation of this feature MAY instead be done separately. + + + Since many subschemas can be applicable to any single sub-instance, each + annotation keyword or vocabulary needs to specify how to handle multiple + occurrences with different values. In the absence of keyword-specific + handling rules, an implementation MUST collect all values and make them + available as a data structure in which order is not significant and items + need not be unique. + +
+ + Annotations in branches of an "anyOf", "oneOf", or "if"/"then"/"else" + that do not validate, or in a "dependencies" subschema that is not relevant + to the instance, MUST be ignored. + + + Annotations in a subschema contained within a "not", at any depth, + including any number of intervening additional "not" subschemas, MUST be + ignored. + +
+
+ + Schema keywords MUST be applied to all possible sub-instances when + considering annotations, even if such application can be short-circuited + when only the overall validation result is needed. + + + An example of this is the "contains" keyword, which need only be evaluated + against array elements until it produces at least one successful outcome + in order to be implemented. However, when annotations are considered, + it must be checked against every array element, and the annotations MUST + be applied to every element that successfully validates against the + "contains" susbschema. + +
+
+ +
+ + These general-purpose annotation keywords provide commonly used information + for documentation and user interface display purposes. They are not intended + to form a comprehensive set of features. Rather, additional vocabularies + can be defined for more complex annotation-based applications. + +
+ + The value of both of these keywords MUST be a string. + + + Both of these keywords can be used to decorate a user interface with + information about the data produced by this user interface. A title will + preferably be short, whereas a description will provide explanation about + the purpose of the instance described by this schema. + +
+ +
+ + There are no restrictions placed on the value of this keyword. When + multiple occurrences of this keyword are applicable to a single + sub-instance, implementations SHOULD remove duplicates. + + + This keyword can be used to supply a default JSON value associated with a + particular schema. It is RECOMMENDED that a default value be valid against + the associated schema. + +
+ +
+ + The value of this keyword MUST be a boolean. When multiple occurrences + of this keyword are applicable to a single sub-instance, the resulting + value MUST be true if any occurrence specifies a true value, and MUST + be false otherwise. + + + If it has a value of boolean true, this keyword indicates that the value + of the instance is managed exclusively by the owning authority, and + attempts by an application to modify the value of this property are + expected to be ignored or rejected by that owning authority. + + + For example, this property would be used to mark a database-generated serial + number as read-only. + + + This keyword can be used to assist in user interface instance generation. + + + Omitting this keyword has the same behavior as a value of false. + +
+ +
+ + The value of this keyword MUST be an array. + There are no restrictions placed on the values within the array. + When multiple occurrences of this keyword are applicable to a single + sub-instance, implementations MUST provide a flat array of all + values rather than an array of arrays. + + + This keyword can be used to provide sample JSON values associated with a + particular schema, for the purpose of illustrating usage. It is + RECOMMENDED that these values be valid against the associated schema. + + + Implementations MAY use the value(s) of "default", if present, as + an additional example. If "examples" is absent, "default" + MAY still be used in this manner. + +
+
+
+
JSON Schema validation defines a vocabulary for JSON Schema core and concerns all