| { |
| "$schema": "http://json-schema.org/draft-04/schema#", |
| "id": "4.2-textDataPositionSelectorValid.json", |
| "assertionType": "must", |
| "expectedResult": "valid", |
| "onUnexpectedResult" : "failAndContinue", |
| "errorMessage": "ERROR: Annotation contains a Text Position or Data Position selector that is NOT of format uri and NOT an object having a value key with a single sting value.", |
| "title": "If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", |
| "description": "True when no Fragment, Css or XPath selectors present or all such selectors values are of format uri or are objects having a both start and end keys, each with a single non-negative integer value. (Section 4.2)", |
| "type": "object", |
| "patternProperties": |
| { |
| "^(body|target)$": |
| { |
| "oneOf": |
| [ |
| {"$ref": "id.json#/definitions/stringUri" }, |
| { |
| "allOf": |
| [ |
| { "$ref": "#/definitions/selectorSchema" }, |
| { "$ref": "#/definitions/itemsSchema" } |
| ] |
| }, |
| { |
| "type": "array", |
| "minItems": 1, |
| "items": |
| { |
| "oneOf": |
| [ |
| {"$ref": "id.json#/definitions/stringUri" }, |
| { |
| "allOf": |
| [ |
| { "$ref": "#/definitions/selectorSchema" }, |
| { "$ref": "#/definitions/itemsSchema" } |
| ] |
| } |
| ] |
| } |
| } |
| ] |
| } |
| }, |
| "definitions": |
| { |
| "selectorSchema": |
| { |
| "type": "object", |
| "properties": |
| { |
| "selector": |
| { |
| "oneOf": |
| [ |
| {"$ref": "id.json#/definitions/stringUri" }, |
| { |
| "type":"object", |
| "allOf": |
| [ |
| { "$ref": "specificResource.json#/definitions/textPositionSelectorTypeValidIfPresent" }, |
| { "$ref": "specificResource.json#/definitions/dataPositionSelectorTypeValidIfPresent" } |
| ] |
| }, |
| { |
| "type": "array", |
| "minItems": 1, |
| "items": |
| { |
| "oneOf": |
| [ |
| {"$ref": "id.json#/definitions/stringUri" }, |
| { |
| "type":"object", |
| "allOf": |
| [ |
| { "$ref": "specificResource.json#/definitions/textPositionSelectorTypeValidIfPresent" }, |
| { "$ref": "specificResource.json#/definitions/dataPositionSelectorTypeValidIfPresent" } |
| ] |
| } |
| ] |
| } |
| } |
| ] |
| } |
| } |
| }, |
| |
| "itemsSchema": |
| { |
| "type": "object", |
| "properties": |
| { |
| "items": |
| { |
| "type": "array", |
| "minItems": 1, |
| "items": { |
| "oneOf": |
| [ |
| {"$ref": "id.json#/definitions/stringUri" }, |
| {"$ref": "#/definitions/selectorSchema" } |
| ] |
| } |
| } |
| } |
| } |
| } |
| } |