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 #0032: Simplest Collection #371

Merged
merged 25 commits into from
Jan 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
a2d626d
Draft simple collections.
mathewjordan Oct 26, 2022
f3d3369
Add use case and implementatio notes.
mathewjordan Jan 13, 2023
707a15b
Merge branch 'master' into 0032-collection
mathewjordan Jan 13, 2023
0aff8a2
Add link.
mathewjordan Jan 13, 2023
c265e8e
Resolved merge conflict
triplingual Sep 22, 2023
e12baac
Revise use case.
mathewjordan Sep 25, 2023
672f896
Revise language.
mathewjordan Sep 25, 2023
4e4d002
Revise related.
mathewjordan Sep 25, 2023
6cd1dac
Add restriction.
mathewjordan Sep 25, 2023
f4fc6e1
Add `behavior` note.
mathewjordan Sep 25, 2023
4bc6165
Apply edits.
mathewjordan Sep 26, 2023
e4f47c8
Revise language.
mathewjordan Sep 26, 2023
af84f9f
Apply simple collection recipe feedback.
mathewjordan Oct 5, 2023
07b5a14
Update simple collection example.
mathewjordan Oct 5, 2023
a7cb66a
Reorder viewers.
mathewjordan Oct 5, 2023
834bc72
Address restrictions.
mathewjordan Oct 13, 2023
7822568
[local] Merge branch '0032-collection' of https://github.com/IIIF/coo…
triplingual Oct 19, 2023
32afe27
Synced title in links, added to TOC
triplingual Oct 19, 2023
862fcb2
Merge branch 'master' into 0032-collection
mathewjordan Oct 19, 2023
fba4d05
Add example context.
mathewjordan Nov 1, 2023
6fa911e
Refine includes to cover referenced Manifests.
mathewjordan Nov 1, 2023
1ef7e97
Add viewer notes.
mathewjordan Nov 2, 2023
62c988d
Revise supporting collection distinctions, add Annona note.
mathewjordan Nov 13, 2023
bc081ae
Fix typo.
mathewjordan Nov 15, 2023
9d8e463
Update behavior spec link.
mathewjordan Jan 11, 2024
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
1 change: 1 addition & 0 deletions _includes/links.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
18 changes: 18 additions & 0 deletions recipe/0032-collection/collection.json
Original file line number Diff line number Diff line change
@@ -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" ] }
}
]
}
76 changes: 76 additions & 0 deletions recipe/0032-collection/index.md
Original file line number Diff line number Diff line change
@@ -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 %}
52 changes: 52 additions & 0 deletions recipe/0032-collection/manifest-01.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
}
]
}
]
}
52 changes: 52 additions & 0 deletions recipe/0032-collection/manifest-02.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
}
]
}
]
}
Loading