diff --git a/source/presentation/4.0/index.md b/source/presentation/4.0/index.md index 4c55a90aa..23ed6b28a 100644 --- a/source/presentation/4.0/index.md +++ b/source/presentation/4.0/index.md @@ -182,7 +182,7 @@ Manifests have descriptive, technical and linking properties. The required prope "id": "https://iiif.io/api/cookbook/recipe/0001-mvm-image/manifest.json", "type": "Manifest", "label": { - "en": [ "Single Image Example" ] + "en": ["Single Image Example"] }, "items": [ // A list of Containers @@ -228,15 +228,17 @@ Canvases have two additional required properties: [`height`][prezi-40-model-heig { "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/annotation/c1", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://iiif.io/api/presentation/example-content-resources/image/painting.jpg", - "type": "Image", - "format": "image/jpeg", - "width": 4000, - "height": 3000 - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-containers/canvas" + "motivation": ["painting"], + "body": [ + { + "id": "https://iiif.io/api/presentation/example-content-resources/image/painting.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 4000, + "height": 3000 + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-containers/canvas"] } ] } @@ -262,13 +264,15 @@ Scenes may also have the [`duration`][prezi-40-model-duration] property in the s { "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/annotation/s1", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://iiif.io/api/presentation/example-content-resources/models/astronaut.glb", - "type": "Model", - "format": "model/gltf-binary" - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-containers/scene" + "motivation": ["painting"], + "body": [ + { + "id": "https://iiif.io/api/presentation/example-content-resources/models/astronaut.glb", + "type": "Model", + "format": "model/gltf-binary" + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-containers/scene"] } ] } @@ -321,15 +325,17 @@ There are different types of fragment based on the format of the resource. The m { "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/comments/c1", "type": "Annotation", - "motivation": [ "commenting" ], - "body": { - "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/bodies/koto-body", - "type": "TextualBody", - "value": "Koto with a cover being carried", - "language": "en", - "format": "text/plain" - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-containers/canvas#xywh=6050,3220,925,1250" + "motivation": ["commenting"], + "body": [ + { + "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/bodies/koto-body", + "type": "TextualBody", + "value": "Koto with a cover being carried", + "language": "en", + "format": "text/plain" + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-containers/canvas#xywh=6050,3220,925,1250"] } ``` @@ -350,27 +356,31 @@ The fragment example above can be expressed using a Specific Resource: { "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/comments/c1", "type": "Annotation", - "motivation": [ "commenting" ], - "body": { - "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/bodies/koto-body", - "type": "TextualBody", - "value": "Koto with a cover being carried", - "language": "en", - "format": "text/plain" - }, - "target": { - "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/resources/koto-sr", - "type": "SpecificResource", - "source": { - "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/canvas", - "type": "Canvas" - }, - "selector": { - "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/selectors/koto-selector", - "type": "FragmentSelector", - "value": "xywh=6050,3220,925,1250" + "motivation": ["commenting"], + "body": [ + { + "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/bodies/koto-body", + "type": "TextualBody", + "value": "Koto with a cover being carried", + "language": "en", + "format": "text/plain" } - } + ], + "target": [ + { + "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/resources/koto-sr", + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/canvas", + "type": "Canvas" + }, + "selector": { + "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/selectors/koto-selector", + "type": "FragmentSelector", + "value": "xywh=6050,3220,925,1250" + } + } + ] } ``` @@ -468,27 +478,25 @@ The example demonstrates the use of the common descriptive properties [`label`][ "@context": "http://iiif.io/api/presentation/4/context.json", "id": "https://iiif.io/api/cookbook/recipe/0001-mvm-image/manifest.json", "type": "Manifest", - "label": { - "en": [ "Use case 1: Artwork" ] - }, + "label": { "en": ["Use case 1: Artwork"] }, "metadata": [ { - "label": { "en": [ "Artist" ] }, - "value": { "en": [ "Anne Artist" ] } + "label": { "en": ["Artist"] }, + "value": { "en": ["Anne Artist"] } }, { - "label": { "en": [ "Date" ] }, - "value": { "en": [ "c. 1800" ] } + "label": { "en": ["Date"] }, + "value": { "en": ["c. 1800"] } } ], - "summary": { "en": [ "A longer piece of text to be shown when the metadata is not." ] }, + "summary": { "en": ["A longer piece of text to be shown when the metadata is not."] }, "rights": "http://rightsstatements.org/vocab/NoC-NC/1.0/", "homepage": [ { "id": "https://example.org/works/artwork37", "type": "Text", "format": "text/html", - "label": { "en": [ "Homepage for artwork37" ] } + "label": { "en": ["Homepage for artwork37"] } } ], "thumbnail": [ @@ -500,31 +508,30 @@ The example demonstrates the use of the common descriptive properties [`label`][ "height": 150 } ], - "provider": - [ - { - "id": "https://example.org/about", - "type": "Agent", - "label": { "en": [ "Example Organization" ] }, - "homepage": [ - { - "id": "https://example.org/", - "type": "Text", - "label": { "en": [ "Example Organization Homepage" ] }, - "format": "text/html" - } - ], - "logo": [ - { - "id": "https://example.org/images/logo.png", - "type": "Image", - "format": "image/png", - "height": 100, - "width": 120 - } - ] - } - ], + "provider": [ + { + "id": "https://example.org/about", + "type": "Agent", + "label": { "en": ["Example Organization"] }, + "homepage": [ + { + "id": "https://example.org/", + "type": "Text", + "label": { "en": ["Example Organization Homepage"] }, + "format": "text/html" + } + ], + "logo": [ + { + "id": "https://example.org/images/logo.png", + "type": "Image", + "format": "image/png", + "height": 100, + "width": 120 + } + ] + } + ], "items": [ { "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/canvas", @@ -539,23 +546,25 @@ The example demonstrates the use of the common descriptive properties [`label`][ { "id": "https://example.org/iiif/presentation/examples/manifest-with-containers/annotation/c1", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://iiif.io/api/presentation/example/image/painting/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "width": 4000, - "height": 3000, - "service": [ - { - "id": "https://iiif.io/api/presentation/example/image/painting", - "profile": "level1", - "type": "ImageService3", - // etc - } - ] - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-containers/canvas" + "motivation": ["painting"], + "body": [ + { + "id": "https://iiif.io/api/presentation/example/image/painting/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 4000, + "height": 3000, + "service": [ + { + "id": "https://iiif.io/api/presentation/example/image/painting", + "profile": "level1", + "type": "ImageService3" + // etc + } + ] + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-containers/canvas"] } ] } @@ -595,14 +604,14 @@ This example is a Manifest with multiple Canvases, each of which represents a pa "@context": "http://iiif.io/api/presentation/4/context.json", "id": "https://example.org/iiif/presentation/examples/manifest-with-book.json", "type": "Manifest", - "label": { "en": [ "Use case 2: Book" ] }, - "behavior": [ "paged" ], + "label": { "en": ["Use case 2: Book"] }, + "behavior": ["paged"], "viewingDirection": "left-to-right", "rendering": [ { "id": "https://example.org/pdfs/book.pdf", "type": "Text", - "label": { "en": [ "PDF version" ] }, + "label": { "en": ["PDF version"] }, "format": "application/pdf" } ], @@ -611,14 +620,14 @@ This example is a Manifest with multiple Canvases, each of which represents a pa "type": "Canvas" }, "requiredStatement": { - "label": { "en": [ "Attribution" ] }, - "value": { "en": [ "Provided courtesy of Example Institution" ] } + "label": { "en": ["Attribution"] }, + "value": { "en": ["Provided courtesy of Example Institution"] } }, "items": [ { "id": "https://example.org/iiif/presentation/examples/manifest-with-book/canvas/c1", "type": "Canvas", - "label": { "en": [ "Blank page" ] }, + "label": { "en": ["Blank page"] }, "height": 4613, "width": 3204, "items": [ @@ -629,15 +638,17 @@ This example is a Manifest with multiple Canvases, each of which represents a pa { "id": "https://example.org/iiif/presentation/examples/manifest-with-book/annotation/a1", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://iiif.io/api/presentation/example-content-resources/image/page1.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 4613, - "width": 3204, - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-book/canvas/c1" + "motivation": ["painting"], + "body": [ + { + "id": "https://iiif.io/api/presentation/example-content-resources/image/page1.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4613, + "width": 3204 + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-book/canvas/c1"] } ] } @@ -646,7 +657,7 @@ This example is a Manifest with multiple Canvases, each of which represents a pa { "id": "https://example.org/iiif/presentation/examples/manifest-with-book/canvas/c2", "type": "Canvas", - "label": { "en": [ "Frontispiece" ] }, + "label": { "en": ["Frontispiece"] }, "height": 4613, "width": 3204, "items": [ @@ -657,15 +668,17 @@ This example is a Manifest with multiple Canvases, each of which represents a pa { "id": "https://example.org/iiif/presentation/examples/manifest-with-book/annotation/a2", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://iiif.io/api/presentation/example-content-resources/image/page2.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 4613, - "width": 3204, - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-book/canvas/c2" + "motivation": ["painting"], + "body": [ + { + "id": "https://iiif.io/api/presentation/example-content-resources/image/page2.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4613, + "width": 3204 + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-book/canvas/c2"] } ] } @@ -674,7 +687,7 @@ This example is a Manifest with multiple Canvases, each of which represents a pa { "id": "https://example.org/iiif/presentation/examples/manifest-with-book/canvas/c3", "type": "Canvas", - "label": { "en": [ "Title Page" ] }, + "label": { "en": ["Title Page"] }, "height": 4613, "width": 3204, "items": [ @@ -685,20 +698,22 @@ This example is a Manifest with multiple Canvases, each of which represents a pa { "id": "https://example.org/iiif/presentation/examples/manifest-with-book/annotation/a3", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://iiif.io/api/presentation/example-content-resources/image/page3.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 4613, - "width": 3204, - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-book/canvas/c3" + "motivation": ["painting"], + "body": [ + { + "id": "https://iiif.io/api/presentation/example-content-resources/image/page3.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4613, + "width": 3204 + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-book/canvas/c3"] } ] } ] - }, + } // Additional Canvases ] } @@ -731,8 +746,8 @@ IIIF Collection with [`behavior`][prezi-40-model-behavior] "multi-part" that con "@context": "http://iiif.io/api/presentation/4/context.json", "id": "https://example.org/iiif/periodical/collection.json", "type": "Collection", - "label": { "en": [ "The Tombstone Epitaph (1880-1920)" ] }, - "behavior": [ "multi-part" ], + "label": { "en": ["The Tombstone Epitaph (1880-1920)"] }, + "behavior": ["multi-part"], "navPlace": { "id": "https://example.org/iiif/periodical/collection/place/1", "type": "FeatureCollection", @@ -740,9 +755,7 @@ IIIF Collection with [`behavior`][prezi-40-model-behavior] "multi-part" that con { "id": "https://example.org/iiif/periodical/collection/feature/1", "type": "Feature", - "properties": { - "label": { "en": ["Tombstone, Cochise County, Arizona"] } - }, + "properties": { "label": { "en": ["Tombstone, Cochise County, Arizona"] } }, "geometry": { "type": "Point", "coordinates": [31.715940, −110.064827] @@ -754,13 +767,13 @@ IIIF Collection with [`behavior`][prezi-40-model-behavior] "multi-part" that con { "id": "https://example.org/iiif/periodical/multi-part-collection/v1.json", "type": "Collection", - "label": { "en": [ "The Tombstone Epitaph, 1880" ] } + "label": { "en": ["The Tombstone Epitaph, 1880"] } }, { "id": "https://example.org/iiif/periodical/multi-part-collection/v2.json", "type": "Collection", - "label": { "en": [ "The Tombstone Epitaph, 1881" ] } - }, + "label": { "en": ["The Tombstone Epitaph, 1881"] } + } // Additional multi-part collections for each year/volume ] } @@ -772,15 +785,15 @@ IIIF Collection with [`behavior`][prezi-40-model-behavior] "multi-part" for the "@context": "http://iiif.io/api/presentation/4/context.json", "id": "https://example.org/iiif/periodical/multi-part-collection/v1.json", "type": "Collection", - "label": { "en": [ "The Tombstone Epitaph, 1881" ] }, - "behavior": [ "multi-part" ], + "label": { "en": ["The Tombstone Epitaph, 1881"] }, + "behavior": ["multi-part"], "items": [ // Previous issues { "id": "https://example.org/iiif/periodical/multi-part-collection/issue1.json", "type": "Manifest", - "label": { "en": [ "October 27, 1881" ] } - }, + "label": { "en": ["October 27, 1881"] } + } // Subsequent issues ] } @@ -793,14 +806,14 @@ Manifest for the October 27, 1881 issue, with Ranges for table of contents: "@context": "http://iiif.io/api/presentation/4/context.json", "id": "https://example.org/iiif/periodical/multi-part-collection/issue1.json", "type": "Manifest", - "label": { "en": [ "The Tombstone Epitaph, October 27, 1881" ] }, - "behavior": [ "paged" ], + "label": { "en": ["The Tombstone Epitaph, October 27, 1881"] }, + "behavior": ["paged"], "navDate": "1881-10-27T00:00:00+00:00", "items": [ { "id": "https://example.org/iiif/periodical/multi-part-collection/canvas/c1", "type": "Canvas", - "label": { "en": [ "Page 1" ] }, + "label": { "en": ["Page 1"] }, "height": 4613, "width": 3204, "items": [ @@ -811,15 +824,17 @@ Manifest for the October 27, 1881 issue, with Ranges for table of contents: { "id": "https://example.org/iiif/periodical/multi-part-collection/annotation/a1", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://example.org/image/page1.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 4613, - "width": 3204, - }, - "target": "https://example.org/iiif/periodical/multi-part-collection/canvas/c1" + "motivation": ["painting"], + "body": [ + { + "id": "https://example.org/image/page1.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4613, + "width": 3204 + } + ], + "target": ["https://example.org/iiif/periodical/multi-part-collection/canvas/c1"] } ] } @@ -828,7 +843,7 @@ Manifest for the October 27, 1881 issue, with Ranges for table of contents: { "id": "https://example.org/iiif/periodical/multi-part-collection/canvas/c2", "type": "Canvas", - "label": { "en": [ "Page 2" ] }, + "label": { "en": ["Page 2"] }, "height": 4613, "width": 3204, "items": [ @@ -839,38 +854,43 @@ Manifest for the October 27, 1881 issue, with Ranges for table of contents: { "id": "https://example.org/iiif/periodical/multi-part-collection/annotation/a2", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://example.org/image/page2.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 4613, - "width": 3204, - }, - "target": "https://example.org/iiif/periodical/multi-part-collection/canvas/c2" + "motivation": ["painting"], + "body": [ + { + "id": "https://example.org/image/page2.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4613, + "width": 3204 + } + ], + "target": ["https://example.org/iiif/periodical/multi-part-collection/canvas/c2"] } ] } ] - }, + } // Additional Canvases ], "structures": [ { "id": "https://example.org/iiif/periodical/multi-part-collection/range/r0", "type": "Range", - "label": { "en": [ "October 27, 1881" ] }, + "label": { "en": ["October 27, 1881"] }, "items": [ { "id": "https://example.org/iiif/periodical/multi-part-collection/range/r1", "type": "Range", - "label": { "en": [ "Yesterday's Tragedy: Three Men Hurled Into Eternity In the Duration of a Moment" ] }, - "supplementary": { "id": "https://example.org/iiif/full-text-anno-collection", "type": "AnnotationCollection" }, + "label": { "en": ["Yesterday's Tragedy: Three Men Hurled Into Eternity In the Duration of a Moment"] }, + "supplementary": { + "id": "https://example.org/iiif/full-text-anno-collection", + "type": "AnnotationCollection" + }, "items": [ { "id": "https://example.org/iiif/periodical/multi-part-collection/canvas/c1", "type": "Canvas" - }, + } // Additional contents ] } @@ -907,33 +927,35 @@ This example is a Manifest with two Timelines, each of which represent a tempora "@context": "http://iiif.io/api/presentation/4/context.json", "id": "https://example.org/iiif/presentation/examples/manifest-with-audio.json", "type": "Manifest", - "label": { "en": [ "Use case 3: 45 single with 2 tracks" ] }, - "behavior": [ "auto-advance" ], + "label": { "en": ["Use case 3: 45 single with 2 tracks"] }, + "behavior": ["auto-advance"], "accompanyingContainer": { "id": "https://example.org/iiif/presentation/examples/manifest-with-audio/accompany/c1", "type": "Canvas", - "label": { "en": [ "Photo of cover sleeve" ] }, + "label": { "en": ["Photo of cover sleeve"] }, "height": 900, "width": 900, "items": [ { "id": "https://example.org/iiif/presentation/examples/manifest-with-audio/accompany/c1/page", - "type": "AnnotationPage", - "items": [ - { - "id": "https://example.org/iiif/presentation/examples/manifest-with-audio/accompany/c1/image", - "type": "Annotation", - "motivation": [ "painting" ], - "body": { + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/presentation/examples/manifest-with-audio/accompany/c1/image", + "type": "Annotation", + "motivation": ["painting"], + "body": [ + { "id": "https://example.org/presentation/example-content-resources/image/cover.jpg", "type": "Image", "format": "image/jpeg", "height": 900, "width": 900 - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-audio/accompany/ac1" - } - ] + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-audio/accompany/ac1"] + } + ] } ] }, @@ -941,7 +963,7 @@ This example is a Manifest with two Timelines, each of which represent a tempora { "id": "https://example.org/iiif/presentation/examples/manifest-with-audio/timeline/t1", "type": "Timeline", - "label": { "en": [ "Side A: 99 Luftballons" ] }, + "label": { "en": ["Side A: 99 Luftballons"] }, "duration": 231, "items": [ { @@ -951,15 +973,17 @@ This example is a Manifest with two Timelines, each of which represent a tempora { "id": "https://example.org/iiif/presentation/examples/manifest-with-audio/annotation/a1", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://example.org/presentation/example-content-resources/audio/track1.mp4", - "type": "Sound", - "format": "audio/mp4", - "duration": 231, - "language": [ "de" ], - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-audio/timeline/t1" + "motivation": ["painting"], + "body": [ + { + "id": "https://example.org/presentation/example-content-resources/audio/track1.mp4", + "type": "Sound", + "format": "audio/mp4", + "duration": 231, + "language": ["de"] + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-audio/timeline/t1"] } ] } @@ -968,7 +992,7 @@ This example is a Manifest with two Timelines, each of which represent a tempora { "id": "https://example.org/iiif/presentation/examples/manifest-with-audio/timeline/t2", "type": "Timeline", - "label": { "en": [ "Side B: 99 Red Balloons" ] }, + "label": { "en": ["Side B: 99 Red Balloons"] }, "duration": 230.5, "items": [ { @@ -978,15 +1002,17 @@ This example is a Manifest with two Timelines, each of which represent a tempora { "id": "https://example.org/iiif/presentation/examples/manifest-with-audio/annotation/a2", "type": "Annotation", - "motivation": [ "painting" ], - "body": { - "id": "https://example.org/presentation/example-content-resources/audio/track2.mp4", - "type": "Sound", - "format": "audio/mp4", - "duration": 230.5, - "language": [ "en" ], - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-audio/timeline/t2" + "motivation": ["painting"], + "body": [ + { + "id": "https://example.org/presentation/example-content-resources/audio/track2.mp4", + "type": "Sound", + "format": "audio/mp4", + "duration": 230.5, + "language": ["en"] + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-audio/timeline/t2"] } ] } @@ -996,7 +1022,7 @@ This example is a Manifest with two Timelines, each of which represent a tempora "annotations": [ { "id": "https://example.org/iiif/presentation/examples/external-anno.json", - "type": "AnnotationPage", + "type": "AnnotationPage" } ] } @@ -1012,17 +1038,19 @@ This example is a Manifest with two Timelines, each of which represent a tempora { "id": "https://example.org/iiif/presentation/examples/external-anno/a1", "type": "Annotation", - "motivation": [ "supplementing" ], - "body": { - "id": "https://example.org/presentation/example-content-resources/lyrics1.txt", - "type": "TextualBody", - "language": "de", - "format": "text/plain", - "value": "Hast du etwas Zeit für mich?" - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-audio/timeline/t1#t=3.5,6.8" + "motivation": ["supplementing"], + "body": [ + { + "id": "https://example.org/presentation/example-content-resources/lyrics1.txt", + "type": "TextualBody", + "language": "de", + "format": "text/plain", + "value": "Hast du etwas Zeit für mich?" + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-audio/timeline/t1#t=3.5,6.8"] } - ], + ] // (annotations for the rest of the song lines) } ``` @@ -1049,7 +1077,7 @@ This example is a Manifest with one Canvas that represents the temporal extent o "@context": "http://iiif.io/api/presentation/4/context.json", "id": "https://example.org/iiif/presentation/examples/manifest-with-movie.json", "type": "Manifest", - "label": { "en": [ "Use Case 4: Movie with Subtitles" ] }, + "label": { "en": ["Use Case 4: Movie with Subtitles"] }, "items": [ { "id": "https://example.org/iiif/presentation/examples/manifest-with-movie/canvas", @@ -1072,14 +1100,16 @@ This example is a Manifest with one Canvas that represents the temporal extent o "id": "https://example.org/iiif/presentation/examples/manifest-with-movie/placeholder/image", "type": "Annotation", "motivation": "painting", - "body": { - "id": "https://example.org/image/placeholder.png", - "type": "Image", - "format": "image/png", - "height": 320, - "width": 400, - }, - "target": "https://iiif.io/api/cookbook/recipe/0013-placeholderCanvas/canvas/donizetti/placeholder" + "body": [ + { + "id": "https://example.org/image/placeholder.png", + "type": "Image", + "format": "image/png", + "height": 320, + "width": 400 + } + ], + "target": ["https://iiif.io/api/cookbook/recipe/0013-placeholderCanvas/canvas/donizetti/placeholder"] } ] } @@ -1094,32 +1124,34 @@ This example is a Manifest with one Canvas that represents the temporal extent o "id": "https://example.org/iiif/presentation/examples/manifest-with-movie/anno1", "type": "Annotation", "motivation": "painting", - "body": { - "type": "Choice", - "items": [ - { - "id": "https://example.org/video/movie-low.mp4", - "type": "Video", - "label": { "en": ["Low resolution (360 MB)" ]}, - "height": 360, - "width": 480, - "duration": 3600, - "format": "video/mp4", - "fileSize": 360553219 - }, - { - "id": "https://example.org/video/movie-hi.mp4", - "type": "Video", - "label": { "en": ["High resolution (1.3 GB)" ]}, - "height": 1080, - "width": 1440, - "duration": 3600, - "format": "video/mp4", - "fileSize": 1345876231 - } - ] - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-movie/canvas" + "body": [ + { + "type": "Choice", + "items": [ + { + "id": "https://example.org/video/movie-low.mp4", + "type": "Video", + "label": { "en": ["Low resolution (360 MB)"] }, + "height": 360, + "width": 480, + "duration": 3600, + "format": "video/mp4", + "fileSize": 360553219 + }, + { + "id": "https://example.org/video/movie-hi.mp4", + "type": "Video", + "label": { "en": ["High resolution (1.3 GB)"] }, + "height": 1080, + "width": 1440, + "duration": 3600, + "format": "video/mp4", + "fileSize": 1345876231 + } + ] + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-movie/canvas"] } ] } @@ -1133,19 +1165,17 @@ This example is a Manifest with one Canvas that represents the temporal extent o "id": "https://example.org/iiif/presentation/examples/manifest-with-movie/subtitles/anno", "type": "Annotation", "motivation": "supplementing", - "body": { - "id": "https://example.org/text/subtitles.vtt", - "type": "Text", - "format": "text/vtt", - "provides": [ "subtitles" ], - "label": { - "en": [ - "Subtitles in WebVTT format" - ] - }, - "language": "en" - }, - "target": "https://example.org/iiif/presentation/examples/manifest-with-movie/canvas" + "body": [ + { + "id": "https://example.org/text/subtitles.vtt", + "type": "Text", + "format": "text/vtt", + "provides": ["subtitles"], + "label": { "en": ["Subtitles in WebVTT format"] }, + "language": "en" + } + ], + "target": ["https://example.org/iiif/presentation/examples/manifest-with-movie/canvas"] } ] } @@ -1237,12 +1267,14 @@ This example is a Manifest with a single Scene, with a single model of a space s "id": "https://example.org/iiif/3d/anno1", "type": "Annotation", "motivation": ["painting"], - "body": { - "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", - "type": "Model", - "format": "model/gltf-binary" - }, - "target": "https://example.org/iiif/scene1/page/p1/1" + "body": [ + { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", + "type": "Model", + "format": "model/gltf-binary" + } + ], + "target": ["https://example.org/iiif/scene1/page/p1/1"] } ] } @@ -1292,27 +1324,30 @@ The Light is green and has a position, but has its default orientation of lookin "id": "https://example.org/iiif/3d/anno1", "type": "Annotation", "motivation": ["painting"], - "body": { - "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", - "type": "Model", - "format": "model/gltf-binary" - }, - "target": { - "type": "SpecificResource", - "source": + "body": [ { - "id": "https://example.org/iiif/scene1/page/p1/1", - "type": "Scene" - }, - "selector": [ - { - "type": "PointSelector", - "x": -1.0, - "y": 1.0, - "z": 1.0 - } - ] - } + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", + "type": "Model", + "format": "model/gltf-binary" + } + ], + "target": [ + { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + }, + "selector": [ + { + "type": "PointSelector", + "x": -1.0, + "y": 1.0, + "z": 1.0 + } + ] + } + ] }, { "id": "https://example.org/iiif/3d/anno2", @@ -1355,28 +1390,32 @@ The Light is green and has a position, but has its default orientation of lookin "id": "https://example.org/iiif/3d/anno2", "type": "Annotation", "motivation": ["painting"], - "body": [{ + "body": [ + { "id": "https://example.org/iiif/3d/lights/1", "type": "SpotLight", - "label": {"en": ["Spot Light 1"]}, + "label": { "en": ["Spot Light 1"] }, "angle": 90.0, "color": "#A0FFA0" - }], - "target": [{ - "type": "SpecificResource", - "source": { - "id": "https://example.org/iiif/scene1/page/p1/1", - "type": "Scene" - }, - "selector": [ - { - "type": "PointSelector", - "x": 0.0, - "y": 3.0, - "z": 1.0 - } - ] - }] + } + ], + "target": [ + { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + }, + "selector": [ + { + "type": "PointSelector", + "x": 0.0, + "y": 3.0, + "z": 1.0 + } + ] + } + ] } ] } @@ -1423,110 +1462,119 @@ This example is a Manifest with a single Scene with multiple models painted into "id": "https://example.org/iiif/3d/anno1", "type": "Annotation", "motivation": ["painting"], - "body": [{ - "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/chess/pawn.glb", - "label": {"en": ["Pawn 1"]}, - "type": "Model", - "format": "model/gltf-binary" - }], - "target": [{ - "type": "SpecificResource", - "source": { - "id": "https://example.org/iiif/scene1/page/p1/1", - "type": "Scene" - }, - "selector": [ - { - "type": "PointSelector", - "x": 1.0, - "y": 0.0, - "z": 0.0 - } - ] - }] + "body": [ + { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/chess/pawn.glb", + "label": { "en": ["Pawn 1"] }, + "type": "Model", + "format": "model/gltf-binary" + } + ], + "target": [ + { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + }, + "selector": [ + { + "type": "PointSelector", + "x": 1.0, + "y": 0.0, + "z": 0.0 + } + ] + } + ] }, { "id": "https://example.org/iiif/3d/anno1", "type": "Annotation", "motivation": ["painting"], - "body": [{ - "type": "SpecificResource", - "source": - { + "body": [ + { + "type": "SpecificResource", + "source": { "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/chess/pawn.glb", - "label": {"en": ["Pawn 2 tipped over"]}, + "label": { "en": ["Pawn 2 tipped over"] }, "type": "Model", "format": "model/gltf-binary" }, - "transform": [ - { - "type": "RotateTransform", - "x": 0.0, - "y": 0.0, - "z": -90.0 + "transform": [ + { + "type": "RotateTransform", + "x": 0.0, + "y": 0.0, + "z": -90.0 + }, + { + "type": "TranslateTransform", + "x": 0.0, + "y": 1.0, + "z": 0.0 + } + ] + } + ], + "target": [ + { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" }, - { - "type": "TranslateTransform", - "x": 0.0, - "y": 1.0, - "z": 0.0 - } - ] - }], - "target": [{ - "type": "SpecificResource", - "source": { - "id": "https://example.org/iiif/scene1/page/p1/1", - "type": "Scene" - }, - "selector": [ - { - "type": "PointSelector", - "x": 2.0, - "y": 0.0, - "z": 3.0 - } - ] - }] + "selector": [ + { + "type": "PointSelector", + "x": 2.0, + "y": 0.0, + "z": 3.0 + } + ] + } + ] }, { "id": "https://example.org/iiif/3d/anno1", "type": "Annotation", "motivation": ["painting"], "exclude": ["Audio", "Lights"], - "body": [{ - "type": "SpecificResource", - "source": - { + "body": [ + { + "type": "SpecificResource", + "source": { "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/chess/queen.glb", - "label": {"en": ["Queen"]}, + "label": { "en": ["Queen"] }, "type": "Model", "format": "model/gltf-binary" }, - "transform": [ - { - "type": "ScaleTransform", - "x": 1.5, - "y": 1.5, - "z": 1.5 + "transform": [ + { + "type": "ScaleTransform", + "x": 1.5, + "y": 1.5, + "z": 1.5 + } + ] + } + ], + "target": [ + { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" }, - ] - }], - "target": [{ - "type": "SpecificResource", - "source": { - "id": "https://example.org/iiif/scene1/page/p1/1", - "type": "Scene" - }, - "selector": [ - { - "type": "PointSelector", - "x": 1.0, - "y": 0.0, - "z": 2.0 - } - ] - } + "selector": [ + { + "type": "PointSelector", + "x": 1.0, + "y": 0.0, + "z": 2.0 + } + ] + } ] } ] @@ -1588,21 +1636,23 @@ In this example, the audio content resources have durations that do not match th "id": "https://example.org/iiif/3d/anno1", "type": "Annotation", "motivation": ["painting"], - "body": [{ - "id": "https://example.org/iiif/audio/1", - "type": "AmbientAudio", - "source": { - "id": "https://example.org/iiif/assets/symphony_hall_ambience.mp3", - "type": "Audio", - "format": "audio/mp3" - }, - "volume": { - "id": "https://example.org/iiif/quantity/1", - "type": "Quantity", - "unit": "relative", - "quantityValue": 0.1 + "body": [ + { + "id": "https://example.org/iiif/audio/1", + "type": "AmbientAudio", + "source": { + "id": "https://example.org/iiif/assets/symphony_hall_ambience.mp3", + "type": "Audio", + "format": "audio/mp3" + }, + "volume": { + "id": "https://example.org/iiif/quantity/1", + "type": "Quantity", + "unit": "relative", + "quantityValue": 0.1 + } } - }], + ], "target": [ { "id": "https://example.org/iiif/scene1", @@ -1615,69 +1665,74 @@ In this example, the audio content resources have durations that do not match th "type": "Annotation", "motivation": ["painting"], "timeMode": "trim", - "body": [{ - "id": "https://example.org/iiif/audio/2", - "type": "PointAudio", - "source": { - "id": "https://example.org/iiif/assets/orchestra_percussion_120s.mp3", - "type": "Audio", - "format": "audio/mp3", - "duration": 120.0 - }, - "volume": { - "id": "https://example.org/iiif/quantity/2", - "type": "Quantity", - "unit": "relative", - "quantityValue": 0.2 + "body": [ + { + "id": "https://example.org/iiif/audio/2", + "type": "PointAudio", + "source": { + "id": "https://example.org/iiif/assets/orchestra_percussion_120s.mp3", + "type": "Audio", + "format": "audio/mp3", + "duration": 120.0 + }, + "volume": { + "id": "https://example.org/iiif/quantity/2", + "type": "Quantity", + "unit": "relative", + "quantityValue": 0.2 + } } - }], - "target": [{ - "id": "https://example.org/iiif/selectors/anno2", - "type": "SpecificResource", - "source": - { + ], + "target": [ + { + "id": "https://example.org/iiif/selectors/anno2", + "type": "SpecificResource", + "source": { "id": "https://example.org/iiif/scene1", "type": "Scene" }, - "selector": [ - { - "id": "https://example.org/uuid/9fbd580b-895b-41b9-974a-1553329037f2", - "type": "PointSelector", - "x": -3.0, - "y": 0.0, - "z": -2.0, - "refinedBy": { + "selector": [ + { + "id": "https://example.org/uuid/9fbd580b-895b-41b9-974a-1553329037f2", + "type": "PointSelector", + "x": -3.0, + "y": 0.0, + "z": -2.0, + "refinedBy": { "id": "https://example.org/uuid/3d0d097b-2b37-4a15-b6a5-506e417d5115", "type": "FragmentSelector", "value": "t=0,30" + } } - } - ] - }] + ] + } + ] }, { "id": "https://example.org/iiif/3d/anno3", "type": "Annotation", "motivation": ["painting"], "timeMode": "loop", - "body": [{ - "id": "https://example.org/iiif/audio/3", - "type": "SpotAudio", - "source": { - "id": "https://example.org/iiif/assets/orchestra_tuba_10s.mp3", - "type": "Audio", - "format": "audio/mp3", - "duration": 10.0 - }, - "angle": 45.0, - "volume": { - "id": "https://example.org/iiif/quantity/3", - "type": "Quantity", - "unit": "relative", - "quantityValue": 0.3 - }, - "lookAt": "https://example.org/iiif/scene1" - }], + "body": [ + { + "id": "https://example.org/iiif/audio/3", + "type": "SpotAudio", + "source": { + "id": "https://example.org/iiif/assets/orchestra_tuba_10s.mp3", + "type": "Audio", + "format": "audio/mp3", + "duration": 10.0 + }, + "angle": 45.0, + "volume": { + "id": "https://example.org/iiif/quantity/3", + "type": "Quantity", + "unit": "relative", + "quantityValue": 0.3 + }, + "lookAt": "https://example.org/iiif/scene1" + } + ], "target": [ { "id": "https://example.org/iiif/scene1#xyz=3,0,-2&t=30,60", @@ -1697,21 +1752,21 @@ In this example, the audio content resources have durations that do not match th "value": "This is the point when the percussion stops playing and the tuba begins playing." } ], - "target": [{ - "type": "SpecificResource", - "source": - { + "target": [ + { + "type": "SpecificResource", + "source": { "id": "https://example.org/iiif/scene1", "type": "Scene" - } - , - "selector": [ + }, + "selector": [ { - "type": "PointSelector", - "instant": 30.0 + "type": "PointSelector", + "instant": 30.0 } - ] - }] + ] + } + ] } ] } @@ -1755,11 +1810,11 @@ A Timeline, Canvas, or Scene with [`duration`][prezi-40-model-duration] can only { "id": "https://example.org/iiif/presentation/examples/nesting/timeline/t1", "type": "Timeline", - "label": { "en": [ "Side A: 99 Luftballons" ] }, + "label": { "en": ["Side A: 99 Luftballons"] }, "duration": 231 } ], - "target": "https://example.org/iiif/presentation/examples/nesting/canvas-10minute-duration" + "target": ["https://example.org/iiif/presentation/examples/nesting/canvas-10minute-duration"] } ``` @@ -1787,40 +1842,43 @@ A [`PointSelector`][prezi-40-model-PointSelector] can be used to modify the poin "id": "https://example.org/iiif/presentation/examples/nesting/anno2", "type": "Annotation", "motivation": ["painting"], - "body": [{ - "type": "SpecificResource", - "source": - { + "body": [ + { + "type": "SpecificResource", + "source": { "id": "https://example.org/iiif/presentation/examples/nesting/canvas/c1", "type": "Canvas", "width": 2, "height": 2, - "items": [ { ... } ] + "items": [{ ... }] }, - "transform": [ - { - "type": "ScaleTransform", - "x": 2.0, - "y": 2.0, - "z": -1.0 - } - ] - }], - "target": [{ - "type": "SpecificResource", - "source": { - "id": "https://example.org/iiif/presentation/examples/nesting/scene/s1", - "type": "Scene" - }, - "selector": [ - { - "type": "PointSelector", - "x": 4.0, - "y": 4.0, - "z": 0.0 - } - ] - }] + "transform": [ + { + "type": "ScaleTransform", + "x": 2.0, + "y": 2.0, + "z": -1.0 + } + ] + } + ], + "target": [ + { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/presentation/examples/nesting/scene/s1", + "type": "Scene" + }, + "selector": [ + { + "type": "PointSelector", + "x": 4.0, + "y": 4.0, + "z": 0.0 + } + ] + } + ] } ``` @@ -1844,11 +1902,13 @@ When a Scene is nested into another Scene, the [`backgroundColor`][prezi-40-mode "id": "https://example.org/iiif/presentation/examples/nesting/anno3", "type": "Annotation", "motivation": ["painting"], - "body": { + "body": [ + { "id": "https://example.org/iiif/presentation/examples/nesting/scene/s1", "type": "Scene" - }, - "target": "https://example.org/iiif/presentation/examples/nesting/scene/s2" + } + ], + "target": ["https://example.org/iiif/presentation/examples/nesting/scene/s2"] } ``` @@ -1938,15 +1998,17 @@ This is an example of a commenting annotation that targets two-minute segment of { "id": "https://example.org/iiif/presentation/examples/commenting/anno/1", "type": "Annotation", - "motivation": [ "commenting" ], - "body": { - "id": "https://example.org/iiif/presentation/examples/commenting/anno/1/theme2", - "type": "TextualBody", - "language": "en", - "format": "text/plain", - "value": "The second theme of the concerto is introduced." - }, - "target": "https://example.org/iiif/presentation/examples/commenting/timeline/t1#t=38.0,158.0" + "motivation": ["commenting"], + "body": [ + { + "id": "https://example.org/iiif/presentation/examples/commenting/anno/1/theme2", + "type": "TextualBody", + "language": "en", + "format": "text/plain", + "value": "The second theme of the concerto is introduced." + } + ], + "target": ["https://example.org/iiif/presentation/examples/commenting/timeline/t1#t=38.0,158.0"] } ``` @@ -1958,28 +2020,32 @@ A comment on a Canvas can target a non-rectangular area. This example uses a [` { "id": "https://example.org/iiif/presentation/examples/commenting/anno/2", "type": "Annotation", - "motivation": [ "commenting" ], - "body": [{ - "id": "https://example.org/iiif/presentation/examples/commenting/anno/2/person2", - "type": "TextualBody", - "language": "en", - "format": "text/plain", - "value": "Note the expressive eyes of the subject of this painting." - }], - "target": [{ - "type": "SpecificResource", - "source": { - "id": "https://example.org/iiif/presentation/examples/commenting/canvas/2", - "type": "Canvas" - }, - "selector": [ - { - "id": "https://example.org/iiif/presentation/examples/commenting/anno2/selector2", - "type": "SvgSelector", - "value": " ... " - } - ] - }] + "motivation": ["commenting"], + "body": [ + { + "id": "https://example.org/iiif/presentation/examples/commenting/anno/2/person2", + "type": "TextualBody", + "language": "en", + "format": "text/plain", + "value": "Note the expressive eyes of the subject of this painting." + } + ], + "target": [ + { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/presentation/examples/commenting/canvas/2", + "type": "Canvas" + }, + "selector": [ + { + "id": "https://example.org/iiif/presentation/examples/commenting/anno2/selector2", + "type": "SvgSelector", + "value": " ... " + } + ] + } + ] } ``` @@ -1996,7 +2062,7 @@ In some cases it is desirable to influence the client's positioning of the comme "@context": "http://iiif.io/api/presentation/4/context.json", "id": "https://example.org/iiif/manifest/commenting/manifest/3", "type": "Manifest", - "label": { "en": [ "1st Centry Roman portrait bust with comment" ] }, + "label": { "en": ["1st Centry Roman portrait bust with comment"] }, "items": [ { "id": "https://example.org/iiif/scene/commenting/scene3", @@ -2009,15 +2075,17 @@ In some cases it is desirable to influence the client's positioning of the comme { "id": "https://example.org/iiif/scene/commenting/scene3/sculpture", "type": "Annotation", - "motivation": [ "painting"] , + "motivation": ["painting"] , "label": { - "en": [ "A 1st century Roman portait bust." ] + "en": ["A 1st century Roman portait bust."] }, - "body": { + "body": [ + { "id": "https://example.org/iiif/scene/commenting/models/portait.gltf", "type": "Model" - }, - "target": "https://example.org/iiif/scene/commenting/scene3" + } + ], + "target": ["https://example.org/iiif/scene/commenting/scene3"] } ] } @@ -2032,32 +2100,34 @@ In some cases it is desirable to influence the client's positioning of the comme { "id": "https://example.org/iiif/presentation/examples/commenting/anno/3", "type": "Annotation", - "motivation": [ "commenting" ], - "body": { - "id": "https://example.org/iiif/presentation/examples/commenting/anno/3/comment1", - "type": "TextualBody", - "language": "en", - "format": "text/plain", - "value": "This marble portrait exemplifies the veristic tradition that dominated Roman Republican portraiture and persisted into the early Imperial period.", - "position": { - "type": "SpecificResource", - "source": [ - { - "id": "https://example.org/iiif/scene/commenting/scene3", - "type": "Scene" - } - ], - "selector": [ - { - "type": "PointSelector", - "x": 0.75, - "y": 1.5, - "z": 0.1 - } - ] + "motivation": ["commenting"], + "body": [ + { + "id": "https://example.org/iiif/presentation/examples/commenting/anno/3/comment1", + "type": "TextualBody", + "language": "en", + "format": "text/plain", + "value": "This marble portrait exemplifies the veristic tradition that dominated Roman Republican portraiture and persisted into the early Imperial period.", + "position": { + "type": "SpecificResource", + "source": [ + { + "id": "https://example.org/iiif/scene/commenting/scene3", + "type": "Scene" + } + ], + "selector": [ + { + "type": "PointSelector", + "x": 0.75, + "y": 1.5, + "z": 0.1 + } + ] + } } - }, - "target": "https://example.org/iiif/scene/commenting/scene3/sculpture" + ], + "target": ["https://example.org/iiif/scene/commenting/scene3/sculpture"] } ] } @@ -2089,7 +2159,7 @@ The resource the user should be taken to is the [`body`][prezi-40-model-body] of "type": "Text" } ], - "target": "https://example.com/canvas/p1#xywh=265,661,1260,1239" + "target": ["https://example.com/canvas/p1#xywh=265,661,1260,1239"] } ``` @@ -2116,7 +2186,7 @@ A resource with the [`behavior`][prezi-40-model-behavior] value "hidden" is not "@context": "http://iiif.io/api/presentation/4/context.json", "id": "https://example.org/iiif/manifest/switch", "type": "Manifest", - "label": { "en": [ "Light switch" ] }, + "label": { "en": ["Light switch"] }, "items": [ { "id": "https://example.org/iiif/scene/switch/scene-1", @@ -2133,30 +2203,36 @@ A resource with the [`behavior`][prezi-40-model-behavior] value "hidden" is not "label": { "en": ["A light switch"] }, - "body": { + "body": [ + { "id": "https://example.org/iiif/model/models/lightswitch.gltf", "type": "Model" - }, - "target": "https://example.org/iiif/scene/switch/scene-1" + } + ], + "target": ["https://example.org/iiif/scene/switch/scene-1"] }, { "id": "https://example.org/iiif/scene/switch/scene-1/lights/point-light-4", "type": "Annotation", "motivation": ["painting"], - "body": { + "body": [ + { "id": "https://example.org/iiif/scene/switch/scene-1/lights/4/body", "type": "PointLight" - }, - "target": { + } + ], + "target": [ + { "type": "SpecificResource", "source": "https://example.org/iiif/scene/switch/scene-1", "selector": [ - { - "type": "PointSelector", - "x": 5, "y": 5, "z": 5 - } + { + "type": "PointSelector", + "x": 5, "y": 5, "z": 5 + } ] - }, + } + ], "behavior": ["hidden"] } ] @@ -2173,11 +2249,13 @@ A resource with the [`behavior`][prezi-40-model-behavior] value "hidden" is not "motivation": [ "commenting" ], - "body": { + "body": [ + { "type": "TextualBody", "value": "Click the switch to turn the light on or off" - }, - "target": "https://example.org/iiif/painting-annotation/lightswitch-1" + } + ], + "target": ["https://example.org/iiif/painting-annotation/lightswitch-1"] }, { "id": "https://example.org/iiif/scene/switch/scene-1/annos/1/activating-on-2", @@ -2185,7 +2263,7 @@ A resource with the [`behavior`][prezi-40-model-behavior] value "hidden" is not "motivation": [ "activating" ], - "target": "https://example.org/iiif/painting-annotation/lightswitch-1", + "target": ["https://example.org/iiif/painting-annotation/lightswitch-1"], "body": [ { "type": "SpecificResource", @@ -2210,7 +2288,7 @@ A resource with the [`behavior`][prezi-40-model-behavior] value "hidden" is not "motivation": [ "activating" ], - "target": "https://example.org/iiif/painting-annotation/lightswitch-1", + "target": ["https://example.org/iiif/painting-annotation/lightswitch-1"], "body": [ { "type": "SpecificResource", @@ -2273,13 +2351,17 @@ The format of the `value` string is implementation-specific, and will depend on "id": "https://example.org/iiif/3d/painting-anno-for-music-box", "type": "Annotation", "motivation": ["painting"], - "body": { - "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/music-box.glb", - "type": "Model" - }, - "target": { - // SpecificResource with PointSelector - } + "body": [ + { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/music-box.glb", + "type": "Model" + } + ], + "target": [ + { + // SpecificResource with PointSelector + } + ] } ], "annotations": [ @@ -2363,13 +2445,17 @@ It is possible to associate a particular camera with a particular commenting ann "id": "https://example.org/iiif/3d/anno1", "type": "Annotation", "motivation": ["painting"], - "body": { - "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/whale/whale_mandible.glb", - "type": "Model" - }, - "target": { - // SpecificResource with PointSelector - } + "body": [ + { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/whale/whale_mandible.glb", + "type": "Model" + } + ], + "target": [ + { + // SpecificResource with PointSelector + } + ] }, { "id": "https://example.org/iiif/3d/anno-that-paints-desired-camera-to-view-tooth", @@ -2408,13 +2494,17 @@ It is possible to associate a particular camera with a particular commenting ann "id": "https://example.org/iiif/3d/anno2", "type": "Annotation", "motivation": ["painting"], - "body": { - "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/whale/whale_cranium.glb", - "type": "Model" - }, - "target": { - // SpecificResource with PointSelector - } + "body": [ + { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/whale/whale_cranium.glb", + "type": "Model" + } + ], + "target": [ + { + // SpecificResource with PointSelector + } + ] } ] } @@ -2436,9 +2526,11 @@ It is possible to associate a particular camera with a particular commenting ann "value": "Mandibular tooth" } ], - "target": { - // SpecificResource with PointSelector - } + "target": [ + { + // SpecificResource with PointSelector + } + ] }, { "id": "https://example.org/iiif/3d/commenting-anno-for-right-pterygoid-hamulus", @@ -2446,13 +2538,15 @@ It is possible to associate a particular camera with a particular commenting ann "motivation": ["commenting"], "body": [ { - "type": "TextualBody", - "value": "Right pterygoid hamulus" + "type": "TextualBody", + "value": "Right pterygoid hamulus" } ], - "target": { - // SpecificResource with PointSelector - } + "target": [ + { + // SpecificResource with PointSelector + } + ] }, { "id": "https://example.org/iiif/3d/anno9", @@ -2507,9 +2601,11 @@ The commenting annotation now looks like this: "type": "Annotation" } ], - "target": { - // SpecificResource with PointSelector - } + "target": [ + { + // SpecificResource with PointSelector + } + ] }, ``` diff --git a/source/presentation/4.0/model.md b/source/presentation/4.0/model.md index a03a4aeeb..ef58ee9a7 100644 --- a/source/presentation/4.0/model.md +++ b/source/presentation/4.0/model.md @@ -2350,6 +2350,11 @@ The value _MUST_ be an array of JSON objects. Each item _MUST_ have the `id` and } ``` +### selector +{: #selector} + +TODO + ### service {: #service} @@ -2463,7 +2468,7 @@ The value of `size` _MUST_ be a string, and conform to the size parameter defini The `source` property refers to the URI of the resource that the Specific Resource is a more constrained version or representation of. -For more information about source and Specific Resources, see the [W3C Annotation Model](For more information about Annotation bodies, see the [W3C Annotation Model](https://www.w3.org/TR/annotation-model/#bodies-and-targets). +For more information about source and Specific Resources, see the [W3C Annotation Model](https://www.w3.org/TR/annotation-model/#specific-resources). The value _MUST_ be a string, and the value _MUST_ be a URI. The value _MUST NOT_ include a media fragment.