Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recipe #0009 — Simplest Manifest - Multiple Related Images (book, etc.) #153

Merged
merged 32 commits into from
Oct 16, 2020
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
525b2e5
Recipe #0009 — Simplest Manifest - Multiple Related Images (book, etc.)
regisrob Apr 9, 2020
9e80bd0
Improve text
regisrob Apr 10, 2020
b2df417
Add link to prezi3-thumbnail
regisrob Apr 10, 2020
1e25839
Update manifest: add real canvas labels
regisrob Apr 10, 2020
5cd4697
Rework recipe's texts
regisrob Apr 15, 2020
6225afb
Update manifest.json
regisrob Apr 15, 2020
7c4eb71
Add link to UV
regisrob Apr 15, 2020
6f98e83
Fix manifest.json, using the correct `body` property
regisrob Apr 15, 2020
84a9af8
Fix link to UV
regisrob Apr 20, 2020
ddf8f73
Make context a single URI string
regisrob Apr 28, 2020
973a87f
Consistent capitalization of IIIF resource types
regisrob Apr 28, 2020
02b4380
Fix md markup for prezi3-thumbnail link
regisrob Apr 28, 2020
1f81293
Add recipe 9 to links
regisrob Apr 28, 2020
99f3ce7
Add w/h on canvas thumbnails
regisrob Apr 28, 2020
69948f4
Merge pull request #155 from regisrob/0009-book-1
regisrob Apr 28, 2020
6ca548d
Add jekyll includes for viewer links and jsonviewer
regisrob May 5, 2020
c122a01
Merge branch 'master' into 0009-book-1
glenrobson May 5, 2020
9bca4d6
Update recipe 9 based on feedback from editors (#161)
regisrob May 12, 2020
0bb7e52
Update manifest.json (#166)
regisrob May 20, 2020
6523cfe
Fix number of canvases in the text (#167)
regisrob May 20, 2020
1575d0d
Remove canvas thumbnails (#177)
regisrob Jun 1, 2020
a679b4b
Minor changes on 0009-book-1 (#179)
regisrob Jun 22, 2020
18c5d85
Merge branch 'master' into 0009-book-1
glenrobson Jun 24, 2020
b951992
Merge branch 'master' into 0009-book-1
glenrobson Jul 2, 2020
d69858c
Linking recipe from front page
glenrobson Jul 2, 2020
5f4d09c
Merge branch 'master' into 0009-book-1
glenrobson Jul 2, 2020
ee59fa6
Merge branch 'master' into 0009-book-1
glenrobson Jul 2, 2020
4b78880
Merge branch 'master' into 0009-book-1
triplingual Aug 7, 2020
733b17a
Review title and text per TRC feedback
regisrob Aug 28, 2020
fb8b1a8
Update recipe's title in links and index files (#209)
regisrob Oct 5, 2020
2944099
Merge branch 'master' into 0009-book-1
glenrobson Oct 9, 2020
85790ec
Merge branch 'master' into 0009-book-1
glenrobson Oct 16, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions _includes/links.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
[0002]: {{site.baseurl}}/recipe/0002-mvm-audio/ "Simplest Manifest - Audio"
[0003]: {{site.baseurl}}/recipe/0003-mvm-video/ "Simplest Manifest - Video"
[0007]: {{site.baseurl}}/recipe/0007-string-formats/ "Embedding HTML"
[0009]: {{site.baseurl}}/recipe/0009-book-1/ "Multiple Related Images (Book, etc.)"
regisrob marked this conversation as resolved.
Show resolved Hide resolved

[0068]: {{site.baseurl}}/recipe/0068-newspaper/ "A newspaper"

[prezi3]: https://iiif.io/api/presentation/3 "IIIF Presentation API"
[prezi3-languages]: https://iiif.io/api/presentation/3.0/#language-of-property-values "Language of Property Values"
[prezi3-thumbnail]: https://iiif.io/api/presentation/3.0/#thumbnail "Thumbnail"

2 changes: 1 addition & 1 deletion index.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: ..
* [Embedding HTML in descriptive properties][0007] (64)
* Rights statement(s) (7)
* thumbnail algorithm / discussion
* Book (simplest, > 1 canvas) (19)
* [Multiple Related Images (Book, etc.)][0009] (19)
regisrob marked this conversation as resolved.
Show resolved Hide resolved
* Book (viewingDirection variations) (11,12,13,14)
* Book (paging variations) (15,16,17)
* placeholderCanvas
Expand Down
41 changes: 21 additions & 20 deletions recipe/0009-book-1/index.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,44 @@
---
title: Book (simplest, > 1 canvas)
title: Simple Manifest - Book
id: 9
layout: recipe
tags: [tbc]
summary: "tbc"
tags: [image, presentation]
summary: "Represent a book, or any object composed of a set of images, as a simple Manifest."
---


## Use Case

Why is this pattern is important?
You have a digitized book consisting of a sequence of multiple images and want to model it as a IIIF Manifest. This recipe deals with a book (codex) object, but in practice it is applicable to any kind of compound object that may comprise a series of pages, surfaces or views (pages of a modern printed book like in the example below, the two sides of a postcard or the four cardinal views of a statue).


## Implementation notes

How does one implement the pattern?
The sample Manifest below represents the digital surrogate of a part of a printed book, starting with a frontispiece and a title page. It contains five Canvases and each Canvas is filled with the full size image of a page. In this case we have one view per page, but depending on the type of object and how it has been digitized, you could also have one view per double page spread or one view per side.

Since this Manifest is meant to represent a printed book, it has the `behavior` value `paged`, thus indicating that it can be presented in a page-turning interface. But depending on the expected user experience and the nature of the physical object and its digital surrogate, you may use other hints to inform a client of the appropriate presentation order and layout behavior. The Presentation 3.0 specification defines other values for `behavior` (see also [Book behavior variations][0011] recipe) and a `viewingDirection` property (see also [Viewing direction and its effect on navigation][0010] recipe) that will both affect the presentation of the object in a viewing interface.

The Manifest's `items` property contains the list of Canvases representing the ordered sequence of views that make up the digital object. Each Canvas conveys the correct aspect ratio for that view, whatever it is. The most common case for a book is to have one view per page, thus resulting in one image per Canvas.

## Restrictions
The `label` property on a Canvas is recommended: It is the human-readable label for a given view and allows users to distinguish between the different images. It usually gives the page or folio numbers, or any other appropriate term to identify a particular view within the object. The `label` property can be fully internationalized (see also [Text in Multiple Languages][0006]).

You should also consider providing a [thumbnail][prezi3-thumbnail] for each Canvas, so that a client can render a grid view or a thumbnail strip efficiently, thus helping users to navigate within the object. This is a general good practice and it is especially recommended if you do not provide a IIIF Image API service for your images.

When is this pattern is usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? (Not present if not needed.)

## Example

Describe in prose and provide examples, e.g.:
{% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %}

``` json-doc
{
"@context": [
"http://www.w3.org/ns/anno.jsonld",
"http://iiif.io/api/presentation/{{ page.major }}/context.json"
],
"id": "https://example.org/iiif/book1/manifest",
"type": "Manifest"
}
```
{% include jsonviewer.html src="manifest.json" %}

# Related recipes

Provide a bulleted list of related recipes and why they are relevant.
# Related recipes

* [Simplest Manifest - Single Image File][0001]
* [Simple Manifest - Image with IIIF Image API Service][0005]
* [Viewing direction and its effect on navigation)][0010]
* [Book behavior variations][0011]
* [Thumbnails][0012]

{% include acronyms.md %}
{% include links.md %}
Expand Down
184 changes: 184 additions & 0 deletions recipe/0009-book-1/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
{
"@context": "http://iiif.io/api/presentation/3/context.json",
"id": "{{ id.url }}",
"type": "Manifest",
"label": { "en": [ "Simple Manifest - Book" ] },
"behavior": ["paged"],
"items": [
{
"id": "{{ id.path }}/canvas/p1",
"type": "Canvas",
"label": { "en": [ "Blank page" ] },
"height": 4613,
"width": 3204,
"items": [
{
"id": "{{ id.path }}/page/p1/1",
"type": "AnnotationPage",
"items": [
{
"id": "{{ id.path }}/annotation/p0001-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"height": 4613,
"width": 3204,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "{{ id.path }}/canvas/p1"
}
]
}
]
},
{
"id": "{{ id.path }}/canvas/p2",
"type": "Canvas",
"label": { "en": [ "Frontispiece" ] },
"width": 3186,
"height": 4612,
"items": [
{
"id": "{{ id.path }}/page/p2/1",
"type": "AnnotationPage",
"items": [
{
"id": "{{ id.path }}/annotation/p0002-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"width": 3186,
"height": 4612,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "{{ id.path }}/canvas/p2"
}
]
}
]
},
{
"id": "{{ id.path }}/canvas/p3",
"type": "Canvas",
"label": { "en": [ "Title page" ] },
"width": 3204,
"height": 4613,
"items": [
{
"id": "{{ id.path }}/page/p3/1",
"type": "AnnotationPage",
"items": [
{
"id": "{{ id.path }}/annotation/p0003-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"width": 3204,
"height": 4613,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "{{ id.path }}/canvas/p3"
}
]
}
]
},
{
"id": "{{ id.path }}/canvas/p4",
"type": "Canvas",
"label": { "en": [ "Blank page" ] },
"width": 3174,
"height": 4578,
"items": [
{
"id": "{{ id.path }}/page/p4/1",
"type": "AnnotationPage",
"items": [
{
"id": "{{ id.path }}/annotation/p0004-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"width": 3174,
"height": 4578,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "{{ id.path }}/canvas/p4"
}
]
}
]
},
{
"id": "{{ id.path }}/canvas/p5",
"type": "Canvas",
"label": { "en": [ "Bookplate" ] },
"width": 3198,
"height": 4632,
"items": [
{
"id": "{{ id.path }}/page/p5/1",
"type": "AnnotationPage",
"items": [
{
"id": "{{ id.path }}/annotation/p0005-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"width": 3198,
"height": 4632,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "{{ id.path }}/canvas/p5"
}
]
}
]
}
]
}