1091 lines
35 KiB
JSON
1091 lines
35 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"id": "bodyTarget.json",
|
|
"title": "Definitions: Bodies and Targets.",
|
|
"description": "Schemas in #/definitions detect or validate keys, objects or constraints variously applicable to Bodies and/or Targets (Section 3.2.1 - 3.2.6). Excludes Choice, Set and Specific Resources.",
|
|
"definitions":
|
|
{
|
|
"externalWebResourceDetected":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Definition: External Web Resource",
|
|
"description": "True when the object is an External Web Resource, i.e., includes an id that is of format uri but does not contain source (Specific Resource) keys (Sections 3.2.1, 3.2.4, 4).",
|
|
"type": "object",
|
|
"allOf": [ {"$ref": "id.json#/definitions/idValueFound"} ],
|
|
"not":
|
|
{ "anyOf":
|
|
[
|
|
{ "required": ["source"] },
|
|
{ "required": ["target"] }
|
|
]
|
|
}
|
|
},
|
|
|
|
"sourceEwrDetected":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source": {"$ref": "#/definitions/externalWebResourceDetected"}
|
|
}
|
|
},
|
|
|
|
"itemEwrDetected":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items": {"not": { "$ref": "#/definitions/externalWebResourceDetected" } } }
|
|
}
|
|
}
|
|
},
|
|
|
|
"textualBodyFound" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Definition: Embedded Textual Body",
|
|
"description": "True when the object is an Embedded Textual Body, i.e., includes the value key (Section 3.2.4).",
|
|
"type" : "object",
|
|
"properties" :
|
|
{
|
|
"value":
|
|
{
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [ "value" ]
|
|
} ,
|
|
|
|
"itemETBDetected":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items": {"not": { "$ref": "#/definitions/textualBodyFound" } } }
|
|
}
|
|
}
|
|
},
|
|
|
|
"targetResourcesFound" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Definition: Resources that can be used as Target",
|
|
"description": "True when the string is format uri or the object is recognized as a valid target resource (Sections 3.2 and 4).",
|
|
"type" : ["string", "object"],
|
|
"oneOf": [
|
|
{"$ref": "id.json#/definitions/stringUri"},
|
|
{"$ref": "choiceSet.json#/definitions/choiceDetected" },
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" }
|
|
]
|
|
},
|
|
|
|
"bodyResourcesFound" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Definition: Resources that can be used as Body",
|
|
"description": "True when the string is format uri or the object is recognized as a valid body resource (Sections 3.2 and 4).",
|
|
"type" : ["string", "object"],
|
|
"anyOf": [
|
|
{"$ref": "id.json#/definitions/stringUri"},
|
|
{"$ref": "choiceSet.json#/definitions/choiceDetected" },
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
]
|
|
},
|
|
|
|
"optionalBodyPropertiesShould" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Optional Body Keys Should Validations",
|
|
"description": "Supports validity checks of optional keys (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "$ref": "#/definitions/resourceTypeShouldIfPresent" },
|
|
{ "$ref": "#/definitions/formatValidIfPresent" },
|
|
{ "$ref": "#/definitions/languageValidIfPresent" },
|
|
{ "$ref": "#/definitions/processingLanguageValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/creatorValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/generatorValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/audienceValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/accessibilityValidIfPresent" }
|
|
]
|
|
},
|
|
|
|
"optionalBodyPropertiesMust" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Optional Body Keys Must Validations",
|
|
"description": "Supports validity checks of optional keys (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "$ref": "#/definitions/textDirectionValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/createdValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/generatedValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/canonicalValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/viaValidIfPresent" }
|
|
]
|
|
},
|
|
|
|
"optionalBodyPurposePropertyShould" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Optional Purpose Key",
|
|
"description": "Supports validity checks of optional purpose key (if/when) used on Specific Resources or Textual Body Resources (Sections 3.3.5)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "$ref": "otherProperties.json#/definitions/purposeRecognizedIfPresent" }
|
|
]
|
|
},
|
|
|
|
"optionalTargetPropertiesShould" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Optional Target Keys Should validation",
|
|
"description": "Supports validity check of optional keys (if/when) used on External Web Resources, Specific Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "$ref": "#/definitions/resourceTypeShouldIfPresent" },
|
|
{ "$ref": "#/definitions/formatValidIfPresent" },
|
|
{ "$ref": "#/definitions/languageValidIfPresent" },
|
|
{ "$ref": "#/definitions/processingLanguageValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/creatorValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/generatorValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/audienceValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/accessibilityValidIfPresent" }
|
|
]
|
|
},
|
|
|
|
"optionalTargetPropertiesMust" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Optional Target Keys Must validation",
|
|
"description": "Supports validity check of optional keys (if/when) used on External Web Resources, Specific Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "$ref": "#/definitions/textDirectionValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/createdValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/generatedValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/canonicalValidIfPresent" },
|
|
{ "$ref": "otherProperties.json#/definitions/viaValidIfPresent" }
|
|
]
|
|
},
|
|
|
|
"resourceTypeRecognizedIfPresent":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Definitions: body / target classes",
|
|
"description": "True when type value for body / target is or includes item from recommended list of classes (Section 3.2.2)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"type":
|
|
{ "oneOf":
|
|
[
|
|
{ "type": "string",
|
|
"enum": [ "Dataset", "Image", "Video", "Sound", "Text" ] },
|
|
{ "type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items":
|
|
{ "not":
|
|
{ "type": "string",
|
|
"enum": [ "Dataset", "Image", "Video", "Sound", "Text" ] }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
|
|
"resourceTypeShouldIfPresent":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Validation: body / target classes all from 3.2.2",
|
|
"description": "Adds TextualBody to list from 3.2.2. True when type absent or all type value(s) for body / target are from recommended list of classes (Section 3.2.2), or TextualBody",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"type":
|
|
{ "oneOf":
|
|
[
|
|
{ "type": "string",
|
|
"enum": [ "Dataset", "Image", "Video", "Sound", "Text", "TextualBody" ] },
|
|
{ "type": "array",
|
|
"minItems": 1,
|
|
"items":
|
|
{ "type": "string",
|
|
"enum": [ "Dataset", "Image", "Video", "Sound", "Text", "TextualBody" ] }
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
|
|
"recognizedTypeFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: type key with recognized classes",
|
|
"description": "Supports implementation check of type (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.2)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "required": ["type" ] },
|
|
{ "$ref": "#/definitions/resourceTypeRecognizedIfPresent" }
|
|
]
|
|
|
|
},
|
|
|
|
"itemRecognizedTypeFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: items having type key with qualifying body/target classes",
|
|
"description": "Supports implementation check of items having type (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/recognizedTypeFound" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"sourceRecognizedTypeFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Specific Resource source having type key",
|
|
"description": "Supports implementation check of type (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source":
|
|
{
|
|
"type": "object",
|
|
"required": ["type"] ,
|
|
"$ref": "#/definitions/resourceTypeRecognizedIfPresent"
|
|
}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
|
|
"formatValueCheck":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Definitions: format value regex",
|
|
"description": "True when string value starts with a registered top-level Media type, including trailing slash (Section 3.2.1)",
|
|
"type": "string",
|
|
"pattern": "^(application/|audio/|example/|image/|multipart/|text/|video/)"
|
|
},
|
|
|
|
"formatValidIfPresent":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Validation: format validity",
|
|
"description": "True when the body or target has no format or has a valid format value - single string or array of strings (Section 3.2.1)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"format":
|
|
{
|
|
"oneOf":
|
|
[
|
|
{"$ref": "#/definitions/formatValueCheck"},
|
|
{"type": "array",
|
|
"minItems": 1,
|
|
"items" : {"$ref": "#/definitions/formatValueCheck"}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
|
|
"formatSingularIfPresent":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Definitions: format",
|
|
"description": "True when the body or target format value, if present, is singular and valid (Section 3.2.1)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"format":
|
|
{
|
|
"oneOf":
|
|
[
|
|
{"$ref": "#/definitions/formatValueCheck"},
|
|
{"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 1,
|
|
"items" : {"$ref": "#/definitions/formatValueCheck"} }
|
|
]
|
|
}
|
|
}
|
|
},
|
|
|
|
"formatPropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: format key with qualifying body/target classes",
|
|
"description": "Supports implementation check of format (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "required": ["format" ] },
|
|
{ "$ref": "#/definitions/formatValidIfPresent" }
|
|
]
|
|
},
|
|
|
|
"itemFormatPropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: items having format key with qualifying body/target classes",
|
|
"description": "Supports implementation check of items having format (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/formatPropertyFound" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"sourceFormatPropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Specific Resource source having format key",
|
|
"description": "Supports implementation check of format (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source":
|
|
{
|
|
"type": "object",
|
|
"required": ["format"] ,
|
|
"$ref": "#/definitions/formatValidIfPresent"
|
|
}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
|
|
"singleFormatPropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: format key with qualifying body/target classes",
|
|
"description": "Supports implementation check of format being singular (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "required": ["format"] },
|
|
{ "$ref": "#/definitions/formatSingularIfPresent" }
|
|
]
|
|
},
|
|
|
|
"itemSingleFormatPropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: items having singular format key with qualifying body/target classes",
|
|
"description": "Supports implementation check of items having singular format (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/singleFormatPropertyFound" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"sourceSingleFormatPropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Specific Resource source having single format key value",
|
|
"description": "Supports implementation check of singular format (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source":
|
|
{
|
|
"type": "object",
|
|
"required": ["format"] ,
|
|
"$ref": "#/definitions/formatSingularIfPresent"
|
|
}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
|
|
"languageValueCheck" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Definitions: language value regex",
|
|
"description": "True when string value starts with a two or three lc characters and a hyphen or end of string (Section 3.2.1)",
|
|
"type": "string",
|
|
"oneOf" :
|
|
[
|
|
{"pattern": "^([a-z]){2,3}$"},
|
|
{"pattern": "^([a-z]){2,3}-"}
|
|
]
|
|
|
|
},
|
|
|
|
"languageValidIfPresent":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Validation: language value",
|
|
"description": "True when the body or target has no language or has a valid language value - single string or array of strings (Section 3.2.1)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"language":
|
|
{
|
|
"oneOf":
|
|
[
|
|
{"$ref": "#/definitions/languageValueCheck"},
|
|
{"type": "array",
|
|
"minItems": 1,
|
|
"items" : {"$ref": "#/definitions/languageValueCheck"}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
|
|
"languageSingularIfPresent":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Definitions: single language valid",
|
|
"description": "True when the body or target has no language or has exactly one language property - single string (Section 3.2.1)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"language":
|
|
{
|
|
"oneOf":
|
|
[
|
|
{"$ref": "#/definitions/languageValueCheck"},
|
|
{"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 1,
|
|
"items" : {"$ref": "#/definitions/languageValueCheck"} }
|
|
]
|
|
}
|
|
}
|
|
},
|
|
|
|
"languagePropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: language key with qualifying body/target classes",
|
|
"description": "Supports implementation check of language (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "required": ["language" ] },
|
|
{ "$ref": "#/definitions/languageValidIfPresent" }
|
|
]
|
|
},
|
|
|
|
"itemLanguagePropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: items having language key with qualifying body/target classes",
|
|
"description": "Supports implementation check of items having language (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/languagePropertyFound" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"sourceLanguagePropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Specific Resource source having language key",
|
|
"description": "Supports implementation check of language (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source":
|
|
{
|
|
"type": "object",
|
|
"required": ["language"] ,
|
|
"$ref": "#/definitions/languageValidIfPresent"
|
|
}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
|
|
"singleLanguagePropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: language key with qualifying body/target classes",
|
|
"description": "Supports implementation check of language being singular (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "required": ["language"] },
|
|
{ "$ref": "#/definitions/languageSingularIfPresent" }
|
|
]
|
|
},
|
|
|
|
"itemSingleLanguagePropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: items having singular language key with qualifying body/target classes",
|
|
"description": "Supports implementation check of items having singular language (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/singleLanguagePropertyFound" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"sourceSingleLanguagePropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Specific Resource source having single language key value",
|
|
"description": "Supports implementation check of singular language (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source":
|
|
{
|
|
"type": "object",
|
|
"required": ["language"] ,
|
|
"$ref": "#/definitions/languageSingularIfPresent"
|
|
}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
|
|
"processingLanguageValidIfPresent":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Validation: processingLanguage",
|
|
"description": "True when the Body or Target has no processingLanguage or exactly one processingLanguage property (Section 3.2.1)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"processingLanguage":
|
|
{
|
|
"oneOf":
|
|
[
|
|
{"$ref": "#/definitions/languageValueCheck"},
|
|
{"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 1,
|
|
"items" : {"$ref": "#/definitions/languageValueCheck"} }
|
|
]
|
|
}
|
|
}
|
|
},
|
|
|
|
"processingLanguagePropertyFound" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: processingLanguage Key with qualifying body/target classes",
|
|
"description": "Supports implementation check of processingLanguage (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "required": ["processingLanguage" ] },
|
|
{ "$ref": "#/definitions/processingLanguageValidIfPresent" }
|
|
]
|
|
},
|
|
|
|
"itemProcessingLanguagePropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: items having processingLanguage key with qualifying body/target classes",
|
|
"description": "Supports implementation check of items having processingLanguage (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/processingLanguagePropertyFound" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"sourceProcessingLanguagePropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Specific Resource source having processingLanguage key",
|
|
"description": "Supports implementation check of processingLanguage (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source":
|
|
{
|
|
"type": "object",
|
|
"required": ["processingLanguage"] ,
|
|
"$ref": "#/definitions/processingLanguageValidIfPresent"
|
|
}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
|
|
"textDirectionValidIfPresent":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Validation: textDirection",
|
|
"description": "True when the body or target has no textDirection or exactly one valid textDirection (Section 3.2.1)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"textDirection":
|
|
{
|
|
"oneOf":
|
|
[
|
|
{"type": "string",
|
|
"enum": ["ltr", "rtl", "auto"] },
|
|
{"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 1,
|
|
"items" : {"type": "string",
|
|
"enum": ["ltr", "rtl", "auto"] } }
|
|
]
|
|
}
|
|
}
|
|
},
|
|
|
|
"textDirectionPropertyFound" :
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: textDirection Key with qualifying body/target classes",
|
|
"description": "Supports implementation check of textDirection (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"oneOf":
|
|
[
|
|
{"$ref": "specificResource.json#/definitions/specificeResourceDetected" },
|
|
{"$ref": "#/definitions/externalWebResourceDetected" },
|
|
{"$ref": "#/definitions/textualBodyFound" }
|
|
],
|
|
"allOf" :
|
|
[
|
|
{ "required": ["textDirection" ] },
|
|
{ "$ref": "#/definitions/textDirectionValidIfPresent" }
|
|
]
|
|
},
|
|
|
|
"itemTextDirectionPropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: items having textDirection key with qualifying body/target classes",
|
|
"description": "Supports implementation check of items having textDirection (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/textDirectionPropertyFound" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"sourceTextDirectionPropertyFound":
|
|
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"title": "Collate: Specific Resource source having textDirection key",
|
|
"description": "Supports implementation check of textDirection (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)",
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source":
|
|
{
|
|
"type": "object",
|
|
"required": ["textDirection"] ,
|
|
"$ref": "#/definitions/textDirectionValidIfPresent"
|
|
}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
|
|
"ewrWithItems" :
|
|
{
|
|
"type": "object",
|
|
"allOf":
|
|
[
|
|
{ "$ref": "#/definitions/externalWebResourceDetected"},
|
|
{ "required": [ "items" ] }
|
|
]
|
|
},
|
|
|
|
"sourceEwrWithItems":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source": {"$ref": "#/definitions/ewrWithItems"}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
|
|
"itemEwrWithItems":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items": {"not": { "$ref": "#/definitions/ewrWithItems" } } }
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"ewrWithPurpose" :
|
|
{
|
|
"allOf":
|
|
[
|
|
{ "$ref": "#/definitions/externalWebResourceDetected"},
|
|
{ "required": [ "purpose" ] }
|
|
]
|
|
},
|
|
|
|
"sourceEwrWithPurpose":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"source": {"$ref": "#/definitions/ewrWithPurpose"}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
|
|
"itemEwrWithPurpose":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items": {"not": { "$ref": "#/definitions/ewrWithPurpose" } } }
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"embeddedTextualBodyWithItems" :
|
|
{
|
|
"allOf":
|
|
[
|
|
{ "$ref": "#/definitions/textualBodyFound"},
|
|
{ "required": [ "items" ] }
|
|
]
|
|
},
|
|
|
|
"itemETBWithItems":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items": {"not": { "$ref": "#/definitions/embeddedTextualBodyWithItems" } } }
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"embeddedTextualBodyWithSource" :
|
|
{
|
|
"allOf":
|
|
[
|
|
{ "$ref": "#/definitions/textualBodyFound"},
|
|
{ "required": [ "source" ] }
|
|
]
|
|
},
|
|
|
|
"itemETBWithSource":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items": {"not": { "$ref": "#/definitions/embeddedTextualBodyWithSource" } } }
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"embeddedTextTypeIncludesTextualBody":
|
|
{
|
|
"allOf":
|
|
[
|
|
{ "$ref": "#/definitions/textualBodyFound" },
|
|
{ "required": ["type"] },
|
|
{ "properties":
|
|
{
|
|
"type":
|
|
{
|
|
"oneOf":
|
|
[
|
|
{ "type": "string",
|
|
"enum": ["TextualBody"] },
|
|
{ "type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items":
|
|
{ "not": { "enum": [ "TextualBody"] } }
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
|
|
"embeddedTextTypeInclTextualBodyWithoutId":
|
|
{
|
|
"allOf":
|
|
[
|
|
{ "$ref": "#/definitions/textualBodyFound" },
|
|
{ "required": ["type"] },
|
|
{ "properties":
|
|
{
|
|
"type":
|
|
{
|
|
"oneOf":
|
|
[
|
|
{ "type": "string",
|
|
"enum": ["TextualBody"] },
|
|
{ "type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items":
|
|
{ "not": { "enum": [ "TextualBody"] } }
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{ "not": { "$ref": "id.json#/definitions/idValueFound" } }
|
|
]
|
|
},
|
|
|
|
"itemEmbeddedTextTypeIncludesTextualBody":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/embeddedTextTypeIncludesTextualBody" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
},
|
|
|
|
"itemEmbeddedTextTypeInclTextualBodyWithoutId":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/embeddedTextTypeIncludesTextualBody" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"],
|
|
"not": { "$ref": "id.json#/definitions/idValueFound" }
|
|
},
|
|
|
|
"embeddedTextTypeIncludesText":
|
|
{
|
|
"allOf":
|
|
[
|
|
{ "$ref": "#/definitions/textualBodyFound" },
|
|
{ "required": ["type"] },
|
|
{ "properties":
|
|
{
|
|
"type":
|
|
{
|
|
"oneOf":
|
|
[
|
|
{ "type": "string",
|
|
"enum": ["Text"] },
|
|
{ "type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{ "items":
|
|
{ "not": { "enum": [ "Text"] } }
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
|
|
"itemEmbeddedTextTypeIncludesText":
|
|
{
|
|
"type": "object",
|
|
"properties":
|
|
{
|
|
"items":
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"not":
|
|
{
|
|
"items":
|
|
{ "not": { "$ref": "#/definitions/embeddedTextTypeIncludesText" } }
|
|
}
|
|
}
|
|
},
|
|
"required": ["items"]
|
|
}
|
|
|
|
}
|
|
}
|