diff --git a/_includes/links.md b/_includes/links.md index 010843050..5b3169531 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -5,6 +5,7 @@ [0003]: {{site.baseurl}}/recipe/0003-mvm-video/ "Simplest Manifest - Video" [0005]: {{site.baseurl}}/recipe/0005-image-service/ "Support Deep Viewing with Basic Use of a IIIF Image Service" [0007]: {{site.baseurl}}/recipe/0007-string-formats/ "Embedding HTML" +[0009]: {{site.baseurl}}/recipe/0009-book-1/ "Simple Manifest - Book" [0008]: {{site.baseurl}}/recipe/0008-rights/ "Rights" [0013]: {{site.baseurl}}/recipe/0013-placeholderCanvas/ "Load a Preview Image Before the Main Content" [0202]: {{site.baseurl}}/recipe/0202-start-canvas/ "Load Manifest Beginning with a Specific Canvas" @@ -16,7 +17,9 @@ [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-service]: https://iiif.io/api/presentation/3.0/#service "IIIF Presentation API service property" +[prezi3-thumbnail]: https://iiif.io/api/presentation/3.0/#thumbnail "Thumbnail" [prezi3-start]: https://iiif.io/api/presentation/3.0/#start "Start Property" [prezi3-openannotation]: https://iiif.io/api/annex/openannotation "IIIF Open/Web Annotation Extensions" [prezi3-pointselector]: https://iiif.io/api/annex/openannotation/#point-selector "PointSelector" [service-registry]: https://iiif.io/api/registry/services/ "the IIIF Registry of Services" + diff --git a/index.md b/index.md index d7ba2a360..52401407c 100644 --- a/index.md +++ b/index.md @@ -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\)][0008] (7) * thumbnail algorithm / discussion -* Book (simplest, > 1 canvas) (19) +* [Simple Manifest - Book][0009] (19) * Book (viewingDirection variations) (11,12,13,14) * Book (paging variations) (15,16,17) * [Load a Preview Image Before the Main Content][0013] diff --git a/recipe/0009-book-1/index.md b/recipe/0009-book-1/index.md index e75cf0c72..ff86d3f8f 100644 --- a/recipe/0009-book-1/index.md +++ b/recipe/0009-book-1/index.md @@ -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 %} diff --git a/recipe/0009-book-1/manifest.json b/recipe/0009-book-1/manifest.json new file mode 100644 index 000000000..a8aea1807 --- /dev/null +++ b/recipe/0009-book-1/manifest.json @@ -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" + } + ] + } + ] + } + ] +}