{ "$schema": "http://json-schema.org/draft-04/schema#", "id": "choiceSet.json", "title": "Definitions: Choice.", "description": "Schemas in #/definitions detect or validate keys/objects used in describing Choice (Sections 3.2.7 and 3.2.8).", "definitions": { "itemsDetected" : { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Definition: items", "description": "True when the object includes items key and value of items is an array containing at least 1 item, which can be a specificResource, an externalWebResource, a uri, a textualBody or another choice/set (Sections 3.2.7 and 3.2.8).", "type": "object", "properties" : { "items" : { "type" : "array", "minItems": 1, "items": { "oneOf": [ { "$ref": "specificResource.json#/definitions/specificeResourceDetected" }, { "$ref": "bodyTarget.json#/definitions/externalWebResourceDetected" }, { "$ref": "bodyTarget.json#/definitions/textualBodyFound" }, { "$ref": "id.json#/definitions/stringUri" }, { "allOf": [ { "$ref" : "#/definitions/choiceOrSetTypeDefinition" }, { "$ref": "#/definitions/itemsDetected" } ] } ] } } }, "required": [ "items" ] }, "choiceTypeDefinition": { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Definition: Choice type", "description": "True when object has type key and object's type is 'Choice' (Section 3.2.7)", "type": "object", "properties": { "type": { "type": "string", "enum": ["Choice"] } }, "required": [ "type" ] }, "choiceOrSetTypeDefinition": { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Definition: Choice or Set type", "description": "True when object has type key and object's type is any of 'Choice' (Section 3.2.7)", "type": "object", "properties": { "type": { "type": "string", "enum": ["Choice"] } }, "required": [ "type" ] }, "choiceDetected": { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Detection: Choice", "description": "True when object's type is 'Choice' and the object has an items array (Section 3.2.7)", "type": "object", "allOf": [ { "$ref": "#/definitions/choiceTypeDefinition" }, { "$ref": "#/definitions/itemsDetected" } ] }, "choiceOrSetDetected": { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Detection: Choice or Set", "description": "True when object's type is one of Choice and the object has an items array (Section 3.2.7)", "type": "object", "allOf": [ { "$ref": "#/definitions/choiceOrSetTypeDefinition" }, { "$ref": "#/definitions/itemsDetected" } ] }, "choiceSetWithValue" : { "allOf": [ { "$ref": "#/definitions/choiceOrSetDetected" }, { "required": [ "value" ] } ] }, "choiceSetWithSource" : { "allOf": [ { "$ref": "#/definitions/choiceOrSetDetected" }, { "required": [ "source" ] } ] }, "choiceSetWithPurpose" : { "allOf": [ { "$ref": "#/definitions/choiceOrSetDetected" }, { "required": [ "purpose" ] } ] } } }