diff --git a/_includes/links.md b/_includes/links.md index 67e835030..55f00d06b 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -22,6 +22,7 @@ [0019]: {{ site.cookbook_url | absolute_url }}/recipe/0019-html-in-annotations/ "HTML in Annotations" [0021]: {{ site.cookbook_url | absolute_url }}/recipe/0021-tagging/ "Simple Annotation — Tagging" +[0032]: {{ site.cookbook_url | absolute_url }}/recipe/0032-collection/ "Simple Collection" [0033]: {{site.baseurl}}/recipe/0033-choice/ "Multiple choice of images in a single view" [0035]: {{site.baseurl}}/recipe/0035-foldouts/ "Foldouts, Flaps, and Maps" [0036]: {{site.baseurl}}/recipe/0036-composition-from-multiple-images/ "Composition from Multiple Images" diff --git a/index.md b/index.md index 72b8a20fc..6d60b6279 100644 --- a/index.md +++ b/index.md @@ -59,6 +59,7 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: .. * [Locate a Manifest on a Web Map][0154] * [Locate Multiple Canvases on a Web Map][0240] * [Acknowledge Content Contributors][0234] +* [Simple Collection][0032] ## Textual and other supplementary content diff --git a/recipe/0032-collection/collection.json b/recipe/0032-collection/collection.json new file mode 100644 index 000000000..b3e371f42 --- /dev/null +++ b/recipe/0032-collection/collection.json @@ -0,0 +1,18 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "{{ id.url }}", + "type": "Collection", + "label": { "en": [ "Simple Collection Example" ] }, + "items": [ + { + "id": "{{ id.path }}/manifest-01.json", + "type": "Manifest", + "label": { "en": [ "The Gulf Stream" ] } + }, + { + "id": "{{ id.path }}/manifest-02.json", + "type": "Manifest", + "label": { "en": [ "Northeaster" ] } + } + ] +} diff --git a/recipe/0032-collection/index.md b/recipe/0032-collection/index.md new file mode 100644 index 000000000..174d6b582 --- /dev/null +++ b/recipe/0032-collection/index.md @@ -0,0 +1,76 @@ +--- +title: Simple Collection +id: 32 +layout: recipe +tags: [presentation] +summary: "" +viewers: + - UV + - Mirador + - Annona + - Clover +topic: + - basic +--- + +## Use Case + +Your organization has a named collection of paintings authored by a specific person. Each of these unique items already has a digital representation and a Manifest, and you would now like to organize and present them together in a unified and coherent IIIF Presentation interface. + +## Implementation notes + +This recipe illustrates the mandatory structure and properties of a IIIF Collection of Manifests, with the simplest possible content. IIIF Collections have no restrictions on the organizational purpose of their referenced resources, though the resources may be related as a named digital collection, a common metadata value, or be organized as search results. + +Like with a Manifest, the JSON-LD of a Collection opens with the`@context` declaration, which identifies the terms used in the document as belonging to the IIIF specification. The `id` property identifies this collection with the URL at which it is available online. The `type` property must be `Collection`. + +As with a Manifest, the `label` property is mandatory, and the language of its value must be given (or the special value `none`), using a [language map](https://iiif.io/api/presentation/3.0/#language-of-property-values). Here the language of the `label` is English and its value is “Simple Collection Example”. + +The Collection `items` property is an array of referenced Manifests. In this example there are two Manifests. Each `items` entry must have an `id`, `type`, and a `label`. The `id` must be the URI where the Manifest can be available online. The `type` must be `Manifest` or a `Collection`. Each `items` entry referenced should not be fully embedded into the Collection, and should contain only necessary properties for presentation of the collection such as `thumbnail`. Various other [descriptive](https://iiif.io/api/presentation/3.0/#31-descriptive-properties) and [linking](https://iiif.io/api/presentation/3.0/#33-linking-properties) properties such as `summary`, minimal `metadata`, and `homepage` may be useful as well for presentation. See the [Summary of property requirements](https://iiif.io/api/presentation/3.0/#a-summary-of-property-requirements) for a complete list. + +Collections may also reference other Collections. + +Collections may have `behavior` defined in order to influence user experience when viewing the resource. Manifests within a Collection DO NOT inherit [behaviors](https://iiif.io/api/presentation/3.0/#behavior) from their referencing Collections; however referenced Collections will. + +Defining a IIIF Collection is to not be conflated with creating a table of contents within an individual Manifest. To define a table of contents, see [Multiple Volumes in a Single Bound Volume][0031]. + +## Restrictions + +None known. + +## Example + +This example IIIF Collection represents an organization’s collection of paintings by the American painter Winslow Homer, which includes two distinct artworks: _The Gulf Stream_ and _Northeaster_. Each painting is represented within the Collection as a IIIF Manifest, identified by a URI as its `id`, a `type` property, and the corresponding title as the `label`. + +Note: Each supporting viewer has a distinct method for toggling between Collection items: + +- Universal Viewer presents items in an _Index_ tab; +- Mirador presents items in a dialog component; +- Annona presents items in a toggleable information panel; +- Clover presents items as options in a dropdown element. + +**Example Collection** + +{% include manifest_links.html viewers="UV, Mirador, Annona, Clover" manifest="collection.json" %} + +{% include jsonviewer.html src="collection.json" %} + +**Example Manifest for _The Gulf Stream_** + +{% include manifest_links.html viewers="UV, Mirador, Annona, Clover" manifest="manifest-01.json" %} + +{% include jsonviewer.html src="manifest-01.json" %} + +**Example Manifest for _Northeaster_** + +{% include manifest_links.html viewers="UV, Mirador, Annona, Clover" manifest="manifest-02.json" %} + +{% include jsonviewer.html src="manifest-02.json" %} + +# Related recipes + +* [Multi Volume][0030] +* [Multiple Volumes in a Single Bound Volume][0031] +* [Basic Newspaper][0068] + +{% include acronyms.md %} +{% include links.md %} diff --git a/recipe/0032-collection/manifest-01.json b/recipe/0032-collection/manifest-01.json new file mode 100644 index 000000000..28263287a --- /dev/null +++ b/recipe/0032-collection/manifest-01.json @@ -0,0 +1,52 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "{{ id.url }}", + "type": "Manifest", + "label": { "en": [ "The Gulf Stream" ] }, + "metadata": [ + { + "label": { "en": [ "Artist" ] }, + "value": { "en": [ "Winslow Homer (1836–1910)" ] } + }, + { + "label": { "en": [ "Date" ] }, + "value": { "en": [ "1899" ] } + } + ], + "items": [ + { + "id": "{{ id.path }}/manifest/1/canvas/p1", + "type": "Canvas", + "height": 3540, + "width": 5886, + "items": [ + { + "id": "{{ id.path }}/manifest/1/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "{{ id.path }}/manifest/1/annotation/p0001-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/329817fc8a251a01c393f517d8a17d87-Winslow_Homer_-_The_Gulf_Stream_-_Metropolitan_Museum_of_Art/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3540, + "width": 5886, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/329817fc8a251a01c393f517d8a17d87-Winslow_Homer_-_The_Gulf_Stream_-_Metropolitan_Museum_of_Art", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": "{{ id.path }}/manifest/1/canvas/p1" + } + ] + } + ] + } + ] +} diff --git a/recipe/0032-collection/manifest-02.json b/recipe/0032-collection/manifest-02.json new file mode 100644 index 000000000..ef4d9bd6e --- /dev/null +++ b/recipe/0032-collection/manifest-02.json @@ -0,0 +1,52 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "{{ id.url }}", + "type": "Manifest", + "label": { "en": [ "Northeaster" ] }, + "metadata": [ + { + "label": { "en": [ "Artist" ] }, + "value": { "en": [ "Winslow Homer (1836–1910)" ] } + }, + { + "label": { "en": [ "Date" ] }, + "value": { "en": [ "1895" ] } + } + ], + "items": [ + { + "id": "{{ id.path }}/manifest/2/canvas/p1", + "type": "Canvas", + "height": 2572, + "width": 3764, + "items": [ + { + "id": "{{ id.path }}/manifest/2/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "{{ id.path }}/manifest/2/annotation/p0001-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/329817fc8a251a01c393f517d8a17d87-Northeaster_by_Winslow_Homer_1895/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2572, + "width": 3764, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/329817fc8a251a01c393f517d8a17d87-Northeaster_by_Winslow_Homer_1895", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": "{{ id.path }}/manifest/2/canvas/p1" + } + ] + } + ] + } + ] +}