Source code

Revision control

Copy as Markdown

Other Tools

{
"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": {
"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",
},
"contextValueInArrayFound": {
"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": {
"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": {
"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":
{
"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": {
"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": {
"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":
{
"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":
{
"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":
{
"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":
{
"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":
{
"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":
{
"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":
"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":
{
"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":
{
"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":
"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":
{
"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":
"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":
{
"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":
"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":
{
"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":
"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":
{
"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":
{
"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":
{
"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":
{
"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" ]
}
}
}