summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/annotation-model/collections
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
commit0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch)
treea31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /testing/web-platform/tests/annotation-model/collections
parentInitial commit. (diff)
downloadfirefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz
firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/annotation-model/collections')
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatedImplemented.json17
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatedValidated.json14
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatorImplemented.json16
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.1-collectionModifiedImplemented.json16
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.1-collectionModifiedValidated.json14
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentEmailImplemented.json24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentEmail_sha1Implemented.json24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentHomepageImplemented.json24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentIdImplemented.json24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentNameImplemented.json24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentNicknameImplemented.json24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentTypeImplemented.json24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.6-collectionRightsImplemented.json16
-rw-r--r--testing/web-platform/tests/annotation-model/collections/3.3.6-collectionRightsValidated.json14
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionContextValidated.json20
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionFirstImplemented.json10
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionFirstValidated.json10
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionIdValidated.json11
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionLabelImplemented.json10
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionLabelValidated.json10
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionLastImplemented.json10
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionLastValidated.json10
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionTotalImplemented.json10
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionTotalValidated.json10
-rw-r--r--testing/web-platform/tests/annotation-model/collections/5.1-collectionTypeValidated.json10
-rw-r--r--testing/web-platform/tests/annotation-model/collections/collectionMusts-manual.html48
-rw-r--r--testing/web-platform/tests/annotation-model/collections/collectionMusts.test19
-rw-r--r--testing/web-platform/tests/annotation-model/collections/collectionOptionals-manual.html48
-rw-r--r--testing/web-platform/tests/annotation-model/collections/collectionOptionals.test25
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatedImplemented.json30
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatedValidated.json16
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatorImplemented.json28
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageModifiedImplemented.json29
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageModifiedValidated.json16
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmailImplemented.json35
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmail_sha1Implemented.json35
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentHomepageImplemented.json35
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentIdImplemented.json36
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNameImplemented.json35
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNicknameImplemented.json38
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentTypeImplemented.json35
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.6-pageRightsImplemented.json24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/3.3.6-pageRightsValidated.json16
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageContextValidated.json20
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageFirstImplemented.json18
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageFirstValidated.json15
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageIdValidated.json24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageItemsValidated.json19
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLabelImplemented.json16
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLabelValidated.json15
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLastImplemented.json16
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLastValidated.json15
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageNextImplemented.json19
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageNextValidated.json23
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePartOfImplemented.json19
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePartOfValidated.json23
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePrevImplemented.json19
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePrevValidated.json23
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageStartIndexImplemented.json19
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageStartIndexValidated.json23
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTotalImplemented.json16
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTotalValidated.json15
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTypeValidated.json19
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/pageMusts-manual.html48
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/pageMusts.test24
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/pageOptionals-manual.html48
-rw-r--r--testing/web-platform/tests/annotation-model/collections/pages/pageOptionals.test29
67 files changed, 1469 insertions, 0 deletions
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatedImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatedImplemented.json
new file mode 100644
index 0000000000..d57ecd1efe
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatedImplemented.json
@@ -0,0 +1,17 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-collectionCreatedImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Valid Annotation Collection-level created key not found. Annotation Collection may have exactly one created key value.",
+ "title": "Implements Annotation Collection-level **_created_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "description": "True when the Annotation Collection implements exactly one created key value (Sections 3.3.1 and 5.1)",
+ "allOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/createdValidIfPresent"},
+ { "type": "object",
+ "required" : [ "created" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatedValidated.json b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatedValidated.json
new file mode 100644
index 0000000000..09ff1aa9d0
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatedValidated.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-collectionCreatedValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection has multiple created key values or a single created key value that is not of format date-time.",
+ "title": "If present the Annotation Collection-level **_created_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "description": "True when no Annotation Collection created key present or when created key has a single value that is of format date-time (Section 3.3.1)",
+ "type": "object",
+ "allOf": [
+ { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatorImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatorImplemented.json
new file mode 100644
index 0000000000..1bd4d14425
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionCreatorImplemented.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-collectionCreatorImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Collection creator key not found. Annotation Collection may have zero or more creators.",
+ "title": "Implements **Annotation Collection _creator_ key** which has one or more values, each of which is a **string of format uri** or an **object** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "description": "True when the Annotation Collection implements creator key (Section 3.3.1)",
+ "allOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/creatorValidIfPresent"},
+ { "type": "object",
+ "required": [ "creator" ] }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionModifiedImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionModifiedImplemented.json
new file mode 100644
index 0000000000..8deba356bd
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionModifiedImplemented.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-collectionModifiedImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Valid Annotation Collection-level modified key not found. Annotation Collection may have zero or exactly one modified key value.",
+ "title": "Implements Annotation Collection-level **_modified_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "description": "True when the Annotation Collection implements exactly one modified key value (Section 3.3.1, 5.1)",
+ "allOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent"},
+ { "type": "object",
+ "required": [ "modified" ] }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionModifiedValidated.json b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionModifiedValidated.json
new file mode 100644
index 0000000000..65a571e84e
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.1-collectionModifiedValidated.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-collectionModifiedValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection has multiple modified key values or a single modified key value that is not of format date-time.",
+ "title": "If present the Annotation Collection-level **_modified_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "description": "True when no Annotation Collection modified key present or when modified key has a single value that is of format date-time (Section 3.3.1)",
+ "type": "object",
+ "allOf": [
+ { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentEmailImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentEmailImplemented.json
new file mode 100644
index 0000000000..34b5c560b9
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentEmailImplemented.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-collectionCreatorAgentEmailImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Email for Annotation Collection Creator (Agent) not found. Agents may have one or more email values.",
+ "title": "Implements Annotation Collection-level creator (Agent) **_email_ key** with one or more values, each of which is a **mailto: uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when one or more email values for Annotation Collection Creator (Agent) is implemented (Section 3.3.2)",
+ "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentEmailFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmailFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentEmail_sha1Implemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentEmail_sha1Implemented.json
new file mode 100644
index 0000000000..6e8ef75075
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentEmail_sha1Implemented.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-collectionCreatorAgentEmail_sha1Implemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Email_sha1 for Annotation Collection Creator (Agent) not found. Agents may have one or more email_sha1 values.",
+ "title": "Implements Annotation Collection-level creator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when one or more email_sha1 values for Annotation Collection Creator (Agent) is implemented (Section 3.3.2)",
+ "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentHomepageImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentHomepageImplemented.json
new file mode 100644
index 0000000000..c3ed8d3b0c
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentHomepageImplemented.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-collectionCreatorAgentHomepageImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Homepage for Annotation Collection Creator (Agent) not found. Agents may have one or more homepage values.",
+ "title": "Implements Annotation Collection-level creator (Agent) **_homepage_ key** with one or more values, each of which is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when one or more homepage values for Annotation Collection Creator (Agent) is implemented (Section 3.3.2)",
+ "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentHomepageFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentHomepageFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentIdImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentIdImplemented.json
new file mode 100644
index 0000000000..3f7241d055
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentIdImplemented.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-collectionCreatorAgentIdImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Id for Annotation Collection Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.",
+ "title": "Implements Annotation Collection-level creator (Agent) **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when type for Annotation Collection Creator (Agent) has exactly one id (Section 3.3.2)",
+ "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "id.json#/definitions/idValueFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "id.json#/definitions/idValueFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentNameImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentNameImplemented.json
new file mode 100644
index 0000000000..5f1a07b0f0
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentNameImplemented.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-collectionCreatorAgentNameImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Name for Annotation Collection Creator (Agent) not found. Agents may have one or more name values.",
+ "title": "Implements Annotation Collection-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when one or more name values for Annotation Collection Creator (Agent) is implemented (Section 3.3.2)",
+ "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentNameFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentNameFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentNicknameImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentNicknameImplemented.json
new file mode 100644
index 0000000000..9da32ff09f
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentNicknameImplemented.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-collectionCreatorAgentNicknameImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Nickname for Annotation Collection Creator (Agent) not found. Agents should have exactly one nickname value.",
+ "title": "Implements Annotation Collection-level creator (Agent) **_nickname_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when exactly one nickname for Annotation Collection Creator (Agent) is implemented (Section 3.3.2)",
+ "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentTypeImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentTypeImplemented.json
new file mode 100644
index 0000000000..43f5fc32f4
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.2-collectionCreatorAgentTypeImplemented.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-collectionCreatorAgentTypeImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Type (Person, Organization, Software) for Annotation Collection Creator (Agent) not found. Agents should have one or more type values.",
+ "title": "Implements Annotation Collection-level creator (Agent) **_type_ key** with one or more values from **model-recommended list (Person, Organization, Software)** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when type for Annotation Collection Creator (Agent) is implemented (Section 3.3.2)",
+ "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentTypeFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentTypeFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.6-collectionRightsImplemented.json b/testing/web-platform/tests/annotation-model/collections/3.3.6-collectionRightsImplemented.json
new file mode 100644
index 0000000000..927f93eb3e
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.6-collectionRightsImplemented.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.6-collectionRightsImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Collection-level rights key having string value(s) of format uri not found. Annotation Collection may have zero or more rights key values.",
+ "title": "Implements Annotation Collection-level **_rights_** key which has one or more values, each of which is a **string of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)",
+ "description": "True when the Annotation Collection implements rights key with with string(s) of format uri value(s) (Sections 5.1 and 3.3.6)",
+ "allOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent"},
+ { "type": "object",
+ "required": [ "rights" ]}
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/3.3.6-collectionRightsValidated.json b/testing/web-platform/tests/annotation-model/collections/3.3.6-collectionRightsValidated.json
new file mode 100644
index 0000000000..6841046058
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/3.3.6-collectionRightsValidated.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.6-collectionRightsValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection Collection has one or more values for the rights key that are not strings of format uri.",
+ "title": "If present the Annotation Collection Collection-level **_rights_ key** has values that are all **strings of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)",
+ "description": "True when no Annotation Collection Collection rights key present or when all values of rights key are strings of format uri (Section 3.3.6)",
+ "type": "object",
+ "allOf": [
+ { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionContextValidated.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionContextValidated.json
new file mode 100644
index 0000000000..d9a5dc3123
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionContextValidated.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionContextValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.",
+ "title": "Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "description": "True when the Annotation Collection has @context key and 'http://www.w3.org/ns/anno.jsonld' is an @context value (Section 5.1)",
+ "type": "object",
+ "required": [ "@context" ],
+ "properties": {
+ "@context": {
+ "oneOf": [
+ { "$ref": "collections.json#/definitions/contextValueFound" },
+ { "$ref": "collections.json#/definitions/contextValueInArrayFound" }
+ ]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionFirstImplemented.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionFirstImplemented.json
new file mode 100644
index 0000000000..0eee805921
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionFirstImplemented.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionFirstImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Collection is allowed exactly one first key.",
+ "title": "Implements **Annotation Collection _first_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "$ref": "collections.json#/definitions/firstFound"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionFirstValidated.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionFirstValidated.json
new file mode 100644
index 0000000000..4c31e1fd74
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionFirstValidated.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionFirstValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection has invalid first key or has total value more than zero without a valid first key.",
+ "title": "**Annotation Collection has _first_ key**, or no **_total_ key**, or **_total_ key** with value of zero - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "$ref": "collections.json#/definitions/firstRequiredIfTotalMoreThanZero"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionIdValidated.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionIdValidated.json
new file mode 100644
index 0000000000..164620879e
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionIdValidated.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionIdValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection is missing id key or value of id key is not a single string of format uri.",
+ "title": "Implements **Annotation Collection _id_ key** which has a **single value** that is a **string of format uri** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "description": "True when the Annotation Collection has a single id that is a string of format uri (Section 5.1)",
+ "$ref": "id.json#/definitions/idValueFound"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionLabelImplemented.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionLabelImplemented.json
new file mode 100644
index 0000000000..916ba5c80d
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionLabelImplemented.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionLabelImplemented.json",
+ "assertionType": "should",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Collection should have a label key.",
+ "title": "Implements **Annotation Collection _label_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "$ref": "collections.json#/definitions/labelFound"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionLabelValidated.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionLabelValidated.json
new file mode 100644
index 0000000000..7543d515da
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionLabelValidated.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionLabelValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection has label key with non-string value or an array as value containing non-string value.",
+ "title": "**Annotation Collection _label_ key**, if present, is **a value of type string** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "$ref": "collections.json#/definitions/labelDefinition"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionLastImplemented.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionLastImplemented.json
new file mode 100644
index 0000000000..528a5616e8
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionLastImplemented.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionLastImplemented.json",
+ "assertionType": "should",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Collection should include exactly one last key with value that is string of uri format.",
+ "title": "Implements **Annotation Collection _last_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "$ref": "collections.json#/definitions/lastFound"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionLastValidated.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionLastValidated.json
new file mode 100644
index 0000000000..d00e90da69
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionLastValidated.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionLastValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection has last key with non-uri value or array as value containing more than one item.",
+ "title": "**Annotation Collection _last_ key**, if present, is **a single value of format uri** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "$ref": "collections.json#/definitions/lastValidIfPresent"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionTotalImplemented.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionTotalImplemented.json
new file mode 100644
index 0000000000..088e785c2e
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionTotalImplemented.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionTotalImplemented.json",
+ "assertionType": "should",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Collection should include exactly one total key with non-negative numeric value.",
+ "title": "Implements **Annotation Collection _total_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "$ref": "collections.json#/definitions/totalFound"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionTotalValidated.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionTotalValidated.json
new file mode 100644
index 0000000000..51b3ff263a
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionTotalValidated.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionTotalValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection has total key with non-numeric value, a negative numeric value, or more than one value.",
+ "title": "**Annotation Collection _total_ key**, if present, is **a non-negative integer value** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "$ref": "collections.json#/definitions/totalDefinition"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/5.1-collectionTypeValidated.json b/testing/web-platform/tests/annotation-model/collections/5.1-collectionTypeValidated.json
new file mode 100644
index 0000000000..3c858ab92d
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/5.1-collectionTypeValidated.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.1-collectionTypeValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Collection is missing type key or 'AnnotationCollection' is not a value of type.",
+ "title": "Implements **Annotation Collection _type_ key** such that '**AnnotationCollection**' is **a value of _type_** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "$ref": "collections.json#/definitions/annotationCollectionTypeValueFound"
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/collectionMusts-manual.html b/testing/web-platform/tests/annotation-model/collections/collectionMusts-manual.html
new file mode 100644
index 0000000000..a023956484
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/collectionMusts-manual.html
@@ -0,0 +1,48 @@
+<!doctype html>
+<html>
+<head>
+<title>A single Annotation Collection has all required keys and all collection keys used meet required value constraints</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/annotation-model/scripts/ajv.min.js"></script>
+<script src="/annotation-model/scripts/showdown.min.js"></script>
+<script src="/annotation-model/scripts/JSONtest.js"></script>
+<script>
+setup({explicit_timeout: true, explicit_done: true });
+
+var theDefinitions=[
+ "definitions/choiceSet.json",
+ "definitions/id.json",
+ "definitions/bodyTarget.json",
+ "definitions/annotations.json",
+ "definitions/specificResource.json",
+ "definitions/otherProperties.json",
+ "definitions/collections.json"
+];
+
+var theTestFile="collectionMusts.test";
+
+var runningTest = new JSONtest( {
+ "testInput" : "annotation-input",
+ "runTest" : "annotation-run",
+ "closeWindow" : "annotation-close",
+ "schemaDefs" : theDefinitions,
+ "testFile" : theTestFile
+} ) ;
+
+</script>
+</head>
+<body>
+<p>Fill the textarea below with JSON output from your annotation client
+implementation that supports the following criteria:</p>
+<div id="testDescription"></div>
+<form name="annotation" id="annotation">
+ <textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea>
+ <p><input type="button" id="annotation-run" name="Loading..." value="Loading...">
+ <input style="display: none" type="button" id="annotation-close"
+ name="Close" value="Close"></p>
+</form>
+<p>Specifically, the following assertions will be evaluated:</p>
+<div id="assertion"></div>
+</body>
+</html>
diff --git a/testing/web-platform/tests/annotation-model/collections/collectionMusts.test b/testing/web-platform/tests/annotation-model/collections/collectionMusts.test
new file mode 100644
index 0000000000..31864b784f
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/collectionMusts.test
@@ -0,0 +1,19 @@
+{
+ "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
+ "name": "A single Annotation Collection has all required keys and all collection keys used meet required value constraints",
+ "description": "Collections of Web Annotations: <ul> <li>MUST include certain properties (keys)</li> <li>MUST satisfy model constraints on values of required and any optional Annotation keys used</li> </ul> Note: Implementation of optional Annotation Collection keys (features), optional constraints on key values, and optional keys and constraints on Agents involved in an Annotation Collection checked by other tests.<br/><b>Please fill textarea with json-ld serialization of a single Annotation Collection description</b>",
+ "testType": "manual",
+ "ref": "https://www.w3.org/TR/annotation-model/",
+ "assertions": [
+ "collections/5.1-collectionContextValidated.json",
+ "collections/5.1-collectionIdValidated.json",
+ "collections/5.1-collectionTypeValidated.json",
+ "collections/5.1-collectionLabelValidated.json",
+ "collections/5.1-collectionTotalValidated.json",
+ "collections/5.1-collectionFirstValidated.json",
+ "collections/5.1-collectionLastValidated.json",
+ "collections/3.3.1-collectionCreatedValidated.json",
+ "collections/3.3.1-collectionModifiedValidated.json",
+ "collections/3.3.6-collectionRightsValidated.json"
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/collectionOptionals-manual.html b/testing/web-platform/tests/annotation-model/collections/collectionOptionals-manual.html
new file mode 100644
index 0000000000..24df82d982
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/collectionOptionals-manual.html
@@ -0,0 +1,48 @@
+<!doctype html>
+<html>
+<head>
+<title>A single Annotation Collection implements optional keys and meets optional key value constraints</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/annotation-model/scripts/ajv.min.js"></script>
+<script src="/annotation-model/scripts/showdown.min.js"></script>
+<script src="/annotation-model/scripts/JSONtest.js"></script>
+<script>
+setup({explicit_timeout: true, explicit_done: true });
+
+var theDefinitions=[
+ "definitions/choiceSet.json",
+ "definitions/id.json",
+ "definitions/bodyTarget.json",
+ "definitions/annotations.json",
+ "definitions/specificResource.json",
+ "definitions/otherProperties.json",
+ "definitions/collections.json"
+];
+
+var theTestFile="collectionOptionals.test";
+
+var runningTest = new JSONtest( {
+ "testInput" : "annotation-input",
+ "runTest" : "annotation-run",
+ "closeWindow" : "annotation-close",
+ "schemaDefs" : theDefinitions,
+ "testFile" : theTestFile
+} ) ;
+
+</script>
+</head>
+<body>
+<p>Fill the textarea below with JSON output from your annotation client
+implementation that supports the following criteria:</p>
+<div id="testDescription"></div>
+<form name="annotation" id="annotation">
+ <textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea>
+ <p><input type="button" id="annotation-run" name="Loading..." value="Loading...">
+ <input style="display: none" type="button" id="annotation-close"
+ name="Close" value="Close"></p>
+</form>
+<p>Specifically, the following assertions will be evaluated:</p>
+<div id="assertion"></div>
+</body>
+</html>
diff --git a/testing/web-platform/tests/annotation-model/collections/collectionOptionals.test b/testing/web-platform/tests/annotation-model/collections/collectionOptionals.test
new file mode 100644
index 0000000000..5a75eb6bc6
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/collectionOptionals.test
@@ -0,0 +1,25 @@
+{
+ "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
+ "name": "A single Annotation Collection implements optional keys and meets optional key value constraints",
+ "description": "A Collection of Web Annotations: <ul> <li>Should include certain properties (keys)</li> <li>May include additional keys</li> <li>May have creator Agent key values that conform to model recommended constraints</li></ul> Note: failing an assertion indicates only that a recommended or optional feature has not been implemented or has not been implemented correctly. <br/><b>Please fill textarea with json-ld serialization of a single Annotation Collection description</b>",
+ "testType": "manual",
+ "skipFailures": [ "should", "may" ],
+ "ref": "https://www.w3.org/TR/annotation-model/",
+ "assertions": [
+ "collections/5.1-collectionLabelImplemented.json",
+ "collections/5.1-collectionLastImplemented.json",
+ "collections/5.1-collectionTotalImplemented.json",
+ "collections/5.1-collectionFirstImplemented.json",
+ "collections/3.3.1-collectionModifiedImplemented.json",
+ "collections/3.3.1-collectionCreatorImplemented.json",
+ "collections/3.3.1-collectionCreatedImplemented.json",
+ "collections/3.3.6-collectionRightsImplemented.json",
+ "collections/3.3.2-collectionCreatorAgentEmail_sha1Implemented.json",
+ "collections/3.3.2-collectionCreatorAgentEmailImplemented.json",
+ "collections/3.3.2-collectionCreatorAgentHomepageImplemented.json",
+ "collections/3.3.2-collectionCreatorAgentIdImplemented.json",
+ "collections/3.3.2-collectionCreatorAgentNameImplemented.json",
+ "collections/3.3.2-collectionCreatorAgentNicknameImplemented.json",
+ "collections/3.3.2-collectionCreatorAgentTypeImplemented.json"
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatedImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatedImplemented.json
new file mode 100644
index 0000000000..3979744c91
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatedImplemented.json
@@ -0,0 +1,30 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-pageCreatedImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Valid Annotation Page-level created key (i.e., in description of Collection included using partOf key) not found. Annotation Page may have exactly one created key value inherited from Collection.",
+ "title": "Implements Annotation Page-level **_created_ key** (i.e., in description of Collection included using partOf key) which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "description": "True when the Annotation Page implements exactly one created key value (i.e., in description of Collection included using partOf key) (Sections 3.3.1 and 5.2)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/createdImplemented" }
+ },
+ "required": [ "partOf" ],
+ "definitions":
+ {
+ "createdImplemented":
+ {
+ "allOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/createdValidIfPresent"},
+ { "type": "object",
+ "required" : [ "created" ]
+ }
+ ]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatedValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatedValidated.json
new file mode 100644
index 0000000000..96218084ad
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatedValidated.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-pageCreatedValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation page has multiple created key values or a single created key value that is not of format date-time.",
+ "title": "If present the Annotation page-level **_created_ key** (i.e., in description of Collection included using partOf key) has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "description": "True when no Annotation page created key present (i.e., in description of Collection included using partOf key) or when created key has a single value that is of format date-time (Section 3.3.1)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatorImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatorImplemented.json
new file mode 100644
index 0000000000..6ae95413e2
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageCreatorImplemented.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-pageCreatorImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Valid Annotation Page-level creator key (i.e., in description of Collection included using partOf key) not found. Annotation Page may have zero or more creators inherited from Collection.",
+ "title": "Implements **Annotation Page-level _creator_ key** (i.e., in description of Collection included using partOf key) which has one or more values, each of which is a **string of format uri** or an **object** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/creatorImplemented" }
+ },
+ "required": [ "partOf" ],
+ "definitions":
+ {
+ "creatorImplemented":
+ {
+ "allOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/creatorValidIfPresent"},
+ { "type": "object",
+ "required": [ "creator" ] }
+ ]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageModifiedImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageModifiedImplemented.json
new file mode 100644
index 0000000000..68d22370af
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageModifiedImplemented.json
@@ -0,0 +1,29 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-pageModifiedImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Valid Annotation Page-level modified key (i.e., in description of Collection included using partOf key) not found. Annotation Page may have zero or exactly one modified key value inherited from Collection.",
+ "title": "Implements Annotation Page-level **_modified_ key** (i.e., in description of Collection included using partOf key) which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "description": "True when the Annotation Page implements exactly one modified key value (i.e., in description of Collection included using partOf key) (Section 3.3.1, 5.2)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/modifiedImplemented" }
+ },
+ "required": [ "partOf" ],
+ "definitions":
+ {
+ "modifiedImplemented":
+ {
+ "allOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent"},
+ { "type": "object",
+ "required": [ "modified" ] }
+ ]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageModifiedValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageModifiedValidated.json
new file mode 100644
index 0000000000..e7c1a55837
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.1-pageModifiedValidated.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.1-pageModifiedValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation page has multiple modified key values or a single modified key value that is not of format date-time.",
+ "title": "If present the Annotation page-level **_modified_ key** (i.e., in description of Collection included using partOf key) has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
+ "description": "True when no Annotation page modified key present (i.e., in description of Collection included using partOf key) or when modified key has a single value that is of format date-time (Section 3.3.1)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmailImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmailImplemented.json
new file mode 100644
index 0000000000..541a32deb6
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmailImplemented.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-pageCreatorAgentEmailImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Email for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents may have one or more email values.",
+ "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_email_ key** with one or more values, each of which is a **mailto: uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when one or more email values for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/creatorAgentEmailFound" }
+ },
+ "required": [ "partOf" ],
+ "definitions": {
+ "creatorAgentEmailFound":
+ { "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentEmailFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmailFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmail_sha1Implemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmail_sha1Implemented.json
new file mode 100644
index 0000000000..ba7d38eac1
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmail_sha1Implemented.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-pageCreatorAgentEmail_sha1Implemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Email_sha1 for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents may have one or more email_sha1 values.",
+ "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when one or more email_sha1 values for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/creatorAgentEmail_sha1Found" }
+ },
+ "required": [ "partOf" ],
+ "definitions": {
+ "creatorAgentEmail_sha1Found":
+ { "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentHomepageImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentHomepageImplemented.json
new file mode 100644
index 0000000000..7b8c9d7e2a
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentHomepageImplemented.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-pageCreatorAgentHomepageImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Homepage for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents may have one or more homepage values.",
+ "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_homepage_ key** with one or more values, each of which is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when one or more homepage values for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/creatorAgentHomePageFound" }
+ },
+ "required": [ "partOf" ],
+ "definitions": {
+ "creatorAgentHomePageFound":
+ { "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentHomepageFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentHomepageFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentIdImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentIdImplemented.json
new file mode 100644
index 0000000000..2a280ead8d
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentIdImplemented.json
@@ -0,0 +1,36 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-pageCreatorAgentIdImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Single id for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found for any Creator. Agents should have exactly one id of format uri.",
+ "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when at least one Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) has exactly one id (Section 3.3.2)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/creatorAgentIdFound" }
+ },
+ "required": [ "partOf" ],
+ "definitions": {
+ "creatorAgentIdFound":
+ {
+ "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "id.json#/definitions/idValueFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "id.json#/definitions/idValueFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNameImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNameImplemented.json
new file mode 100644
index 0000000000..50f811021e
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNameImplemented.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-pageCreatorAgentNameImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Name for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents may have one or more name values.",
+ "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when one or more name values for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/creatorAgentNameFound" }
+ },
+ "required": [ "partOf" ],
+ "definitions": {
+ "creatorAgentNameFound":
+ { "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentNameFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentNameFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNicknameImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNicknameImplemented.json
new file mode 100644
index 0000000000..7829deafcb
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNicknameImplemented.json
@@ -0,0 +1,38 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-pageCreatorAgentNicknameImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Single nickname for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found for any Creator. Agents should have exactly one id of format uri.",
+ "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_nickname_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when at least one Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) has exactly one nickname (Section 3.3.2)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/creatorAgentNicknameFound" }
+ },
+ "required": [ "partOf" ],
+ "definitions": {
+ "creatorAgentNicknameFound":
+ {
+ "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+ }
+ }
+}
+
+
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentTypeImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentTypeImplemented.json
new file mode 100644
index 0000000000..20b40d0104
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentTypeImplemented.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.2-pageCreatorAgentTypeImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Type (Person, Organization, Software) for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents should have one or more type values.",
+ "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_type_ key** with one or more values from **model-recommended list (Person, Organization, Software)** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)",
+ "description": "True when type for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "#/definitions/creatorAgentTypeFound" }
+ },
+ "required": [ "partOf" ],
+ "definitions": {
+ "creatorAgentTypeFound":
+ { "properties":
+ { "creator":
+ { "oneOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/agentTypeFound" },
+ { "type": "array",
+ "minItems": 1,
+ "not":
+ { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentTypeFound" } } }
+ }
+ ]
+ }
+ },
+ "required": ["creator"]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.6-pageRightsImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.6-pageRightsImplemented.json
new file mode 100644
index 0000000000..7a3fa5c460
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.6-pageRightsImplemented.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.6-pageRightsImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Page rights key (i.e., in description of Collection included using partOf key) having string value(s) of format uri not found. Annotation Page may may have zero or more rights key values.",
+ "title": "Implements Annotation Page **_rights_** key (i.e., in description of Collection included using partOf key) which has one or more values, each of which is a **string of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)",
+ "description": "True when the Annotation Page implements collection rights key (i.e., in description of Collection included using partOf key) with with string(s) of format uri value(s) (Sections 5.1 and 3.3.6)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "allOf":
+ [
+ { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" },
+ { "type": "object",
+ "required": [ "rights" ] }
+ ]
+ }
+ },
+ "required": [ "partOf" ]
+
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/3.3.6-pageRightsValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/3.3.6-pageRightsValidated.json
new file mode 100644
index 0000000000..99f0e7c7a7
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/3.3.6-pageRightsValidated.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "3.3.6-pageRightsValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation page page has one or more values for the rights key (i.e., in description of Collection included using partOf key) that are not strings of format uri.",
+ "title": "If present the Annotation page page-level **_rights_ key** (i.e., in description of Collection included using partOf key)has values that are all **strings of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)",
+ "description": "True when no Annotation page collection rights key present or when all values of rights key are strings of format uri (Section 3.3.6)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageContextValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageContextValidated.json
new file mode 100644
index 0000000000..66cbe0779f
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageContextValidated.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageContextValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page/Collection is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.",
+ "title": "Implements **Annotation Page** (or Annotation Collection for embedded Page) **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "description": "True when the Annotation Page/Collection has @context key and 'http://www.w3.org/ns/anno.jsonld' is an @context value (Section 5.2)",
+ "type": "object",
+ "required": [ "@context" ],
+ "properties": {
+ "@context": {
+ "oneOf": [
+ { "$ref": "collections.json#/definitions/contextValueFound" },
+ { "$ref": "collections.json#/definitions/contextValueInArrayFound" }
+ ]
+ }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageFirstImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageFirstImplemented.json
new file mode 100644
index 0000000000..5e0934e14f
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageFirstImplemented.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageFirstImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Page has no first key (i.e., in description of Collection included using partOf key).",
+ "title": "Implements **Annotation Page _first_ key** (i.e., in description of Collection included using partOf key) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "collections.json#/definitions/firstFound" }
+ },
+ "required": [ "partOf" ]
+}
+
+
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageFirstValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageFirstValidated.json
new file mode 100644
index 0000000000..bffe4e889f
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageFirstValidated.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageFirstValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page has invalid first key (i.e., in description of Collection included using partOf key).",
+ "title": "**Annotation Page _first_ key** (i.e., in description of Collection included using partOf key), if present, has value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "collections.json#/definitions/firstValidIfPresent" }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageIdValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageIdValidated.json
new file mode 100644
index 0000000000..bafa019c46
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageIdValidated.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageIdValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page is missing id key or value of id key is not a single string of format uri.",
+ "title": "Implements **Annotation Page _id_ key** which has a **single value** that is a **string of format uri** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "description": "True when the Annotation Page has a single id that is a string of format uri (Section 5.2)",
+ "oneOf": [
+ { "allOf": [
+ { "$ref": "id.json#/definitions/idValueFound" },
+ { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" }
+ ]
+ },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "id.json#/definitions/idValueFound" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageItemsValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageItemsValidated.json
new file mode 100644
index 0000000000..57bedba850
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageItemsValidated.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageItemsValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page is missing items key or value of items key is not an array of strings of format uri and/or objects of type Annotation.",
+ "title": "Implements **Annotation Page _items_ key** such that value of items key is an array of strings of format uri and/or objects of type Annotation - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "$ref": "collections.json#/definitions/itemsFound" },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/itemsFound" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLabelImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLabelImplemented.json
new file mode 100644
index 0000000000..19b82f3ba9
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLabelImplemented.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageLabelImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Page has no label key (i.e., in description of Collection included using partOf key).",
+ "title": "Implements **Annotation Page _label_ key** (i.e., in description of Collection included using partOf key) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "collections.json#/definitions/labelFound" }
+ },
+ "required": [ "partOf" ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLabelValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLabelValidated.json
new file mode 100644
index 0000000000..50749f4489
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLabelValidated.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageLabelValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page has label key (i.e., in description of Collection included using partOf key) with non-string value or an array as value containing non-string value.",
+ "title": "**Annotation Page _label_ key**, if present (i.e., in description of Collection included using partOf key), is **a value of type string** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "collections.json#/definitions/labelDefinition" }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLastImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLastImplemented.json
new file mode 100644
index 0000000000..4978fedf61
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLastImplemented.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageLastImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Page has no last key (i.e., in description of Collection included using partOf key).",
+ "title": "Implements **Annotation Page _last_ key** (i.e., in description of Collection included using partOf key) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "collections.json#/definitions/lastFound" }
+ },
+ "required": [ "partOf" ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLastValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLastValidated.json
new file mode 100644
index 0000000000..d80c37c4c6
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageLastValidated.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageLastValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page has last key (i.e., in description of Collection included using partOf key) with non-uri value or array as value containing more than one item.",
+ "title": "**Annotation Page _last_ key** (i.e., in description of Collection included using partOf key), if present, is **a single value of format uri** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "collections.json#/definitions/lastValidIfPresent" }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageNextImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageNextImplemented.json
new file mode 100644
index 0000000000..fb05711759
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageNextImplemented.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageNextImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Page has no next key.",
+ "title": "Implements **Annotation Page _next_ key** with valid value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "$ref": "collections.json#/definitions/nextFound" },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/nextFound" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageNextValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageNextValidated.json
new file mode 100644
index 0000000000..ab9198cc20
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageNextValidated.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageNextValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page has an invalid next value.",
+ "title": "True when **Annotation Page has no _next_ key** or has **_next_ key** with valid value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "allOf": [
+ { "$ref": "collections.json#/definitions/nextValidIfPresent" },
+ { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" }
+ ]
+ },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/nextValidIfPresent" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePartOfImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePartOfImplemented.json
new file mode 100644
index 0000000000..a23e27ea68
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePartOfImplemented.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pagePartOfImplemented.json",
+ "assertionType": "should",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Page has no partOf key.",
+ "title": "Implements **Annotation Page _partOf_ key** with valid value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "$ref": "collections.json#/definitions/partOfFound" },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/partOfFound" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePartOfValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePartOfValidated.json
new file mode 100644
index 0000000000..d073c63050
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePartOfValidated.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pagePartOfValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page has an invalid partOf value.",
+ "title": "True when **Annotation Page has no _partOf_ key** or has **_partOf_ key** with valid value oof string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "allOf": [
+ { "$ref": "collections.json#/definitions/partOfValidIfPresent" },
+ { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" }
+ ]
+ },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/partOfValidIfPresent" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePrevImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePrevImplemented.json
new file mode 100644
index 0000000000..0ba0e8792e
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePrevImplemented.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pagePrevImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Page has no prev key.",
+ "title": "Implements **Annotation Page _prev_ key** with valid value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "$ref": "collections.json#/definitions/prevFound" },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/prevFound" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePrevValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePrevValidated.json
new file mode 100644
index 0000000000..a9fbc71e6d
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pagePrevValidated.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pagePrevValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page has an invalid prev value.",
+ "title": "True when **Annotation Page has no _prev_ key** or has **_prev_ key** with valid value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "allOf": [
+ { "$ref": "collections.json#/definitions/prevValidIfPresent" },
+ { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" }
+ ]
+ },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/prevValidIfPresent" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageStartIndexImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageStartIndexImplemented.json
new file mode 100644
index 0000000000..00a1eddd28
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageStartIndexImplemented.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageStartIndexImplemented.json",
+ "assertionType": "should",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Page has has no valid startIndex value.",
+ "title": "Implements **Annotation Page _startIndex_ key** with valid value of _type_ integer >= 0 - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "$ref": "collections.json#/definitions/startIndexFound" },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/startIndexFound" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageStartIndexValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageStartIndexValidated.json
new file mode 100644
index 0000000000..2177193770
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageStartIndexValidated.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageStartIndexValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page has an invalid startIndex value.",
+ "title": "True when **Annotation Page has no _startIndex_ key** or has **_startIndex_ key** with valid value of _type_ integer >= 0 - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "allOf": [
+ { "$ref": "collections.json#/definitions/startIndexDefinition" },
+ { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" }
+ ]
+ },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/startIndexDefinition" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTotalImplemented.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTotalImplemented.json
new file mode 100644
index 0000000000..fe1f21edae
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTotalImplemented.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageTotalImplemented.json",
+ "assertionType": "may",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "passAndContinue",
+ "errorMessage": "Annotation Page has no total key (i.e., in description of Collection included using partOf key).",
+ "title": "Implements **Annotation Page _total_ key** (i.e., in description of Collection included using partOf key) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "collections.json#/definitions/totalFound" }
+ },
+ "required": [ "partOf" ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTotalValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTotalValidated.json
new file mode 100644
index 0000000000..ca57e286ed
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTotalValidated.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageTotalValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page has total key (i.e., in description of Collection included using partOf key) with non-numeric value, a negative numeric value, or more than one value.",
+ "title": "**Annotation Page _total_ key**, if present (i.e., in description of Collection included using partOf key), is **a non-negative integer value** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "type": "object",
+ "properties":
+ {
+ "partOf":
+ { "$ref": "collections.json#/definitions/totalDefinition" }
+ }
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTypeValidated.json b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTypeValidated.json
new file mode 100644
index 0000000000..cb0e2f362d
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/5.2-pageTypeValidated.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "5.2-pageTypeValidated.json",
+ "assertionType": "must",
+ "expectedResult": "valid",
+ "onUnexpectedResult" : "failAndContinue",
+ "errorMessage": "ERROR: Annotation Page is missing type key or 'AnnotationPage' is not a value of type.",
+ "title": "Implements **Annotation Page _type_ key** such that '**AnnotationPage**' is **a value of _type_** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)",
+ "oneOf": [
+ { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" },
+ { "type": "object",
+ "properties":
+ {"first":
+ { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" }
+ },
+ "required": [ "first" ]
+ }
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/pageMusts-manual.html b/testing/web-platform/tests/annotation-model/collections/pages/pageMusts-manual.html
new file mode 100644
index 0000000000..4422bbae35
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/pageMusts-manual.html
@@ -0,0 +1,48 @@
+<!doctype html>
+<html>
+<head>
+<title>A single Annotation Page has all required keys and all page keys present meet required value constraints</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/annotation-model/scripts/ajv.min.js"></script>
+<script src="/annotation-model/scripts/showdown.min.js"></script>
+<script src="/annotation-model/scripts/JSONtest.js"></script>
+<script>
+setup({explicit_timeout: true, explicit_done: true });
+
+var theDefinitions=[
+ "definitions/choiceSet.json",
+ "definitions/id.json",
+ "definitions/bodyTarget.json",
+ "definitions/annotations.json",
+ "definitions/specificResource.json",
+ "definitions/otherProperties.json",
+ "definitions/collections.json"
+];
+
+var theTestFile="pageMusts.test";
+
+var runningTest = new JSONtest( {
+ "testInput" : "annotation-input",
+ "runTest" : "annotation-run",
+ "closeWindow" : "annotation-close",
+ "schemaDefs" : theDefinitions,
+ "testFile" : theTestFile
+} ) ;
+
+</script>
+</head>
+<body>
+<p>Fill the textarea below with JSON output from your annotation client
+implementation that supports the following criteria:</p>
+<div id="testDescription"></div>
+<form name="annotation" id="annotation">
+ <textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea>
+ <p><input type="button" id="annotation-run" name="Loading..." value="Loading...">
+ <input style="display: none" type="button" id="annotation-close"
+ name="Close" value="Close"></p>
+</form>
+<p>Specifically, the following assertions will be evaluated:</p>
+<div id="assertion"></div>
+</body>
+</html>
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/pageMusts.test b/testing/web-platform/tests/annotation-model/collections/pages/pageMusts.test
new file mode 100644
index 0000000000..38722d75d2
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/pageMusts.test
@@ -0,0 +1,24 @@
+{
+ "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
+ "name": "A single Annotation Page has all required keys and all page keys present meet required value constraints",
+ "description": "Pages of Web Annotations: <ul> <li>MUST include certain properties (keys)</li> <li>MUST satisfy model constraints on values of required and any optional Annotation keys used</li> </ul> Note: Implementation of optional Annotation Collection keys (features), optional constraints on key values, and optional keys and constraints on Agents involved in an Annotation Collection checked by other tests.<br/><b>Please fill textarea with json-ld serialization of a single Annotation Page or an Annotation Collection with an embedded Page</b>",
+ "testType": "manual",
+ "ref": "https://www.w3.org/TR/annotation-model/",
+ "assertions": [
+ "collections/pages/5.2-pageContextValidated.json",
+ "collections/pages/5.2-pageIdValidated.json",
+ "collections/pages/5.2-pageTypeValidated.json",
+ "collections/pages/5.2-pageItemsValidated.json",
+ "collections/pages/5.2-pageStartIndexValidated.json",
+ "collections/pages/5.2-pagePartOfValidated.json",
+ "collections/pages/5.2-pageNextValidated.json",
+ "collections/pages/5.2-pagePrevValidated.json",
+ "collections/pages/5.2-pageTotalValidated.json",
+ "collections/pages/5.2-pageLabelValidated.json",
+ "collections/pages/5.2-pageFirstValidated.json",
+ "collections/pages/5.2-pageLastValidated.json",
+ "collections/pages/3.3.1-pageCreatedValidated.json",
+ "collections/pages/3.3.1-pageModifiedValidated.json",
+ "collections/pages/3.3.6-pageRightsValidated.json"
+ ]
+}
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/pageOptionals-manual.html b/testing/web-platform/tests/annotation-model/collections/pages/pageOptionals-manual.html
new file mode 100644
index 0000000000..95f66bb7f7
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/pageOptionals-manual.html
@@ -0,0 +1,48 @@
+<!doctype html>
+<html>
+<head>
+<title>A single Annotation Page implements optional keys and meets optional key value constraints</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/annotation-model/scripts/ajv.min.js"></script>
+<script src="/annotation-model/scripts/showdown.min.js"></script>
+<script src="/annotation-model/scripts/JSONtest.js"></script>
+<script>
+setup({explicit_timeout: true, explicit_done: true });
+
+var theDefinitions=[
+ "definitions/choiceSet.json",
+ "definitions/id.json",
+ "definitions/bodyTarget.json",
+ "definitions/annotations.json",
+ "definitions/specificResource.json",
+ "definitions/otherProperties.json",
+ "definitions/collections.json"
+];
+
+var theTestFile="pageOptionals.test";
+
+var runningTest = new JSONtest( {
+ "testInput" : "annotation-input",
+ "runTest" : "annotation-run",
+ "closeWindow" : "annotation-close",
+ "schemaDefs" : theDefinitions,
+ "testFile" : theTestFile
+} ) ;
+
+</script>
+</head>
+<body>
+<p>Fill the textarea below with JSON output from your annotation client
+implementation that supports the following criteria:</p>
+<div id="testDescription"></div>
+<form name="annotation" id="annotation">
+ <textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea>
+ <p><input type="button" id="annotation-run" name="Loading..." value="Loading...">
+ <input style="display: none" type="button" id="annotation-close"
+ name="Close" value="Close"></p>
+</form>
+<p>Specifically, the following assertions will be evaluated:</p>
+<div id="assertion"></div>
+</body>
+</html>
diff --git a/testing/web-platform/tests/annotation-model/collections/pages/pageOptionals.test b/testing/web-platform/tests/annotation-model/collections/pages/pageOptionals.test
new file mode 100644
index 0000000000..39fac8f93c
--- /dev/null
+++ b/testing/web-platform/tests/annotation-model/collections/pages/pageOptionals.test
@@ -0,0 +1,29 @@
+{
+ "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
+ "name": "A single Annotation Page implements optional keys and meets optional key value constraints",
+ "description": "Pages of Web Annotations: <ul> <li>MUST include certain properties (keys)</li> <li>MUST satisfy model constraints on values of required and any optional Annotation keys used</li> </ul> Note: Implementation of optional Annotation Collection keys (features), optional constraints on key values, and optional keys and constraints on Agents involved in an Annotation Collection checked by other tests.<br/><b>Please fill textarea with json-ld serialization of a single Annotation Page or an Annotation Collection with an embedded Page</b>",
+ "testType": "manual",
+ "skipFailures": [ "should", "may" ],
+ "ref": "https://www.w3.org/TR/annotation-model/",
+ "assertions": [
+ "collections/pages/5.2-pagePartOfImplemented.json",
+ "collections/pages/5.2-pageStartIndexImplemented.json",
+ "collections/pages/5.2-pageNextImplemented.json",
+ "collections/pages/5.2-pagePrevImplemented.json",
+ "collections/pages/5.2-pageLabelImplemented.json",
+ "collections/pages/5.2-pageLastImplemented.json",
+ "collections/pages/5.2-pageTotalImplemented.json",
+ "collections/pages/5.2-pageFirstImplemented.json",
+ "collections/pages/3.3.1-pageModifiedImplemented.json",
+ "collections/pages/3.3.1-pageCreatorImplemented.json",
+ "collections/pages/3.3.1-pageCreatedImplemented.json",
+ "collections/pages/3.3.6-pageRightsImplemented.json",
+ "collections/pages/3.3.2-pageCreatorAgentEmail_sha1Implemented.json",
+ "collections/pages/3.3.2-pageCreatorAgentEmailImplemented.json",
+ "collections/pages/3.3.2-pageCreatorAgentHomepageImplemented.json",
+ "collections/pages/3.3.2-pageCreatorAgentIdImplemented.json",
+ "collections/pages/3.3.2-pageCreatorAgentNameImplemented.json",
+ "collections/pages/3.3.2-pageCreatorAgentNicknameImplemented.json",
+ "collections/pages/3.3.2-pageCreatorAgentTypeImplemented.json"
+ ]
+}