From 7f40a75e2941f8054a518753319e25a2c4d02fdf Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 7 Aug 2020 11:53:54 -0700 Subject: [PATCH 01/95] setup recipe 0024 --- recipe/0024-book-4-toc/index.md | 43 +++++++++++++++++++++++++ recipe/0024-book-4-toc/manifest.json | 8 +++++ recipe/0024-toc-book-chapters/index.md | 44 -------------------------- 3 files changed, 51 insertions(+), 44 deletions(-) create mode 100644 recipe/0024-book-4-toc/index.md create mode 100644 recipe/0024-book-4-toc/manifest.json delete mode 100644 recipe/0024-toc-book-chapters/index.md diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md new file mode 100644 index 000000000..9ef452f19 --- /dev/null +++ b/recipe/0024-book-4-toc/index.md @@ -0,0 +1,43 @@ +--- +title: Book with Table of contents (ranges) +id: -1 +layout: recipe +tags: [tbc] +summary: "tbc" +--- + +## Use Case + +Describe the use case that the pattern is intended to solve. +Why is this pattern important? + +## Implementation Notes + +What do you need to know to use this pattern? +How do you implement the pattern? + +## Restrictions + +When is this pattern is usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? + +Delete this section if it is not needed. +If you don't know what the restrictions might be initially, just leave the following line: +**Unknown - Help Needed** + +## Example + +Describe the solution in prose and provide an example. +The example json document must be an external document, and imported with the following: + +{% include manifest_links.html viewers="UV, Mirador, Tify, Curation" manifest="manifest.json" %} + +{% include jsonviewer.html src="manifest.json" %} + +The direct link to the fixture is a useful convenience. + +## Related Recipes + +Provide a bulleted list of related recipes and why they are relevant. + +{% include acronyms.md %} +{% include links.md %} diff --git a/recipe/0024-book-4-toc/manifest.json b/recipe/0024-book-4-toc/manifest.json new file mode 100644 index 000000000..e7f4e7785 --- /dev/null +++ b/recipe/0024-book-4-toc/manifest.json @@ -0,0 +1,8 @@ +{ + "@context": [ "http://iiif.io/api/presentation/3/context.json" ], + "id": "{{ id.url }} ", + "type": "Manifest", + "label": { + "none": [""] + } +} diff --git a/recipe/0024-toc-book-chapters/index.md b/recipe/0024-toc-book-chapters/index.md deleted file mode 100644 index 7834cbd8e..000000000 --- a/recipe/0024-toc-book-chapters/index.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Table of contents (ranges) - book chapters -id: 24 -layout: recipe -tags: [tbc] -summary: "tbc" ---- - - -## Use Case - -Why is this pattern is important? - -## Implementation notes - -How does one implement the pattern? - -## Restrictions - -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.: - -``` 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" -} -``` - -# Related recipes - -Provide a bulleted list of related recipes and why they are relevant. - - -{% include acronyms.md %} -{% include links.md %} - From 51681b124cb3b9a4edf56eb8cb7b989eddadf0fc Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Thu, 13 Aug 2020 20:15:49 -0700 Subject: [PATCH 02/95] initialize recipe 0024 (book-toc) --- _includes/links.md | 2 ++ index.md | 17 +++++++++-------- recipe/0024-book-4-toc/index.md | 5 ++--- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/_includes/links.md b/_includes/links.md index 9b76f5b20..84e8bbe0a 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -6,6 +6,8 @@ [0007]: {{site.baseurl}}/recipe/0007-string-formats/ "Embedding HTML" [0008]: {{site.baseurl}}/recipe/0008-rights/ "Rights" +[0024]: {{site.baseurl}}/recipe/0024-book-4-toc/ "Book with Table of contents (ranges)" + [0068]: {{site.baseurl}}/recipe/0068-newspaper/ "A newspaper" [prezi3]: https://iiif.io/api/presentation/3 "IIIF Presentation API" diff --git a/index.md b/index.md index 6e4845326..00d5222ca 100644 --- a/index.md +++ b/index.md @@ -12,7 +12,7 @@ The [IIIF Presentation API][prezi3] specifies a standardised way to describe com * enable client software developers to support these patterns, for consistency of user experience (when desirable); * demonstrate the applicability of IIIF to a broad range of use cases. -The issues of the [Cookbook Recipes repository](https://github.com/IIIF/cookbook-recipes/issues) are used to identify and discuss cookbook recipes, prior to their inclusion in the final cookbook site. +The issues of the [Cookbook Recipes repository](https://github.com/IIIF/cookbook-recipes/issues) are used to identify and discuss cookbook recipes, prior to their inclusion in the final cookbook site. # Contributing @@ -35,7 +35,8 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: .. * thumbnail algorithm / discussion * Book (simplest, > 1 canvas) (19) * Book (viewingDirection variations) (11,12,13,14) -* Book (paging variations) (15,16,17) +* Book (paging variations) (15,16,17) +* [Book with Table of Contents (ranges)][0024] * placeholderCanvas * accompanyingCanvas * start (65) @@ -46,7 +47,7 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: .. * Transcription of audio and video * Transcription of content into XML, with XPaths to select a segment -## Other kinds of annotations +## Other kinds of annotations _(leading on to segmentation examples later)_ * comments - various examples (51,52,54) @@ -74,7 +75,7 @@ _(leading on to segmentation examples later)_ * Choice (simplest) (28) * Choice - multispectral flavoured example, with image services (29) -* foldouts, etc (Choice or non-paged interlude (flaps vs maps))? +* foldouts, etc (Choice or non-paged interlude (flaps vs maps))? * [Multiple images (master/detail)][detail-image] (30,31) * Multiple images and multiple choices (32,33,34) * [Annotating part of an image to a Canvas][recipe-segment-image-part] (e.g., crop out scanner) (35,36,37,38) @@ -84,7 +85,7 @@ _(leading on to segmentation examples later)_ * temporal segmentation * Audio only from video (and other xxxContentSelector scenarios) * canvas on canvas (#1191) -* CSS styling +* CSS styling ## Linking @@ -97,7 +98,7 @@ _(leading on to segmentation examples later)_ * Linking between Presentation API representations * seeAlso scenarios (incl other manifests) (8) -## Technical +## Technical * extensions (18) * services (9,10) @@ -117,7 +118,7 @@ _(leading on to segmentation examples later)_ * Adaptive bit rate AV examples * A field recording * [A newspaper][0068] -* Example with extensions and services +* Example with extensions and services * A manuscript with multiple orderings * a Sammelband * Archival collection (hierarchy, paging) @@ -126,7 +127,7 @@ _(leading on to segmentation examples later)_ * Mixed Image Service references (a mashup, with img2 and img3 services) * Glenn Gould - score and performance scenarios (transcribing) -## Access Control +## Access Control _this might be in a separate auth cookbook_ * probe service for simple resource diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index 9ef452f19..ada49f861 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -1,6 +1,6 @@ --- title: Book with Table of contents (ranges) -id: -1 +id: 24 layout: recipe tags: [tbc] summary: "tbc" @@ -8,8 +8,7 @@ summary: "tbc" ## Use Case -Describe the use case that the pattern is intended to solve. -Why is this pattern important? +How do I convey the logical structure of a book? ## Implementation Notes From bf4c080b2818cb3245fd498c4e1111960bca7985 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Mon, 12 Oct 2020 13:33:43 -0500 Subject: [PATCH 03/95] fix title --- recipe/0024-book-4-toc/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index ada49f861..e8f6f93ba 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -1,5 +1,5 @@ --- -title: Book with Table of contents (ranges) +title: Book with Table of Contents (ranges) id: 24 layout: recipe tags: [tbc] From a5d80583be35908fd6b3c6e08df8aeb7edfe83bb Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 11 Nov 2020 14:20:40 -0800 Subject: [PATCH 04/95] create 0118 branch/manifest --- recipe/0118_multivalue/index.md | 44 ++++++++++++++++++ recipe/0118_multivalue/manifest.json | 69 ++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 recipe/0118_multivalue/index.md create mode 100644 recipe/0118_multivalue/manifest.json diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md new file mode 100644 index 000000000..bef88e829 --- /dev/null +++ b/recipe/0118_multivalue/index.md @@ -0,0 +1,44 @@ +--- +title: Name of Recipe +id: -1 +layout: recipe +tags: [tbc] +summary: "tbc" +--- + +## Use Case + +Describe the use case that the pattern is intended to solve. +Why is this pattern important? + +## Implementation Notes + +What do you need to know to use this pattern? +How do you implement the pattern? + +## Restrictions + +When is this pattern is usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? + +Delete this section if it is not needed. +If you don't know what the restrictions might be initially, just leave the following line: +**Unknown - Help Needed** + +## Example + +Describe the solution in prose and provide an example. +The example json document must be an external document, and imported with the following: + +{% include manifest_links.html viewers="UV, Mirador, Tify, Curation" manifest="manifest.json" %} + +{% include jsonviewer.html src="manifest.json" %} + +The direct link to the fixture is a useful convenience. + +## Related Recipes + +Provide a bulleted list of related recipes and why they are relevant. + +{% include acronyms.md %} +{% include links.md %} + diff --git a/recipe/0118_multivalue/manifest.json b/recipe/0118_multivalue/manifest.json new file mode 100644 index 000000000..1acb77240 --- /dev/null +++ b/recipe/0118_multivalue/manifest.json @@ -0,0 +1,69 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://example.org/iiif/text-language/manifest", + "type": "Manifest", + "label": { + "en": [ + "Whistler's Mother", + "Arrangement in Grey and Black No. 1: The Artist's Mother" + ], + "fr": [ + "Arrangement en gris et noir no 1", + "Portrait de la mère de l'artiste", + "La Mère de Whistler" + ], + "none": [ "Whistler (1871)" ] + }, + "metadata": [ + { + "label": { + "en": ["Creator"], + "fr": ["Auteur"] + }, + "value": { + "none": ["Whistler, James Abbott McNeill"] + } + } + ], + "summary": { + "en": ["A painting in oil on canvas created by the American-born painter James McNeill Whistler, in 1871."] + }, + "requiredStatement": { + "label": { + "en": [ "Held By" ], + "fr": [ "Détenu par" ] + }, + "value": { + "none": [ "Musée d'Orsay, Paris, France" ] + } + }, + + "items": [ + { + "id": "https://example.org/iiif/text-language/canvas1", + "type": "Canvas", + "width": 1114, + "height": 991, + "items": [ + { + "id": "https://example.org/iiif/text-language/canvas1/page1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/text-language/canvas1/page1/annotation1", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg", + "type": "Image", + "format": "image/jpg" + }, + "target": "https://example.org/iiif/text-language/canvas1" + } + ] + } + ] + } + ] + } + \ No newline at end of file From 7d2e91752106f71d28ebd87547d2622f6cb00131 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Mon, 14 Dec 2020 11:50:14 -0500 Subject: [PATCH 05/95] =?UTF-8?q?Initial=20commit=20to=20version=20control?= =?UTF-8?q?=20=E2=9A=A1=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- recipe/0053-seeAlso/manifest.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recipe/0053-seeAlso/manifest.json diff --git a/recipe/0053-seeAlso/manifest.json b/recipe/0053-seeAlso/manifest.json new file mode 100644 index 000000000..e7f4e7785 --- /dev/null +++ b/recipe/0053-seeAlso/manifest.json @@ -0,0 +1,8 @@ +{ + "@context": [ "http://iiif.io/api/presentation/3/context.json" ], + "id": "{{ id.url }} ", + "type": "Manifest", + "label": { + "none": [""] + } +} From 78a318e0994b3fc7fc94327b2f78ab801d5ae3e7 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Mon, 14 Dec 2020 11:50:51 -0500 Subject: [PATCH 06/95] Updated to latest template --- recipe/0053-seeAlso/index.md | 40 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index 9c3830d52..bef88e829 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -1,43 +1,43 @@ --- -title: More seeAlso scenarios -id: 53 +title: Name of Recipe +id: -1 layout: recipe tags: [tbc] summary: "tbc" --- - ## Use Case -Why is this pattern is important? +Describe the use case that the pattern is intended to solve. +Why is this pattern important? -## Implementation notes +## Implementation Notes -How does one implement the pattern? +What do you need to know to use this pattern? +How do you implement the pattern? ## Restrictions -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.) +When is this pattern is usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? + +Delete this section if it is not needed. +If you don't know what the restrictions might be initially, just leave the following line: +**Unknown - Help Needed** ## Example -Describe in prose and provide examples, e.g.: +Describe the solution in prose and provide an example. +The example json document must be an external document, and imported with the following: -``` 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 manifest_links.html viewers="UV, Mirador, Tify, Curation" manifest="manifest.json" %} -# Related recipes +{% include jsonviewer.html src="manifest.json" %} -Provide a bulleted list of related recipes and why they are relevant. +The direct link to the fixture is a useful convenience. +## Related Recipes + +Provide a bulleted list of related recipes and why they are relevant. {% include acronyms.md %} {% include links.md %} From 448e4a1f54881c090276995919e981183fa07d46 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Fri, 18 Dec 2020 13:00:58 -0500 Subject: [PATCH 07/95] Edited Use Case and Implementation --- recipe/0053-seeAlso/index.md | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index bef88e829..27d72fc9e 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -1,20 +1,31 @@ --- -title: Name of Recipe -id: -1 +title: Linking to Structured Metadata Through seeAlso +id: 53 layout: recipe -tags: [tbc] +tags: [metadata,presentation] summary: "tbc" --- ## Use Case -Describe the use case that the pattern is intended to solve. -Why is this pattern important? +You have a IIIF format resource for which you would like to offer researchers the opportunity to download a PDF version. You know from previous experience that researchers using your collection like to have images and texts available for offline reading, or you know you have patrons with bandwidth concerns who need to minimize their time online, or other reasons such as wanting to provide transcriptions and translations of objects' text. Through use of the `rendering` property, you are able to alert conforming clients to the presence of this other format (or yet other formats, such as ePub) so they in turn can provide appropriate UX workflows to users. ## Implementation Notes -What do you need to know to use this pattern? -How do you implement the pattern? +This property is used for pointing a viewer to a non-IIIF resource with information about IIIF resource to which it is attached. Most frequently, the non-IIIF resource will be structured metadata, and to be most effective, the target resource should be machine-readable. + +Three other properties may seem similar, so it's worth highlighting the differences. + +### homepage +Where `rendering` presents an additional representation of the same resource, [`homepage`](https://iiif.io/api/presentation/3.0/#homepage) points to a webpage _about_ the object represented by the resource. + +### accompanyingCanvas +An `accompanyingCanvas` resource is a IIIF resource presented simultaneously with the main resource, where a target of `rendering` is not IIIF-compatible and must be viewed outside the main resource's viewer. In addition, `accompanyingCanvas` is used for content complementary to the main resource while `rendering` points to additional representations of the same resource. + +### rendering +Unlike `seeAlso`, the `rendering` property provides the URI of an alternate representation of the current resource, such as in PDF or ePub format. + +Any resource may have the `seeAlso` property. Each instance of it may have multiple items contained inside it, provided each has the `id` and `type` properties; `label`, `format`, and `profile` are strongly recommended properties. Conforming clients may process this property in some way, but the outcomes of a client's processing has no defined form. ## Restrictions From 3b6d3271a6c17684e4ccf051f51979edf61422a9 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Tue, 5 Jan 2021 21:34:49 -0500 Subject: [PATCH 08/95] Added entries for seeAlso recipe --- _includes/links.md | 1 + index.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/_includes/links.md b/_includes/links.md index cb99471df..00dfa503f 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -16,6 +16,7 @@ [0015]: {{site.baseurl}}/recipe/0015-start/ "Begin playback at a specific point - Time-based media" [0026]: {{site.baseurl}}/recipe/0026-toc-opera/ "Table of Contents for A/V Content" +[0053]: {{site.baseurl}}/recipe/0053-seeAlso/ "Linking to Structured Metadata" [0064]: {{site.baseurl}}/recipe/0064-opera-one-canvas/ "Table of Contents for Multiple A/V Files on a Single Canvas" [0065]: {{site.baseurl}}/recipe/0065-opera-multiple-canvases/ "Table of Contents for Multiple A/V Files on Multiple Canvases" diff --git a/index.md b/index.md index 7a81c15b7..4dda33449 100644 --- a/index.md +++ b/index.md @@ -97,7 +97,7 @@ _(leading on to segmentation examples later)_ * Linking from external metadata to Image API * Linking from external metadata to Presentation API * Linking between Presentation API representations -* seeAlso scenarios (incl other manifests) (8) +* [Linking to Structured Metadata][0053] (8) ## Technical From 4a2cbad24df36104a86acef6e2272d27da92020b Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Tue, 5 Jan 2021 22:25:30 -0500 Subject: [PATCH 09/95] Made title parallel to recipe 46 on rendering --- recipe/0053-seeAlso/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index 27d72fc9e..6ed6fdcb1 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -1,5 +1,5 @@ --- -title: Linking to Structured Metadata Through seeAlso +title: Linking to Structured Metadata id: 53 layout: recipe tags: [metadata,presentation] From 6d36a9b3b4177630f196fc2196acba780149daa6 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Tue, 5 Jan 2021 22:29:17 -0500 Subject: [PATCH 10/95] Reformatted property explainer headings Cookbook authors felt the headings were not sufficiently distinguished from higher level headings. Absent some CSS editing, this seemed like a good way to distinguish them. --- recipe/0053-seeAlso/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index 6ed6fdcb1..d8fbe5079 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -16,13 +16,13 @@ This property is used for pointing a viewer to a non-IIIF resource with informat Three other properties may seem similar, so it's worth highlighting the differences. -### homepage -Where `rendering` presents an additional representation of the same resource, [`homepage`](https://iiif.io/api/presentation/3.0/#homepage) points to a webpage _about_ the object represented by the resource. +* homepage [(IIIF Presentation API reference)](https://iiif.io/api/presentation/3.0/#homepage) +Where `rendering` presents an additional representation of the same resource, `homepage` points to a webpage _about_ the object represented by the resource. -### accompanyingCanvas +* accompanyingCanvas [(IIIF Presentation API reference)](https://iiif.io/api/presentation/3.0/#accompanyingcanvas) An `accompanyingCanvas` resource is a IIIF resource presented simultaneously with the main resource, where a target of `rendering` is not IIIF-compatible and must be viewed outside the main resource's viewer. In addition, `accompanyingCanvas` is used for content complementary to the main resource while `rendering` points to additional representations of the same resource. -### rendering +* `rendering` [(IIIF Presentation API reference)](https://iiif.io/api/presentation/3.0/#rendering) Unlike `seeAlso`, the `rendering` property provides the URI of an alternate representation of the current resource, such as in PDF or ePub format. Any resource may have the `seeAlso` property. Each instance of it may have multiple items contained inside it, provided each has the `id` and `type` properties; `label`, `format`, and `profile` are strongly recommended properties. Conforming clients may process this property in some way, but the outcomes of a client's processing has no defined form. From aa9e5e8c7d6faf9f439b78889c2edb4ab143b42e Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Tue, 5 Jan 2021 22:31:45 -0500 Subject: [PATCH 11/95] Made explainer headings format consistent --- recipe/0053-seeAlso/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index d8fbe5079..c5539e9fa 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -16,10 +16,10 @@ This property is used for pointing a viewer to a non-IIIF resource with informat Three other properties may seem similar, so it's worth highlighting the differences. -* homepage [(IIIF Presentation API reference)](https://iiif.io/api/presentation/3.0/#homepage) +* `homepage` [(IIIF Presentation API reference)](https://iiif.io/api/presentation/3.0/#homepage) Where `rendering` presents an additional representation of the same resource, `homepage` points to a webpage _about_ the object represented by the resource. -* accompanyingCanvas [(IIIF Presentation API reference)](https://iiif.io/api/presentation/3.0/#accompanyingcanvas) +* `accompanyingCanvas` [(IIIF Presentation API reference)](https://iiif.io/api/presentation/3.0/#accompanyingcanvas) An `accompanyingCanvas` resource is a IIIF resource presented simultaneously with the main resource, where a target of `rendering` is not IIIF-compatible and must be viewed outside the main resource's viewer. In addition, `accompanyingCanvas` is used for content complementary to the main resource while `rendering` points to additional representations of the same resource. * `rendering` [(IIIF Presentation API reference)](https://iiif.io/api/presentation/3.0/#rendering) From 8b78975c98427636f85038e77fc85c7754029771 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Tue, 5 Jan 2021 22:39:58 -0500 Subject: [PATCH 12/95] Revised content for accuracy and thoroughness --- recipe/0053-seeAlso/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index c5539e9fa..cba19edfd 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -8,11 +8,11 @@ summary: "tbc" ## Use Case -You have a IIIF format resource for which you would like to offer researchers the opportunity to download a PDF version. You know from previous experience that researchers using your collection like to have images and texts available for offline reading, or you know you have patrons with bandwidth concerns who need to minimize their time online, or other reasons such as wanting to provide transcriptions and translations of objects' text. Through use of the `rendering` property, you are able to alert conforming clients to the presence of this other format (or yet other formats, such as ePub) so they in turn can provide appropriate UX workflows to users. +You have a IIIF format resource for which you would like to offer aggregators a machine-readable version. You know from previous experience that aggregators crawling your collection harvest best when handed structured metadata and are also then able to offer their readers faceting capabilities, making your resources amenable to focused discovery. Through use of the `seeAlso` property, you are able to alert an aggregator to the presence of a dataset so it in turn can provide appropriate and sophisticated information to users. ## Implementation Notes -This property is used for pointing a viewer to a non-IIIF resource with information about IIIF resource to which it is attached. Most frequently, the non-IIIF resource will be structured metadata, and to be most effective, the target resource should be machine-readable. +This property is used for pointing a viewer to the URI of a non-IIIF resource with information about the IIIF resource to which it is attached. Most frequently, the non-IIIF resource will be structured metadata, and to be most effective, the target resource should be machine-readable in a format such as Dublin Core, MODS, or RDF. The `type` value for `seeAlso` is usually "dataset". Three other properties may seem similar, so it's worth highlighting the differences. @@ -23,7 +23,7 @@ Where `rendering` presents an additional representation of the same resource, `h An `accompanyingCanvas` resource is a IIIF resource presented simultaneously with the main resource, where a target of `rendering` is not IIIF-compatible and must be viewed outside the main resource's viewer. In addition, `accompanyingCanvas` is used for content complementary to the main resource while `rendering` points to additional representations of the same resource. * `rendering` [(IIIF Presentation API reference)](https://iiif.io/api/presentation/3.0/#rendering) -Unlike `seeAlso`, the `rendering` property provides the URI of an alternate representation of the current resource, such as in PDF or ePub format. +Unlike `seeAlso`, the `rendering` property provides the URI of an alternate representation of the current resource, such as a PDF or ePub version. The `type` values for `rendering` vary more widely than do those for `seeAlso`, in keeping with the variety of target formats possible. Any resource may have the `seeAlso` property. Each instance of it may have multiple items contained inside it, provided each has the `id` and `type` properties; `label`, `format`, and `profile` are strongly recommended properties. Conforming clients may process this property in some way, but the outcomes of a client's processing has no defined form. From e8cd8ec570b34b3fff8f40791acb3b910dd8557c Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Tue, 5 Jan 2021 22:46:00 -0500 Subject: [PATCH 13/95] Edited sections --- recipe/0053-seeAlso/index.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index cba19edfd..db59f1ea6 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -29,20 +29,16 @@ Any resource may have the `seeAlso` property. Each instance of it may have multi ## Restrictions -When is this pattern is usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? - -Delete this section if it is not needed. -If you don't know what the restrictions might be initially, just leave the following line: -**Unknown - Help Needed** +No known restrictions ## Example Describe the solution in prose and provide an example. The example json document must be an external document, and imported with the following: -{% include manifest_links.html viewers="UV, Mirador, Tify, Curation" manifest="manifest.json" %} +{% include manifest_links.html viewers="Mirador" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" %} +{% include jsonviewer.html src="manifest.json" config='data-line="1"' %} The direct link to the fixture is a useful convenience. From a29f166aba4355253509ec17dfefc8d617d85962 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Wed, 6 Jan 2021 09:21:39 -0500 Subject: [PATCH 14/95] Added related recipes (that parallel recipe 46) --- recipe/0053-seeAlso/index.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index db59f1ea6..6abaec072 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -44,7 +44,12 @@ The direct link to the fixture is a useful convenience. ## Related Recipes -Provide a bulleted list of related recipes and why they are relevant. +* [Audio Presentation with Accompanying Image][0014], using `accompanyingCanvas` to present one IIIF resource simultaneously with another +* [Choice (simplest)][0033] for showing multiple representations of the same view +* [Choice — multispectral flavored example, with image services][0034] for showing multiple representations of the same view with Image Services +* [homepage][0047] for pointing to a web page about the object represented by the current resource +* [Providing Alternative Representations][0046] for data representations of the same object +* [A museum object][0059] for using `rendering` to provide a 3D model {% include acronyms.md %} {% include links.md %} From 33c4a7b34c26cb7953823e5b867c92d1324db764 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Wed, 6 Jan 2021 09:48:19 -0500 Subject: [PATCH 15/95] Edited copy for clarity --- recipe/0053-seeAlso/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index 6abaec072..1235f8b8b 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -8,7 +8,7 @@ summary: "tbc" ## Use Case -You have a IIIF format resource for which you would like to offer aggregators a machine-readable version. You know from previous experience that aggregators crawling your collection harvest best when handed structured metadata and are also then able to offer their readers faceting capabilities, making your resources amenable to focused discovery. Through use of the `seeAlso` property, you are able to alert an aggregator to the presence of a dataset so it in turn can provide appropriate and sophisticated information to users. +You have a IIIF format resource for which you would like to offer aggregators a machine-readable version. You know from previous experience that aggregators crawling your collection harvest best when handed structured metadata and are also then able to offer their readers faceting capabilities, making your resources amenable to focused discovery. Through use of the `seeAlso` property, you are able to alert an aggregator to the presence of a dataset so the aggregator can provide appropriate and sophisticated information about your resource to the aggregator's users. ## Implementation Notes From 45982ac74180cc6cbfe088e6dcded9fbd4c77ceb Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Wed, 6 Jan 2021 09:50:09 -0500 Subject: [PATCH 16/95] Edited copy for readability --- recipe/0053-seeAlso/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index 1235f8b8b..0b5d7e638 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -12,7 +12,7 @@ You have a IIIF format resource for which you would like to offer aggregators a ## Implementation Notes -This property is used for pointing a viewer to the URI of a non-IIIF resource with information about the IIIF resource to which it is attached. Most frequently, the non-IIIF resource will be structured metadata, and to be most effective, the target resource should be machine-readable in a format such as Dublin Core, MODS, or RDF. The `type` value for `seeAlso` is usually "dataset". +This property is used for pointing a viewer to the URI of a non-IIIF resource with information about the IIIF resource to which it is attached. Most frequently, the non-IIIF resource will be structured metadata, and to be most effective, the target resource should be a machine-readable format such as Dublin Core, MODS, or RDF. The `type` value for `seeAlso` is usually `dataset`. Three other properties may seem similar, so it's worth highlighting the differences. From 5c7e1fd0e5d7640aa26225c9c3378d0c1f0556c4 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Thu, 7 Jan 2021 09:58:47 -0500 Subject: [PATCH 17/95] commit to go back to 64 --- _includes/links.md | 1 + index.md | 1 + recipe/0219-using-caption-file/index.md | 44 +++++++++++++++++ recipe/0219-using-caption-file/manifest.json | 51 ++++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 recipe/0219-using-caption-file/index.md create mode 100644 recipe/0219-using-caption-file/manifest.json diff --git a/_includes/links.md b/_includes/links.md index cb99471df..ffac79115 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -21,6 +21,7 @@ [0068]: {{site.baseurl}}/recipe/0068-newspaper/ "A newspaper" [0117]: {{site.baseurl}}/recipe/0117-add-image-thumbnail/ "Manifest Thumbnail" +[0219]: {{site.baseurl}}/recipe/0219-using-caption-file/ "Using a caption file with A/V content" [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" diff --git a/index.md b/index.md index 7a81c15b7..58ea7f599 100644 --- a/index.md +++ b/index.md @@ -46,6 +46,7 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: .. * Transcription of image-based content - various examples gathered (43,44,45,46,47,48) * Transcription of audio and video +* [Using a caption file with A/V content][0219] * Transcription of content into XML, with XPaths to select a segment ## Other kinds of annotations diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md new file mode 100644 index 000000000..dc4cd5a0d --- /dev/null +++ b/recipe/0219-using-caption-file/index.md @@ -0,0 +1,44 @@ +--- +title: Mixed Image Service references +id: 75 +layout: recipe +tags: [tbc] +summary: "tbc" +--- + + +## Use Case + +Why is this pattern is important? + +## Implementation notes + +How does one implement the pattern? + +## Restrictions + +When is this pattern 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.: + +``` 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" +} +``` + +# Related recipes + +Provide a bulleted list of related recipes and why they are relevant. + + +{% include acronyms.md %} +{% include links.md %} + diff --git a/recipe/0219-using-caption-file/manifest.json b/recipe/0219-using-caption-file/manifest.json new file mode 100644 index 000000000..e476eaf1c --- /dev/null +++ b/recipe/0219-using-caption-file/manifest.json @@ -0,0 +1,51 @@ +{ + "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners", + "type": "Manifest", + "label": "Lunchroom manners", + "description": "Beginning Reponsibility: Lunchroom Manners [motion picture] Coronet Films", + "sequences": [ + { + "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners/sequence/1", + "type": "Sequence", + "canvases": [ + { + "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners/canvas/1", + "type": "Canvas", + "label": "Beginning Reponsibility: Lunchroom Manners [motion picture] Coronet Films", + "description": "Lunchroom manners are taught by following a boy through his lunchroom experience", + "height": 360, + "width": 480, + "duration": 660, + "content": [ + { + "id": "...", + "type": "AnnotationPage", + "items": [ + { + "id": "...", + "type": "Annotation", + "motivation": "painting", + "body": [ + { + "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners/low/lunchroom_manners_256kb.mp4", + "type": "Video", + "label": "Low", + "format": "video/mp4" + }, + { + "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners/lunchroom_manners.vtt", + "type": "Text", + "format": "text/vtt", + "language": "en" + } + ] + } + ], + "target": "http://dlib.indiana.edu/iiif_av/canvas/1" + } + ] + } + ] + } + ] +} \ No newline at end of file From 55e3915b9407e3095c218f6649203f7bfd72596f Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Thu, 7 Jan 2021 16:24:34 -0500 Subject: [PATCH 18/95] Add link to Mirador --- recipe/0219-using-caption-file/index.md | 30 +++---- recipe/0219-using-caption-file/manifest.json | 88 +++++++++----------- 2 files changed, 54 insertions(+), 64 deletions(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index dc4cd5a0d..2b8a587f1 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -2,42 +2,38 @@ title: Mixed Image Service references id: 75 layout: recipe -tags: [tbc] +tags: [video, caption, subtitle, presentation] summary: "tbc" --- ## Use Case -Why is this pattern is important? +Captions and/or subtitles may be available for your video content and you may want to enable them for your IIIF video resources. ## Implementation notes -How does one implement the pattern? +Caption and subtitle file formats are used to mark up the external text track resources in connection with the HTML element of a video file. The markup file formats use time tags that allow for time alignment of the video content and the captions or subtitles. + +Offering the caption file as an Item in the same Annotation `body` that contains the media file itself enables us to express the tight relationship between the two. The file type clarifies the relationship. + +The linking property of type `seeAlso` is not appropriate because captions and subtitles do not contain metadata about the resource. Neither are they an alternative representation of the resource, so the linking property of type `rendering` is also not appropriate. ## Restrictions -When is this pattern usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? (Not present if not needed.) +No restrictions. ## Example -Describe in prose and provide examples, e.g.: +In this example we use a caption file in the WebVTT (Web Video Text Tracks) format, but one could just as well use a subtitle file in the SRT format, or other text-based formats used for the same purpose. -``` 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 manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} +{% include jsonviewer.html src="manifest.json" config='data-line="31-36"%} # Related recipes -Provide a bulleted list of related recipes and why they are relevant. - +- [Simplest Manifest - Video][0003] +- [Transformation - WebVTT or OHMS XML to Annotations][0079] - Recipe using Annotations to express the captions of a video. {% include acronyms.md %} {% include links.md %} diff --git a/recipe/0219-using-caption-file/manifest.json b/recipe/0219-using-caption-file/manifest.json index e476eaf1c..50ce6852f 100644 --- a/recipe/0219-using-caption-file/manifest.json +++ b/recipe/0219-using-caption-file/manifest.json @@ -1,51 +1,45 @@ { - "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners", + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "{{ id.url }}", "type": "Manifest", - "label": "Lunchroom manners", - "description": "Beginning Reponsibility: Lunchroom Manners [motion picture] Coronet Films", - "sequences": [ - { - "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners/sequence/1", - "type": "Sequence", - "canvases": [ - { - "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners/canvas/1", - "type": "Canvas", - "label": "Beginning Reponsibility: Lunchroom Manners [motion picture] Coronet Films", - "description": "Lunchroom manners are taught by following a boy through his lunchroom experience", - "height": 360, - "width": 480, - "duration": 660, - "content": [ - { - "id": "...", - "type": "AnnotationPage", - "items": [ - { - "id": "...", - "type": "Annotation", - "motivation": "painting", - "body": [ - { - "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners/low/lunchroom_manners_256kb.mp4", - "type": "Video", - "label": "Low", - "format": "video/mp4" - }, - { - "id": "http://dlib.indiana.edu/iiif_av/lunchroom_manners/lunchroom_manners.vtt", - "type": "Text", - "format": "text/vtt", - "language": "en" - } - ] - } - ], - "target": "http://dlib.indiana.edu/iiif_av/canvas/1" - } - ] - } + "label": { "en": [ "Lunchroom Manners" ] }, + "items": [ + { + "id": "{{ id.path }}/canvas", + "type": "Canvas", + "height": 360, + "width": 480, + "duration": 572.034, + "items": [ + { + "id": "{{ id.path }}/canvas/page", + "type": "AnnotationPage", + "items": [ + { + "id": "{{ id.path }}/canvas/page/annotation", + "type": "Annotation", + "motivation": "painting", + "body": [ + { + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", + "type": "Video", + "height": 360, + "width": 480, + "duration": 572.034, + "format": "video/mp4" + }, + { + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", + "type": "Text", + "format": "text/vtt", + "language": "en" + } + ], + "target": "{{ id.path }}/canvas" + } ] - } + } + ] + } ] -} \ No newline at end of file + } \ No newline at end of file From fbf5e15f9e1db2eec66691a0e9d131217ba116e9 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Thu, 7 Jan 2021 18:26:24 -0500 Subject: [PATCH 19/95] Title fixes and ID fix. --- _includes/links.md | 2 +- index.md | 2 +- recipe/0219-using-caption-file/index.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_includes/links.md b/_includes/links.md index ffac79115..b601d60b3 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -21,7 +21,7 @@ [0068]: {{site.baseurl}}/recipe/0068-newspaper/ "A newspaper" [0117]: {{site.baseurl}}/recipe/0117-add-image-thumbnail/ "Manifest Thumbnail" -[0219]: {{site.baseurl}}/recipe/0219-using-caption-file/ "Using a caption file with A/V content" +[0219]: {{site.baseurl}}/recipe/0219-using-caption-file/ "Using a Caption File with Video Content" [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" diff --git a/index.md b/index.md index 58ea7f599..8f8d18bb0 100644 --- a/index.md +++ b/index.md @@ -46,7 +46,7 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: .. * Transcription of image-based content - various examples gathered (43,44,45,46,47,48) * Transcription of audio and video -* [Using a caption file with A/V content][0219] +* [Using a Caption File with Video Content][0219] * Transcription of content into XML, with XPaths to select a segment ## Other kinds of annotations diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 2b8a587f1..0e3c7a35d 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -1,6 +1,6 @@ --- -title: Mixed Image Service references -id: 75 +title: Using a Caption File with Video Content +id: 219 layout: recipe tags: [video, caption, subtitle, presentation] summary: "tbc" From c38140ac39d2707b43025341384230fa0d405a0b Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Thu, 7 Jan 2021 18:36:07 -0500 Subject: [PATCH 20/95] Add newline --- recipe/0219-using-caption-file/manifest.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipe/0219-using-caption-file/manifest.json b/recipe/0219-using-caption-file/manifest.json index 50ce6852f..8e898b626 100644 --- a/recipe/0219-using-caption-file/manifest.json +++ b/recipe/0219-using-caption-file/manifest.json @@ -42,4 +42,5 @@ ] } ] - } \ No newline at end of file + } + \ No newline at end of file From 314bc3ab01fd741ee07f73dc475f14cd4c5439ac Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 09:26:13 -0500 Subject: [PATCH 21/95] add end quote in 'data-line' --- recipe/0219-using-caption-file/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 0e3c7a35d..6215cc31d 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -25,10 +25,10 @@ No restrictions. ## Example -In this example we use a caption file in the WebVTT (Web Video Text Tracks) format, but one could just as well use a subtitle file in the SRT format, or other text-based formats used for the same purpose. +In this example we use a caption file in the WebVTT (Web Video Text Tracks) format, but one could just as well use a subtitle file in the SRT format, or other text-based format used for the same purpose. {% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" config='data-line="31-36"%} +{% include jsonviewer.html src="manifest.json" config='data-line'="31-36"%} # Related recipes From dc352e89c23d90ecc641416106c2bf1de06848cf Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 09:36:13 -0500 Subject: [PATCH 22/95] Fixing quote again --- recipe/0219-using-caption-file/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 6215cc31d..70809bbc5 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -28,7 +28,7 @@ No restrictions. In this example we use a caption file in the WebVTT (Web Video Text Tracks) format, but one could just as well use a subtitle file in the SRT format, or other text-based format used for the same purpose. {% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" config='data-line'="31-36"%} +{% include jsonviewer.html src="manifest.json" config='data-line="31-36"'%} # Related recipes From a521ba131dfb6263ea0282b7604e38e082117ca7 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 09:49:06 -0500 Subject: [PATCH 23/95] Minor changes --- recipe/0219-using-caption-file/index.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 70809bbc5..77caebb0d 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -3,7 +3,7 @@ title: Using a Caption File with Video Content id: 219 layout: recipe tags: [video, caption, subtitle, presentation] -summary: "tbc" +summary: "Representing the tight relationship between a video file and its caption file." --- @@ -15,14 +15,10 @@ Captions and/or subtitles may be available for your video content and you may wa Caption and subtitle file formats are used to mark up the external text track resources in connection with the HTML element of a video file. The markup file formats use time tags that allow for time alignment of the video content and the captions or subtitles. -Offering the caption file as an Item in the same Annotation `body` that contains the media file itself enables us to express the tight relationship between the two. The file type clarifies the relationship. +Offering the caption file as an Item in the same Annotation `body` that contains the media file itself enables us to express the tight relationship between the two. The Item `type` clarifies the relationship. The linking property of type `seeAlso` is not appropriate because captions and subtitles do not contain metadata about the resource. Neither are they an alternative representation of the resource, so the linking property of type `rendering` is also not appropriate. -## Restrictions - -No restrictions. - ## Example In this example we use a caption file in the WebVTT (Web Video Text Tracks) format, but one could just as well use a subtitle file in the SRT format, or other text-based format used for the same purpose. From b74b7678489214f47b537865c5adbdb1d6ddb20a Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 11:37:26 -0500 Subject: [PATCH 24/95] Manifest highlight range corrected --- recipe/0219-using-caption-file/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 77caebb0d..d52266cce 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -24,7 +24,7 @@ The linking property of type `seeAlso` is not appropriate because captions and s In this example we use a caption file in the WebVTT (Web Video Text Tracks) format, but one could just as well use a subtitle file in the SRT format, or other text-based format used for the same purpose. {% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" config='data-line="31-36"'%} +{% include jsonviewer.html src="manifest.json" config='data-line="35-40"'%} # Related recipes From 08b4d8323364d1c644d8cb96506041a037e50c43 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 8 Jan 2021 11:23:38 -0800 Subject: [PATCH 25/95] first draft use case and manifest --- recipe/0118_multivalue/index.md | 11 ++++----- recipe/0118_multivalue/manifest.json | 36 ++++++++++++++++------------ 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index bef88e829..a8b8e24a9 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -1,6 +1,6 @@ --- -title: Name of Recipe -id: -1 +title: Displaying Single and Multiple Values (Arrays) +id: 118 layout: recipe tags: [tbc] summary: "tbc" @@ -8,17 +8,17 @@ summary: "tbc" ## Use Case -Describe the use case that the pattern is intended to solve. -Why is this pattern important? +The language map pattern requires that all values are supplied as an array, whether a single value string or a string of multiple values. For example, a work that is known by more than one title can include each title variation as a separate string within a single array; if the work has only a single title, the title would also be included as an array with a single value. In the use case highlighted in this recipe, the work has multiple titles in both English and French, with two separate arrays -- one array for the English and one for the French. ## Implementation Notes +Note that per Presentation API 4.4, in language maps "[t]he associated values must be arrays of strings, where each item is the content in the given language." What do you need to know to use this pattern? How do you implement the pattern? ## Restrictions -When is this pattern is usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? +When is this pattern is usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? Delete this section if it is not needed. If you don't know what the restrictions might be initially, just leave the following line: @@ -41,4 +41,3 @@ Provide a bulleted list of related recipes and why they are relevant. {% include acronyms.md %} {% include links.md %} - diff --git a/recipe/0118_multivalue/manifest.json b/recipe/0118_multivalue/manifest.json index 1acb77240..fb408873e 100644 --- a/recipe/0118_multivalue/manifest.json +++ b/recipe/0118_multivalue/manifest.json @@ -5,39 +5,46 @@ "label": { "en": [ "Whistler's Mother", - "Arrangement in Grey and Black No. 1: The Artist's Mother" + "Arrangement in Grey and Black No. 1" ], "fr": [ "Arrangement en gris et noir no 1", "Portrait de la mère de l'artiste", "La Mère de Whistler" - ], - "none": [ "Whistler (1871)" ] + ] }, "metadata": [ { "label": { - "en": ["Creator"], - "fr": ["Auteur"] + "en": [ + "Creator" + ] }, "value": { - "none": ["Whistler, James Abbott McNeill"] + "none": [ + "Whistler, James Abbott McNeill" + ] } - } + } ], "summary": { - "en": ["A painting in oil on canvas created by the American-born painter James McNeill Whistler, in 1871."] + "en": [ + "A painting in oil on canvas created by the American-born painter James McNeill Whistler, in 1871." + ] }, "requiredStatement": { "label": { - "en": [ "Held By" ], - "fr": [ "Détenu par" ] + "en": [ + "Held By" + ] }, "value": { - "none": [ "Musée d'Orsay, Paris, France" ] + "none": [ + "Musée d'Orsay, Paris, France" + ] } }, - + "items": [ { "id": "https://example.org/iiif/text-language/canvas1", @@ -59,11 +66,10 @@ "format": "image/jpg" }, "target": "https://example.org/iiif/text-language/canvas1" - } + } ] } ] - } + } ] } - \ No newline at end of file From 2bead4a5d6ca2217563d468a435e195a30251064 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 8 Jan 2021 11:27:32 -0800 Subject: [PATCH 26/95] add recipe to links.md --- _includes/links.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_includes/links.md b/_includes/links.md index 70efcc990..e0e602df2 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -20,6 +20,8 @@ [0068]: {{site.baseurl}}/recipe/0068-newspaper/ "A newspaper" +[0118]: {{site.baseurl}}/recipe/0118_multivalue/ "Displaying Single and Multiple Values with Language Maps" + [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" @@ -28,4 +30,3 @@ [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" - From 2d17240a947e8becad0ab4116d9ddea68edfdaee Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 8 Jan 2021 11:29:20 -0800 Subject: [PATCH 27/95] add recipe to home page --- index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 7978bb82d..4abcad243 100644 --- a/index.md +++ b/index.md @@ -30,12 +30,13 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: .. * [Image and Canvas with Differing Dimensions][0004] (26) * [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] (24,25) * Multiple values and languages (3,4,6) +* [Displaying Single and Multiple Values with Language Maps][0118] * [Embedding HTML in descriptive properties][0007] (64) * [Rights statement\(s\)][0008] (7) * thumbnail algorithm / discussion * [Simple Manifest - Book][0009] (19) * [Viewing direction and its effect on navigation][0010] (11,12,13,14) -* Book (paging variations) (15,16,17) +* Book (paging variations) (15,16,17) * [Load a Preview Image Before the Main Content][0013] * [Audio Presentation with Accompanying Image][0014] * [Load Manifest Beginning with a Specific Canvas][0202] @@ -75,7 +76,7 @@ _(leading on to segmentation examples later)_ * Choice (simplest) (28) * Choice - multispectral flavored example, with image services (29) -* foldouts, etc (Choice or non-paged interlude (flaps vs maps))? +* foldouts, etc (Choice or non-paged interlude (flaps vs maps))? * [Multiple images (master/detail)][detail-image] (30,31) * Multiple images and multiple choices (32,33,34) * [Annotating part of an image to a Canvas][recipe-segment-image-part] (e.g., crop out scanner) (35,36,37,38) From 43206961f06d71fb63eca65f86346bd55b300cd4 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 14:37:29 -0500 Subject: [PATCH 28/95] Change for Mirador --- _includes/links.md | 2 +- index.md | 2 +- recipe/0219-using-caption-file/index.md | 4 ++-- recipe/0219-using-caption-file/manifest.json | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/_includes/links.md b/_includes/links.md index b601d60b3..09403990a 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -21,7 +21,7 @@ [0068]: {{site.baseurl}}/recipe/0068-newspaper/ "A newspaper" [0117]: {{site.baseurl}}/recipe/0117-add-image-thumbnail/ "Manifest Thumbnail" -[0219]: {{site.baseurl}}/recipe/0219-using-caption-file/ "Using a Caption File with Video Content" +[0219]: {{site.baseurl}}/recipe/0219-using-caption-file/ "Using Captions and Subtitles with Video Content" [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" diff --git a/index.md b/index.md index 8f8d18bb0..8a3b2aca3 100644 --- a/index.md +++ b/index.md @@ -46,7 +46,7 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: .. * Transcription of image-based content - various examples gathered (43,44,45,46,47,48) * Transcription of audio and video -* [Using a Caption File with Video Content][0219] +* [Using Caption and Subtitles with Video Content][0219] * Transcription of content into XML, with XPaths to select a segment ## Other kinds of annotations diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index d52266cce..3c0f22239 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -1,5 +1,5 @@ --- -title: Using a Caption File with Video Content +title: Using Captions and Subtitles with Video Content id: 219 layout: recipe tags: [video, caption, subtitle, presentation] @@ -23,7 +23,7 @@ The linking property of type `seeAlso` is not appropriate because captions and s In this example we use a caption file in the WebVTT (Web Video Text Tracks) format, but one could just as well use a subtitle file in the SRT format, or other text-based format used for the same purpose. -{% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} +{% include manifest_links.html viewers="Mirador" manifest="manifest.json" %} {% include jsonviewer.html src="manifest.json" config='data-line="35-40"'%} # Related recipes diff --git a/recipe/0219-using-caption-file/manifest.json b/recipe/0219-using-caption-file/manifest.json index 8e898b626..ddfa983c7 100644 --- a/recipe/0219-using-caption-file/manifest.json +++ b/recipe/0219-using-caption-file/manifest.json @@ -32,6 +32,7 @@ "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", "type": "Text", "format": "text/vtt", + "label": {["en": [ "Captions in WebVTT format" ]]}, "language": "en" } ], From a8299877e67ff8d960b9ca82da0e959476f18e53 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 14:42:42 -0500 Subject: [PATCH 29/95] removing extra bracket pair --- recipe/0219-using-caption-file/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0219-using-caption-file/manifest.json b/recipe/0219-using-caption-file/manifest.json index ddfa983c7..bb645d22f 100644 --- a/recipe/0219-using-caption-file/manifest.json +++ b/recipe/0219-using-caption-file/manifest.json @@ -32,7 +32,7 @@ "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", "type": "Text", "format": "text/vtt", - "label": {["en": [ "Captions in WebVTT format" ]]}, + "label": {"en": [ "Captions in WebVTT format" ]}, "language": "en" } ], From 39b1d03dfd127015f4d0e6d75b7be3ea27fc3ada Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 8 Jan 2021 11:50:46 -0800 Subject: [PATCH 30/95] first complete draft --- recipe/0118_multivalue/index.md | 26 +++++++------------------- recipe/0118_multivalue/manifest.json | 2 +- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index a8b8e24a9..6e550bb82 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -1,39 +1,27 @@ --- -title: Displaying Single and Multiple Values (Arrays) +title: Displaying Single and Multiple Values with Language Maps id: 118 layout: recipe tags: [tbc] -summary: "tbc" +summary: "The language map pattern requires that all values are supplied as an array, whether a single value string or a string of multiple values." --- ## Use Case -The language map pattern requires that all values are supplied as an array, whether a single value string or a string of multiple values. For example, a work that is known by more than one title can include each title variation as a separate string within a single array; if the work has only a single title, the title would also be included as an array with a single value. In the use case highlighted in this recipe, the work has multiple titles in both English and French, with two separate arrays -- one array for the English and one for the French. +The language map pattern requires that all values are supplied as an array, whether a single value string or a string of multiple values. For example, a work that is known by more than one title should include each title variation (within the same language) as a separate string within a single array; if the work has only a single title, the title would be included as a single-value array. ## Implementation Notes -Note that per Presentation API 4.4, in language maps "[t]he associated values must be arrays of strings, where each item is the content in the given language." -What do you need to know to use this pattern? -How do you implement the pattern? - -## Restrictions - -When is this pattern is usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? - -Delete this section if it is not needed. -If you don't know what the restrictions might be initially, just leave the following line: -**Unknown - Help Needed** +Language maps are required of all strings that are intended to be displayed to the user (`label` and `summary` properties, as well as `label` and `value` properties of the `metadata` and `requiredStatement` objects), and all "associated values must be arrays of strings, where each item is the content in the given language." For more information, see the Presentation API +[Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. ## Example -Describe the solution in prose and provide an example. -The example json document must be an external document, and imported with the following: +In this example, the work has multiple titles in both English and French, with two separate arrays -- one array for the English (lines 6-9) and one for the French (lines 10-14). In the `metadata` (lines 18-27), `summary` (lines 31-33), `requiredStatement`(lines 36-45) objects, the labels and values are included as single string arrays. {% include manifest_links.html viewers="UV, Mirador, Tify, Curation" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" %} - -The direct link to the fixture is a useful convenience. +{% include jsonviewer.html src="manifest.json" config='data-line="6-9, 10-14, 18-27, 31-33, 36-45"'%} ## Related Recipes diff --git a/recipe/0118_multivalue/manifest.json b/recipe/0118_multivalue/manifest.json index fb408873e..2a9107c89 100644 --- a/recipe/0118_multivalue/manifest.json +++ b/recipe/0118_multivalue/manifest.json @@ -13,7 +13,7 @@ "La Mère de Whistler" ] }, - "metadata": [ + "metadata": [ { "label": { "en": [ From 5a01b1b41e912611d9a4b15c7ec5decacb3b9310 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 14:51:56 -0500 Subject: [PATCH 31/95] Fixing range of highlight after adding label --- recipe/0219-using-caption-file/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 3c0f22239..14d977b56 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -24,7 +24,7 @@ The linking property of type `seeAlso` is not appropriate because captions and s In this example we use a caption file in the WebVTT (Web Video Text Tracks) format, but one could just as well use a subtitle file in the SRT format, or other text-based format used for the same purpose. {% include manifest_links.html viewers="Mirador" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" config='data-line="35-40"'%} +{% include jsonviewer.html src="manifest.json" config='data-line="35-45"'%} # Related recipes From 0ecf933c062efe7205d2951ef3cd9dc9fd70e5d3 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 8 Jan 2021 12:11:27 -0800 Subject: [PATCH 32/95] add related recipes --- recipe/0118_multivalue/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 6e550bb82..6708ab287 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -25,7 +25,8 @@ In this example, the work has multiple titles in both English and French, with t ## Related Recipes -Provide a bulleted list of related recipes and why they are relevant. +* [Internationalization and Multi-language Values][0006] +* [Metadata][0029] {% include acronyms.md %} {% include links.md %} From a22a23ce27de33bf04e949c36c602b737fd8cd6c Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 17:47:27 -0500 Subject: [PATCH 33/95] Other requested changes --- recipe/0219-using-caption-file/index.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 14d977b56..34b5592db 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -3,7 +3,7 @@ title: Using Captions and Subtitles with Video Content id: 219 layout: recipe tags: [video, caption, subtitle, presentation] -summary: "Representing the tight relationship between a video file and its caption file." +summary: "Representing the tight relationship between a video file and its caption or subtitle file." --- @@ -13,11 +13,15 @@ Captions and/or subtitles may be available for your video content and you may wa ## Implementation notes -Caption and subtitle file formats are used to mark up the external text track resources in connection with the HTML element of a video file. The markup file formats use time tags that allow for time alignment of the video content and the captions or subtitles. +Caption, subtitle, and transcription files are text-based files commonly associated with A/V content, each defined for a specific intended use. Caption and subtitle file formats are used to mark up the external text track resources in connection with the HTML element of a video file. The markup file formats use time tags that allow for time alignment of the video content with the captions or subtitles. -Offering the caption file as an Item in the same Annotation `body` that contains the media file itself enables us to express the tight relationship between the two. The Item `type` clarifies the relationship. +Offering the caption file as an Item in the same Annotation `body` that contains the media file itself enables us to express the tight relationship between the two. The `type` property of the Item clarifies the relationship. -The linking property of type `seeAlso` is not appropriate because captions and subtitles do not contain metadata about the resource. Neither are they an alternative representation of the resource, so the linking property of type `rendering` is also not appropriate. +A transcription file, on the other hand, is a text-based representation of an audio or video file. As an alternative representation of the main resource, a transcription should be added to a resource via a linking property of type `rendering` instead of using the pattern described here. See related recipe below. + +## Restrictions + +Formats other than WebVTT are supported in IIIF, but may not be as widely supported in viewers. ## Example @@ -29,8 +33,9 @@ In this example we use a caption file in the WebVTT (Web Video Text Tracks) form # Related recipes - [Simplest Manifest - Video][0003] -- [Transformation - WebVTT or OHMS XML to Annotations][0079] - Recipe using Annotations to express the captions of a video. +- [Transcription of Audio and Video][0017] +- [Providing Alternative Representations][0046] +- [Transformation - WebVTT or OHMS XML to Annotations][0079] {% include acronyms.md %} {% include links.md %} - From 8dc8deb98264b6f652f2c50980399707a3d992a8 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 17:52:08 -0500 Subject: [PATCH 34/95] minor change to text --- recipe/0219-using-caption-file/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 34b5592db..72bcc81a3 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -9,7 +9,7 @@ summary: "Representing the tight relationship between a video file and its capti ## Use Case -Captions and/or subtitles may be available for your video content and you may want to enable them for your IIIF video resources. +Captions and subtitles may be available for your video content and you may want to enable them for your IIIF video resources. ## Implementation notes From e4bd80e6ee7b26d25b51e0bbc97adc4fb13e6853 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Fri, 8 Jan 2021 17:57:21 -0500 Subject: [PATCH 35/95] another minor text change --- recipe/0219-using-caption-file/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 72bcc81a3..569872dfc 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -21,11 +21,11 @@ A transcription file, on the other hand, is a text-based representation of an au ## Restrictions -Formats other than WebVTT are supported in IIIF, but may not be as widely supported in viewers. +Formats other than WebVTT (Web Video Text Tracks) are supported in IIIF, but may not be as widely supported in viewers. ## Example -In this example we use a caption file in the WebVTT (Web Video Text Tracks) format, but one could just as well use a subtitle file in the SRT format, or other text-based format used for the same purpose. +In this example we use a caption file in the WebVTT format, but one could just as well use a subtitle file in the SRT format, or other text-based format used for the same purpose. {% include manifest_links.html viewers="Mirador" manifest="manifest.json" %} {% include jsonviewer.html src="manifest.json" config='data-line="35-45"'%} From 7773ed80ca03ad591c4051c55f0a9358379c867a Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Mon, 11 Jan 2021 13:17:23 -0500 Subject: [PATCH 36/95] =?UTF-8?q?Initial=20commit=20to=20version=20control?= =?UTF-8?q?=20=E2=9A=A1=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- recipe/0053-seeAlso/ezukushi.xml | 227 +++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 recipe/0053-seeAlso/ezukushi.xml diff --git a/recipe/0053-seeAlso/ezukushi.xml b/recipe/0053-seeAlso/ezukushi.xml new file mode 100644 index 000000000..9c52d904d --- /dev/null +++ b/recipe/0053-seeAlso/ezukushi.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Small]]> + + + image/png + empty_picture.png + 346c19f9.blob + be1a7403018b6b893228afcf28e481a4 + + + + + + + + + + + + + + <![CDATA[Medium]]> + + + image/png + empty_picture.png + 142d7b6c.blob + be1a7403018b6b893228afcf28e481a4 + + + + + + + + + + + + + + <![CDATA[Thumbnail]]> + + + image/png + empty_picture.png + b3494346.blob + be1a7403018b6b893228afcf28e481a4 + + + + + + + + + + + + + + <![CDATA[OriginalJpeg]]> + + + image/png + empty_picture.png + ed338955.blob + be1a7403018b6b893228afcf28e481a4 + + + + + + + + + + + + + + + + + + + + + + + image/png + empty_picture.png + 91be8856.blob + be1a7403018b6b893228afcf28e481a4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 5f5f6369ad72b8eed117db41ed353a274a28ad9b Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Mon, 11 Jan 2021 13:18:53 -0500 Subject: [PATCH 37/95] Updated to a real manifest from a placeholder --- recipe/0053-seeAlso/manifest.json | 228 +++++++++++++++++++++++++++++- 1 file changed, 223 insertions(+), 5 deletions(-) diff --git a/recipe/0053-seeAlso/manifest.json b/recipe/0053-seeAlso/manifest.json index e7f4e7785..b85a014dc 100644 --- a/recipe/0053-seeAlso/manifest.json +++ b/recipe/0053-seeAlso/manifest.json @@ -1,8 +1,226 @@ { - "@context": [ "http://iiif.io/api/presentation/3/context.json" ], - "id": "{{ id.url }} ", - "type": "Manifest", - "label": { - "none": [""] + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "{{ id.url }}", + "type": "Manifest", + "label": { + "en": [ + "Alternative Representations Through Rendering" + ] + }, + "summary": { "en": ["Playbill for \"Akiba gongen kaisen-banashi,\" \"Futatsu chōchō kuruwa nikki\" and \"Godairiki koi no fūjime\" performed at the Chikugo Theater in Osaka from the fifth month of Kaei 2 (May, 1849); main actors: Gadō Kataoka II, Ebizō Ichikawa VI, Kitō Sawamura II, Daigorō Mimasu IV and Karoku Nakamura I; on front cover: producer Mominosuke Ichikawa's crest."] }, + "viewingDirection": "right-to-left", + "rendering": [ + { + "id": "https://fixtures.iiif.io/other/UCLA/kabuki_ezukushi_rtl.pdf", + "type": "Text", + "label": { "en": [ "PDF version" ] }, + "format": "application/pdf" + } + ], + "seeAlso": [ + { + "id": "{{ id.path }}/ezukushi.xml", + "type": "Dataset", + "label": { "en": [ "Dublin Core metadata" ] }, + "format": "text/xml", + "profile": "https://www.dublincore.org/schemas/xmls/qdc/dc.xsd" + } + ], + "items": [ + { + "id": "{{ id.path }}/canvas/p1", + "type": "Canvas", + "label": { + "en": [ + "front cover" + ] + }, + "width": 3497, + "height": 4823, + "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/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4823, + "width": 3497, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p1" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p2", + "type": "Canvas", + "label": { + "en": [ + "pages 1–2" + ] + }, + "width": 6062, + "height": 4804, + "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/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 6062, + "height": 4804, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p2" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p3", + "type": "Canvas", + "label": { + "en": [ + "pages 3–4" + ] + }, + "width": 6127, + "height": 4776, + "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/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 6127, + "height": 4776, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p3" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p4", + "type": "Canvas", + "label": { + "en": [ + "pages 5–6" + ] + }, + "width": 6124, + "height": 4751, + "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/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 6124, + "height": 4751, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p4" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p5", + "type": "Canvas", + "label": { + "en": [ + "back cover" + ] + }, + "width": 3510, + "height": 4808, + "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/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 3510, + "height": 4808, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p5" + } + ] + } + ] } + ] } From 490fb659cd2a72032df3eed4c2a6ac2a4bb16e4f Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Mon, 11 Jan 2021 13:59:54 -0500 Subject: [PATCH 38/95] Removed rendering section --- recipe/0053-seeAlso/manifest.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/recipe/0053-seeAlso/manifest.json b/recipe/0053-seeAlso/manifest.json index b85a014dc..9f457e672 100644 --- a/recipe/0053-seeAlso/manifest.json +++ b/recipe/0053-seeAlso/manifest.json @@ -9,14 +9,6 @@ }, "summary": { "en": ["Playbill for \"Akiba gongen kaisen-banashi,\" \"Futatsu chōchō kuruwa nikki\" and \"Godairiki koi no fūjime\" performed at the Chikugo Theater in Osaka from the fifth month of Kaei 2 (May, 1849); main actors: Gadō Kataoka II, Ebizō Ichikawa VI, Kitō Sawamura II, Daigorō Mimasu IV and Karoku Nakamura I; on front cover: producer Mominosuke Ichikawa's crest."] }, "viewingDirection": "right-to-left", - "rendering": [ - { - "id": "https://fixtures.iiif.io/other/UCLA/kabuki_ezukushi_rtl.pdf", - "type": "Text", - "label": { "en": [ "PDF version" ] }, - "format": "application/pdf" - } - ], "seeAlso": [ { "id": "{{ id.path }}/ezukushi.xml", From 26a4dba81569e65cdc9c83e74c593aabcd46c3e1 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Mon, 11 Jan 2021 14:01:13 -0500 Subject: [PATCH 39/95] Replaced local URI with fixtures.iiif.io one --- recipe/0053-seeAlso/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/manifest.json b/recipe/0053-seeAlso/manifest.json index 9f457e672..bf6fa674c 100644 --- a/recipe/0053-seeAlso/manifest.json +++ b/recipe/0053-seeAlso/manifest.json @@ -11,7 +11,7 @@ "viewingDirection": "right-to-left", "seeAlso": [ { - "id": "{{ id.path }}/ezukushi.xml", + "id": "https://fixtures.iiif.io/other/UCLA/kabuki_ezukushi_rtl.xml", "type": "Dataset", "label": { "en": [ "Dublin Core metadata" ] }, "format": "text/xml", From 361b9c7dab5a74b546accbd28a37ca1e88397484 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Mon, 11 Jan 2021 14:02:25 -0500 Subject: [PATCH 40/95] Inserted correct manifest line numbers for highlighting --- recipe/0053-seeAlso/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index 0b5d7e638..44f47e1a8 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -38,7 +38,7 @@ The example json document must be an external document, and imported with the fo {% include manifest_links.html viewers="Mirador" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" config='data-line="1"' %} +{% include jsonviewer.html src="manifest.json" config='data-line="16-28"' %} The direct link to the fixture is a useful convenience. From a3629cf59e3958c4cbaad1f37022ff5c898c55c1 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Mon, 11 Jan 2021 14:03:03 -0500 Subject: [PATCH 41/95] Replaced placeholder Example section text with real text --- recipe/0053-seeAlso/index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index 44f47e1a8..8997789ba 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -33,8 +33,9 @@ No known restrictions ## Example -Describe the solution in prose and provide an example. -The example json document must be an external document, and imported with the following: +In this example, a Dublin Core Metadata Initiative XML file is provided for the program as a whole, and as such the `seeAlso` property attaches to the Manifest. If such data files were available for each view or page separately, each Canvas would be a logical place for the corresponding `seeAlso` instance. + +To see the property in action in Mirador, toggle the sidebar by activating the three-line ("hamburger") menu in the upper left-hand corner of the content window. You should then, in the "Related" area, see the link in the "Related" section under the "See also" subheading. {% include manifest_links.html viewers="Mirador" manifest="manifest.json" %} From 278758a9cdd57412e12a3f96c6485fe18fc618c2 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Mon, 11 Jan 2021 14:03:30 -0500 Subject: [PATCH 42/95] Fixed erroneous recipe short description --- recipe/0053-seeAlso/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index 8997789ba..cc4377132 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -49,7 +49,7 @@ The direct link to the fixture is a useful convenience. * [Choice (simplest)][0033] for showing multiple representations of the same view * [Choice — multispectral flavored example, with image services][0034] for showing multiple representations of the same view with Image Services * [homepage][0047] for pointing to a web page about the object represented by the current resource -* [Providing Alternative Representations][0046] for data representations of the same object +* [Providing Alternative Representations][0046] for alternate representations of the same object * [A museum object][0059] for using `rendering` to provide a 3D model {% include acronyms.md %} From 1a2802ccd378235f9f0fcd12714949ad48fb33be Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Wed, 13 Jan 2021 14:15:26 -0500 Subject: [PATCH 43/95] Trimmed significantly to focus on DC proper and UCDL extension This file is expected to be moved into fixture.iiif.io, hence the manifest URI pointing there --- recipe/0053-seeAlso/ezukushi.xml | 121 ------------------------------- 1 file changed, 121 deletions(-) diff --git a/recipe/0053-seeAlso/ezukushi.xml b/recipe/0053-seeAlso/ezukushi.xml index 9c52d904d..214814c66 100644 --- a/recipe/0053-seeAlso/ezukushi.xml +++ b/recipe/0053-seeAlso/ezukushi.xml @@ -1,12 +1,5 @@ - - - - - - - @@ -21,114 +14,6 @@ - - - - - - - - <![CDATA[Small]]> - - - image/png - empty_picture.png - 346c19f9.blob - be1a7403018b6b893228afcf28e481a4 - - - - - - - - - - - - - - <![CDATA[Medium]]> - - - image/png - empty_picture.png - 142d7b6c.blob - be1a7403018b6b893228afcf28e481a4 - - - - - - - - - - - - - - <![CDATA[Thumbnail]]> - - - image/png - empty_picture.png - b3494346.blob - be1a7403018b6b893228afcf28e481a4 - - - - - - - - - - - - - - <![CDATA[OriginalJpeg]]> - - - image/png - empty_picture.png - ed338955.blob - be1a7403018b6b893228afcf28e481a4 - - - - - - - - - - - - - - - - - - - - - - - image/png - empty_picture.png - 91be8856.blob - be1a7403018b6b893228afcf28e481a4 - - - - - - - - @@ -218,10 +103,4 @@ - - - - - - From ff8c571b4d832ce365199fe3929e4a4304af8609 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 13 Jan 2021 13:42:53 -0800 Subject: [PATCH 44/95] rmv requiredStatement, rmv extra titles from label, chg creator to alt titles --- recipe/0118_multivalue/manifest.json | 33 ++++++++-------------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/recipe/0118_multivalue/manifest.json b/recipe/0118_multivalue/manifest.json index 2a9107c89..e71077b6e 100644 --- a/recipe/0118_multivalue/manifest.json +++ b/recipe/0118_multivalue/manifest.json @@ -3,26 +3,24 @@ "id": "https://example.org/iiif/text-language/manifest", "type": "Manifest", "label": { - "en": [ - "Whistler's Mother", - "Arrangement in Grey and Black No. 1" - ], "fr": [ - "Arrangement en gris et noir no 1", - "Portrait de la mère de l'artiste", - "La Mère de Whistler" + "Arrangement en gris et noir no 1" ] }, - "metadata": [ + "metadata": [ { "label": { "en": [ - "Creator" + "Alternative titles" ] }, "value": { - "none": [ - "Whistler, James Abbott McNeill" + "en": [ + "Whistler's Mother" + ], + "fr": [ + "Portrait de la mère de l'artiste", + "La Mère de Whistler" ] } } @@ -32,19 +30,6 @@ "A painting in oil on canvas created by the American-born painter James McNeill Whistler, in 1871." ] }, - "requiredStatement": { - "label": { - "en": [ - "Held By" - ] - }, - "value": { - "none": [ - "Musée d'Orsay, Paris, France" - ] - } - }, - "items": [ { "id": "https://example.org/iiif/text-language/canvas1", From 46a47f34c702dbd37f6e94aa68114ffca6a1f6c4 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 13 Jan 2021 14:05:04 -0800 Subject: [PATCH 45/95] update title, use case --- recipe/0118_multivalue/index.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 6708ab287..9b4c029ac 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -1,5 +1,5 @@ --- -title: Displaying Single and Multiple Values with Language Maps +title: Displaying Multiple Values with Language Maps id: 118 layout: recipe tags: [tbc] @@ -8,11 +8,13 @@ summary: "The language map pattern requires that all values are supplied as an a ## Use Case -The language map pattern requires that all values are supplied as an array, whether a single value string or a string of multiple values. For example, a work that is known by more than one title should include each title variation (within the same language) as a separate string within a single array; if the work has only a single title, the title would be included as a single-value array. +In some cases, a work is known by more than one title (or has multiple authors, subject heading, etc.) that we would like to display to end users. In this case, our work has variant titles that we will include in the `metadata` property using the required arrays. This pattern can be applied to any property values that are intended to be displayed to end users. ## Implementation Notes -Language maps are required of all strings that are intended to be displayed to the user (`label` and `summary` properties, as well as `label` and `value` properties of the `metadata` and `requiredStatement` objects), and all "associated values must be arrays of strings, where each item is the content in the given language." For more information, see the Presentation API +Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are supplied as an array, whether a single value string or a string of multiple values. -- any strings values should include each title variation (within the same language) as a separate string within a single array; if the work has only a single title, the title would be included as a single-value array. + +all "associated values must be arrays of strings, where each item is the content in the given language." For more information, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. ## Example From ba39182d82b70a6d60d68ac06ae1c66d537f888c Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 13 Jan 2021 14:33:11 -0800 Subject: [PATCH 46/95] update implementation notes and example --- recipe/0118_multivalue/index.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 9b4c029ac..1009e49d2 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -12,14 +12,17 @@ In some cases, a work is known by more than one title (or has multiple authors, ## Implementation Notes -Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are supplied as an array, whether a single value string or a string of multiple values. -- any strings values should include each title variation (within the same language) as a separate string within a single array; if the work has only a single title, the title would be included as a single-value array. +Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are supplied as an array, whether a single value string or a string of multiple values. For example, if the work in question has multiple values for a property, all values would be included as separate strings within a single array; if the property has only a single value, the value would be included as a single-value array. -all "associated values must be arrays of strings, where each item is the content in the given language." For more information, see the Presentation API -[Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. +In the case of multiple languages, all associated values must be arrays of strings, with a separate array for each language. For more information, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. + +## Restrictions + +None ## Example -In this example, the work has multiple titles in both English and French, with two separate arrays -- one array for the English (lines 6-9) and one for the French (lines 10-14). In the `metadata` (lines 18-27), `summary` (lines 31-33), `requiredStatement`(lines 36-45) objects, the labels and values are included as single string arrays. +In this example, the work has multiple titles in both English and French. The manifest `label` provides a single title in French within a single-value array (lines...). The alternative titles are provided in the `metadata` property in both English and French, each with multiple variants contained within two separate arrays -- one array for English (lines ...) and one for French (lines ). In the `summary` property (lines ...) the value is included as single-string array. {% include manifest_links.html viewers="UV, Mirador, Tify, Curation" manifest="manifest.json" %} From fa3c35a398fefcc1d59737bb825a4ec81bf7b1f7 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 13 Jan 2021 14:48:01 -0800 Subject: [PATCH 47/95] add 0118 to links and root index --- _includes/links.md | 2 +- index.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/_includes/links.md b/_includes/links.md index 66f25566b..0378915d0 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -23,7 +23,7 @@ [0068]: {{site.baseurl}}/recipe/0068-newspaper/ "A newspaper" [0117]: {{site.baseurl}}/recipe/0117-add-image-thumbnail/ "Manifest Thumbnail" -[0118]: {{site.baseurl}}/recipe/0118_multivalue/ "Displaying Single and Multiple Values with Language Maps" +[0118]: {{site.baseurl}}/recipe/0118_multivalue/ "Displaying Multiple Values with Language Maps" [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" diff --git a/index.md b/index.md index 963a831eb..797fddc8b 100644 --- a/index.md +++ b/index.md @@ -30,6 +30,7 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: .. * [Image and Canvas with Differing Dimensions][0004] (26) * [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] (24,25) * [Internationalization and Multi-language Values][0006] (3,4,6) +* [Displaying Multiple Values with Language Maps][0118] * [Embedding HTML in descriptive properties][0007] (64) * [Rights statement\(s\)][0008] (7) * [Simple Manifest - Book][0009] (19) From 3ba92ee9a703c6eeea963fd1eb5bd7c91d8ae652 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 13 Jan 2021 15:01:15 -0800 Subject: [PATCH 48/95] update implementions notes --- recipe/0118_multivalue/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 1009e49d2..ab982923a 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -12,9 +12,9 @@ In some cases, a work is known by more than one title (or has multiple authors, ## Implementation Notes -Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are supplied as an array, whether a single value string or a string of multiple values. For example, if the work in question has multiple values for a property, all values would be included as separate strings within a single array; if the property has only a single value, the value would be included as a single-value array. +Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are supplied as an array, whether a single value or multiple value strings. For example, if the work in question has multiple values for a property, all values would be included as separate strings within a single array; if the property has only a single value, the value would be included as a single-value array. -In the case of multiple languages, all associated values must be arrays of strings, with a separate array for each language. For more information, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. +In the case of multiple languages, all associated values must be arrays of strings with separate arrays for each language. For more information, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. ## Restrictions From 1b92a713a050bcc56072d2149182f12bef0bb380 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 13 Jan 2021 15:11:21 -0800 Subject: [PATCH 49/95] update line highlighting, rmv viewers --- recipe/0118_multivalue/index.md | 4 ++-- recipe/0118_multivalue/manifest.json | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index ab982923a..135a926e3 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -22,11 +22,11 @@ None ## Example -In this example, the work has multiple titles in both English and French. The manifest `label` provides a single title in French within a single-value array (lines...). The alternative titles are provided in the `metadata` property in both English and French, each with multiple variants contained within two separate arrays -- one array for English (lines ...) and one for French (lines ). In the `summary` property (lines ...) the value is included as single-string array. +In this example, the work has multiple titles in both English and French. The manifest `label` provides a single title in French within a single-value array (lines 6-8). The alternative titles are provided in the `metadata` property in both English and French, each with variants contained within two separate arrays -- one array for English (lines 18-21) and one for French (lines 22-25). In the `summary` property (lines 30-32) the value is included as single-string array. {% include manifest_links.html viewers="UV, Mirador, Tify, Curation" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" config='data-line="6-9, 10-14, 18-27, 31-33, 36-45"'%} +{% include jsonviewer.html src="manifest.json" config='data-line="6-8, 18-21, 22-25, 30-32"'%} ## Related Recipes diff --git a/recipe/0118_multivalue/manifest.json b/recipe/0118_multivalue/manifest.json index e71077b6e..5a4c7e661 100644 --- a/recipe/0118_multivalue/manifest.json +++ b/recipe/0118_multivalue/manifest.json @@ -16,7 +16,8 @@ }, "value": { "en": [ - "Whistler's Mother" + "Whistler's Mother", + "Arrangement in Grey and Black No. 1" ], "fr": [ "Portrait de la mère de l'artiste", From 787a2120f8481dc0b4f5730ceb79816117f401c4 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 13 Jan 2021 15:12:28 -0800 Subject: [PATCH 50/95] update viewers --- recipe/0118_multivalue/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 135a926e3..776539d40 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -24,7 +24,7 @@ None In this example, the work has multiple titles in both English and French. The manifest `label` provides a single title in French within a single-value array (lines 6-8). The alternative titles are provided in the `metadata` property in both English and French, each with variants contained within two separate arrays -- one array for English (lines 18-21) and one for French (lines 22-25). In the `summary` property (lines 30-32) the value is included as single-string array. -{% include manifest_links.html viewers="UV, Mirador, Tify, Curation" manifest="manifest.json" %} +{% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} {% include jsonviewer.html src="manifest.json" config='data-line="6-8, 18-21, 22-25, 30-32"'%} From 2225223c7ffaf6a1da7dd3244b094dfa7dd50ad2 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 13 Jan 2021 18:07:16 -0800 Subject: [PATCH 51/95] update includes --- recipe/0029-metadata-anywhere/index.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index 8d471d70b..381f9ad2b 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -9,7 +9,7 @@ summary: "tbc" ## Use Case -Why is this pattern is important? +I have interesting information to show at all levels of the IIIF model - how do I do that? ## Implementation notes @@ -21,18 +21,11 @@ When is this pattern is usable / not usable? Is it deprecated? If it uses multip ## Example -Describe in prose and provide examples, e.g.: +Describe in prose and provide examples, e.g.: -``` 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 manifest_links.html viewers="UV" manifest="manifest.json" %} + +{% include jsonviewer.html src="manifest.json" config='data-line="10-18"' %} # Related recipes @@ -41,4 +34,3 @@ Provide a bulleted list of related recipes and why they are relevant. {% include acronyms.md %} {% include links.md %} - From a18268261167e2d233a6f4cb722fa027c48688d0 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Thu, 14 Jan 2021 19:35:48 -0800 Subject: [PATCH 52/95] first draft --- recipe/0024-book-4-toc/index.md | 30 ++- recipe/0024-book-4-toc/manifest.json | 294 ++++++++++++++++++++++++++- 2 files changed, 302 insertions(+), 22 deletions(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index e8f6f93ba..ceaab5a57 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -2,41 +2,37 @@ title: Book with Table of Contents (ranges) id: 24 layout: recipe -tags: [tbc] -summary: "tbc" +tags: [text, image, book] +summary: "Using Ranges to create a table of contents for a book" --- ## Use Case -How do I convey the logical structure of a book? +Many books have a logical structure, such as chapters and other sections or multiple works contained within an anthology or bound manuscript, that can be made navigable through a table of contents (ToC) or other wayfinding methods. IIIF uses Ranges to represent a book's structure and IIIF viewers can display this ToC in a side panel to aid users in navigating the book by chapter, section, work, etc. ## Implementation Notes -What do you need to know to use this pattern? -How do you implement the pattern? +Ranges are used to represent a structure within a book object by grouping Canvases together and/or by providing an alternate order of the Canvases from the order presented in the `items` property of the Manifest. Ranges can include Canvases, parts of Canvases, or other Ranges, creating a tree structure like a table of contents. -## Restrictions +Ranges are contained within the `structures` property and require a `label` property to display in the ToC (viewers do not use the Canvas `label` property to display values in the ToC). The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [IIIF Presentation API 5.4 Range] documentation. -When is this pattern is usable / not usable? Is it deprecated? If it uses multiple specifications, which versions are needed, etc.? +## Restrictions -Delete this section if it is not needed. -If you don't know what the restrictions might be initially, just leave the following line: -**Unknown - Help Needed** +None ## Example -Describe the solution in prose and provide an example. -The example json document must be an external document, and imported with the following: - -{% include manifest_links.html viewers="UV, Mirador, Tify, Curation" manifest="manifest.json" %} +In this example, an Ethiopic manuscript contains multiple works and one of the works contains multiple sections. The manifest contains a Range to represent a table of contents listing each of the works, and another embedded range to represent the content sections of the second work, *Arede'et*. -{% include jsonviewer.html src="manifest.json" %} +{% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} -The direct link to the fixture is a useful convenience. +{% include jsonviewer.html src="manifest.json" config='data-line="10-18"' %} ## Related Recipes -Provide a bulleted list of related recipes and why they are relevant. +* [Book (simplest)][0009] +* [Book (paging variations)][0011] +* [Table of Contents for A/V Content][0026] {% include acronyms.md %} {% include links.md %} diff --git a/recipe/0024-book-4-toc/manifest.json b/recipe/0024-book-4-toc/manifest.json index e7f4e7785..eaefec9e5 100644 --- a/recipe/0024-book-4-toc/manifest.json +++ b/recipe/0024-book-4-toc/manifest.json @@ -1,8 +1,292 @@ { - "@context": [ "http://iiif.io/api/presentation/3/context.json" ], - "id": "{{ id.url }} ", - "type": "Manifest", - "label": { - "none": [""] + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "{{ id.url }}", + "type": "Manifest", + "label": { + "en": [ "..." ] + }, + "items": [ + { + "id": "{{ id.path }}/canvas/p1", + "type": "Canvas", + "label": { "en": [ "f. 1r" ] }, + "height": ..., + "width": ..., + "items": [ + { + "id": "{{ id.path }}/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "{{ id.path }}/annotation/p0001-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "...", + "type": "Image", + "format": "image/jpeg", + "height": ..., + "width": ..., + "service": [ + { + "id": "...", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p1" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p2", + "type": "Canvas", + "label": { "en": [ "f. 1v" ] }, + "width": ..., + "height": ..., + "items": [ + { + "id": "{{ id.path }}/page/p2/1", + "type": "AnnotationPage", + "items": [ + { + "id": "{{ id.path }}/annotation/p0002-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "...", + "type": "Image", + "format": "image/jpeg", + "width": ..., + "height": ..., + "service": [ + { + "id": "...", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p2" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p3", + "type": "Canvas", + "label": { "en": [ "f. 2r" ] }, + "width": ..., + "height": ..., + "items": [ + { + "id": "{{ id.path }}/page/p3/1", + "type": "AnnotationPage", + "items": [ + { + "id": "{{ id.path }}/annotation/p0003-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "...", + "type": "Image", + "format": "image/jpeg", + "width": ..., + "height": ..., + "service": [ + { + "id": "...", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p3" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p4", + "type": "Canvas", + "label": { "en": [ "f. 2v" ] }, + "width": ..., + "height": ..., + "items": [ + { + "id": "{{ id.path }}/page/p4/1", + "type": "AnnotationPage", + "items": [ + { + "id": "{{ id.path }}/annotation/p0004-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "...", + "type": "Image", + "format": "image/jpeg", + "width": ..., + "height": ..., + "service": [ + { + "id": "...", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p4" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p5", + "type": "Canvas", + "label": { "en": [ "f. 3r" ] }, + "width": ..., + "height": ..., + "items": [ + { + "id": "{{ id.path }}/page/p5/1", + "type": "AnnotationPage", + "items": [ + { + "id": "{{ id.path }}/annotation/p0005-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "...", + "type": "Image", + "format": "image/jpeg", + "width": ..., + "height": ..., + "service": [ + { + "id": "...", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p5" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p6", + "type": "Canvas", + "label": { "en": [ "f. 3v" ] }, + "width": ..., + "height": ..., + "items": [ + { + "id": "{{ id.path }}/page/p6/1", + "type": "AnnotationPage", + "items": [ + { + "id": "{{ id.path }}/annotation/p0006-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "...", + "type": "Image", + "format": "image/jpeg", + "width": ..., + "height": ..., + "service": [ + { + "id": "...", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "{{ id.path }}/canvas/p6" + } + ] + } + ] } + ], + + "structures": [ + { + "id": "{{ id.path }}/range/r0", + "type": "Range", + "label": { + "en": [ "Table of Contents" ] + }, + "items": [ + { + "id": "{{ id.path }}/range/r1", + "type": "Range", + "label": { + "gez": [ "Tabiba Tabiban [ጠቢበ ጠቢባን]" ] + }, + "items": [ + { + "id": "{{ id.path }}/canvas/p1", + "type": "Canvas" + }, + { + "id": "{{ id.path }}/canvas/p2", + "type": "Canvas" + } + ] + }, + { + "id": "{{ id.path }}/range/r2", + "type": "Range", + "label": { + "gez": [ "Arede'et [አርድዕት]" ] + }, + "items": [ + { + "id": "{{ id.path }}/range/r2/1", + "type": "Range", + "label": { + "gez": [ "Monday" ] + }, + "items": [ + { + "id": "{{ id.path }}/canvas/p3", + "type": "Canvas" + }, + { + "id": "{{ id.path }}/canvas/p4", + "type": "Canvas" + } + ] + }, + { + "id": "{{ id.path }}/range/r2/2", + "type": "Range", + "label": { + "gez": [ "Tuesday" ] + }, + "items": [ + { + "id": "{{ id.path }}/canvas/p5", + "type": "Canvas" + }, + { + "id": "{{ id.path }}/canvas/p6", + "type": "Canvas" + } + ] + } + ] + } + ] + } + ] } From 85e8f6af1183f40284e4e40b271392537b8d56f2 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Thu, 14 Jan 2021 19:44:37 -0800 Subject: [PATCH 53/95] update links.md and root index.md --- _includes/links.md | 2 ++ index.md | 4 ++-- recipe/0024-book-4-toc/index.md | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/_includes/links.md b/_includes/links.md index e2dcaac17..34fbf7a90 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -16,6 +16,7 @@ [0014]: {{site.baseurl}}/recipe/0014-accompanyingcanvas/ "Audio Presentation with Accompanying Image" [0015]: {{site.baseurl}}/recipe/0015-start/ "Begin playback at a specific point - Time-based media" +[0024]: {{site.baseurl}}/recipe/0024-book-4-toc/ "Table of Contents for Book Chapters" [0026]: {{site.baseurl}}/recipe/0026-toc-opera/ "Table of Contents for A/V Content" [0064]: {{site.baseurl}}/recipe/0064-opera-one-canvas/ "Table of Contents for Multiple A/V Files on a Single Canvas" [0065]: {{site.baseurl}}/recipe/0065-opera-multiple-canvases/ "Table of Contents for Multiple A/V Files on Multiple Canvases" @@ -32,6 +33,7 @@ [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" +[prezi3-range]: https://iiif.io/api/presentation/3.0/#54-range "Range" [service-registry]: https://iiif.io/api/registry/services/ "the IIIF Registry of Services" [language-of-property-values]: https://iiif.io/api/presentation/3.0/#44-language-of-property-values "Language of Property Values" [bcp-47]: https://tools.ietf.org/html/bcp47 "BCP 47" diff --git a/index.md b/index.md index 963a831eb..a530f9a06 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) * [Simple Manifest - Book][0009] (19) -* [Book behavior (paging) variations][0011] (15,16,17) +* [Book behavior (paging) variations][0011] (15,16,17) * [Viewing direction and its effect on navigation][0010] (11,12,13,14) * [Manifest Thumbnail][0117] * thumbnail algorithm / discussion @@ -59,7 +59,7 @@ _(leading on to segmentation examples later)_ ## Internal structure -* table of contents (ranges) - book chapters +* [Table of Contents for Book Chapters][0024] * table of contents (ranges) - articles in a newspaper * [Table of contents for A/V content][0026] (26) * Alternative Sequence (via `sequence` Range) (20,22,23) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index ceaab5a57..389490f46 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -1,5 +1,5 @@ --- -title: Book with Table of Contents (ranges) +title: Table of Contents for Book Chapters id: 24 layout: recipe tags: [text, image, book] @@ -14,7 +14,7 @@ Many books have a logical structure, such as chapters and other sections or mult Ranges are used to represent a structure within a book object by grouping Canvases together and/or by providing an alternate order of the Canvases from the order presented in the `items` property of the Manifest. Ranges can include Canvases, parts of Canvases, or other Ranges, creating a tree structure like a table of contents. -Ranges are contained within the `structures` property and require a `label` property to display in the ToC (viewers do not use the Canvas `label` property to display values in the ToC). The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [IIIF Presentation API 5.4 Range] documentation. +Ranges are contained within the `structures` property and require a `label` property to display in the ToC (viewers do not use the Canvas `label` property to display values in the ToC). The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [the Presentation 3.0 spec on Ranges](https://iiif.io/api/presentation/3.0/#54-range). ## Restrictions From f1c859240de9d2ea6d8341204df0e801b8cadd1a Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 15 Jan 2021 08:39:31 -0800 Subject: [PATCH 54/95] add images and line highlights --- recipe/0024-book-4-toc/index.md | 4 +- recipe/0024-book-4-toc/manifest.json | 74 ++++++++++++++-------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index 389490f46..c9144ae30 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -22,11 +22,11 @@ None ## Example -In this example, an Ethiopic manuscript contains multiple works and one of the works contains multiple sections. The manifest contains a Range to represent a table of contents listing each of the works, and another embedded range to represent the content sections of the second work, *Arede'et*. +In this example, an Ethiopic manuscript contains multiple works, one of which contains multiple sections. The manifest contains a Range to represent the top-level structure (begins with lines 247-254), and another embedded Range to represent the content sections of the second work, *Arede'et* (begins with lines 275-282). {% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" config='data-line="10-18"' %} +{% include jsonviewer.html src="manifest.json" config='data-line="246-326, 247-254, 275-282"' %} ## Related Recipes diff --git a/recipe/0024-book-4-toc/manifest.json b/recipe/0024-book-4-toc/manifest.json index eaefec9e5..2f07b9e04 100644 --- a/recipe/0024-book-4-toc/manifest.json +++ b/recipe/0024-book-4-toc/manifest.json @@ -3,15 +3,15 @@ "id": "{{ id.url }}", "type": "Manifest", "label": { - "en": [ "..." ] + "en": [ "Ethiopic Ms 10" ] }, "items": [ { "id": "{{ id.path }}/canvas/p1", "type": "Canvas", "label": { "en": [ "f. 1r" ] }, - "height": ..., - "width": ..., + "height": 2504, + "width": 1768, "items": [ { "id": "{{ id.path }}/page/p1/1", @@ -22,14 +22,14 @@ "type": "Annotation", "motivation": "painting", "body": { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", "type": "Image", "format": "image/jpeg", - "height": ..., - "width": ..., + "height": 2504, + "width": 1768, "service": [ { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", "type": "ImageService3", "profile": "level1" } @@ -45,8 +45,8 @@ "id": "{{ id.path }}/canvas/p2", "type": "Canvas", "label": { "en": [ "f. 1v" ] }, - "width": ..., - "height": ..., + "height": 2512, + "width": 1792, "items": [ { "id": "{{ id.path }}/page/p2/1", @@ -57,14 +57,14 @@ "type": "Annotation", "motivation": "painting", "body": { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", "type": "Image", "format": "image/jpeg", - "width": ..., - "height": ..., + "height": 2512, + "width": 1792, "service": [ { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master", "type": "ImageService3", "profile": "level1" } @@ -80,8 +80,8 @@ "id": "{{ id.path }}/canvas/p3", "type": "Canvas", "label": { "en": [ "f. 2r" ] }, - "width": ..., - "height": ..., + "height": 2456, + "width": 1792, "items": [ { "id": "{{ id.path }}/page/p3/1", @@ -92,14 +92,14 @@ "type": "Annotation", "motivation": "painting", "body": { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", "type": "Image", "format": "image/jpeg", - "width": ..., - "height": ..., + "height": 2456, + "width": 1792, "service": [ { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", "type": "ImageService3", "profile": "level1" } @@ -115,8 +115,8 @@ "id": "{{ id.path }}/canvas/p4", "type": "Canvas", "label": { "en": [ "f. 2v" ] }, - "width": ..., - "height": ..., + "height": 2440, + "width": 1760, "items": [ { "id": "{{ id.path }}/page/p4/1", @@ -127,14 +127,14 @@ "type": "Annotation", "motivation": "painting", "body": { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", "type": "Image", "format": "image/jpeg", - "width": ..., - "height": ..., + "height": 2440, + "width": 1760, "service": [ { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", "type": "ImageService3", "profile": "level1" } @@ -150,8 +150,8 @@ "id": "{{ id.path }}/canvas/p5", "type": "Canvas", "label": { "en": [ "f. 3r" ] }, - "width": ..., - "height": ..., + "height": 2416, + "width": 1776, "items": [ { "id": "{{ id.path }}/page/p5/1", @@ -162,14 +162,14 @@ "type": "Annotation", "motivation": "painting", "body": { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", "type": "Image", "format": "image/jpeg", - "width": ..., - "height": ..., + "height": 2416, + "width": 1776, "service": [ { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master", "type": "ImageService3", "profile": "level1" } @@ -185,8 +185,8 @@ "id": "{{ id.path }}/canvas/p6", "type": "Canvas", "label": { "en": [ "f. 3v" ] }, - "width": ..., - "height": ..., + "height": 2416, + "width": 1776, "items": [ { "id": "{{ id.path }}/page/p6/1", @@ -197,14 +197,14 @@ "type": "Annotation", "motivation": "painting", "body": { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", "type": "Image", "format": "image/jpeg", - "width": ..., - "height": ..., + "height": 2416, + "width": 1776, "service": [ { - "id": "...", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master", "type": "ImageService3", "profile": "level1" } From 2c6edc181d0215bcea01bb0c5694624c5cc42534 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 15 Jan 2021 08:45:05 -0800 Subject: [PATCH 55/95] update use case --- recipe/0024-book-4-toc/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index c9144ae30..34fd00a9f 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -8,7 +8,7 @@ summary: "Using Ranges to create a table of contents for a book" ## Use Case -Many books have a logical structure, such as chapters and other sections or multiple works contained within an anthology or bound manuscript, that can be made navigable through a table of contents (ToC) or other wayfinding methods. IIIF uses Ranges to represent a book's structure and IIIF viewers can display this ToC in a side panel to aid users in navigating the book by chapter, section, work, etc. +Many books have a logical structure, such as chapters and other sections or multiple works contained within an anthology or bound manuscript, that can be made navigable through a table of contents (ToC) or other wayfinding methods. IIIF uses Ranges to represent a book's structure and IIIF viewers can display this ToC in an index panel to aid users in navigating the book by chapter, section, work, etc. ## Implementation Notes From 9f6a7f2d4147ed270873dd71141049ab61cbf234 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 15 Jan 2021 11:33:07 -0800 Subject: [PATCH 56/95] update use case --- recipe/0024-book-4-toc/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index 34fd00a9f..ae56cff52 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -8,7 +8,7 @@ summary: "Using Ranges to create a table of contents for a book" ## Use Case -Many books have a logical structure, such as chapters and other sections or multiple works contained within an anthology or bound manuscript, that can be made navigable through a table of contents (ToC) or other wayfinding methods. IIIF uses Ranges to represent a book's structure and IIIF viewers can display this ToC in an index panel to aid users in navigating the book by chapter, section, work, etc. +Many books have a logical structure, such as chapters and other sections or multiple works contained within an anthology or bound manuscript, that can be made navigable through a table of contents (ToC) or other wayfinding methods. IIIF uses Ranges to represent a book's structure and IIIF viewers can display this structure as a ToC in an index panel to aid users in navigating the book by chapter, section, work, etc. ## Implementation Notes From 4af54036fbe5b1de56d32b3381730a29c8311523 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 15 Jan 2021 13:58:43 -0800 Subject: [PATCH 57/95] first draft --- _includes/links.md | 1 + index.md | 4 +- recipe/0029-metadata-anywhere/index.md | 13 ++- recipe/0029-metadata-anywhere/manifest.json | 117 ++++++++++++++++++++ 4 files changed, 128 insertions(+), 7 deletions(-) create mode 100644 recipe/0029-metadata-anywhere/manifest.json diff --git a/_includes/links.md b/_includes/links.md index e2dcaac17..7f57ff234 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -17,6 +17,7 @@ [0015]: {{site.baseurl}}/recipe/0015-start/ "Begin playback at a specific point - Time-based media" [0026]: {{site.baseurl}}/recipe/0026-toc-opera/ "Table of Contents for A/V Content" +[0029]: {{site.baseurl}}/recipe/0029-metadata-anywhere/ "Metadata on any Resource" [0064]: {{site.baseurl}}/recipe/0064-opera-one-canvas/ "Table of Contents for Multiple A/V Files on a Single Canvas" [0065]: {{site.baseurl}}/recipe/0065-opera-multiple-canvases/ "Table of Contents for Multiple A/V Files on Multiple Canvases" diff --git a/index.md b/index.md index 963a831eb..88828b9b3 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) * [Simple Manifest - Book][0009] (19) -* [Book behavior (paging) variations][0011] (15,16,17) +* [Book behavior (paging) variations][0011] (15,16,17) * [Viewing direction and its effect on navigation][0010] (11,12,13,14) * [Manifest Thumbnail][0117] * thumbnail algorithm / discussion @@ -64,7 +64,7 @@ _(leading on to segmentation examples later)_ * [Table of contents for A/V content][0026] (26) * Alternative Sequence (via `sequence` Range) (20,22,23) * `sequence` Range with partial canvases -* metadata on any resource (21) +* [Metadata on any Resource][0029] (21) ## Higher-level structure diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index 381f9ad2b..f40463c77 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -6,26 +6,29 @@ tags: [tbc] summary: "tbc" --- - ## Use Case I have interesting information to show at all levels of the IIIF model - how do I do that? ## Implementation notes -How does one implement the pattern? +An ordered list of descriptions to be displayed to the user when they interact with the resource, given as pairs of human readable label and value entries. The content of these entries is intended for presentation only; descriptive semantics should not be inferred. An entry might be used to convey information about the creation of the object, a physical description, ownership information, or other purposes. + +The value of the metadata property must be an array of JSON objects, where each item in the array has both label and value properties. The values of both label and value must be JSON objects, as described in the languages section. ## Restrictions -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.) +Language maps and arrays required... see... ## Example Describe in prose and provide examples, e.g.: -{% include manifest_links.html viewers="UV" manifest="manifest.json" %} +Credit: John Dee performing an experiment before Queen Elizabeth I. Oil painting by Henry Gillard Glindoni. Credit: Wellcome Collection. Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) + +{% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" config='data-line="10-18"' %} +{% include jsonviewer.html src="manifest.json" config='data-line="10-59, 84-97, 137-150"' %} # Related recipes diff --git a/recipe/0029-metadata-anywhere/manifest.json b/recipe/0029-metadata-anywhere/manifest.json new file mode 100644 index 000000000..27a90bbab --- /dev/null +++ b/recipe/0029-metadata-anywhere/manifest.json @@ -0,0 +1,117 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "{{ id.url }}", + "type": "Manifest", + "label": { + "en": [ + "John Dee performing an experiment before Queen Elizabeth I." + ] + }, + "metadata": [ + { + "label": { "en": [ "Creator" ] }, + "value": { "en": [ "Glindoni, Henry Gillard, 1852-1913" ] } + }, + { + "label": { "en": [ "Date" ] }, + "value": { "en": [ "1800-1899" ] } + }, + { + "label": { "en": [ "Physical Description" ] }, + "value": { "en": [ "1 painting : oil on canvas ; canvas 152 x 244.4 cm" ] } + }, + { + "label": { "en": [ "Reference" ] }, + "value": { "en": [ "Wellcome Library no. 47369i" ] } + } + ], + "requiredStatement": { + "label": { "en": [ "Attribution" ] }, + "value": { "en": [ "Wellcome Collection. https://wellcomecollection.org/works/nydjbrr7" ] } + }, + "rights": "https://creativecommons.org/licenses/by-nc/4.0/", + "items": [ + { + "id": "{{ id.path }}/canvas/p1", + "type": "Canvas", + "label": { "en": [ "Painting under natural light" ] }, + "height": 1271, + "width": 2000, + "metadata": [ + { + "label": { "en": [ "Description" ] }, + "value": { "en": [ "The scene is the house at Mortlake of Dr John Dee (1527-1608). At the court of Queen Elizabeth I, Dee was revered for the range of his scientific knowledge, which embraced the fields of mathematics, navigation, geography, alchemy/chemistry, medicine and optics. In the painting he is showing the effect of combining two elements, either to cause combustion or to extinguish it. Behind him is his assistant Edward Kelly, wearing a long skullcap to conceal the fact that his ears had been cropped as a punishment for forgery." ] } + } + ], + "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/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 1271, + "width": 2000, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": "{{ id.path }}/canvas/p1" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p2", + "type": "Canvas", + "label": { "en": [ "X-ray view of painting" ] }, + "height": 1271, + "width": 2000, + "metadata": [ + { + "label": { "en": [ "Description" ] }, + "value": { "en": [ "The painting originally showed Dee standing in a circle of skulls on the floor, stretching from the floor area in front of the Queen (on the left) to the floor near Edward Kelly (on the right). The skulls were at an early stage painted over, but have since become visible. Another pentimento is visible in the tapestry on the right: shelves containing monstrous animals are visible behind it. The pentimenti were clarified when the painting was X-rayed in 2015." ] } + } + ], + "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/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 1271, + "width": 2000, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": "{{ id.path }}/canvas/p2" + } + ] + } + ] + } + ] +} From ff32a88a7c401ffac6736e71ffc6cce7d2e3a026 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sat, 16 Jan 2021 12:53:10 -0800 Subject: [PATCH 58/95] add use case and implementation notes --- _includes/links.md | 2 +- recipe/0029-metadata-anywhere/index.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/_includes/links.md b/_includes/links.md index 7f57ff234..09244e5f8 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -28,11 +28,11 @@ [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-metadata]: https://iiif.io/api/presentation/3.0/#metadata "Metadata" [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" -[language-of-property-values]: https://iiif.io/api/presentation/3.0/#44-language-of-property-values "Language of Property Values" [bcp-47]: https://tools.ietf.org/html/bcp47 "BCP 47" diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index f40463c77..c3bfc3918 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -8,21 +8,19 @@ summary: "tbc" ## Use Case -I have interesting information to show at all levels of the IIIF model - how do I do that? +Sometimes it is useful to provide descriptive metadata about an object, such as creators, dates, subject headings, and physical or contextual descriptions, that will be displayed to the end user by a client. This metadata might describe the overall object, but can also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an associated annotation. ## Implementation notes -An ordered list of descriptions to be displayed to the user when they interact with the resource, given as pairs of human readable label and value entries. The content of these entries is intended for presentation only; descriptive semantics should not be inferred. An entry might be used to convey information about the creation of the object, a physical description, ownership information, or other purposes. - -The value of the metadata property must be an array of JSON objects, where each item in the array has both label and value properties. The values of both label and value must be JSON objects, as described in the languages section. +The `metadata` property is used to provide an ordered list of descriptive metadata as an array, with each entry given as a pair of human readable `label` and `value` arrays. The values of both the `label` and `value` properties must be JSON objects. These values will be displayed to the user as label/value pairs in the client. The content of these entries is intended for presentation only; descriptive semantics should not be inferred. For more information, see the IIIF Presentation API [Metadata](https://iiif.io/api/presentation/3.0/#metadata) section. ## Restrictions -Language maps and arrays required... see... +All descriptive properties intended for presentation to the user must use language maps and arrays as outlined in the [Language of Property Values](https://iiif.io/api/presentation/3.0/#language-of-property-values) section and demonstrated in the [Internationalization and Multi-language Values][0006] recipe. ## Example -Describe in prose and provide examples, e.g.: +In this example, we have two Canvases, each with a different photograph of the same painting, one using natural light and the other an x-ray image. Metadata is provided at the Manifest level to convey information about the resource and additional metadata is provided on each Canvas to provide image-specific details. Credit: John Dee performing an experiment before Queen Elizabeth I. Oil painting by Henry Gillard Glindoni. Credit: Wellcome Collection. Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) @@ -34,6 +32,8 @@ Credit: John Dee performing an experiment before Queen Elizabeth I. Oil painting Provide a bulleted list of related recipes and why they are relevant. +* [Internationalization and Multi-language Values][0006] +* [] {% include acronyms.md %} {% include links.md %} From 823d39f7da79530b1e276f29ba9ad02bc4de3b79 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sat, 16 Jan 2021 13:02:38 -0800 Subject: [PATCH 59/95] edits to use case and example --- recipe/0029-metadata-anywhere/index.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index c3bfc3918..c4d1a611c 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -3,12 +3,12 @@ title: Metadata on any resource id: 29 layout: recipe tags: [tbc] -summary: "tbc" +summary: "Provide item metadata for displaying to users" --- ## Use Case -Sometimes it is useful to provide descriptive metadata about an object, such as creators, dates, subject headings, and physical or contextual descriptions, that will be displayed to the end user by a client. This metadata might describe the overall object, but can also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an associated annotation. +Sometimes it is useful to provide descriptive metadata about an object, such as information on creators, dates, subject headings, and physical or contextual descriptions, that will be displayed to the end user by a client. This metadata might describe the overall object, but may also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an associated annotation. ## Implementation notes @@ -20,7 +20,7 @@ All descriptive properties intended for presentation to the user must use langua ## Example -In this example, we have two Canvases, each with a different photograph of the same painting, one using natural light and the other an x-ray image. Metadata is provided at the Manifest level to convey information about the resource and additional metadata is provided on each Canvas to provide image-specific details. +In this example, we have two Canvases, each with a different photograph of the same painting: one using natural light and the other an x-ray image. Metadata is provided at the Manifest level to convey information about the resource and additional metadata is provided on each Canvas to provide image-specific details. Credit: John Dee performing an experiment before Queen Elizabeth I. Oil painting by Henry Gillard Glindoni. Credit: Wellcome Collection. Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) @@ -30,10 +30,8 @@ Credit: John Dee performing an experiment before Queen Elizabeth I. Oil painting # Related recipes -Provide a bulleted list of related recipes and why they are relevant. - * [Internationalization and Multi-language Values][0006] -* [] +* [Displaying Multiple Values with Language Maps][0118] {% include acronyms.md %} {% include links.md %} From a824cbca865d8d4467e39f18f1e644daad3b8cee Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sat, 16 Jan 2021 13:21:01 -0800 Subject: [PATCH 60/95] fix typo --- recipe/0029-metadata-anywhere/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index c4d1a611c..adc954bf9 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -2,13 +2,13 @@ title: Metadata on any resource id: 29 layout: recipe -tags: [tbc] +tags: [presentation] summary: "Provide item metadata for displaying to users" --- ## Use Case -Sometimes it is useful to provide descriptive metadata about an object, such as information on creators, dates, subject headings, and physical or contextual descriptions, that will be displayed to the end user by a client. This metadata might describe the overall object, but may also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an associated annotation. +Sometimes it is useful to provide descriptive metadata about an object, such as information on creators, dates, subject headings, and physical or contextual descriptions, that will be displayed to the end user by a client. This metadata might describe the over all object, but may also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an annotation. ## Implementation notes From 57a08005d16e53e85f43d3e162b44ef609a5230e Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sun, 17 Jan 2021 09:33:48 -0800 Subject: [PATCH 61/95] rmv manifest --- recipe/0029-metadata-anywhere/manifest.json | 117 -------------------- 1 file changed, 117 deletions(-) delete mode 100644 recipe/0029-metadata-anywhere/manifest.json diff --git a/recipe/0029-metadata-anywhere/manifest.json b/recipe/0029-metadata-anywhere/manifest.json deleted file mode 100644 index 27a90bbab..000000000 --- a/recipe/0029-metadata-anywhere/manifest.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "{{ id.url }}", - "type": "Manifest", - "label": { - "en": [ - "John Dee performing an experiment before Queen Elizabeth I." - ] - }, - "metadata": [ - { - "label": { "en": [ "Creator" ] }, - "value": { "en": [ "Glindoni, Henry Gillard, 1852-1913" ] } - }, - { - "label": { "en": [ "Date" ] }, - "value": { "en": [ "1800-1899" ] } - }, - { - "label": { "en": [ "Physical Description" ] }, - "value": { "en": [ "1 painting : oil on canvas ; canvas 152 x 244.4 cm" ] } - }, - { - "label": { "en": [ "Reference" ] }, - "value": { "en": [ "Wellcome Library no. 47369i" ] } - } - ], - "requiredStatement": { - "label": { "en": [ "Attribution" ] }, - "value": { "en": [ "Wellcome Collection. https://wellcomecollection.org/works/nydjbrr7" ] } - }, - "rights": "https://creativecommons.org/licenses/by-nc/4.0/", - "items": [ - { - "id": "{{ id.path }}/canvas/p1", - "type": "Canvas", - "label": { "en": [ "Painting under natural light" ] }, - "height": 1271, - "width": 2000, - "metadata": [ - { - "label": { "en": [ "Description" ] }, - "value": { "en": [ "The scene is the house at Mortlake of Dr John Dee (1527-1608). At the court of Queen Elizabeth I, Dee was revered for the range of his scientific knowledge, which embraced the fields of mathematics, navigation, geography, alchemy/chemistry, medicine and optics. In the painting he is showing the effect of combining two elements, either to cause combustion or to extinguish it. Behind him is his assistant Edward Kelly, wearing a long skullcap to conceal the fact that his ears had been cropped as a punishment for forgery." ] } - } - ], - "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/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 1271, - "width": 2000, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", - "profile": "level1", - "type": "ImageService3" - } - ] - }, - "target": "{{ id.path }}/canvas/p1" - } - ] - } - ] - }, - { - "id": "{{ id.path }}/canvas/p2", - "type": "Canvas", - "label": { "en": [ "X-ray view of painting" ] }, - "height": 1271, - "width": 2000, - "metadata": [ - { - "label": { "en": [ "Description" ] }, - "value": { "en": [ "The painting originally showed Dee standing in a circle of skulls on the floor, stretching from the floor area in front of the Queen (on the left) to the floor near Edward Kelly (on the right). The skulls were at an early stage painted over, but have since become visible. Another pentimento is visible in the tapestry on the right: shelves containing monstrous animals are visible behind it. The pentimenti were clarified when the painting was X-rayed in 2015." ] } - } - ], - "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/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 1271, - "width": 2000, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", - "profile": "level1", - "type": "ImageService3" - } - ] - }, - "target": "{{ id.path }}/canvas/p2" - } - ] - } - ] - } - ] -} From 9524f4269fb8b1d9434c0a0a846492ca0f03204f Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sun, 17 Jan 2021 09:44:53 -0800 Subject: [PATCH 62/95] start new manifest --- recipe/0029-metadata-anywhere/manifest.json | 83 +++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 recipe/0029-metadata-anywhere/manifest.json diff --git a/recipe/0029-metadata-anywhere/manifest.json b/recipe/0029-metadata-anywhere/manifest.json new file mode 100644 index 000000000..6bb0613e9 --- /dev/null +++ b/recipe/0029-metadata-anywhere/manifest.json @@ -0,0 +1,83 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "{{ id.url }}", + "type": "Manifest", + "label": { + "en": [ + "John Dee performing an experiment before Queen Elizabeth I." + ] + }, + + "items": [ + { + "id": "{{ id.path }}/canvas/p1", + "type": "Canvas", + "label": { "en": [ "Painting under natural light" ] }, + "height": 1271, + "width": 2000, + "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/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 1271, + "width": 2000, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": "{{ id.path }}/canvas/p1" + } + ] + } + ] + }, + { + "id": "{{ id.path }}/canvas/p2", + "type": "Canvas", + "label": { "en": [ "X-ray view of painting" ] }, + "height": 1271, + "width": 2000, + "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/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 1271, + "width": 2000, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": "{{ id.path }}/canvas/p2" + } + ] + } + ] + } + ] +} From 5150ea7c5b555eeb2ca61d564cb5da532a0f4987 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sun, 17 Jan 2021 09:48:08 -0800 Subject: [PATCH 63/95] add manifest metadata --- recipe/0029-metadata-anywhere/manifest.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/recipe/0029-metadata-anywhere/manifest.json b/recipe/0029-metadata-anywhere/manifest.json index 6bb0613e9..e95d0d261 100644 --- a/recipe/0029-metadata-anywhere/manifest.json +++ b/recipe/0029-metadata-anywhere/manifest.json @@ -7,6 +7,24 @@ "John Dee performing an experiment before Queen Elizabeth I." ] }, + "metadata": [ + { + "label": { "en": [ "Creator" ] }, + "value": { "en": [ "Glindoni, Henry Gillard, 1852-1913" ] } + }, + { + "label": { "en": [ "Date" ] }, + "value": { "en": [ "1800-1899" ] } + }, + { + "label": { "en": [ "Physical Description" ] }, + "value": { "en": [ "1 painting : oil on canvas ; canvas 152 x 244.4 cm" ] } + }, + { + "label": { "en": [ "Reference" ] }, + "value": { "en": [ "Wellcome Library no. 47369i" ] } + } + ], "items": [ { From 9acfa407e8aaf7f66cdd71013c6a3c8065618bbd Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sun, 17 Jan 2021 09:51:18 -0800 Subject: [PATCH 64/95] add required statement --- recipe/0029-metadata-anywhere/manifest.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipe/0029-metadata-anywhere/manifest.json b/recipe/0029-metadata-anywhere/manifest.json index e95d0d261..1052bfcd3 100644 --- a/recipe/0029-metadata-anywhere/manifest.json +++ b/recipe/0029-metadata-anywhere/manifest.json @@ -25,6 +25,10 @@ "value": { "en": [ "Wellcome Library no. 47369i" ] } } ], + "requiredStatement": { + "label": { "en": [ "Attribution" ] }, + "value": { "en": [ "Wellcome Collection. https://wellcomecollection.org/works/nydjbrr7" ] } + }, "items": [ { From f908c7c095f3e63ef8cf933de9347a6c38fc6a5c Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sun, 17 Jan 2021 09:55:47 -0800 Subject: [PATCH 65/95] add rights --- recipe/0029-metadata-anywhere/manifest.json | 1 + 1 file changed, 1 insertion(+) diff --git a/recipe/0029-metadata-anywhere/manifest.json b/recipe/0029-metadata-anywhere/manifest.json index 1052bfcd3..cf5c32cd9 100644 --- a/recipe/0029-metadata-anywhere/manifest.json +++ b/recipe/0029-metadata-anywhere/manifest.json @@ -29,6 +29,7 @@ "label": { "en": [ "Attribution" ] }, "value": { "en": [ "Wellcome Collection. https://wellcomecollection.org/works/nydjbrr7" ] } }, + "rights": "https://creativecommons.org/licenses/by-nc/4.0/", "items": [ { From 1546bea276216191fdf60561ec0bb6aa3a21c5b8 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sun, 17 Jan 2021 09:59:59 -0800 Subject: [PATCH 66/95] update requiredStatement --- recipe/0029-metadata-anywhere/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0029-metadata-anywhere/manifest.json b/recipe/0029-metadata-anywhere/manifest.json index cf5c32cd9..4da151b5e 100644 --- a/recipe/0029-metadata-anywhere/manifest.json +++ b/recipe/0029-metadata-anywhere/manifest.json @@ -27,9 +27,9 @@ ], "requiredStatement": { "label": { "en": [ "Attribution" ] }, - "value": { "en": [ "Wellcome Collection. https://wellcomecollection.org/works/nydjbrr7" ] } + "value": { "en": [ "Wellcome Collection. Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)" ] } }, - "rights": "https://creativecommons.org/licenses/by-nc/4.0/", + "items": [ { From 5a27ed072ca366bfa3d46c86b5a8a61d14996775 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sun, 17 Jan 2021 10:03:42 -0800 Subject: [PATCH 67/95] add canvas 1 metadata --- recipe/0029-metadata-anywhere/manifest.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipe/0029-metadata-anywhere/manifest.json b/recipe/0029-metadata-anywhere/manifest.json index 4da151b5e..946d89442 100644 --- a/recipe/0029-metadata-anywhere/manifest.json +++ b/recipe/0029-metadata-anywhere/manifest.json @@ -29,7 +29,7 @@ "label": { "en": [ "Attribution" ] }, "value": { "en": [ "Wellcome Collection. Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)" ] } }, - + "items": [ { @@ -38,6 +38,12 @@ "label": { "en": [ "Painting under natural light" ] }, "height": 1271, "width": 2000, + "metadata": [ + { + "label": { "en": [ "Description" ] }, + "value": { "en": [ "The scene is the house at Mortlake of Dr John Dee (1527-1608). At the court of Queen Elizabeth I, Dee was revered for the range of his scientific knowledge, which embraced the fields of mathematics, navigation, geography, alchemy/chemistry, medicine and optics. In the painting he is showing the effect of combining two elements, either to cause combustion or to extinguish it. Behind him is his assistant Edward Kelly, wearing a long skullcap to conceal the fact that his ears had been cropped as a punishment for forgery." ] } + } + ], "items": [ { "id": "{{ id.path }}/page/p1/1", From bc2320a310df977cd6ee6ae74a6cb8ebe236634a Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sun, 17 Jan 2021 10:05:45 -0800 Subject: [PATCH 68/95] add canvas 2 metadata --- recipe/0029-metadata-anywhere/manifest.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipe/0029-metadata-anywhere/manifest.json b/recipe/0029-metadata-anywhere/manifest.json index 946d89442..66ad28ee2 100644 --- a/recipe/0029-metadata-anywhere/manifest.json +++ b/recipe/0029-metadata-anywhere/manifest.json @@ -30,7 +30,6 @@ "value": { "en": [ "Wellcome Collection. Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)" ] } }, - "items": [ { "id": "{{ id.path }}/canvas/p1", @@ -79,6 +78,12 @@ "label": { "en": [ "X-ray view of painting" ] }, "height": 1271, "width": 2000, + "metadata": [ + { + "label": { "en": [ "Description" ] }, + "value": { "en": [ "The painting originally showed Dee standing in a circle of skulls on the floor, stretching from the floor area in front of the Queen (on the left) to the floor near Edward Kelly (on the right). The skulls were at an early stage painted over, but have since become visible. Another pentimento is visible in the tapestry on the right: shelves containing monstrous animals are visible behind it. The pentimenti were clarified when the painting was X-rayed in 2015." ] } + } + ], "items": [ { "id": "{{ id.path }}/page/p2/1", From e39c02108a086c01a5d2f79bc6fa2e1f2af7dd75 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Sun, 17 Jan 2021 10:08:37 -0800 Subject: [PATCH 69/95] update line highlight --- recipe/0029-metadata-anywhere/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index adc954bf9..e1b345bcf 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -26,7 +26,7 @@ Credit: John Dee performing an experiment before Queen Elizabeth I. Oil painting {% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} -{% include jsonviewer.html src="manifest.json" config='data-line="10-59, 84-97, 137-150"' %} +{% include jsonviewer.html src="manifest.json" config='data-line="10-59, 83-96, 136-149"' %} # Related recipes From 745917a8742d48d8963dd390aa57e1eb5a1726de Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 22 Jan 2021 10:49:51 -0800 Subject: [PATCH 70/95] edit implementation notes --- recipe/0118_multivalue/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 776539d40..b64e3ae6d 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -8,13 +8,13 @@ summary: "The language map pattern requires that all values are supplied as an a ## Use Case -In some cases, a work is known by more than one title (or has multiple authors, subject heading, etc.) that we would like to display to end users. In this case, our work has variant titles that we will include in the `metadata` property using the required arrays. This pattern can be applied to any property values that are intended to be displayed to end users. +In some cases, a work is known by more than one title (or has multiple authors, subject heading, etc.) that we would like to display to end users. In this case, our work has title variants that we will include in the `metadata` property using the required arrays. This pattern can be applied to any property values that are intended to be displayed to end users. ## Implementation Notes -Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are supplied as an array, whether a single value or multiple value strings. For example, if the work in question has multiple values for a property, all values would be included as separate strings within a single array; if the property has only a single value, the value would be included as a single-value array. +Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are supplied as an array, whether a single value or multiple value strings. For example, a work with multiple authors would include separate strings for each author within a single array: `["Picart, Bernard", "Bernard, Jean-Frédéric"]`; a work with only one author would have a single string also within an array: `["Whistler, James McNeill"]`. -In the case of multiple languages, all associated values must be arrays of strings with separate arrays for each language. For more information, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. +In the case of multiple languages, each language is represented by its own "language code/array" pair. For more information on language maps and multi-language values, see the recipe [Internationalization and Multi-language Values][0006]. For more information on what clients are expected to do with language map properties and values in general, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. ## Restrictions From 084f3fe3f5d3f4bc3f650a45054b6700e8a1553a Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 22 Jan 2021 11:20:09 -0800 Subject: [PATCH 71/95] update per Bryan's comments --- recipe/0029-metadata-anywhere/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index e1b345bcf..7b04001b6 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -8,15 +8,15 @@ summary: "Provide item metadata for displaying to users" ## Use Case -Sometimes it is useful to provide descriptive metadata about an object, such as information on creators, dates, subject headings, and physical or contextual descriptions, that will be displayed to the end user by a client. This metadata might describe the over all object, but may also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an annotation. +Often it is useful to provide descriptive metadata about a resource, such as information on creators, dates, subject headings, and physical or contextual descriptions, that will be displayed to the end user by a client. This metadata might describe the over all object, but may also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an annotation. ## Implementation notes -The `metadata` property is used to provide an ordered list of descriptive metadata as an array, with each entry given as a pair of human readable `label` and `value` arrays. The values of both the `label` and `value` properties must be JSON objects. These values will be displayed to the user as label/value pairs in the client. The content of these entries is intended for presentation only; descriptive semantics should not be inferred. For more information, see the IIIF Presentation API [Metadata](https://iiif.io/api/presentation/3.0/#metadata) section. +The `metadata` property is used to provide an ordered list of descriptive metadata as an array, with each entry given as a pair of human readable `label` and `value` arrays. The values of both the `label` and `value` properties must be JSON objects. These values will be displayed to the user as label/value pairs by the client. The content of these entries is intended for presentation only; descriptive semantics should not be inferred. For more information, see the IIIF Presentation API [Metadata](https://iiif.io/api/presentation/3.0/#metadata) section. ## Restrictions -All descriptive properties intended for presentation to the user must use language maps and arrays as outlined in the [Language of Property Values](https://iiif.io/api/presentation/3.0/#language-of-property-values) section and demonstrated in the [Internationalization and Multi-language Values][0006] recipe. +All descriptive properties intended for presentation to the user must use language maps as outlined in the [Language of Property Values](https://iiif.io/api/presentation/3.0/#language-of-property-values) section and demonstrated in the [Internationalization and Multi-language Values][0006] recipe. ## Example From 1c6b6534bd8025a03b27b0b2c263490e1880bc41 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 22 Jan 2021 12:50:39 -0800 Subject: [PATCH 72/95] add info about hierarchy to recipe --- recipe/0024-book-4-toc/index.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index ae56cff52..8dd66b99b 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -8,13 +8,15 @@ summary: "Using Ranges to create a table of contents for a book" ## Use Case -Many books have a logical structure, such as chapters and other sections or multiple works contained within an anthology or bound manuscript, that can be made navigable through a table of contents (ToC) or other wayfinding methods. IIIF uses Ranges to represent a book's structure and IIIF viewers can display this structure as a ToC in an index panel to aid users in navigating the book by chapter, section, work, etc. +Many books have a logical structure that can be made navigable through a table of contents (ToC) or other wayfinding methods. These might include chapters and other internal sections, or might reflect multiple works contained within an anthology or bound manuscript. IIIF uses Ranges to represent a book's structure and IIIF viewers can display this structure as a ToC in an index panel to aid users in navigating the book by chapter, section, work, etc. ## Implementation Notes Ranges are used to represent a structure within a book object by grouping Canvases together and/or by providing an alternate order of the Canvases from the order presented in the `items` property of the Manifest. Ranges can include Canvases, parts of Canvases, or other Ranges, creating a tree structure like a table of contents. -Ranges are contained within the `structures` property and require a `label` property to display in the ToC (viewers do not use the Canvas `label` property to display values in the ToC). The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [the Presentation 3.0 spec on Ranges](https://iiif.io/api/presentation/3.0/#54-range). +Ranges are contained within the `structures` property and require a `label` property to display in the ToC (viewers do not use the Canvas `label` property to display values in the ToC). Within a Range, resources are included as an array of resources using the `items` property. These structures can be made hierarchical simply by nesting `items` within other `items`. This is a departure from the method defined by the IIIF Presentation API 2.x. + +The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [Presentation 3.0 spec on Ranges](https://iiif.io/api/presentation/3.0/#54-range). ## Restrictions @@ -22,7 +24,12 @@ None ## Example -In this example, an Ethiopic manuscript contains multiple works, one of which contains multiple sections. The manifest contains a Range to represent the top-level structure (begins with lines 247-254), and another embedded Range to represent the content sections of the second work, *Arede'et* (begins with lines 275-282). +In this example, an Ethiopic manuscript contains multiple works, one of which contains multiple sections. The Manifest contains a Range to represent the top-level structure (begins with lines 247-254), and another embedded Range to represent the content sections of the second work, *Arede'et* (begins with lines 275-282). This will result in a hierarchical ToC like so: + +* Tabiba Tabiban [ጠቢበ ጠቢባን] +* Arede'et [አርድዕት] + * Monday + * Tuesday {% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} From 33c7a930ee8ac3eba11ed82bf70685e4008fd2d2 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 22 Jan 2021 12:59:06 -0800 Subject: [PATCH 73/95] add idea of chapters with sub-sections --- recipe/0024-book-4-toc/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index 8dd66b99b..bc6313ef3 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -14,7 +14,7 @@ Many books have a logical structure that can be made navigable through a table o Ranges are used to represent a structure within a book object by grouping Canvases together and/or by providing an alternate order of the Canvases from the order presented in the `items` property of the Manifest. Ranges can include Canvases, parts of Canvases, or other Ranges, creating a tree structure like a table of contents. -Ranges are contained within the `structures` property and require a `label` property to display in the ToC (viewers do not use the Canvas `label` property to display values in the ToC). Within a Range, resources are included as an array of resources using the `items` property. These structures can be made hierarchical simply by nesting `items` within other `items`. This is a departure from the method defined by the IIIF Presentation API 2.x. +Ranges are contained within the `structures` property and require a `label` property to display in the ToC (viewers do not use the Canvas `label` property to display values in the ToC). Within a Range, resources are included as an array of resources using the `items` property. These structures can be made hierarchical simply by nesting `items` within other `items`. This is useful when chapters might be sub-divided or in the case of multiple works where individual works may have chapters. This is a departure from the method defined by the IIIF Presentation API 2.x. The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [Presentation 3.0 spec on Ranges](https://iiif.io/api/presentation/3.0/#54-range). From c90845696429838fe43c90a3a8c62696bb81966e Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Mon, 25 Jan 2021 08:35:19 -0800 Subject: [PATCH 74/95] style edits --- recipe/0118_multivalue/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index b64e3ae6d..6129063e1 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -22,7 +22,7 @@ None ## Example -In this example, the work has multiple titles in both English and French. The manifest `label` provides a single title in French within a single-value array (lines 6-8). The alternative titles are provided in the `metadata` property in both English and French, each with variants contained within two separate arrays -- one array for English (lines 18-21) and one for French (lines 22-25). In the `summary` property (lines 30-32) the value is included as single-string array. +In this example, the work has multiple titles in both English and French. The manifest `label` provides a single title in French within a single-value array (lines 6-8). The alternative titles are provided in the `metadata` property in both English and French, each with variants contained within two separate arrays -- one array for English (lines 18-21) and one for French (lines 22-25). In the `summary` property (lines 30-32) the value is included as a single-string array. {% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} From 86454fbbc7b38189d04c81b70f654a069515cee3 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Mon, 25 Jan 2021 08:35:43 -0800 Subject: [PATCH 75/95] style edits --- recipe/0118_multivalue/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 6129063e1..82270f6a7 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -14,7 +14,7 @@ In some cases, a work is known by more than one title (or has multiple authors, Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are supplied as an array, whether a single value or multiple value strings. For example, a work with multiple authors would include separate strings for each author within a single array: `["Picart, Bernard", "Bernard, Jean-Frédéric"]`; a work with only one author would have a single string also within an array: `["Whistler, James McNeill"]`. -In the case of multiple languages, each language is represented by its own "language code/array" pair. For more information on language maps and multi-language values, see the recipe [Internationalization and Multi-language Values][0006]. For more information on what clients are expected to do with language map properties and values in general, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. +In the case of multiple languages, each language is represented by its own language map comprising a language key and an array. For more information on language maps and multi-language values, see the recipe [Internationalization and Multi-language Values][0006]. For more information on what clients are expected to do with language map properties and values in general, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. ## Restrictions From 6cfc13f5c57e47e11987c7555d1db326f3330984 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Mon, 25 Jan 2021 09:07:03 -0800 Subject: [PATCH 76/95] update title case --- recipe/0029-metadata-anywhere/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index 7b04001b6..f95ea6339 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -1,5 +1,5 @@ --- -title: Metadata on any resource +title: Metadata on any Resource id: 29 layout: recipe tags: [presentation] @@ -8,7 +8,7 @@ summary: "Provide item metadata for displaying to users" ## Use Case -Often it is useful to provide descriptive metadata about a resource, such as information on creators, dates, subject headings, and physical or contextual descriptions, that will be displayed to the end user by a client. This metadata might describe the over all object, but may also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an annotation. +Often it is useful to provide descriptive metadata about a resource, such as information on creators, dates, subject headings, and physical or contextual descriptions, that a client will display to the end user. This metadata might describe the entire resource, but may also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an annotation. ## Implementation notes From 76245b30b543b9931c99edd265a7d5f15909e622 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Fri, 29 Jan 2021 12:22:07 -0500 Subject: [PATCH 77/95] Set seeAlso value to the Fixtures URI --- recipe/0053-seeAlso/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/manifest.json b/recipe/0053-seeAlso/manifest.json index bf6fa674c..d45606330 100644 --- a/recipe/0053-seeAlso/manifest.json +++ b/recipe/0053-seeAlso/manifest.json @@ -11,7 +11,7 @@ "viewingDirection": "right-to-left", "seeAlso": [ { - "id": "https://fixtures.iiif.io/other/UCLA/kabuki_ezukushi_rtl.xml", + "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", "type": "Dataset", "label": { "en": [ "Dublin Core metadata" ] }, "format": "text/xml", From 97448822c4dcc5f2ce2ede73752d768b92b01c23 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Fri, 29 Jan 2021 12:56:42 -0500 Subject: [PATCH 78/95] Updated for metadata target format change, other copyediting --- recipe/0053-seeAlso/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index cc4377132..cd7f04910 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -8,11 +8,11 @@ summary: "tbc" ## Use Case -You have a IIIF format resource for which you would like to offer aggregators a machine-readable version. You know from previous experience that aggregators crawling your collection harvest best when handed structured metadata and are also then able to offer their readers faceting capabilities, making your resources amenable to focused discovery. Through use of the `seeAlso` property, you are able to alert an aggregator to the presence of a dataset so the aggregator can provide appropriate and sophisticated information about your resource to the aggregator's users. +You have a IIIF resource for which you would like to offer aggregators a machine-readable version. You know from previous experience that aggregators crawling your collection harvest best when handed structured metadata and are also then able to offer their readers faceting capabilities, making your resources amenable to focused discovery. Through use of the `seeAlso` property, you are able to alert an aggregator to the presence of a dataset so the aggregator can provide appropriate and sophisticated information about your resource to the aggregator's users. ## Implementation Notes -This property is used for pointing a viewer to the URI of a non-IIIF resource with information about the IIIF resource to which it is attached. Most frequently, the non-IIIF resource will be structured metadata, and to be most effective, the target resource should be a machine-readable format such as Dublin Core, MODS, or RDF. The `type` value for `seeAlso` is usually `dataset`. +This property is used for pointing a viewer to the URI of a non-IIIF resource with information about the IIIF resource to which it is attached. Most frequently, the non-IIIF resource will be structured metadata, and to be most effective, the target resource should be a machine-readable format such as XML, JSON, or RDF. The `type` value for `seeAlso` is usually `dataset`. Three other properties may seem similar, so it's worth highlighting the differences. @@ -33,7 +33,7 @@ No known restrictions ## Example -In this example, a Dublin Core Metadata Initiative XML file is provided for the program as a whole, and as such the `seeAlso` property attaches to the Manifest. If such data files were available for each view or page separately, each Canvas would be a logical place for the corresponding `seeAlso` instance. +In this example, a MODS XML file is provided for the program as a whole, and as such the `seeAlso` property attaches to the Manifest. If such data files were available for each view or page separately, each Canvas would be a logical place for the corresponding `seeAlso` instance. To see the property in action in Mirador, toggle the sidebar by activating the three-line ("hamburger") menu in the upper left-hand corner of the content window. You should then, in the "Related" area, see the link in the "Related" section under the "See also" subheading. From 970c42c69523fba1a3e39402a02d7f717e69407c Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Fri, 29 Jan 2021 12:57:29 -0500 Subject: [PATCH 79/95] Updated for metadata target format change --- recipe/0053-seeAlso/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0053-seeAlso/manifest.json b/recipe/0053-seeAlso/manifest.json index d45606330..3af5077a0 100644 --- a/recipe/0053-seeAlso/manifest.json +++ b/recipe/0053-seeAlso/manifest.json @@ -13,9 +13,9 @@ { "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", "type": "Dataset", - "label": { "en": [ "Dublin Core metadata" ] }, + "label": { "en": [ "MODS metadata" ] }, "format": "text/xml", - "profile": "https://www.dublincore.org/schemas/xmls/qdc/dc.xsd" + "profile": "http://www.loc.gov/mods/v3" } ], "items": [ From 001ad072a23359308609f39164e4d764c83d9305 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 29 Jan 2021 10:31:51 -0800 Subject: [PATCH 80/95] updat range labels note --- recipe/0024-book-4-toc/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index bc6313ef3..eceecdbda 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -14,9 +14,9 @@ Many books have a logical structure that can be made navigable through a table o Ranges are used to represent a structure within a book object by grouping Canvases together and/or by providing an alternate order of the Canvases from the order presented in the `items` property of the Manifest. Ranges can include Canvases, parts of Canvases, or other Ranges, creating a tree structure like a table of contents. -Ranges are contained within the `structures` property and require a `label` property to display in the ToC (viewers do not use the Canvas `label` property to display values in the ToC). Within a Range, resources are included as an array of resources using the `items` property. These structures can be made hierarchical simply by nesting `items` within other `items`. This is useful when chapters might be sub-divided or in the case of multiple works where individual works may have chapters. This is a departure from the method defined by the IIIF Presentation API 2.x. +Ranges are contained within the `structures` property and require a `label` property to display in the ToC (`labels` are not inherited from a referenced Canvas, so you will need to explicitly include the `label` property in the Range). Within a Range, resources are included as an array of resources using the `items` property. These structures can be made hierarchical simply by nesting `items` within other `items`. This is useful when chapters might be sub-divided or in the case of multiple works where individual works may have chapters. This is a departure from the method defined by previous versions of the IIIF Presentation API. -The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [Presentation 3.0 spec on Ranges](https://iiif.io/api/presentation/3.0/#54-range). +The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [IIIF Presentation API on Ranges](https://iiif.io/api/presentation/3.0/#54-range). ## Restrictions From 33dc140eb0b3bde52a3930ca386174c883026bfb Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 29 Jan 2021 10:42:45 -0800 Subject: [PATCH 81/95] add seeAlso refs --- recipe/0029-metadata-anywhere/index.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index f95ea6339..d76d1d068 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -8,11 +8,13 @@ summary: "Provide item metadata for displaying to users" ## Use Case -Often it is useful to provide descriptive metadata about a resource, such as information on creators, dates, subject headings, and physical or contextual descriptions, that a client will display to the end user. This metadata might describe the entire resource, but may also be applied at more granular levels to provide information on parts of the object, such as a single image or page, a region of a page, or an annotation. +Often it is useful to provide descriptive metadata about a resource, such as information on creators, dates, subject headings, and physical or contextual descriptions, that a client will display to the end user. This metadata might describe the entire resource, but may also be applied at more granular levels to provide information on parts of the resource, such as a single image or page, a region of a page, or an annotation. ## Implementation notes -The `metadata` property is used to provide an ordered list of descriptive metadata as an array, with each entry given as a pair of human readable `label` and `value` arrays. The values of both the `label` and `value` properties must be JSON objects. These values will be displayed to the user as label/value pairs by the client. The content of these entries is intended for presentation only; descriptive semantics should not be inferred. For more information, see the IIIF Presentation API [Metadata](https://iiif.io/api/presentation/3.0/#metadata) section. +The `metadata` property is used to provide an ordered list of descriptive metadata as an array, with each entry given as a pair of human readable `label` and `value` arrays. The values of both the `label` and `value` properties must be JSON objects. These values will be displayed to the user as label/value pairs by the client. For more information, see the IIIF Presentation API [Metadata](https://iiif.io/api/presentation/3.0/#metadata) section. + +The content of these entries is intended for presentation only; descriptive semantics should not be inferred. For information on how to include structured metadata that can support discovery, see the [Linking to Structured Metadata][0053] recipe. ## Restrictions @@ -32,6 +34,7 @@ Credit: John Dee performing an experiment before Queen Elizabeth I. Oil painting * [Internationalization and Multi-language Values][0006] * [Displaying Multiple Values with Language Maps][0118] +* [Linking to Structured Metadata][0053] {% include acronyms.md %} {% include links.md %} From dbb41b9601786add919c2bb37fde843032a7b808 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 5 Feb 2021 08:44:00 -0800 Subject: [PATCH 82/95] address editor suggestion --- recipe/0118_multivalue/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 82270f6a7..6a58e5896 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -12,7 +12,7 @@ In some cases, a work is known by more than one title (or has multiple authors, ## Implementation Notes -Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are supplied as an array, whether a single value or multiple value strings. For example, a work with multiple authors would include separate strings for each author within a single array: `["Picart, Bernard", "Bernard, Jean-Frédéric"]`; a work with only one author would have a single string also within an array: `["Whistler, James McNeill"]`. +Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are an array, whether a single value or multiple value strings. For example, a work with multiple authors would include separate strings for each author within a single array: `["Picart, Bernard", "Bernard, Jean-Frédéric"]`; a work with only one author would have a single string also within an array: `["Whistler, James McNeill"]`. In the case of multiple languages, each language is represented by its own language map comprising a language key and an array. For more information on language maps and multi-language values, see the recipe [Internationalization and Multi-language Values][0006]. For more information on what clients are expected to do with language map properties and values in general, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. From 1be4be8d734754c6e9bb2650157247a3b1660406 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 5 Feb 2021 08:46:05 -0800 Subject: [PATCH 83/95] address editor comments --- recipe/0029-metadata-anywhere/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index d76d1d068..95638f445 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -14,12 +14,12 @@ Often it is useful to provide descriptive metadata about a resource, such as inf The `metadata` property is used to provide an ordered list of descriptive metadata as an array, with each entry given as a pair of human readable `label` and `value` arrays. The values of both the `label` and `value` properties must be JSON objects. These values will be displayed to the user as label/value pairs by the client. For more information, see the IIIF Presentation API [Metadata](https://iiif.io/api/presentation/3.0/#metadata) section. -The content of these entries is intended for presentation only; descriptive semantics should not be inferred. For information on how to include structured metadata that can support discovery, see the [Linking to Structured Metadata][0053] recipe. - ## Restrictions All descriptive properties intended for presentation to the user must use language maps as outlined in the [Language of Property Values](https://iiif.io/api/presentation/3.0/#language-of-property-values) section and demonstrated in the [Internationalization and Multi-language Values][0006] recipe. +The content of these entries is intended for presentation only; descriptive semantics should not be inferred. For information on how to include structured metadata that can support discovery, see the [Linking to Structured Metadata][0053] recipe. + ## Example In this example, we have two Canvases, each with a different photograph of the same painting: one using natural light and the other an x-ray image. Metadata is provided at the Manifest level to convey information about the resource and additional metadata is provided on each Canvas to provide image-specific details. From b2bcce77cb1ae25df2f28ec55d0e40c0237aa2d6 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 5 Feb 2021 09:49:17 -0800 Subject: [PATCH 84/95] add link to future ranges/behavior recipe --- recipe/0024-book-4-toc/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index eceecdbda..d9cfca94f 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -16,7 +16,7 @@ Ranges are used to represent a structure within a book object by grouping Canvas Ranges are contained within the `structures` property and require a `label` property to display in the ToC (`labels` are not inherited from a referenced Canvas, so you will need to explicitly include the `label` property in the Range). Within a Range, resources are included as an array of resources using the `items` property. These structures can be made hierarchical simply by nesting `items` within other `items`. This is useful when chapters might be sub-divided or in the case of multiple works where individual works may have chapters. This is a departure from the method defined by previous versions of the IIIF Presentation API. -The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [IIIF Presentation API on Ranges](https://iiif.io/api/presentation/3.0/#54-range). +The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [IIIF Presentation API on Ranges](https://iiif.io/api/presentation/3.0/#54-range) and the [Ranges and the `behavior` Property][229] recipe. ## Restrictions From 9c713bfcf2d41572f97bd33f25f0bf2c4a0a2891 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Fri, 5 Feb 2021 09:50:56 -0800 Subject: [PATCH 85/95] move metadata up on home page --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 88828b9b3..5ae59a185 100644 --- a/index.md +++ b/index.md @@ -31,6 +31,7 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: .. * [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] (24,25) * [Internationalization and Multi-language Values][0006] (3,4,6) * [Embedding HTML in descriptive properties][0007] (64) +* [Metadata on any Resource][0029] (21) * [Rights statement\(s\)][0008] (7) * [Simple Manifest - Book][0009] (19) * [Book behavior (paging) variations][0011] (15,16,17) @@ -64,7 +65,6 @@ _(leading on to segmentation examples later)_ * [Table of contents for A/V content][0026] (26) * Alternative Sequence (via `sequence` Range) (20,22,23) * `sequence` Range with partial canvases -* [Metadata on any Resource][0029] (21) ## Higher-level structure From cb3f4bc47d6ef5371c3ea151887716c8fd21dc53 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Wed, 10 Feb 2021 17:00:41 -0500 Subject: [PATCH 86/95] Updated label to match recipe title, appropriately --- recipe/0053-seeAlso/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/manifest.json b/recipe/0053-seeAlso/manifest.json index 3af5077a0..42b9306e1 100644 --- a/recipe/0053-seeAlso/manifest.json +++ b/recipe/0053-seeAlso/manifest.json @@ -4,7 +4,7 @@ "type": "Manifest", "label": { "en": [ - "Alternative Representations Through Rendering" + "Linking to Structured Metadata" ] }, "summary": { "en": ["Playbill for \"Akiba gongen kaisen-banashi,\" \"Futatsu chōchō kuruwa nikki\" and \"Godairiki koi no fūjime\" performed at the Chikugo Theater in Osaka from the fifth month of Kaei 2 (May, 1849); main actors: Gadō Kataoka II, Ebizō Ichikawa VI, Kitō Sawamura II, Daigorō Mimasu IV and Karoku Nakamura I; on front cover: producer Mominosuke Ichikawa's crest."] }, From 162748d73bc1c5cc0596a92fcf6ed20838e0ec42 Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Wed, 10 Feb 2021 17:01:07 -0500 Subject: [PATCH 87/95] Edited text per cookbook editor comments --- recipe/0053-seeAlso/index.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index cd7f04910..e9903ebd8 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -8,7 +8,7 @@ summary: "tbc" ## Use Case -You have a IIIF resource for which you would like to offer aggregators a machine-readable version. You know from previous experience that aggregators crawling your collection harvest best when handed structured metadata and are also then able to offer their readers faceting capabilities, making your resources amenable to focused discovery. Through use of the `seeAlso` property, you are able to alert an aggregator to the presence of a dataset so the aggregator can provide appropriate and sophisticated information about your resource to the aggregator's users. +You have a IIIF manifest resource along with additional machine-readable metadata usable by aggregators and others that can process or index it via the `seeAlso` property. You know from previous experience that aggregators crawling your collection harvest best when handed structured metadata and are also then able to offer their readers faceting capabilities, making your resources amenable to focused discovery. Through use of the `seeAlso` property, you are able to alert an aggregator to the presence of a dataset so the aggregator can provide appropriate and sophisticated information about your resource to the aggregator's users. ## Implementation Notes @@ -29,7 +29,7 @@ Any resource may have the `seeAlso` property. Each instance of it may have multi ## Restrictions -No known restrictions +None ## Example @@ -45,12 +45,9 @@ The direct link to the fixture is a useful convenience. ## Related Recipes -* [Audio Presentation with Accompanying Image][0014], using `accompanyingCanvas` to present one IIIF resource simultaneously with another -* [Choice (simplest)][0033] for showing multiple representations of the same view -* [Choice — multispectral flavored example, with image services][0034] for showing multiple representations of the same view with Image Services * [homepage][0047] for pointing to a web page about the object represented by the current resource * [Providing Alternative Representations][0046] for alternate representations of the same object -* [A museum object][0059] for using `rendering` to provide a 3D model + {% include acronyms.md %} {% include links.md %} From 13791d298ad1edf7e78f02e5de2f599a7b7fc257 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Wed, 24 Feb 2021 13:25:59 -0800 Subject: [PATCH 88/95] fix trc issues --- recipe/0029-metadata-anywhere/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0029-metadata-anywhere/index.md b/recipe/0029-metadata-anywhere/index.md index 95638f445..1dce7e0ab 100644 --- a/recipe/0029-metadata-anywhere/index.md +++ b/recipe/0029-metadata-anywhere/index.md @@ -16,7 +16,7 @@ The `metadata` property is used to provide an ordered list of descriptive metada ## Restrictions -All descriptive properties intended for presentation to the user must use language maps as outlined in the [Language of Property Values](https://iiif.io/api/presentation/3.0/#language-of-property-values) section and demonstrated in the [Internationalization and Multi-language Values][0006] recipe. +All descriptive properties intended for presentation to the user must use language maps as outlined in the [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section and demonstrated in the [Internationalization and Multi-language Values][0006] recipe. The content of these entries is intended for presentation only; descriptive semantics should not be inferred. For information on how to include structured metadata that can support discovery, see the [Linking to Structured Metadata][0053] recipe. @@ -24,7 +24,7 @@ The content of these entries is intended for presentation only; descriptive sema In this example, we have two Canvases, each with a different photograph of the same painting: one using natural light and the other an x-ray image. Metadata is provided at the Manifest level to convey information about the resource and additional metadata is provided on each Canvas to provide image-specific details. -Credit: John Dee performing an experiment before Queen Elizabeth I. Oil painting by Henry Gillard Glindoni. Credit: Wellcome Collection. Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) +Credit: *John Dee performing an experiment before Queen Elizabeth I*. Oil painting by Henry Gillard Glindoni. Credit: Wellcome Collection. Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) {% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} From e8b50bef6ee41dfd29760fb79d6cfb93f4dbb20b Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Tue, 9 Mar 2021 19:34:48 -0800 Subject: [PATCH 89/95] trc edits --- recipe/0118_multivalue/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 6a58e5896..3a17723b4 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -12,9 +12,9 @@ In some cases, a work is known by more than one title (or has multiple authors, ## Implementation Notes -Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are an array, whether a single value or multiple value strings. For example, a work with multiple authors would include separate strings for each author within a single array: `["Picart, Bernard", "Bernard, Jean-Frédéric"]`; a work with only one author would have a single string also within an array: `["Whistler, James McNeill"]`. +Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are an array, whether a single value or multiple value strings. The client must display all of the strings in the array value. Thus, a work with multiple authors might include separate strings for each author within a single array: `["Picart, Bernard", "Bernard, Jean-Frédéric"]` (see [Presentation API section 1.3.4.][https://iiif.io/api/presentation/3.0/change-log/#134-always-require-arrays-if-property-can-have-multiple-values]). -In the case of multiple languages, each language is represented by its own language map comprising a language key and an array. For more information on language maps and multi-language values, see the recipe [Internationalization and Multi-language Values][0006]. For more information on what clients are expected to do with language map properties and values in general, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. +In the case of multiple languages, each language is represented by its own language map comprising a language key and an array. For more information on language maps and multi-language values, see the recipe [Internationalization and Multi-language Values][0006]. For more information about what clients are expected to do with language map properties and values, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. ## Restrictions @@ -22,7 +22,7 @@ None ## Example -In this example, the work has multiple titles in both English and French. The manifest `label` provides a single title in French within a single-value array (lines 6-8). The alternative titles are provided in the `metadata` property in both English and French, each with variants contained within two separate arrays -- one array for English (lines 18-21) and one for French (lines 22-25). In the `summary` property (lines 30-32) the value is included as a single-string array. +In this example, the work has multiple titles in both English and French. The Manifest `label` provides a single title in French within a single-value array (lines 6–8). The alternative titles are provided in the `metadata` property in both English and French, each with variants contained within two separate arrays -- one array for English (lines 18–21) and one for French (lines 22–25). In the `summary` property (lines 30–32) the value is included as a single-string array. {% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %} From f5ad4a060873f1c9c327742bf5036f4d66a06b8a Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Tue, 9 Mar 2021 19:40:49 -0800 Subject: [PATCH 90/95] trc edits --- recipe/0118_multivalue/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0118_multivalue/index.md b/recipe/0118_multivalue/index.md index 3a17723b4..1f5a37646 100644 --- a/recipe/0118_multivalue/index.md +++ b/recipe/0118_multivalue/index.md @@ -12,7 +12,7 @@ In some cases, a work is known by more than one title (or has multiple authors, ## Implementation Notes -Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are an array, whether a single value or multiple value strings. The client must display all of the strings in the array value. Thus, a work with multiple authors might include separate strings for each author within a single array: `["Picart, Bernard", "Bernard, Jean-Frédéric"]` (see [Presentation API section 1.3.4.][https://iiif.io/api/presentation/3.0/change-log/#134-always-require-arrays-if-property-can-have-multiple-values]). +Language maps are required of all strings that are intended to be displayed to the user (this includes the `label` and `summary` properties, as well as `label` and `value` properties within the `metadata` and `requiredStatement` properties). Furthermore, the language map pattern requires that all values are an array, whether a single value or multiple value strings. The client must display all of the strings in the array value. Thus, a work with multiple authors might include separate strings for each author within a single array: `["Picart, Bernard", "Bernard, Jean-Frédéric"]`. See the Presentation API section [Always require arrays if property can have multiple values](https://iiif.io/api/presentation/3.0/change-log/#134-always-require-arrays-if-property-can-have-multiple-values). In the case of multiple languages, each language is represented by its own language map comprising a language key and an array. For more information on language maps and multi-language values, see the recipe [Internationalization and Multi-language Values][0006]. For more information about what clients are expected to do with language map properties and values, see the Presentation API [Language of Property Values](https://iiif.io/api/presentation/3.0/#44-language-of-property-values) section. From cbf21a8dce8d6e99029883a04ca924a987f4bd70 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Tue, 9 Mar 2021 19:54:03 -0800 Subject: [PATCH 91/95] fix lang maps for labels --- recipe/0024-book-4-toc/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0024-book-4-toc/manifest.json b/recipe/0024-book-4-toc/manifest.json index 2f07b9e04..c4e3f83bc 100644 --- a/recipe/0024-book-4-toc/manifest.json +++ b/recipe/0024-book-4-toc/manifest.json @@ -254,7 +254,7 @@ "id": "{{ id.path }}/range/r2/1", "type": "Range", "label": { - "gez": [ "Monday" ] + "en": [ "Monday" ] }, "items": [ { @@ -271,7 +271,7 @@ "id": "{{ id.path }}/range/r2/2", "type": "Range", "label": { - "gez": [ "Tuesday" ] + "en": [ "Tuesday" ] }, "items": [ { From 2ec5fae9ab135b174897889b47c15de1b150dc90 Mon Sep 17 00:00:00 2001 From: Dawn Childress Date: Tue, 9 Mar 2021 19:57:08 -0800 Subject: [PATCH 92/95] update with trc suggestions --- recipe/0024-book-4-toc/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0024-book-4-toc/index.md b/recipe/0024-book-4-toc/index.md index d9cfca94f..96a005323 100644 --- a/recipe/0024-book-4-toc/index.md +++ b/recipe/0024-book-4-toc/index.md @@ -14,7 +14,7 @@ Many books have a logical structure that can be made navigable through a table o Ranges are used to represent a structure within a book object by grouping Canvases together and/or by providing an alternate order of the Canvases from the order presented in the `items` property of the Manifest. Ranges can include Canvases, parts of Canvases, or other Ranges, creating a tree structure like a table of contents. -Ranges are contained within the `structures` property and require a `label` property to display in the ToC (`labels` are not inherited from a referenced Canvas, so you will need to explicitly include the `label` property in the Range). Within a Range, resources are included as an array of resources using the `items` property. These structures can be made hierarchical simply by nesting `items` within other `items`. This is useful when chapters might be sub-divided or in the case of multiple works where individual works may have chapters. This is a departure from the method defined by previous versions of the IIIF Presentation API. +Ranges are contained within the `structures` property and require a `label` property to display in the ToC (`labels` are not inherited from a referenced Canvas, so you will need to explicitly include the `label` property in the Range). Within a Range, resources are included as an array of resources using the `items` property. These structures can be made hierarchical simply by nesting an `items` array within another `items` array. This is useful when chapters might be sub-divided or in the case of multiple works where individual works may have chapters. This is a departure from the method defined by previous versions of the IIIF Presentation API. The `behavior` property can also be applied to Ranges. For more information on how `behavior` affects navigation in Ranges, see the [IIIF Presentation API on Ranges](https://iiif.io/api/presentation/3.0/#54-range) and the [Ranges and the `behavior` Property][229] recipe. @@ -24,7 +24,7 @@ None ## Example -In this example, an Ethiopic manuscript contains multiple works, one of which contains multiple sections. The Manifest contains a Range to represent the top-level structure (begins with lines 247-254), and another embedded Range to represent the content sections of the second work, *Arede'et* (begins with lines 275-282). This will result in a hierarchical ToC like so: +In this example, an Ethiopic manuscript contains multiple works, one of which contains multiple sections. The Manifest contains a Range to represent the top-level structure (begins with lines 247–254), and another embedded Range to represent the content sections of the second work, *Arede'et* (begins with lines 275–282). This will result in a hierarchical ToC like so: * Tabiba Tabiban [ጠቢበ ጠቢባን] * Arede'et [አርድዕት] From 57d4f6b343699b67464487bd6e6bf289cc36db99 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Wed, 10 Mar 2021 10:41:10 -0500 Subject: [PATCH 93/95] Added links to caption file formats specs --- recipe/0219-using-caption-file/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 569872dfc..2d217e966 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -21,11 +21,11 @@ A transcription file, on the other hand, is a text-based representation of an au ## Restrictions -Formats other than WebVTT (Web Video Text Tracks) are supported in IIIF, but may not be as widely supported in viewers. +Formats other than [WebVTT](https://w3c.github.io/webvtt/) (Web Video Text Tracks) are supported in IIIF, but may not be as widely supported in viewers. ## Example -In this example we use a caption file in the WebVTT format, but one could just as well use a subtitle file in the SRT format, or other text-based format used for the same purpose. +In this example we use a caption file in the WebVTT format, but one could just as well use a subtitle file in the [SRT](https://en.wikipedia.org/wiki/SubRip) or [TTML](https://www.w3.org/TR/2018/REC-ttml1-20181108/) formats, or other text-based format used for the same purpose. {% include manifest_links.html viewers="Mirador" manifest="manifest.json" %} {% include jsonviewer.html src="manifest.json" config='data-line="35-45"'%} From eff8a0acde2fdd31180f117d49ccb09046d3fc95 Mon Sep 17 00:00:00 2001 From: mcwhitaker Date: Wed, 10 Mar 2021 11:28:17 -0500 Subject: [PATCH 94/95] Update link for TTML; add text for the acronyms --- recipe/0219-using-caption-file/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0219-using-caption-file/index.md b/recipe/0219-using-caption-file/index.md index 2d217e966..debdb6ab2 100644 --- a/recipe/0219-using-caption-file/index.md +++ b/recipe/0219-using-caption-file/index.md @@ -25,7 +25,7 @@ Formats other than [WebVTT](https://w3c.github.io/webvtt/) (Web Video Text Track ## Example -In this example we use a caption file in the WebVTT format, but one could just as well use a subtitle file in the [SRT](https://en.wikipedia.org/wiki/SubRip) or [TTML](https://www.w3.org/TR/2018/REC-ttml1-20181108/) formats, or other text-based format used for the same purpose. +In this example we use a caption file in the WebVTT format, but one could just as well use a subtitle file in the [SRT](https://en.wikipedia.org/wiki/SubRip) (SubRip Text) or [TTML](https://w3c.github.io/ttml3/index.html) (Timed Text Markup Language) formats, or other text-based format used for the same purpose. {% include manifest_links.html viewers="Mirador" manifest="manifest.json" %} {% include jsonviewer.html src="manifest.json" config='data-line="35-45"'%} From 3656c066b1c603097b74e0d9bba8d30550b6fefb Mon Sep 17 00:00:00 2001 From: Trip Kirkpatrick Date: Wed, 10 Mar 2021 14:05:33 -0500 Subject: [PATCH 95/95] Linked first instance of property name as requested in TRC --- recipe/0053-seeAlso/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/0053-seeAlso/index.md b/recipe/0053-seeAlso/index.md index e9903ebd8..062595342 100644 --- a/recipe/0053-seeAlso/index.md +++ b/recipe/0053-seeAlso/index.md @@ -8,7 +8,7 @@ summary: "tbc" ## Use Case -You have a IIIF manifest resource along with additional machine-readable metadata usable by aggregators and others that can process or index it via the `seeAlso` property. You know from previous experience that aggregators crawling your collection harvest best when handed structured metadata and are also then able to offer their readers faceting capabilities, making your resources amenable to focused discovery. Through use of the `seeAlso` property, you are able to alert an aggregator to the presence of a dataset so the aggregator can provide appropriate and sophisticated information about your resource to the aggregator's users. +You have a IIIF manifest resource along with additional machine-readable metadata usable by aggregators and others that can process or index it via the [`seeAlso`](https://iiif.io/api/presentation/3.0/#seealso) property. You know from previous experience that aggregators crawling your collection harvest best when handed structured metadata and are also then able to offer their readers faceting capabilities, making your resources amenable to focused discovery. Through use of the `seeAlso` property, you are able to alert an aggregator to the presence of a dataset so the aggregator can provide appropriate and sophisticated information about your resource to the aggregator's users. ## Implementation Notes