Skip to content

Commit 983b580

Browse files
authored
Merge pull request #2384 from IIIF/rob_1029
Rob 10/29
2 parents 71ee79c + 6291086 commit 983b580

File tree

3 files changed

+135
-59
lines changed

3 files changed

+135
-59
lines changed
-158 KB
Binary file not shown.

source/presentation/4.0/model.md

Lines changed: 135 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -495,16 +495,29 @@ The Web Annotation Data Model defines several Selectors, which describe how to f
495495

496496
> `"type": "FragmentSelector"`
497497
498-
FIXME: import from WADM
498+
Fragment Selectors use the fragment part of the URI specification to define a selection mechanism for parts of resources. The definition of the representation's media type specifies the structure of the value of the fragment. This is commonly used in IIIF to include the media fragment syntax of `xywh=<x>,<y>,<width>,<height>` to define a 2 dimension region.
499+
500+
For more information about Fragment Selectors, see the [Web Annotation Data Model](https://www.w3.org/TR/annotation-model/#fragment-selector).
501+
502+
__Properties__<br/>
503+
A Fragment Selector _MUST_ have the following properties: [type](#type), and [value](#value)<br/><br/>
504+
A Fragment Selector _MAY_ have the following properties: [id](#id) and [conformsTo](#conformsTo).<br/><br/>
505+
{: .note}
499506

500507

501508
#### SvgSelector
502509
{: #SvgSelector}
503510

504511
> `"type": "SvgSelector"`
505512
513+
SVG Selectors use the [SVG specification](https://www.w3.org/TR/SVG11/) to define a non-rectangular part of a resource. This allows for polygons, circles and multiple shapes to be used to highlight or otherwise select regions of images or other 2 dimensional resources.
506514

507-
FIXME: import from WADM
515+
For more information about SVG Selectors, see the [Web Annotation Data Model](https://www.w3.org/TR/annotation-model/#svg-selector).
516+
517+
__Properties__<br/>
518+
An SVG Selector _MUST_ have the following properties: [type](#type), and [value](#value).<br/><br/>
519+
A Fragment Selector _MAY_ have the following properties: [id](#id).<br/><br/>
520+
{: .note}
508521

509522

510523
#### Point Selector
@@ -1226,7 +1239,7 @@ Disjoint with `thumbnail-nav` and `no-nav`.|
12261239
| `thumbnail-nav`{: style="white-space:nowrap;"} | Valid only on Ranges. Ranges that have this behavior _MAY_ be used by the client to present an alternative navigation or overview based on thumbnails, such as regular keyframes along a timeline for a video, or sections of a long scroll. Clients _SHOULD NOT_ use them to generate a conventional table of contents. Child Ranges of a Range with this behavior _MUST_ have a suitable `thumbnail` property. Disjoint with `sequence` and `no-nav`.|
12271240
| `no-nav` | Valid only on Ranges. Ranges that have this behavior _MUST NOT_ be displayed to the user in a navigation hierarchy. This allows for Ranges to be present that capture unnamed regions with no interesting content, such as the set of blank pages at the beginning of a book, or dead air between parts of a performance, that are still part of the Manifest but do not need to be navigated to directly. Disjoint with `sequence` and `thumbnail-nav`.|
12281241
| | **Miscellaneous Behaviors** |
1229-
| `hidden` | Valid on Annotation Collections, Annotation Pages, Annotations, Specific Resources, Lights, Cameras and Choices. If this behavior is provided, then the client _SHOULD NOT_ render the resource by default, but allow the user to turn it on and off. This behavior does not inherit, as it is not valid on Collections, Manifests, Ranges or Canvases. |
1242+
| `hidden`{: #hidden-value} | Valid on Annotation Collections, Annotation Pages, Annotations, Specific Resources, Lights, Cameras and Choices. If this behavior is provided, then the client _SHOULD NOT_ render the resource by default, but allow the user to turn it on and off. This behavior does not inherit, as it is not valid on Collections, Manifests, Ranges or Canvases. |
12301243
{: .api-table #table-behavior}
12311244

12321245
{% include api/code_header.html %}
@@ -2075,13 +2088,36 @@ The value of the quality parameter in the IIIF Image API URL structure, as recor
20752088
{ "quality": "default" }
20762089
```
20772090

2091+
### quantity
2092+
2093+
The `quantity` property of a Unit Value conveys its numerical component.
2094+
2095+
The value _MUST_ be a floating point number.
2096+
2097+
* A UnitValue _MUST_ have the `quantity` property.<br/>
2098+
Clients _MUST_ process the `quantity` property on a Unit Value.
2099+
2100+
{% include api/code_header.html %}
2101+
``` json-doc
2102+
{ "quantity": 0.1234123 }
2103+
```
2104+
20782105
### refinedBy
20792106
{: #refinedBy}
20802107

2081-
FIXME: import from WADM
2108+
The `refinedBy` property allows Selectors to be chained together to incrementally select more specific aspects of the resource given in `source` on the Specific Resource. The first selector on a Specific Resource describes how to select part of the main resource, and a subsequent selector in `refinedBy` then describes how to further select part of that part. This can be used, for example, to extract a rectangular region with a `FragmentSelector` and then further refine that region with an `SvgSelector` or `WktSelector`.
20822109

2110+
For more information about `refinedBy`, please see the [Web Annotation Data Model](https://www.w3.org/TR/annotation-model/#refinement-of-selection).
20832111

2112+
The value of the `refinedBy` property _MUST_ be a JSON Object, which _MUST_ describe a Selector.
20842113

2114+
* A Selector _MAY_ have the `refinedBy` property with exactly one value.<br/>
2115+
Clients _SHOULD_ process the `refinedBy` property on Selectors.
2116+
2117+
{% include api/code_header.html %}
2118+
``` json-doc
2119+
{ "refinedBy": { "type": "WktSelector", "wktLiteral": "POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))" } }
2120+
```
20852121

20862122

20872123
### region
@@ -2317,7 +2353,7 @@ The value _MUST_ be an array of JSON objects. Each object _MUST_ be a service re
23172353

23182354
The value of the size parameter in the IIIF Image API URL structure, as recorded in an Image API Selector.
23192355

2320-
* The IIIF Image API Selector _MAY_ have the `size` property with exactly one value.<br/>
2356+
* A IIIF Image API Selector _MAY_ have the `size` property with exactly one value.<br/>
23212357
Clients _MUST_ process the `size` property on a IIIF Image API Selector.
23222358
* Other types of resource _MUST NOT_ have the `size` property.<br/>
23232359
Clients _MUST_ ignore the `size` property on other types of resource.
@@ -2330,9 +2366,21 @@ The value of the size parameter in the IIIF Image API URL structure, as recorded
23302366
### source
23312367
{: #source}
23322368

2333-
SpecificResource
2369+
The `source` property refers to the URI of the resource that the Specific Resource is a more constrained version or representation of.
2370+
2371+
For more information about source and Specific Resources, see the [W3C Annotation Model](For more information about Annotation bodies, see the [W3C Annotation Model](https://www.w3.org/TR/annotation-model/#bodies-and-targets).
2372+
2373+
The value _MUST_ be a string, and the value _MUST_ be a URI.
23342374

2335-
FIXME: import from WADM
2375+
* A SpecificResource _MUST_ have the `source` property with exactly one value.<br/>
2376+
Clients _MUST_ process the `source` property on a SpecificResource.
2377+
* Other types of resource _MUST NOT_ have the `source` property.<br/>
2378+
Clients _MUST_ ignore the `source` property on other types of resource.
2379+
2380+
{% include api/code_header.html %}
2381+
``` json-doc
2382+
{ "source": "https://example.org/museum/images/1" }
2383+
```
23362384

23372385

23382386
### spatialScale
@@ -2400,7 +2448,14 @@ The value _MUST_ be a JSON object, which _MUST_ have the `id` and `type` propert
24002448
### startIndex
24012449
{: #startIndex}
24022450

2403-
FIXME
2451+
A non-negative, 0-based integer value identifying the relative position of the first entry in the `items` list of a Collection Page or Annotation Collection Page within the overall logical order of its parent Collection or Annotation Collection. If this is the second page, and there are 100 entries on the first page, then the value is 100 (the first page contains entries 0 through 99 inclusive).
2452+
2453+
The value of `startIndex` must be an integer greater than -1.
2454+
2455+
* An Annotation Page _MAY_ have the `startIndex` property.<br/>
2456+
Clients _MAY_ process `startIndex` on an Annotation Page.
2457+
* A Collection Page _MAY_ have the `startIndex` property.<br/>
2458+
Clients _MAY_ process `startIndex` on a Collection Page.
24042459

24052460

24062461
### structures
@@ -2431,12 +2486,15 @@ The value _MUST_ be an array of JSON objects. Each item _MUST_ have the `id` and
24312486
### styleClass
24322487
{: #styleClass}
24332488

2434-
FIXME: Import from WADM
2489+
The name of a CSS class to apply when rendering the Specific Resource it is associated with.
2490+
2491+
FIXME: Get rid of styles completely???
24352492

24362493
### stylesheet
24372494
{: #stylesheet}
24382495

2439-
FIXME: Import from WADM
2496+
FIXME: Delete???
2497+
24402498

24412499
### summary
24422500
{: #summary}
@@ -2479,8 +2537,19 @@ The value _MUST_ be a JSON object, which _MUST_ have the `id` and `type` propert
24792537
### target
24802538
{: #target}
24812539

2482-
FIXME: Import from WADM
2540+
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.
2541+
2542+
For more information about Annotation targets, see the [W3C Annotation Model](https://www.w3.org/TR/annotation-model/#bodies-and-targets).
24832543

2544+
The value _MUST_ be an array of JSON objects.
2545+
2546+
* An Annotation _MUST_ have the `target` property.<br/>
2547+
Clients _MUST_ process the `target` property on Annotations.
2548+
2549+
{% include api/code_header.html %}
2550+
``` json-doc
2551+
{ "target": [ { "id": "https://example.org/iiif/1/canvas/1", "type": "Canvas" } ] }
2552+
```
24842553

24852554

24862555
### temporalScale
@@ -2490,6 +2559,14 @@ A single UnitValue that defines a multiplier or scale factor for the `duration`
24902559

24912560
To assert a `temporalScale` for a Content Resource, the resource _MUST_ first be painted into a Container with a `duration` and the `temporalScale` is asserted on that Container. For example, an Audio file is painted into a Timeline, and then `temporalScale` is asserted on the Timeline.
24922561

2562+
* A Timeline _MAY_ have the `temporalScale` property.<br/>
2563+
Clients _MAY_ process `temporalScale` on a Timeline.
2564+
* A Canvas _MAY_ have the `temporalScale` property.<br/>
2565+
Clients _MAY_ process `temporalScale` on a Canvas.
2566+
* A Scene _MAY_ have the `temporalScale` property.<br/>
2567+
Clients _MAY_ process `temporalScale` on a Scene.
2568+
2569+
24932570
{% include api/code_header.html %}
24942571
``` json-doc
24952572
{
@@ -2502,14 +2579,6 @@ To assert a `temporalScale` for a Content Resource, the resource _MUST_ first be
25022579
}
25032580
```
25042581

2505-
* A Timeline _MAY_ have the `temporalScale` property.<br/>
2506-
Clients _MAY_ process `temporalScale` on a Timeline.
2507-
* A Canvas _MAY_ have the `temporalScale` property.<br/>
2508-
Clients _MAY_ process `temporalScale` on a Canvas.
2509-
* A Scene _MAY_ have the `temporalScale` property.<br/>
2510-
Clients _MAY_ process `temporalScale` on a Scene.
2511-
2512-
25132582
### thumbnail
25142583
{: #thumbnail}
25152584

@@ -2578,6 +2647,8 @@ The value of this property _MUST_ be a non-negative integer.
25782647

25792648
* An AnnotationCollection _SHOULD_ have the `total` property.<br/>
25802649
Clients _SHOULD_ process the `total` property on an AnnotationCollection.
2650+
* A Collection with Collection Pages _SHOULD_ have the `total` property.<br/>
2651+
Clients _SHOULD_ process the `total` property on a Collection.
25812652

25822653
{% include api/code_header.html %}
25832654
``` json-doc
@@ -2639,7 +2710,6 @@ The value _MUST_ be a string.
26392710
!!! note
26402711
For compatibility with previous versions, clients _SHOULD_ accept `Sound` as a synonym for `Audio`.
26412712

2642-
26432713
{% include api/code_header.html %}
26442714
``` json-doc
26452715
{ "type": "Image" }
@@ -2663,57 +2733,39 @@ FIXME: possible values are 'm' and 's' and 'relative'. Is relative always 0-1.0
26632733

26642734
### value
26652735

2666-
the `value` property is used as a language mapped key value pair where the langauge key string is always an array.
2736+
The `value` property is used in several situations to convey a value of a resource. The value is always string-based, however the strings might be wrapped in the language map construction.
26672737

2668-
```json
2669-
{
2670-
"label":
2671-
"value": {
2672-
"en": ["foo"]
2673-
}
2674-
}
2675-
```
2676-
TODO: if we are happy with the new value property names we need to update references in the rest of the Model doc and Index doc
2677-
2678-
### quantity
2679-
2680-
The `quantity` property of a UnitValue represents the numerical component of a `UnitValue`.
2738+
In the `metadata` and `requiredStatement` properties, the `value` property is used to record the text of the metadata field or statement. The value of the property in this case is a [language map](#language-of-property-values) represented as a JSON object, as previously described.
26812739

2682-
The value _MUST_ be a floating point number.
2740+
Many selector classes use `value` to convey a string representation of the selection definition, such as `FragmentSelector` and `WktSelector`. The `TextualBody` similarly uses `value` to convey the string of the body of an Annotation. In these cases the value of `value` _MUST_ be a string.
26832741

2684-
* A UnitValue _MUST_ have the `value` property.
26852742

2686-
`"quantity": 0.1234123`
2687-
2688-
### wktLiteral
2689-
2690-
the `wktLiteral` property of a WktSelector is a string for representing space in vector geometry. a `wktLiteral` of a WktSelector _MUST_ be a valid structured Well-Known Text (WKT) string.
2691-
2692-
`"wktLiteral": "POLYGON Z ((0 1 0, 0 0 0, 1 0 0, 1 1 0))"`
2693-
2694-
### value (TextualBody)
2695-
2696-
a `value` of a TextualBody follows the Web Annotation data model and _MUST NOT_ be a language mapped string. Instead the string value and the language of the string are represeted by separate properties.
2743+
Language Map `value`:
2744+
{% include api/code_header.html %}
2745+
```json-doc
2746+
{"value": { "en": [ "Example Description" ]}}
2747+
```
26972748

2698-
```json
2699-
{
2700-
"body": {
2701-
"id": "https://example.org/iiif/presentation/examples/manifest-with-containers/bodies/koto-body",
2702-
"type": "TextualBody",
2703-
"value": "Koto with a cover being carried",
2704-
"language": "en",
2705-
"format": "text/plain"
2706-
}
2707-
}
2749+
Selector or TextualBody `value`:
2750+
{% include api/code_header.html %}
2751+
```json-doc
2752+
{ "value": "Example Textual Body" }
27082753
```
27092754

2755+
27102756
### via
27112757

2712-
The `via` property of a resource _MAY_ be used to indicate the URI that is the source from which the current resource was obtained. The `via` URI _MUST_ be different from the URI in `id`, but _MAY_ be the same as the URI in `canonical` if it is present. Recording `via` allows servers to provide access to modified versions of other resources, while still providing the provenance of the resource.
2758+
The `via` property of a resource _MAY_ be used to indicate one or more URIs which are the chain of sources from which the current resource was obtained. Each URI in the `via` list _MUST_ be different from the URI in `id`, but _MAY_ be the same as the URI in `canonical` if it is present. Recording `via` allows servers to provide the provenance chain of the resource, regardless of how many copy operations have occurred in the past.
27132759

2760+
The value of the `via` property _MUST_ be an array of strings, and each string _MUST_ be a valid URI.
27142761

2715-
FIXME: finish
2762+
* Any resource _MAY_ have the `via` property.<br/>
2763+
Clients _SHOULD_ process `via` on any resource.
27162764

2765+
{% include api/code_header.html %}
2766+
``` json-doc
2767+
{ "via": [ "https://example.com/manifests/6" ] }
2768+
```
27172769

27182770

27192771
### viewingDirection
@@ -2762,6 +2814,12 @@ The `value` property of the UnitValue _MUST_ be between 0.0 and 1.0.
27622814
* Audio resource types _SHOULD_ have the `volume` property.<br/>
27632815
Clients _SHOULD_ process the `volume` property on an Audio resource.
27642816

2817+
{% include api/code_header.html %}
2818+
``` json-doc
2819+
{ "volume": { "unit": "relative", "value": 0.5 } }
2820+
```
2821+
2822+
27652823
### width
27662824
{: #width}
27672825

@@ -2787,17 +2845,33 @@ The value _MUST_ be a positive integer.
27872845
A number (floating point or integer) giving the x coordinate of the point, relative to the dimensions of the source resource
27882846

27892847

2848+
{% include api/code_header.html %}
2849+
``` json-doc
2850+
{ "x": 100 }
2851+
```
2852+
27902853
### y
27912854
{: #y}
27922855

27932856
A number (floating point or integer) giving the y coordinate of the point, relative to the dimensions of the source resource
27942857

2858+
2859+
2860+
{% include api/code_header.html %}
2861+
``` json-doc
2862+
{ "y": 100 }
2863+
```
2864+
27952865
### z
27962866
{: #z}
27972867

27982868
A number (floating point) giving the z coordinate of the point, relative to the dimensions of the source resource
27992869

28002870

2871+
{% include api/code_header.html %}
2872+
``` json-doc
2873+
{ "z": 100 }
2874+
```
28012875

28022876
### 3.5. Values
28032877

@@ -2859,3 +2933,5 @@ The JSON-LD keywords `@id`, `@type` and `@none` are mapped to `id`, `type` and `
28592933
### Registries of Values
28602934

28612935
FIXME: Describe the registries
2936+
2937+
{: #scrolly-mc-scroll-face}
158 KB
Loading

0 commit comments

Comments
 (0)