Skip to content

Commit 2807d5d

Browse files
authored
Merge pull request #638 from IIIF/0027-alternative-page-order
0027 alternative page order
2 parents eb5a900 + 66b40ce commit 2807d5d

File tree

4 files changed

+306
-1
lines changed

4 files changed

+306
-1
lines changed

_includes/links.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
[0035]: {{site.baseurl}}/recipe/0035-foldouts/ "Foldouts, Flaps, and Maps"
2626
[0036]: {{site.baseurl}}/recipe/0036-composition-from-multiple-images/ "Composition from Multiple Images"
2727
[0026]: {{ site.cookbook_url | absolute_url }}/recipe/0026-toc-opera/ "Table of Contents for A/V Content"
28+
[0027]: {{ site.cookbook_url | absolute_url }}/recipe/0027-alternative-page-order/ "Alternative Page Sequences"
2829
[0029]: {{ site.cookbook_url | absolute_url }}/recipe/0029-metadata-anywhere/ "Metadata on any Resource"
2930
[0030]: {{ site.cookbook_url | absolute_url }}/recipe/0030-multi-volume/ "Multi-volume Work with Individually-bound Volumes"
3031
[0031]: {{ site.cookbook_url | absolute_url }}/recipe/0031-bound-multivolume/ "Multiple Volumes in a Single Bound Volume"

index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ _(leading on to segmentation examples later)_
105105
* table of contents (ranges) - articles in a newspaper
106106
* [Table of contents for A/V content][0026] (26)
107107
* [Adding Thumbnail Navigation and `no-nav` to a Video Resource][0229]
108-
* Alternative Sequence (via `sequence` Range) (20,22,23)
108+
* [Alternative Page Sequences][0027]
109109
* `sequence` Range with partial canvases
110110

111111
## Higher-level structure
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
title: Alternative Page Sequences
3+
id: 27
4+
layout: recipe
5+
tags: [book, presentation]
6+
summary: "Using Ranges to offer alternative orderings of book pages."
7+
viewers:
8+
topic:
9+
- structure
10+
---
11+
12+
## Use Case
13+
14+
A book may contain pages in the incorrect order; for example, a codex that was rebound at some point in history may have certain folios or quires accidentally misplaced. You want to digitally represent the book object in its current order while offering users the option to browse its contents in the intended order.
15+
16+
## Implementation Notes
17+
18+
In [Presentation API 3.0](https://iiif.io/api/presentation/3.0/#54-range), setting a Range’s `behavior` value to `sequence` allows you to define a specific viewing order for Canvases that differs from the default order in the Manifest’s `items` property. Such Ranges must be directly within the `structures` property of the Manifest and must not be referenced or embedded within other Ranges ([see specification](https://iiif.io/api/presentation/3.0/#54-range)). When `behavior` is set to `sequence`, user interfaces that interact with this order should use the order within the selected Range, rather than the default order of items.
19+
20+
There may be more than one Range, each representing an alternative sequence of items (such as different orderings of book pages). The first Range should act as the default ordering, and any additional Ranges should be available for the user to select. For a IIIF viewer to display the selectable Ranges, each Range should have a `label`.
21+
22+
If reordering the Canvases affects the reading layout or direction, properties can be set on the Range (such as `viewingDirection` or other [valid behaviors](https://iiif.io/api/presentation/3.0/#behavior) besides `sequence`) to override those inherited from the Manifest.
23+
24+
## Example
25+
26+
These manuscript folios are an excerpt from the original draft of the 1895 novel _Piccolo mondo antico_ by novelist and Nobel Prize nominee for Literature, Antonio Fogazzaro. The pencil numbering in the upper right of each page (171r–172v) follows the bifolio's physical order, but does not correspond to the author's intended sequence, which he noted in ink: 384 (171v), 385 (172r), [386] (172v), 387 (171r).
27+
28+
Two Ranges are provided within the `structures` to represent this case study. From the two Ranges with the `behavior` value `sequence`, the first Range should be used as the navigation default, and the other should be selectable via its supplied `label`.
29+
30+
Images provided by permission of Biblioteca Civica Bertoliana.
31+
32+
{% include manifest_links.html viewers="" manifest="manifest.json" %}
33+
34+
{% include jsonviewer.html src="manifest.json" config='data-line="200-261"' %}
35+
36+
## Related Recipes
37+
38+
* [Simple Manifest - Book][0009] shows an example where the order of the pages follows the order in the `items` property.
39+
* [Table of Contents for Book Chapters][0024] shows how to use Ranges to create a table of contents rather than to represent alternative orders.
40+
41+
{% include acronyms.md %}
42+
{% include links.md %}
Lines changed: 262 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,262 @@
1+
{
2+
"@context": "http://iiif.io/api/presentation/3/context.json",
3+
"id": "{{ id.url }}",
4+
"type": "Manifest",
5+
"label": {
6+
"en": [
7+
"Alternative Page Sequences"
8+
]
9+
},
10+
"provider": [
11+
{
12+
"id": "https://www.bibliotecabertoliana.it/",
13+
"type": "Agent",
14+
"label": {
15+
"en": [
16+
"Biblioteca Civica Bertoliana"
17+
]
18+
},
19+
"homepage": [
20+
{
21+
"id": "https://www.bibliotecabertoliana.it/",
22+
"type": "Text",
23+
"label": {
24+
"en": [
25+
"Biblioteca Civica Bertoliana Homepage"
26+
]
27+
},
28+
"format": "text/html"
29+
}
30+
],
31+
"logo": [
32+
{
33+
"id": "https://www.bibliotecabertoliana.it/img/logo-bertoliana.png",
34+
"type": "Image",
35+
"format": "image/png",
36+
"height": 346,
37+
"width": 89
38+
}
39+
]
40+
}
41+
],
42+
"items": [
43+
{
44+
"id": "{{ id.path }}/canvas/p1",
45+
"type": "Canvas",
46+
"label": {
47+
"en": [
48+
"171r (387)"
49+
]
50+
},
51+
"height": 3184,
52+
"width": 2156,
53+
"items": [
54+
{
55+
"id": "{{ id.path }}/page/p1/1",
56+
"type": "AnnotationPage",
57+
"items": [
58+
{
59+
"id": "{{ id.path }}/annotation/p0001-image",
60+
"type": "Annotation",
61+
"motivation": "painting",
62+
"body": {
63+
"id": "https://iiif.io/api/image/3.0/example/reference/3ec31f43ce55cfcc076804c88c06aa43-CF-f0186r_aVISNK_387/full/max/0/default.jpg",
64+
"type": "Image",
65+
"format": "image/jpeg",
66+
"height": 3184,
67+
"width": 2156,
68+
"service": [
69+
{
70+
"id": "https://iiif.io/api/image/3.0/example/reference/3ec31f43ce55cfcc076804c88c06aa43-CF-f0186r_aVISNK_387",
71+
"type": "ImageService3",
72+
"profile": "level1"
73+
}
74+
]
75+
},
76+
"target": "{{ id.path }}/canvas/p1"
77+
}
78+
]
79+
}
80+
]
81+
},
82+
{
83+
"id": "{{ id.path }}/canvas/p2",
84+
"type": "Canvas",
85+
"label": {
86+
"en": [
87+
"171v (384)"
88+
]
89+
},
90+
"height": 3184,
91+
"width": 2156,
92+
"items": [
93+
{
94+
"id": "{{ id.path }}/page/p2/1",
95+
"type": "AnnotationPage",
96+
"items": [
97+
{
98+
"id": "{{ id.path }}/annotation/p0002-image",
99+
"type": "Annotation",
100+
"motivation": "painting",
101+
"body": {
102+
"id": "https://iiif.io/api/image/3.0/example/reference/3ec31f43ce55cfcc076804c88c06aa43-CF-f0186v_aVISNK_384/full/max/0/default.jpg",
103+
"type": "Image",
104+
"format": "image/jpeg",
105+
"height": 3184,
106+
"width": 2156,
107+
"service": [
108+
{
109+
"id": "https://iiif.io/api/image/3.0/example/reference/3ec31f43ce55cfcc076804c88c06aa43-CF-f0186v_aVISNK_384",
110+
"type": "ImageService3",
111+
"profile": "level1"
112+
}
113+
]
114+
},
115+
"target": "{{ id.path }}/canvas/p2"
116+
}
117+
]
118+
}
119+
]
120+
},
121+
{
122+
"id": "{{ id.path }}/canvas/p3",
123+
"type": "Canvas",
124+
"label": {
125+
"en": [
126+
"172r (385)"
127+
]
128+
},
129+
"height": 3184,
130+
"width": 2156,
131+
"items": [
132+
{
133+
"id": "{{ id.path }}/page/p3/1",
134+
"type": "AnnotationPage",
135+
"items": [
136+
{
137+
"id": "{{ id.path }}/annotation/p0003-image",
138+
"type": "Annotation",
139+
"motivation": "painting",
140+
"body": {
141+
"id": "https://iiif.io/api/image/3.0/example/reference/3ec31f43ce55cfcc076804c88c06aa43-CF-f0187r_aVISNK_385/full/max/0/default.jpg",
142+
"type": "Image",
143+
"format": "image/jpeg",
144+
"height": 3184,
145+
"width": 2156,
146+
"service": [
147+
{
148+
"id": "https://iiif.io/api/image/3.0/example/reference/3ec31f43ce55cfcc076804c88c06aa43-CF-f0187r_aVISNK_385",
149+
"type": "ImageService3",
150+
"profile": "level1"
151+
}
152+
]
153+
},
154+
"target": "{{ id.path }}/canvas/p3"
155+
}
156+
]
157+
}
158+
]
159+
},
160+
{
161+
"id": "{{ id.path }}/canvas/p4",
162+
"type": "Canvas",
163+
"label": {
164+
"en": [
165+
"172v [386]"
166+
]
167+
},
168+
"height": 3184,
169+
"width": 2156,
170+
"items": [
171+
{
172+
"id": "{{ id.path }}/page/p4/1",
173+
"type": "AnnotationPage",
174+
"items": [
175+
{
176+
"id": "{{ id.path }}/annotation/p0004-image",
177+
"type": "Annotation",
178+
"motivation": "painting",
179+
"body": {
180+
"id": "https://iiif.io/api/image/3.0/example/reference/3ec31f43ce55cfcc076804c88c06aa43-CF-f0187v_aVISNK_386/full/max/0/default.jpg",
181+
"type": "Image",
182+
"format": "image/jpeg",
183+
"height": 3184,
184+
"width": 2156,
185+
"service": [
186+
{
187+
"id": "https://iiif.io/api/image/3.0/example/reference/3ec31f43ce55cfcc076804c88c06aa43-CF-f0187v_aVISNK_386",
188+
"type": "ImageService3",
189+
"profile": "level1"
190+
}
191+
]
192+
},
193+
"target": "{{ id.path }}/canvas/p4"
194+
}
195+
]
196+
}
197+
]
198+
}
199+
],
200+
"structures": [
201+
{
202+
"id": "{{ id.path }}/range/r1",
203+
"type": "Range",
204+
"behavior": [
205+
"sequence"
206+
],
207+
"label": {
208+
"en": [
209+
"Physical sequence"
210+
]
211+
},
212+
"items": [
213+
{
214+
"id": "{{ id.path }}/canvas/p1",
215+
"type": "Canvas"
216+
},
217+
{
218+
"id": "{{ id.path }}/canvas/p2",
219+
"type": "Canvas"
220+
},
221+
{
222+
"id": "{{ id.path }}/canvas/p3",
223+
"type": "Canvas"
224+
},
225+
{
226+
"id": "{{ id.path }}/canvas/p4",
227+
"type": "Canvas"
228+
}
229+
]
230+
},
231+
{
232+
"id": "{{ id.path }}/range/r2",
233+
"type": "Range",
234+
"behavior": [
235+
"sequence"
236+
],
237+
"label": {
238+
"en": [
239+
"Author-intended sequence"
240+
]
241+
},
242+
"items": [
243+
{
244+
"id": "{{ id.path }}/canvas/p2",
245+
"type": "Canvas"
246+
},
247+
{
248+
"id": "{{ id.path }}/canvas/p3",
249+
"type": "Canvas"
250+
},
251+
{
252+
"id": "{{ id.path }}/canvas/p4",
253+
"type": "Canvas"
254+
},
255+
{
256+
"id": "{{ id.path }}/canvas/p1",
257+
"type": "Canvas"
258+
}
259+
]
260+
}
261+
]
262+
}

0 commit comments

Comments
 (0)