diff --git a/annotation-model/DG-input/anno00.json b/annotation-model/DG-input/anno00.json new file mode 100644 index 0000000..3f3de0d --- /dev/null +++ b/annotation-model/DG-input/anno00.json @@ -0,0 +1,60 @@ +{ + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + { + "sc": "http://iiif.io/api/presentation/2#", + "wc": "http://wellcomecollection.org/w3c-anno-placeholder#", + "naming": "wc:naming" + } + ], + "id": "http://wellcomecollection.org/annotations/sleep-stories/story-8", + "type": "Annotation", + "body": [ + { + "type": "Composite", + "items": [ + { + "type": "TextualBody", + "purpose": "describing", + "value": "When I was younger I would talk a lot in my sleep. Once I answered a call and talked for a long time and to this day don't know who it was or remember it." + }, + { + "id": "http://wellcomecollection.org/quilt/assets/story-8.jpg", + "type": "Image" + }, + { + "id": "http://wellcomecollection.org/quilt/assets/story-8.webm", + "type": "Video" + } + ] + }, + { + "type": "TextualBody", + "purpose": "tagging", + "value": "Sleep talking", + "creator": "Jenn" + }, + { + "type": "TextualBody", + "purpose": "tagging", + "value": "Childhood", + "creator": "Russell" + }, + { + "type": "TextualBody", + "purpose": "tagging", + "value": "Talk", + "creator": "Russell" + } + ], + "target": { + "source": "http://wellcomecollection.org/iiif/quilt/canvas0", + "type": "sc:Canvas", + "within": "http://wellcomecollection.org/iiif/quilt/manifest", + "sc:naturalAngle": 47, + "selector": { + "type": "SvgSelector", + "value": "" + } + } +} \ No newline at end of file diff --git a/annotation-model/DG00.json b/annotation-model/DG00.json new file mode 100644 index 0000000..ebb0fb1 --- /dev/null +++ b/annotation-model/DG00.json @@ -0,0 +1,358 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 Implements **body _type_ key** with one or more values each of which is drawn from the **model's list of resource classes** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 Implements **body _purpose_ key** with one or more values are each drawn from **model's list of Motivations** [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 Implements **Embedded Textual Body _type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 Implements **Choice or Set** with type and items key as a body - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 Implements **Composite** with **_type_ and _items_ keys** as a body of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:62 Implements **Specific Resource** with **_source_ and at least one of _purpose, selector, state, style, renderedVia, scope_ keys** as a target of the Annotation [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:63 Implements **Specific Resource _refinedBy_ key** [model 4.2.9](https://www.w3.org/TR/annotation-model/#refinement-of-selection), [model 4.3.3](https://www.w3.org/TR/annotation-model/#refinement-of-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:67 Implements **Specific Resource Selector** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:77 Implements **Specific Resource SVG Selector** - [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:79 Implements **Specific Resource State** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} diff --git a/annotation-model/EF-input/anno11.json b/annotation-model/EF-input/anno11.json new file mode 100644 index 0000000..45a7559 --- /dev/null +++ b/annotation-model/EF-input/anno11.json @@ -0,0 +1,19 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://data.europeana.eu/annotations/1", + "type": "Annotation", + "created": "2015-03-10T14:08:07Z", + "creator": { + "type": "Person", + "name": "John Smith" + }, + "generated": "2015-04-01T09:00:00Z", + "generator": { + "type": "Software", + "name": "HistoryPin", + "homepage": "https://www.historypin.org/" + }, + "motivation": "tagging", + "bodyValue": "MyTag", + "target": "http://data.europeana.eu/item/09102/_UEDIN_214" +} \ No newline at end of file diff --git a/annotation-model/EF-input/anno12.json b/annotation-model/EF-input/anno12.json new file mode 100644 index 0000000..66b4f65 --- /dev/null +++ b/annotation-model/EF-input/anno12.json @@ -0,0 +1,23 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://data.europeana.eu/annotations/1", + "type": "Annotation", + "created": "2015-03-10T14:08:07Z", + "creator": { + "type": "Person", + "name": "John Smith" + }, + "generated": "2015-04-01T09:00:00Z", + "generator": { + "type": "Software", + "name": "HistoryPin", + "homepage": "https://www.historypin.org/" + }, + "motivation": "tagging", + "body": { + "type": "TextualBody", + "text": "MyTag", + "language": "en" + }, + "target": "http://data.europeana.eu/item/09102/_UEDIN_214" +} \ No newline at end of file diff --git a/annotation-model/EF-input/anno13.json b/annotation-model/EF-input/anno13.json new file mode 100644 index 0000000..3223dce --- /dev/null +++ b/annotation-model/EF-input/anno13.json @@ -0,0 +1,19 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://data.europeana.eu/annotations/1", + "type": "Annotation", + "created": "2015-03-10T14:08:07Z", + "creator": { + "type": "Person", + "name": "John Smith" + }, + "generated": "2015-04-01T09:00:00Z", + "generator": { + "type": "Software", + "name": "HistoryPin", + "homepage": "https://www.historypin.org/" + }, + "motivation": "tagging", + "body": "http://sws.geonames.org/2988507", + "target": "http://data.europeana.eu/item/09102/_UEDIN_214" +} \ No newline at end of file diff --git a/annotation-model/EF-input/anno14.json b/annotation-model/EF-input/anno14.json new file mode 100644 index 0000000..142bb73 --- /dev/null +++ b/annotation-model/EF-input/anno14.json @@ -0,0 +1,27 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://data.europeana.eu/annotations/1", + "type": "Annotation", + "created": "2015-03-10T14:08:07Z", + "creator": { + "type": "Person", + "name": "John Smith" + }, + "generated": "2015-04-01T09:00:00Z", + "generator": { + "type": "Software", + "name": "HistoryPin", + "homepage": "https://www.historypin.org/" + }, + "motivation": "tagging", + "body": { + "@context": "http://www.europeana.eu/schemas/context/entity.jsonld", + "type": "Place", + "prefLabel": { + "en": "A label for the location, e.g. an address or place name" + }, + "lat": "48.85341", + "long": "2.3488" + }, + "target": "http://data.europeana.eu/item/09102/_UEDIN_214" +} \ No newline at end of file diff --git a/annotation-model/EF-input/anno21.json b/annotation-model/EF-input/anno21.json new file mode 100644 index 0000000..f47fc41 --- /dev/null +++ b/annotation-model/EF-input/anno21.json @@ -0,0 +1,21 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://data.europeana.eu/annotations/1", + "type": "Annotation", + "created": "2015-03-10T14:08:07Z", + "creator": { + "type": "Person", + "name": "John Smith" + }, + "generated": "2015-04-01T09:00:00Z", + "generator": { + "type": "Software", + "name": "HistoryPin", + "homepage": "https://www.historypin.org/" + }, + "motivation": "linking", + "target": [ + "http://data.europeana.eu/item/09102/_UEDIN_214", + "http://data.europeana.eu/item/09102/_RMAH_119385_NL" + ] +} \ No newline at end of file diff --git a/annotation-model/EF-input/anno22.json b/annotation-model/EF-input/anno22.json new file mode 100644 index 0000000..73299ac --- /dev/null +++ b/annotation-model/EF-input/anno22.json @@ -0,0 +1,28 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://data.europeana.eu/annotations/1", + "type": "Annotation", + "created": "2015-03-10T14:08:07Z", + "creator": { + "type": "Person", + "name": "John Smith" + }, + "generated": "2015-04-01T09:00:00Z", + "generator": { + "type": "Software", + "name": "HistoryPin", + "homepage": "https://www.historypin.org/" + }, + "motivation": "linking", + "body": { + "@graph": { + "@context": "http://www.europeana.eu/schemas/context/edm.jsonld", + "id": "http://data.europeana.eu/item/09102/_UEDIN_214", + "isNextInSequence": "http://data.europeana.eu/item/09102/_RMAH_119385_NL" + } + }, + "target": [ + "http://data.europeana.eu/item/09102/_UEDIN_214", + "http://data.europeana.eu/item/09102/_RMAH_119385_NL" + ] +} \ No newline at end of file diff --git a/annotation-model/EF-input/anno23.json b/annotation-model/EF-input/anno23.json new file mode 100644 index 0000000..6254ccc --- /dev/null +++ b/annotation-model/EF-input/anno23.json @@ -0,0 +1,29 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://data.europeana.eu/annotations/1", + "type": "Annotation", + "created": "2015-03-10T14:08:07Z", + "creator": { + "type": "Person", + "name": "John Smith" + }, + "generated": "2015-04-01T09:00:00Z", + "generator": { + "type": "Software", + "name": "HistoryPin", + "homepage": "https://www.historypin.org/" + }, + "motivation": "linking", + "body": { + "@graph": { + "@context": "http://www.europeana.eu/schemas/context/edm.jsonld", + "id": "http://data.europeana.eu/item/2059207/data_sounds_T471_5", + "isSimilarTo": { + "id": "http://thesession.org/tunes/52", + "format": "text/html", + "title": "The Kid On The Mountain (slip jig) on The Session" + } + } + }, + "target": "http://data.europeana.eu/item/2059207/data_sounds_T471_5" +} \ No newline at end of file diff --git a/annotation-model/EF11.json b/annotation-model/EF11.json new file mode 100644 index 0000000..d24ad7a --- /dev/null +++ b/annotation-model/EF11.json @@ -0,0 +1,370 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_bodyValue_ key** which has a **single value** that is a **string** [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level **_generated_ 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/EF12.json b/annotation-model/EF12.json new file mode 100644 index 0000000..85b8518 --- /dev/null +++ b/annotation-model/EF12.json @@ -0,0 +1,380 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "FAIL", + "message": "assert_true: ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.; expected true got false" + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level **_generated_ 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/EF13.json b/annotation-model/EF13.json new file mode 100644 index 0000000..fd77707 --- /dev/null +++ b/annotation-model/EF13.json @@ -0,0 +1,370 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level **_generated_ 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/EF14.json b/annotation-model/EF14.json new file mode 100644 index 0000000..85b8518 --- /dev/null +++ b/annotation-model/EF14.json @@ -0,0 +1,380 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "FAIL", + "message": "assert_true: ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.; expected true got false" + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level **_generated_ 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/EF21.json b/annotation-model/EF21.json new file mode 100644 index 0000000..5051cbd --- /dev/null +++ b/annotation-model/EF21.json @@ -0,0 +1,365 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level **_generated_ 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/EF22.json b/annotation-model/EF22.json new file mode 100644 index 0000000..85b8518 --- /dev/null +++ b/annotation-model/EF22.json @@ -0,0 +1,380 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "FAIL", + "message": "assert_true: ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.; expected true got false" + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level **_generated_ 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/EF23.json b/annotation-model/EF23.json new file mode 100644 index 0000000..85b8518 --- /dev/null +++ b/annotation-model/EF23.json @@ -0,0 +1,380 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "FAIL", + "message": "assert_true: ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.; expected true got false" + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level **_generated_ 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/HY-input/anno01.json b/annotation-model/HY-input/anno01.json new file mode 100644 index 0000000..70f8c3b --- /dev/null +++ b/annotation-model/HY-input/anno01.json @@ -0,0 +1 @@ +{"body": [{"text": "This is a test annotation for use in evaluating Hypothesis conformance against the emerging W3C annotation standards.", "type": "TextualBody", "format": "text/markdown"}, {"text": "w3c", "type": "TextualBody", "purpose": "tagging"}, {"text": "annotation", "type": "TextualBody", "purpose": "tagging"}, {"text": "testing", "type": "TextualBody", "purpose": "tagging"}], "target": [{"source": "http://example.com/", "selector": [{"endContainer": "/div[1]/p[1]", "startContainer": "/div[1]/p[1]", "type": "RangeSelector", "startOffset": 0, "endOffset": 63}, {"type": "TextPositionSelector", "end": 88, "start": 25}, {"exact": "This domain is established to be used for illustrative examples", "prefix": "\n\n Example Domain\n ", "type": "TextQuoteSelector", "suffix": " in documents. You may use this\n"}]}], "created": "2016-09-14T10:28:56.170033+00:00", "@context": "http://www.w3.org/ns/anno.jsonld", "creator": "acct:nickstenning@hypothes.is", "type": "Annotation", "id": "https://hypothes.is/a/Cm70BnpmEeatYSc2ahgkGg", "modified": "2016-09-14T10:28:56.170040+00:00"} diff --git a/annotation-model/HY01.json b/annotation-model/HY01.json new file mode 100644 index 0000000..e65313f --- /dev/null +++ b/annotation-model/HY01.json @@ -0,0 +1,375 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "FAIL", + "message": "assert_true: ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.; expected true got false" + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation contains one or more Specific Resources selectors having value(s) which is(are) not of format uri, nor an object having a type key with a single value which is one of 'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'.; expected true got false" + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation contains a Range selector that is NOT of format uri and NOT an object having both startSelector and endSelector keys.; expected true got false" + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:62 Implements **Specific Resource** with **_source_ and at least one of _purpose, selector, state, style, renderedVia, scope_ keys** as a target of the Annotation [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:63 Implements **Specific Resource _refinedBy_ key** [model 4.2.9](https://www.w3.org/TR/annotation-model/#refinement-of-selection), [model 4.3.3](https://www.w3.org/TR/annotation-model/#refinement-of-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:67 Implements **Specific Resource Selector** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:72 Implements **Specific Resource Text Quote Selector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:73 Implements **Specific Resource _prefix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:74 Implements **Specific Resource _suffix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:75 Implements **Specific Resource Text Position Selector** - [model 4.2.5](https://www.w3.org/TR/annotation-model/#text-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:79 Implements **Specific Resource State** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/KM-input/anno01.json b/annotation-model/KM-input/anno01.json new file mode 100644 index 0000000..6b3983a --- /dev/null +++ b/annotation-model/KM-input/anno01.json @@ -0,0 +1,21 @@ + { + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + {"anbase": "http://purl.org/net/ld/annot/masaka/"} + ], + "id": "anbase:fa62d1351e5f1f18dfb44484f5e27a23", + "type": "Annotation", + "bodyValue": "Tail piece:The other end of strings are hooked to tail piece.", + "target": { + "id": "http://www.kanzaki.com/works/2004/imgdsc/040207_1739.jpg#xywh=44,357,94,50", + "type": "Image", + "source": "http://www.kanzaki.com/works/2004/imgdsc/040207_1739.jpg", + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=44,357,94,50" + } + }, + "creator": "http://purl.org/net/who/kanzaki#masahide", + "created": "2004-02-08T05:16:21Z" +} diff --git a/annotation-model/KM01.json b/annotation-model/KM01.json new file mode 100644 index 0000000..2c631b2 --- /dev/null +++ b/annotation-model/KM01.json @@ -0,0 +1,355 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_bodyValue_ key** which has a **single value** that is a **string** [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 Implements **target _type_ key** with one or more values each of which is drawn from the **model's list of resource classes** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:62 Implements **Specific Resource** with **_source_ and at least one of _purpose, selector, state, style, renderedVia, scope_ keys** as a target of the Annotation [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:63 Implements **Specific Resource _refinedBy_ key** [model 4.2.9](https://www.w3.org/TR/annotation-model/#refinement-of-selection), [model 4.3.3](https://www.w3.org/TR/annotation-model/#refinement-of-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:67 Implements **Specific Resource Selector** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:68 Implements **Specific Resource Fragment Selector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:69 Implements **Specific Resource _conformsTo_ key** with a **single value** which is of **format uri** on a **Specific Resource FragmentSelector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:79 Implements **Specific Resource State** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} diff --git a/annotation-model/MM-input/anno01.json b/annotation-model/MM-input/anno01.json new file mode 100644 index 0000000..04c151d --- /dev/null +++ b/annotation-model/MM-input/anno01.json @@ -0,0 +1,30 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://localhost:8080/annos/954ba87f-dfbc-4028-bfdb-ca46b4c69b07", + "type": "Annotation", + "motivation": [ + "commenting" + ], + "created": "2016-10-07T20:34:10Z", + "generator": { + "type": "Software", + "label": "MangoServer v0.9", + "homepage": "https://github.com/azaroth42/MangoServer/" + }, + "canonical": "http://localhost:8080/annos/954ba87f-dfbc-4028-bfdb-ca46b4c69b07", + "body": [ + { + "type": "TextualBody", + "value": "

Some testing comment for testing

", + "format": "text/html" + } + ], + "target": { + "type": "SpecificResource", + "selector": { + "type": "SvgSelector", + "value": "" + }, + "source": "http://dams.llgc.org.uk/iiif/2.0/4574752/canvas/4574755.json" + } +} diff --git a/annotation-model/MM-input/anno02.json b/annotation-model/MM-input/anno02.json new file mode 100644 index 0000000..f06d7ee --- /dev/null +++ b/annotation-model/MM-input/anno02.json @@ -0,0 +1,19 @@ +{ + "@context" : "http://www.w3.org/ns/anno.jsonld", + "id" : "urn:uuid:6C869FAD-7957-459C-A429-76D3839B2259", + "type" : "Annotation", + "motivation" : [ "commenting" ], + "body" : [ { + "type" : ["TextualBody", "dctypes:Text"], + "format" : "text/html", + "value" : "

1852-1921

" + } ], + "target" : { + "type" : "SpecificResource", + "source" : "http://dams.llgc.org.uk/iiif/2.0/4574752/canvas/4574755.json", + "selector" : { + "type" : "FragmentSelector", + "value" : "xywh=2218,3217,371,78" + } + } +} diff --git a/annotation-model/MM-input/anno03.json b/annotation-model/MM-input/anno03.json new file mode 100644 index 0000000..9a1df2d --- /dev/null +++ b/annotation-model/MM-input/anno03.json @@ -0,0 +1,48 @@ +{ + "@context": [ + "http://iiif.io/api/presentation/2/context.json", + "http://www.w3.org/ns/anno.jsonld" + ], + "id": "http://conqueringcorsairs.com:8080/annos/fdeaaab1-7774-4e5a-a093-0039170010b2", + "type": "Annotation", + "motivation": "sc:painting", + "created": "2016-11-12T00:33:09Z", + "generator": { + "type": "Software", + "label": "MangoServer v0.9", + "homepage": "https://github.com/azaroth42/MangoServer/" + }, + "canonical": "http://conqueringcorsairs.com:8080/annos/fdeaaab1-7774-4e5a-a093-0039170010b2", + "body": { + "type": "Choice", + "items": [ + { + "id": "http://example.edu/services/iiif/f1r.c/full/full/0/default.jpg", + "type": "Image", + "label": "Color", + "format": "image/jpeg", + "service": { + "@context": "http://iiif.io/api/image/2/context.json", + "id": "http://example.edu/services/iiif/f1r.c", + "profile": "http://iiif.io/api/image/2/level2.json" + }, + "height": 3403, + "width": 2403 + }, + { + "id": "http://example.edu/services/iiif/f1r/full/full/0/default.jpg", + "type": "Image", + "label": "Black and White", + "format": "image/jpeg", + "service": { + "@context": "http://iiif.io/api/image/2/context.json", + "profile": "http://iiif.io/api/image/2/level2.json", + "@id": "http://example.edu/services/iiif/f1r" + }, + "height": 2203, + "width": 1548 + } + ] + }, + "target": "http://example.edu/prezi/m804/canvas/f1r.json" +} diff --git a/annotation-model/MM01.json b/annotation-model/MM01.json new file mode 100644 index 0000000..580003b --- /dev/null +++ b/annotation-model/MM01.json @@ -0,0 +1,390 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements Annotation-level **_canonical_ key** which has a single value that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements **body _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements **body _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 Implements **Embedded Textual Body _type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:62 Implements **Specific Resource** with **_source_ and at least one of _purpose, selector, state, style, renderedVia, scope_ keys** as a target of the Annotation [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:63 Implements **Specific Resource _refinedBy_ key** [model 4.2.9](https://www.w3.org/TR/annotation-model/#refinement-of-selection), [model 4.3.3](https://www.w3.org/TR/annotation-model/#refinement-of-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:67 Implements **Specific Resource Selector** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:77 Implements **Specific Resource SVG Selector** - [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:79 Implements **Specific Resource State** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/MM02.json b/annotation-model/MM02.json new file mode 100644 index 0000000..fb5bd29 --- /dev/null +++ b/annotation-model/MM02.json @@ -0,0 +1,405 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements **body _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements **body _language_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements **body _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 Implements **body _language_ key** with one or more values each of which is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 Implements **Embedded Textual Body _type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:11 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/MM03.json b/annotation-model/MM03.json new file mode 100644 index 0000000..aac3774 --- /dev/null +++ b/annotation-model/MM03.json @@ -0,0 +1,412 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 Implements Annotation-level **_canonical_ key** which has a single value that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements **body _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements **body _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 Implements **body _type_ key** with one or more values each of which is drawn from the **model's list of resource classes** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 Implements **Choice or Set** with type and items key as a body - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 Implements **Choice** with **_type_ and _items_ keys** as a body of the Annotation [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:10 Implements **_generator_ 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).", + "status": "PASS", + "message": null + }, + { + "name": "1:12 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation-level generator (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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/collections/collectionMusts-manual.html", + "subtests": [ + { + "name": "1:1 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Collection is missing type key or 'AnnotationCollection' is not a value of type.; expected true got false" + }, + { + "name": "1:4 **Annotation Collection _label_ key**, if present, is **a value of type string** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 **Annotation Collection _total_ key**, if present, is **a non-negative integer value** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 **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)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 **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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} diff --git a/annotation-model/PN-input/.keep b/annotation-model/PN-input/.keep new file mode 100644 index 0000000..e69de29 diff --git a/annotation-model/PN-input/PN01.anno b/annotation-model/PN-input/PN01.anno new file mode 100644 index 0000000..dd7b015 --- /dev/null +++ b/annotation-model/PN-input/PN01.anno @@ -0,0 +1,71 @@ + { + "@id": "http:\/\/purl.org\/pundit\/as\/annotation\/fc75e478", + "@type": [ + "http:\/\/www.openannotation.org\/ns\/Annotation" + ], + "http:\/\/purl.org\/pundit\/ont\/ao#hasPageContext": [ + { + "@id": "http:\/\/sfr-inc.com\/" + } + ], + "http:\/\/purl.org\/pundit\/ont\/ao#hasPageTitle": [ + { + "@value": "SFR INC" + } + ], + "http:\/\/purl.org\/pundit\/ont\/ao#id": [ + { + "@value": "fc75e478" + } + ], + "http:\/\/purl.org\/pundit\/ont\/ao#isIncludedIn": [ + { + "@id": "http:\/\/purl.org\/pundit\/as\/notebook\/4895cc41" + } + ], + "http:\/\/www.openannotation.org\/ns\/annotatedAt": [ + { + "@type": "http:\/\/www.w3.org\/2001\/XMLSchema#dateTime", + "@value": "2016-09-30T11:16:57Z" + } + ], + "http:\/\/www.openannotation.org\/ns\/annotatedBy": [ + { + "@id": "http:\/\/purl.org\/pundit\/as\/user\/0e3f5a44" + }, + { + "@value": "Dan Ilo" + } + ], + "http:\/\/www.openannotation.org\/ns\/hasTarget": [ + { + "@id": "http:\/\/purl.org\/pundit\/as\/target\/1f48e10257fee8fc4b39cc32cb4cff60" + } + ], + "http:\/\/www.openannotation.org\/ns\/motivatedBy": [ + { + "@id": "http:\/\/www.openannotation.org\/ns\/highlighting" + } + ], + "http:\/\/www.openannotation.org\/ns\/serializedAt": [ + { + "@type": "http:\/\/www.w3.org\/2001\/XMLSchema#dateTime", + "@value": "2016-09-30T11:16:57Z" + } + ], + "http:\/\/www.openannotation.org\/ns\/serializedBy": [ + { + "@id": "http:\/\/thepund.it" + } + ], + "http:\/\/www.w3.org\/2000\/01\/rdf-schema#label": [ + { + "@value": "Annotation 2016-09-30T11:16:57Z" + } + ], + "http:\/\/xmlns.com\/foaf\/0.1\/thumbnail": [ + { + "@id": "https:\/\/graph.facebook.com\/945862302146498\/picture?type=square" + } + ] + } diff --git a/annotation-model/PN-input/PN02.anno b/annotation-model/PN-input/PN02.anno new file mode 100644 index 0000000..5e024ad --- /dev/null +++ b/annotation-model/PN-input/PN02.anno @@ -0,0 +1,43 @@ + { + "@id": "http:\/\/purl.org\/pundit\/as\/notebook\/4895cc41", + "@type": [ + "http:\/\/purl.org\/pundit\/ont\/ao#Notebook" + ], + "http:\/\/purl.org\/dc\/elements\/1.1\/creator": [ + { + "@value": "Dan Ilo" + } + ], + "http:\/\/purl.org\/dc\/terms\/created": [ + { + "@type": "http:\/\/www.w3.org\/2001\/XMLSchema#dateTime", + "@value": "2016-08-05T10:06:04Z" + } + ], + "http:\/\/purl.org\/dc\/terms\/creator": [ + { + "@id": "http:\/\/purl.org\/pundit\/as\/user\/0e3f5a44" + } + ], + "http:\/\/purl.org\/pundit\/ont\/ao#id": [ + { + "@value": "4895cc41" + } + ], + "http:\/\/purl.org\/pundit\/ont\/ao#includes": [ + { + "@id": "http:\/\/purl.org\/pundit\/as\/annotation\/fc75e478" + } + ], + "http:\/\/purl.org\/pundit\/ont\/ao#isPublic": [ + { + "@type": "http:\/\/www.w3.org\/2001\/XMLSchema#boolean", + "@value": "true" + } + ], + "http:\/\/www.w3.org\/2000\/01\/rdf-schema#label": [ + { + "@value": "f" + } + ] + } diff --git a/annotation-model/PN-input/PN03.anno b/annotation-model/PN-input/PN03.anno new file mode 100644 index 0000000..7810b3e --- /dev/null +++ b/annotation-model/PN-input/PN03.anno @@ -0,0 +1,21 @@ + { + "@id": "http:\/\/purl.org\/pundit\/as\/selector\/1f48e10257fee8fc4b39cc32cb4cff60", + "@type": [ + "http:\/\/www.openannotation.org\/ns\/FragmentSelector" + ], + "http:\/\/purl.org\/dc\/terms\/conformsTo": [ + { + "@id": "http:\/\/tools.ietf.org\/rfc\/rfc3023" + } + ], + "http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#value": [ + { + "@value": "http:\/\/sfr-inc.com\/#xpointer(start-point(string-range(\/\/BODY\/DIV[1]\/DIV[1]\/DIV[4]\/DIV[1]\/DIV[1],'',93))\/range-to(string-range(\/\/BODY\/DIV[1]\/DIV[1]\/DIV[4]\/DIV[1]\/DIV[1],'',97)))" + } + ], + "http:\/\/www.w3.org\/2000\/01\/rdf-schema#label": [ + { + "@value": "time" + } + ] + } diff --git a/annotation-model/PN-input/PN04.anno b/annotation-model/PN-input/PN04.anno new file mode 100644 index 0000000..84d1f60 --- /dev/null +++ b/annotation-model/PN-input/PN04.anno @@ -0,0 +1,27 @@ + { + "@id": "http:\/\/purl.org\/pundit\/as\/target\/1f48e10257fee8fc4b39cc32cb4cff60", + "@type": [ + "http:\/\/purl.org\/pundit\/ont\/ao#fragment-text", + "http:\/\/www.openannotation.org\/ns\/SpecificResource" + ], + "http:\/\/purl.org\/dc\/terms\/isPartOf": [ + { + "@id": "http:\/\/sfr-inc.com\/" + } + ], + "http:\/\/www.openannotation.org\/ns\/hasScope": [ + { + "@id": "http:\/\/sfr-inc.com\/" + } + ], + "http:\/\/www.openannotation.org\/ns\/hasSelector": [ + { + "@id": "http:\/\/purl.org\/pundit\/as\/selector\/1f48e10257fee8fc4b39cc32cb4cff60" + } + ], + "http:\/\/www.openannotation.org\/ns\/hasSource": [ + { + "@id": "http:\/\/sfr-inc.com\/" + } + ] + } diff --git a/annotation-model/PN-input/PN05.anno b/annotation-model/PN-input/PN05.anno new file mode 100644 index 0000000..136a79a --- /dev/null +++ b/annotation-model/PN-input/PN05.anno @@ -0,0 +1,41 @@ + { + "@id": "http:\/\/purl.org\/pundit\/as\/user\/0e3f5a44", + "@type": [ + "http:\/\/xmlns.com\/foaf\/0.1\/Person" + ], + "http:\/\/purl.org\/pundit\/ont\/ao#current": [ + { + "@id": "http:\/\/purl.org\/pundit\/as\/notebook\/fbf38dd8" + } + ], + "http:\/\/xmlns.com\/foaf\/0.1\/familyName": [ + { + "@value": "Ilo" + } + ], + "http:\/\/xmlns.com\/foaf\/0.1\/givenName": [ + { + "@value": "Dan" + } + ], + "http:\/\/xmlns.com\/foaf\/0.1\/mbox": [ + { + "@id": "mailto:danilogiacomi@gmail.com" + } + ], + "http:\/\/xmlns.com\/foaf\/0.1\/mbox_sha1sum": [ + { + "@value": "0e768ef0c4d177c7d7807ed189a497d56d534879" + } + ], + "http:\/\/xmlns.com\/foaf\/0.1\/name": [ + { + "@value": "Dan Ilo" + } + ], + "http:\/\/xmlns.com\/foaf\/0.1\/thumbnail": [ + { + "@id": "https:\/\/graph.facebook.com\/945862302146498\/picture?type=square" + } + ] + } diff --git a/annotation-model/PN-input/notebook.json b/annotation-model/PN-input/notebook.json new file mode 100644 index 0000000..128727d --- /dev/null +++ b/annotation-model/PN-input/notebook.json @@ -0,0 +1 @@ +[{"@id":"http:\/\/purl.org\/pundit\/as\/annotation\/fc75e478","@type":["http:\/\/www.openannotation.org\/ns\/Annotation"],"http:\/\/purl.org\/pundit\/ont\/ao#hasPageContext":[{"@id":"http:\/\/sfr-inc.com\/"}],"http:\/\/purl.org\/pundit\/ont\/ao#hasPageTitle":[{"@value":"SFR INC"}],"http:\/\/purl.org\/pundit\/ont\/ao#id":[{"@value":"fc75e478"}],"http:\/\/purl.org\/pundit\/ont\/ao#isIncludedIn":[{"@id":"http:\/\/purl.org\/pundit\/as\/notebook\/4895cc41"}],"http:\/\/www.openannotation.org\/ns\/annotatedAt":[{"@type":"http:\/\/www.w3.org\/2001\/XMLSchema#dateTime","@value":"2016-09-30T11:16:57Z"}],"http:\/\/www.openannotation.org\/ns\/annotatedBy":[{"@id":"http:\/\/purl.org\/pundit\/as\/user\/0e3f5a44"},{"@value":"Dan Ilo"}],"http:\/\/www.openannotation.org\/ns\/hasTarget":[{"@id":"http:\/\/purl.org\/pundit\/as\/target\/1f48e10257fee8fc4b39cc32cb4cff60"}],"http:\/\/www.openannotation.org\/ns\/motivatedBy":[{"@id":"http:\/\/www.openannotation.org\/ns\/highlighting"}],"http:\/\/www.openannotation.org\/ns\/serializedAt":[{"@type":"http:\/\/www.w3.org\/2001\/XMLSchema#dateTime","@value":"2016-09-30T11:16:57Z"}],"http:\/\/www.openannotation.org\/ns\/serializedBy":[{"@id":"http:\/\/thepund.it"}],"http:\/\/www.w3.org\/2000\/01\/rdf-schema#label":[{"@value":"Annotation 2016-09-30T11:16:57Z"}],"http:\/\/xmlns.com\/foaf\/0.1\/thumbnail":[{"@id":"https:\/\/graph.facebook.com\/945862302146498\/picture?type=square"}]},{"@id":"http:\/\/purl.org\/pundit\/as\/notebook\/4895cc41","@type":["http:\/\/purl.org\/pundit\/ont\/ao#Notebook"],"http:\/\/purl.org\/dc\/elements\/1.1\/creator":[{"@value":"Dan Ilo"}],"http:\/\/purl.org\/dc\/terms\/created":[{"@type":"http:\/\/www.w3.org\/2001\/XMLSchema#dateTime","@value":"2016-08-05T10:06:04Z"}],"http:\/\/purl.org\/dc\/terms\/creator":[{"@id":"http:\/\/purl.org\/pundit\/as\/user\/0e3f5a44"}],"http:\/\/purl.org\/pundit\/ont\/ao#id":[{"@value":"4895cc41"}],"http:\/\/purl.org\/pundit\/ont\/ao#includes":[{"@id":"http:\/\/purl.org\/pundit\/as\/annotation\/fc75e478"}],"http:\/\/purl.org\/pundit\/ont\/ao#isPublic":[{"@type":"http:\/\/www.w3.org\/2001\/XMLSchema#boolean","@value":"true"}],"http:\/\/www.w3.org\/2000\/01\/rdf-schema#label":[{"@value":"f"}]},{"@id":"http:\/\/purl.org\/pundit\/as\/selector\/1f48e10257fee8fc4b39cc32cb4cff60","@type":["http:\/\/www.openannotation.org\/ns\/FragmentSelector"],"http:\/\/purl.org\/dc\/terms\/conformsTo":[{"@id":"http:\/\/tools.ietf.org\/rfc\/rfc3023"}],"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#value":[{"@value":"http:\/\/sfr-inc.com\/#xpointer(start-point(string-range(\/\/BODY\/DIV[1]\/DIV[1]\/DIV[4]\/DIV[1]\/DIV[1],\u0027\u0027,93))\/range-to(string-range(\/\/BODY\/DIV[1]\/DIV[1]\/DIV[4]\/DIV[1]\/DIV[1],\u0027\u0027,97)))"}],"http:\/\/www.w3.org\/2000\/01\/rdf-schema#label":[{"@value":"time"}]},{"@id":"http:\/\/purl.org\/pundit\/as\/target\/1f48e10257fee8fc4b39cc32cb4cff60","@type":["http:\/\/purl.org\/pundit\/ont\/ao#fragment-text","http:\/\/www.openannotation.org\/ns\/SpecificResource"],"http:\/\/purl.org\/dc\/terms\/isPartOf":[{"@id":"http:\/\/sfr-inc.com\/"}],"http:\/\/www.openannotation.org\/ns\/hasScope":[{"@id":"http:\/\/sfr-inc.com\/"}],"http:\/\/www.openannotation.org\/ns\/hasSelector":[{"@id":"http:\/\/purl.org\/pundit\/as\/selector\/1f48e10257fee8fc4b39cc32cb4cff60"}],"http:\/\/www.openannotation.org\/ns\/hasSource":[{"@id":"http:\/\/sfr-inc.com\/"}]},{"@id":"http:\/\/purl.org\/pundit\/as\/user\/0e3f5a44","@type":["http:\/\/xmlns.com\/foaf\/0.1\/Person"],"http:\/\/purl.org\/pundit\/ont\/ao#current":[{"@id":"http:\/\/purl.org\/pundit\/as\/notebook\/fbf38dd8"}],"http:\/\/xmlns.com\/foaf\/0.1\/familyName":[{"@value":"Ilo"}],"http:\/\/xmlns.com\/foaf\/0.1\/givenName":[{"@value":"Dan"}],"http:\/\/xmlns.com\/foaf\/0.1\/mbox":[{"@id":"mailto:danilogiacomi@gmail.com"}],"http:\/\/xmlns.com\/foaf\/0.1\/mbox_sha1sum":[{"@value":"0e768ef0c4d177c7d7807ed189a497d56d534879"}],"http:\/\/xmlns.com\/foaf\/0.1\/name":[{"@value":"Dan Ilo"}],"http:\/\/xmlns.com\/foaf\/0.1\/thumbnail":[{"@id":"https:\/\/graph.facebook.com\/945862302146498\/picture?type=square"}]}] \ No newline at end of file diff --git a/annotation-model/PN01.json b/annotation-model/PN01.json new file mode 100644 index 0000000..bb27401 --- /dev/null +++ b/annotation-model/PN01.json @@ -0,0 +1,555 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.; expected true got false" + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing id key or its value is not a single string of format uri.; expected true got false" + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing type key or 'Annotation' is not a value of type.; expected true got false" + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: Error: Annotation is missing target key.; expected true got false" + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation contains one or more Specific Resources with styleClass key, but does not contain an Annotation-level stylesheet key.; expected true got false" + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:39 Implements **target _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 Implements **target _language_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 Implements **target _creator_ key** with a **single value** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 Implements **target _created_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Implements **target _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 Implements **target _language_ key** with one or more values each of which is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 Implements **target _type_ key** with one or more values each of which is drawn from the **model's list of resource classes** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 Implements **target _processingLanguage_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 Implements **target _textDirection_ key** with a **single value** that is is **one of ltr, rtl, or auto** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 Implements **target _modified_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 Implements **target _audience_ key** which has one or more values with each audience instance described using **[schema.org/Audience](http://schema.org/Audience) classes and properties** - [model 3.3.3](https://www.w3.org/TR/annotation-model/#intended-audience)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 Implements **target _accessibility_ key** which has one or more values - [model 3.3.4](#https://www.w3.org/TR/annotation-model/#accessibility-of-content)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 Implements **target _purpose_ key** with one or more values are each drawn from **model's list of Motivations** [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 Implements **target _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)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 Implements **target _canonical_ key** with a **single value** that is of **format uri** [model 3.3.7](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 Implements **target _via_ key** which has one or more values, each of which is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:56 Implements **Choice or Set** with type and items key as a target - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:57 Implements **Choice** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:58 Implements **List** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:59 Implements **Composite** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:60 Implements **Independents** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:62 Implements **Specific Resource** with **_source_ and at least one of _purpose, selector, state, style, renderedVia, scope_ keys** as a target of the Annotation [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:63 Implements **Specific Resource _refinedBy_ key** [model 4.2.9](https://www.w3.org/TR/annotation-model/#refinement-of-selection), [model 4.3.3](https://www.w3.org/TR/annotation-model/#refinement-of-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:64 Implements **Specific Resource _styleClass_ key** with one or more values on a **Specific Resource** - [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:65 Implements **Specific Resource _renderedVia_ key** with one or more values on a **Specific Resource** - [model 4.5](https://www.w3.org/TR/annotation-model/#rendering-software)", + "status": "PASS", + "message": null + }, + { + "name": "1:66 Implements **Specific Resource _scope_ key** - [model 4.6](https://www.w3.org/TR/annotation-model/#scope-of-a-resource)", + "status": "PASS", + "message": null + }, + { + "name": "1:67 Implements **Specific Resource Selector** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:68 Implements **Specific Resource Fragment Selector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:69 Implements **Specific Resource _conformsTo_ key** with a **single value** which is of **format uri** on a **Specific Resource FragmentSelector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:70 Implements **Specific Resource CSS Selector** - [model 4.2.2](https://www.w3.org/TR/annotation-model/#css-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:71 Implements **Specific Resource XPath Selector** - [model 4.2.3](https://www.w3.org/TR/annotation-model/#xpath-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:72 Implements **Specific Resource Text Quote Selector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:73 Implements **Specific Resource _prefix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:74 Implements **Specific Resource _suffix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:75 Implements **Specific Resource Text Position Selector** - [model 4.2.5](https://www.w3.org/TR/annotation-model/#text-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:76 Implements **Specific Resource Data Position Selector** - [model 4.2.6](https://www.w3.org/TR/annotation-model/#data-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:77 Implements **Specific Resource SVG Selector** - [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:78 Implements **Specific Resource Range Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:79 Implements **Specific Resource State** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:80 Implements **Specific Resource Time State** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:81 Implements **Specific Resource Request Header State** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:82 Implements **Specific Resource _cached_ key** with one or more values each of **format uri** on a **Specific Resource TimeState** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:28 Implements **target _creator_ key** with one or more values - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 Implements Target-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 Implements Target-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 Implements Target-level creator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 Implements Target-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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/PN02.json b/annotation-model/PN02.json new file mode 100644 index 0000000..bb27401 --- /dev/null +++ b/annotation-model/PN02.json @@ -0,0 +1,555 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.; expected true got false" + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing id key or its value is not a single string of format uri.; expected true got false" + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing type key or 'Annotation' is not a value of type.; expected true got false" + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: Error: Annotation is missing target key.; expected true got false" + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation contains one or more Specific Resources with styleClass key, but does not contain an Annotation-level stylesheet key.; expected true got false" + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:39 Implements **target _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 Implements **target _language_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 Implements **target _creator_ key** with a **single value** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 Implements **target _created_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Implements **target _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 Implements **target _language_ key** with one or more values each of which is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 Implements **target _type_ key** with one or more values each of which is drawn from the **model's list of resource classes** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 Implements **target _processingLanguage_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 Implements **target _textDirection_ key** with a **single value** that is is **one of ltr, rtl, or auto** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 Implements **target _modified_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 Implements **target _audience_ key** which has one or more values with each audience instance described using **[schema.org/Audience](http://schema.org/Audience) classes and properties** - [model 3.3.3](https://www.w3.org/TR/annotation-model/#intended-audience)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 Implements **target _accessibility_ key** which has one or more values - [model 3.3.4](#https://www.w3.org/TR/annotation-model/#accessibility-of-content)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 Implements **target _purpose_ key** with one or more values are each drawn from **model's list of Motivations** [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 Implements **target _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)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 Implements **target _canonical_ key** with a **single value** that is of **format uri** [model 3.3.7](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 Implements **target _via_ key** which has one or more values, each of which is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:56 Implements **Choice or Set** with type and items key as a target - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:57 Implements **Choice** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:58 Implements **List** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:59 Implements **Composite** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:60 Implements **Independents** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:62 Implements **Specific Resource** with **_source_ and at least one of _purpose, selector, state, style, renderedVia, scope_ keys** as a target of the Annotation [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:63 Implements **Specific Resource _refinedBy_ key** [model 4.2.9](https://www.w3.org/TR/annotation-model/#refinement-of-selection), [model 4.3.3](https://www.w3.org/TR/annotation-model/#refinement-of-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:64 Implements **Specific Resource _styleClass_ key** with one or more values on a **Specific Resource** - [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:65 Implements **Specific Resource _renderedVia_ key** with one or more values on a **Specific Resource** - [model 4.5](https://www.w3.org/TR/annotation-model/#rendering-software)", + "status": "PASS", + "message": null + }, + { + "name": "1:66 Implements **Specific Resource _scope_ key** - [model 4.6](https://www.w3.org/TR/annotation-model/#scope-of-a-resource)", + "status": "PASS", + "message": null + }, + { + "name": "1:67 Implements **Specific Resource Selector** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:68 Implements **Specific Resource Fragment Selector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:69 Implements **Specific Resource _conformsTo_ key** with a **single value** which is of **format uri** on a **Specific Resource FragmentSelector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:70 Implements **Specific Resource CSS Selector** - [model 4.2.2](https://www.w3.org/TR/annotation-model/#css-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:71 Implements **Specific Resource XPath Selector** - [model 4.2.3](https://www.w3.org/TR/annotation-model/#xpath-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:72 Implements **Specific Resource Text Quote Selector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:73 Implements **Specific Resource _prefix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:74 Implements **Specific Resource _suffix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:75 Implements **Specific Resource Text Position Selector** - [model 4.2.5](https://www.w3.org/TR/annotation-model/#text-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:76 Implements **Specific Resource Data Position Selector** - [model 4.2.6](https://www.w3.org/TR/annotation-model/#data-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:77 Implements **Specific Resource SVG Selector** - [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:78 Implements **Specific Resource Range Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:79 Implements **Specific Resource State** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:80 Implements **Specific Resource Time State** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:81 Implements **Specific Resource Request Header State** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:82 Implements **Specific Resource _cached_ key** with one or more values each of **format uri** on a **Specific Resource TimeState** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:28 Implements **target _creator_ key** with one or more values - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 Implements Target-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 Implements Target-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 Implements Target-level creator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 Implements Target-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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/PN03.json b/annotation-model/PN03.json new file mode 100644 index 0000000..bb27401 --- /dev/null +++ b/annotation-model/PN03.json @@ -0,0 +1,555 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.; expected true got false" + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing id key or its value is not a single string of format uri.; expected true got false" + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing type key or 'Annotation' is not a value of type.; expected true got false" + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: Error: Annotation is missing target key.; expected true got false" + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation contains one or more Specific Resources with styleClass key, but does not contain an Annotation-level stylesheet key.; expected true got false" + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:39 Implements **target _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 Implements **target _language_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 Implements **target _creator_ key** with a **single value** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 Implements **target _created_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Implements **target _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 Implements **target _language_ key** with one or more values each of which is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 Implements **target _type_ key** with one or more values each of which is drawn from the **model's list of resource classes** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 Implements **target _processingLanguage_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 Implements **target _textDirection_ key** with a **single value** that is is **one of ltr, rtl, or auto** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 Implements **target _modified_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 Implements **target _audience_ key** which has one or more values with each audience instance described using **[schema.org/Audience](http://schema.org/Audience) classes and properties** - [model 3.3.3](https://www.w3.org/TR/annotation-model/#intended-audience)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 Implements **target _accessibility_ key** which has one or more values - [model 3.3.4](#https://www.w3.org/TR/annotation-model/#accessibility-of-content)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 Implements **target _purpose_ key** with one or more values are each drawn from **model's list of Motivations** [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 Implements **target _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)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 Implements **target _canonical_ key** with a **single value** that is of **format uri** [model 3.3.7](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 Implements **target _via_ key** which has one or more values, each of which is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:56 Implements **Choice or Set** with type and items key as a target - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:57 Implements **Choice** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:58 Implements **List** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:59 Implements **Composite** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:60 Implements **Independents** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:62 Implements **Specific Resource** with **_source_ and at least one of _purpose, selector, state, style, renderedVia, scope_ keys** as a target of the Annotation [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:63 Implements **Specific Resource _refinedBy_ key** [model 4.2.9](https://www.w3.org/TR/annotation-model/#refinement-of-selection), [model 4.3.3](https://www.w3.org/TR/annotation-model/#refinement-of-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:64 Implements **Specific Resource _styleClass_ key** with one or more values on a **Specific Resource** - [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:65 Implements **Specific Resource _renderedVia_ key** with one or more values on a **Specific Resource** - [model 4.5](https://www.w3.org/TR/annotation-model/#rendering-software)", + "status": "PASS", + "message": null + }, + { + "name": "1:66 Implements **Specific Resource _scope_ key** - [model 4.6](https://www.w3.org/TR/annotation-model/#scope-of-a-resource)", + "status": "PASS", + "message": null + }, + { + "name": "1:67 Implements **Specific Resource Selector** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:68 Implements **Specific Resource Fragment Selector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:69 Implements **Specific Resource _conformsTo_ key** with a **single value** which is of **format uri** on a **Specific Resource FragmentSelector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:70 Implements **Specific Resource CSS Selector** - [model 4.2.2](https://www.w3.org/TR/annotation-model/#css-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:71 Implements **Specific Resource XPath Selector** - [model 4.2.3](https://www.w3.org/TR/annotation-model/#xpath-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:72 Implements **Specific Resource Text Quote Selector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:73 Implements **Specific Resource _prefix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:74 Implements **Specific Resource _suffix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:75 Implements **Specific Resource Text Position Selector** - [model 4.2.5](https://www.w3.org/TR/annotation-model/#text-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:76 Implements **Specific Resource Data Position Selector** - [model 4.2.6](https://www.w3.org/TR/annotation-model/#data-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:77 Implements **Specific Resource SVG Selector** - [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:78 Implements **Specific Resource Range Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:79 Implements **Specific Resource State** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:80 Implements **Specific Resource Time State** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:81 Implements **Specific Resource Request Header State** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:82 Implements **Specific Resource _cached_ key** with one or more values each of **format uri** on a **Specific Resource TimeState** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:28 Implements **target _creator_ key** with one or more values - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 Implements Target-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 Implements Target-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 Implements Target-level creator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 Implements Target-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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/PN04.json b/annotation-model/PN04.json new file mode 100644 index 0000000..bb27401 --- /dev/null +++ b/annotation-model/PN04.json @@ -0,0 +1,555 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.; expected true got false" + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing id key or its value is not a single string of format uri.; expected true got false" + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing type key or 'Annotation' is not a value of type.; expected true got false" + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: Error: Annotation is missing target key.; expected true got false" + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation contains one or more Specific Resources with styleClass key, but does not contain an Annotation-level stylesheet key.; expected true got false" + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:39 Implements **target _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 Implements **target _language_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 Implements **target _creator_ key** with a **single value** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 Implements **target _created_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Implements **target _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 Implements **target _language_ key** with one or more values each of which is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 Implements **target _type_ key** with one or more values each of which is drawn from the **model's list of resource classes** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 Implements **target _processingLanguage_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 Implements **target _textDirection_ key** with a **single value** that is is **one of ltr, rtl, or auto** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 Implements **target _modified_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 Implements **target _audience_ key** which has one or more values with each audience instance described using **[schema.org/Audience](http://schema.org/Audience) classes and properties** - [model 3.3.3](https://www.w3.org/TR/annotation-model/#intended-audience)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 Implements **target _accessibility_ key** which has one or more values - [model 3.3.4](#https://www.w3.org/TR/annotation-model/#accessibility-of-content)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 Implements **target _purpose_ key** with one or more values are each drawn from **model's list of Motivations** [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 Implements **target _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)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 Implements **target _canonical_ key** with a **single value** that is of **format uri** [model 3.3.7](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 Implements **target _via_ key** which has one or more values, each of which is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:56 Implements **Choice or Set** with type and items key as a target - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:57 Implements **Choice** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:58 Implements **List** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:59 Implements **Composite** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:60 Implements **Independents** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:62 Implements **Specific Resource** with **_source_ and at least one of _purpose, selector, state, style, renderedVia, scope_ keys** as a target of the Annotation [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:63 Implements **Specific Resource _refinedBy_ key** [model 4.2.9](https://www.w3.org/TR/annotation-model/#refinement-of-selection), [model 4.3.3](https://www.w3.org/TR/annotation-model/#refinement-of-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:64 Implements **Specific Resource _styleClass_ key** with one or more values on a **Specific Resource** - [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:65 Implements **Specific Resource _renderedVia_ key** with one or more values on a **Specific Resource** - [model 4.5](https://www.w3.org/TR/annotation-model/#rendering-software)", + "status": "PASS", + "message": null + }, + { + "name": "1:66 Implements **Specific Resource _scope_ key** - [model 4.6](https://www.w3.org/TR/annotation-model/#scope-of-a-resource)", + "status": "PASS", + "message": null + }, + { + "name": "1:67 Implements **Specific Resource Selector** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:68 Implements **Specific Resource Fragment Selector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:69 Implements **Specific Resource _conformsTo_ key** with a **single value** which is of **format uri** on a **Specific Resource FragmentSelector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:70 Implements **Specific Resource CSS Selector** - [model 4.2.2](https://www.w3.org/TR/annotation-model/#css-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:71 Implements **Specific Resource XPath Selector** - [model 4.2.3](https://www.w3.org/TR/annotation-model/#xpath-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:72 Implements **Specific Resource Text Quote Selector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:73 Implements **Specific Resource _prefix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:74 Implements **Specific Resource _suffix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:75 Implements **Specific Resource Text Position Selector** - [model 4.2.5](https://www.w3.org/TR/annotation-model/#text-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:76 Implements **Specific Resource Data Position Selector** - [model 4.2.6](https://www.w3.org/TR/annotation-model/#data-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:77 Implements **Specific Resource SVG Selector** - [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:78 Implements **Specific Resource Range Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:79 Implements **Specific Resource State** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:80 Implements **Specific Resource Time State** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:81 Implements **Specific Resource Request Header State** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:82 Implements **Specific Resource _cached_ key** with one or more values each of **format uri** on a **Specific Resource TimeState** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:28 Implements **target _creator_ key** with one or more values - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 Implements Target-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 Implements Target-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 Implements Target-level creator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 Implements Target-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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/PN05.json b/annotation-model/PN05.json new file mode 100644 index 0000000..bb27401 --- /dev/null +++ b/annotation-model/PN05.json @@ -0,0 +1,555 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.; expected true got false" + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing id key or its value is not a single string of format uri.; expected true got false" + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation is missing type key or 'Annotation' is not a value of type.; expected true got false" + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "FAIL", + "message": "assert_true: Error: Annotation is missing target key.; expected true got false" + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation contains one or more Specific Resources with styleClass key, but does not contain an Annotation-level stylesheet key.; expected true got false" + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:39 Implements **target _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 Implements **target _language_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 Implements **target _creator_ key** with a **single value** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 Implements **target _created_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Implements **target _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 Implements **target _language_ key** with one or more values each of which is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 Implements **target _type_ key** with one or more values each of which is drawn from the **model's list of resource classes** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 Implements **target _processingLanguage_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 Implements **target _textDirection_ key** with a **single value** that is is **one of ltr, rtl, or auto** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 Implements **target _modified_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 Implements **target _audience_ key** which has one or more values with each audience instance described using **[schema.org/Audience](http://schema.org/Audience) classes and properties** - [model 3.3.3](https://www.w3.org/TR/annotation-model/#intended-audience)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 Implements **target _accessibility_ key** which has one or more values - [model 3.3.4](#https://www.w3.org/TR/annotation-model/#accessibility-of-content)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 Implements **target _purpose_ key** with one or more values are each drawn from **model's list of Motivations** [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 Implements **target _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)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 Implements **target _canonical_ key** with a **single value** that is of **format uri** [model 3.3.7](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 Implements **target _via_ key** which has one or more values, each of which is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:56 Implements **Choice or Set** with type and items key as a target - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:57 Implements **Choice** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:58 Implements **List** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:59 Implements **Composite** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:60 Implements **Independents** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:62 Implements **Specific Resource** with **_source_ and at least one of _purpose, selector, state, style, renderedVia, scope_ keys** as a target of the Annotation [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:63 Implements **Specific Resource _refinedBy_ key** [model 4.2.9](https://www.w3.org/TR/annotation-model/#refinement-of-selection), [model 4.3.3](https://www.w3.org/TR/annotation-model/#refinement-of-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:64 Implements **Specific Resource _styleClass_ key** with one or more values on a **Specific Resource** - [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:65 Implements **Specific Resource _renderedVia_ key** with one or more values on a **Specific Resource** - [model 4.5](https://www.w3.org/TR/annotation-model/#rendering-software)", + "status": "PASS", + "message": null + }, + { + "name": "1:66 Implements **Specific Resource _scope_ key** - [model 4.6](https://www.w3.org/TR/annotation-model/#scope-of-a-resource)", + "status": "PASS", + "message": null + }, + { + "name": "1:67 Implements **Specific Resource Selector** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:68 Implements **Specific Resource Fragment Selector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:69 Implements **Specific Resource _conformsTo_ key** with a **single value** which is of **format uri** on a **Specific Resource FragmentSelector** - [model 4.2.1](https://www.w3.org/TR/annotation-model/#fragment-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:70 Implements **Specific Resource CSS Selector** - [model 4.2.2](https://www.w3.org/TR/annotation-model/#css-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:71 Implements **Specific Resource XPath Selector** - [model 4.2.3](https://www.w3.org/TR/annotation-model/#xpath-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:72 Implements **Specific Resource Text Quote Selector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:73 Implements **Specific Resource _prefix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:74 Implements **Specific Resource _suffix_ key** with a **single string value** on a **Specific Resource TextQuoteSelector** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:75 Implements **Specific Resource Text Position Selector** - [model 4.2.5](https://www.w3.org/TR/annotation-model/#text-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:76 Implements **Specific Resource Data Position Selector** - [model 4.2.6](https://www.w3.org/TR/annotation-model/#data-position-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:77 Implements **Specific Resource SVG Selector** - [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:78 Implements **Specific Resource Range Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:79 Implements **Specific Resource State** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:80 Implements **Specific Resource Time State** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:81 Implements **Specific Resource Request Header State** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:82 Implements **Specific Resource _cached_ key** with one or more values each of **format uri** on a **Specific Resource TimeState** - [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:28 Implements **target _creator_ key** with one or more values - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 Implements Target-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 Implements Target-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 Implements Target-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 Implements Target-level creator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 Implements Target-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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/PW-input/anno1.json b/annotation-model/PW-input/anno1.json new file mode 100644 index 0000000..2318cb4 --- /dev/null +++ b/annotation-model/PW-input/anno1.json @@ -0,0 +1,48 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "type": "Annotation", + "created": "2016-11-14T22:09:47.910Z", + "body": { + "type": "Choice", + "items": [ + { + "type": "TextualBody", + "value": "This extension uses this model to build amazing things. Honest.", + "language": "en", + "format": "text/plain", + "creator": { + "type": "Person" + } + }, + { + "type": "TextualBody", + "value": "Это расширение использует эту модель для создания удивительных вещей. Честный.", + "language": "ru", + "format": "text/plain", + "creator": { + "id": "https://translate.yandex.net/api/v1.5/tr.json/translate", + "type": "Software", + "schema:softwareVersion": "1.5", + "name": "Yandex Translate API", + "homepage": "https://tech.yandex.com/translate/" + } + }, + { + "type": "TextualBody", + "value": "Esta extensión utiliza este modelo para construir cosas increíbles. Honesto.", + "language": "es", + "format": "text/plain", + "creator": { + "id": "https://translate.yandex.net/api/v1.5/tr.json/translate", + "type": "Software", + "schema:softwareVersion": "1.5", + "name": "Yandex Translate API", + "homepage": "https://tech.yandex.com/translate/" + } + } + ] + }, + "target": "https://www.w3.org/TR/annotation-model/", + "_id": "urn:page-notes:https://www.w3.org/TR/annotation-model//2016-11-14T22:09:48.817Z", + "id": "urn:page-notes:https://www.w3.org/TR/annotation-model//2016-11-14T22:09:48.817Z" +} diff --git a/annotation-model/PW01.json b/annotation-model/PW01.json new file mode 100644 index 0000000..e5664c2 --- /dev/null +++ b/annotation-model/PW01.json @@ -0,0 +1,385 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:2 Implements Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements **body _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements **body _language_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 Implements **body _creator_ key** with a **single value** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements **body _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 Implements **body _language_ key** with one or more values each of which is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 Implements **Embedded Textual Body _type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 Implements **Choice or Set** with type and items key as a body - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 Implements **Choice** with **_type_ and _items_ keys** as a body of the Annotation [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [ + { + "name": "1:19 Implements **body _creator_ key** with one or more values - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 Implements Body-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 Implements Body-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 Implements Body-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 Implements Body-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 Implements Body-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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} \ No newline at end of file diff --git a/annotation-model/README.md b/annotation-model/README.md index af432e0..5a4c524 100644 --- a/annotation-model/README.md +++ b/annotation-model/README.md @@ -10,27 +10,77 @@ Up-to-date result reports are available at: Index of implementations in reports =================================== -* EM - ??? -* EB - Emblematica Online (Development Website) - **email: mjsarol@illinois.edu - **link: http://emblematica.library.illinois.edu/ +* EB - implementation Name: Emblematica Online (Developmental Version) + * email: mjsarol@illinois.edu + * link: http://emblematica.library.illinois.edu/portal_anno/ + * gitHub: not yet +* HY - implementation Name: Hypothesis + * email: dev@list.hypothes.is + * link: https://hypothes.is + * gitHub: https://github.com/hypothesis + +* TK - implementation Name: Takeshi Kanai + * email: takeshi.kanai@sony.com + +* EF - implementation Name: Europeana Foundation (v0.2.4) + * email: api@europeana.eu + * link: http://labs.europeana.eu/api/annotations + * gitHub: https://github.com/europeana/annotation + +* MM - implementation Name: Mirador plus MangoServer + * email: azaroth42@gmail.com + * link client: http://projectmirador.org/ + * gitHub client: https://github.com/ProjectMirador/mirador/ + * gitHub server: https://github.com/azaroth42/MangoServer/ + * NOTE: This is both an annotation client AND a protocol server; this it implements the collection and page portions in addition to the individual annotation models. + +* DG - implementation Name: Wellcome Quilt + * email: tom.crane@digirati.com + * link client: http://ghp.wellcomecollection.org/annotation-viewer/quilt/ + * gitHub client: https://github.com/wellcometrust/annotation-viewer + +* PN - implementation Name: The Pund.it + * link: http://thepund.it/ + +* KM - impelementation Name: KANZAKI Masahide + * email: mkanzaki@gmail.com + * link: http://www.kanzaki.com/works/2016/pub/image-annotator + +* RI - implementation Name: Reference Implementation + * email: shane@spec-ops.io + * link: https://github.com/spec-ops/web-platform-tests + * NOTE: This is a protocol server that implements the collection and page portions of the annotation data model. + +* PW - implementation Name: Page Notes + * email: byoung@bigbluehat.com + * link: https://github.com/bigbluehat/page-notes + +* RN - implementation Name: Renarrations and SWeeT Web + * email: dinesh@janastu.org + * link client: http://dash.swtr.us + * link Swts2Annos: https://github.com/janastu/swts2annos Adding new results ================== To add new tests results: -1. Fork the test-results repo if you haven't already (https://github.com/w3c/test-results) -2. Select a two letter abbreviation for your implementation under test (e.g., AB) and add it to the list above -3. Produce a JSON test result files using http://w3c-test.org/tools/runner/index.html (or a local copy); naming that file using the two letter abbreviation and a two digit representation of the version number under test. - * Use `/annotation-model` as the path for which tests to run. - * Click start and there will be several pages, each of which will prompt for a JSON serialization of an annotation from your implementation. - * Note that failures in the test results can be caused by the annotation not using that particular feature, and for the optional tests should not be cause for alarm. -4. Place your new _AA00_.json results in the annotation-model directory -5. Create a pull request with your updated files -6. When it is merged the maintainers will update the overall results reports automatically - -If you want to see what the report would look like locally, use the wptreport tool (https://github.com/spec-ops/wptreport) to build a +1. For each category of annotation that your implementation can generate, produce a JSON test result file using http://w3c-test.org/tools/runner/index.html?path=/annotation-model/annotations/ (soon), or http://testdev.spec-ops.io:8000/tools/runner/index.html?path=/annotation-model/annotations/ (working now), or your local, up to date clone of https://github.com/w3c/web-platform-tests. + * Be sure to specify `/annotation-model/annotations/` as the path for which tests to run. + * Click start and 3 HTML Web forms listing different test assertions will be displayed sequentially in a new window. For each form, you will prompted to provide (paste into a text box) the JSON serialization of the annotation from your implementation that you want to test; enter the same annotation into each of the 3 forms. (To test a second or subsequent annotation, you must run the complete test again, all 3 forms.) + * After the third HTML completes and closes, be sure to click the `Download JSON results` button to retrieve and save your JSON test results file. + * Please test and submit the fewest annotations and test-results required to demonstrate the full range of annotation model features your annotation client implements. In other words only test and submit results for a second annotation if the second annotation includes one or more model features not found in the first annotation you tested, for example, if your annotation 01 includes the bodyValue key and your annotation 02 includes the body key instead. Only include a 3rd annotation if it includes one or more features not found in your first and second annotations. And so on. + * Note that failures to pass individual test assertions can be caused by the annotation not using that particular feature, and for the optional tests should not be cause for alarm. +2. Fork the w3c/test-results repo if you haven't already (https://github.com/w3c/test-results) +3. Select a unique two letter abbreviation for your implementation under test (e.g., AB) and add it to the 'Index of implementations in reports' in the /annotation-model/README.md file in your forked copy. Provide implementation name, contact email, Website (if publicly available), GitHub repository (if you have one). Use the information provided by previous implementations in the list as a model. +4. Rename your JSON test-results file using the two letter abbreviation you chose and a two digit number value representing annotation number used as input for that test run, for example, _AA00_.json. +5. Place your newly renamed results files in the annotation-model directory +6. Place copies of each annotation you tested in a subfolder named by concatenating your two letter abbreviation and the string '-input', e.g., _AA_-input/anno01.json + * When naming your individual annotation files, please follow the convention illustrated of including 2 digits in the file name so that it is obvious which annotation goes with which test results file. +6. Create a pull request with your updated files +7. When it is merged the maintainers will update the overall results reports automatically + +If you want to see what your implementation test results reports would look like locally, use the wptreport tool (https://github.com/spec-ops/wptreport) to build a report with a command line like `wptreport -f -m -s "Annotation Model"` diff --git a/annotation-model/RI-input/RI01.anno b/annotation-model/RI-input/RI01.anno new file mode 100644 index 0000000..b4365c6 --- /dev/null +++ b/annotation-model/RI-input/RI01.anno @@ -0,0 +1,15 @@ +{ + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + "http://www.w3.org/ns/ldp.jsonld" + ], + "first": "http://localhost:8080/annotations/?page=0", + "id": "http://localhost:8080/annotations/", + "label": "A Container for Web Annotations", + "last": "http://localhost:8080/annotations/?page=3", + "total": 45, + "type": [ + "BasicContainer", + "AnnotationCollection" + ] +} diff --git a/annotation-model/RI-input/RI02.anno b/annotation-model/RI-input/RI02.anno new file mode 100644 index 0000000..eaca187 --- /dev/null +++ b/annotation-model/RI-input/RI02.anno @@ -0,0 +1,700 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://localhost:8080/annotations/?page=1", + "items": [ + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "type": "TextualBody", + "value": "These pages together provide evidence of the conspiracy" + }, + "id": "http://example.org/anno11", + "motivation": "commenting", + "target": { + "items": [ + "http://example.com/page1", + "http://example.org/page6", + "http://example.net/page4" + ], + "type": "Composite" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "type": "TextualBody", + "value": "Great resource!" + }, + "created": "2015-02-31T12:03:45Z", + "id": "/annotations/anno2.jsonld", + "target": "http://www.w3c.org/", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/comment1", + "id": "http://example.org/anno32", + "target": { + "selector": { + "refinedBy": { + "exact": "Selected Text", + "prefix": "text before the ", + "suffix": " and text after it", + "type": "TextQuoteSelector" + }, + "type": "FragmentSelector", + "value": "para5" + }, + "source": "http://example.org/page1" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/comment1", + "id": "http://example.org/anno39", + "target": { + "renderedVia": { + "id": "http://example.com/pdf-to-html-library", + "schema:softwareVersion": "2.5", + "type": "Software" + }, + "selector": "http://example.org/selectors/html-selector1", + "source": "http://example.edu/article.pdf" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/comment1", + "id": "http://example.org/anno36", + "target": { + "source": "http://example.org/ebook1", + "state": { + "refinedBy": { + "refinedBy": { + "conformsTo": "http://tools.ietf.org/rfc/rfc3778", + "type": "FragmentSelector", + "value": "page=10" + }, + "type": "HttpRequestState", + "value": "Accept: application/pdf" + }, + "sourceDate": "2016-02-01T12:05:23Z", + "type": "TimeState" + } + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "format": "text/plain", + "type": "TextualBody", + "value": "Comment text" + }, + "id": "http://example.org/anno7", + "target": "http://example.org/target1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/note1", + "id": "http://example.org/anno33", + "target": { + "source": "http://example.org/page1", + "state": { + "id": "http://example.org/state1" + } + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "items": [ + { + "id": "http://example.org/note1", + "language": "en" + }, + { + "id": "http://example.org/note2", + "language": "fr" + } + ], + "type": "Choice" + }, + "id": "http://example.org/anno10", + "target": "http://example.org/website1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": [ + { + "purpose": "tagging", + "type": "TextualBody", + "value": "love" + }, + { + "items": [ + { + "creator": "http://example.org/user1", + "format": "text/plain", + "language": "en", + "purpose": "describing", + "type": "TextualBody", + "value": "I really love this particular bit of text in this XML. No really." + }, + { + "purpose": "describing", + "source": { + "creator": { + "id": "http://example.org/user2", + "type": "Person" + }, + "format": "audio/mpeg", + "id": "http://example.org/comment1", + "language": "de", + "type": "Audio" + }, + "type": "SpecificResource" + } + ], + "type": "Choice" + } + ], + "created": "2015-10-13T13:00:00Z", + "creator": { + "id": "http://example.org/user1", + "name": "A. Person", + "nickname": "user1", + "type": "Person" + }, + "generated": "2015-10-14T15:13:28Z", + "generator": { + "homepage": "http://example.org/homepage1", + "id": "http://example.org/client1", + "name": "Code v2.1", + "type": "Software" + }, + "id": "http://example.org/anno41", + "motivation": "commenting", + "stylesheet": { + "id": "http://example.org/stylesheet1", + "type": "CssStylesheet" + }, + "target": { + "selector": { + "refinedBy": { + "end": 27, + "start": 6, + "type": "TextPositionSelector" + }, + "type": "FragmentSelector", + "value": "xpointer(/doc/body/section[2]/para[1])" + }, + "source": "http://example.com/document1", + "state": [ + { + "refinedBy": { + "sourceDate": "2015-09-25T12:00:00Z", + "type": "TimeState" + }, + "type": "HttpRequestState", + "value": "Accept: application/xml" + } + ], + "styleClass": "mystyle", + "type": "SpecificResource" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.net/comment1", + "id": "http://example.org/anno17", + "motivation": "commenting", + "target": { + "accessibility": "captions", + "id": "http://example.com/video1", + "type": "Video" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "audience": { + "id": "http://example.edu/roles/teacher", + "schema:educationalRole": "teacher", + "type": "schema:EducationalAudience" + }, + "body": "http://example.net/classnotes1", + "id": "http://example.org/anno16", + "target": "http://example.com/textbook1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": [ + "http://example.org/description1", + { + "type": "TextualBody", + "value": "tag1" + } + ], + "id": "http://example.org/anno9", + "target": [ + "http://example.org/image1", + "http://example.org/image2" + ], + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/review1", + "id": "http://example.org/anno27", + "target": { + "selector": { + "end": 795, + "start": 412, + "type": "TextPositionSelector" + }, + "source": "http://example.org/ebook1" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/body1", + "id": "http://example.org/anno38", + "stylesheet": { + "type": "CssStylesheet", + "value": ".red { color: red }" + }, + "target": { + "source": "http://example.org/target1", + "styleClass": "red" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "format": "text/html", + "language": "fr", + "type": "TextualBody", + "value": "

j'adore !

" + }, + "id": "http://example.org/anno5", + "target": "http://example.org/photo1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "purpose": "tagging", + "source": "http://example.org/city1", + "type": "SpecificResource" + }, + "id": "http://example.org/anno21", + "target": { + "id": "http://example.org/photo1", + "type": "Image" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.net/review1", + "creator": { + "email_sha1": "58bad08927902ff9307b621c54716dcc5083e339", + "id": "http://example.org/user1", + "name": "My Pseudonym", + "nickname": "pseudo", + "type": "Person" + }, + "generator": { + "homepage": "http://example.org/client1/homepage1", + "id": "http://example.org/client1", + "name": "Code v2.1", + "type": "Software" + }, + "id": "http://example.org/anno15", + "target": "http://example.com/restaurant1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/comment1", + "id": "http://example.org/anno31", + "target": { + "selector": { + "endSelector": { + "type": "XPathSelector", + "value": "//table[1]/tr[1]/td[4]" + }, + "startSelector": { + "type": "XPathSelector", + "value": "//table[1]/tr[1]/td[2]" + }, + "type": "RangeSelector" + }, + "source": "http://example.org/page1.html" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "id": "http://example.org/video1", + "type": "Video" + }, + "id": "http://example.org/anno3", + "target": { + "id": "http://example.org/website1", + "type": "Text" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/post1", + "id": "http://example.org/anno1", + "target": "http://example.com/page1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/note1", + "id": "http://example.org/anno24", + "target": { + "selector": { + "type": "CssSelector", + "value": "#elemid > .elemclass + p" + }, + "source": "http://example.org/page1.html" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/note1", + "id": "http://example.org/anno25", + "target": { + "selector": { + "type": "XPathSelector", + "value": "/html/body/p[2]/table/tr[2]/td[3]/span" + }, + "source": "http://example.org/page1.html" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/note1", + "id": "http://example.org/anno28", + "target": { + "selector": { + "end": 4104, + "start": 4096, + "type": "DataPositionSelector" + }, + "source": "http://example.org/diskimg1" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/note1", + "id": "http://example.org/anno40", + "target": { + "scope": "http://example.org/page1", + "source": "http://example.org/image1" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "purpose": "describing", + "selector": { + "conformsTo": "http://www.w3.org/TR/media-frags/", + "type": "FragmentSelector", + "value": "t=30,60" + }, + "source": "http://example.org/video1" + }, + "id": "http://example.org/anno23", + "target": "http://example.org/image1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/description1", + "id": "http://example.org/anno35", + "target": { + "source": "http://example.org/resource1", + "state": { + "type": "HttpRequestState", + "value": "Accept: application/pdf" + } + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/comment1", + "id": "http://example.org/anno37", + "stylesheet": "http://example.org/style1", + "target": { + "source": "http://example.org/document1", + "styleClass": "red" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/road1", + "id": "http://example.org/anno30", + "target": { + "selector": { + "type": "SvgSelector", + "value": " ... " + }, + "source": "http://example.org/map1" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "selector": "http://example.org/paraselector1", + "source": "http://example.org/page1" + }, + "id": "http://example.org/anno22", + "target": { + "selector": "http://example.org/dataselector1", + "source": "http://example.com/dataset1" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/comment1", + "id": "http://example.org/anno26", + "target": { + "selector": { + "exact": "anotation", + "prefix": "this is an ", + "suffix": " that has some", + "type": "TextQuoteSelector" + }, + "source": "http://example.org/page1" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/description1", + "id": "http://example.org/anno4", + "target": { + "format": "image/jpeg", + "id": "http://example.com/image1#xywh=100,100,300,300", + "type": "Image" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": [ + { + "purpose": "tagging", + "type": "TextualBody", + "value": "readme" + }, + { + "purpose": "describing", + "type": "TextualBody", + "value": "A good description of the topic that bears further investigation" + } + ], + "id": "http://example.org/anno18", + "motivation": "bookmarking", + "target": "http://example.com/page1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "type": "TextualBody", + "value": "important" + }, + "id": "http://example.org/anno12", + "motivation": "tagging", + "target": { + "items": [ + "http://example.com/book/page1", + "http://example.com/book/page2", + "http://example.com/book/page3", + "http://example.com/book/page4" + ], + "type": "List" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/vocab/art/portrait", + "id": "http://example.org/anno13", + "motivation": "classifying", + "target": { + "items": [ + "http://example.com/image1", + "http://example.net/image2", + "http://example.com/image4", + "http://example.org/image9" + ], + "type": "Independents" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "format": "audio/mpeg", + "id": "http://example.org/analysis1.mp3", + "language": "fr" + }, + "id": "http://example.org/anno2", + "target": { + "format": "application/pdf", + "id": "http://example.gov/patent1.pdf", + "language": [ + "en", + "ar" + ], + "processingLanguage": "en", + "textDirection": "ltr" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "id": "http://example.net/review1", + "rights": "http://creativecommons.org/licenses/by/4.0/" + }, + "canonical": "urn:uuid:dbfb1861-0ecf-41ad-be94-a584e5c4f1df", + "id": "http://example.org/anno20", + "target": "http://example.com/product1", + "type": "Annotation", + "via": "http://other.example.org/anno1" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "created": "2014-06-02T17:00:00Z", + "creator": "http://example.net/user2", + "id": "http://example.net/review1" + }, + "created": "2015-01-28T12:00:00Z", + "creator": "http://example.org/user1", + "generated": "2015-02-04T12:00:00Z", + "generator": "http://example.org/client1", + "id": "http://example.org/anno14", + "modified": "2015-01-29T09:00:00Z", + "target": "http://example.com/restaurant1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno8", + "target": "http://example.org/ebook1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/road1", + "id": "http://example.org/anno29", + "target": { + "selector": { + "id": "http://example.org/svg1", + "type": "SvgSelector" + }, + "source": "http://example.org/map1" + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "http://example.org/note1", + "id": "http://example.org/anno34", + "target": { + "source": "http://example.org/page1", + "state": { + "cached": "http://archive.example.org/copy1", + "sourceDate": "2015-07-20T13:30:00Z", + "type": "TimeState" + } + }, + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "id": "http://example.net/review1", + "rights": "http://creativecommons.org/licenses/by-nc/4.0/" + }, + "id": "http://example.org/anno19", + "rights": "https://creativecommons.org/publicdomain/zero/1.0/", + "target": "http://example.com/product1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "type": "TextualBody", + "value": "I like this page!" + }, + "created": "2015-01-31T12:03:45Z", + "id": "/annotations/anno1.jsonld", + "target": "/index.html", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": "https://en.wikipedia.org/wiki/World_Wide_Web_Consortium", + "id": "/annotations/anno3.jsonld", + "movivation": "describing", + "target": "http://w3c.org/", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "bodyValue": "Comment text", + "id": "http://example.org/anno6", + "target": "http://example.org/target1", + "type": "Annotation" + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "body": { + "type": "TextualBody", + "value": "I like this page!" + }, + "canonical": "http://localhost:8080/annotations/temp-7a87cd7b-6ec3-4304-8ffe-f7f4ce2b9a8c", + "id": "http://localhost:8080/annotations/temp-ff8732de-5424-410c-8905-56074b3acf91", + "target": "http://www.example.com/other.html", + "type": "Annotation" + } + ], + "next": "http://localhost:8080/annotations/?page=2", + "partOf": { + "id": "http://localhost:8080/annotations/", + "total": 45 + }, + "prev": "http://localhost:8080/annotations/?page=0", + "type": "AnnotationPage" +} diff --git a/annotation-model/RI01.json b/annotation-model/RI01.json new file mode 100644 index 0000000..762e1d4 --- /dev/null +++ b/annotation-model/RI01.json @@ -0,0 +1,327 @@ +{ + "results": [ + { + "test": "/annotation-model/collections/collectionMusts-manual.html", + "subtests": [ + { + "name": "1:1 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 **Annotation Collection _label_ key**, if present, is **a value of type string** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 **Annotation Collection _total_ key**, if present, is **a non-negative integer value** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 **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)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 **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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/collections/collectionOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **Annotation Collection _label_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation Collection _last_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation Collection _total_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **Annotation Collection _first_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Collection-level modified key not found. Annotation Collection may have zero or exactly one modified key value.; expected true got false" + }, + { + "name": "1:6 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Collection creator key not found. Annotation Collection may have zero or more creators.; expected true got false" + }, + { + "name": "1:7 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Collection-level created key not found. Annotation Collection may have exactly one created key value.; expected true got false" + }, + { + "name": "1:8 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Collection-level rights key having string value(s) of format uri not found. Annotation Collection may have zero or more rights key values.; expected true got false" + }, + { + "name": "1:9 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Email_sha1 for Annotation Collection Creator (Agent) not found. Agents may have one or more email_sha1 values.; expected true got false" + }, + { + "name": "1:10 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Email for Annotation Collection Creator (Agent) not found. Agents may have one or more email values.; expected true got false" + }, + { + "name": "1:11 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Homepage for Annotation Collection Creator (Agent) not found. Agents may have one or more homepage values.; expected true got false" + }, + { + "name": "1:12 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Id for Annotation Collection Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; expected true got false" + }, + { + "name": "1:13 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Name for Annotation Collection Creator (Agent) not found. Agents may have one or more name values.; expected true got false" + }, + { + "name": "1:14 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Nickname for Annotation Collection Creator (Agent) not found. Agents should have exactly one nickname value.; expected true got false" + }, + { + "name": "1:15 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Type (Person, Organization, Software) for Annotation Collection Creator (Agent) not found. Agents should have one or more type values.; expected true got false" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/collections/pages/pageMusts-manual.html", + "subtests": [ + { + "name": "1:1 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page is missing id key or value of id key is not a single string of format uri.; expected true got false" + }, + { + "name": "1:3 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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page is missing type key or 'AnnotationPage' is not a value of type.; expected true got false" + }, + { + "name": "1:4 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)", + "status": "FAIL", + "message": "assert_true: 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.; expected true got false" + }, + { + "name": "1:5 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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page has an invalid startIndex value.; expected true got false" + }, + { + "name": "1:6 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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page has an invalid partOf value.; expected true got false" + }, + { + "name": "1:7 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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page has an invalid next value.; expected true got false" + }, + { + "name": "1:8 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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page has an invalid prev value.; expected true got false" + }, + { + "name": "1:9 **Annotation Page _total_ key**, if present (inherited from Collection), is **a non-negative integer value** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page has total key with non-numeric value, a negative numeric value, or more than one value.; expected true got false" + }, + { + "name": "1:10 **Annotation Page _label_ key**, if present (inherited from Collection), is **a value of type string** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page has label key with non-string value or an array as value containing non-string value.; expected true got false" + }, + { + "name": "1:11 **Annotation Page _first_ key** (inherited from Collection), if present, has value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page has invalid first key.; expected true got false" + }, + { + "name": "1:12 **Annotation Page _last_ key** (inherited from Collection), if present, is **a single value of format uri** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page has last key with non-uri value or array as value containing more than one item.; expected true got false" + }, + { + "name": "1:13 If present the Annotation page-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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation page has multiple created key values or a single created key value that is not of format date-time.; expected true got false" + }, + { + "name": "1:14 If present the Annotation page-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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation page has multiple modified key values or a single modified key value that is not of format date-time.; expected true got false" + }, + { + "name": "1:15 If present the Annotation page page-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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation page page has one or more values for the rights key that are not strings of format uri.; expected true got false" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/collections/pages/pageOptionals-manual.html", + "subtests": [ + { + "name": "1:1 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)", + "status": "FAIL", + "message": "assert_true: WARNING: Annotation Page has no partOf key.; expected true got false" + }, + { + "name": "1:2 Implements **Annotation Page _startIndex_ key** with valid value of _type_ integer >= 0 - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "FAIL", + "message": "assert_true: WARNING: Annotation Page has has no valid startIndex value.; expected true got false" + }, + { + "name": "1:3 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no next key.; expected true got false" + }, + { + "name": "1:4 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no prev key.; expected true got false" + }, + { + "name": "1:5 Implements **Annotation Page _label_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no label key (inherited from Collection).; expected true got false" + }, + { + "name": "1:6 Implements **Annotation Page _last_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no last key (inherited from Collection).; expected true got false" + }, + { + "name": "1:7 Implements **Annotation Page _total_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no total key (inherited from Collection).; expected true got false" + }, + { + "name": "1:8 Implements **Annotation Page _first_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no first key (inherited from Collection).; expected true got false" + }, + { + "name": "1:9 Implements Annotation Page-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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Page-level modified key not found. Annotation Page may have zero or exactly one modified key value inherited from Collection.; expected true got false" + }, + { + "name": "1:10 Implements **Annotation Page-level _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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Page-level creator key not found. Annotation Page may have zero or more creators inherited from Collection.; expected true got false" + }, + { + "name": "1:11 Implements Annotation Page-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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Page-level created key not found. Annotation Page may have exactly one created key value inherited from Collection.; expected true got false" + }, + { + "name": "1:12 Implements Annotation Page **_rights_** key (inherited from Collection) 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page rights key (inherited from Collection) having string value(s) of format uri not found. Annotation Page may may have zero or more rights key values.; expected true got false" + }, + { + "name": "1:13 Implements Annotation Page-level creator (Agent), inherited from Collection, **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements Annotation Page-level creator (Agent), inherited from Collection, **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 Implements Annotation Page-level creator (Agent), inherited from Collection, **_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)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 Implements Annotation Page-level creator (Agent), inherited from Collection, **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 Implements Annotation Page-level creator (Agent), inherited from Collection, **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements Annotation Page-level creator (Agent), inherited from Collection, **_nickname_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 Implements Annotation Page-level creator (Agent), inherited from Collection, **_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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} diff --git a/annotation-model/RI02.json b/annotation-model/RI02.json new file mode 100644 index 0000000..e04cce0 --- /dev/null +++ b/annotation-model/RI02.json @@ -0,0 +1,327 @@ +{ + "results": [ + { + "test": "/annotation-model/collections/collectionMusts-manual.html", + "subtests": [ + { + "name": "1:1 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Collection is missing type key or 'AnnotationCollection' is not a value of type.; expected true got false" + }, + { + "name": "1:4 **Annotation Collection _label_ key**, if present, is **a value of type string** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 **Annotation Collection _total_ key**, if present, is **a non-negative integer value** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 **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)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 **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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/collections/collectionOptionals-manual.html", + "subtests": [ + { + "name": "1:1 Implements **Annotation Collection _label_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: WARNING: Annotation Collection should have a label key.; expected true got false" + }, + { + "name": "1:2 Implements **Annotation Collection _last_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: WARNING: Annotation Collection should include exactly one last key with value that is string of uri format.; expected true got false" + }, + { + "name": "1:3 Implements **Annotation Collection _total_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: WARNING: Annotation Collection should include exactly one total key with non-negative numeric value.; expected true got false" + }, + { + "name": "1:4 Implements **Annotation Collection _first_ key** - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Collection is allowed exactly one first key.; expected true got false" + }, + { + "name": "1:5 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Collection-level modified key not found. Annotation Collection may have zero or exactly one modified key value.; expected true got false" + }, + { + "name": "1:6 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Collection creator key not found. Annotation Collection may have zero or more creators.; expected true got false" + }, + { + "name": "1:7 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Collection-level created key not found. Annotation Collection may have exactly one created key value.; expected true got false" + }, + { + "name": "1:8 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Collection-level rights key having string value(s) of format uri not found. Annotation Collection may have zero or more rights key values.; expected true got false" + }, + { + "name": "1:9 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Email_sha1 for Annotation Collection Creator (Agent) not found. Agents may have one or more email_sha1 values.; expected true got false" + }, + { + "name": "1:10 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Email for Annotation Collection Creator (Agent) not found. Agents may have one or more email values.; expected true got false" + }, + { + "name": "1:11 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Homepage for Annotation Collection Creator (Agent) not found. Agents may have one or more homepage values.; expected true got false" + }, + { + "name": "1:12 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Id for Annotation Collection Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; expected true got false" + }, + { + "name": "1:13 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Name for Annotation Collection Creator (Agent) not found. Agents may have one or more name values.; expected true got false" + }, + { + "name": "1:14 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Nickname for Annotation Collection Creator (Agent) not found. Agents should have exactly one nickname value.; expected true got false" + }, + { + "name": "1:15 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Type (Person, Organization, Software) for Annotation Collection Creator (Agent) not found. Agents should have one or more type values.; expected true got false" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/collections/pages/pageMusts-manual.html", + "subtests": [ + { + "name": "1:1 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 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)", + "status": "FAIL", + "message": "assert_true: ERROR: Annotation Page has an invalid partOf value.; expected true got false" + }, + { + "name": "1:7 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 **Annotation Page _total_ key**, if present (inherited from Collection), is **a non-negative integer value** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 **Annotation Page _label_ key**, if present (inherited from Collection), is **a value of type string** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 **Annotation Page _first_ key** (inherited from Collection), if present, has value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 **Annotation Page _last_ key** (inherited from Collection), if present, is **a single value of format uri** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation page-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation page-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present the Annotation page page-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)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/collections/pages/pageOptionals-manual.html", + "subtests": [ + { + "name": "1:1 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)", + "status": "FAIL", + "message": "assert_true: WARNING: Annotation Page has no partOf key.; expected true got false" + }, + { + "name": "1:2 Implements **Annotation Page _startIndex_ key** with valid value of _type_ integer >= 0 - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "status": "FAIL", + "message": "assert_true: WARNING: Annotation Page has has no valid startIndex value.; expected true got false" + }, + { + "name": "1:3 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 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)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Implements **Annotation Page _label_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no label key (inherited from Collection).; expected true got false" + }, + { + "name": "1:6 Implements **Annotation Page _last_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no last key (inherited from Collection).; expected true got false" + }, + { + "name": "1:7 Implements **Annotation Page _total_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no total key (inherited from Collection).; expected true got false" + }, + { + "name": "1:8 Implements **Annotation Page _first_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page has no first key (inherited from Collection).; expected true got false" + }, + { + "name": "1:9 Implements Annotation Page-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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Page-level modified key not found. Annotation Page may have zero or exactly one modified key value inherited from Collection.; expected true got false" + }, + { + "name": "1:10 Implements **Annotation Page-level _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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Page-level creator key not found. Annotation Page may have zero or more creators inherited from Collection.; expected true got false" + }, + { + "name": "1:11 Implements Annotation Page-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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Valid Annotation Page-level created key not found. Annotation Page may have exactly one created key value inherited from Collection.; expected true got false" + }, + { + "name": "1:12 Implements Annotation Page **_rights_** key (inherited from Collection) 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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Annotation Page rights key (inherited from Collection) having string value(s) of format uri not found. Annotation Page may may have zero or more rights key values.; expected true got false" + }, + { + "name": "1:13 Implements Annotation Page-level creator (Agent), inherited from Collection, **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Email_sha1 for Annotation Page Creator (Agent), inherited from Collection, not found. Agents may have one or more email_sha1 values.; expected true got false" + }, + { + "name": "1:14 Implements Annotation Page-level creator (Agent), inherited from Collection, **_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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Email for Annotation Page Creator (Agent), inherited from Collection, not found. Agents may have one or more email values.; expected true got false" + }, + { + "name": "1:15 Implements Annotation Page-level creator (Agent), inherited from Collection, **_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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Homepage for Annotation Page Creator (Agent), inherited from Collection, not found. Agents may have one or more homepage values.; expected true got false" + }, + { + "name": "1:16 Implements Annotation Page-level creator (Agent), inherited from Collection, **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Single id for Annotation Page Creator (Agent), inherited from Collection, not found for any Creator. Agents should have exactly one id of format uri.; expected true got false" + }, + { + "name": "1:17 Implements Annotation Page-level creator (Agent), inherited from Collection, **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Name for Annotation Page Creator (Agent), inherited from Collection, not found. Agents may have one or more name values.; expected true got false" + }, + { + "name": "1:18 Implements Annotation Page-level creator (Agent), inherited from Collection, **_nickname_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Single nickname for Annotation Page Creator (Agent), inherited from Collection, not found for any Creator. Agents should have exactly one id of format uri.; expected true got false" + }, + { + "name": "1:19 Implements Annotation Page-level creator (Agent), inherited from Collection, **_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)", + "status": "FAIL", + "message": "assert_true: INFORMATIONAL: Type (Person, Organization, Software) for Annotation Page Creator (Agent), inherited from Collection, not found. Agents should have one or more type values.; expected true got false" + } + ], + "status": "OK", + "message": null + } + ] +} diff --git a/annotation-model/RN-input/anno51.json b/annotation-model/RN-input/anno51.json new file mode 100644 index 0000000..8d2b53c --- /dev/null +++ b/annotation-model/RN-input/anno51.json @@ -0,0 +1,33 @@ +{ + "@context": [ + "http://www.w3.org/ns/anno.jsonld", { + "blog": "http://thestore.swtr.in/sweets/0.1/blog", + "renlanguage": "http://thestore.swtr.in/sweets/0.1/renlanguage", + "renlocation": "http://thestore.swtr.in/sweets/0.1/renlocation", + "renstyle": "http://thestore.swtr.in/sweets/0.1/renstyle" + } + ], + "id": "http://mango.swtr.in/annos/10", + "type": "Annotation", + "motivation": "renarration", + "creator": { + "id": "http://thestore.swtr.in/users/Pradeep", + "name": "Pradeep", + "nickname": "Pradeep" + }, + "body": { + "source": "http://alipi123.blogspot.com/2012/11/raika-bio-cultural-protocol_8039.html", + "selector": { + "type": "XPathSelector", + "value": "//*[@id='post-body-326105147665831421']/p" + }, + "bodyvalue": "ಅವಲೋಕನ" + }, + "target": { + "source": "http://mitan.in/bcp/raika/", + "selector": { + "type": "XPathSelector", + "value": "//*[@id='header1']/H2" + } + } +} diff --git a/annotation-model/RN-input/anno52.json b/annotation-model/RN-input/anno52.json new file mode 100644 index 0000000..e04ffdc --- /dev/null +++ b/annotation-model/RN-input/anno52.json @@ -0,0 +1,28 @@ +{ + "@context": [ + "http://www.w3.org/ns/anno.jsonld", { + "renlanguage": "http://thestore.swtr.in/sweets/0.1/renlanguage", + "renlocation": "http://thestore.swtr.in/sweets/0.1/renlocation", + "renstyle": "http://thestore.swtr.in/sweets/0.1/renstyle" + } + ], + "id": "http://mango.swtr.in/annos/1", + "type": "Annotation", + "motivation": "renarration", + "body": { + "type": "Choice", + "items": [ + { + "id": "http://mango.swtr.in/annos/100", + "renlanguage": "English", + "renlocation": "India" + }, + { + "id": "http://mango.swtr.in/annos/101", + "renlanguage": "Kannada", + "renlocation": "Dharwad" + } + ] + }, + "target": "http://mitan.in/bcp/raika/" +} diff --git a/annotation-model/RN-input/anno53.json b/annotation-model/RN-input/anno53.json new file mode 100644 index 0000000..097c46d --- /dev/null +++ b/annotation-model/RN-input/anno53.json @@ -0,0 +1,21 @@ +{ + "@context": [ + "http://www.w3.org/ns/anno.jsonld", { + "renlocation": "http://thestore.swtr.in/sweets/0.1/renlocation" + }], + "id": "http://mango.swtr.in/annos/101", + "type": "Annotation", + "motivation": "renarration", + "body": { + "renlanguage": "Kannada", + "renlocation": "Dharwad", + "type": "Composite", + "items": [ + "http://mango.swtr.in/annos/10", + "http://mango.swtr.in/annos/11", + "http://mango.swtr.in/annos/12", + "http://mango.swtr.in/annos/13" + ] + }, + "target": "http://mitan.in/bcp/raika/" +} diff --git a/annotation-model/RN51.json b/annotation-model/RN51.json new file mode 100644 index 0000000..b898c0f --- /dev/null +++ b/annotation-model/RN51.json @@ -0,0 +1,293 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [], + "status": "PASS", + "message": "" + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [], + "status": "PASS", + "message": "" + } + ] +} diff --git a/annotation-model/RN52.json b/annotation-model/RN52.json new file mode 100644 index 0000000..b898c0f --- /dev/null +++ b/annotation-model/RN52.json @@ -0,0 +1,293 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [], + "status": "PASS", + "message": "" + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [], + "status": "PASS", + "message": "" + } + ] +} diff --git a/annotation-model/RN53.json b/annotation-model/RN53.json new file mode 100644 index 0000000..b898c0f --- /dev/null +++ b/annotation-model/RN53.json @@ -0,0 +1,293 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [], + "status": "PASS", + "message": "" + }, + { + "test": "/annotation-model/annotations/annotationsAgentOptionals-manual.html", + "subtests": [], + "status": "PASS", + "message": "" + } + ] +} diff --git a/annotation-model/TK01.json b/annotation-model/TK01.json new file mode 100644 index 0000000..70c175a --- /dev/null +++ b/annotation-model/TK01.json @@ -0,0 +1,323 @@ +{ + "results": [ + { + "test": "/annotation-model/annotations/annotationMusts-manual.html", + "subtests": [ + { + "name": "1:1 Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:2 Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:3 Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:4 Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:5 Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:6 Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:7 If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:8 If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:9 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:10 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:11 If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:12 If present the Annotation-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)", + "status": "PASS", + "message": null + }, + { + "name": "1:13 If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:15 If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:16 If present all body-level or body/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:17 If present all body-level or body/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 If present all body-level or body/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:19 If present all body-level or body/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:20 If present all body-level or body/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:21 If an **External Web Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:22 If an **External Web Resource** is a body, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 If a **Choice or Set** is a body, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:24 If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:25 If a **Choice or Set** is a body, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:26 If an **Embedded Textual Body** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:27 If an **Embedded Textual Body** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:28 If a **Specific Resource** is a body, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:29 If a **Specific Resource** is a body, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 If present all target-level or target/source-level **_created_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:32 If present all target-level or target/source-level **_modified_ keys** have a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:33 If present all target-level or target/source-level **_rights_ key values** are strings of **format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:34 If present all target-level or target/source-level **_canonical_ keys** have a **single value** which is a string of **format uri** - [model 3.3.](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:35 If present all target-level or target/source-level **_via_ key values** are strings of **format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "status": "PASS", + "message": null + }, + { + "name": "1:36 If an **External Web Resource** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:37 If an **External Web Resource** is a target, it does NOT have an **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:38 If a **Choice or Set** is a target, it does NOT have a **_value_ key** - [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-targ)", + "status": "PASS", + "message": null + }, + { + "name": "1:39 If a **Choice or Set** is a target, it does not have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:40 If a **Choice or Set** is a target, it does NOT have a **_purpose_ key** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "status": "PASS", + "message": null + }, + { + "name": "1:41 If a **Specific Resource Target** is a target, it does NOT have an **_items_ key** - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-targets-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:42 If a **Specific Resource** is a target, it does NOT have a **_value_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "status": "PASS", + "message": null + }, + { + "name": "1:43 Neither **target** Resources nor target Choice or Set items have a **_type_ key** which includes a value of **TextualBody** [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:44 If present **Specific Resource _selector_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:45 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:46 If present **Specific Resource _state_ key** has one or more values each of which is of **format uri** or an object having a **_type_ key** with a **single value** which is one of **'TimeState' or 'HttpRequestState'** - [model 4.3](https://www.w3.org/TR/annotation-model/#states)", + "status": "PASS", + "message": null + }, + { + "name": "1:47 If any **Specific Resource _styleClass_ keys** are present, a **_stylesheet_ key** (a key of Annotation) with a **single value** is also present [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "status": "PASS", + "message": null + }, + { + "name": "1:48 If present all **Selectors of _type_ FragmentSelector, CssSelector, or XPathSelector** have a **_value_ key** with a **single value** - [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:49 If present all **Selectors of _type_ TextQuoteSelector** have an **_exact_ key** with a **single value** - [model 4.2.4](https://www.w3.org/TR/annotation-model/#text-quote-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:50 If present all **Selectors of _type_ TextPositionSelector or DataPositionSelector** have both a **_start_ key** and an **_end_ key**, each with a **single non-negative integer value** [model 4.2](https://www.w3.org/TR/annotation-model/#selectors)", + "status": "PASS", + "message": null + }, + { + "name": "1:51 If present all **Selectors of _type_ SvgSelector** have either a **_value_ key** or an **_id_ key** with a **single value** of format uri [model 4.2.7](https://www.w3.org/TR/annotation-model/#svg-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:52 If present all **Selectors of _type_ RangeSelector** have both a **_startSelector_ key** and an **_endSelector_ key**, each with a **single value** which is a **Selector** - [model 4.2.8](https://www.w3.org/TR/annotation-model/#range-selector)", + "status": "PASS", + "message": null + }, + { + "name": "1:53 If present all **States of _type_ TimeState** each have either (but not both) a **_souceDate_ key** or paired **_sourceDateStart_ and _sourceDateEnd_ keys,** each of which is a **single value** of **format date-time**- [model 4.3.1](https://www.w3.org/TR/annotation-model/#time-state)", + "status": "PASS", + "message": null + }, + { + "name": "1:54 If present all **States of _type_ HttpRequestState** have a **_value_ key** - [model 4.3.2](https://www.w3.org/TR/annotation-model/#request-header-state)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/annotation-model/annotations/annotationOptionals-manual.html", + "subtests": [ + { + "name": "1:13 Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "status": "PASS", + "message": null + }, + { + "name": "1:14 Implements **body _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:18 Implements **body _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:23 Implements **body _modified_ key** with a **single value** that is of **format date-time** [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "status": "PASS", + "message": null + }, + { + "name": "1:30 Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + }, + { + "name": "1:31 Implements **Embedded Textual Body** with **_value_ key** as a body of the Annotation [model 3.2.4](https://www.w3.org/TR/annotation-model/#embedded-textual-body)", + "status": "PASS", + "message": null + }, + { + "name": "1:55 Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + } + ] +} diff --git a/annotation-model/all.html b/annotation-model/all.html index bbf534c..7128990 100644 --- a/annotation-model/all.html +++ b/annotation-model/all.html @@ -11,591 +11,296 @@

Annotation Model: All Results

-

Test files: 9; Total subtests: 146

+

For an explanation of the implementation codes and other conventions used in this report, see +the README file.

+ +

Test files: 7; Total subtests: 206

Test Files

-
  1. /annotation-model/annotations/annotationAgentOptionals-manual.html
  2. -
  3. /annotation-model/annotations/annotationMusts-manual.html
  4. -
  5. /annotation-model/annotations/annotationOptionals-manual.html
  6. -
  7. /annotation-model/annotations/annotationSingleAssertion-manual.html
  8. -
  9. /annotation-model/bodiesTargets/bodyMusts-manual.html
  10. -
  11. /annotation-model/bodiesTargets/bodyOptionals-manual.html
  12. -
  13. /annotation-model/bodiesTargets/bodyTargAgentOptionals-manual.html
  14. -
  15. /annotation-model/bodiesTargets/targetMusts-manual.html
  16. -
  17. /annotation-model/bodiesTargets/targetOptionals-manual.html
  18. +
    1. /annotation-model/annotations/annotationMusts-manual.html
    2. +
    3. /annotation-model/annotations/annotationOptionals-manual.html
    4. +
    5. /annotation-model/annotations/annotationsAgentOptionals-manual.html
    6. +
    7. /annotation-model/collections/collectionMusts-manual.html
    8. +
    9. /annotation-model/collections/collectionOptionals-manual.html
    10. +
    11. /annotation-model/collections/pages/pageMusts-manual.html
    12. +
    13. /annotation-model/collections/pages/pageOptionals-manual.html
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Test Show/Hide MessagesEM01IC01MO01MO02
    /annotation-model/annotations/annotationAgentOptionals-manual.htmlOKOKOKOK
    1:1 Implements Annotation-level creator (Agent) id key with single value that is a string of format uri - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Id for Annotation Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.creator should have required property 'id', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Id for Annotation Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.creator should have required property 'id', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Id for Annotation Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.creator should have required property 'id', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Id for Annotation Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.creator should have required property 'id', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    1:2 Implements Annotation-level generator (Agent) id key with single value that is a string of format uri - model 3.2.2PASSPASSPASSPASS
    1:3 Implements Annotation-level creator (Agent) type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2PASSPASSPASSPASS
    1:4 Implements Annotation-level generator (Agent) type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2PASSPASSPASSPASS
    1:5 Implements Annotation-level creator (Agent) nickname key with a single value that is a string - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Nickname for Annotation Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.creator should have required property 'nickname', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Nickname for Annotation Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.creator should have required property 'nickname', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Nickname for Annotation Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.creator should have required property 'nickname', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Nickname for Annotation Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.creator should have required property 'nickname', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    1:6 Implements Annotation-level generator (Agent) nickname key with a single value that is a string - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Nickname for Annotation Generator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.generator should have required property 'nickname', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Nickname for Annotation Generator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.generator should have required property 'nickname', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Nickname for Annotation Generator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.generator should have required property 'nickname', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Nickname for Annotation Generator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.generator should have required property 'nickname', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    1:7 Implements Annotation-level creator (Agent) name key with a single value that is a string - model 3.2.2PASSPASSPASSPASS
    1:8 Implements Annotation-level generator (Agent) name key with a single value that is a string - model 3.2.2PASSPASSPASSPASS
    1:9 Implements Annotation-level creator (Agent) name key with one or more values - model 3.2.2PASSPASSPASSPASS
    1:10 Implements Annotation-level generator (Agent) name key with one or more values. model 3.2.2PASSPASSPASSPASS
    1:11 Implements Annotation-level creator (Agent) email key with one or more values, each of which is a mailto: uri - model 3.2.2PASSPASSPASSPASS
    1:12 Implements Annotation-level generator (Agent) email key with one or more values, each of which is a mailto: uri - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Email for Annotation Generator (Agent) not found. Agents may have one or more email values.; Errors: data.generator should have required property 'email', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: Email for Annotation Generator (Agent) not found. Agents may have one or more email values.; Errors: data.generator should have required property 'email', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: Email for Annotation Generator (Agent) not found. Agents may have one or more email values.; Errors: data.generator should have required property 'email', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: Email for Annotation Generator (Agent) not found. Agents may have one or more email values.; Errors: data.generator should have required property 'email', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    1:13 Implements Annotation-level creator (Agent) email_sha1 key with one or more values - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: asserttrue: INFORMATIONAL: Emailsha1 for Annotation Creator (Agent) not found. Agents may have one or more emailsha1 values.; Errors: data.creator should have required property 'emailsha1', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    IC01: asserttrue: INFORMATIONAL: Emailsha1 for Annotation Creator (Agent) not found. Agents may have one or more emailsha1 values.; Errors: data.creator should have required property 'emailsha1', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    MO01: asserttrue: INFORMATIONAL: Emailsha1 for Annotation Creator (Agent) not found. Agents may have one or more emailsha1 values.; Errors: data.creator should have required property 'emailsha1', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    MO02: asserttrue: INFORMATIONAL: Emailsha1 for Annotation Creator (Agent) not found. Agents may have one or more emailsha1 values.; Errors: data.creator should have required property 'emailsha1', data.creator should be array, data.creator should NOT be valid, data.creator should match exactly one schema in oneOf; expected true got false
    1:14 Implements Annotation-level generator (Agent) email_sha1 key with one or more values - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: asserttrue: INFORMATIONAL: Emailsha1 for Annotation Generator (Agent) not found. Agents may have one or more emailsha1 values.; Errors: data.generator should have required property 'emailsha1', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    IC01: asserttrue: INFORMATIONAL: Emailsha1 for Annotation Generator (Agent) not found. Agents may have one or more emailsha1 values.; Errors: data.generator should have required property 'emailsha1', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    MO01: asserttrue: INFORMATIONAL: Emailsha1 for Annotation Generator (Agent) not found. Agents may have one or more emailsha1 values.; Errors: data.generator should have required property 'emailsha1', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    MO02: asserttrue: INFORMATIONAL: Emailsha1 for Annotation Generator (Agent) not found. Agents may have one or more emailsha1 values.; Errors: data.generator should have required property 'emailsha1', data.generator should be array, data.generator should NOT be valid, data.generator should match exactly one schema in oneOf; expected true got false
    1:15 Implements Annotation-level creator (Agent) homepage key with one or more values, each of which is a string of format uri - model 3.2.2PASSPASSPASSPASS
    1:16 Implements Annotation-level generator (Agent) homepage key with one or more values, each of which is a string of format uri - model 3.2.2PASSPASSPASSPASS
    /annotation-model/annotations/annotationMusts-manual.htmlOKOKOKOK
    1:1 Annotation has @context key and 'http://www.w3.org/ns/anno.jsonld' is a value of @context - model 3.1PASSPASSPASSPASS
    1:2 Annotation has id key which has a single value that is a string of format uri - model 3.1PASSPASSPASSPASS
    1:3 Annotation has type key and 'Annotation' is a value of type - model 3.1PASSPASSPASSPASS
    1:4 Annotation has a target key - model 3.1PASSPASSPASSPASS
    1:5 Each target is one of a string of format uri, an External Web Resource, a Choice or Set, or a Specific Resource - model 3.2, model 4PASSPASSPASSPASS
    1:6 Annotation has a body key, or a bodyValue key, or neither, but NEVER both - model 3.2.5PASSPASSPASSPASS
    1:7 If present, each body is one of a string of format uri, an External Web Resource, an Embedded Textual Body, a Choice or Set, or a Specific Resource - model 3.2, model 4PASSPASSFAILPASS
    -
    MO01: assert_true: ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.; Errors: data.body should be string, data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should be array, data.body should match exactly one schema in oneOf; expected true got false
    1:8 If present the bodyValue key has a single value that is a string - model 3.2.5PASSPASSPASSPASS
    1:9 If present the Annotation-level created key has a single value that is of format date-time - model 3.3.1PASSPASSPASSPASS
    1:10 If present the Annotation-level modified key has a single value that is of format date-time - model 3.3.1PASSPASSPASSPASS
    1:11 If present the Annotation-level generated key has a single value that is of format date-time - model 3.3.1PASSPASSPASSPASS
    1:12 If present the Annotation-level rights key has values that are all strings of format uri - model 3.3.6PASSPASSPASSPASS
    1:13 If present the Annotation-level canonical key has a single value that is a string of format uri - model 3.3.7PASSPASSPASSPASS
    1:14 If present the Annotation-level via key has values that are all strings of format uri - model 3.3.7PASSPASSPASSPASS
    /annotation-model/annotations/annotationOptionals-manual.htmlOKOKOKOK
    1:1 Implements body key - model 3.1PASSPASSPASSPASS
    1:2 Implements Annotation-level creator key with a single value - model 3.3.1PASSPASSPASSPASS
    1:3 Implements Annotation-level created key which has a single value that is a string of format date-time - model 3.3.1PASSPASSPASSPASS
    1:4 Implements motivation key with a single value that is from the model's list of Motivations - model 3.3.5PASSPASSFAILFAIL
    - -
    MO01: assert_true: WARNING: Annotation SHOULD have a motivation key with a single value from model motivation ontology.; Errors: data.motivation should be equal to one of the allowed values, data.motivation should be array, data.motivation should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Annotation SHOULD have a motivation key with a single value from model motivation ontology.; Errors: data.motivation should be equal to one of the allowed values, data.motivation should be array, data.motivation should match exactly one schema in oneOf; expected true got false
    1:5 Implements bodyValue key which has a single value that is a string model 3.2.5FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: bodyValue key not found. Annotation May have exactly one bodyValue (if no body also included).; Errors: data should have required property 'bodyValue'; expected true got false
    IC01: assert_true: INFORMATIONAL: bodyValue key not found. Annotation May have exactly one bodyValue (if no body also included).; Errors: data should have required property 'bodyValue'; expected true got false
    MO01: assert_true: INFORMATIONAL: bodyValue key not found. Annotation May have exactly one bodyValue (if no body also included).; Errors: data should have required property 'bodyValue'; expected true got false
    MO02: assert_true: INFORMATIONAL: bodyValue key not found. Annotation May have exactly one bodyValue (if no body also included).; Errors: data should have required property 'bodyValue'; expected true got false
    1:6 Implements creator key which has one or more values, each of which is a string of format uri or an object - model 3.3.1PASSPASSPASSPASS
    1:7 Implements generator key which has one or more values, each of which is a string of format uri or an object - model 3.3.1.PASSPASSPASSPASS
    1:8 Implements Annotation-level generated key which has a single value that is a string of format date-time - model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Valid Annotation-level generated key not found. Annotation may have zero or exactly one generated key value.; Errors: data should have required property 'generated'; expected true got false
    IC01: assert_true: INFORMATIONAL: Valid Annotation-level generated key not found. Annotation may have zero or exactly one generated key value.; Errors: data should have required property 'generated'; expected true got false
    MO01: assert_true: INFORMATIONAL: Valid Annotation-level generated key not found. Annotation may have zero or exactly one generated key value.; Errors: data should have required property 'generated'; expected true got false
    MO02: assert_true: INFORMATIONAL: Valid Annotation-level generated key not found. Annotation may have zero or exactly one generated key value.; Errors: data should have required property 'generated'; expected true got false
    1:9 Implements Annotation-level modified key which has a single value that is a string of format date-time - model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Valid Annotation-level modified key not found. Annotation may have zero or exactly one modified key value.; Errors: data should have required property 'modified'; expected true got false
    IC01: assert_true: INFORMATIONAL: Valid Annotation-level modified key not found. Annotation may have zero or exactly one modified key value.; Errors: data should have required property 'modified'; expected true got false
    MO01: assert_true: INFORMATIONAL: Valid Annotation-level modified key not found. Annotation may have zero or exactly one modified key value.; Errors: data should have required property 'modified'; expected true got false
    MO02: assert_true: INFORMATIONAL: Valid Annotation-level modified key not found. Annotation may have zero or exactly one modified key value.; Errors: data should have required property 'modified'; expected true got false
    1:10 Implements audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties - model 3.3.3FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: audience key not found. An Annotation may have one or more audience values.; Errors: data should have required property 'audience'; expected true got false
    IC01: assert_true: INFORMATIONAL: audience key not found. An Annotation may have one or more audience values.; Errors: data should have required property 'audience'; expected true got false
    MO01: assert_true: INFORMATIONAL: audience key not found. An Annotation may have one or more audience values.; Errors: data should have required property 'audience'; expected true got false
    MO02: assert_true: INFORMATIONAL: audience key not found. An Annotation may have one or more audience values.; Errors: data should have required property 'audience'; expected true got false
    1:11 Implements motivation key which has one or more values, each of which is from the model's list of Motivations - model 3.3.5PASSPASSFAILFAIL
    - -
    MO01: assert_true: INFORMATIONAL: motivation key with value from model motivation list not found. Annotation may have zero or more motivations with values drawn from model ontology.; Errors: data.motivation should be equal to one of the allowed values, data.motivation should be array, data.motivation should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: motivation key with value from model motivation list not found. Annotation may have zero or more motivations with values drawn from model ontology.; Errors: data.motivation should be equal to one of the allowed values, data.motivation should be array, data.motivation should match exactly one schema in oneOf; expected true got false
    1:12 Implements Annotation-level rights key which has one or more values, each of which is a string of format uri - model 3.3.6FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Annotatoin-level rights key having string value(s) of format uri not found. Annotation may have zero or more rights key values.; Errors: data should have required property 'rights'; expected true got false
    IC01: assert_true: INFORMATIONAL: Annotatoin-level rights key having string value(s) of format uri not found. Annotation may have zero or more rights key values.; Errors: data should have required property 'rights'; expected true got false
    MO01: assert_true: INFORMATIONAL: Annotatoin-level rights key having string value(s) of format uri not found. Annotation may have zero or more rights key values.; Errors: data should have required property 'rights'; expected true got false
    MO02: assert_true: INFORMATIONAL: Annotatoin-level rights key having string value(s) of format uri not found. Annotation may have zero or more rights key values.; Errors: data should have required property 'rights'; expected true got false
    1:13 Implements Annotation-level canonical key which has a single value that is a string of format uri - model 3.3.7FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: canonical key having a single string value of format uri not found. Annotation may have canonical key with exactly one value.; Errors: data should have required property 'canonical'; expected true got false
    IC01: assert_true: INFORMATIONAL: canonical key having a single string value of format uri not found. Annotation may have canonical key with exactly one value.; Errors: data should have required property 'canonical'; expected true got false
    MO01: assert_true: INFORMATIONAL: canonical key having a single string value of format uri not found. Annotation may have canonical key with exactly one value.; Errors: data should have required property 'canonical'; expected true got false
    MO02: assert_true: INFORMATIONAL: canonical key having a single string value of format uri not found. Annotation may have canonical key with exactly one value.; Errors: data should have required property 'canonical'; expected true got false
    1:14 Implements Annotation-level via key which has one or more values, each of which is a string of format uri - model 3.3.7FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Annotation-level via key with string(s) of format uri as value(s) not found. Annotation may have via key with one or more values.; Errors: data should have required property 'via'; expected true got false
    IC01: assert_true: INFORMATIONAL: Annotation-level via key with string(s) of format uri as value(s) not found. Annotation may have via key with one or more values.; Errors: data should have required property 'via'; expected true got false
    MO01: assert_true: INFORMATIONAL: Annotation-level via key with string(s) of format uri as value(s) not found. Annotation may have via key with one or more values.; Errors: data should have required property 'via'; expected true got false
    MO02: assert_true: INFORMATIONAL: Annotation-level via key with string(s) of format uri as value(s) not found. Annotation may have via key with one or more values.; Errors: data should have required property 'via'; expected true got false
    1:15 Implements stylesheet key which has a single value that is an object or string of format uri. model 4.4FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: stylesheet key with exactly one value not found. Annotation may have stylesheet key with exactly one value.; Errors: data should have required property 'stylesheet'; expected true got false
    IC01: assert_true: INFORMATIONAL: stylesheet key with exactly one value not found. Annotation may have stylesheet key with exactly one value.; Errors: data should have required property 'stylesheet'; expected true got false
    MO01: assert_true: INFORMATIONAL: stylesheet key with exactly one value not found. Annotation may have stylesheet key with exactly one value.; Errors: data should have required property 'stylesheet'; expected true got false
    MO02: assert_true: INFORMATIONAL: stylesheet key with exactly one value not found. Annotation may have stylesheet key with exactly one value.; Errors: data should have required property 'stylesheet'; expected true got false
    /annotation-model/annotations/annotationSingleAssertion-manual.htmlOKOKOKOK
    1:1 If present, each body is one of a string of format uri, an External Web Resource, an Embedded Textual Body, a Choice or Set, or a Specific Resource - model 3.2, model 4PASSPASSFAILPASS
    -
    MO01: assert_true: ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.; Errors: data.body should be string, data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should be array, data.body should match exactly one schema in oneOf; expected true got false
    /annotation-model/bodiesTargets/bodyMusts-manual.htmlOKOKOKOK
    1:1 If present, each body is one of a string of format uri, an External Web Resource, an Embedded Textual Body, a Choice or Set, or a Specific Resource - model 3.2, model 4PASSPASSFAILPASS
    -
    MO01: assert_true: ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.; Errors: data.body should be string, data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should be array, data.body should match exactly one schema in oneOf; expected true got false
    1:2 If present as a body or body/source property, the textDirection key has a single value which is one of 'ltr', 'rtl', 'auto' - model 3.2.1PASSPASSPASSPASS
    1:3 If present all body-level or body/source-level created keys have a single value that is of format date-time - model 3.3.1PASSPASSPASSPASS
    1:4 If present all body-level or body/source-level modified keys have a single value that is of format date-time - model 3.3.1PASSPASSPASSPASS
    1:5 If present all body-level or body/source-level rights key values are strings of format uri - model 3.3.6PASSPASSPASSPASS
    1:6 If present all body-level or body/source-level canonical keys have a single value which is a string of format uri - model 3.3.PASSPASSPASSPASS
    1:7 If present all body-level or body/source-level via key values are strings of format uri - model 3.3.7PASSPASSPASSPASS
    1:8 If an External Web Resource is a body, it does NOT have an items key - model 3.2.7PASSPASSPASSPASS
    1:9 If an External Web Resource is a body, it does NOT have an purpose key - model 3.3.5PASSPASSPASSPASS
    1:10 If a Choice or Set is a body, it does NOT have a value key - model 3.2.4PASSPASSPASSPASS
    1:11 If a Choice or Set is a body, it does NOT have a source key - model 4PASSPASSPASSPASS
    1:12 If a Choice or Set is a body, it does NOT have a purpose key - model 3.3.5PASSPASSPASSPASS
    1:13 If an Embedded Textual Body is a body, it does NOT have an items key - model 3.2.7PASSPASSPASSPASS
    1:14 If an Embedded Textual Body is a body, it does NOT have a source key - model 4PASSPASSPASSPASS
    1:15 If a Specific Resource is a body, it does NOT have an items key - model 3.2.7PASSPASSPASSPASS
    1:16 If a Specific Resource is a body, it does NOT have a value key - model 4PASSPASSPASSPASS
    /annotation-model/bodiesTargets/bodyOptionals-manual.htmlOKOKOKOK
    1:1 Implements body format key with a single value that is a media type model 3.2.1FAILFAILFAILPASS
    - - -
    EM01: assert_true: WARNING: The description of a Body should include format key with a single value that is a media type.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: The description of a Body should include format key with a single value that is a media type.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: The description of a Body should include format key with a single value that is a media type.; Errors: data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:2 Implements body language key with a single value that is a language code model 3.2.1FAILFAILFAILPASS
    - - -
    EM01: assert_true: WARNING: The description of a Body should include language key with a single value that is a language code.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: The description of a Body should include language key with a single value that is a language code.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: The description of a Body should include language key with a single value that is a language code.; Errors: data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:3 Implements body creator key with a single value model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: The description of a body should include creator key with a single value.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: The description of a body should include creator key with a single value.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: The description of a body should include creator key with a single value.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'creator', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: The description of a body should include creator key with a single value.; Errors: data.body should have required property 'creator', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:4 Implements body created key with a single value that is of format date-time model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: The description of a body should include created key with a single value that is of format date-time.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: The description of a body should include created key with a single value that is of format date-time.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: The description of a body should include created key with a single value that is of format date-time.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'created', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: The description of a body should include created key with a single value that is of format date-time.; Errors: data.body should have required property 'created', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:5 Implements Embedded Textual Body type key which includes a value of TextualBody model 3.2.4FAILFAILFAILPASS
    - - -
    EM01: assert_true: WARNING: The description of an Embedded Textual Body should include type key which includes the value of TextualBody.; Errors: data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: The description of an Embedded Textual Body should include type key which includes the value of TextualBody.; Errors: data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: The description of an Embedded Textual Body should include type key which includes the value of TextualBody.; Errors: data.body should have required property 'value', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:6 Implements External Web Resource with id key as a body of the Annotation model 3.2.1FAILFAILPASSPASS
    - -
    EM01: assert_true: INFORMATIONAL: An External Web Resource body may be used as an Annotation Body.; Errors: data.body should NOT be valid, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should NOT be valid, data.body should match some schema in anyOf; expected true got false
    IC01: assert_true: INFORMATIONAL: An External Web Resource body may be used as an Annotation Body.; Errors: data.body should NOT be valid, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should NOT be valid, data.body should match some schema in anyOf; expected true got false
    1:7 Implements Embedded Textual Body with value key as a body of the Annotation model 3.2.4FAILFAILPASSPASS
    - -
    EM01: assert_true: INFORMATIONAL: An Embedded Textual Body may be used as an Annotation Body.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should NOT be valid, data.body should match some schema in anyOf; expected true got false
    IC01: assert_true: INFORMATIONAL: An Embedded Textual Body may be used as an Annotation Body.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should NOT be valid, data.body should match some schema in anyOf; expected true got false
    1:8 Implements Choice with type and items keys as a body of the Annotation model 3.2.7FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: A Choice resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: A Choice resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A Choice resource may be used as an Annotation Body (not found).; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A Choice resource may be used as an Annotation Body (not found).; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:9 Implements List with type and items keys as a body of the Annotation model 3.2.8FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: A List resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: A List resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A List resource may be used as an Annotation Body (not found).; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A List resource may be used as an Annotation Body (not found).; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:10 Implements Composite with type and items keys as a body of the Annotation model 3.2.8FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: A Composite resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: A Composite resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A Composite resource may be used as an Annotation Body (not found).; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A Composite resource may be used as an Annotation Body (not found).; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:11 Implements Independents with type and items keys as a body of the Annotation model 3.2.8FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: A Independents resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: A Independents resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A Independents resource may be used as an Annotation Body (not found).; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A Independents resource may be used as an Annotation Body (not found).; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body should have required property 'items', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:12 Implements Specific Resource with source and at least one of purpose, selector, state, style, renderedVia, scope keys as a body of the Annotation model 4FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: A Specific Resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match some schema in anyOf; expected true got false
    IC01: assert_true: INFORMATIONAL: A Specific Resource may be used as an Annotation Body (not found).; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should match some schema in anyOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A Specific Resource may be used as an Annotation Body (not found).; Errors: data.body should have required property 'source', data.body should have required property 'items', data.body should NOT be valid, data.body should match some schema in anyOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A Specific Resource may be used as an Annotation Body (not found).; Errors: data.body should have required property 'source', data.body should have required property 'items', data.body should NOT be valid, data.body should match some schema in anyOf; expected true got false
    1:13 Implements body format key with one or more values each of which is a media type model 3.2.1FAILFAILFAILPASS
    - - -
    EM01: assert_true: INFORMATIONAL: The description of a body may include format key with one or more values that are each a media type.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a body may include format key with one or more values that are each a media type.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a body may include format key with one or more values that are each a media type.; Errors: data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:14 Implements body language key with one or more values each of which is a language code model 3.2.1FAILFAILFAILPASS
    - - -
    EM01: assert_true: INFORMATIONAL: The description of a body may include language key with one or more values that are each a language code.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a body may include language key with one or more values that are each a language code.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a body may include language key with one or more values that are each a language code.; Errors: data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:15 Implements body creator key with one or more values - model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a body may include creator key with one or more values.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a body may include creator key with one or more values.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a body may include creator key with one or more values.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'creator', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a body may include creator key with one or more values.; Errors: data.body should have required property 'creator', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:16 Implements body type key with one or more values each of which is drawn from the model's list of resource classes model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Body may include type key with one or more values that are each drawn from the model's list of resource classes.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Body may include type key with one or more values that are each drawn from the model's list of resource classes.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Body may include type key with one or more values that are each drawn from the model's list of resource classes.; Errors: data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Body may include type key with one or more values that are each drawn from the model's list of resource classes.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:17 Implements body processingLanguage key with a single value that is a language code model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Body may include processingLanguage key with a single value that is a language code.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Body may include processingLanguage key with a single value that is a language code.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Body may include processingLanguage key with a single value that is a language code.; Errors: data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'processingLanguage', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Body may include processingLanguage key with a single value that is a language code.; Errors: data.body should have required property 'processingLanguage', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:18 Implements body textDirection key with a single value that is is one of ltr, rtl, or auto model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Body may include textDirection key with a single value that is one of ltr, rtl, or auto.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Body may include textDirection key with a single value that is one of ltr, rtl, or auto.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Body may include textDirection key with a single value that is one of ltr, rtl, or auto.; Errors: data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'textDirection', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Body may include textDirection key with a single value that is one of ltr, rtl, or auto.; Errors: data.body should have required property 'textDirection', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:19 Implements body modified key with a single value that is of format date-time model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a body may include modified key with a single value that is of format date-time.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a body may include modified key with a single value that is of format date-time.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a body may include modified key with a single value that is of format date-time.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'modified', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a body may include modified key with a single value that is of format date-time.; Errors: data.body should have required property 'modified', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:20 Implements body audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties - model 3.3.3FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a body may include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a body may include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a body may include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'audience', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a body may include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.; Errors: data.body should have required property 'audience', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:21 Implements body accessibility key which has one or more values - model 3.3.4FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Body may include accessibility key which has one or more values.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Body may include accessibility key which has one or more values.; Errors: data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Body may include accessibility key which has one or more values.; Errors: data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'accessibility', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Body may include accessibility key which has one or more values.; Errors: data.body should have required property 'accessibility', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:22 Implements body purpose key with one or more values are each drawn from model's list of Motivations model 3.3.5FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Body may include purpose key with one or more values that are each drawn from model's list of Motivations.; Errors: data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Body may include purpose key with one or more values that are each drawn from model's list of Motivations.; Errors: data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Body may include purpose key with one or more values that are each drawn from model's list of Motivations.; Errors: data.body should have required property 'source', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'purpose', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Body may include purpose key with one or more values that are each drawn from model's list of Motivations.; Errors: data.body should have required property 'purpose', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:23 Implements body rights key which has one or more values, each of which is a string of format uri - model 3.3.6FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a body may include rights key with one or more values each of format uri.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a body may include rights key with one or more values each of format uri.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a body may include rights key with one or more values each of format uri.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'rights', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a body may include rights key with one or more values each of format uri.; Errors: data.body should have required property 'rights', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:24 Implements body canonical key with a single value that is of format uri model 3.3.7FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a body rresource may include canonical key with a single value that is of format uri.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a body rresource may include canonical key with a single value that is of format uri.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a body rresource may include canonical key with a single value that is of format uri.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'canonical', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a body rresource may include canonical key with a single value that is of format uri.; Errors: data.body should have required property 'canonical', data.body should have required property 'items', data.body should have required property 'source', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:25 Implements body via key which has one or more values, each of which is a string of format uri - model 3.3.7FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a body resource may include via key with one or more values that are each of format uri.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a body resource may include via key with one or more values that are each of format uri.; Errors: data.body should be object, data.body should be object, data.body should NOT be valid, data.body should be object, data.body should be object, data.body should be object, data.body should match exactly one schema in oneOf, data.body should be object, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a body resource may include via key with one or more values that are each of format uri.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'source', data.body should have required property 'id', data.body should have required property 'value', data.body should match exactly one schema in oneOf, data.body should have required property 'via', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a body resource may include via key with one or more values that are each of format uri.; Errors: data.body should have required property 'via', data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:26 Implements Specific Resource body styleClass key which has one or more values - model 4.4FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Specific Resource body may include styleClass key with one or more values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Specific Resource body may include styleClass key with one or more values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Specific Resource body may include styleClass key with one or more values.; Errors: data.body should have required property 'source', data.body should have required property 'styleClass', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Specific Resource body may include styleClass key with one or more values.; Errors: data.body should have required property 'source', data.body should have required property 'styleClass', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:27 Implements Specific Resource body renderedVia key which has one or more values - model 4.5FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Specific Resource body may include renderedVia key with one or more values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Specific Resource body may include renderedVia key with one or more values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Specific Resource body may include renderedVia key with one or more values.; Errors: data.body should have required property 'source', data.body should have required property 'renderedVia', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Specific Resource body may include renderedVia key with one or more values.; Errors: data.body should have required property 'source', data.body should have required property 'renderedVia', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:28 Implements Embedded Textual Body type key which includes a value of Text model 3.2.4FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of an Embedded Textual Body should include type key which includes the value of Text.; Errors: data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of an Embedded Textual Body should include type key which includes the value of Text.; Errors: data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of an Embedded Textual Body should include type key which includes the value of Text.; Errors: data.body should have required property 'value', data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of an Embedded Textual Body should include type key which includes the value of Text.; Errors: data.body.type should be equal to one of the allowed values, data.body.type should be string, data.body.type should NOT be valid, data.body.type should match exactly one schema in oneOf, data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    /annotation-model/bodiesTargets/bodyTargAgentOptionals-manual.htmlOKOKOKOK
    1:1 Implements Body-level creator (Agent) id key with single value that is a string of format uri - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Id for Body Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Id for Body Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Id for Body Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Id for Body Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:2 Implements Target-level creator (Agent) id key with single value that is a string of format uri - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Id for Target Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Id for Target Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.target should have required property 'creator', data.target.source should be object, data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Id for Target Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Id for Target Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:3 Implements Body-level creator (Agent) type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Type (Person, Organization, Software) for Body Creator (Agent) not found. Agents should have one or more type values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Type (Person, Organization, Software) for Body Creator (Agent) not found. Agents should have one or more type values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Type (Person, Organization, Software) for Body Creator (Agent) not found. Agents should have one or more type values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Type (Person, Organization, Software) for Body Creator (Agent) not found. Agents should have one or more type values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:4 Implements Target-level creator (Agent) type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Type (Person, Organization, Software) for Target Creator (Agent) not found. Agents should have one or more type values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Type (Person, Organization, Software) for Target Creator (Agent) not found. Agents should have one or more type values.; Errors: data.target should have required property 'creator', data.target.source should be object, data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Type (Person, Organization, Software) for Target Creator (Agent) not found. Agents should have one or more type values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Type (Person, Organization, Software) for Target Creator (Agent) not found. Agents should have one or more type values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:5 Implements Body-level creator (Agent) nickname key with a single value that is a string - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Nickname for Body Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Nickname for Body Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Nickname for Body Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Nickname for Body Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:6 Implements Target-level creator (Agent) nickname key with a single value that is a string - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Nickname for Target Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Nickname for Target Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.target should have required property 'creator', data.target.source should be object, data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Nickname for Target Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Nickname for Target Creator (Agent) not found. Agents should have exactly one nickname value.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:7 Implements Body-level creator (Agent) name key with a single value that is a string - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Single name for Body Creator (Agent) not found. Agents should have exactly one name value.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Single name for Body Creator (Agent) not found. Agents should have exactly one name value.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Single name for Body Creator (Agent) not found. Agents should have exactly one name value.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Single name for Body Creator (Agent) not found. Agents should have exactly one name value.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:8 Implements Target-level creator (Agent) name key with a single value that is a string - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: Single name for Target Creator (Agent) not found. Agents should have exactly one name value.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: Single name for Target Creator (Agent) not found. Agents should have exactly one name value.; Errors: data.target should have required property 'creator', data.target.source should be object, data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: Single name for Target Creator (Agent) not found. Agents should have exactly one name value.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: Single name for Target Creator (Agent) not found. Agents should have exactly one name value.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:9 Implements Body-level creator (Agent) name key with one or more values - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Name for Body Creator (Agent) not found. Agents may have one or more name values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: Name for Body Creator (Agent) not found. Agents may have one or more name values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: Name for Body Creator (Agent) not found. Agents may have one or more name values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: Name for Body Creator (Agent) not found. Agents may have one or more name values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:10 Implements Target-level creator (Agent) name key with one or more values - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Name for Target Creator (Agent) not found. Agents may have one or more name values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: Name for Target Creator (Agent) not found. Agents may have one or more name values.; Errors: data.target should have required property 'creator', data.target.source should be object, data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: Name for Target Creator (Agent) not found. Agents may have one or more name values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: Name for Target Creator (Agent) not found. Agents may have one or more name values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:11 Implements Body-level creator (Agent) email key with one or more values, each of which is a mailto: uri - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Email for Body Creator (Agent) not found. Agents may have one or more email values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: Email for Body Creator (Agent) not found. Agents may have one or more email values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: Email for Body Creator (Agent) not found. Agents may have one or more email values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: Email for Body Creator (Agent) not found. Agents may have one or more email values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:12 Implements Target-level creator (Agent) email key with one or more values, each of which is a mailto: uri - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Email for Target Creator (Agent) not found. Agents may have one or more email values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: Email for Target Creator (Agent) not found. Agents may have one or more email values.; Errors: data.target should have required property 'creator', data.target.source should be object, data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: Email for Target Creator (Agent) not found. Agents may have one or more email values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: Email for Target Creator (Agent) not found. Agents may have one or more email values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:13 Implements Body-level creator (Agent) email_sha1 key with one or more values - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: asserttrue: INFORMATIONAL: Emailsha1 for Body Creator (Agent) not found. Agents may have one or more email_sha1 values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: asserttrue: INFORMATIONAL: Emailsha1 for Body Creator (Agent) not found. Agents may have one or more email_sha1 values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: asserttrue: INFORMATIONAL: Emailsha1 for Body Creator (Agent) not found. Agents may have one or more email_sha1 values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: asserttrue: INFORMATIONAL: Emailsha1 for Body Creator (Agent) not found. Agents may have one or more email_sha1 values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:14 Implements Target-level creator (Agent) email_sha1 key with one or more values - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: asserttrue: INFORMATIONAL: Emailsha1 for Target Creator (Agent) not found. Agents may have one or more email_sha1 values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: asserttrue: INFORMATIONAL: Emailsha1 for Target Creator (Agent) not found. Agents may have one or more email_sha1 values.; Errors: data.target should have required property 'creator', data.target.source should be object, data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: asserttrue: INFORMATIONAL: Emailsha1 for Target Creator (Agent) not found. Agents may have one or more email_sha1 values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: asserttrue: INFORMATIONAL: Emailsha1 for Target Creator (Agent) not found. Agents may have one or more email_sha1 values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:15 Implements Body-level creator (Agent) homepage key with one or more values, each of which is a string of format uri - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Homepage for Body Creator (Agent) not found. Agents may have one or more homepage values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: Homepage for Body Creator (Agent) not found. Agents may have one or more homepage values.; Errors: data.body should be object, data.body should be object, data.body should be object, data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: Homepage for Body Creator (Agent) not found. Agents may have one or more homepage values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: Homepage for Body Creator (Agent) not found. Agents may have one or more homepage values.; Errors: data.body should have required property 'creator', data.body should have required property 'source', data.body should have required property 'items', data.body should match some schema in anyOf, data.body should NOT be valid, data.body should match exactly one schema in oneOf; expected true got false
    1:16 Implements Target-level creator (Agent) homepage key with one or more values, each of which is a string of format uri - model 3.2.2FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: Homepage for Target Creator (Agent) not found. Agents may have one or more homepage values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: Homepage for Target Creator (Agent) not found. Agents may have one or more homepage values.; Errors: data.target should have required property 'creator', data.target.source should be object, data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: Homepage for Target Creator (Agent) not found. Agents may have one or more homepage values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: Homepage for Target Creator (Agent) not found. Agents may have one or more homepage values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    /annotation-model/bodiesTargets/targetMusts-manual.htmlOKOKOKOK
    1:1 Each target is one of a string of format uri, an External Web Resource, a Choice or Set, or a Specific Resource - model 3.2, model 4PASSPASSPASSPASS
    1:2 If present as a target or target/source property, the textDirection key has a single value which is one of 'ltr', 'rtl', 'auto' - model 3.2.1PASSPASSPASSPASS
    1:3 If present all target-level or target/source-level created keys have a single value that is of format date-time - model 3.3.1PASSPASSPASSPASS
    1:4 If present all target-level or target/source-level modified keys have a single value that is of format date-time - model 3.3.1PASSPASSPASSPASS
    1:5 If present all target-level or target/source-level rights key values are strings of format uri - model 3.3.6PASSPASSPASSPASS
    1:6 If present all target-level or target/source-level canonical keys have a single value which is a string of format uri - model 3.3.PASSPASSPASSPASS
    1:7 If present all target-level or target/source-level via key values are strings of format uri - model 3.3.7PASSPASSPASSPASS
    1:8 If an External Web Resource is a target, it does NOT have an items key - model 3.2.7PASSPASSPASSPASS
    1:9 If an External Web Resource is a target, it does NOT have an purpose key - model 3.3.5PASSPASSPASSPASS
    1:10 If a Choice or Set is a target, it does NOT have a value key - model 3.2.4PASSPASSPASSPASS
    1:11 If a Choice or Set is a target, it does not have a source key - model 4PASSPASSPASSPASS
    1:12 If a Choice or Set is a target, it does NOT have a purpose key - model 3.3.5PASSPASSPASSPASS
    1:13 If a Specific Resource Target is a target, it does NOT have an items key - model 3.2.7PASSPASSPASSPASS
    1:14 If a Specific Resource is a target, it does NOT have a value key - model 4PASSPASSPASSPASS
    1:15 Neither target Resources nor target Choice or Set items have a type key which includes a value of TextualBody model 3.2.4PASSPASSPASSPASS
    /annotation-model/bodiesTargets/targetOptionals-manual.htmlOKOKOKOK
    1:1 Implements target format key with a single value that is a media type model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: The description of a Target should include format key with a single value that is a media type.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: The description of a Target should include format key with a single value that is a media type.; Errors: data.target should have required property 'format', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: The description of a Target should include format key with a single value that is a media type.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: The description of a Target should include format key with a single value that is a media type.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:2 Implements target language key with a single value that is a language code model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: The description of a Target should include language key with a single value that is a language code.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: The description of a Target should include language key with a single value that is a language code.; Errors: data.target should have required property 'language', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: The description of a Target should include language key with a single value that is a language code.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: The description of a Target should include language key with a single value that is a language code.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:3 Implements target creator key with a single value model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: The description of a target should include creator key with a single value.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: The description of a target should include creator key with a single value.; Errors: data.target should have required property 'creator', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: The description of a target should include creator key with a single value.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: The description of a target should include creator key with a single value.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:4 Implements target created key with a single value that is of format date-time model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: WARNING: The description of a target should include created key with a single value that is of format date-time.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: WARNING: The description of a target should include created key with a single value that is of format date-time.; Errors: data.target should have required property 'created', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: WARNING: The description of a target should include created key with a single value that is of format date-time.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: WARNING: The description of a target should include created key with a single value that is of format date-time.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:5 Implements External Web Resource with id key as a target of the Annotation model 3.2.1FAILPASSFAILFAIL
    - - -
    EM01: assert_true: INFORMATIONAL: An External Web Resource target may be used as an Annotation Target.; Errors: data.target should NOT be valid, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should NOT be valid, data.target should match some schema in anyOf; expected true got false
    MO01: assert_true: INFORMATIONAL: An External Web Resource target may be used as an Annotation Target.; Errors: data.target should NOT be valid, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should NOT be valid, data.target should match some schema in anyOf; expected true got false
    MO02: assert_true: INFORMATIONAL: An External Web Resource target may be used as an Annotation Target.; Errors: data.target should NOT be valid, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should NOT be valid, data.target should match some schema in anyOf; expected true got false
    1:6 Implements Choice with type and items keys as a target of the Annotation model 3.2.7FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: A Choice resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: A Choice resource may be used as an Annotation Target (not found).; Errors: data.target should have required property 'type', data.target should have required property 'items', data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A Choice resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A Choice resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:7 Implements List with type and items keys as a target of the Annotation model 3.2.8FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: A List resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: A List resource may be used as an Annotation Target (not found).; Errors: data.target should have required property 'type', data.target should have required property 'items', data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A List resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A List resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:8 Implements Composite with type and items keys as a target of the Annotation model 3.2.8FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: A Composite resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: A Composite resource may be used as an Annotation Target (not found).; Errors: data.target should have required property 'type', data.target should have required property 'items', data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A Composite resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A Composite resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:9 Implements Independents with type and items keys as a target of the Annotation model 3.2.8FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: A Independents resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: A Independents resource may be used as an Annotation Target (not found).; Errors: data.target should have required property 'type', data.target should have required property 'items', data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A Independents resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A Independents resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:10 Implements Specific Resource with source and at least one of purpose, selector, state, style, renderedVia, scope keys as a target of the Annotation model 4FAILPASSFAILFAIL
    - - -
    EM01: assert_true: INFORMATIONAL: A Specific Resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match some schema in anyOf; expected true got false
    MO01: assert_true: INFORMATIONAL: A Specific Resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match some schema in anyOf; expected true got false
    MO02: assert_true: INFORMATIONAL: A Specific Resource may be used as an Annotation Target (not found).; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should match some schema in anyOf; expected true got false
    1:11 Implements target format key with one or more values each of which is a media type model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a target may include format key with one or more values that are each a media type.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a target may include format key with one or more values that are each a media type.; Errors: data.target should have required property 'format', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a target may include format key with one or more values that are each a media type.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a target may include format key with one or more values that are each a media type.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:12 Implements target language key with one or more values each of which is a language code model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a target may include language key with one or more values that are each a language code.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a target may include language key with one or more values that are each a language code.; Errors: data.target should have required property 'language', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a target may include language key with one or more values that are each a language code.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a target may include language key with one or more values that are each a language code.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:13 Implements target creator key with one or more values - model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a target may include creator key with one or more values.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a target may include creator key with one or more values.; Errors: data.target should have required property 'creator', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a target may include creator key with one or more values.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a target may include creator key with one or more values.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:14 Implements target type key with one or more values each of which is drawn from the model's list of resource classes model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Target may include type key with one or more values that are each drawn from the model's list of resource classes.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Target may include type key with one or more values that are each drawn from the model's list of resource classes.; Errors: data.target should have required property 'type', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Target may include type key with one or more values that are each drawn from the model's list of resource classes.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Target may include type key with one or more values that are each drawn from the model's list of resource classes.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:15 Implements target processingLanguage key with a single value that is a language code model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Target may include processingLanguage key with a single value that is a language code.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Target may include processingLanguage key with a single value that is a language code.; Errors: data.target should have required property 'processingLanguage', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Target may include processingLanguage key with a single value that is a language code.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Target may include processingLanguage key with a single value that is a language code.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:16 Implements target textDirection key with a single value that is is one of ltr, rtl, or auto model 3.2.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Target may include textDirection key with a single value that is one of ltr, rtl, or auto.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Target may include textDirection key with a single value that is one of ltr, rtl, or auto.; Errors: data.target should have required property 'textDirection', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Target may include textDirection key with a single value that is one of ltr, rtl, or auto.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Target may include textDirection key with a single value that is one of ltr, rtl, or auto.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:17 Implements target modified key with a single value that is of format date-time model 3.3.1FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a target may include modified key with a single value that is of format date-time.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a target may include modified key with a single value that is of format date-time.; Errors: data.target should have required property 'modified', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a target may include modified key with a single value that is of format date-time.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a target may include modified key with a single value that is of format date-time.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:18 Implements target audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties - model 3.3.3FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a target may include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a target may include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.; Errors: data.target should have required property 'audience', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a target may include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a target may include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:19 Implements target accessibility key which has one or more values - model 3.3.4FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Target may include accessibility key which has one or more values.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Target may include accessibility key which has one or more values.; Errors: data.target should have required property 'accessibility', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Target may include accessibility key which has one or more values.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Target may include accessibility key which has one or more values.; Errors: data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:20 Implements target purpose key with one or more values are each drawn from model's list of Motivations model 3.3.5FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Target may include purpose key with one or more values that are each drawn from model's list of Motivations.; Errors: data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Target may include purpose key with one or more values that are each drawn from model's list of Motivations.; Errors: data.target should have required property 'purpose', data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Target may include purpose key with one or more values that are each drawn from model's list of Motivations.; Errors: data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Target may include purpose key with one or more values that are each drawn from model's list of Motivations.; Errors: data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:21 Implements target rights key which has one or more values, each of which is a string of format uri - model 3.3.6FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a target may include rights key with one or more values each of format uri.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a target may include rights key with one or more values each of format uri.; Errors: data.target should have required property 'rights', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a target may include rights key with one or more values each of format uri.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a target may include rights key with one or more values each of format uri.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:22 Implements target canonical key with a single value that is of format uri model 3.3.7FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a target rresource may include canonical key with a single value that is of format uri.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a target rresource may include canonical key with a single value that is of format uri.; Errors: data.target should have required property 'canonical', data.target should have required property 'items', data.target.source should be object, data.target.source should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a target rresource may include canonical key with a single value that is of format uri.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a target rresource may include canonical key with a single value that is of format uri.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:23 Implements target via key which has one or more values, each of which is a string of format uri - model 3.3.7FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a target resource may include via key with one or more values that are each of format uri.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a target resource may include via key with one or more values that are each of format uri.; Errors: data.target should have required property 'via', data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a target resource may include via key with one or more values that are each of format uri.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a target resource may include via key with one or more values that are each of format uri.; Errors: data.target should be object, data.target should be object, data.target should NOT be valid, data.target should be object, data.target should be object, data.target should be object, data.target should match exactly one schema in oneOf, data.target should be object, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:24 Implements Specific Resource target styleClass key which has one or more values - model 4.4FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Specific Resource target may include styleClass key with one or more values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Specific Resource target may include styleClass key with one or more values.; Errors: data.target should have required property 'styleClass', data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Specific Resource target may include styleClass key with one or more values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Specific Resource target may include styleClass key with one or more values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    1:25 Implements Specific Resource target renderedVia key which has one or more values - model 4.5FAILFAILFAILFAIL
    - - - -
    EM01: assert_true: INFORMATIONAL: The description of a Specific Resource target may include renderedVia key with one or more values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    IC01: assert_true: INFORMATIONAL: The description of a Specific Resource target may include renderedVia key with one or more values.; Errors: data.target should have required property 'renderedVia', data.target should have required property 'items', data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO01: assert_true: INFORMATIONAL: The description of a Specific Resource target may include renderedVia key with one or more values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    MO02: assert_true: INFORMATIONAL: The description of a Specific Resource target may include renderedVia key with one or more values.; Errors: data.target should be object, data.target should be object, data.target should be object, data.target should match some schema in anyOf, data.target should NOT be valid, data.target should match exactly one schema in oneOf; expected true got false
    Test Show/Hide MessagesDGEBEFHYKMMMPNPWRIRNTK
    /annotation-model/annotations/annotationMusts-manual.htmlOKOKOKOKOKOKOKOK-OKOK
    1:1 Implements @context key and 'http://www.w3.org/ns/anno.jsonld' is a value of @context - model 3.1PASSPASSPASSPASSPASSPASSFAILPASS-PASSPASS
    +
    PN: assert_true: ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.; expected true got false
    1:2 Implements Annotation id key which has a single value that is a string of format uri - model 3.1PASSPASSPASSPASSPASSPASSFAILPASS-PASSPASS
    +
    PN: assert_true: ERROR: Annotation is missing id key or its value is not a single string of format uri.; expected true got false
    1:3 Implements Annotation type key and 'Annotation' is a value of type - model 3.1PASSPASSPASSPASSPASSPASSFAILPASS-PASSPASS
    +
    PN: assert_true: ERROR: Annotation is missing type key or 'Annotation' is not a value of type.; expected true got false
    1:4 Implements target key - model 3.1PASSPASSPASSPASSPASSPASSFAILPASS-PASSPASS
    +
    PN: assert_true: Error: Annotation is missing target key.; expected true got false
    1:5 Each target is one of a string of format uri, an External Web Resource, a Choice or Set, or a Specific Resource - model 3.2, model 4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:6 Annotation has a body key, or a bodyValue key, or neither, but NEVER both - model 3.2.5PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:7 If present, each body is one of a string of format uri, an External Web Resource, an Embedded Textual Body, a Choice or Set, or a Specific Resource - model 3.2, model 4PASSPASSPASSFAILPASSPASSPASSPASS-PASSPASS
    +
    HY: assert_true: ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.; expected true got false
    1:8 If present the bodyValue key has a single value that is a string - model 3.2.5PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:9 If present the Annotation-level created key has a single value that is of format date-time - model 3.3.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:10 If present the Annotation-level modified key has a single value that is of format date-time - model 3.3.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:11 If present the Annotation-level generated key has a single value that is of format date-time - model 3.3.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:12 If present the Annotation-level rights key has values that are all strings of format uri - model 3.3.6PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:13 If present the Annotation-level canonical key has a single value that is a string of format uri - model 3.3.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:14 If present the Annotation-level via key has values that are all strings of format uri - model 3.3.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:15 If present as a body or body/source property, the textDirection key has a single value which is one of 'ltr', 'rtl', 'auto' - model 3.2.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:16 If present all body-level or body/source-level created keys have a single value that is of format date-time - model 3.3.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:17 If present all body-level or body/source-level modified keys have a single value that is of format date-time - model 3.3.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:18 If present all body-level or body/source-level rights key values are strings of format uri - model 3.3.6PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:19 If present all body-level or body/source-level canonical keys have a single value which is a string of format uri - model 3.3.PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:20 If present all body-level or body/source-level via key values are strings of format uri - model 3.3.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:21 If an External Web Resource is a body, it does NOT have an items key - model 3.2.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:22 If an External Web Resource is a body, it does NOT have an purpose key - model 3.3.5PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:23 If a Choice or Set is a body, it does NOT have a value key - model 3.2.4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:24 If a Choice or Set is a body, it does NOT have a source key - model 4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:25 If a Choice or Set is a body, it does NOT have a purpose key - model 3.3.5PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:26 If an Embedded Textual Body is a body, it does NOT have an items key - model 3.2.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:27 If an Embedded Textual Body is a body, it does NOT have a source key - model 4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:28 If a Specific Resource is a body, it does NOT have an items key - model 3.2.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:29 If a Specific Resource is a body, it does NOT have a value key - model 4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:30 If present as a target or target/source property, the textDirection key has a single value which is one of 'ltr', 'rtl', 'auto' - model 3.2.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:31 If present all target-level or target/source-level created keys have a single value that is of format date-time - model 3.3.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:32 If present all target-level or target/source-level modified keys have a single value that is of format date-time - model 3.3.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:33 If present all target-level or target/source-level rights key values are strings of format uri - model 3.3.6PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:34 If present all target-level or target/source-level canonical keys have a single value which is a string of format uri - model 3.3.PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:35 If present all target-level or target/source-level via key values are strings of format uri - model 3.3.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:36 If an External Web Resource is a target, it does NOT have an items key - model 3.2.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:37 If an External Web Resource is a target, it does NOT have an purpose key - model 3.3.5PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:38 If a Choice or Set is a target, it does NOT have a value key - model 3.2.4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:39 If a Choice or Set is a target, it does not have a source key - model 4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:40 If a Choice or Set is a target, it does NOT have a purpose key - model 3.3.5PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:41 If a Specific Resource Target is a target, it does NOT have an items key - model 3.2.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:42 If a Specific Resource is a target, it does NOT have a value key - model 4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:43 Neither target Resources nor target Choice or Set items have a type key which includes a value of TextualBody model 3.2.4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:44 If present Specific Resource selector key has one or more values each of which is of format uri or an object having a type key with a single value which is one of 'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector' - model 4.2PASSPASSPASSFAILPASSPASSPASSPASS-PASSPASS
    +
    HY: assert_true: ERROR: Annotation contains one or more Specific Resources selectors having value(s) which is(are) not of format uri, nor an object having a type key with a single value which is one of 'FragmentSelector', 'CssSelector', 'XPathSelector', 'TextQuoteSelector', 'TextPositionSelector', 'DataPositionSelector', 'SvgSelector', 'RangeSelector'.; expected true got false
    1:45 If present Specific Resource state key has one or more values each of which is of format uri or an object having a type key with a single value which is one of 'TimeState' or 'HttpRequestState' - model 4.3PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:46 If present Specific Resource state key has one or more values each of which is of format uri or an object having a type key with a single value which is one of 'TimeState' or 'HttpRequestState' - model 4.3PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:47 If any Specific Resource styleClass keys are present, a stylesheet key (a key of Annotation) with a single value is also present model 4.4PASSPASSPASSPASSPASSPASSFAILPASS-PASSPASS
    +
    PN: assert_true: ERROR: Annotation contains one or more Specific Resources with styleClass key, but does not contain an Annotation-level stylesheet key.; expected true got false
    1:48 If present all Selectors of type FragmentSelector, CssSelector, or XPathSelector have a value key with a single value - model 4.2PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:49 If present all Selectors of type TextQuoteSelector have an exact key with a single value - model 4.2.4PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:50 If present all Selectors of type TextPositionSelector or DataPositionSelector have both a start key and an end key, each with a single non-negative integer value model 4.2PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:51 If present all Selectors of type SvgSelector have either a value key or an id key with a single value of format uri model 4.2.7PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:52 If present all Selectors of type RangeSelector have both a startSelector key and an endSelector key, each with a single value which is a Selector - model 4.2.8PASSPASSPASSFAILPASSPASSPASSPASS-PASSPASS
    +
    HY: assert_true: ERROR: Annotation contains a Range selector that is NOT of format uri and NOT an object having both startSelector and endSelector keys.; expected true got false
    1:53 If present all States of type TimeState each have either (but not both) a souceDate key or paired sourceDateStart and sourceDateEnd keys, each of which is a single value of format date-time- model 4.3.1PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    1:54 If present all States of type HttpRequestState have a value key - model 4.3.2PASSPASSPASSPASSPASSPASSPASSPASS-PASSPASS
    /annotation-model/annotations/annotationOptionals-manual.htmlOKOKOKOKOKOKOKOK-PASSOK
    1:1 Implements Annotation-level creator key with a single value - model 3.3.1-PASSPASSPASSPASSPASS-----
    1:2 Implements Annotation-level created key which has a single value that is a string of format date-time - model 3.3.1-PASSPASSPASSPASSPASS-PASS---
    1:3 Implements motivation key with a single value that is from the model's list of Motivations - model 3.3.5-PASSPASS--PASS-----
    1:4 Implements bodyValue key which has a single value that is a string model 3.2.5--PASS-PASS------
    1:5 Implements Annotation-level generated key which has a single value that is a string of format date-time - model 3.3.1--PASS--------
    1:6 Implements Annotation-level modified key which has a single value that is a string of format date-time - model 3.3.1---PASS-------
    1:8 Implements motivation key which has one or more values, each of which is from the model's list of Motivations - model 3.3.5-PASSPASS--PASS-----
    1:10 Implements Annotation-level canonical key which has a single value that is a string of format uri - model 3.3.7-----PASS-----
    1:13 Implements body key - model 3.1PASSPASSPASSPASS-PASS-PASS--PASS
    1:14 Implements body format key with a single value that is a media type model 3.2.1-PASS---PASS-PASS--PASS
    1:15 Implements body language key with a single value that is a language code model 3.2.1-PASS---PASS-PASS---
    1:16 Implements body creator key with a single value model 3.3.1-------PASS---
    1:18 Implements body format key with one or more values each of which is a media type model 3.2.1-PASS---PASS-PASS--PASS
    1:19 Implements body language key with one or more values each of which is a language code model 3.2.1-PASS---PASS-PASS---
    1:20 Implements body type key with one or more values each of which is drawn from the model's list of resource classes model 3.2.1PASS----PASS-----
    1:23 Implements body modified key with a single value that is of format date-time model 3.3.1----------PASS
    1:26 Implements body purpose key with one or more values are each drawn from model's list of Motivations model 3.3.5PASS----------
    1:30 Implements External Web Resource with id key as a body of the Annotation model 3.2.1PASSPASSPASSPASS-PASS-PASS--PASS
    1:31 Implements Embedded Textual Body with value key as a body of the Annotation model 3.2.4PASSPASSPASSPASS-PASS-PASS--PASS
    1:32 Implements Embedded Textual Body type key which includes a value of TextualBody model 3.2.4PASSPASS---PASS-PASS---
    1:34 Implements Choice or Set with type and items key as a body - model 3.2.7PASS----PASS-PASS---
    1:35 Implements Choice with type and items keys as a body of the Annotation model 3.2.7-----PASS-PASS---
    1:37 Implements Composite with type and items keys as a body of the Annotation model 3.2.8PASS----------
    1:39 Implements target format key with a single value that is a media type model 3.2.1------PASS----
    1:40 Implements target language key with a single value that is a language code model 3.2.1------PASS----
    1:41 Implements target creator key with a single value model 3.3.1------PASS----
    1:42 Implements target created key with a single value that is of format date-time model 3.3.1------PASS----
    1:43 Implements target format key with one or more values each of which is a media type model 3.2.1------PASS----
    1:44 Implements target language key with one or more values each of which is a language code model 3.2.1------PASS----
    1:45 Implements target type key with one or more values each of which is drawn from the model's list of resource classes model 3.2.1----PASS-PASS----
    1:46 Implements target processingLanguage key with a single value that is a language code model 3.2.1------PASS----
    1:47 Implements target textDirection key with a single value that is is one of ltr, rtl, or auto model 3.2.1------PASS----
    1:48 Implements target modified key with a single value that is of format date-time model 3.3.1------PASS----
    1:49 Implements target audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties - model 3.3.3------PASS----
    1:50 Implements target accessibility key which has one or more values - model 3.3.4------PASS----
    1:51 Implements target purpose key with one or more values are each drawn from model's list of Motivations model 3.3.5------PASS----
    1:52 Implements target rights key which has one or more values, each of which is a string of format uri - model 3.3.6------PASS----
    1:53 Implements target canonical key with a single value that is of format uri model 3.3.7------PASS----
    1:54 Implements target via key which has one or more values, each of which is a string of format uri - model 3.3.7------PASS----
    1:55 Implements External Web Resource with id key as a target of the Annotation model 3.2.1PASSPASS-PASSPASSPASSPASS---PASS
    1:56 Implements Choice or Set with type and items key as a target - model 3.2.7------PASS----
    1:57 Implements Choice with type and items keys as a target of the Annotation model 3.2.7------PASS----
    1:58 Implements List with type and items keys as a target of the Annotation model 3.2.8------PASS----
    1:59 Implements Composite with type and items keys as a target of the Annotation model 3.2.8------PASS----
    1:60 Implements Independents with type and items keys as a target of the Annotation model 3.2.8------PASS----
    1:62 Implements Specific Resource with source and at least one of purpose, selector, state, style, renderedVia, scope keys as a target of the Annotation model 4PASSPASS-PASSPASSPASSPASS----
    1:63 Implements Specific Resource refinedBy key model 4.2.9, model 4.3.3PASS--PASSPASSPASSPASS----
    1:64 Implements Specific Resource styleClass key with one or more values on a Specific Resource - model 4.4------PASS----
    1:65 Implements Specific Resource renderedVia key with one or more values on a Specific Resource - model 4.5------PASS----
    1:66 Implements Specific Resource scope key - model 4.6-PASS----PASS----
    1:67 Implements Specific Resource Selector - model 4.2PASS--PASSPASSPASSPASS----
    1:68 Implements Specific Resource Fragment Selector - model 4.2.1----PASS-PASS----
    1:69 Implements Specific Resource conformsTo key with a single value which is of format uri on a Specific Resource FragmentSelector - model 4.2.1----PASS-PASS----
    1:70 Implements Specific Resource CSS Selector - model 4.2.2------PASS----
    1:71 Implements Specific Resource XPath Selector - model 4.2.3------PASS----
    1:72 Implements Specific Resource Text Quote Selector - model 4.2.4---PASS--PASS----
    1:73 Implements Specific Resource prefix key with a single string value on a Specific Resource TextQuoteSelector - model 4.2.4---PASS--PASS----
    1:74 Implements Specific Resource suffix key with a single string value on a Specific Resource TextQuoteSelector - model 4.2.4---PASS--PASS----
    1:75 Implements Specific Resource Text Position Selector - model 4.2.5---PASS--PASS----
    1:76 Implements Specific Resource Data Position Selector - model 4.2.6------PASS----
    1:77 Implements Specific Resource SVG Selector - model 4.2.7PASS----PASSPASS----
    1:78 Implements Specific Resource Range Selector - model 4.2.8------PASS----
    1:79 Implements Specific Resource State - model 4.3PASS--PASSPASSPASSPASS----
    1:80 Implements Specific Resource Time State - model 4.3.1------PASS----
    1:81 Implements Specific Resource Request Header State - model 4.3.2------PASS----
    1:82 Implements Specific Resource cached key with one or more values each of format uri on a Specific Resource TimeState - model 4.3.1------PASS----
    /annotation-model/annotations/annotationsAgentOptionals-manual.html-OKOKOKOKOKOKOK-PASS-
    1:1 Implements creator key which has one or more values, each of which is a string of format uri or an object - model 3.3.1-PASSPASSPASSPASSPASS-----
    1:3 Implements Annotation-level creator (Agent) type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2-PASSPASS--PASS-----
    1:5 Implements Annotation-level creator (Agent) name key with a single value that is a string - model 3.2.2-PASSPASS--PASS-----
    1:6 Implements Annotation-level creator (Agent) name key with one or more values - model 3.2.2-PASSPASS--PASS-----
    1:7 Implements Annotation-level creator (Agent) email key with one or more values, each of which is a mailto: uri - model 3.2.2-PASS---PASS-----
    1:9 Implements Annotation-level creator (Agent) homepage key with one or more values, each of which is a string of format uri - model 3.2.2-PASS---PASS-----
    1:10 Implements generator key which has one or more values, each of which is a string of format uri or an object - model 3.3.1.-PASSPASS--PASS-----
    1:11 Implements Annotation-level generator (Agent) id key with single value that is a string of format uri - model 3.2.2-PASS---PASS-----
    1:12 Implements Annotation-level generator (Agent) type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2-PASSPASS--PASS-----
    1:14 Implements Annotation-level generator (Agent) name key with a single value that is a string - model 3.2.2-PASSPASS--PASS-----
    1:15 Implements Annotation-level generator (Agent) name key with one or more values. model 3.2.2-PASSPASS--PASS-----
    1:18 Implements Annotation-level generator (Agent) homepage key with one or more values, each of which is a string of format uri - model 3.2.2-PASSPASS--PASS-----
    1:19 Implements body creator key with one or more values - model 3.3.1-------PASS---
    1:20 Implements Body-level creator (Agent) id key with single value that is a string of format uri - model 3.2.2-------PASS---
    1:21 Implements Body-level creator (Agent) type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2-------PASS---
    1:23 Implements Body-level creator (Agent) name key with a single value that is a string - model 3.2.2-------PASS---
    1:24 Implements Body-level creator (Agent) name key with one or more values - model 3.2.2-------PASS---
    1:27 Implements Body-level creator (Agent) homepage key with one or more values, each of which is a string of format uri - model 3.2.2-------PASS---
    1:28 Implements target creator key with one or more values - model 3.3.1------PASS----
    1:29 Implements Target-level creator (Agent) id key with single value that is a string of format uri - model 3.2.2------PASS----
    1:30 Implements Target-level creator (Agent) type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2------PASS----
    1:31 Implements Target-level creator (Agent) nickname key with a single value that is a string - model 3.2.2------PASS----
    1:32 Implements Target-level creator (Agent) name key with a single value that is a string - model 3.2.2------PASS----
    1:33 Implements Target-level creator (Agent) name key with one or more values - model 3.2.2------PASS----
    1:34 Implements Target-level creator (Agent) email key with one or more values, each of which is a mailto: uri - model 3.2.2------PASS----
    1:35 Implements Target-level creator (Agent) email_sha1 key with one or more values - model 3.2.2------PASS----
    1:36 Implements Target-level creator (Agent) homepage key with one or more values, each of which is a string of format uri - model 3.2.2------PASS----
    /annotation-model/collections/collectionMusts-manual.html-----OK--OK--
    1:1 Implements @context key and 'http://www.w3.org/ns/anno.jsonld' is a value of @context - model 5.1-----PASS--PASS--
    1:2 Implements Annotation Collection id key which has a single value that is a string of format uri - model 5.1-----PASS--PASS--
    1:3 Implements Annotation Collection type key such that 'AnnotationCollection' is a value of type - model 5.1-----FAIL--PASS--
    +
    MM: assert_true: ERROR: Annotation Collection is missing type key or 'AnnotationCollection' is not a value of type.; expected true got false
    1:4 Annotation Collection label key, if present, is a value of type string - model 5.1-----PASS--PASS--
    1:5 Annotation Collection total key, if present, is a non-negative integer value - model 5.1-----PASS--PASS--
    1:6 Annotation Collection has first key, or no total key, or total key with value of zero - model 5.1-----PASS--PASS--
    1:7 Annotation Collection last key, if present, is a single value of format uri - model 5.1-----PASS--PASS--
    1:8 If present the Annotation Collection-level created key has a single value that is of format date-time - model 3.3.1-----PASS--PASS--
    1:9 If present the Annotation Collection-level modified key has a single value that is of format date-time - model 3.3.1-----PASS--PASS--
    1:10 If present the Annotation Collection Collection-level rights key has values that are all strings of format uri - model 3.3.6-----PASS--PASS--
    /annotation-model/collections/collectionOptionals-manual.html--------OK--
    1:1 Implements Annotation Collection label key - model 5.1--------PASS--
    1:2 Implements Annotation Collection last key - model 5.1--------PASS--
    1:3 Implements Annotation Collection total key - model 5.1--------PASS--
    1:4 Implements Annotation Collection first key - model 5.1--------PASS--
    1:5 Implements Annotation Collection-level modified key which has a single value that is a string of format date-time - model 3.3.1--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Valid Annotation Collection-level modified key not found. Annotation Collection may have zero or exactly one modified key value.; expected true got false
    1:6 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--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Annotation Collection creator key not found. Annotation Collection may have zero or more creators.; expected true got false
    1:7 Implements Annotation Collection-level created key which has a single value that is a string of format date-time - model 3.3.1--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Valid Annotation Collection-level created key not found. Annotation Collection may have exactly one created key value.; expected true got false
    1:8 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--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Annotation Collection-level rights key having string value(s) of format uri not found. Annotation Collection may have zero or more rights key values.; expected true got false
    1:9 Implements Annotation Collection-level creator (Agent) email_sha1 key with one or more values - model 3.2.2--------FAIL--
    +
    RI: asserttrue: INFORMATIONAL: Emailsha1 for Annotation Collection Creator (Agent) not found. Agents may have one or more email_sha1 values.; expected true got false
    1:10 Implements Annotation Collection-level creator (Agent) email key with one or more values, each of which is a mailto: uri - model 3.2.2--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Email for Annotation Collection Creator (Agent) not found. Agents may have one or more email values.; expected true got false
    1:11 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--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Homepage for Annotation Collection Creator (Agent) not found. Agents may have one or more homepage values.; expected true got false
    1:12 Implements Annotation Collection-level creator (Agent) id key with single value that is a string of format uri - model 3.2.2--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Id for Annotation Collection Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.; expected true got false
    1:13 Implements Annotation Collection-level creator (Agent) name key with one or more values - model 3.2.2--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Name for Annotation Collection Creator (Agent) not found. Agents may have one or more name values.; expected true got false
    1:14 Implements Annotation Collection-level creator (Agent) nickname key with a single value that is a string - model 3.2.2--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Nickname for Annotation Collection Creator (Agent) not found. Agents should have exactly one nickname value.; expected true got false
    1:15 Implements Annotation Collection-level creator (Agent) type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Type (Person, Organization, Software) for Annotation Collection Creator (Agent) not found. Agents should have one or more type values.; expected true got false
    /annotation-model/collections/pages/pageMusts-manual.html--------OK--
    1:1 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--------PASS--
    1:2 Implements Annotation Page id key which has a single value that is a string of format uri - model 5.2--------PASS--
    1:3 Implements Annotation Page type key such that 'AnnotationPage' is a value of type - model 5.2--------PASS--
    1:4 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--------PASS--
    1:5 True when Annotation Page has no startIndex key or has startIndex key with valid value of type integer >= 0 - model 5.2--------PASS--
    1:6 True when Annotation Page has no partOf key or has partOf key with valid value oof string of format uri - model 5.2--------FAIL--
    +
    RI: assert_true: ERROR: Annotation Page has an invalid partOf value.; expected true got false
    1:7 True when Annotation Page has no next key or has next key with valid value of string of format uri - model 5.2--------PASS--
    1:8 True when Annotation Page has no prev key or has prev key with valid value of string of format uri - model 5.2--------PASS--
    1:9 Annotation Page total key, if present (inherited from Collection), is a non-negative integer value - model 5.2--------PASS--
    1:10 Annotation Page label key, if present (inherited from Collection), is a value of type string - model 5.2--------PASS--
    1:11 Annotation Page first key (inherited from Collection), if present, has value of string of format uri - model 5.2--------PASS--
    1:12 Annotation Page last key (inherited from Collection), if present, is a single value of format uri - model 5.2--------PASS--
    1:13 If present the Annotation page-level created key has a single value that is of format date-time - model 3.3.1--------PASS--
    1:14 If present the Annotation page-level modified key has a single value that is of format date-time - model 3.3.1--------PASS--
    1:15 If present the Annotation page page-level rights key has values that are all strings of format uri - model 3.3.6--------PASS--
    /annotation-model/collections/pages/pageOptionals-manual.html--------OK--
    1:1 Implements Annotation Page partOf key with valid value of string of format uri - model 5.2--------FAIL--
    +
    RI: assert_true: WARNING: Annotation Page has no partOf key.; expected true got false
    1:2 Implements Annotation Page startIndex key with valid value of type integer >= 0 - model 5.2--------FAIL--
    +
    RI: assert_true: WARNING: Annotation Page has has no valid startIndex value.; expected true got false
    1:3 Implements Annotation Page next key with valid value of string of format uri - model 5.2--------PASS--
    1:4 Implements Annotation Page prev key with valid value of string of format uri - model 5.2--------PASS--
    1:5 Implements Annotation Page label key (inherited from Collection) with valid value - model 5.1--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Annotation Page has no label key (inherited from Collection).; expected true got false
    1:6 Implements Annotation Page last key (inherited from Collection) with valid value - model 5.1--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Annotation Page has no last key (inherited from Collection).; expected true got false
    1:7 Implements Annotation Page total key (inherited from Collection) with valid value - model 5.1--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Annotation Page has no total key (inherited from Collection).; expected true got false
    1:8 Implements Annotation Page first key (inherited from Collection) with valid value - model 5.1--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Annotation Page has no first key (inherited from Collection).; expected true got false
    1:9 Implements Annotation Page-level modified key which has a single value that is a string of format date-time - model 3.3.1--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Valid Annotation Page-level modified key not found. Annotation Page may have zero or exactly one modified key value inherited from Collection.; expected true got false
    1:10 Implements Annotation Page-level creator key which has one or more values, each of which is a string of format uri or an object - model 3.3.1--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Valid Annotation Page-level creator key not found. Annotation Page may have zero or more creators inherited from Collection.; expected true got false
    1:11 Implements Annotation Page-level created key which has a single value that is a string of format date-time - model 3.3.1--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Valid Annotation Page-level created key not found. Annotation Page may have exactly one created key value inherited from Collection.; expected true got false
    1:12 Implements Annotation Page rights key (inherited from Collection) which has one or more values, each of which is a string of format uri - model 3.3.6--------FAIL--
    +
    RI: assert_true: INFORMATIONAL: Annotation Page rights key (inherited from Collection) having string value(s) of format uri not found. Annotation Page may may have zero or more rights key values.; expected true got false
    1:13 Implements Annotation Page-level creator (Agent), inherited from Collection, email_sha1 key with one or more values - model 3.2.2--------PASS--
    1:14 Implements Annotation Page-level creator (Agent), inherited from Collection, email key with one or more values, each of which is a mailto: uri - model 3.2.2--------PASS--
    1:15 Implements Annotation Page-level creator (Agent), inherited from Collection, homepage key with one or more values, each of which is a string of format uri - model 3.2.2--------PASS--
    1:16 Implements Annotation Page-level creator (Agent), inherited from Collection, id key with single value that is a string of format uri - model 3.2.2--------PASS--
    1:17 Implements Annotation Page-level creator (Agent), inherited from Collection, name key with one or more values - model 3.2.2--------PASS--
    1:18 Implements Annotation Page-level creator (Agent), inherited from Collection, nickname key with single value that is a string of format uri - model 3.2.2--------PASS--
    1:19 Implements Annotation Page-level creator (Agent), inherited from Collection, type key with one or more values from model-recommended list (Person, Organization, Software) - model 3.2.2--------PASS--
    @@ -604,7 +309,8 @@

    Test Files

    + + diff --git a/annotation-vocab/analysis.css b/annotation-vocab/analysis.css new file mode 100644 index 0000000..64031c9 --- /dev/null +++ b/annotation-vocab/analysis.css @@ -0,0 +1,82 @@ + +th { + text-align: left; + background: #4a89dc; + color: #fff; +} + +td.FAIL { + background: #da4453; + color: #fff; +} + +td.PASS { + background: #37bc9b; + color: #fff; +} + +td.NOTRUN, td.TIMEOUT, td.undefined { + background: #f6bb42; + color: #fff; +} + +table > tbody > tr > td.NOTRUN, table > tbody > tr > td.TIMEOUT { + padding: 8px 2px; +} + +td.OK { + color: transparent; +} + +td.FAIL, td.PASS, td.NOTRUN, td.TIMEOUT, td.undefined, td.OK { + font-size: 0.7em; + text-align: center; +} + +tr.test { + background: #ccd1d9; +} + +tr.test > td:first-of-type { + font-weight: bold; +} + +tr.test small { + font-weight: normal; +} + +tr.subtest > td:first-of-type { + padding-left: 2em; + max-width: 790px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +tr.messages > td:first-of-type { + width: 100%; + padding-left: 2em; +} + +tr.message > td.ua { + font-weight: bold; + vertical-align: top; + padding-right: 1em; +} + +.floatingHeader { + position: fixed; + top: 0; + visibility: hidden; +} + +.message_toggle { + padding-left: 3em; + display: none; + font-size: 0.7em; + cursor: pointer; +} + +dd { + padding-left: 2em; +} diff --git a/annotation-vocab/bootstrap.min.css b/annotation-vocab/bootstrap.min.css new file mode 100644 index 0000000..72f4794 --- /dev/null +++ b/annotation-vocab/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.panel-body:before,.panel-body:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.panel-body:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}@media print{.hidden-print{display:none !important}} \ No newline at end of file diff --git a/annotation-vocab/complete-fails.html b/annotation-vocab/complete-fails.html new file mode 100644 index 0000000..376d3b7 --- /dev/null +++ b/annotation-vocab/complete-fails.html @@ -0,0 +1,31 @@ + + + + + Annotation Vocabulary: Complete Failures + + + + +
    +
    +

    Annotation Vocabulary: Complete Failures

    +
    +

    For an explanation of the implementation codes and other conventions used in this report, see +the README file.

    + +

    Completely failed files: 0; Completely failed subtests: 0; Failure level: 0/6 (0.00%)

    +

    Test Files

    +
      + + + +
      Test Show/Hide MessagesPY01RU01
      +
      + + + + + diff --git a/annotation-vocab/consolidated.json b/annotation-vocab/consolidated.json new file mode 100644 index 0000000..b375146 --- /dev/null +++ b/annotation-vocab/consolidated.json @@ -0,0 +1,146 @@ +{ + "ua": [ + "PY01", + "RU01" + ], + "results": { + "/annotation-vocab/01-validJSON-LD-manual.html": { + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + }, + "subtests": { + "/annotation-vocab/01-validJSON-LD-manual.html": { + "stNum": 0, + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + } + } + } + }, + "/annotation-vocab/02-context-to-triples-manual.html": { + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + }, + "subtests": { + "/annotation-vocab/02-context-to-triples-manual.html": { + "stNum": 0, + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + } + } + } + }, + "/annotation-vocab/03-graphs-are-isomorphic-manual.html": { + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + }, + "subtests": { + "/annotation-vocab/03-graphs-are-isomorphic-manual.html": { + "stNum": 0, + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + } + } + } + }, + "/annotation-vocab/04-graphs-convert-lossless-manual.html": { + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + }, + "subtests": { + "/annotation-vocab/04-graphs-convert-lossless-manual.html": { + "stNum": 0, + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + } + } + } + }, + "/annotation-vocab/05-ontology-parsed-as-valid-manual.html": { + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + }, + "subtests": { + "/annotation-vocab/05-ontology-parsed-as-valid-manual.html": { + "stNum": 0, + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + } + } + } + }, + "/annotation-vocab/06-ontology-internally-consistent-manual.html": { + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + }, + "subtests": { + "/annotation-vocab/06-ontology-internally-consistent-manual.html": { + "stNum": 0, + "byUA": { + "PY01": "PASS", + "RU01": "PASS" + }, + "UAmessage": {}, + "totals": { + "PASS": 2 + } + } + } + } + } +} \ No newline at end of file diff --git a/annotation-vocab/jquery.min.js b/annotation-vocab/jquery.min.js new file mode 100644 index 0000000..cbe6abe --- /dev/null +++ b/annotation-vocab/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m=a.document,n="2.1.0",o=function(a,b){return new o.fn.init(a,b)},p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};o.fn=o.prototype={jquery:n,constructor:o,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=o.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return o.each(this,a,b)},map:function(a){return this.pushStack(o.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},o.extend=o.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||o.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(o.isPlainObject(d)||(e=o.isArray(d)))?(e?(e=!1,f=c&&o.isArray(c)?c:[]):f=c&&o.isPlainObject(c)?c:{},g[b]=o.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},o.extend({expando:"jQuery"+(n+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===o.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isPlainObject:function(a){if("object"!==o.type(a)||a.nodeType||o.isWindow(a))return!1;try{if(a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=o.trim(a),a&&(1===a.indexOf("use strict")?(b=m.createElement("script"),b.text=a,m.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":k.call(a)},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?o.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),o.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||o.guid++,f):void 0},now:Date.now,support:l}),o.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=o.type(a);return"function"===c||o.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
      ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);o.find=t,o.expr=t.selectors,o.expr[":"]=o.expr.pseudos,o.unique=t.uniqueSort,o.text=t.getText,o.isXMLDoc=t.isXML,o.contains=t.contains;var u=o.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(o.isFunction(b))return o.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return o.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return o.filter(b,a,c);b=o.filter(b,a)}return o.grep(a,function(a){return g.call(b,a)>=0!==c})}o.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?o.find.matchesSelector(d,a)?[d]:[]:o.find.matches(a,o.grep(b,function(a){return 1===a.nodeType}))},o.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(o(a).filter(function(){for(b=0;c>b;b++)if(o.contains(e[b],this))return!0}));for(b=0;c>b;b++)o.find(a,e[b],d);return d=this.pushStack(c>1?o.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?o(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=o.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof o?b[0]:b,o.merge(this,o.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:m,!0)),v.test(c[1])&&o.isPlainObject(b))for(c in b)o.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=m.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=m,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):o.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(o):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),o.makeArray(a,this))};A.prototype=o.fn,y=o(m);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};o.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&o(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),o.fn.extend({has:function(a){var b=o(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(o.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?o(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&o.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?o.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(o(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(o.unique(o.merge(this.get(),o(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}o.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return o.dir(a,"parentNode")},parentsUntil:function(a,b,c){return o.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return o.dir(a,"nextSibling")},prevAll:function(a){return o.dir(a,"previousSibling")},nextUntil:function(a,b,c){return o.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return o.dir(a,"previousSibling",c)},siblings:function(a){return o.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return o.sibling(a.firstChild)},contents:function(a){return a.contentDocument||o.merge([],a.childNodes)}},function(a,b){o.fn[a]=function(c,d){var e=o.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=o.filter(d,e)),this.length>1&&(C[a]||o.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return o.each(a.match(E)||[],function(a,c){b[c]=!0}),b}o.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):o.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){o.each(b,function(b,c){var d=o.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&o.each(arguments,function(a,b){var c;while((c=o.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?o.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},o.extend({Deferred:function(a){var b=[["resolve","done",o.Callbacks("once memory"),"resolved"],["reject","fail",o.Callbacks("once memory"),"rejected"],["notify","progress",o.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return o.Deferred(function(c){o.each(b,function(b,f){var g=o.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&o.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?o.extend(a,d):d}},e={};return d.pipe=d.then,o.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&o.isFunction(a.promise)?e:0,g=1===f?a:o.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&o.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;o.fn.ready=function(a){return o.ready.promise().done(a),this},o.extend({isReady:!1,readyWait:1,holdReady:function(a){a?o.readyWait++:o.ready(!0)},ready:function(a){(a===!0?--o.readyWait:o.isReady)||(o.isReady=!0,a!==!0&&--o.readyWait>0||(H.resolveWith(m,[o]),o.fn.trigger&&o(m).trigger("ready").off("ready")))}});function I(){m.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),o.ready()}o.ready.promise=function(b){return H||(H=o.Deferred(),"complete"===m.readyState?setTimeout(o.ready):(m.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},o.ready.promise();var J=o.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===o.type(c)){e=!0;for(h in c)o.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,o.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(o(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};o.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=o.expando+Math.random()}K.uid=1,K.accepts=o.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,o.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(o.isEmptyObject(f))o.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,o.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{o.isArray(b)?d=b.concat(b.map(o.camelCase)):(e=o.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!o.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?o.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}o.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),o.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length; +while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=o.camelCase(d.slice(5)),P(f,d,e[d]));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=o.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),o.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||o.isArray(c)?d=L.access(a,b,o.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=o.queue(a,b),d=c.length,e=c.shift(),f=o._queueHooks(a,b),g=function(){o.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:o.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),o.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";l.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return m.activeElement}catch(a){}}o.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=o.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof o!==U&&o.event.triggered!==b.type?o.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],n=q=h[1],p=(h[2]||"").split(".").sort(),n&&(l=o.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=o.event.special[n]||{},k=o.extend({type:n,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&o.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(n,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),o.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],n=q=h[1],p=(h[2]||"").split(".").sort(),n){l=o.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||o.removeEvent(a,n,r.handle),delete i[n])}else for(n in i)o.event.remove(a,n+b[j],c,d,!0);o.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,p=[d||m],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||m,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+o.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[o.expando]?b:new o.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:o.makeArray(c,[b]),n=o.event.special[q]||{},e||!n.trigger||n.trigger.apply(d,c)!==!1)){if(!e&&!n.noBubble&&!o.isWindow(d)){for(i=n.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||m)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:n.bindType||q,l=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),l&&l.apply(g,c),l=k&&g[k],l&&l.apply&&o.acceptData(g)&&(b.result=l.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||n._default&&n._default.apply(p.pop(),c)!==!1||!o.acceptData(d)||k&&o.isFunction(d[q])&&!o.isWindow(d)&&(h=d[k],h&&(d[k]=null),o.event.triggered=q,d[q](),o.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=o.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=o.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=o.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((o.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?o(e,this).index(i)>=0:o.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return o.nodeName(a,"table")&&o.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)o.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=o.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&o.nodeName(a,b)?o.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}o.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=o.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||o.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,n=a.length;n>m;m++)if(e=a[m],e||0===e)if("object"===o.type(e))o.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;o.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===o.inArray(e,d))&&(i=o.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f,g,h=o.event.special,i=0;void 0!==(c=a[i]);i++){if(o.acceptData(c)&&(f=c[L.expando],f&&(b=L.cache[f]))){if(d=Object.keys(b.events||{}),d.length)for(g=0;void 0!==(e=d[g]);g++)h[e]?o.event.remove(c,e):o.removeEvent(c,e,b.handle);L.cache[f]&&delete L.cache[f]}delete M.cache[c[M.expando]]}}}),o.fn.extend({text:function(a){return J(this,function(a){return void 0===a?o.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?o.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||o.cleanData(ob(c)),c.parentNode&&(b&&o.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(o.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return o.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(o.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,o.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,n=k-1,p=a[0],q=o.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(c=o.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=o.map(ob(c,"script"),kb),g=f.length;k>j;j++)h=c,j!==n&&(h=o.clone(h,!0,!0),g&&o.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,o.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&o.contains(i,h)&&(h.src?o._evalUrl&&o._evalUrl(h.src):o.globalEval(h.textContent.replace(hb,"")))}return this}}),o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){o.fn[a]=function(a){for(var c,d=[],e=o(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),o(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d=o(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:o.css(d[0],"display");return d.detach(),e}function tb(a){var b=m,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||o("