summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/annotation-model/definitions/collections.json
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/annotation-model/definitions/collections.json')
-rw-r--r--testing/web-platform/tests/annotation-model/definitions/collections.json428
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" ]
+ }
+
+ }
+}