diff options
Diffstat (limited to 'testing/web-platform/tests/annotation-model/definitions/collections.json')
-rw-r--r-- | testing/web-platform/tests/annotation-model/definitions/collections.json | 428 |
1 files changed, 428 insertions, 0 deletions
diff --git a/testing/web-platform/tests/annotation-model/definitions/collections.json b/testing/web-platform/tests/annotation-model/definitions/collections.json new file mode 100644 index 0000000000..9f5b13a9f8 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/collections.json @@ -0,0 +1,428 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "collections.json", + "title": "Definitions: Annotation Collections.", + "description": "Schemas in #/definitions detect or validate keys/objects (direct children) uniquely used to describe Annotation Collections (Section 5.1 and 5.2).", + "definitions": { + + "contextValueFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid @context string included in Collection / Page description", + "description": "True when the string has value http://www.w3.org/ns/anno.jsonld (Section 5)", + "type": "string", + "enum": [ "http://www.w3.org/ns/anno.jsonld" ] + }, + + "contextValueInArrayFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid @context string found in array included in Collection / Page description", + "description": "True when the array contains a string item having value http://www.w3.org/ns/anno.jsonld (Section 5)", + "type": "array", + "not": + { "items": + { "not": + { "$ref": "#/definitions/contextValueFound" } + } + } + }, + + "annotationCollectionTypeValueRecognized": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid AnnotationCollection type value string included in Collection description", + "description": "True when the string has value 'AnnotationCollection' (Section 5.1)", + "type": "string", + "enum": [ "AnnotationCollection" ] + }, + + "annotationCollectionTypeValueInArrayRecognized": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid AnnotationCollection type in array included in Collection description", + "description": "True when the array contains a string item having value 'AnnotationCollection' (Section 5.1)", + "type": "array", + "not": + { "items": + { "not": + { "$ref": "#/definitions/annotationCollectionTypeValueRecognized" } + } + } + }, + + "annotationCollectionTypeValueFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Implementation: AnnotationCollection type", + "description": "True when the Annotation Collection has type key and 'AnnotationCollection' is a value of type (Section 5.1)", + "type": "object", + "required": [ "type" ], + "properties": { + "type": { + "oneOf": [ + { "$ref": "#/definitions/annotationCollectionTypeValueRecognized" }, + { "$ref": "#/definitions/annotationCollectionTypeValueInArrayRecognized" } + ] + } + } + }, + + "annotationPageTypeValueRecognized": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid AnnotationPage type value string included in Page description", + "description": "True when the string has value 'AnnotationPage' (Section 5.2)", + "type": "string", + "enum": [ "AnnotationPage" ] + }, + + "annotationPageTypeValueInArrayRecognized": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid AnnotationPage type in array included in Page description", + "description": "True when the array contains a string item having value 'AnnotationPage' (Section 5.2)", + "type": "array", + "not": + { "items": + { "not": + { "$ref": "#/definitions/annotationPageTypeValueRecognized" } + } + } + }, + + "annotationPageTypeValueFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Implementation: AnnotationPage type", + "description": "True when the Annotation Page has type key and 'AnnotationPage' is a value of type (Section 5.2)", + "type": "object", + "required": [ "type" ], + "properties": { + "type": { + "oneOf": [ + { "$ref": "#/definitions/annotationPageTypeValueRecognized" }, + { "$ref": "#/definitions/annotationPageTypeValueInArrayRecognized" } + ] + } + } + }, + + "labelDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: label (Annotation Collections)", + "description": "True when the object has no label or has one or more label values of type string (Section 5.1)", + "type": "object", + "properties": + { + "label": + { + "oneOf": + [ + {"type": "string" }, + {"type": "array", + "minItems": 1, + "items": {"type": "string"} + } + ] + } + } + }, + + "labelFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation Collection label", + "description": "True when the object has one or more label value(s) (Section 5.1)", + "allOf": [ + {"required": ["label"]}, + {"$ref": "#/definitions/labelDefinition"} + ] + }, + + "totalDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: total (Annotation Collections)", + "description": "True when the object has no total key or has exactly one total value of type integer greater or equal to zero (Section 5.1)", + "type": "object", + "properties": + { + "total": + { + "oneOf": + [ + {"type": "integer", + "minimum": 0 }, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items": {"type": "integer", + "minimum": 0 } + } + ] + } + } + }, + + "totalFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation Collection total key", + "description": "True when the object has exactly one total value (Section 5.1)", + "allOf": [ + {"required": ["total"]}, + {"$ref": "#/definitions/totalDefinition"} + ] + }, + + "totalMoreThanZero": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: total more than zero (Annotation Collections)", + "description": "True when the object has exactly one total value of type integer and greater than zero (Section 5.1)", + "type": "object", + "properties": + { + "total": + { + "oneOf": + [ + {"type": "integer", + "minimum": 0, + "exclusiveMinimum": true}, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items": {"type": "integer", + "minimum": 0, + "exclusiveMinimum": true} + } + ] + } + }, + "required": [ "total" ] + }, + + "firstValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: first value (Annotation Collection)", + "description": "True when the Annotation Collection has no first key or has 1 first key value that is string of format uri or has first key value that is an object of type AnnotationPage (Section 5.1)", + "type": "object", + "properties": {"first": + { "oneOf": [ + { + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "$ref": "#/definitions/annotationPageTypeValueFound" } + ] + }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "$ref": "#/definitions/annotationPageTypeValueFound" } + ] + } + } + ] + } + } + }, + + "firstFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation Collection first key", + "description": "True when the object has exactly one first value (Section 5.1)", + "allOf": [ + {"required": ["first"]}, + {"$ref": "#/definitions/firstValidIfPresent"} + ] + }, + + "firstRequiredIfTotalMoreThanZero": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "If total greater than zero, check for implementation of Annotation Collection first key", + "description": "True when the object has no total or has total = zero or has exactly one first value (Section 5.1)", + "type": "object", + "oneOf": [ + { + "allOf": [ + { "$ref": "#/definitions/totalMoreThanZero" }, + { "$ref": "#/definitions/firstFound" } + ] + }, + { "not": { "$ref": "#/definitions/totalMoreThanZero" } } + ] + }, + + "lastValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: last value (Annotation Collection)", + "description": "True when the Annotation Collection has no last key or has 1 last key value that is string of format uri (Section 5.1)", + "type": "object", + "properties": {"last": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { "$ref": "id.json#/definitions/stringUri" } + } + ] + } + } + }, + + "lastFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation Collection last key", + "description": "True when the object has exactly one last value that is string of format uri (Section 5.1)", + "allOf": [ + {"required": ["last"]}, + {"$ref": "#/definitions/lastValidIfPresent"} + ] + }, + + "partOfValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: partOf value (Annotation Page)", + "description": "True when the Annotation Page has no partOf key or has 1 partOf key value that is string of format uri (Section 5.2)", + "type": "object", + "properties": {"partOf": + { "oneOf": [ + { "$ref": "id.json#/definitions/arraySingleStringUri" }, + { "$ref": "id.json#/definitions/idValueFound" } + ] + } + } + }, + + "partOfFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation Page partOf key", + "description": "True when the object has exactly one partOf value that is string of format uri (Section 5.2)", + "allOf": [ + {"required": ["partOf"]}, + {"$ref": "#/definitions/partOfValidIfPresent"} + ] + }, + + "nextValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: next value (Annotation Page)", + "description": "True when the Annotation Page has no next key or has 1 next key value that is string of format uri (Section 5.2)", + "type": "object", + "properties": {"next": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { "$ref": "id.json#/definitions/stringUri" } + } + ] + } + } + }, + + "nextFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation Page next key", + "description": "True when the object has exactly one next value that is string of format uri (Section 5.2)", + "allOf": [ + {"required": ["next"]}, + {"$ref": "#/definitions/nextValidIfPresent"} + ] + }, + + "prevValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: prev value (Annotation Page)", + "description": "True when the Annotation Page has no prev key or has 1 prev key value that is string of format uri (Section 5.2)", + "type": "object", + "properties": {"prev": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { "$ref": "id.json#/definitions/stringUri" } + } + ] + } + } + }, + + "prevFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation Page prev key", + "description": "True when the object has exactly one prev value that is string of format uri (Section 5.2)", + "allOf": [ + {"required": ["prev"]}, + {"$ref": "#/definitions/prevValidIfPresent"} + ] + }, + + "startIndexDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: startIndex (Annotation Pages)", + "description": "True when the object has no startIndex key or has exactly one startIndex value of type integer greater or equal to zero (Section 5.2)", + "type": "object", + "properties": + { + "startIndex": + { + "oneOf": + [ + {"type": "integer", + "minimum": 0 }, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items": {"type": "integer", + "minimum": 0 } + } + ] + } + } + }, + + "startIndexFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation Page startIndex key", + "description": "True when the object has exactly one startIndex value (Section 5.2)", + "allOf": [ + {"required": ["startIndex"]}, + {"$ref": "#/definitions/startIndexDefinition"} + ] + }, + + "itemsFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation Page items key", + "description": "True when the object has items key with value that is an array of strings of format uri and/or objects of type Annotation (Section 5.2)", + "type": "object", + "properties": + { "items": + { "type": "array", + "items": { + "oneOf":[ + { "$ref": "annotations.json#/definitions/annotationTypeValueFound" }, + { "type": "string", + "format": "uri" } + ] + } + } + }, + "required": [ "items" ] + } + + } +} |