Skip to content

Commit ef3d24d

Browse files
author
Rob Sanderson
committed
update body and target to require single json object, including aggregate constructions
1 parent 158fca5 commit ef3d24d

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

source/presentation/4.0/model.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ A Choice _MAY_ have the following properties: [id](#id), [metadata](#metadata),
492492

493493
> `"type": "Composite"`
494494
495-
A Composite is a construction where all of the resources are required for , as opposed to Choice where the client selects only one of the items.
495+
A Composite is a Web Annotation construction where all of the resources are required for the correct interpretation of the set of resources in the context of the Annotation, as opposed to Choice where the client selects only one of the items or allows the user to make that selection. For Composite, the client should present all of the resources listed in the `items` property, however order or priority is not specified. For example, if a Composite is used as the `target` of a commenting Annotation, then it is the unordered set of resources that is being commented on.
496496

497497
__Properties__<br/>
498498
A Composite _MUST_ have the following properties: [type](#type), [items](#items)<br/><br/>
@@ -505,6 +505,8 @@ A Composite _MAY_ have the following properties: [id](#id), [metadata](#metadata
505505

506506
> `"type": "List"`
507507
508+
A List is a Web Annotation construction where all of the resources are required, in the given order, for the correct interpretation of the set. For example, if a List is used as the `target` of a commenting Annotation, then it is the ordered list of resources that are being commented on, rather than each independently.
509+
508510
__Properties__<br/>
509511
A List _MUST_ have the following properties: [type](#type), [items](#items)<br/><br/>
510512
A List _SHOULD_ have the following properties: [label](#label)<br/><br/>
@@ -516,6 +518,8 @@ A List _MAY_ have the following properties: [id](#id), [metadata](#metadata), [s
516518

517519
> `"type": "Independents"`
518520
521+
An independents is a Web Annotation construction where each of the resources independently participates in the annotation, rather than as a set. For example, if an Independents is used as the `target` of a commenting Annotation, then the body resource is about each of the entries in `items` separately, rather than the collection as a single entity. In the Web Annotation Data Model this is equivalent to having multiple independent bodies or targets listed directly in the Annotation, however this specification requires a single resource for both body and target.
522+
519523
__Properties__<br/>
520524
An Independents _MUST_ have the following properties: [type](#type), [items](#items)<br/><br/>
521525
An Independents _SHOULD_ have the following properties: [label](#label)<br/><br/>
@@ -1352,23 +1356,21 @@ The value _MUST_ be an array of strings.
13521356
### body
13531357
{: #body}
13541358

1355-
The list of bodies of an Annotation. As there _MAY_ be more than one body, the value _MUST_ be an array, even though the W3C specification does not require this. The resources listed in `body` can be instances of `TextualBody`, `SpecificResource`, core Structural Resources, or Content Resources.
1359+
The body of an Annotation. The resources listed in `body` can be instances of `TextualBody`, `SpecificResource`, core Structural Resources, Content Resources, or the Annotation aggregate constructions of `Choice`, `Composite`, `List` and `Independents` if there are multiple bodies.
13561360

13571361
Some Annotations do not have bodies at all. For example a highlighting annotation only needs to visually highlight the region targeted. Note that use of the W3C `bodyValue` property is prohibited in IIIF, and the `TextualBody` class _MUST_ be used instead.
13581362

13591363
For more information about Annotation bodies, see the [W3C Annotation Model](https://www.w3.org/TR/annotation-model/#bodies-and-targets).
13601364

1361-
The value _MUST_ be an array of JSON objects. Each item _MUST_ have the `type` property. Referenced resources _MUST_ have the `id` property.
1365+
The value _MUST_ be a JSON object. Each item _MUST_ have the `type` property. Referenced resources _MUST_ have the `id` property, which _MAY_ have a fragment component such as `#xywh=`. Aggregate constructions _MUST_ have the `items` property.
13621366

13631367
* An Annotation _SHOULD_ have the `body` property.<br/>
13641368
Clients _MUST_ process the `body` property on Annotations.
13651369

13661370
{% include api/code_header.html %}
13671371
``` json-doc
13681372
{ "body":
1369-
[
1370-
{"type": "TextualBody", "value": "Great!"}
1371-
]
1373+
{"type": "TextualBody", "value": "Great!"}
13721374
}
13731375
```
13741376

@@ -2749,18 +2751,20 @@ The value _MUST_ be a JSON object, which _MUST_ have the `id` and `type` propert
27492751
### target
27502752
{: #target}
27512753

2752-
The list of targets of an Annotation. As there _MAY_ be more than one target, the value _MUST_ be an array, even though the W3C specification does not require this. The resources listed in `target` can be instances of `SpecificResource`, core Structural Resources, or Content Resources.
2754+
The target of an Annotation. The resources listed in `target` can be instances of `SpecificResource`, core Structural Resources, Content Resources, or one of the aggregate constructions of `Choice`, `Composite`, `List` and `Independents` if there are multiple targets.
27532755

27542756
For more information about Annotation targets, see the [W3C Annotation Model](https://www.w3.org/TR/annotation-model/#bodies-and-targets).
27552757

2756-
The value _MUST_ be an array. Each item _MUST_ be a JSON object with the `type` property, and referenced resources _MUST_ also have the `id` property.
2758+
The value _MUST_ be a JSON Object. It _MUST_ have the `type` property. Referenced resources _MUST_ have the `id` property, which _MAY_ have a fragment component such as `#xywh=`. Aggregate constructions _MUST_ have the `items` property.
27572759

27582760
* An Annotation _MUST_ have the `target` property.<br/>
27592761
Clients _MUST_ process the `target` property on Annotations.
27602762

27612763
{% include api/code_header.html %}
27622764
``` json-doc
2763-
{ "target": [ { "id": "https://example.org/iiif/1/canvas/1", "type": "Canvas" } ] }
2765+
{ "target":
2766+
{ "id": "https://example.org/iiif/1/canvas/1", "type": "Canvas" }
2767+
}
27642768
```
27652769

27662770

0 commit comments

Comments
 (0)