Skip to content

Recipe on Manifest reuse. #588

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

Merged
merged 9 commits into from
Apr 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -74,6 +74,7 @@
[0346]: {{ site.cookbook_url | absolute_url }}/recipe/0346-multilingual-annotation-body/ "Annotating in Multiple Languages"
[0377]: {{ site.cookbook_url | absolute_url }}/recipe/0377-image-in-annotation/ "Image in annotation"

[0464]: {{ site.cookbook_url | absolute_url }}/recipe/0464-reuse-manifest/ "Reuse parts of a Manifest"
[0466]: {{ site.cookbook_url | absolute_url }}/recipe/0466-link-for-loading-manifest/ "Loading a manifest with a viewer using a link"

[0485]: {{ site.cookbook_url | absolute_url }}/recipe/0485-contentstate-canvas-region/ "Open a specific region of a canvas in a viewer"
Expand Down
1 change: 1 addition & 0 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: ..
* [Locate Multiple Canvases on a Web Map][0240]
* [Acknowledge Content Contributors][0234]
* [Simple Collection][0032]
* [Reuse parts of a Manifest][0464]

## Textual and other supplementary content

Expand Down
56 changes: 56 additions & 0 deletions recipe/0464-reuse-manifest/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: Reuse parts of a manifest
id: -1
layout: recipe
tags: [tbc]
summary: "tbc"
viewers:
topic:
- basic
---

## Use Case

I want to create a new Manifest based on parts of an existing Manifest that exists online, either to mix images from different Manifests into one presentation or to add metadata or Annotations to an existing presentation.

## Implementation Notes

A [IIIF Presentation Manifest][prezi3] is a fixed document at a given URI with a given set of Canvases, Ranges, metadata or Annotations. If you want to modify the Manifest to change anything inside like the metadata description, remove or reorder images, add images from other Manifests or add Annotations to the images, you have to create a new Manifest and make it available at a new URI.

To create this new document you can copy most elements of the source Manifest and add your modifications. There are some guidelines you should follow in the process:

You must change the `id` property of the Manifest to match the URI that your published new Manifest will have.

You should copy the Canvases preserving the URI in their `id` property unless you modify the Canvas itself. This indicates that additions you make, such as Annotations, also refer to the original Canvas in the source Manifest.

You can copy the `label` property of the Manifest but you should modify it to indicate what you have changed so that users of your new Manifest can easily differentiate it from the source Manifest.

You should reproduce the `requiredStatement`, `rights` and `provider` properties that apply to the images or other resources that you copy from the source Manifest. Depending on the licenses you may have to reproduce these properties. If you combine resources from multiple Manifests you may have to combine these properties.

You should copy the `metadata` property, particularly identifiers like library-ids to make it easier for users of your Manifest to identify the original object.

There is no formal way to reference the source Manifest but you are encouraged to add a metadata element that contains a link to the source Manifest and describes your changes.

You should be considerate of possible ethical implications of copying parts of an existing Manifest and try not to confuse users of your Manifest about intellectual or legal ownership.


## Example

In this example we reuse the Manifest of the recipe [rights statement][0008] and we add an Annotation to the Canvas.

The new Manifest reproduces the `rights` and `requiredStatement` properties from the source Manifest and the original Canvas ids.

The original Manifest label "Picture of Göttingen taken during the 2019 IIIF Conference" has been modified to indicate that an Annotation has been added and a metadata element with a link to the original Manifest and a note about the changes was added.

{% include manifest_links.html viewers="Mirador,Annona,Glycerine Viewer,Theseus" manifest="manifest.json" %}

{% include jsonviewer.html src="manifest.json" config='data-line="26-37,73-92"' %}

## Related Recipes

* [Rights statement][0008] for the source Manifest and information on rights statements
* [Simplest Annotation][0266] for information on the type of Annotation added here

{% include acronyms.md %}
{% include links.md %}

87 changes: 87 additions & 0 deletions recipe/0464-reuse-manifest/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{
"@context": [
"http://iiif.io/api/presentation/3/context.json"
],
"id": "{{ id.url }}",
"type": "Manifest",
"label": {
"en": [
"Picture of Göttingen taken during the 2019 IIIF Conference, reused and annotated."
]
},
"rights": "http://creativecommons.org/licenses/by-sa/3.0/",
"requiredStatement": {
"label": {
"en": [
"Attribution"
]
},
"value": {
"en": [
"<span>Glen Robson, IIIF Technical Coordinator. <a href=\"https://creativecommons.org/licenses/by-sa/3.0\">CC BY-SA 3.0</a> <a href=\"https://creativecommons.org/licenses/by-sa/3.0\" title=\"CC BY-SA 3.0\"><img src=\"https://licensebuttons.net/l/by-sa/3.0/88x31.png\"/></a></span>"
]
}
},
"metadata": [
{
"label": { "en": [ "Source Manifest" ] },
"value": { "en": [ "<span>Reuse of <a href=\"https://iiif.io/api/cookbook/recipe/0008-rights/manifest.json\">Source Manifest</a> with added Annotation" ] }
}
],
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0008-rights/canvas/p1",
"type": "Canvas",
"height": 3024,
"width": 4032,
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0008-rights/page/p1/1",
"type": "AnnotationPage",
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0008-rights/annotation/p0001-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"height": 3024,
"width": 4032,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen",
"profile": "level1",
"type": "ImageService3"
}
]
},
"target": "https://iiif.io/api/cookbook/recipe/0008-rights/canvas/p1"
}
]
}
],
"annotations": [
{
"id": "{{ id.path }}/canvas-1/annopage-2",
"type": "AnnotationPage",
"items": [
{
"id": "{{ id.path }}{{ id.path }}/canvas-1/annopage-2/anno-1",
"type": "Annotation",
"motivation": "commenting",
"body": {
"type": "TextualBody",
"language": "de",
"format": "text/plain",
"value": "Göttinger Marktplatz mit Gänseliesel Brunnen"
},
"target": "{{ id.path }}/canvas-1"
}
]
}
]
}
]
}
Loading