Open lutzhelm opened 4 years ago
(I hope this idea is ready to become a cookbook recipe; if not, I'll post it in the iiif-stories repo.)
While the presentation API 3.0 beta draft quite clearly recommends the use of AnnotationCollection
s for grouping cross Canvas
textual AnnotationsPage
s like translations of a certain language, grouping AnnotationsPage
s across Canvas
es is also useful for identifying commonalities of image annotations. If a IIIF manifest contains both visible light and UV photographs for each Canvas, a user might want to display only one of those two, without adjusting his viewer's settings for each new Canvas
.
In a Manifest
, the grouped AnnotationPage
s in the Canvas
es' items would have to contain a reference to an AnnotationCollection
, somthing like:
{
"@context": "http://iiif.io/api/presentation/3/context.json",
"id": "https://example.org/iiif/book1",
"type": "Manifest",
"items": [
{
"id": "https://example.org/iiif/book1/canvas1",
"type": "Canvas",
"items": [
{
"id": "https://example.org/iiif/book1/annopage/daylight1",
"type": "AnnotationPage",
"label": { "@none": "Visible light photograph" },
"partOf": {
"id": "https://example.org/iiif/book1/annocoll/daylight",
"type": "AnnotationCollection"
},
"next": {
"id": "https://example.org/iiif/book1/annopage/daylight2",
"type": "AnnotationPage"
},
"items": [...]
},
{
"id": "https://example.org/iiif/book1/annopage/uv1",
"type": "AnnotationPage",
"label": { "@none": "UV photograph" },
"partOf": {
"id": "https://example.org/iiif/book1/annocoll/uv",
"type": "AnnotationCollection"
},
"next": {
"id": "https://example.org/iiif/book1/annopage/uv2",
"type": "AnnotationPage"
},
"items": [...]
}
]
},
{
"id": "https://example.org/iiif/book1/canvas2",
"type": "Canvas",
"items": [
{
"id": "https://example.org/iiif/book1/annopage/daylight2",
"type": "AnnotationPage",
"label": { "@none": "Visible light photograph" },
"partOf": {
"id": "https://example.org/iiif/book1/annocoll/daylight",
"type": "AnnotationCollection"
},
"items": [...]
},
{
"id": "https://example.org/iiif/book1/annopage/uv2",
"type": "AnnotationPage",
"label": { "@none": "UV photograph" },
"partOf": {
"id": "https://example.org/iiif/book1/annocoll/uv",
"type": "AnnotationCollection"
},
"items": [...]
}
]
}
]
}
Additionally, an AnnotationCollection
resource would have to be provided for each group of images:
{
"@context": "http://iiif.io/api/presentation/3/context.json",
"id": "https://example.org/iiif/book1/annocoll/uv",
"type": "AnnotationCollection",
"label": {"@none": ["UV photographs"]},
"first": { "id": "https://example.org/iiif/book1/annopage/uv1", "type": "AnnotationPage" },
"last": { "id": "https://example.org/iiif/book1/annopage/uv2", "type": "AnnotationPage" }
}
As discussed in the cookbook discussion we though Ranges might be the place to express all of the different types of image in one place. This should allow the user to navigate using a table of contents to only see all of the UV images or only the Visible light.
If you had the different versions of a page (UV and Visible) all painted on one canvas with a choice
annotation this would allow the layer functionality in existing viewers to work.
To create the experience to navigate the images in order e.g. all UV image or all Visible light images it should be possible to create a range which points to the UV images inside the canvas.
While looking at another recipe I came across the following for Start
: https://iiif.io/api/presentation/3.0/#start which mentions that in Start
and Ranges
you can link to items within a canvas using a selector. I'm not sure what selector you could use to point to a image within a canvas but maybe SpecificResource would be an option.
Group images across Canvases
(Provide link to
index.md
of the issue, if available. To be filled in after issue is created - you need the issue number!)Use case
A manifest provides multiple types of images for each
Canvas
, e.g. visible light and UV photographs. A user wants to select only one of those types to be displayed when navigating through the manifest.