diff --git a/__tests__/presentation-2-parser/__snapshots__/upgrade.test.ts.snap b/__tests__/presentation-2-parser/__snapshots__/upgrade.test.ts.snap index 39f9a87..227ee29 100644 --- a/__tests__/presentation-2-parser/__snapshots__/upgrade.test.ts.snap +++ b/__tests__/presentation-2-parser/__snapshots__/upgrade.test.ts.snap @@ -36604,7 +36604,7 @@ exports[`Presentation 2 to 3 > nested ranges 1`] = ` "id": "http://example.org/provider", "label": { "none": [ - "Unknown", + "", ], }, "logo": [ diff --git a/__tests__/presentation-2-parser/upgrade.test.ts b/__tests__/presentation-2-parser/upgrade.test.ts index cdc8cdc..724bb6e 100644 --- a/__tests__/presentation-2-parser/upgrade.test.ts +++ b/__tests__/presentation-2-parser/upgrade.test.ts @@ -18,7 +18,7 @@ import codexManifest from '../../fixtures/presentation-2/codex.json'; import wikimediaProxy from '../../fixtures/presentation-2/wikimedia-proxy.json'; import withDimensions from '../../fixtures/presentation-2/iiif-fixture-manifest-with-dimensions.json'; import europeana from '../../fixtures/presentation-2/europeana.json'; -import { presentation2to3 } from '../../src/presentation-2'; +import { convertPresentation2, presentation2to3 } from '../../src/presentation-2'; import { Validator } from '@hyperion-framework/validator'; import annoList from '../../fixtures/presentation-2/iiif-fixture-annotation-list.json'; import choiceAnnoList from '../../fixtures/presentation-2/anno_list_choice.json'; @@ -28,6 +28,10 @@ import artic from '../../fixtures/presentation-2/artic-manifest.json'; import bodyChoice from '../../fixtures/presentation-2/body-choice.json'; import nestedRanges from '../../fixtures/presentation-2/nested-ranges.json'; import scroll from '../../fixtures/presentation-2/scroll.json'; +import paginatedCollection from '../../fixtures/presentation-2/paginated-collection.json'; +import paginatedCollectionPage from '../../fixtures/presentation-2/paginated-collection-page.json'; +import duplicateMemberCollection from '../../fixtures/presentation-2/duplicate-member-collection.json'; +import sctaCollection from '../../fixtures/presentation-2/collection-scta.json'; import { expect } from 'vitest'; @@ -636,9 +640,1978 @@ describe('Presentation 2 to 3', () => { test('scroll', () => { - const result = presentation2to3.traverseManifest(scroll as any); + const result = convertPresentation2(scroll as any); expect(result.viewingDirection).toEqual('top-to-bottom'); }) + + test('paginated collection', () => { + + const result = convertPresentation2(paginatedCollection as any); + + expect(result).toMatchInlineSnapshot(` + { + "@context": "http://iiif.io/api/presentation/3/context.json", + "behavior": [ + "top", + ], + "first": { + "id": "https://api.digitale-sammlungen.de/iiif/presentation/v2/collection/top?cursor=initial", + "type": "Collection", + }, + "id": "https://api.digitale-sammlungen.de/iiif/presentation/v2/collection/top", + "items": [], + "label": { + "none": [ + "Top Level Collection for BSB Digital Collections", + ], + }, + "requiredStatement": { + "label": { + "none": [ + "Attribution", + ], + }, + "value": { + "none": [ + "Bayerische Staatsbibliothek", + ], + }, + }, + "total": 3074231, + "type": "Collection", + } + `); + }); + + test('paginated collection page', () => { + const result = convertPresentation2(paginatedCollectionPage as any); + + result.items = []; + + expect(result).toMatchInlineSnapshot(` + { + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://api.digitale-sammlungen.de/iiif/presentation/v2/collection/top?cursor=initial", + "items": [], + "label": { + "none": [ + "Top Level Collection for BSB Digital Collections", + ], + }, + "next": { + "id": "https://api.digitale-sammlungen.de/iiif/presentation/v2/collection/top?cursor=AoIIP4AAACtic2IxMjAxODY5NA==", + "type": "Collection", + }, + "requiredStatement": { + "label": { + "none": [ + "Attribution", + ], + }, + "value": { + "none": [ + "Bayerische Staatsbibliothek", + ], + }, + }, + "total": 3074231, + "type": "Collection", + } + `); + }); + + test('duplicate member collection', () => { + const result = convertPresentation2(duplicateMemberCollection as any); + + expect(result).toMatchInlineSnapshot(` + { + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.harvardartmuseums.org/collections/", + "items": [ + { + "id": "https://iiif.harvardartmuseums.org/collections/object", + "label": { + "none": [ + "Objects", + ], + }, + "type": "Collection", + }, + ], + "label": { + "none": [ + "Harvard Art Museums Collections", + ], + }, + "type": "Collection", + } + `); + }); + + test('scta collection', () => { + const result = convertPresentation2(sctaCollection as any); + + expect(result).toMatchInlineSnapshot(` + { + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://scta.info/iiif/authors/collection", + "items": [ + { + "id": "https://scta.info/iiif/Wodeham/collection", + "label": { + "none": [ + "Adam Wodeham", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Albert/collection", + "label": { + "none": [ + "Albert the Great", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AlbertusDeSaxonia/collection", + "label": { + "none": [ + "Albertus De Saxonia", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AlexanderIII/collection", + "label": { + "none": [ + "Alexander III", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AlexanderOfHales/collection", + "label": { + "none": [ + "Alexander of Hales", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AlfonsoPenafiel/collection", + "label": { + "none": [ + "Alfonso Penafiel", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AlphonsusVargas/collection", + "label": { + "none": [ + "Alphonso Vargas of Toledo", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-jjska2/collection", + "label": { + "none": [ + "Amandus Polanus von Polansdorf", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Ambrose/collection", + "label": { + "none": [ + "Ambrose of Milan", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AndreaDeLangenstein/collection", + "label": { + "none": [ + "Andrea de Langenstein", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AndreasDeNovoCastro/collection", + "label": { + "none": [ + "Andreas de Novo Castro", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Anonymous/collection", + "label": { + "none": [ + "Anonymous", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AnonymusRise/collection", + "label": { + "none": [ + "Anonymous", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-Ca13fj/collection", + "label": { + "none": [ + "Anonymous", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Anselm/collection", + "label": { + "none": [ + "Anselm", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-vqn2ad/collection", + "label": { + "none": [ + "Anselm of Lucca", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AntoineDeChandieu/collection", + "label": { + "none": [ + "Antoine de Chandieu", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AntoniusAndreas/collection", + "label": { + "none": [ + "Antonius Andreas", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AntoniusPerez/collection", + "label": { + "none": [ + "Antonoius Perez", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Arcadius/collection", + "label": { + "none": [ + "Arcadius", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Aristotle/collection", + "label": { + "none": [ + "Aristotle", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Athanasius/collection", + "label": { + "none": [ + "Athanasius of Alexandria", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Augustine/collection", + "label": { + "none": [ + "Augustine", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/AugustinusDeAncona/collection", + "label": { + "none": [ + "Augustinus de Ancona", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Averroes/collection", + "label": { + "none": [ + "Averroes", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Avicenna/collection", + "label": { + "none": [ + "Avicenna", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Bandinus/collection", + "label": { + "none": [ + "Bandinus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-29vsnv/collection", + "label": { + "none": [ + "Bartholomeus Brixiensis", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/BartolomeoMastri/collection", + "label": { + "none": [ + "Bartolomeo Mastri", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-bdlcbd/collection", + "label": { + "none": [ + "Bartolomé de las Casas", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Bede/collection", + "label": { + "none": [ + "Bede", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Bernard/collection", + "label": { + "none": [ + "Bernard of Clairvaux", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-bdp8db/collection", + "label": { + "none": [ + "Bernard of Parma", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Boethius/collection", + "label": { + "none": [ + "Boethius", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Bonaventure/collection", + "label": { + "none": [ + "Bonaventure", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/BonifaceVIII/collection", + "label": { + "none": [ + "Boniface VIII", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/ClementV/collection", + "label": { + "none": [ + "Clement V", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/ClementOfAlexandria/collection", + "label": { + "none": [ + "Clement of Alexandria", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/DionysiusDeBruges/collection", + "label": { + "none": [ + "Dionysius de Bruges", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/DionysiusdeMontina/collection", + "label": { + "none": [ + "Dionysius de Montina", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/DominicusGundissalinus/collection", + "label": { + "none": [ + "Dominicus Gundissalinus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-dOcdOc/collection", + "label": { + "none": [ + "Durand of Champagne", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Durandus/collection", + "label": { + "none": [ + "Durandus of St. Pourcain", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Euclid/collection", + "label": { + "none": [ + "Euclid", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-U89ddd/collection", + "label": { + "none": [ + "Facinus de Ast", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/FranciscoSuarez/collection", + "label": { + "none": [ + "Fracisco Suárez", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-ferq7p/collection", + "label": { + "none": [ + "Francesco Silvestri", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/FrancisofMeyronnes/collection", + "label": { + "none": [ + "Francis of Meyronnes", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/FranciscoDeHerrera/collection", + "label": { + "none": [ + "Francisco de Herrera", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-FLBca3/collection", + "label": { + "none": [ + "Franciscus Lychetus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/FranciscusTotiDePerusia/collection", + "label": { + "none": [ + "Franciscus Toti de Perusia", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/FranciscusTurrettinus/collection", + "label": { + "none": [ + "Franciscus Turrettinus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-Gav9di/collection", + "label": { + "none": [ + "Frederico Niccolo Gavardi", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-c8ahhx/collection", + "label": { + "none": [ + "Frontinus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-Fulcq4/collection", + "label": { + "none": [ + "Fulgentius of Ruspe", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/GabrielBiel/collection", + "label": { + "none": [ + "Gabriel Biel", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-g8a8b8/collection", + "label": { + "none": [ + "Gabriel Vazquez", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/GeoffreyOfTrani/collection", + "label": { + "none": [ + "Geoffrey of Trani", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/GerardusDeSiena/collection", + "label": { + "none": [ + "Gerard of Siena", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-c7y65a/collection", + "label": { + "none": [ + "Geremia da Montagnone", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/GerhardusVischpekchDeOsnabruck/collection", + "label": { + "none": [ + "Gerhardus Vischpekch de Osnabrück", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/GilesOfRome/collection", + "label": { + "none": [ + "Giles of Rome", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/GodfreyOfFontaines/collection", + "label": { + "none": [ + "Godfrey of Fontaines", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/GonsalvoOfSpain/collection", + "label": { + "none": [ + "GonsalvoOfSpain", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Gratian/collection", + "label": { + "none": [ + "Gratian", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/BasilOfCasarea/collection", + "label": { + "none": [ + "Gregory of Nazianzus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Rimini/collection", + "label": { + "none": [ + "Gregory of Rimini", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/GregoryGreat/collection", + "label": { + "none": [ + "Gregory the Great", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/WillemHesselsVanEst/collection", + "label": { + "none": [ + "Guillelmus Estius", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/GuillelmusHedonensis/collection", + "label": { + "none": [ + "Guillelmus Hedonensis", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/HeinrichBullinger/collection", + "label": { + "none": [ + "Heinrich Bullinger", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/HenningusBoltenhagen/collection", + "label": { + "none": [ + "Henningus Boltenhagen", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/HenriBohic/collection", + "label": { + "none": [ + "Henri Bohic", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/HenricusDeWerl/collection", + "label": { + "none": [ + "Henricus de Werl", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Oyta/collection", + "label": { + "none": [ + "Henry Totting de Oyta", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/HenryOfGhent/collection", + "label": { + "none": [ + "Henry of Ghent", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Langenstein/collection", + "label": { + "none": [ + "Henry of Langenstein", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/HerveusNatalis/collection", + "label": { + "none": [ + "Herveus Natalis", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/HimbertOfGarda/collection", + "label": { + "none": [ + "Himbert of Garda", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Hostiensis/collection", + "label": { + "none": [ + "Hostiensis", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/HughOfStVictor/collection", + "label": { + "none": [ + "Hugh of St. Victor", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/HugolinoOfOrvieto/collection", + "label": { + "none": [ + "Hugolino of Orvieto", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-igzigz/collection", + "label": { + "none": [ + "Inokentii Gizel", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/IohannesBerwardus/collection", + "label": { + "none": [ + "Iohannes Berwardus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/IsidoreOfSeville/collection", + "label": { + "none": [ + "Isidore of Seville", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JacobusDeAltavilla/collection", + "label": { + "none": [ + "Jacobus de Altavilla", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JacquesAlmain/collection", + "label": { + "none": [ + "Jacques Almain", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JamesViterbo/collection", + "label": { + "none": [ + "James of Viterbo", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JanHus/collection", + "label": { + "none": [ + "Jan Hus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JeanBuridan/collection", + "label": { + "none": [ + "Jean Buridan", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JeanLalemandet/collection", + "label": { + "none": [ + "Jean Lalemandet", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Jerome/collection", + "label": { + "none": [ + "Jerome", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohannGerhard/collection", + "label": { + "none": [ + "Johann Gerhard", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohannesDeFonte/collection", + "label": { + "none": [ + "Johannes De Fonte", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohannesMonachus/collection", + "label": { + "none": [ + "Johannes Monachus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-jpdw2a/collection", + "label": { + "none": [ + "Johannes Pfeffer de Weidenberg", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohannesRuesbach/collection", + "label": { + "none": [ + "Johannes Ruesbach", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-jdwJDW/collection", + "label": { + "none": [ + "Johannes de Wesalia", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnAltenstaig/collection", + "label": { + "none": [ + "John Altenstaig", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnBaconthorpe/collection", + "label": { + "none": [ + "John Baconthorpe", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnBassolis/collection", + "label": { + "none": [ + "John Bassolis", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnBelethus/collection", + "label": { + "none": [ + "John Belethus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnDinsdale/collection", + "label": { + "none": [ + "John Dinsdale", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Scotus/collection", + "label": { + "none": [ + "John Duns Scotus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnEck/collection", + "label": { + "none": [ + "John Eck", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnHiltalingenBasel/collection", + "label": { + "none": [ + "John Hiltalingen of Basel", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnKlenkok/collection", + "label": { + "none": [ + "John Klenkok", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnMair/collection", + "label": { + "none": [ + "John Mair", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnMirecourt/collection", + "label": { + "none": [ + "John Mirecourt", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnPeckham/collection", + "label": { + "none": [ + "John Peckham", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnOfJandun/collection", + "label": { + "none": [ + "John of Jandun", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Ripa/collection", + "label": { + "none": [ + "John of Ripa", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnOfRodington/collection", + "label": { + "none": [ + "John of Rodington", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnOfSalisbury/collection", + "label": { + "none": [ + "John of Salisbury", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnOfWales/collection", + "label": { + "none": [ + "John of Wales", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JohnDamascenus/collection", + "label": { + "none": [ + "John the Damascene", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/JustinianI/collection", + "label": { + "none": [ + "Justinian I", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-kSkSkS/collection", + "label": { + "none": [ + "Kilianus Stetzing", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Lactantius/collection", + "label": { + "none": [ + "Lactantius", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/LambertusDaneau/collection", + "label": { + "none": [ + "Lambertus Daneau", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/LambertusDeMonte/collection", + "label": { + "none": [ + "Lambertus de Monte", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/LeonardusPenafiel/collection", + "label": { + "none": [ + "Leonardus Penafiel", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Lionhardus/collection", + "label": { + "none": [ + "Lionhardus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-sdv3av/collection", + "label": { + "none": [ + "Marcantonio Zimara", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Cicero/collection", + "label": { + "none": [ + "Marcus Tulius Cicero", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/MartinChemnitz/collection", + "label": { + "none": [ + "Martin Chemnitz", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/MartinLuther/collection", + "label": { + "none": [ + "Martin Luther", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/MelchiorCano/collection", + "label": { + "none": [ + "Melchior Cano", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-nc88aa/collection", + "label": { + "none": [ + "Niccolo Cabeo", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/NicholasTrivet/collection", + "label": { + "none": [ + "Nicholas Trivet", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-nt88nt/collection", + "label": { + "none": [ + "Nicholas Trivet", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/NicolasDeAnaskilch/collection", + "label": { + "none": [ + "Nicolas de Anaskilch", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/NicolasDeDinkelsbuhl/collection", + "label": { + "none": [ + "Nicolas de Dinkelsbuhl", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-nbd2d8/collection", + "label": { + "none": [ + "Nicolaus Bonetus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-ndtndt/collection", + "label": { + "none": [ + "Nicolo de Tudeschi", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/OsbertPickingham/collection", + "label": { + "none": [ + "Osbert Pickingham", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-b3aq1a/collection", + "label": { + "none": [ + "Paolo Cortese", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PaulusDeGelria/collection", + "label": { + "none": [ + "Paulus de Gelria", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PedroGarcia/collection", + "label": { + "none": [ + "Pedro Garcia", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-a28anv/collection", + "label": { + "none": [ + "Pelbartus de Themeswar", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-dsPeAb/collection", + "label": { + "none": [ + "Peter Abelard", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Aureoli/collection", + "label": { + "none": [ + "Peter Aureoli", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Candia/collection", + "label": { + "none": [ + "Peter Candia", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PeterJeanOlivi/collection", + "label": { + "none": [ + "Peter Jean Olivi", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Lombard/collection", + "label": { + "none": [ + "Peter Lombard", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/peter-plaoul/collection", + "label": { + "none": [ + "Peter Plaoul", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PeterDeAquila/collection", + "label": { + "none": [ + "Peter de Aquila", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PetrusDePalude/collection", + "label": { + "none": [ + "Peter of Palude", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PetrusGracilis/collection", + "label": { + "none": [ + "Petrus Gracilis", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PetrusHispanus/collection", + "label": { + "none": [ + "Petrus Hispanus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-PePeMa/collection", + "label": { + "none": [ + "Petrus Peregrinus de Maricourt", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PetrusScad/collection", + "label": { + "none": [ + "Petrus Scad", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PetrusDeAilly/collection", + "label": { + "none": [ + "Petrus de Ailly", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PetrusDeTarantasia/collection", + "label": { + "none": [ + "Petrus de Tarantasia", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PetrusDeTreisa/collection", + "label": { + "none": [ + "Petrus de Treisa", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PetrusDeWalse/collection", + "label": { + "none": [ + "Petrus de Walse", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PhilipMelanchthon/collection", + "label": { + "none": [ + "Philip Melanchthon", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-nbhytr/collection", + "label": { + "none": [ + "Philippus Probus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PicoDellaMirandola/collection", + "label": { + "none": [ + "Pico Della Mirandola", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PlacidusAegidiusMelander/collection", + "label": { + "none": [ + "Placidus Aegidius Melander", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-HDmDvD/collection", + "label": { + "none": [ + "Pliny the Elder", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-ZEvn3a/collection", + "label": { + "none": [ + "Pope Innocent II", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PopeInnocentIII/collection", + "label": { + "none": [ + "Pope Innocent III", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Porphyry/collection", + "label": { + "none": [ + "Porphyry of Tyre", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PsBonaventure/collection", + "label": { + "none": [ + "Ps-Bonaventure", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/PsAugustine/collection", + "label": { + "none": [ + "Pseudo-Augustinus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Dionysius/collection", + "label": { + "none": [ + "Pseudo-Dionysius", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RadulphusBrito/collection", + "label": { + "none": [ + "Radulphus Brito", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RaymondOfPenyafort/collection", + "label": { + "none": [ + "Raymond Of Penyafort", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-RDeDRD/collection", + "label": { + "none": [ + "René Descartes", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RicardusDeMediavilla/collection", + "label": { + "none": [ + "Ricardus de Mediavilla", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RichardFishacre/collection", + "label": { + "none": [ + "Richard Fishacre", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RichardFitzRalph/collection", + "label": { + "none": [ + "Richard FitzRalph", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RichardKilvington/collection", + "label": { + "none": [ + "Richard of Kilvington", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RichardOfStVictor/collection", + "label": { + "none": [ + "Richard of St. Victor", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-x7hda7/collection", + "label": { + "none": [ + "Robert Baron", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Holcot/collection", + "label": { + "none": [ + "Robert Holcot", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RobertKilwardby/collection", + "label": { + "none": [ + "Robert Kilwardby", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RobertOfCricklade/collection", + "label": { + "none": [ + "Robert of Cricklade", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/RogerBacon/collection", + "label": { + "none": [ + "Roger Bacon", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/SimonMagister/collection", + "label": { + "none": [ + "Simon Magister", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/SimonFaversham/collection", + "label": { + "none": [ + "Simon of Faversham", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-sykisy/collection", + "label": { + "none": [ + "Stefan Yavorskyi", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/StephansuDeEntzendorf/collection", + "label": { + "none": [ + "Stephanus de Entzendorf", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-x84nST/collection", + "label": { + "none": [ + "Stephen Tempier", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Aquinas/collection", + "label": { + "none": [ + "Thomas Aquinas", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Bradwardine/collection", + "label": { + "none": [ + "Thomas Bradwardine", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/ThomasCajetan/collection", + "label": { + "none": [ + "Thomas Cajetan", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/ThomasOfIreland/collection", + "label": { + "none": [ + "Thomas Of Ireland", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/ThomasDeClivis/collection", + "label": { + "none": [ + "Thomas de Clivis", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/ThomasStrasbourg/collection", + "label": { + "none": [ + "Thomas of Strasbourg", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/ThomasOfSutton/collection", + "label": { + "none": [ + "Thomas of Sutton", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Ulpianus/collection", + "label": { + "none": [ + "Ulpianus", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Virgil/collection", + "label": { + "none": [ + "Virgil", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Chatton/collection", + "label": { + "none": [ + "Walter Chatton", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/WilliamCrathorn/collection", + "label": { + "none": [ + "William Crathorn", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-cnuv73/collection", + "label": { + "none": [ + "William St. Amour", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/per-uyt678/collection", + "label": { + "none": [ + "William Whitaker", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/WilliamDeRothwell/collection", + "label": { + "none": [ + "William de Rothwell", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/WilliamDeVaurouillon/collection", + "label": { + "none": [ + "William de Vaurouillon", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/WilliamOfAuxerre/collection", + "label": { + "none": [ + "William of Auxerre", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/WilliamOfMelitona/collection", + "label": { + "none": [ + "William of Melitona", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/Ockham/collection", + "label": { + "none": [ + "William of Ockham", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/WilliamOfParis/collection", + "label": { + "none": [ + "William of Paris", + ], + }, + "type": "Collection", + }, + { + "id": "https://scta.info/iiif/WilliamofRubio/collection", + "label": { + "none": [ + "William of Rubio", + ], + }, + "type": "Collection", + }, + ], + "label": { + "none": [ + "SCTA Authors", + ], + }, + "type": "Collection", + } + `); + }); + }); diff --git a/__tests__/presentation-3-parser/__snapshots__/cookbook.tests.ts.snap b/__tests__/presentation-3-parser/__snapshots__/cookbook.tests.ts.snap index ac82089..62ba82f 100644 --- a/__tests__/presentation-3-parser/__snapshots__/cookbook.tests.ts.snap +++ b/__tests__/presentation-3-parser/__snapshots__/cookbook.tests.ts.snap @@ -8045,50 +8045,23 @@ exports[`Cookbook > Testing normalize %p (%p) 0021-tagging https://iiif.io/api/c } `; -exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0022-linking-with-a-hotspot https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image": { - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0001-image": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0001-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/1", "type": "Annotation", }, ], @@ -8097,25 +8070,25 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-image": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p2/1", "type": "Annotation", }, ], @@ -8124,88 +8097,45 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-link": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", + "id": "vault://a6f26a9c", "type": "ContentResource", }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image": { - "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", - "type": "ContentResource", + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-link", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-link", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/2", "type": "Annotation", }, ], "motivation": [ - "painting", + "linking", ], "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image": { - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1", - "type": "Annotation", + "selector": { + "type": "FragmentSelector", + "value": "xywh=265,661,1260,1239", }, - ], - "motivation": [ - "painting", - ], - "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", @@ -8215,20 +8145,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0001-image", "type": "Annotation", }, ], @@ -8244,20 +8174,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/2": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/2", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-link", "type": "Annotation", }, ], @@ -8273,20 +8203,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p2/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p2/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p2/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-image", "type": "Annotation", }, ], @@ -8302,25 +8232,32 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1", - "iiif-parser:hasPart": [ + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1": { + "accompanyingCanvas": null, + "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/2", "type": "AnnotationPage", }, ], + "behavior": [], + "duration": 0, + "height": 3024, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/1", + "type": "AnnotationPage", }, ], "label": null, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, @@ -8329,27 +8266,33 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "service": [], "summary": null, "thumbnail": [], - "type": "AnnotationPage", + "type": "Canvas", + "width": 4032, }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2": { + "accompanyingCanvas": null, + "annotations": [], "behavior": [], + "duration": 0, + "height": 4032, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1", - "iiif-parser:hasPart": [ + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2", + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p2/1", "type": "AnnotationPage", }, ], - "items": [ + "label": null, + "metadata": [], + "navDate": null, + "partOf": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json", + "type": "Manifest", }, ], - "label": null, - "metadata": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, @@ -8358,56 +8301,97 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "service": [], "summary": null, "thumbnail": [], - "type": "AnnotationPage", + "type": "Canvas", + "width": 3024, }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1", + }, + "Collection": {}, + "ContentResource": { + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 4032, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", - "type": "AnnotationPage", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-image", + "type": "Image", }, ], - "items": [ + "service": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image", - "type": "Annotation", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/", + "profile": "level1", + "type": "ImageService3", }, ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", + "type": "Image", + "width": 3024, + }, + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0001-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 4032, + }, + "vault://a6f26a9c": { + "format": "text/plain", + "id": "vault://a6f26a9c", + "iiif-parser:hasPart": [ + { + "id": "vault://a6f26a9c", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-link", + "type": "TextualBody", + }, + ], + "language": "de", + "type": "TextualBody", + "value": "A link to a close up of Gänseliesel-Brunnen fountain.", }, }, - "Canvas": { - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1": { + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 2504, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json", + "type": "Manifest", + }, + ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2", + "type": "Canvas", }, ], "label": { "en": [ - "f. 1r", + "Picture of Göttingen taken during the 2019 IIIF Conference", ], }, "metadata": [], @@ -8420,136 +8404,349 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "rights": null, "seeAlso": [], "service": [], + "services": [], + "start": null, + "structures": [], "summary": null, "thumbnail": [], - "type": "Canvas", - "width": 1768, + "type": "Manifest", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "duration": 0, - "height": 2512, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", - "items": [ + }, + "Range": {}, + "Selector": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/": { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen": { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3", + }, + }, + }, + "mapping": { + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-link": "Annotation", + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2": "Canvas", + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/2": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p2/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", + "vault://a6f26a9c": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json", + "type": "Manifest", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0022-linking-with-a-hotspot https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/manifest.json", + "items": [ + { + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/2", + "items": [ + { + "body": [ + { + "format": "text/plain", + "language": "de", + "type": "TextualBody", + "value": "A link to a close up of Gänseliesel-Brunnen fountain.", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2", + "type": "Canvas", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-link", + "motivation": "linking", + "target": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1#xywh=265,661,1260,1239", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "height": 3024, + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 4032, + }, + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0001-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "type": "Canvas", + "width": 4032, + }, + { + "height": 4032, + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p2/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 4032, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3024, + }, + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/annotation/p0002-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/canvas/p2", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "type": "Canvas", + "width": 3024, + }, + ], + "label": { + "en": [ + "Picture of Göttingen taken during the 2019 IIIF Conference", + ], + }, + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "type": "ContentResource", }, ], - "label": { - "en": [ - "f. 1v", - ], - }, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 1792, - }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "duration": 0, - "height": 2456, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", - "items": [ + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1", + "type": "Annotation", }, ], - "label": { - "en": [ - "f. 2r", - ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", }, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 1792, + "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "duration": 0, - "height": 2440, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", - "items": [ + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", + "type": "ContentResource", }, ], - "label": { - "en": [ - "f. 2v", - ], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", + "type": "Canvas", + }, + "type": "SpecificResource", }, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 1760, + "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "duration": 0, - "height": 2416, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", - "items": [ + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "type": "ContentResource", }, ], - "label": { - "en": [ - "f. 3r", - ], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "type": "Canvas", + }, + "type": "SpecificResource", }, + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image", + "type": "Annotation", + }, + ], + "label": null, "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, @@ -8558,32 +8755,27 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "service": [], "summary": null, "thumbnail": [], - "type": "Canvas", - "width": 1776, + "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6": { - "accompanyingCanvas": null, - "annotations": [], + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1": { "behavior": [], - "duration": 0, - "height": 2416, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", - "items": [ + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", "type": "AnnotationPage", }, ], - "label": { - "en": [ - "f. 3v", - ], - }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image", + "type": "Annotation", + }, + ], + "label": null, "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, @@ -8592,225 +8784,145 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "service": [], "summary": null, "thumbnail": [], - "type": "Canvas", - "width": 1776, + "type": "AnnotationPage", }, - }, - "Collection": {}, - "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 2504, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image", - "type": "Image", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "type": "AnnotationPage", }, ], - "service": [ + "items": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", - "profile": "level1", - "type": "ImageService3", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image", + "type": "Annotation", }, ], - "type": "Image", - "width": 1768, + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 2512, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image", - "type": "Image", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "type": "AnnotationPage", }, ], - "service": [ + "items": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master", - "profile": "level1", - "type": "ImageService3", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image", + "type": "Annotation", }, ], - "type": "Image", - "width": 1792, + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 2456, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image", - "type": "Image", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "type": "AnnotationPage", }, ], - "service": [ + "items": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", - "profile": "level1", - "type": "ImageService3", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image", + "type": "Annotation", }, ], - "type": "Image", - "width": 1792, - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 2440, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 1760, - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 2416, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 1776, - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 2416, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 1776, + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", }, - }, - "Manifest": { - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", - "accompanyingCanvas": null, - "annotations": [], + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json", - "type": "Manifest", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image", + "type": "Annotation", }, ], - "label": { - "en": [ - "Ethiopic Ms 10", - ], - }, + "label": null, "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], - "services": [], - "start": null, - "structures": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", - "type": "Range", - }, - ], "summary": null, "thumbnail": [], - "type": "Manifest", - "viewingDirection": "left-to-right", + "type": "AnnotationPage", }, }, - "Range": { + "Canvas": { "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1": { "accompanyingCanvas": null, "annotations": [], "behavior": [], + "duration": 0, + "height": 2504, "homepage": [], "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", - "iiif-parser:hasPart": [ + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1", + "type": "AnnotationPage", }, ], - "items": [], - "label": null, + "label": { + "en": [ + "f. 1r", + ], + }, "metadata": [], "navDate": null, "partOf": [], @@ -8821,28 +8933,30 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], "type": "Canvas", - "viewingDirection": "left-to-right", + "width": 1768, }, "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2": { "accompanyingCanvas": null, "annotations": [], "behavior": [], + "duration": 0, + "height": 2512, "homepage": [], "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", - "iiif-parser:hasPart": [ + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1", + "type": "AnnotationPage", }, ], - "items": [], - "label": null, + "label": { + "en": [ + "f. 1v", + ], + }, "metadata": [], "navDate": null, "partOf": [], @@ -8853,28 +8967,30 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], "type": "Canvas", - "viewingDirection": "left-to-right", + "width": 1792, }, "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3": { "accompanyingCanvas": null, "annotations": [], "behavior": [], + "duration": 0, + "height": 2456, "homepage": [], "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", - "iiif-parser:hasPart": [ + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1", + "type": "AnnotationPage", }, ], - "items": [], - "label": null, + "label": { + "en": [ + "f. 2r", + ], + }, "metadata": [], "navDate": null, "partOf": [], @@ -8885,28 +9001,30 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], "type": "Canvas", - "viewingDirection": "left-to-right", + "width": 1792, }, "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4": { "accompanyingCanvas": null, "annotations": [], "behavior": [], + "duration": 0, + "height": 2440, "homepage": [], "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", - "iiif-parser:hasPart": [ + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1", + "type": "AnnotationPage", }, ], - "items": [], - "label": null, + "label": { + "en": [ + "f. 2v", + ], + }, "metadata": [], "navDate": null, "partOf": [], @@ -8917,28 +9035,30 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], "type": "Canvas", - "viewingDirection": "left-to-right", + "width": 1760, }, "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5": { "accompanyingCanvas": null, "annotations": [], "behavior": [], + "duration": 0, + "height": 2416, "homepage": [], "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", - "iiif-parser:hasPart": [ + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1", + "type": "AnnotationPage", }, ], - "items": [], - "label": null, + "label": { + "en": [ + "f. 3r", + ], + }, "metadata": [], "navDate": null, "partOf": [], @@ -8949,28 +9069,30 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], "type": "Canvas", - "viewingDirection": "left-to-right", + "width": 1776, }, "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6": { "accompanyingCanvas": null, "annotations": [], "behavior": [], + "duration": 0, + "height": 2416, "homepage": [], "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", - "iiif-parser:hasPart": [ + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1", + "type": "AnnotationPage", }, ], - "items": [], - "label": null, + "label": { + "en": [ + "f. 3v", + ], + }, "metadata": [], "navDate": null, "partOf": [], @@ -8981,32 +9103,185 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], "type": "Canvas", - "viewingDirection": "left-to-right", + "width": 1776, }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0": { + }, + "Collection": {}, + "ContentResource": { + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 2504, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1768, + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 2512, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1792, + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 2456, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1792, + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 2440, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1760, + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 2416, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1776, + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 2416, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1776, + }, + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json", + "type": "Manifest", + }, + ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "type": "Canvas", }, { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "type": "Canvas", }, ], "label": { "en": [ - "Table of Contents", + "Ethiopic Ms 10", ], }, "metadata": [], @@ -9019,49 +9294,36 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "rights": null, "seeAlso": [], "service": [], + "services": [], "start": null, + "structures": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", + "type": "Range", + }, + ], "summary": null, - "supplementary": null, "thumbnail": [], - "type": "Range", + "type": "Manifest", "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1": { + }, + "Range": { + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", - "type": "Range", - }, - ], - "items": [ - { - "selector": undefined, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - { - "selector": undefined, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", - "type": "Canvas", - }, - "type": "SpecificResource", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "type": "Canvas", }, ], - "label": { - "gez": [ - "Tabiba Tabiban [ጠቢበ ጠቢባን]", - ], - }, + "items": [], + "label": null, "metadata": [], "navDate": null, "partOf": [], @@ -9076,37 +9338,24 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "summary": null, "supplementary": null, "thumbnail": [], - "type": "Range", + "type": "Canvas", "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2": { + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", - "type": "Range", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", - "type": "Range", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "type": "Canvas", }, ], - "label": { - "gez": [ - "Arede'et [አርድዕት]", - ], - }, + "items": [], + "label": null, "metadata": [], "navDate": null, "partOf": [], @@ -9121,27 +9370,193 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "summary": null, "supplementary": null, "thumbnail": [], - "type": "Range", + "type": "Canvas", "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1": { + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "type": "Canvas", + }, + ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "type": "Canvas", + }, + ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "type": "Canvas", + }, + ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "type": "Canvas", + }, + ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", + "type": "Range", + }, + ], + "label": { + "en": [ + "Table of Contents", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", + "type": "Range", }, ], "items": [ { "selector": undefined, "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", @@ -9149,15 +9564,15 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap { "selector": undefined, "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", "type": "Canvas", }, "type": "SpecificResource", }, ], "label": { - "en": [ - "Monday", + "gez": [ + "Tabiba Tabiban [ጠቢበ ጠቢባን]", ], }, "metadata": [], @@ -9177,15 +9592,60 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "type": "Range", "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2": { + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", + "type": "Range", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "type": "Range", + }, { "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "type": "Range", + }, + ], + "label": { + "gez": [ + "Arede'et [አርድዕት]", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", "type": "Range", }, @@ -9194,7 +9654,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap { "selector": undefined, "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", "type": "Canvas", }, "type": "SpecificResource", @@ -9202,7 +9662,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap { "selector": undefined, "source": { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", "type": "Canvas", }, "type": "SpecificResource", @@ -9210,7 +9670,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap ], "label": { "en": [ - "Tuesday", + "Monday", ], }, "metadata": [], @@ -9230,33 +9690,86 @@ exports[`Cookbook > Testing normalize %p (%p) 0024-book-4-toc https://iiif.io/ap "type": "Range", "viewingDirection": "left-to-right", }, - }, - "Selector": {}, - "Service": { - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master": { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master": { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master": { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master": { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master": { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master", - "profile": "level1", - "type": "ImageService3", + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", + "type": "Range", + }, + ], + "items": [ + { + "selector": undefined, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + { + "selector": undefined, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "label": { + "en": [ + "Tuesday", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + }, + }, + "Selector": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master", + "profile": "level1", + "type": "ImageService3", }, "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master": { "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master", @@ -17635,9 +18148,8 @@ exports[`Cookbook > Testing normalize %p (%p) 0040-image-rotation-service-manife { "id": "https://iiif.io/api/cookbook/recipe/0040-image-rotation-service/body/v0001-image", "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", "rotation": "90", - "type": "iiif:ImageApiSelector", + "type": "ImageApiSelector", }, "source": { "id": "https://iiif.io/api/image/3.0/example/reference/85a96c630f077e6ac6cb984f1b752bbf-0-21198-zz00022840-1-page1/full/max/0/default.jpg", @@ -17837,9 +18349,8 @@ exports[`Cookbook > Testing normalize %p (%p) 0040-image-rotation-service-manife "body": { "id": "https://iiif.io/api/cookbook/recipe/0040-image-rotation-service/body/v0001-image", "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", "rotation": "90", - "type": "iiif:ImageApiSelector", + "type": "ImageApiSelector", }, "source": { "format": "image/jpeg", @@ -18844,74 +19355,2504 @@ exports[`Cookbook > Testing normalize %p (%p) 0047-homepage https://iiif.io/api/ "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 3000, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", + "type": "AnnotationPage", + }, + ], + "label": { + "none": [ + "Front", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 2315, + }, + }, + "Collection": {}, + "ContentResource": { + "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg": { + "format": "image/jpeg", + "height": 3000, + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 2315, + }, + "https://www.getty.edu/art/collection/object/103RQQ": { + "format": "text/html", + "id": "https://www.getty.edu/art/collection/object/103RQQ", + "iiif-parser:hasPart": [ + { + "id": "https://www.getty.edu/art/collection/object/103RQQ", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", + "type": "Text", + }, + ], + "label": { + "en": [ + "Home page at the Getty Museum Collection", + ], + }, + "language": [ + "en", + ], + "type": "Text", + }, + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [ + { + "id": "https://www.getty.edu/art/collection/object/103RQQ", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", + "type": "Manifest", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "type": "Canvas", + }, + ], + "label": { + "none": [ + "Laocöon", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "services": [], + "start": null, + "structures": [], + "summary": null, + "thumbnail": [], + "type": "Manifest", + "viewingDirection": "left-to-right", + }, + }, + "Range": {}, + "Selector": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon": { + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", + "profile": "level1", + "type": "ImageService3", + }, + }, + }, + "mapping": { + "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json": "Manifest", + "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg": "ContentResource", + "https://www.getty.edu/art/collection/object/103RQQ": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", + "type": "Manifest", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0047-homepage https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "homepage": [ + { + "format": "text/html", + "id": "https://www.getty.edu/art/collection/object/103RQQ", + "label": { + "en": [ + "Home page at the Getty Museum Collection", + ], + }, + "language": [ + "en", + ], + "type": "Text", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", + "items": [ + { + "height": 3000, + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 3000, + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 2315, + }, + "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "none": [ + "Front", + ], + }, + "type": "Canvas", + "width": 2315, + }, + ], + "label": { + "none": [ + "Laocöon", + ], + }, + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 4823, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "front cover", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 3497, + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 4804, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "pages 1–2", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 6062, + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 4776, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "pages 3–4", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 6127, + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 4751, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "pages 5–6", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 6124, + }, + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 4808, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "back cover", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 3510, + }, + }, + "Collection": {}, + "ContentResource": { + "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml": { + "format": "text/xml", + "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "type": "Dataset", + }, + ], + "label": { + "en": [ + "MODS metadata", + ], + }, + "profile": "http://www.loc.gov/mods/v3", + "type": "Dataset", + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 4823, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3497, + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 4804, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 6062, + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 4776, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 6127, + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 4751, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 6124, + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 4808, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3510, + }, + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "type": "Manifest", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "Linking to Structured Metadata", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [ + { + "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", + "type": "ContentResource", + }, + ], + "service": [], + "services": [], + "start": null, + "structures": [], + "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.", + ], + }, + "thumbnail": [], + "type": "Manifest", + "viewingDirection": "right-to-left", + }, + }, + "Range": {}, + "Selector": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001": { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002": { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003": { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004": { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005": { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005", + "profile": "level1", + "type": "ImageService3", + }, + }, + }, + "mapping": { + "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2": "Canvas", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3": "Canvas", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4": "Canvas", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5": "Canvas", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "type": "Manifest", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "items": [ + { + "height": 4823, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 4823, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3497, + }, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "front cover", + ], + }, + "type": "Canvas", + "width": 3497, + }, + { + "height": 4804, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 4804, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 6062, + }, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "pages 1–2", + ], + }, + "type": "Canvas", + "width": 6062, + }, + { + "height": 4776, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 4776, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 6127, + }, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "pages 3–4", + ], + }, + "type": "Canvas", + "width": 6127, + }, + { + "height": 4751, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 4751, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 6124, + }, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "pages 5–6", + ], + }, + "type": "Canvas", + "width": 6124, + }, + { + "height": 4808, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 4808, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3510, + }, + "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "back cover", + ], + }, + "type": "Canvas", + "width": 3510, + }, + ], + "label": { + "en": [ + "Linking to Structured Metadata", + ], + }, + "seeAlso": [ + { + "format": "text/xml", + "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", + "label": { + "en": [ + "MODS metadata", + ], + }, + "profile": "http://www.loc.gov/mods/v3", + "type": "Dataset", + }, + ], + "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.", + ], + }, + "type": "Manifest", + "viewingDirection": "right-to-left", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1": { + "body": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "selector": { + "type": "FragmentSelector", + "value": "t=0,3971.24", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2": { + "body": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "selector": { + "type": "FragmentSelector", + "value": "t=3971.24", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", + "type": "Annotation", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 7278.422, + "height": 1080, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", + "type": "AnnotationPage", + }, + ], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "type": "ContentResource", + }, + ], + "type": "Canvas", + "width": 1920, + }, + }, + "Collection": {}, + "ContentResource": { + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png": { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "type": "Image", + }, + ], + "type": "Image", + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4": { + "duration": 3971.24, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", + "type": "Video", + }, + ], + "type": "Video", + "width": 1920, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": { + "duration": 3307.22, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", + "type": "Video", + }, + ], + "type": "Video", + "width": 1920, + }, + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", + "type": "Manifest", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "The Elixir of Love", + ], + "it": [ + "L'Elisir D'Amore", + ], + }, + "metadata": [ + { + "label": { + "en": [ + "Date Issued", + ], + }, + "value": { + "en": [ + "2019", + ], + }, + }, + { + "label": { + "en": [ + "Publisher", + ], + }, + "value": { + "en": [ + "Indiana University Jacobs School of Music", + ], + }, + }, + ], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "services": [], + "start": null, + "structures": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", + "type": "Range", + }, + ], + "summary": null, + "thumbnail": [], + "type": "Manifest", + "viewingDirection": "left-to-right", + }, + }, + "Range": { + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", + "type": "Canvas", + }, + ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", + "type": "Canvas", + }, + ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", + "type": "Canvas", + }, + ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", + "type": "Range", + }, + ], + "label": { + "it": [ + "Gaetano Donizetti, L'Elisir D'Amore", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", + "type": "Range", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", + "type": "Range", + }, + ], + "label": { + "it": [ + "Atto Primo", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", + "type": "Range", + }, + ], + "items": [ + { + "selector": { + "type": "FragmentSelector", + "value": "t=0,302.05", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "label": { + "it": [ + "Preludio e Coro d'introduzione – Bel conforto al mietitore", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", + "type": "Range", + }, + ], + "items": [ + { + "selector": { + "type": "FragmentSelector", + "value": "t=302.05,3971.24", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "label": { + "en": [ + "Remainder of Atto Primo", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", + "type": "Range", + }, + ], + "items": [ + { + "selector": { + "type": "FragmentSelector", + "value": "t=3971.24,7278.422", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "label": { + "it": [ + "Atto Secondo", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + }, + }, + "Selector": {}, + "Service": {}, + }, + "mapping": { + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05": "Canvas", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24": "Canvas", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422": "Canvas", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2": "Annotation", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1": "Range", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2": "Range", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3": "Range", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4": "Range", + "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5": "Range", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", + "type": "Manifest", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", + "items": [ + { + "duration": 7278.422, + "height": 1080, + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", + "items": [ + { + "body": { + "duration": 3971.24, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "type": "Video", + "width": 1920, + }, + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,3971.24", + "type": "Annotation", + }, + { + "body": { + "duration": 3307.22, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "type": "Video", + "width": 1920, + }, + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "type": "Image", + }, + ], + "type": "Canvas", + "width": 1920, + }, + ], + "label": { + "en": [ + "The Elixir of Love", + ], + "it": [ + "L'Elisir D'Amore", + ], + }, + "metadata": [ + { + "label": { + "en": [ + "Date Issued", + ], + }, + "value": { + "en": [ + "2019", + ], + }, + }, + { + "label": { + "en": [ + "Publisher", + ], + }, + "value": { + "en": [ + "Indiana University Jacobs School of Music", + ], + }, + }, + ], + "structures": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05", + "type": "Canvas", + }, + ], + "label": { + "it": [ + "Preludio e Coro d'introduzione – Bel conforto al mietitore", + ], + }, + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "Remainder of Atto Primo", + ], + }, + "type": "Range", + }, + ], + "label": { + "it": [ + "Atto Primo", + ], + }, + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422", + "type": "Canvas", + }, + ], + "label": { + "it": [ + "Atto Secondo", + ], + }, + "type": "Range", + }, + ], + "label": { + "it": [ + "Gaetano Donizetti, L'Elisir D'Amore", + ], + }, + "type": "Range", + }, + ], + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1": { + "body": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1": { + "body": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 3971.24, + "height": 1080, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Atto Primo", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "type": "ContentResource", + }, + ], + "type": "Canvas", + "width": 1920, + }, + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 3307.22, + "height": 1080, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Atto Secondo", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png", + "type": "ContentResource", + }, + ], + "type": "Canvas", + "width": 1920, + }, + }, + "Collection": {}, + "ContentResource": { + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png": { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "type": "Image", + }, + ], + "type": "Image", + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png": { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "type": "Image", + }, + ], + "type": "Image", + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4": { + "duration": 3971.24, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", + "type": "Video", + }, + ], + "type": "Video", + "width": 1920, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": { + "duration": 3307.22, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", + "type": "Video", + }, + ], + "type": "Video", + "width": 1920, + }, + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", + "type": "Manifest", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "The Elixir of Love", + ], + "it": [ + "L'Elisir D'Amore", + ], + }, + "metadata": [ + { + "label": { + "en": [ + "Date Issued", + ], + }, + "value": { + "en": [ + "2019", + ], + }, + }, + { + "label": { + "en": [ + "Publisher", + ], + }, + "value": { + "en": [ + "Indiana University Jacobs School of Music", + ], + }, + }, + ], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "services": [], + "start": null, + "structures": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", + "type": "Range", + }, + ], + "summary": null, + "thumbnail": [], + "type": "Manifest", + "viewingDirection": "left-to-right", + }, + }, + "Range": { + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", + "type": "Canvas", }, ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", "type": "Canvas", }, - "type": "SpecificResource", - }, - "type": "Annotation", + ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", }, - }, - "AnnotationCollection": {}, - "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1": { + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22": { + "accompanyingCanvas": null, + "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", + "type": "Canvas", }, ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", + "type": "Range", }, ], - "label": null, + "label": { + "it": [ + "Gaetano Donizetti, L'Elisir D'Amore", + ], + }, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, + "supplementary": null, "thumbnail": [], - "type": "AnnotationPage", + "type": "Range", + "viewingDirection": "left-to-right", }, - }, - "Canvas": { - "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1": { + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 3000, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", + "type": "Range", + }, + ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", + "type": "Range", }, ], "label": { - "none": [ - "Front", + "en": [ + "Atto Primo", ], }, "metadata": [], @@ -18924,85 +21865,138 @@ exports[`Cookbook > Testing normalize %p (%p) 0047-homepage https://iiif.io/api/ "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, + "supplementary": null, "thumbnail": [], - "type": "Canvas", - "width": 2315, + "type": "Range", + "viewingDirection": "left-to-right", }, - }, - "Collection": {}, - "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg": { - "format": "image/jpeg", - "height": 3000, - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1", - "type": "Image", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", + "type": "Range", }, ], - "service": [ + "items": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", - "profile": "level1", - "type": "ImageService3", + "selector": { + "type": "FragmentSelector", + "value": "t=0,302.05", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], - "type": "Image", - "width": 2315, + "label": { + "it": [ + "Preludio e Coro d'introduzione – Bel conforto al mietitore", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://www.getty.edu/art/collection/object/103RQQ": { - "format": "text/html", - "id": "https://www.getty.edu/art/collection/object/103RQQ", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", "iiif-parser:hasPart": [ { - "id": "https://www.getty.edu/art/collection/object/103RQQ", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", - "type": "Text", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", + "type": "Range", + }, + ], + "items": [ + { + "selector": { + "type": "FragmentSelector", + "value": "t=302.05,3971.24", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], "label": { "en": [ - "Home page at the Getty Museum Collection", + "Remainder of Atto Primo", ], }, - "language": [ - "en", - ], - "type": "Text", + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", }, - }, - "Manifest": { - "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "homepage": [ - { - "id": "https://www.getty.edu/art/collection/object/103RQQ", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", - "type": "Manifest", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", + "type": "Range", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", - "type": "Canvas", + "selector": { + "type": "FragmentSelector", + "value": "t=0,3307.22", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], "label": { - "none": [ - "Laocöon", + "en": [ + "Atto Secondo", ], }, "metadata": [], @@ -19015,207 +22009,255 @@ exports[`Cookbook > Testing normalize %p (%p) 0047-homepage https://iiif.io/api/ "rights": null, "seeAlso": [], "service": [], - "services": [], "start": null, - "structures": [], "summary": null, + "supplementary": null, "thumbnail": [], - "type": "Manifest", + "type": "Range", "viewingDirection": "left-to-right", }, }, - "Range": {}, "Selector": {}, - "Service": { - "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon": { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", - "profile": "level1", - "type": "ImageService3", - }, - }, + "Service": {}, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json": "Manifest", - "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg": "ContentResource", - "https://www.getty.edu/art/collection/object/103RQQ": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05": "Canvas", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24": "Canvas", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2": "Canvas", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22": "Canvas", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1": "Range", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2": "Range", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3": "Range", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4": "Range", + "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5": "Range", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0047-homepage https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "homepage": [ + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", + "items": [ { - "format": "text/html", - "id": "https://www.getty.edu/art/collection/object/103RQQ", + "duration": 3971.24, + "height": 1080, + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", + "items": [ + { + "body": { + "duration": 3971.24, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "type": "Video", + "width": 1920, + }, + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], "label": { "en": [ - "Home page at the Getty Museum Collection", + "Atto Primo", ], }, - "language": [ - "en", + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "type": "Image", + }, ], - "type": "Text", + "type": "Canvas", + "width": 1920, }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/manifest.json", - "items": [ { - "height": 3000, - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "duration": 3307.22, + "height": 1080, + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", "items": [ { "body": { - "format": "image/jpeg", - "height": 3000, - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/!500,500/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 2315, + "duration": 3307.22, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "type": "Video", + "width": 1920, }, - "id": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1/page/1/annotation/1", + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0047-homepage/canvas/1", + "target": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", "type": "Annotation", }, ], - "type": "AnnotationPage", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Atto Secondo", + ], + }, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png", + "type": "Image", + }, + ], + "type": "Canvas", + "width": 1920, + }, + ], + "label": { + "en": [ + "The Elixir of Love", + ], + "it": [ + "L'Elisir D'Amore", + ], + }, + "metadata": [ + { + "label": { + "en": [ + "Date Issued", + ], + }, + "value": { + "en": [ + "2019", + ], + }, + }, + { + "label": { + "en": [ + "Publisher", + ], + }, + "value": { + "en": [ + "Indiana University Jacobs School of Music", + ], + }, + }, + ], + "structures": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05", + "type": "Canvas", + }, + ], + "label": { + "it": [ + "Preludio e Coro d'introduzione – Bel conforto al mietitore", + ], + }, + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "Remainder of Atto Primo", + ], + }, + "type": "Range", + }, + ], + "label": { + "en": [ + "Atto Primo", + ], + }, + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "Atto Secondo", + ], + }, + "type": "Range", }, ], "label": { - "none": [ - "Front", + "it": [ + "Gaetano Donizetti, L'Elisir D'Amore", ], }, - "type": "Canvas", - "width": 2315, + "type": "Range", }, ], - "label": { - "none": [ - "Laocöon", - ], - }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0074-multiple-language-captions https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image": { - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image": { - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image": { - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image": { + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg", + "id": "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", "type": "Annotation", }, ], @@ -19224,34 +22266,34 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image": { + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg", + "id": "vault://30199866", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", "type": "Annotation", }, ], "motivation": [ - "painting", + "supplementing", ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", "type": "Canvas", }, "type": "SpecificResource", @@ -19261,20 +22303,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1": { + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", "type": "Annotation", }, ], @@ -19290,20 +22332,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1": { + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", "type": "Annotation", }, ], @@ -19319,25 +22361,32 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", - "iiif-parser:hasPart": [ + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas": { + "accompanyingCanvas": null, + "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", "type": "AnnotationPage", }, ], + "behavior": [], + "duration": 65, + "height": 384, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", + "type": "AnnotationPage", }, ], "label": null, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, @@ -19346,85 +22395,98 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c "service": [], "summary": null, "thumbnail": [], - "type": "AnnotationPage", + "type": "Canvas", + "width": 288, }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", + }, + "Collection": {}, + "ContentResource": { + "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4": { + "duration": 65, + "format": "video/mp4", + "height": 384, + "id": "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", - "type": "AnnotationPage", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", - "type": "Annotation", + "id": "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", + "type": "Video", }, ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", + "type": "Video", + "width": 288, }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt": { + "format": "text/vtt", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt", + "label": { + "en": [ + "Captions in WebVTT format", + ], + }, + "language": "en", + "type": "Text", + }, + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt": { + "format": "text/vtt", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt", + "label": { + "it": [ + "Sottotitoli in formato WebVTT", + ], + }, + "language": "it", + "type": "Text", + }, + "vault://30199866": { + "id": "vault://30199866", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", - "type": "AnnotationPage", + "id": "vault://30199866", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", + "type": "Choice", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt", + "type": "ContentResource", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt", + "type": "ContentResource", }, ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", + "type": "Choice", }, }, - "Canvas": { - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1": { + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 4823, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", + "type": "Manifest", + }, + ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", + "type": "Canvas", }, ], "label": { "en": [ - "front cover", + "For ladies. French models", + ], + "it": [ + "Per voi signore. Modelli francesi", ], }, "metadata": [], @@ -19433,106 +22495,208 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c "placeholderCanvas": null, "provider": [], "rendering": [], - "requiredStatement": null, - "rights": null, + "requiredStatement": { + "label": { + "en": [ + "Rights", + ], + }, + "value": { + "en": [ + "All rights reserved Cinecittà Luce spa", + ], + }, + }, + "rights": "http://rightsstatements.org/vocab/InC/1.0/", "seeAlso": [], "service": [], + "services": [], + "start": null, + "structures": [], "summary": null, "thumbnail": [], - "type": "Canvas", - "width": 3497, + "type": "Manifest", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "duration": 0, - "height": 4804, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", - "items": [ + }, + "Range": {}, + "Selector": {}, + "Service": {}, + }, + "mapping": { + "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas": "Canvas", + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation": "Annotation", + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt": "Annotation", + "vault://30199866": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", + "type": "Manifest", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0074-multiple-language-captions https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", + "items": [ + { + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", + "items": [ + { + "body": { + "items": [ + { + "format": "text/vtt", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt", + "label": { + "en": [ + "Captions in WebVTT format", + ], + }, + "language": "en", + "type": "Text", + }, + { + "format": "text/vtt", + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt", + "label": { + "it": [ + "Sottotitoli in formato WebVTT", + ], + }, + "language": "it", + "type": "Text", + }, + ], + "type": "Choice", + }, + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", + "motivation": "supplementing", + "target": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "duration": 65, + "height": 384, + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", + "items": [ + { + "body": { + "duration": 65, + "format": "video/mp4", + "height": 384, + "id": "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4", + "type": "Video", + "width": 288, + }, + "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "type": "Canvas", + "width": 288, + }, + ], + "label": { + "en": [ + "For ladies. French models", + ], + "it": [ + "Per voi signore. Modelli francesi", + ], + }, + "requiredStatement": { + "label": { + "en": [ + "Rights", + ], + }, + "value": { + "en": [ + "All rights reserved Cinecittà Luce spa", + ], + }, + }, + "rights": "http://rightsstatements.org/vocab/InC/1.0/", + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0117-add-image-thumbnail https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", + "type": "ContentResource", }, ], - "label": { - "en": [ - "pages 1–2", - ], + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", + "type": "Canvas", + }, + "type": "SpecificResource", }, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 6062, + "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3": { - "accompanyingCanvas": null, - "annotations": [], + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1": { "behavior": [], - "duration": 0, - "height": 4776, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", - "items": [ + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", "type": "AnnotationPage", }, ], - "label": { - "en": [ - "pages 3–4", - ], - }, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 6127, - }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "duration": 0, - "height": 4751, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", + "type": "Annotation", }, ], - "label": { - "en": [ - "pages 5–6", - ], - }, + "label": null, "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, @@ -19541,26 +22705,27 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c "service": [], "summary": null, "thumbnail": [], - "type": "Canvas", - "width": 6124, + "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5": { + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "duration": 0, - "height": 4808, + "height": 5312, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", "type": "AnnotationPage", }, ], "label": { "en": [ - "back cover", + "front cover with color bar", ], }, "metadata": [], @@ -19576,29 +22741,11 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c "summary": null, "thumbnail": [], "type": "Canvas", - "width": 3510, + "width": 4520, }, }, "Collection": {}, "ContentResource": { - "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml": { - "format": "text/xml", - "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", - "iiif-parser:hasPart": [ - { - "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", - "type": "Dataset", - }, - ], - "label": { - "en": [ - "MODS metadata", - ], - }, - "profile": "http://www.loc.gov/mods/v3", - "type": "Dataset", - }, "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg": { "format": "image/jpeg", "height": 4823, @@ -19606,145 +22753,89 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c "iiif-parser:hasPart": [ { "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", "type": "Image", }, ], "service": [ { + "extraFormats": [ + "png", + ], + "extraQualities": [ + "default", + "color", + "gray", + ], + "height": 4823, "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", "profile": "level1", + "protocol": "http://iiif.io/api/image", + "tiles": [ + { + "height": 512, + "scaleFactors": [ + 1, + 2, + 4, + 8, + ], + "width": 512, + }, + ], "type": "ImageService3", + "width": 3497, }, ], "type": "Image", "width": 3497, }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 4804, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 6062, - }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 4776, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 6127, - }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 4751, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 6124, - }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 4808, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg", + "height": 5312, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", "type": "Image", }, ], "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005", + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 3510, + "width": 4520, }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", "type": "Canvas", }, ], "label": { "en": [ - "Linking to Structured Metadata", + "Playbill Cover with Manifest Thumbnail", ], }, "metadata": [], @@ -19755,273 +22846,81 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c "rendering": [], "requiredStatement": null, "rights": null, - "seeAlso": [ - { - "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", - "type": "ContentResource", - }, - ], + "seeAlso": [], "service": [], "services": [], "start": null, "structures": [], "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.", + "Cover of 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.", ], }, - "thumbnail": [], + "thumbnail": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], "type": "Manifest", - "viewingDirection": "right-to-left", + "viewingDirection": "left-to-right", }, }, "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001": { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002": { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003": { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004": { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005": { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005", + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full": { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2": "Canvas", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3": "Canvas", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4": "Canvas", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5": "Canvas", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0": "Canvas", + "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1": "AnnotationPage", "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0117-add-image-thumbnail https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", "items": [ { - "height": 4823, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p1/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 4823, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 3497, - }, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0001-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p1", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "front cover", - ], - }, - "type": "Canvas", - "width": 3497, - }, - { - "height": 4804, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p2/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 4804, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_002", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 6062, - }, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0002-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p2", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "pages 1–2", - ], - }, - "type": "Canvas", - "width": 6062, - }, - { - "height": 4776, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p3/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 4776, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_003", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 6127, - }, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0003-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p3", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "pages 3–4", - ], - }, - "type": "Canvas", - "width": 6127, - }, - { - "height": 4751, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p4/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 4751, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_004", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 6124, - }, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0004-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p4", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "pages 5–6", - ], - }, - "type": "Canvas", - "width": 6124, - }, - { - "height": 4808, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "height": 5312, + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/page/p5/1", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", "items": [ { "body": { "format": "image/jpeg", - "height": 4808, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005/full/max/0/default.jpg", + "height": 5312, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_005", + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 3510, + "width": 4520, }, - "id": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/annotation/p0005-image", + "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0053-seeAlso/canvas/p5", + "target": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", "type": "Annotation", }, ], @@ -20030,89 +22929,83 @@ exports[`Cookbook > Testing normalize %p (%p) 0053-seeAlso https://iiif.io/api/c ], "label": { "en": [ - "back cover", + "front cover with color bar", ], }, "type": "Canvas", - "width": 3510, + "width": 4520, }, ], "label": { "en": [ - "Linking to Structured Metadata", + "Playbill Cover with Manifest Thumbnail", ], }, - "seeAlso": [ + "summary": { + "en": [ + "Cover of 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.", + ], + }, + "thumbnail": [ { - "format": "text/xml", - "id": "https://fixtures.iiif.io/other/UCLA/ezukushi_mods.xml", - "label": { - "en": [ - "MODS metadata", - ], - }, - "profile": "http://www.loc.gov/mods/v3", - "type": "Dataset", + "format": "image/jpeg", + "height": 4823, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", + "service": [ + { + "extraFormats": [ + "png", + ], + "extraQualities": [ + "default", + "color", + "gray", + ], + "height": 4823, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", + "profile": "level1", + "protocol": "http://iiif.io/api/image", + "tiles": [ + { + "height": 512, + "scaleFactors": [ + 1, + 2, + 4, + 8, + ], + "width": 512, + }, + ], + "type": "ImageService3", + "width": 3497, + }, + ], + "type": "Image", + "width": 3497, }, ], - "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.", - ], - }, "type": "Manifest", - "viewingDirection": "right-to-left", } `; -exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0118-multivalue https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1": { - "body": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "selector": { - "type": "FragmentSelector", - "value": "t=0,3971.24", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2": { + "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1": { "body": [ { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "id": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", "type": "Annotation", }, ], @@ -20120,12 +23013,8 @@ exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif "painting", ], "target": { - "selector": { - "type": "FragmentSelector", - "value": "t=3971.24", - }, "source": { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", "type": "Canvas", }, "type": "SpecificResource", @@ -20135,24 +23024,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1": { + "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", - "type": "Annotation", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", "type": "Annotation", }, ], @@ -20170,17 +23055,17 @@ exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1": { + "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 7278.422, - "height": 1080, + "duration": 0, + "height": 991, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", "type": "AnnotationPage", }, ], @@ -20196,111 +23081,67 @@ exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif "seeAlso": [], "service": [], "summary": null, - "thumbnail": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", - "type": "ContentResource", - }, - ], + "thumbnail": [], "type": "Canvas", - "width": 1920, + "width": 1114, }, }, "Collection": {}, "ContentResource": { - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png": { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg": { + "format": "image/jpeg", + "id": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg", "iiif-parser:hasPart": [ { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "id": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", "type": "Image", }, ], "type": "Image", }, - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4": { - "duration": 3971.24, - "format": "video/mp4", - "height": 1080, - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", - "iiif-parser:hasPart": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", - "type": "Video", - }, - ], - "type": "Video", - "width": 1920, - }, - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": { - "duration": 3307.22, - "format": "video/mp4", - "height": 1080, - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", - "iiif-parser:hasPart": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", - "type": "Video", - }, - ], - "type": "Video", - "width": 1920, - }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", "type": "Canvas", }, ], "label": { - "en": [ - "The Elixir of Love", - ], - "it": [ - "L'Elisir D'Amore", + "fr": [ + "Arrangement en gris et noir no 1", ], }, "metadata": [ { "label": { "en": [ - "Date Issued", + "Alternative titles", ], }, "value": { "en": [ - "2019", - ], - }, - }, - { - "label": { - "en": [ - "Publisher", + "Whistler's Mother", + "Arrangement in Grey and Black No. 1", ], - }, - "value": { - "en": [ - "Indiana University Jacobs School of Music", + "fr": [ + "Portrait de la mère de l'artiste", + "La Mère de Whistler", ], }, }, @@ -20316,275 +23157,245 @@ exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif "service": [], "services": [], "start": null, - "structures": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", - "type": "Range", - }, - ], - "summary": null, + "structures": [], + "summary": { + "en": [ + "A painting in oil on canvas created by the American-born painter James McNeill Whistler, in 1871.", + ], + }, "thumbnail": [], "type": "Manifest", "viewingDirection": "left-to-right", }, }, - "Range": { - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05", - "iiif-parser:hasPart": [ + "Range": {}, + "Selector": {}, + "Service": {}, + }, + "mapping": { + "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json": "Manifest", + "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", + "type": "Manifest", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0118-multivalue https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", + "items": [ + { + "height": 991, + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "id": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg", + "type": "Image", + }, + "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "type": "Canvas", + "width": 1114, + }, + ], + "label": { + "fr": [ + "Arrangement en gris et noir no 1", + ], + }, + "metadata": [ + { + "label": { + "en": [ + "Alternative titles", + ], + }, + "value": { + "en": [ + "Whistler's Mother", + "Arrangement in Grey and Black No. 1", + ], + "fr": [ + "Portrait de la mère de l'artiste", + "La Mère de Whistler", + ], + }, + }, + ], + "summary": { + "en": [ + "A painting in oil on canvas created by the American-born painter James McNeill Whistler, in 1871.", + ], + }, + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", - "type": "Canvas", + "id": "vault://5332a945", + "type": "ContentResource", }, ], - "items": [], - "label": null, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "start": null, - "summary": null, - "supplementary": null, - "thumbnail": [], - "type": "Canvas", - "viewingDirection": "left-to-right", - }, - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", + "type": "Annotation", }, ], - "items": [], - "label": null, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "start": null, - "summary": null, - "supplementary": null, - "thumbnail": [], - "type": "Canvas", - "viewingDirection": "left-to-right", - }, - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", - "type": "Canvas", - }, + "motivation": [ + "tagging", ], - "items": [], - "label": null, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "start": null, - "summary": null, - "supplementary": null, - "thumbnail": [], - "type": "Canvas", - "viewingDirection": "left-to-right", + "target": { + "selector": { + "type": "PointSelector", + "x": 3385, + "y": 1464, + }, + "source": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "type": "SpecificResource", + }, + "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", - "items": [ + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", - "type": "Range", + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "type": "ContentResource", }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", + "type": "Annotation", }, ], - "label": { - "it": [ - "Gaetano Donizetti, L'Elisir D'Amore", - ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "type": "Canvas", + }, + "type": "SpecificResource", }, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "start": null, - "summary": null, - "supplementary": null, - "thumbnail": [], - "type": "Range", - "viewingDirection": "left-to-right", + "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2": { - "accompanyingCanvas": null, - "annotations": [], + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", - "type": "Range", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", + "type": "Annotation", }, ], - "label": { - "it": [ - "Atto Primo", - ], - }, + "label": null, "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], - "type": "Range", - "viewingDirection": "left-to-right", + "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3": { - "accompanyingCanvas": null, - "annotations": [], + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "type": "AnnotationPage", }, ], "items": [ { - "selector": { - "type": "FragmentSelector", - "value": "t=0,302.05", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", - "type": "Canvas", - }, - "type": "SpecificResource", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", + "type": "Annotation", }, ], - "label": { - "it": [ - "Preludio e Coro d'introduzione – Bel conforto al mietitore", - ], - }, + "label": null, "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], - "type": "Range", - "viewingDirection": "left-to-right", + "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", - "iiif-parser:hasPart": [ + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json": { + "accompanyingCanvas": null, + "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", + "type": "AnnotationPage", }, ], + "behavior": [], + "duration": 0, + "height": 7072, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", "items": [ { - "selector": { - "type": "FragmentSelector", - "value": "t=302.05,3971.24", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", - "type": "Canvas", - }, - "type": "SpecificResource", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", + "type": "AnnotationPage", }, ], "label": { "en": [ - "Remainder of Atto Primo", + "Chesapeake and Ohio Canal Pamphlet", ], }, "metadata": [], @@ -20597,42 +23408,74 @@ exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], - "type": "Range", - "viewingDirection": "left-to-right", + "type": "Canvas", + "width": 5212, }, - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5": { + }, + "Collection": {}, + "ContentResource": { + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 7072, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 5212, + }, + "vault://5332a945": { + "format": "text/plain", + "id": "vault://5332a945", + "iiif-parser:hasPart": [ + { + "id": "vault://5332a945", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", + "type": "TextualBody", + }, + ], + "language": "en", + "type": "TextualBody", + "value": "Town Creek Aqueduct", + }, + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", + "type": "Manifest", }, ], "items": [ { - "selector": { - "type": "FragmentSelector", - "value": "t=3971.24,7278.422", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", - "type": "Canvas", - }, - "type": "SpecificResource", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "type": "Canvas", }, ], "label": { - "it": [ - "Atto Secondo", + "en": [ + "Using a point selector for annotating a location on a map.", ], }, "metadata": [], @@ -20645,221 +23488,150 @@ exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif "rights": null, "seeAlso": [], "service": [], + "services": [], "start": null, - "summary": null, - "supplementary": null, + "structures": [], + "summary": { + "en": [ + "A map containing an point with an annotation of the location.", + ], + }, "thumbnail": [], - "type": "Range", + "type": "Manifest", "viewingDirection": "left-to-right", }, }, + "Range": {}, "Selector": {}, - "Service": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674": { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", + "profile": "level1", + "type": "ImageService3", + }, + }, }, "mapping": { - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png": "ContentResource", - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4": "ContentResource", - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05": "Canvas", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24": "Canvas", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422": "Canvas", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2": "Annotation", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1": "Range", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2": "Range", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3": "Range", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4": "Range", - "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5": "Range", + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag": "Annotation", + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json": "Canvas", + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json": "Annotation", + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": "ContentResource", + "vault://5332a945": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0064-opera-one-canvas https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/manifest.json", - "items": [ - { - "duration": 7278.422, - "height": 1080, - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1", - "items": [ - { - "body": { - "duration": 3971.24, - "format": "video/mp4", - "height": 1080, - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", - "type": "Video", - "width": 1920, - }, - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/1", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,3971.24", - "type": "Annotation", - }, - { - "body": { - "duration": 3307.22, - "format": "video/mp4", - "height": 1080, - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", - "type": "Video", - "width": 1920, - }, - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1/annotation_page/1/annotation/2", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "thumbnail": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", - "type": "Image", - }, - ], - "type": "Canvas", - "width": 1920, - }, - ], - "label": { - "en": [ - "The Elixir of Love", - ], - "it": [ - "L'Elisir D'Amore", - ], - }, - "metadata": [ - { - "label": { - "en": [ - "Date Issued", - ], - }, - "value": { - "en": [ - "2019", - ], - }, - }, - { - "label": { - "en": [ - "Publisher", - ], - }, - "value": { - "en": [ - "Indiana University Jacobs School of Music", - ], - }, - }, - ], - "structures": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/2", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/3", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=0,302.05", - "type": "Canvas", - }, - ], - "label": { - "it": [ - "Preludio e Coro d'introduzione – Bel conforto al mietitore", - ], - }, - "type": "Range", - }, + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", + "items": [ + { + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/4", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=302.05,3971.24", - "type": "Canvas", + "body": { + "format": "text/plain", + "language": "en", + "type": "TextualBody", + "value": "Town Creek Aqueduct", + }, + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", + "motivation": "tagging", + "target": { + "selector": { + "type": "PointSelector", + "x": 3385, + "y": 1464, }, - ], - "label": { - "en": [ - "Remainder of Atto Primo", - ], + "source": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "type": "SpecificResource", }, - "type": "Range", + "type": "Annotation", }, ], - "label": { - "it": [ - "Atto Primo", - ], - }, - "type": "Range", + "type": "AnnotationPage", }, + ], + "height": 7072, + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/range/5", + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0064-opera-one-canvas/canvas/1#t=3971.24,7278.422", - "type": "Canvas", + "body": { + "format": "image/jpeg", + "height": 7072, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 5212, + }, + "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "type": "Annotation", }, ], - "label": { - "it": [ - "Atto Secondo", - ], - }, - "type": "Range", + "type": "AnnotationPage", }, ], "label": { - "it": [ - "Gaetano Donizetti, L'Elisir D'Amore", + "en": [ + "Chesapeake and Ohio Canal Pamphlet", ], }, - "type": "Range", + "type": "Canvas", + "width": 5212, }, ], + "label": { + "en": [ + "Using a point selector for annotating a location on a map.", + ], + }, + "summary": { + "en": [ + "A map containing an point with an annotation of the location.", + ], + }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0139-geolocate-canvas-fragment https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1": { + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json": { "body": [ { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", "type": "Annotation", }, ], @@ -20868,34 +23640,38 @@ exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1": { + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json": { "body": [ { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", "type": "Annotation", }, ], "motivation": [ - "painting", + "tagging", ], "target": { + "selector": { + "type": "FragmentSelector", + "value": "xywh=920,3600,1510,3000", + }, "source": { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", "type": "Canvas", }, "type": "SpecificResource", @@ -20905,20 +23681,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1": { + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", "type": "Annotation", }, ], @@ -20934,20 +23710,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1": { + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", "type": "Annotation", }, ], @@ -20965,62 +23741,28 @@ exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1": { + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json": { "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "duration": 3971.24, - "height": 1080, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", - "items": [ + "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", "type": "AnnotationPage", }, ], - "label": { - "en": [ - "Atto Primo", - ], - }, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", - "type": "ContentResource", - }, - ], - "type": "Canvas", - "width": 1920, - }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2": { - "accompanyingCanvas": null, - "annotations": [], "behavior": [], - "duration": 3307.22, - "height": 1080, + "duration": 0, + "height": 7072, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", "type": "AnnotationPage", }, ], "label": { "en": [ - "Atto Secondo", + "Chesapeake and Ohio Canal Pamphlet", ], }, "metadata": [], @@ -21034,130 +23776,106 @@ exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https "seeAlso": [], "service": [], "summary": null, - "thumbnail": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png", - "type": "ContentResource", - }, - ], + "thumbnail": [], "type": "Canvas", - "width": 1920, + "width": 5212, }, }, "Collection": {}, "ContentResource": { - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png": { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json": { + "geometry": { + "coordinates": [ + [ + [ + -77.019853, + 38.913101, + ], + [ + -77.110013, + 38.843254, + ], + [ + -77.284698, + 38.997574, + ], + [ + -77.188911, + 39.062648, + ], + ], + ], + "type": "Polygon", + }, + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json", "iiif-parser:hasPart": [ { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", - "type": "Image", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", + "type": "Feature", }, ], - "type": "Image", - }, - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png": { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png", - "iiif-parser:hasPart": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", - "type": "Image", + "properties": { + "label": { + "en": [ + "Targeted Map from Chesapeake and Ohio Canal Pamphlet", + ], }, - ], - "type": "Image", - }, - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4": { - "duration": 3971.24, - "format": "video/mp4", - "height": 1080, - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + }, + "type": "Feature", + }, + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 7072, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", - "type": "Video", + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", + "type": "Image", }, ], - "type": "Video", - "width": 1920, - }, - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": { - "duration": 3307.22, - "format": "video/mp4", - "height": 1080, - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", - "iiif-parser:hasPart": [ + "service": [ { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", - "type": "Video", + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", + "profile": "level1", + "type": "ImageService3", }, ], - "type": "Video", - "width": 1920, + "type": "Image", + "width": 5212, }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json": { + "@context": [ + "http://geojson.org/geojson-ld/geojson-context.jsonld", + "http://iiif.io/api/presentation/3/context.json", + ], "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", "type": "Canvas", }, ], "label": { "en": [ - "The Elixir of Love", - ], - "it": [ - "L'Elisir D'Amore", + "Recipe Manifest for #139", ], }, - "metadata": [ - { - "label": { - "en": [ - "Date Issued", - ], - }, - "value": { - "en": [ - "2019", - ], - }, - }, - { - "label": { - "en": [ - "Publisher", - ], - }, - "value": { - "en": [ - "Indiana University Jacobs School of Music", - ], - }, - }, - ], + "metadata": [], "navDate": null, "partOf": [], "placeholderCanvas": null, @@ -21169,227 +23887,237 @@ exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https "service": [], "services": [], "start": null, - "structures": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", - "type": "Range", - }, - ], - "summary": null, + "structures": [], + "summary": { + "en": [ + "A IIIF Presentation API 3.0 Manifest containing a GeoJSON-LD Web Annotation which targets a Canvas fragment.", + ], + }, "thumbnail": [], "type": "Manifest", "viewingDirection": "left-to-right", }, }, - "Range": { - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", - "type": "Canvas", - }, - ], - "items": [], - "label": null, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "start": null, - "summary": null, - "supplementary": null, - "thumbnail": [], - "type": "Canvas", - "viewingDirection": "left-to-right", + "Range": {}, + "Selector": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674": { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", + "profile": "level1", + "type": "ImageService3", }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", - "type": "Canvas", - }, + }, + }, + "mapping": { + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json": "Canvas", + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json": "Annotation", + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json": "Annotation", + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", + "type": "Manifest", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0139-geolocate-canvas-fragment https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json 2`] = ` +{ + "@context": [ + "http://geojson.org/geojson-ld/geojson-context.jsonld", + "http://iiif.io/api/presentation/3/context.json", + ], + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", + "items": [ + { + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", + "items": [ + { + "body": { + "geometry": { + "coordinates": [ + [ + [ + -77.019853, + 38.913101, + ], + [ + -77.110013, + 38.843254, + ], + [ + -77.284698, + 38.997574, + ], + [ + -77.188911, + 39.062648, + ], + ], + ], + "type": "Polygon", + }, + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json", + "properties": { + "label": { + "en": [ + "Targeted Map from Chesapeake and Ohio Canal Pamphlet", + ], + }, + }, + "type": "Feature", + }, + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", + "motivation": "tagging", + "target": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json#xywh=920,3600,1510,3000", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "height": 7072, + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 7072, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 5212, + }, + "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Chesapeake and Ohio Canal Pamphlet", ], - "items": [], - "label": null, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "start": null, - "summary": null, - "supplementary": null, - "thumbnail": [], - "type": "Canvas", - "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22", - "iiif-parser:hasPart": [ + "type": "Canvas", + "width": 5212, + }, + ], + "label": { + "en": [ + "Recipe Manifest for #139", + ], + }, + "summary": { + "en": [ + "A IIIF Presentation API 3.0 Manifest containing a GeoJSON-LD Web Annotation which targets a Canvas fragment.", + ], + }, + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0154-geo-extension https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", - "type": "Canvas", + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", + "type": "ContentResource", }, ], - "items": [], - "label": null, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "start": null, - "summary": null, - "supplementary": null, - "thumbnail": [], - "type": "Canvas", - "viewingDirection": "left-to-right", - }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", - "type": "Range", - }, + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", + "type": "Annotation", }, ], - "label": { - "it": [ - "Gaetano Donizetti, L'Elisir D'Amore", - ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "start": null, - "summary": null, - "supplementary": null, - "thumbnail": [], - "type": "Range", - "viewingDirection": "left-to-right", + "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2": { - "accompanyingCanvas": null, - "annotations": [], + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", + "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", - "type": "Range", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", + "type": "Annotation", }, ], - "label": { - "en": [ - "Atto Primo", - ], - }, + "label": null, "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], - "type": "Range", - "viewingDirection": "left-to-right", + "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3": { + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1": { "accompanyingCanvas": null, "annotations": [], "behavior": [], + "duration": 0, + "height": 3000, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", - "type": "Range", - }, - ], + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", "items": [ { - "selector": { - "type": "FragmentSelector", - "value": "t=0,302.05", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", - "type": "Canvas", - }, - "type": "SpecificResource", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", + "type": "AnnotationPage", }, ], "label": { - "it": [ - "Preludio e Coro d'introduzione – Bel conforto al mietitore", + "en": [ + "Front of Bronze", ], }, "metadata": [], @@ -21402,94 +24130,94 @@ exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https "rights": null, "seeAlso": [], "service": [], - "start": null, "summary": null, - "supplementary": null, "thumbnail": [], - "type": "Range", - "viewingDirection": "left-to-right", + "type": "Canvas", + "width": 2315, }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", + }, + "Collection": {}, + "ContentResource": { + "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 3000, + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", - "type": "Range", + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", + "type": "Image", }, ], - "items": [ + "service": [ { - "selector": { - "type": "FragmentSelector", - "value": "t=302.05,3971.24", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", - "type": "Canvas", - }, - "type": "SpecificResource", + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", + "profile": "level1", + "type": "ImageService3", }, ], - "label": { - "en": [ - "Remainder of Atto Primo", - ], - }, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "start": null, - "summary": null, - "supplementary": null, - "thumbnail": [], - "type": "Range", - "viewingDirection": "left-to-right", + "type": "Image", + "width": 2315, }, - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5": { + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json": { + "@context": [ + "http://iiif.io/api/extension/navplace/context.json", + "http://iiif.io/api/presentation/3/context.json", + ], "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", + "type": "Manifest", }, ], "items": [ { - "selector": { - "type": "FragmentSelector", - "value": "t=0,3307.22", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", - "type": "Canvas", - }, - "type": "SpecificResource", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", + "type": "Canvas", }, ], "label": { - "en": [ - "Atto Secondo", + "it": [ + "Bronzo Laocoonte e i suoi figli", ], }, "metadata": [], "navDate": null, + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + -118.4745559, + 34.0776376, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/feature/1", + "properties": { + "label": { + "en": [ + "The Laocoön Bronze", + ], + "it": [ + "Bronzo Laocoonte e i suoi figli", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/feature-collection/1", + "type": "FeatureCollection", + }, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -21498,255 +24226,140 @@ exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https "rights": null, "seeAlso": [], "service": [], + "services": [], "start": null, + "structures": [], "summary": null, - "supplementary": null, "thumbnail": [], - "type": "Range", + "type": "Manifest", "viewingDirection": "left-to-right", }, }, + "Range": {}, "Selector": {}, - "Service": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon": { + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", + "profile": "level1", + "type": "ImageService3", + }, + }, }, "mapping": { - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png": "ContentResource", - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png": "ContentResource", - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4": "ContentResource", - "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05": "Canvas", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24": "Canvas", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2": "Canvas", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22": "Canvas", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1": "Range", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2": "Range", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3": "Range", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4": "Range", - "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5": "Range", + "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json": "Manifest", + "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0065-opera-multiple-canvases https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0154-geo-extension https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json 2`] = ` { - "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/manifest.json", + "@context": [ + "http://iiif.io/api/extension/navplace/context.json", + "http://iiif.io/api/presentation/3/context.json", + ], + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", "items": [ { - "duration": 3971.24, - "height": 1080, - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1", - "items": [ - { - "body": { - "duration": 3971.24, - "format": "video/mp4", - "height": 1080, - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", - "type": "Video", - "width": 1920, - }, - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1/annotation_page/1/annotation/1", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "Atto Primo", - ], - }, - "thumbnail": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act1-thumbnail.png", - "type": "Image", - }, - ], - "type": "Canvas", - "width": 1920, - }, - { - "duration": 3307.22, - "height": 1080, - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", + "height": 3000, + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", "items": [ { "body": { - "duration": 3307.22, - "format": "video/mp4", - "height": 1080, - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", - "type": "Video", - "width": 1920, - }, - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2/annotation_page/1/annotation/1", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "Atto Secondo", - ], - }, - "thumbnail": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/act2-thumbnail.png", - "type": "Image", - }, - ], - "type": "Canvas", - "width": 1920, - }, - ], - "label": { - "en": [ - "The Elixir of Love", - ], - "it": [ - "L'Elisir D'Amore", - ], - }, - "metadata": [ - { - "label": { - "en": [ - "Date Issued", - ], - }, - "value": { - "en": [ - "2019", - ], - }, - }, - { - "label": { - "en": [ - "Publisher", - ], - }, - "value": { - "en": [ - "Indiana University Jacobs School of Music", - ], - }, - }, - ], - "structures": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/2", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/3", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=0,302.05", - "type": "Canvas", - }, - ], - "label": { - "it": [ - "Preludio e Coro d'introduzione – Bel conforto al mietitore", - ], - }, - "type": "Range", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/4", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/1#t=302.05,3971.24", - "type": "Canvas", - }, - ], - "label": { - "en": [ - "Remainder of Atto Primo", + "format": "image/jpeg", + "height": 3000, + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", + "profile": "level1", + "type": "ImageService3", + }, ], + "type": "Image", + "width": 2315, }, - "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", + "type": "Annotation", }, ], - "label": { - "en": [ - "Atto Primo", - ], - }, - "type": "Range", + "type": "AnnotationPage", }, - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/range/5", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0065-opera-multiple-canvases/canvas/2#t=0,3307.22", - "type": "Canvas", - }, + ], + "label": { + "en": [ + "Front of Bronze", + ], + }, + "type": "Canvas", + "width": 2315, + }, + ], + "label": { + "it": [ + "Bronzo Laocoonte e i suoi figli", + ], + }, + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + -118.4745559, + 34.0776376, ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/feature/1", + "properties": { "label": { "en": [ - "Atto Secondo", + "The Laocoön Bronze", + ], + "it": [ + "Bronzo Laocoonte e i suoi figli", ], }, - "type": "Range", }, - ], - "label": { - "it": [ - "Gaetano Donizetti, L'Elisir D'Amore", - ], + "type": "Feature", }, - "type": "Range", - }, - ], + ], + "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/feature-collection/1", + "type": "FeatureCollection", + }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0074-multiple-language-captions https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation": { + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image": { "body": [ { - "id": "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", "type": "Annotation", }, ], @@ -21755,432 +24368,254 @@ exports[`Cookbook > Testing normalize %p (%p) 0074-multiple-language-captions ht ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt": { + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image": { "body": [ { - "id": "vault://30199866", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", "type": "Annotation", }, ], "motivation": [ - "supplementing", + "painting", ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - }, - "AnnotationCollection": {}, - "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", - "iiif-parser:hasPart": [ + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", - "type": "AnnotationPage", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg", + "type": "ContentResource", }, ], - "items": [ + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", "type": "Annotation", }, ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", - "iiif-parser:hasPart": [ + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", - "type": "AnnotationPage", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg", + "type": "ContentResource", }, ], - "items": [ + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", "type": "Annotation", }, ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", - }, - }, - "Canvas": { - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas": { - "accompanyingCanvas": null, - "annotations": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", - "type": "AnnotationPage", - }, + "motivation": [ + "painting", ], - "behavior": [], - "duration": 65, - "height": 384, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", - "items": [ + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image": { + "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", - "type": "AnnotationPage", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg", + "type": "ContentResource", }, ], - "label": null, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 288, - }, - }, - "Collection": {}, - "ContentResource": { - "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4": { - "duration": 65, - "format": "video/mp4", - "height": 384, - "id": "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", "iiif-parser:hasPart": [ { - "id": "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", - "type": "Video", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", + "type": "Annotation", }, ], - "type": "Video", - "width": 288, - }, - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt": { - "format": "text/vtt", - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt", - "label": { - "en": [ - "Captions in WebVTT format", - ], - }, - "language": "en", - "type": "Text", - }, - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt": { - "format": "text/vtt", - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt", - "label": { - "it": [ - "Sottotitoli in formato WebVTT", - ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", + "type": "Canvas", + }, + "type": "SpecificResource", }, - "language": "it", - "type": "Text", + "type": "Annotation", }, - "vault://30199866": { - "id": "vault://30199866", + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", "iiif-parser:hasPart": [ { - "id": "vault://30199866", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", - "type": "Choice", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", + "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt", - "type": "ContentResource", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt", - "type": "ContentResource", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", + "type": "Annotation", }, ], - "type": "Choice", + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", }, - }, - "Manifest": { - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", - "accompanyingCanvas": null, - "annotations": [], + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", - "type": "Manifest", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", + "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", + "type": "Annotation", }, ], - "label": { - "en": [ - "For ladies. French models", - ], - "it": [ - "Per voi signore. Modelli francesi", - ], - }, + "label": null, "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, "provider": [], "rendering": [], - "requiredStatement": { - "label": { - "en": [ - "Rights", - ], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", + "type": "AnnotationPage", }, - "value": { - "en": [ - "All rights reserved Cinecittà Luce spa", - ], + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", + "type": "Annotation", }, - }, - "rights": "http://rightsstatements.org/vocab/InC/1.0/", + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, "seeAlso": [], "service": [], - "services": [], - "start": null, - "structures": [], "summary": null, "thumbnail": [], - "type": "Manifest", - "viewingDirection": "left-to-right", + "type": "AnnotationPage", }, - }, - "Range": {}, - "Selector": {}, - "Service": {}, - }, - "mapping": { - "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas": "Canvas", - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation": "Annotation", - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt": "Annotation", - "vault://30199866": "ContentResource", - }, - "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", - "type": "Manifest", - }, -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0074-multiple-language-captions https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json 2`] = ` -{ - "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json", - "items": [ - { - "annotations": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/anno/page/1", - "items": [ - { - "body": { - "items": [ - { - "format": "text/vtt", - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_en.vtt", - "label": { - "en": [ - "Captions in WebVTT format", - ], - }, - "language": "en", - "type": "Text", - }, - { - "format": "text/vtt", - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/Per_voi_signore_Modelli_francesi_it.vtt", - "label": { - "it": [ - "Sottotitoli in formato WebVTT", - ], - }, - "language": "it", - "type": "Text", - }, - ], - "type": "Choice", - }, - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/manifest.json/subtitles_captions-files-vtt", - "motivation": "supplementing", - "target": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "duration": 65, - "height": 384, - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page", - "items": [ - { - "body": { - "duration": 65, - "format": "video/mp4", - "height": 384, - "id": "https://fixtures.iiif.io/video/europeana/Per_voi_signore_Modelli_francesi.mp4", - "type": "Video", - "width": 288, - }, - "id": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas/page/annotation", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0074-multiple-language-captions/canvas", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "type": "Canvas", - "width": 288, - }, - ], - "label": { - "en": [ - "For ladies. French models", - ], - "it": [ - "Per voi signore. Modelli francesi", - ], - }, - "requiredStatement": { - "label": { - "en": [ - "Rights", - ], - }, - "value": { - "en": [ - "All rights reserved Cinecittà Luce spa", - ], - }, - }, - "rights": "http://rightsstatements.org/vocab/InC/1.0/", - "type": "Manifest", -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0117-add-image-thumbnail https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json 1`] = ` -{ - "entities": { - "Agent": {}, - "Annotation": { - "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image": { - "body": [ + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", - "type": "ContentResource", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", + "type": "AnnotationPage", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", - "iiif-parser:hasPart": [ + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", "type": "Annotation", }, ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", }, - }, - "AnnotationCollection": {}, - "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1": { + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", "type": "Annotation", }, ], @@ -22198,23 +24633,23 @@ exports[`Cookbook > Testing normalize %p (%p) 0117-add-image-thumbnail https://i }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0": { + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "duration": 0, - "height": 5312, + "height": 4613, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", "type": "AnnotationPage", }, ], "label": { "en": [ - "front cover with color bar", + "Blank page", ], }, "metadata": [], @@ -22230,101 +24665,300 @@ exports[`Cookbook > Testing normalize %p (%p) 0117-add-image-thumbnail https://i "summary": null, "thumbnail": [], "type": "Canvas", - "width": 4520, + "width": 3204, + }, + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 4612, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", + "type": "Canvas", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Frontispiece", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 3186, + }, + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 4613, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Title page", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 3204, + }, + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 4578, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Blank page", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 3174, + }, + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 4632, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Bookplate", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 3198, + }, + }, + "Collection": {}, + "ContentResource": { + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 4613, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3204, + }, + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 4612, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3186, + }, + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 4613, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3204, }, - }, - "Collection": {}, - "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 4823, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", + "height": 4578, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", "type": "Image", }, ], "service": [ { - "extraFormats": [ - "png", - ], - "extraQualities": [ - "default", - "color", - "gray", - ], - "height": 4823, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21", "profile": "level1", - "protocol": "http://iiif.io/api/image", - "tiles": [ - { - "height": 512, - "scaleFactors": [ - 1, - 2, - 4, - 8, - ], - "width": 512, - }, - ], "type": "ImageService3", - "width": 3497, }, ], "type": "Image", - "width": 3497, + "width": 3174, }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 5312, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", + "height": 4632, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", "type": "Image", }, ], "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 4520, + "width": 3198, }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", "type": "Canvas", }, ], "label": { "en": [ - "Playbill Cover with Manifest Thumbnail", + "Multiple Related Images (Book, etc.)", ], }, "metadata": [], @@ -22338,19 +24972,17 @@ exports[`Cookbook > Testing normalize %p (%p) 0117-add-image-thumbnail https://i "seeAlso": [], "service": [], "services": [], - "start": null, - "structures": [], - "summary": { - "en": [ - "Cover of 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.", - ], - }, - "thumbnail": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", - "type": "ContentResource", + "start": { + "selector": undefined, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", + "type": "Canvas", }, - ], + "type": "SpecificResource", + }, + "structures": [], + "summary": null, + "thumbnail": [], "type": "Manifest", "viewingDirection": "left-to-right", }, @@ -22358,58 +24990,171 @@ exports[`Cookbook > Testing normalize %p (%p) 0117-add-image-thumbnail https://i "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full": { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18": { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19": { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20": { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21": { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22": { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0": "Canvas", - "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2": "Canvas", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3": "Canvas", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4": "Canvas", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5": "Canvas", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0117-add-image-thumbnail https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", "items": [ { - "height": 5312, - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", + "height": 4613, + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/page/p0/1", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 4613, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3204, + }, + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Blank page", + ], + }, + "type": "Canvas", + "width": 3204, + }, + { + "height": 4612, + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 4612, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3186, + }, + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Frontispiece", + ], + }, + "type": "Canvas", + "width": 3186, + }, + { + "height": 4613, + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", "items": [ { "body": { "format": "image/jpeg", - "height": 5312, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", + "height": 4613, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg", "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 4520, + "width": 3204, }, - "id": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/annotation/p0000-image", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0117-add-image-thumbnail/canvas/p0", + "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", "type": "Annotation", }, ], @@ -22418,387 +25163,157 @@ exports[`Cookbook > Testing normalize %p (%p) 0117-add-image-thumbnail https://i ], "label": { "en": [ - "front cover with color bar", + "Title page", ], }, "type": "Canvas", - "width": 4520, + "width": 3204, }, - ], - "label": { - "en": [ - "Playbill Cover with Manifest Thumbnail", - ], - }, - "summary": { - "en": [ - "Cover of 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.", - ], - }, - "thumbnail": [ { - "format": "image/jpeg", - "height": 4823, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001/full/max/0/default.jpg", - "service": [ + "height": 4578, + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", + "items": [ { - "extraFormats": [ - "png", - ], - "extraQualities": [ - "default", - "color", - "gray", - ], - "height": 4823, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001", - "profile": "level1", - "protocol": "http://iiif.io/api/image", - "tiles": [ + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", + "items": [ { - "height": 512, - "scaleFactors": [ - 1, - 2, - 4, - 8, - ], - "width": 512, - }, - ], - "type": "ImageService3", - "width": 3497, - }, - ], - "type": "Image", - "width": 3497, - }, - ], - "type": "Manifest", -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0118-multivalue https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json 1`] = ` -{ - "entities": { - "Agent": {}, - "Annotation": { - "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1": { - "body": [ - { - "id": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - }, - "AnnotationCollection": {}, - "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", - "type": "AnnotationPage", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", - "type": "Annotation", - }, - ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", - }, - }, - "Canvas": { - "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1": { - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "duration": 0, - "height": 991, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", - "type": "AnnotationPage", - }, - ], - "label": null, - "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 1114, - }, - }, - "Collection": {}, - "ContentResource": { - "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg": { - "format": "image/jpeg", - "id": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", - "type": "Image", - }, - ], - "type": "Image", - }, - }, - "Manifest": { - "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", - "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", - "type": "Manifest", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", - "type": "Canvas", - }, - ], - "label": { - "fr": [ - "Arrangement en gris et noir no 1", - ], - }, - "metadata": [ - { - "label": { - "en": [ - "Alternative titles", - ], - }, - "value": { - "en": [ - "Whistler's Mother", - "Arrangement in Grey and Black No. 1", - ], - "fr": [ - "Portrait de la mère de l'artiste", - "La Mère de Whistler", - ], - }, - }, - ], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "services": [], - "start": null, - "structures": [], - "summary": { - "en": [ - "A painting in oil on canvas created by the American-born painter James McNeill Whistler, in 1871.", + "body": { + "format": "image/jpeg", + "height": 4578, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3174, + }, + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", + "type": "Annotation", + }, ], + "type": "AnnotationPage", }, - "thumbnail": [], - "type": "Manifest", - "viewingDirection": "left-to-right", + ], + "label": { + "en": [ + "Blank page", + ], }, + "type": "Canvas", + "width": 3174, }, - "Range": {}, - "Selector": {}, - "Service": {}, - }, - "mapping": { - "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json": "Manifest", - "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg": "ContentResource", - }, - "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", - "type": "Manifest", - }, -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0118-multivalue https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json 2`] = ` -{ - "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/manifest.json", - "items": [ { - "height": 991, - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", + "height": 4632, + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", "items": [ { "body": { "format": "image/jpeg", - "id": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Whistlers_Mother_high_res.jpg/1114px-Whistlers_Mother_high_res.jpg", + "height": 4632, + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22", + "profile": "level1", + "type": "ImageService3", + }, + ], "type": "Image", + "width": 3198, }, - "id": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1/page/1/annotation/1", + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0118-multivalue/canvas/1", + "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], - "type": "Canvas", - "width": 1114, - }, - ], - "label": { - "fr": [ - "Arrangement en gris et noir no 1", - ], - }, - "metadata": [ - { "label": { "en": [ - "Alternative titles", - ], - }, - "value": { - "en": [ - "Whistler's Mother", - "Arrangement in Grey and Black No. 1", - ], - "fr": [ - "Portrait de la mère de l'artiste", - "La Mère de Whistler", + "Bookplate", ], }, + "type": "Canvas", + "width": 3198, }, ], - "summary": { + "label": { "en": [ - "A painting in oil on canvas created by the American-born painter James McNeill Whistler, in 1871.", + "Multiple Related Images (Book, etc.)", ], }, + "start": { + "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", + "type": "Canvas", + }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0219-using-caption-file https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag": { + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1": { "body": [ { - "id": "vault://5332a945", + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", "type": "Annotation", }, ], - "label": { - "en": [ - "Annotation containing the name of the place annotated using the PointSelector.", - ], - }, "motivation": [ - "tagging", + "painting", ], "target": { - "selector": { - "type": "PointSelector", - "x": 3385, - "y": 1464, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", + "type": "Canvas", }, - "source": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json": { + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", "type": "Annotation", }, ], "motivation": [ - "painting", + "supplementing", ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", "type": "Canvas", }, "type": "SpecificResource", @@ -22808,20 +25323,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas ht }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json": { + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", "type": "Annotation", }, ], @@ -22837,20 +25352,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas ht "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1": { + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", "type": "Annotation", }, ], @@ -22868,30 +25383,26 @@ exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas ht }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json": { + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas": { "accompanyingCanvas": null, "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", "type": "AnnotationPage", }, ], "behavior": [], - "duration": 0, - "height": 7072, + "duration": 572.034, + "height": 360, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", "type": "AnnotationPage", }, ], - "label": { - "en": [ - "Chesapeake and Ohio Canal Pamphlet", - ], - }, + "label": null, "metadata": [], "navDate": null, "partOf": [], @@ -22905,71 +25416,69 @@ exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas ht "summary": null, "thumbnail": [], "type": "Canvas", - "width": 5212, + "width": 480, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 7072, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4": { + "duration": 572.034, + "format": "video/mp4", + "height": 360, + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", - "profile": "level1", - "type": "ImageService3", + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", + "type": "Video", }, ], - "type": "Image", - "width": 5212, + "type": "Video", + "width": 480, }, - "vault://5332a945": { - "format": "text/plain", - "id": "vault://5332a945", + "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt": { + "format": "text/vtt", + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", "iiif-parser:hasPart": [ { - "id": "vault://5332a945", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", - "type": "TextualBody", + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", + "type": "Text", }, ], + "label": { + "en": [ + "Captions in WebVTT format", + ], + }, "language": "en", - "type": "TextualBody", - "value": "Town Creek Aqueduct", + "type": "Text", }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", "type": "Canvas", }, ], "label": { "en": [ - "Using a point selector for annotating a location on a map.", + "Lunchroom Manners", ], }, "metadata": [], @@ -22985,11 +25494,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas ht "services": [], "start": null, "structures": [], - "summary": { - "en": [ - "A map containing an point with an annotation of the location.", - ], - }, + "summary": null, "thumbnail": [], "type": "Manifest", "viewingDirection": "left-to-right", @@ -22997,190 +25502,120 @@ exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas ht }, "Range": {}, "Selector": {}, - "Service": { - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674": { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", - "profile": "level1", - "type": "ImageService3", - }, - }, + "Service": {}, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag": "Annotation", - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json": "Canvas", - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json": "Annotation", - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": "ContentResource", - "vault://5332a945": "ContentResource", + "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4": "ContentResource", + "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas": "Canvas", + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json": "Manifest", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0135-annotating-point-in-canvas https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0219-using-caption-file https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", "items": [ { "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", "items": [ { "body": { - "format": "text/plain", - "language": "en", - "type": "TextualBody", - "value": "Town Creek Aqueduct", - }, - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", - "label": { - "en": [ - "Annotation containing the name of the place annotated using the PointSelector.", - ], - }, - "motivation": "tagging", - "target": { - "selector": { - "type": "PointSelector", - "x": 3385, - "y": 1464, + "format": "text/vtt", + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", + "label": { + "en": [ + "Captions in WebVTT format", + ], }, - "source": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", - "type": "SpecificResource", + "language": "en", + "type": "Text", }, + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", + "motivation": "supplementing", + "target": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], - "height": 7072, - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "duration": 572.034, + "height": 360, + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/contentPage.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", "items": [ { "body": { - "format": "image/jpeg", - "height": 7072, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 5212, + "duration": 572.034, + "format": "video/mp4", + "height": 360, + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", + "type": "Video", + "width": 480, }, - "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/content.json", + "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/canvas.json", + "target": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], - "label": { - "en": [ - "Chesapeake and Ohio Canal Pamphlet", - ], - }, "type": "Canvas", - "width": 5212, + "width": 480, }, ], "label": { "en": [ - "Using a point selector for annotating a location on a map.", - ], - }, - "summary": { - "en": [ - "A map containing an point with an annotation of the location.", + "Lunchroom Manners", ], }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0139-geolocate-canvas-fragment https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0229-behavior-ranges https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1/annotation/2": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1/annotation/2", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1/annotation/2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1", "type": "Annotation", }, ], - "label": { - "en": [ - "Pamphlet Cover", - ], - }, "motivation": [ "painting", ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json": { - "body": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", - "type": "Annotation", - }, - ], - "label": { - "en": [ - "Annotation containing GeoJSON-LD coordinates that place the map depiction onto a Leaflet web map.", - ], - }, - "motivation": [ - "tagging", - ], - "target": { - "selector": { - "type": "FragmentSelector", - "value": "xywh=920,3600,1510,3000", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", "type": "Canvas", }, "type": "SpecificResource", @@ -23190,49 +25625,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0139-geolocate-canvas-fragment htt }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", - "type": "AnnotationPage", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", - "type": "Annotation", - }, - ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", - }, - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1/annotation/2", "type": "Annotation", }, ], @@ -23250,30 +25656,21 @@ exports[`Cookbook > Testing normalize %p (%p) 0139-geolocate-canvas-fragment htt }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1": { "accompanyingCanvas": null, - "annotations": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", - "type": "AnnotationPage", - }, - ], + "annotations": [], "behavior": [], - "duration": 0, - "height": 7072, + "duration": 3307.22, + "height": 1080, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1", "type": "AnnotationPage", }, ], - "label": { - "en": [ - "Chesapeake and Ohio Canal Pamphlet", - ], - }, + "label": null, "metadata": [], "navDate": null, "partOf": [], @@ -23287,101 +25684,193 @@ exports[`Cookbook > Testing normalize %p (%p) 0139-geolocate-canvas-fragment htt "summary": null, "thumbnail": [], "type": "Canvas", - "width": 5212, + "width": 1920, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json": { - "geometry": { - "coordinates": [ - [ - [ - -77.019853, - 38.913101, - ], - [ - -77.110013, - 38.843254, - ], - [ - -77.284698, - 38.997574, - ], - [ - -77.188911, - 39.062648, - ], - ], - ], - "type": "Polygon", - }, - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-01.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-01.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-01.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/2", + "type": "Image", + }, + ], + "type": "Image", + "width": 2250, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-02.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-02.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-02.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/3", + "type": "Image", + }, + ], + "type": "Image", + "width": 2250, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-03.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-03.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-03.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/4", + "type": "Image", + }, + ], + "type": "Image", + "width": 2250, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-04.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-04.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-04.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/5", + "type": "Image", + }, + ], + "type": "Image", + "width": 2250, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-05.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-05.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-05.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/6", + "type": "Image", + }, + ], + "type": "Image", + "width": 2250, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-06.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-06.png", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", - "type": "Feature", + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-06.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/7", + "type": "Image", }, ], - "properties": { - "label": { - "en": [ - "Targeted Map from Chesapeake and Ohio Canal Pamphlet", - ], + "type": "Image", + "width": 2250, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-07.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-07.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-07.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/8", + "type": "Image", }, - }, - "type": "Feature", + ], + "type": "Image", + "width": 2250, }, - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 7072, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-08.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-08.png", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-08.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/9", "type": "Image", }, ], - "service": [ + "type": "Image", + "width": 2250, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-09.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-09.png", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", - "profile": "level1", - "type": "ImageService3", + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-09.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/10", + "type": "Image", }, ], "type": "Image", - "width": 5212, + "width": 2250, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-10.png": { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-10.png", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-10.png", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/11", + "type": "Image", + }, + ], + "type": "Image", + "width": 2250, + }, + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": { + "duration": 3307.22, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "iiif-parser:hasPart": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1/annotation/2", + "type": "Video", + }, + ], + "type": "Video", + "width": 1920, }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json ": { "@context": [ - "http://geojson.org/geojson-ld/geojson-context.jsonld", "http://iiif.io/api/presentation/3/context.json", ], "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json ", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json ", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json ", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", "type": "Canvas", }, ], "label": { "en": [ - "Recipe Manifest for #139", + "Video navigation with thumbnails in a Range", ], }, "metadata": [], @@ -23396,249 +25885,226 @@ exports[`Cookbook > Testing normalize %p (%p) 0139-geolocate-canvas-fragment htt "service": [], "services": [], "start": null, - "structures": [], - "summary": { - "en": [ - "A IIIF Presentation API 3.0 Manifest containing a GeoJSON-LD Web Annotation which targets a Canvas fragment.", - ], - }, + "structures": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", + }, + ], + "summary": null, "thumbnail": [], "type": "Manifest", "viewingDirection": "left-to-right", }, }, - "Range": {}, - "Selector": {}, - "Service": { - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674": { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", - "profile": "level1", - "type": "ImageService3", - }, - }, - }, - "mapping": { - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json": "Canvas", - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json": "Annotation", - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json": "Annotation", - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": "ContentResource", - }, - "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", - "type": "Manifest", - }, -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0139-geolocate-canvas-fragment https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json 2`] = ` -{ - "@context": [ - "http://geojson.org/geojson-ld/geojson-context.jsonld", - "http://iiif.io/api/presentation/3/context.json", - ], - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json", - "items": [ - { - "annotations": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/supplementingPage.json", - "items": [ - { - "body": { - "geometry": { - "coordinates": [ - [ - [ - -77.019853, - 38.913101, - ], - [ - -77.110013, - 38.843254, - ], - [ - -77.284698, - 38.997574, - ], - [ - -77.188911, - 39.062648, - ], - ], - ], - "type": "Polygon", - }, - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json", - "properties": { - "label": { - "en": [ - "Targeted Map from Chesapeake and Ohio Canal Pamphlet", - ], - }, - }, - "type": "Feature", - }, - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", - "label": { - "en": [ - "Annotation containing GeoJSON-LD coordinates that place the map depiction onto a Leaflet web map.", - ], - }, - "motivation": "tagging", - "target": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json#xywh=920,3600,1510,3000", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "height": 7072, - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/contentPage.json", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 7072, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 5212, - }, - "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", - "label": { - "en": [ - "Pamphlet Cover", - ], - }, - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/canvas.json", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "Chesapeake and Ohio Canal Pamphlet", + "Range": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=0,9": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=0,9", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=0,9", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1.1", + "type": "Canvas", + }, ], - }, - "type": "Canvas", - "width": 5212, - }, - ], - "label": { - "en": [ - "Recipe Manifest for #139", - ], - }, - "summary": { - "en": [ - "A IIIF Presentation API 3.0 Manifest containing a GeoJSON-LD Web Annotation which targets a Canvas fragment.", - ], - }, - "type": "Manifest", -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0154-geo-extension https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json 1`] = ` -{ - "entities": { - "Agent": {}, - "Annotation": { - "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1": { - "body": [ + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1220,1525": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1220,1525", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", - "type": "ContentResource", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1220,1525", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/6", + "type": "Canvas", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1525,1830": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1525,1830", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1525,1830", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/7", + "type": "Canvas", }, ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1830,2135": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1830,2135", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1830,2135", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/8", "type": "Canvas", }, - "type": "SpecificResource", - }, - "type": "Annotation", + ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", }, - }, - "AnnotationCollection": {}, - "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2135,2440": { + "accompanyingCanvas": null, + "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2135,2440", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2135,2440", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/9", + "type": "Canvas", }, ], - "items": [ + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2440,2745": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2440,2745", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2440,2745", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/10", + "type": "Canvas", }, ], + "items": [], "label": null, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, + "supplementary": null, "thumbnail": [], - "type": "AnnotationPage", + "type": "Canvas", + "viewingDirection": "left-to-right", }, - }, - "Canvas": { - "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2745,3307.22": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 3000, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", - "items": [ + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2745,3307.22", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2745,3307.22", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/11", + "type": "Canvas", }, ], - "label": { - "en": [ - "Front of Bronze", - ], - }, + "items": [], + "label": null, "metadata": [], "navDate": null, "partOf": [], @@ -23649,94 +26115,126 @@ exports[`Cookbook > Testing normalize %p (%p) 0154-geo-extension https://iiif.io "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, + "supplementary": null, "thumbnail": [], "type": "Canvas", - "width": 2315, + "viewingDirection": "left-to-right", }, - }, - "Collection": {}, - "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 3000, - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=305,610": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=305,610", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", - "type": "Image", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=305,610", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/3", + "type": "Canvas", }, ], - "service": [ + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=610,915": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=610,915", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", - "profile": "level1", - "type": "ImageService3", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=610,915", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/4", + "type": "Canvas", }, ], - "type": "Image", - "width": 2315, + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", }, - }, - "Manifest": { - "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json": { - "@context": [ - "http://iiif.io/api/extension/navplace/context.json", - "http://iiif.io/api/presentation/3/context.json", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=9,305": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=9,305", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=9,305", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/2", + "type": "Canvas", + }, ], + "items": [], + "label": null, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [], + "type": "Canvas", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=915,1220": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=915,1220", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", - "type": "Manifest", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=915,1220", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/5", "type": "Canvas", }, ], - "label": { - "it": [ - "Bronzo Laocoonte e i suoi figli", - ], - }, + "items": [], + "label": null, "metadata": [], "navDate": null, - "navPlace": { - "features": [ - { - "geometry": { - "coordinates": [ - -118.4745559, - 34.0776376, - ], - "type": "Point", - }, - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/feature/1", - "properties": { - "label": { - "en": [ - "The Laocoön Bronze", - ], - "it": [ - "Bronzo Laocoonte e i suoi figli", - ], - }, - }, - "type": "Feature", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/feature-collection/1", - "type": "FeatureCollection", - }, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -23745,430 +26243,323 @@ exports[`Cookbook > Testing normalize %p (%p) 0154-geo-extension https://iiif.io "rights": null, "seeAlso": [], "service": [], - "services": [], "start": null, - "structures": [], "summary": null, + "supplementary": null, "thumbnail": [], - "type": "Manifest", + "type": "Canvas", "viewingDirection": "left-to-right", }, - }, - "Range": {}, - "Selector": {}, - "Service": { - "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon": { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", - "profile": "level1", - "type": "ImageService3", - }, - }, - }, - "mapping": { - "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json": "Manifest", - "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg": "ContentResource", - }, - "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", - "type": "Manifest", - }, -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0154-geo-extension https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json 2`] = ` -{ - "@context": [ - "http://iiif.io/api/extension/navplace/context.json", - "http://iiif.io/api/presentation/3/context.json", - ], - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/manifest.json", - "items": [ - { - "height": 3000, - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno-page/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 3000, - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 2315, - }, - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/anno/1", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/canvas/1", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "Front of Bronze", - ], - }, - "type": "Canvas", - "width": 2315, - }, - ], - "label": { - "it": [ - "Bronzo Laocoonte e i suoi figli", - ], - }, - "navPlace": { - "features": [ - { - "geometry": { - "coordinates": [ - -118.4745559, - 34.0776376, - ], - "type": "Point", - }, - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/feature/1", - "properties": { - "label": { - "en": [ - "The Laocoön Bronze", - ], - "it": [ - "Bronzo Laocoonte e i suoi figli", - ], - }, - }, - "type": "Feature", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0154-geo-extension/feature-collection/1", - "type": "FeatureCollection", - }, - "type": "Manifest", -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json 1`] = ` -{ - "entities": { - "Agent": {}, - "Annotation": { - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image": { - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image": { - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg", - "type": "ContentResource", - }, + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [ + "thumbnail-nav", ], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", - "iiif-parser:hasPart": [ + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1.1", + "type": "Range", }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image": { - "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg", - "type": "ContentResource", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/2", + "type": "Range", }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", - "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", - "type": "Annotation", - }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/3", + "type": "Range", }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image": { - "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg", - "type": "ContentResource", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/4", + "type": "Range", }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", - "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/5", + "type": "Range", }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", - "type": "Canvas", + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/6", + "type": "Range", }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image": { - "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg", - "type": "ContentResource", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/7", + "type": "Range", }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", - "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/8", + "type": "Range", }, - ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", - "type": "Canvas", + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/9", + "type": "Range", }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - }, - "AnnotationCollection": {}, - "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", - "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/10", + "type": "Range", }, - ], - "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/11", + "type": "Range", }, ], - "label": null, + "label": { + "en": [ + "Thumbnail Navigation", + ], + }, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, + "supplementary": null, "thumbnail": [], - "type": "AnnotationPage", + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1": { - "behavior": [], + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1.1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [ + "no-nav", + ], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1.1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1.1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", - "type": "Annotation", + "selector": { + "type": "FragmentSelector", + "value": "t=0,9", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], "label": null, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, + "supplementary": null, "thumbnail": [], - "type": "AnnotationPage", + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/10": { + "accompanyingCanvas": null, + "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/10", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/10", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", - "type": "Annotation", + "selector": { + "type": "FragmentSelector", + "value": "t=2440,2745", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], - "label": null, + "label": { + "en": [ + "2440s – 2745s", + ], + }, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, - "thumbnail": [], - "type": "AnnotationPage", + "supplementary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-09.png", + "type": "ContentResource", + }, + ], + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/11": { + "accompanyingCanvas": null, + "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/11", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/11", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", - "type": "Annotation", + "selector": { + "type": "FragmentSelector", + "value": "t=2745,3307.22", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], - "label": null, + "label": { + "en": [ + "2745s – end", + ], + }, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, - "thumbnail": [], - "type": "AnnotationPage", + "supplementary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-10.png", + "type": "ContentResource", + }, + ], + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/2": { + "accompanyingCanvas": null, + "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/2", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", - "type": "Annotation", + "selector": { + "type": "FragmentSelector", + "value": "t=9,305", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], - "label": null, + "label": { + "en": [ + "9s – 305s", + ], + }, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, - "thumbnail": [], - "type": "AnnotationPage", + "supplementary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-01.png", + "type": "ContentResource", + }, + ], + "type": "Range", + "viewingDirection": "left-to-right", }, - }, - "Canvas": { - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/3": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 4613, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/3", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/3", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", + }, + ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", - "type": "AnnotationPage", + "selector": { + "type": "FragmentSelector", + "value": "t=305,610", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], "label": { "en": [ - "Blank page", + "305s – 610s", ], }, "metadata": [], @@ -24181,35 +26572,47 @@ exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/ "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 3204, + "supplementary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-02.png", + "type": "ContentResource", + }, + ], + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/4": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 4612, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/4", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", - "type": "AnnotationPage", + "selector": { + "type": "FragmentSelector", + "value": "t=610,915", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], "label": { "en": [ - "Frontispiece", + "610s – 915s", ], }, "metadata": [], @@ -24222,28 +26625,47 @@ exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/ "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 3186, + "supplementary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-03.png", + "type": "ContentResource", + }, + ], + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/5": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 4613, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/5", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/5", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", + }, + ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", - "type": "AnnotationPage", + "selector": { + "type": "FragmentSelector", + "value": "t=915,1220", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], "label": { "en": [ - "Title page", + "915s – 1220s", ], }, "metadata": [], @@ -24256,28 +26678,47 @@ exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/ "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 3204, + "supplementary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-04.png", + "type": "ContentResource", + }, + ], + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/6": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 4578, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/6", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/6", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", + }, + ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", - "type": "AnnotationPage", + "selector": { + "type": "FragmentSelector", + "value": "t=1220,1525", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], "label": { "en": [ - "Blank page", + "1220s – 1525s", ], }, "metadata": [], @@ -24290,28 +26731,47 @@ exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/ "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 3174, + "supplementary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-05.png", + "type": "ContentResource", + }, + ], + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5": { + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/7": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 4632, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/7", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/7", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", + }, + ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", - "type": "AnnotationPage", + "selector": { + "type": "FragmentSelector", + "value": "t=1525,1830", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], "label": { "en": [ - "Bookplate", + "1525s – 1830s", ], }, "metadata": [], @@ -24324,160 +26784,100 @@ exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/ "rights": null, "seeAlso": [], "service": [], + "start": null, "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 3198, - }, - }, - "Collection": {}, - "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 4613, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 3204, - }, - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 4612, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 3186, - }, - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 4613, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", - "type": "Image", - }, - ], - "service": [ + "supplementary": null, + "thumbnail": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20", - "profile": "level1", - "type": "ImageService3", + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-06.png", + "type": "ContentResource", }, ], - "type": "Image", - "width": 3204, + "type": "Range", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 4578, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/8": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/8", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21", - "profile": "level1", - "type": "ImageService3", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/8", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", }, ], - "type": "Image", - "width": 3174, - }, - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 4632, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg", - "iiif-parser:hasPart": [ + "items": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", - "type": "Image", + "selector": { + "type": "FragmentSelector", + "value": "t=1830,2135", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], - "service": [ + "label": { + "en": [ + "1830s – 2135s", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": null, + "summary": null, + "supplementary": null, + "thumbnail": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22", - "profile": "level1", - "type": "ImageService3", + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-07.png", + "type": "ContentResource", }, ], - "type": "Image", - "width": 3198, + "type": "Range", + "viewingDirection": "left-to-right", }, - }, - "Manifest": { - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/9": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/9", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", - "type": "Manifest", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", - "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/9", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", }, + ], + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", - "type": "Canvas", + "selector": { + "type": "FragmentSelector", + "value": "t=2135,2440", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", }, ], "label": { "en": [ - "Multiple Related Images (Book, etc.)", + "2135s – 2440s", ], }, "metadata": [], @@ -24490,268 +26890,608 @@ exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/ "rights": null, "seeAlso": [], "service": [], - "services": [], - "start": { - "selector": undefined, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "structures": [], + "start": null, "summary": null, - "thumbnail": [], - "type": "Manifest", + "supplementary": null, + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-08.png", + "type": "ContentResource", + }, + ], + "type": "Range", "viewingDirection": "left-to-right", }, }, - "Range": {}, "Selector": {}, - "Service": { - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18": { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19": { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20": { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21": { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22": { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22", - "profile": "level1", - "type": "ImageService3", - }, - }, + "Service": {}, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2": "Canvas", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3": "Canvas", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4": "Canvas", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5": "Canvas", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-01.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-02.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-03.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-04.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-05.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-06.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-07.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-08.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-09.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-10.png": "ContentResource", + "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=0,9": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1220,1525": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1525,1830": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1830,2135": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2135,2440": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2440,2745": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2745,3307.22": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=305,610": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=610,915": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=9,305": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=915,1220": "Canvas", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1/annotation/2": "Annotation", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json ": "Manifest", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1.1": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/10": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/11": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/2": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/3": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/4": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/5": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/6": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/7": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/8": "Range", + "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/9": "Range", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json ", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0229-behavior-ranges https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json 2`] = ` { - "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/manifest.json", + "@context": [ + "http://iiif.io/api/presentation/3/context.json", + ], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json ", "items": [ { - "height": 4613, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", + "duration": 3307.22, + "height": 1080, + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1", + "items": [ + { + "body": { + "duration": 3307.22, + "format": "video/mp4", + "height": 1080, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "type": "Video", + "width": 1920, + }, + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1/annotation/2", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "type": "Canvas", + "width": 1920, + }, + ], + "label": { + "en": [ + "Video navigation with thumbnails in a Range", + ], + }, + "structures": [ + { + "behavior": [ + "thumbnail-nav", + ], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p1/1", + "behavior": [ + "no-nav", + ], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1.1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=0,9", + "type": "Canvas", + }, + ], + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=9,305", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "9s – 305s", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-01.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/3", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=305,610", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "305s – 610s", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-02.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/4", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=610,915", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "610s – 915s", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-03.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/5", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=915,1220", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "915s – 1220s", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-04.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/6", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1220,1525", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "1220s – 1525s", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-05.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/7", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1525,1830", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "1525s – 1830s", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-06.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/8", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1830,2135", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "1830s – 2135s", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-07.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/9", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2135,2440", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "2135s – 2440s", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-08.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/10", "items": [ { - "body": { - "format": "image/jpeg", - "height": 4613, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 3204, - }, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0001-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p1", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2440,2745", + "type": "Canvas", }, ], - "type": "AnnotationPage", + "label": { + "en": [ + "2440s – 2745s", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-09.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", }, - ], - "label": { - "en": [ - "Blank page", - ], - }, - "type": "Canvas", - "width": 3204, - }, - { - "height": 4612, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", - "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/11", "items": [ { - "body": { - "format": "image/jpeg", - "height": 4612, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 3186, - }, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0002-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2745,3307.22", + "type": "Canvas", }, ], - "type": "AnnotationPage", + "label": { + "en": [ + "2745s – end", + ], + }, + "thumbnail": [ + { + "format": "image/png", + "height": 1266, + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-10.png", + "type": "Image", + "width": 2250, + }, + ], + "type": "Range", }, ], "label": { "en": [ - "Frontispiece", + "Thumbnail Navigation", ], }, - "type": "Canvas", - "width": 3186, + "type": "Range", }, - { - "height": 4613, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p3/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 4613, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 3204, - }, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0003-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p3", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", + ], + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifest https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", }, - ], - "label": { - "en": [ - "Title page", + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "type": "Annotation", + }, ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", }, - "type": "Canvas", - "width": 3204, }, - { - "height": 4578, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p4/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 4578, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 3174, - }, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0004-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p4", - "type": "Annotation", - }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 7072, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "1987 Map, recto and verso, with a date of publication", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 5212, + }, + }, + "Collection": {}, + "ContentResource": { + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 7072, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 5212, + }, + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "type": "Manifest", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "type": "Canvas", + }, + ], + "label": { + "en": [ + "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", ], - "type": "AnnotationPage", }, - ], - "label": { - "en": [ - "Blank page", - ], + "metadata": [], + "navDate": "1987-01-01T00:00:00+00:00", + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "services": [], + "start": null, + "structures": [], + "summary": null, + "thumbnail": [], + "type": "Manifest", + "viewingDirection": "left-to-right", + }, + }, + "Range": {}, + "Selector": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/": { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/", + "profile": "level1", + "type": "ImageService3", }, - "type": "Canvas", - "width": 3174, }, + }, + "mapping": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "type": "Manifest", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifest https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "items": [ { - "height": 4632, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", + "height": 7072, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/page/p5/1", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", "items": [ { "body": { "format": "image/jpeg", - "height": 4632, - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg", + "height": 7072, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22", + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 3198, + "width": 5212, }, - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/annotation/p0005-image", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p5", + "target": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", "type": "Annotation", }, ], @@ -24760,43 +27500,40 @@ exports[`Cookbook > Testing normalize %p (%p) 0202-start-canvas https://iiif.io/ ], "label": { "en": [ - "Bookplate", + "1987 Map, recto and verso, with a date of publication", ], }, "type": "Canvas", - "width": 3198, + "width": 5212, }, ], "label": { "en": [ - "Multiple Related Images (Book, etc.)", + "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", ], }, - "start": { - "id": "https://iiif.io/api/cookbook/recipe/0202-start-canvas/canvas/p2", - "type": "Canvas", - }, + "navDate": "1987-01-01T00:00:00+00:00", "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0219-using-caption-file https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifest https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image": { "body": [ { - "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", "type": "Annotation", }, ], @@ -24805,34 +27542,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0219-using-caption-file https://ii ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1": { - "body": [ - { - "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", - "type": "Annotation", - }, - ], - "motivation": [ - "supplementing", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", @@ -24842,49 +27552,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0219-using-caption-file https://ii }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", - "type": "AnnotationPage", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", - "type": "Annotation", - }, - ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", - }, - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", "type": "Annotation", }, ], @@ -24902,26 +27583,25 @@ exports[`Cookbook > Testing normalize %p (%p) 0219-using-caption-file https://ii }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1": { "accompanyingCanvas": null, - "annotations": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", - "type": "AnnotationPage", - }, - ], + "annotations": [], "behavior": [], - "duration": 572.034, - "height": 360, + "duration": 0, + "height": 1765, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", "type": "AnnotationPage", }, ], - "label": null, + "label": { + "en": [ + "1986 Map, recto and verso, with a date of publication", + ], + }, "metadata": [], "navDate": null, "partOf": [], @@ -24935,73 +27615,61 @@ exports[`Cookbook > Testing normalize %p (%p) 0219-using-caption-file https://ii "summary": null, "thumbnail": [], "type": "Canvas", - "width": 480, + "width": 1286, }, }, "Collection": {}, "ContentResource": { - "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4": { - "duration": 572.034, - "format": "video/mp4", - "height": 360, - "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 1765, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", - "type": "Video", + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "type": "Image", }, ], - "type": "Video", - "width": 480, - }, - "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt": { - "format": "text/vtt", - "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", - "iiif-parser:hasPart": [ + "service": [ { - "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", - "type": "Text", - }, - ], - "label": { - "en": [ - "Captions in WebVTT format", - ], - }, - "language": "en", - "type": "Text", + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1286, }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", "type": "Canvas", }, ], "label": { "en": [ - "Lunchroom Manners", + "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", ], }, "metadata": [], - "navDate": null, + "navDate": "1986-01-01T00:00:00+00:00", "partOf": [], "placeholderCanvas": null, "provider": [], @@ -25021,111 +27689,364 @@ exports[`Cookbook > Testing normalize %p (%p) 0219-using-caption-file https://ii }, "Range": {}, "Selector": {}, - "Service": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/": { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/", + "profile": "level1", + "type": "ImageService3", + }, + }, }, "mapping": { - "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4": "ContentResource", - "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas": "Canvas", - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0219-using-caption-file https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifest https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", "items": [ { - "annotations": [ + "height": 1765, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", "items": [ { "body": { - "format": "text/vtt", - "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/lunchroom_manners.vtt", - "label": { - "en": [ - "Captions in WebVTT format", - ], - }, - "language": "en", - "type": "Text", + "format": "image/jpeg", + "height": 1765, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1286, }, - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page2/a1", - "motivation": "supplementing", - "target": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], - "duration": 572.034, - "height": 360, - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page", - "items": [ - { - "body": { - "duration": 572.034, - "format": "video/mp4", - "height": 360, - "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", - "type": "Video", - "width": 480, - }, - "id": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas/page/annotation1", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0219-using-caption-file/canvas", - "type": "Annotation", + "label": { + "en": [ + "1986 Map, recto and verso, with a date of publication", + ], + }, + "type": "Canvas", + "width": 1286, + }, + ], + "label": { + "en": [ + "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + ], + }, + "navDate": "1986-01-01T00:00:00+00:00", + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate-collection https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": {}, + "AnnotationCollection": {}, + "AnnotationPage": {}, + "Canvas": {}, + "Collection": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", + "type": "Collection", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", + "iiif-parser:isExternal": true, + "label": { + "en": [ + "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + ], + }, + "navDate": "1986-01-01T00:00:00+00:00", + "type": "Manifest", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "iiif-parser:isExternal": true, + "label": { + "en": [ + "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + ], }, + "navDate": "1987-01-01T00:00:00+00:00", + "type": "Manifest", + }, + ], + "label": { + "en": [ + "Chesapeake and Ohio Canal map and guide pamphlets", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "services": [], + "summary": null, + "thumbnail": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "type": "Collection", + "viewingDirection": "left-to-right", + }, + }, + "ContentResource": { + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 300, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 221, + }, + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "iiif-parser:isExternal": true, + "items": [], + "label": { + "en": [ + "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + ], + }, + "metadata": [], + "navDate": "1987-01-01T00:00:00+00:00", + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "services": [], + "start": null, + "structures": [], + "summary": null, + "thumbnail": [], + "type": "Manifest", + "viewingDirection": "left-to-right", + }, + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", + "iiif-parser:isExternal": true, + "items": [], + "label": { + "en": [ + "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", ], - "type": "AnnotationPage", }, - ], - "type": "Canvas", - "width": 480, + "metadata": [], + "navDate": "1986-01-01T00:00:00+00:00", + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "services": [], + "start": null, + "structures": [], + "summary": null, + "thumbnail": [], + "type": "Manifest", + "viewingDirection": "left-to-right", + }, + }, + "Range": {}, + "Selector": {}, + "Service": {}, + }, + "mapping": { + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json": "Collection", + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json": "Manifest", + "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", + "type": "Collection", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate-collection https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", + "label": { + "en": [ + "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + ], + }, + "navDate": "1986-01-01T00:00:00+00:00", + "type": "Manifest", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "label": { + "en": [ + "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + ], + }, + "navDate": "1987-01-01T00:00:00+00:00", + "type": "Manifest", }, ], "label": { "en": [ - "Lunchroom Manners", + "Chesapeake and Ohio Canal map and guide pamphlets", ], }, - "type": "Manifest", + "thumbnail": [ + { + "format": "image/jpeg", + "height": 300, + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 221, + }, + ], + "type": "Collection", } `; -exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifest https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0234-provider https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json 1`] = ` { "entities": { - "Agent": {}, + "Agent": { + "https://id.loc.gov/authorities/n79055331": { + "homepage": [ + { + "id": "https://digital.library.ucla.edu/", + "type": "ContentResource", + }, + ], + "id": "https://id.loc.gov/authorities/n79055331", + "iiif-parser:hasPart": [ + { + "id": "https://id.loc.gov/authorities/n79055331", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", + "type": "Agent", + }, + ], + "label": { + "en": [ + "UCLA Library", + ], + }, + "logo": [ + { + "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/max/0/default.png", + "type": "ContentResource", + }, + ], + "seeAlso": [ + { + "id": "https://id.loc.gov/authorities/names/n79055331.madsxml.xml", + "type": "ContentResource", + }, + ], + "type": "Agent", + }, + }, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image": { + "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", "type": "Annotation", }, ], @@ -25134,7 +28055,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifes ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", "type": "Canvas", }, "type": "SpecificResource", @@ -25144,20 +28065,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifes }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1": { + "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", "type": "Annotation", }, ], @@ -25175,23 +28096,23 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifes }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1": { + "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "duration": 0, - "height": 7072, + "height": 5312, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", "type": "AnnotationPage", }, ], "label": { "en": [ - "1987 Map, recto and verso, with a date of publication", + "front cover with color bar", ], }, "metadata": [], @@ -25207,64 +28128,141 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifes "summary": null, "thumbnail": [], "type": "Canvas", - "width": 5212, + "width": 4520, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": { + "https://digital.library.ucla.edu/": { + "format": "text/html", + "id": "https://digital.library.ucla.edu/", + "iiif-parser:hasPart": [ + { + "id": "https://digital.library.ucla.edu/", + "iiif-parser:partOf": "https://id.loc.gov/authorities/n79055331", + "type": "Text", + }, + ], + "label": { + "en": [ + "UCLA Library Digital Collections", + ], + }, + "language": [ + "en", + ], + "type": "Text", + }, + "https://id.loc.gov/authorities/names/n79055331.madsxml.xml": { + "format": "application/xml", + "id": "https://id.loc.gov/authorities/names/n79055331.madsxml.xml", + "iiif-parser:hasPart": [ + { + "id": "https://id.loc.gov/authorities/names/n79055331.madsxml.xml", + "iiif-parser:partOf": "https://id.loc.gov/authorities/n79055331", + "type": "Dataset", + }, + ], + "label": { + "en": [ + "US Library of Congress data about the UCLA Library", + ], + }, + "profile": "http://www.loc.gov/mads/v2", + "type": "Dataset", + }, + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 7072, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "height": 5312, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", "type": "Image", }, ], "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/", + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 5212, + "width": 4520, + }, + "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/max/0/default.png": { + "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/max/0/default.png", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/max/0/default.png", + "iiif-parser:partOf": "https://id.loc.gov/authorities/n79055331", + "type": "Image", + }, + ], + "service": [ + { + "height": 502, + "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2", + "profile": "level2", + "sizes": [ + { + "height": 126, + "width": 300, + }, + { + "height": 251, + "width": 600, + }, + { + "height": 502, + "width": 1200, + }, + ], + "type": "ImageService3", + "width": 1200, + }, + ], + "type": "Image", }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json": { + "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", "type": "Canvas", }, ], "label": { "en": [ - "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + "Playbill Cover", ], }, "metadata": [], - "navDate": "1987-01-01T00:00:00+00:00", + "navDate": null, "partOf": [], "placeholderCanvas": null, - "provider": [], + "provider": [ + { + "id": "https://id.loc.gov/authorities/n79055331", + "type": "Agent", + }, + ], "rendering": [], "requiredStatement": null, "rights": null, @@ -25273,7 +28271,11 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifes "services": [], "start": null, "structures": [], - "summary": null, + "summary": { + "en": [ + "Cover of 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.", + ], + }, "thumbnail": [], "type": "Manifest", "viewingDirection": "left-to-right", @@ -25282,57 +28284,61 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifes "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/": { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/", + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full": { + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": "ContentResource", + "https://digital.library.ucla.edu/": "ContentResource", + "https://id.loc.gov/authorities/n79055331": "Agent", + "https://id.loc.gov/authorities/names/n79055331.madsxml.xml": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0": "Canvas", + "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg": "ContentResource", + "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/max/0/default.png": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifest https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0234-provider https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", "items": [ { - "height": 7072, - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "height": 5312, + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", "items": [ { "body": { "format": "image/jpeg", - "height": 7072, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "height": 5312, + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/", + "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 5212, + "width": 4520, }, - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "target": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", "type": "Annotation", }, ], @@ -25341,40 +28347,112 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_1-manifes ], "label": { "en": [ - "1987 Map, recto and verso, with a date of publication", + "front cover with color bar", ], }, "type": "Canvas", - "width": 5212, + "width": 4520, }, ], "label": { "en": [ - "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + "Playbill Cover", + ], + }, + "provider": [ + { + "homepage": [ + { + "format": "text/html", + "id": "https://digital.library.ucla.edu/", + "label": { + "en": [ + "UCLA Library Digital Collections", + ], + }, + "language": [ + "en", + ], + "type": "Text", + }, + ], + "id": "https://id.loc.gov/authorities/n79055331", + "label": { + "en": [ + "UCLA Library", + ], + }, + "logo": [ + { + "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/max/0/default.png", + "service": [ + { + "height": 502, + "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2", + "profile": "level2", + "sizes": [ + { + "height": 126, + "width": 300, + }, + { + "height": 251, + "width": 600, + }, + { + "height": 502, + "width": 1200, + }, + ], + "type": "ImageService3", + "width": 1200, + }, + ], + "type": "Image", + }, + ], + "seeAlso": [ + { + "format": "application/xml", + "id": "https://id.loc.gov/authorities/names/n79055331.madsxml.xml", + "label": { + "en": [ + "US Library of Congress data about the UCLA Library", + ], + }, + "profile": "http://www.loc.gov/mads/v2", + "type": "Dataset", + }, + ], + "type": "Agent", + }, + ], + "summary": { + "en": [ + "Cover of 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.", ], }, - "navDate": "1987-01-01T00:00:00+00:00", "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifest https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image": { + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg", + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", "type": "Annotation", }, ], @@ -25383,7 +28461,34 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifes ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", "type": "Canvas", }, "type": "SpecificResource", @@ -25393,20 +28498,49 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifes }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1": { + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", "type": "Annotation", }, ], @@ -25420,31 +28554,116 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifes "service": [], "summary": null, "thumbnail": [], - "type": "AnnotationPage", + "type": "AnnotationPage", + }, + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 3000, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Front of Bronze", + ], + }, + "metadata": [], + "navDate": null, + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + -118.4745559, + 34.0776376, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature/1", + "properties": { + "label": { + "en": [ + "Current Location of the Laocoön Bronze", + ], + "it": [ + "Ubicazione attuale del Bronzo Laocoonte e i suoi figli", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature-collection/1", + "type": "FeatureCollection", + }, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 2315, }, - }, - "Canvas": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1": { + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "duration": 0, - "height": 1765, + "height": 3259, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", "type": "AnnotationPage", }, ], "label": { "en": [ - "1986 Map, recto and verso, with a date of publication", + "Painting", ], }, "metadata": [], "navDate": null, + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + -77.0199025, + 38.8920717, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature/2", + "properties": { + "label": { + "en": [ + "Current Location of Painting", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature-collection/2", + "type": "FeatureCollection", + }, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -25456,61 +28675,89 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifes "summary": null, "thumbnail": [], "type": "Canvas", - "width": 1286, + "width": 4096, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 1765, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg", + "height": 3000, + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", "type": "Image", }, ], "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/", + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 1286, + "width": 2315, + }, + "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 3259, + "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 4096, }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json": { + "@context": [ + "http://iiif.io/api/extension/navplace/context.json", + "http://iiif.io/api/presentation/3/context.json", + ], "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", "type": "Canvas", }, ], "label": { "en": [ - "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + "Laocöon, geolocated sculpture and painting.", ], }, "metadata": [], - "navDate": "1986-01-01T00:00:00+00:00", + "navDate": null, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -25531,57 +28778,69 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifes "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/": { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/", + "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon": { + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1": { + "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2": "Annotation", + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2": "Canvas", + "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json": "Manifest", + "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifest https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json 2`] = ` { - "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", + "@context": [ + "http://iiif.io/api/extension/navplace/context.json", + "http://iiif.io/api/presentation/3/context.json", + ], + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", "items": [ { - "height": 1765, - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "height": 3000, + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", "items": [ { "body": { "format": "image/jpeg", - "height": 1765, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/full/max/0/default.jpg", + "height": 3000, + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/", + "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 1286, + "width": 2315, }, - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0230-navdate/canvas/p1", + "target": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", "type": "Annotation", }, ], @@ -25590,136 +28849,267 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate_map_2-manifes ], "label": { "en": [ - "1986 Map, recto and verso, with a date of publication", + "Front of Bronze", + ], + }, + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + -118.4745559, + 34.0776376, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature/1", + "properties": { + "label": { + "en": [ + "Current Location of the Laocoön Bronze", + ], + "it": [ + "Ubicazione attuale del Bronzo Laocoonte e i suoi figli", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature-collection/1", + "type": "FeatureCollection", + }, + "type": "Canvas", + "width": 2315, + }, + { + "height": 3259, + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 3259, + "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 4096, + }, + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "Painting", + ], + }, + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + -77.0199025, + 38.8920717, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature/2", + "properties": { + "label": { + "en": [ + "Current Location of Painting", + ], + }, + }, + "type": "Feature", + }, ], + "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature-collection/2", + "type": "FeatureCollection", }, "type": "Canvas", - "width": 1286, + "width": 4096, }, ], "label": { "en": [ - "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + "Laocöon, geolocated sculpture and painting.", ], }, - "navDate": "1986-01-01T00:00:00+00:00", "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate-collection https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json 1`] = ` { "entities": { "Agent": {}, - "Annotation": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata": { + "body": [ + { + "source": { + "id": "http://www.wikidata.org/entity/Q18624915", + "type": "ContentResource", + }, + "type": "SpecificResource", + }, + { + "id": "vault://7dc03413", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", + "type": "Annotation", + }, + ], + "motivation": [ + "tagging", + ], + "target": { + "selector": { + "type": "FragmentSelector", + "value": "xywh=749,1054,338,460", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + }, "AnnotationCollection": {}, - "AnnotationPage": {}, - "Canvas": {}, - "Collection": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", - "accompanyingCanvas": null, - "annotations": [], + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", - "type": "Collection", + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", - "iiif-parser:isExternal": true, - "label": { - "en": [ - "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", - ], - }, - "navDate": "1986-01-01T00:00:00+00:00", - "type": "Manifest", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", - "iiif-parser:isExternal": true, - "label": { - "en": [ - "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", - ], - }, - "navDate": "1987-01-01T00:00:00+00:00", - "type": "Manifest", + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", + "type": "Annotation", }, ], - "label": { - "en": [ - "Chesapeake and Ohio Canal map and guide pamphlets", - ], - }, + "label": null, "metadata": [], - "navDate": null, - "partOf": [], - "placeholderCanvas": null, "provider": [], "rendering": [], "requiredStatement": null, "rights": null, "seeAlso": [], "service": [], - "services": [], "summary": null, - "thumbnail": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", - "type": "ContentResource", - }, - ], - "type": "Collection", - "viewingDirection": "left-to-right", + "thumbnail": [], + "type": "AnnotationPage", }, - }, - "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 300, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", - "type": "Image", + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "type": "AnnotationPage", }, ], - "service": [ + "items": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", - "profile": "level1", - "type": "ImageService3", + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", + "type": "Annotation", }, ], - "type": "Image", - "width": 221, + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", }, }, - "Manifest": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json": { + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1": { "accompanyingCanvas": null, - "annotations": [], + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", + "type": "AnnotationPage", + }, + ], "behavior": [], + "duration": 0, + "height": 3024, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", - "iiif-parser:isExternal": true, - "items": [], - "label": { - "en": [ - "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", - ], - }, + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", + "type": "AnnotationPage", + }, + ], + "label": null, "metadata": [], - "navDate": "1987-01-01T00:00:00+00:00", + "navDate": null, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -25728,29 +29118,82 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate-collection ht "rights": null, "seeAlso": [], "service": [], - "services": [], - "start": null, - "structures": [], "summary": null, "thumbnail": [], - "type": "Manifest", - "viewingDirection": "left-to-right", + "type": "Canvas", + "width": 4032, }, - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json": { + }, + "Collection": {}, + "ContentResource": { + "http://www.wikidata.org/entity/Q18624915": { + "id": "http://www.wikidata.org/entity/Q18624915", + "type": "ContentResource", + }, + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 4032, + }, + "vault://7dc03413": { + "format": "text/plain", + "id": "vault://7dc03413", + "iiif-parser:hasPart": [ + { + "id": "vault://7dc03413", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", + "type": "TextualBody", + }, + ], + "language": "de", + "type": "TextualBody", + "value": "Gänseliesel-Brunnen", + }, + }, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", - "iiif-parser:isExternal": true, - "items": [], + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", + "type": "Manifest", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "type": "Canvas", + }, + ], "label": { "en": [ - "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + "Picture of Göttingen taken during the 2019 IIIF Conference", ], }, "metadata": [], - "navDate": "1986-01-01T00:00:00+00:00", + "navDate": null, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -25770,135 +29213,163 @@ exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate-collection ht }, "Range": {}, "Selector": {}, - "Service": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen": { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3", + }, + }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json": "Collection", - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json": "Manifest", - "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg": "ContentResource", + "http://www.wikidata.org/entity/Q18624915": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata": "Annotation", + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", + "vault://7dc03413": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", - "type": "Collection", + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", + "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0230-navdate-navdate-collection https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json", + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", - "label": { - "en": [ - "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", - ], - }, - "navDate": "1986-01-01T00:00:00+00:00", - "type": "Manifest", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", - "label": { - "en": [ - "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", - ], - }, - "navDate": "1987-01-01T00:00:00+00:00", - "type": "Manifest", + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", + "items": [ + { + "body": [ + { + "source": "http://www.wikidata.org/entity/Q18624915", + "type": "SpecificResource", + }, + { + "format": "text/plain", + "language": "de", + "type": "TextualBody", + "value": "Gänseliesel-Brunnen", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", + "motivation": "tagging", + "target": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1#xywh=749,1054,338,460", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "height": 3024, + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 4032, + }, + "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "type": "Canvas", + "width": 4032, }, ], "label": { "en": [ - "Chesapeake and Ohio Canal map and guide pamphlets", + "Picture of Göttingen taken during the 2019 IIIF Conference", ], }, - "thumbnail": [ - { - "format": "image/jpeg", - "height": 300, - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 221, - }, - ], - "type": "Collection", + "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0234-provider https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0261-non-rectangular-commenting https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json 1`] = ` { "entities": { - "Agent": { - "https://id.loc.gov/authorities/n79055331": { - "homepage": [ + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image": { + "body": [ { - "id": "https://digital.library.ucla.edu/", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://id.loc.gov/authorities/n79055331", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", "iiif-parser:hasPart": [ { - "id": "https://id.loc.gov/authorities/n79055331", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", - "type": "Agent", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", + "type": "Annotation", }, ], - "label": { - "en": [ - "UCLA Library", - ], - }, - "logo": [ - { - "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/full/0/default.png", - "type": "ContentResource", - }, + "motivation": [ + "painting", ], - "seeAlso": [ - { - "id": "https://id.loc.gov/authorities/names/n79055331.madsxml.xml", - "type": "ContentResource", + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "type": "Canvas", }, - ], - "type": "Agent", + "type": "SpecificResource", + }, + "type": "Annotation", }, - }, - "Annotation": { - "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image": { + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", + "id": "vault://605b9d93", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", "type": "Annotation", }, ], "motivation": [ - "painting", + "tagging", ], "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", - "type": "Canvas", + "selector": { + "type": "SvgSelector", + "value": "", }, + "source": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", "type": "SpecificResource", }, "type": "Annotation", @@ -25906,20 +29377,49 @@ exports[`Cookbook > Testing normalize %p (%p) 0234-provider https://iiif.io/api/ }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1": { + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", "type": "Annotation", }, ], @@ -25937,25 +29437,26 @@ exports[`Cookbook > Testing normalize %p (%p) 0234-provider https://iiif.io/api/ }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0": { + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1": { "accompanyingCanvas": null, - "annotations": [], + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", + "type": "AnnotationPage", + }, + ], "behavior": [], "duration": 0, - "height": 5312, + "height": 3024, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", "type": "AnnotationPage", }, ], - "label": { - "en": [ - "front cover with color bar", - ], - }, + "label": null, "metadata": [], "navDate": null, "partOf": [], @@ -25969,141 +29470,78 @@ exports[`Cookbook > Testing normalize %p (%p) 0234-provider https://iiif.io/api/ "summary": null, "thumbnail": [], "type": "Canvas", - "width": 4520, + "width": 4032, }, }, "Collection": {}, "ContentResource": { - "https://digital.library.ucla.edu/": { - "format": "text/html", - "id": "https://digital.library.ucla.edu/", - "iiif-parser:hasPart": [ - { - "id": "https://digital.library.ucla.edu/", - "iiif-parser:partOf": "https://id.loc.gov/authorities/n79055331", - "type": "Text", - }, - ], - "label": { - "en": [ - "UCLA Library Digital Collections", - ], - }, - "language": [ - "en", - ], - "type": "Text", - }, - "https://id.loc.gov/authorities/names/n79055331.madsxml.xml": { - "format": "application/xml", - "id": "https://id.loc.gov/authorities/names/n79055331.madsxml.xml", - "iiif-parser:hasPart": [ - { - "id": "https://id.loc.gov/authorities/names/n79055331.madsxml.xml", - "iiif-parser:partOf": "https://id.loc.gov/authorities/n79055331", - "type": "Dataset", - }, - ], - "label": { - "en": [ - "US Library of Congress data about the UCLA Library", - ], - }, - "profile": "http://www.loc.gov/mads/v2", - "type": "Dataset", - }, - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 5312, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", "type": "Image", }, ], "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 4520, + "width": 4032, }, - "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/full/0/default.png": { - "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/full/0/default.png", + "vault://605b9d93": { + "format": "text/plain", + "id": "vault://605b9d93", "iiif-parser:hasPart": [ { - "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/full/0/default.png", - "iiif-parser:partOf": "https://id.loc.gov/authorities/n79055331", - "type": "Image", - }, - ], - "service": [ - { - "height": 502, - "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2", - "profile": "level2", - "sizes": [ - { - "height": 126, - "width": 300, - }, - { - "height": 251, - "width": 600, - }, - { - "height": 502, - "width": 1200, - }, - ], - "type": "ImageService3", - "width": 1200, + "id": "vault://605b9d93", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", + "type": "TextualBody", }, ], - "type": "Image", + "language": "de", + "type": "TextualBody", + "value": "Gänseliesel-Brunnen", }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", "type": "Canvas", }, ], "label": { "en": [ - "Playbill Cover", + "Picture of Göttingen taken during the 2019 IIIF Conference", ], }, "metadata": [], "navDate": null, "partOf": [], "placeholderCanvas": null, - "provider": [ - { - "id": "https://id.loc.gov/authorities/n79055331", - "type": "Agent", - }, - ], + "provider": [], "rendering": [], "requiredStatement": null, "rights": null, @@ -26112,11 +29550,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0234-provider https://iiif.io/api/ "services": [], "start": null, "structures": [], - "summary": { - "en": [ - "Cover of 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.", - ], - }, + "summary": null, "thumbnail": [], "type": "Manifest", "viewingDirection": "left-to-right", @@ -26125,175 +29559,123 @@ exports[`Cookbook > Testing normalize %p (%p) 0234-provider https://iiif.io/api/ "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full": { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen": { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://digital.library.ucla.edu/": "ContentResource", - "https://id.loc.gov/authorities/n79055331": "Agent", - "https://id.loc.gov/authorities/names/n79055331.madsxml.xml": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0": "Canvas", - "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg": "ContentResource", - "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/full/0/default.png": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg": "Annotation", + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", + "vault://605b9d93": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0234-provider https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0261-non-rectangular-commenting https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", "items": [ { - "height": 5312, - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", - "items": [ + "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/page/p0/1", + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", "items": [ { "body": { - "format": "image/jpeg", - "height": 5312, - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4f92cceb12dd53b52433425ce44308c7-ucla_bib1987273_no001_rs_001_full", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 4520, + "format": "text/plain", + "language": "de", + "type": "TextualBody", + "value": "Gänseliesel-Brunnen", + }, + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", + "motivation": "tagging", + "target": { + "selector": { + "type": "SvgSelector", + "value": "", + }, + "source": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "type": "SpecificResource", }, - "id": "https://iiif.io/api/cookbook/recipe/0234-provider/annotation/p0000-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0234-provider/canvas/p0", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], - "label": { - "en": [ - "front cover with color bar", - ], - }, - "type": "Canvas", - "width": 4520, - }, - ], - "label": { - "en": [ - "Playbill Cover", - ], - }, - "provider": [ - { - "homepage": [ - { - "format": "text/html", - "id": "https://digital.library.ucla.edu/", - "label": { - "en": [ - "UCLA Library Digital Collections", - ], - }, - "language": [ - "en", - ], - "type": "Text", - }, - ], - "id": "https://id.loc.gov/authorities/n79055331", - "label": { - "en": [ - "UCLA Library", - ], - }, - "logo": [ + "height": 3024, + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "items": [ { - "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/full/0/default.png", - "service": [ + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", + "items": [ { - "height": 502, - "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2", - "profile": "level2", - "sizes": [ - { - "height": 126, - "width": 300, - }, - { - "height": 251, - "width": 600, - }, - { - "height": 502, - "width": 1200, - }, - ], - "type": "ImageService3", - "width": 1200, + "body": { + "format": "image/jpeg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 4032, + }, + "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "type": "Annotation", }, ], - "type": "Image", - }, - ], - "seeAlso": [ - { - "format": "application/xml", - "id": "https://id.loc.gov/authorities/names/n79055331.madsxml.xml", - "label": { - "en": [ - "US Library of Congress data about the UCLA Library", - ], - }, - "profile": "http://www.loc.gov/mads/v2", - "type": "Dataset", + "type": "AnnotationPage", }, ], - "type": "Agent", + "type": "Canvas", + "width": 4032, }, ], - "summary": { + "label": { "en": [ - "Cover of 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.", + "Picture of Göttingen taken during the 2019 IIIF Conference", ], }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1": { + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", "type": "Annotation", }, ], @@ -26302,34 +29684,34 @@ exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https:// ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2": { + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg", + "id": "vault://929e073a", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", "type": "Annotation", }, ], "motivation": [ - "painting", + "commenting", ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", "type": "Canvas", }, "type": "SpecificResource", @@ -26339,20 +29721,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https:// }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1": { + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", "type": "Annotation", }, ], @@ -26368,20 +29750,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https:// "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2": { + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", "type": "Annotation", }, ], @@ -26399,112 +29781,28 @@ exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https:// }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1": { + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1": { "accompanyingCanvas": null, - "annotations": [], - "behavior": [], - "duration": 0, - "height": 3000, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", - "items": [ + "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", "type": "AnnotationPage", }, ], - "label": { - "en": [ - "Front of Bronze", - ], - }, - "metadata": [], - "navDate": null, - "navPlace": { - "features": [ - { - "geometry": { - "coordinates": [ - -118.4745559, - 34.0776376, - ], - "type": "Point", - }, - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature/1", - "properties": { - "label": { - "en": [ - "Current Location of the Laocoön Bronze", - ], - "it": [ - "Ubicazione attuale del Bronzo Laocoonte e i suoi figli", - ], - }, - }, - "type": "Feature", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature-collection/1", - "type": "FeatureCollection", - }, - "partOf": [], - "placeholderCanvas": null, - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "Canvas", - "width": 2315, - }, - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2": { - "accompanyingCanvas": null, - "annotations": [], "behavior": [], "duration": 0, - "height": 3259, + "height": 3024, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", "type": "AnnotationPage", }, ], - "label": { - "en": [ - "Painting", - ], - }, + "label": null, "metadata": [], "navDate": null, - "navPlace": { - "features": [ - { - "geometry": { - "coordinates": [ - -77.0199025, - 38.8920717, - ], - "type": "Point", - }, - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature/2", - "properties": { - "label": { - "en": [ - "Current Location of Painting", - ], - }, - }, - "type": "Feature", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature-collection/2", - "type": "FeatureCollection", - }, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -26516,85 +29814,71 @@ exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https:// "summary": null, "thumbnail": [], "type": "Canvas", - "width": 4096, + "width": 4032, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 3000, - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", "type": "Image", }, ], "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 2315, + "width": 4032, }, - "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 3259, - "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg", + "vault://929e073a": { + "format": "text/plain", + "id": "vault://929e073a", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1", - "profile": "level1", - "type": "ImageService3", + "id": "vault://929e073a", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", + "type": "TextualBody", }, ], - "type": "Image", - "width": 4096, + "language": "de", + "type": "TextualBody", + "value": "Göttinger Marktplatz mit Gänseliesel Brunnen", }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json": { - "@context": [ - "http://iiif.io/api/extension/navplace/context.json", - "http://iiif.io/api/presentation/3/context.json", - ], + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", "type": "Canvas", }, ], "label": { "en": [ - "Laocöon, geolocated sculpture and painting.", + "Picture of Göttingen taken during the 2019 IIIF Conference", ], }, "metadata": [], @@ -26619,238 +29903,116 @@ exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https:// "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon": { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1": { - "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen": { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2": "Annotation", - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2": "Canvas", - "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json": "Manifest", - "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json": "Manifest", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", + "vault://929e073a": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0240-navPlace-on-canvases https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json 2`] = ` { - "@context": [ - "http://iiif.io/api/extension/navplace/context.json", - "http://iiif.io/api/presentation/3/context.json", - ], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json", + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", "items": [ { - "height": 3000, - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", - "items": [ + "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/1", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", "items": [ { "body": { - "format": "image/jpeg", - "height": 3000, - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 2315, + "format": "text/plain", + "language": "de", + "type": "TextualBody", + "value": "Göttinger Marktplatz mit Gänseliesel Brunnen", }, - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/1", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", + "motivation": "commenting", + "target": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], - "label": { - "en": [ - "Front of Bronze", - ], - }, - "navPlace": { - "features": [ - { - "geometry": { - "coordinates": [ - -118.4745559, - 34.0776376, - ], - "type": "Point", - }, - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature/1", - "properties": { - "label": { - "en": [ - "Current Location of the Laocoön Bronze", - ], - "it": [ - "Ubicazione attuale del Bronzo Laocoonte e i suoi figli", - ], - }, - }, - "type": "Feature", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature-collection/1", - "type": "FeatureCollection", - }, - "type": "Canvas", - "width": 2315, - }, - { - "height": 3259, - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", + "height": 3024, + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno-page/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", "items": [ { "body": { "format": "image/jpeg", - "height": 3259, - "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1/full/max/0/default.jpg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 4096, + "width": 4032, }, - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/anno/2", + "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/canvas/2", + "target": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], - "label": { - "en": [ - "Painting", - ], - }, - "navPlace": { - "features": [ - { - "geometry": { - "coordinates": [ - -77.0199025, - 38.8920717, - ], - "type": "Point", - }, - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature/2", - "properties": { - "label": { - "en": [ - "Current Location of Painting", - ], - }, - }, - "type": "Feature", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/feature-collection/2", - "type": "FeatureCollection", - }, "type": "Canvas", - "width": 4096, + "width": 4032, }, ], "label": { "en": [ - "Laocöon, geolocated sculpture and painting.", + "Picture of Göttingen taken during the 2019 IIIF Conference", ], }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annotations https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata": { - "body": [ - { - "source": { - "id": "http://www.wikidata.org/entity/Q18624915", - "type": "ContentResource", - }, - "type": "SpecificResource", - }, - { - "id": "vault://7dc03413", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", - "type": "Annotation", - }, - ], - "motivation": [ - "tagging", - ], - "target": { - "selector": { - "type": "FragmentSelector", - "value": "xywh=749,1054,338,460", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image": { + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1": { "body": [ { "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", "type": "Annotation", }, ], @@ -26859,7 +30021,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", "type": "Canvas", }, "type": "SpecificResource", @@ -26869,23 +30031,19 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1": { + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", "type": "AnnotationPage", }, ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", - "type": "Annotation", - }, - ], + "iiif-parser:isExternal": true, + "items": [], "label": null, "metadata": [], "provider": [], @@ -26898,20 +30056,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1": { + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", "type": "Annotation", }, ], @@ -26929,11 +30087,11 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1": { + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1": { "accompanyingCanvas": null, "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", "type": "AnnotationPage", }, ], @@ -26941,10 +30099,10 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt "duration": 0, "height": 3024, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", "type": "AnnotationPage", }, ], @@ -26967,10 +30125,6 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt }, "Collection": {}, "ContentResource": { - "http://www.wikidata.org/entity/Q18624915": { - "id": "http://www.wikidata.org/entity/Q18624915", - "type": "ContentResource", - }, "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { "format": "image/jpeg", "height": 3024, @@ -26978,7 +30132,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt "iiif-parser:hasPart": [ { "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", "type": "Image", }, ], @@ -26992,39 +30146,25 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt "type": "Image", "width": 4032, }, - "vault://7dc03413": { - "format": "text/plain", - "id": "vault://7dc03413", - "iiif-parser:hasPart": [ - { - "id": "vault://7dc03413", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", - "type": "TextualBody", - }, - ], - "language": "de", - "type": "TextualBody", - "value": "Gänseliesel-Brunnen", - }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", "type": "Canvas", }, ], @@ -27063,60 +30203,37 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt }, }, "mapping": { - "http://www.wikidata.org/entity/Q18624915": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata": "Annotation", - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json": "Manifest", "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", - "vault://7dc03413": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annotations https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", "items": [ { "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p2/1", - "items": [ - { - "body": [ - { - "source": "http://www.wikidata.org/entity/Q18624915", - "type": "SpecificResource", - }, - { - "format": "text/plain", - "language": "de", - "type": "TextualBody", - "value": "Gänseliesel-Brunnen", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/anno/p0002-wikidata", - "motivation": "tagging", - "target": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1#xywh=749,1054,338,460", - "type": "Annotation", - }, - ], + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", "type": "AnnotationPage", }, ], "height": 3024, - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", "items": [ { "body": { @@ -27133,9 +30250,9 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt "type": "Image", "width": 4032, }, - "id": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0258-tagging-external-resource/canvas/p1", + "target": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", "type": "Annotation", }, ], @@ -27155,23 +30272,146 @@ exports[`Cookbook > Testing normalize %p (%p) 0258-tagging-external-resource htt } `; -exports[`Cookbook > Testing normalize %p (%p) 0261-non-rectangular-commenting https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annotations-annotationpage https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image": { + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "id": "vault://929e073a", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "type": "Annotation", + }, + ], + "motivation": [ + "commenting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + }, + "Canvas": {}, + "Collection": {}, + "ContentResource": { + "vault://929e073a": { + "format": "text/plain", + "id": "vault://929e073a", + "iiif-parser:hasPart": [ + { + "id": "vault://929e073a", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", + "type": "TextualBody", + }, + ], + "language": "de", + "type": "TextualBody", + "value": "Göttinger Marktplatz mit Gänseliesel Brunnen", + }, + }, + "Manifest": {}, + "Range": {}, + "Selector": {}, + "Service": {}, + }, + "mapping": { + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1": "Annotation", + "vault://929e073a": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "type": "AnnotationPage", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annotations-annotationpage https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "items": [ + { + "body": { + "format": "text/plain", + "language": "de", + "type": "TextualBody", + "value": "Göttinger Marktplatz mit Gänseliesel Brunnen", + }, + "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", + "motivation": "commenting", + "target": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", "type": "Annotation", }, ], @@ -27180,58 +30420,113 @@ exports[`Cookbook > Testing normalize %p (%p) 0261-non-rectangular-commenting ht ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg": { + "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image": { "body": [ { - "id": "vault://605b9d93", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", "type": "Annotation", }, ], "motivation": [ - "tagging", + "painting", ], "target": { - "selector": { - "type": "SvgSelector", - "value": "", + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", + "type": "Annotation", }, - "source": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", - "type": "SpecificResource", - }, - "type": "Annotation", + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", }, - }, - "AnnotationCollection": {}, - "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1": { + "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", "type": "Annotation", }, ], @@ -27247,20 +30542,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0261-non-rectangular-commenting ht "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1": { + "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", "type": "Annotation", }, ], @@ -27278,26 +30573,101 @@ exports[`Cookbook > Testing normalize %p (%p) 0261-non-rectangular-commenting ht }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1": { + "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1": { "accompanyingCanvas": null, - "annotations": [ + "annotations": [], + "behavior": [], + "duration": 0, + "height": 2504, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", "type": "AnnotationPage", }, ], + "label": { + "en": [ + "f. 1r", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 1768, + }, + "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 2504, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2", + "items": [], + "label": { + "en": [ + "f. 1v — MISSING", + ], + }, + "metadata": [ + { + "label": { + "en": [ + "Description", + ], + }, + "value": { + "en": [ + "Image unavailable or does not exist", + ], + }, + }, + ], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 1768, + }, + "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3": { + "accompanyingCanvas": null, + "annotations": [], "behavior": [], "duration": 0, - "height": 3024, + "height": 2456, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", "type": "AnnotationPage", }, ], - "label": null, + "label": { + "en": [ + "f. 2r", + ], + }, "metadata": [], "navDate": null, "partOf": [], @@ -27311,71 +30681,145 @@ exports[`Cookbook > Testing normalize %p (%p) 0261-non-rectangular-commenting ht "summary": null, "thumbnail": [], "type": "Canvas", - "width": 4032, + "width": 1792, + }, + "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4": { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "duration": 0, + "height": 2440, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "f. 2v", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 1760, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 3024, - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "height": 2504, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", "type": "Image", }, ], "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 4032, + "width": 1768, }, - "vault://605b9d93": { - "format": "text/plain", - "id": "vault://605b9d93", + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 2456, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "vault://605b9d93", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", - "type": "TextualBody", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", + "type": "Image", }, ], - "language": "de", - "type": "TextualBody", - "value": "Gänseliesel-Brunnen", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1792, + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 2440, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1760, }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", "type": "Canvas", }, ], "label": { "en": [ - "Picture of Göttingen taken during the 2019 IIIF Conference", + "Ethiopic Ms 10", ], }, "metadata": [], @@ -27400,123 +30844,229 @@ exports[`Cookbook > Testing normalize %p (%p) 0261-non-rectangular-commenting ht "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen": { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg": "Annotation", - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", - "vault://605b9d93": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2": "Canvas", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3": "Canvas", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4": "Canvas", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0261-non-rectangular-commenting https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", "items": [ { - "annotations": [ + "height": 2504, + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", "items": [ { "body": { - "format": "text/plain", - "language": "de", - "type": "TextualBody", - "value": "Gänseliesel-Brunnen", + "format": "image/jpeg", + "height": 2504, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1768, }, - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0002-svg", - "motivation": "tagging", - "target": { - "selector": { - "type": "SvgSelector", - "value": "", - }, - "source": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", - "type": "SpecificResource", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "en": [ + "f. 1r", + ], + }, + "type": "Canvas", + "width": 1768, + }, + { + "height": 2504, + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2", + "items": [], + "label": { + "en": [ + "f. 1v — MISSING", + ], + }, + "metadata": [ + { + "label": { + "en": [ + "Description", + ], + }, + "value": { + "en": [ + "Image unavailable or does not exist", + ], + }, + }, + ], + "type": "Canvas", + "width": 1768, + }, + { + "height": 2456, + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 2456, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 1792, }, + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], - "height": 3024, - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "label": { + "en": [ + "f. 2r", + ], + }, + "type": "Canvas", + "width": 1792, + }, + { + "height": 2440, + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", "items": [ { "body": { "format": "image/jpeg", - "height": 3024, - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "height": 2440, + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 4032, + "width": 1760, }, - "id": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0261-non-rectangular-commenting/canvas/p1", + "target": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], + "label": { + "en": [ + "f. 2v", + ], + }, "type": "Canvas", - "width": 4032, + "width": 1760, }, ], "label": { "en": [ - "Picture of Göttingen taken during the 2019 IIIF Conference", + "Ethiopic Ms 10", ], }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0299-region https://iiif.io/api/cookbook/recipe/0299-region/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1": { + "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "type": "ContentResource", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/body/b1", + "selector": { + "region": "1768,2423,1768,2080", + "type": "ImageApiSelector", + }, + "source": { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", + "type": "ContentResource", + }, + "type": "SpecificResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", "type": "Annotation", }, ], @@ -27525,34 +31075,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https: ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1": { - "body": [ - { - "id": "vault://929e073a", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", - "type": "Annotation", - }, - ], - "motivation": [ - "commenting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", @@ -27562,49 +31085,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https: }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", - "type": "AnnotationPage", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", - "type": "Annotation", - }, - ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", - }, - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2": { + "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image", "type": "Annotation", }, ], @@ -27622,22 +31116,17 @@ exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https: }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1": { + "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1": { "accompanyingCanvas": null, - "annotations": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", - "type": "AnnotationPage", - }, - ], + "annotations": [], "behavior": [], "duration": 0, - "height": 3024, + "height": 2080, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", "type": "AnnotationPage", }, ], @@ -27655,71 +31144,50 @@ exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https: "summary": null, "thumbnail": [], "type": "Canvas", - "width": 4032, + "width": 1768, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 3024, - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", - "type": "Image", - }, - ], + "height": 4999, + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 4032, - }, - "vault://929e073a": { - "format": "text/plain", - "id": "vault://929e073a", - "iiif-parser:hasPart": [ - { - "id": "vault://929e073a", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", - "type": "TextualBody", - }, - ], - "language": "de", - "type": "TextualBody", - "value": "Göttinger Marktplatz mit Gänseliesel Brunnen", + "width": 3536, }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", "type": "Canvas", }, ], "label": { "en": [ - "Picture of Göttingen taken during the 2019 IIIF Conference", + "Berliner Tageblatt article, 'Ein neuer Sicherungsplan?'", ], }, "metadata": [], @@ -27744,80 +31212,65 @@ exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https: "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen": { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2": { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json": "Manifest", - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", - "vault://929e073a": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0299-region https://iiif.io/api/cookbook/recipe/0299-region/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", "items": [ { - "annotations": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2", - "items": [ - { - "body": { - "format": "text/plain", - "language": "de", - "type": "TextualBody", - "value": "Göttinger Marktplatz mit Gänseliesel Brunnen", - }, - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1", - "motivation": "commenting", - "target": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "height": 3024, - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", + "height": 2080, + "id": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", "items": [ { "body": { - "format": "image/jpeg", - "height": 3024, - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 4032, + "id": "https://iiif.io/api/cookbook/recipe/0299-region/body/b1", + "selector": { + "region": "1768,2423,1768,2080", + "type": "ImageApiSelector", + }, + "source": { + "format": "image/jpeg", + "height": 4999, + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 3536, + }, + "type": "SpecificResource", }, - "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1", + "target": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", "type": "Annotation", }, ], @@ -27825,35 +31278,35 @@ exports[`Cookbook > Testing normalize %p (%p) 0266-full-canvas-annotation https: }, ], "type": "Canvas", - "width": 4032, + "width": 1768, }, ], "label": { "en": [ - "Picture of Göttingen taken during the 2019 IIIF Conference", + "Berliner Tageblatt article, 'Ein neuer Sicherungsplan?'", ], }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annotations https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manifests https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1": { + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1": { "body": [ { "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", "type": "Annotation", }, ], @@ -27862,7 +31315,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", "type": "Canvas", }, "type": "SpecificResource", @@ -27872,14 +31325,14 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json": { + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", "type": "AnnotationPage", }, ], @@ -27897,20 +31350,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1": { + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", "type": "Annotation", }, ], @@ -27928,11 +31381,11 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1": { + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1": { "accompanyingCanvas": null, "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", "type": "AnnotationPage", }, ], @@ -27940,10 +31393,10 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota "duration": 0, "height": 3024, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", "type": "AnnotationPage", }, ], @@ -27973,7 +31426,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota "iiif-parser:hasPart": [ { "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", "type": "Image", }, ], @@ -27989,23 +31442,23 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", "type": "Canvas", }, ], @@ -28044,37 +31497,37 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json": "Manifest", "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annotations https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manifests https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", "items": [ { "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", "type": "AnnotationPage", }, ], "height": 3024, - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", "items": [ { "body": { @@ -28091,9 +31544,9 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota "type": "Image", "width": 4032, }, - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "target": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", "type": "Annotation", }, ], @@ -28113,23 +31566,23 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota } `; -exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annotations-annotationpage https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manifests-annotationpage https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1": { + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1": { "body": [ { - "id": "vault://929e073a", + "id": "vault://2876d220", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", "type": "Annotation", }, ], @@ -28137,8 +31590,19 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota "commenting", ], "target": { + "selector": { + "conformsTo": "http://www.w3.org/TR/media-frags/", + "type": "FragmentSelector", + "value": "xywh=300,800,1200,1200", + }, "source": { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", + "type": "Manifest", + }, + ], "type": "Canvas", }, "type": "SpecificResource", @@ -28148,21 +31612,21 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json": { + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", "type": "Annotation", }, ], @@ -28182,19 +31646,19 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota "Canvas": {}, "Collection": {}, "ContentResource": { - "vault://929e073a": { + "vault://2876d220": { "format": "text/plain", - "id": "vault://929e073a", + "id": "vault://2876d220", "iiif-parser:hasPart": [ { - "id": "vault://929e073a", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", + "id": "vault://2876d220", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", "type": "TextualBody", }, ], "language": "de", "type": "TextualBody", - "value": "Göttinger Marktplatz mit Gänseliesel Brunnen", + "value": "Der Gänseliesel-Brunnen", }, }, "Manifest": {}, @@ -28203,32 +31667,49 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota "Service": {}, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1": "Annotation", - "vault://929e073a": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1": "Annotation", + "vault://2876d220": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", "type": "AnnotationPage", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annotations-annotationpage https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manifests-annotationpage https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", "items": [ { "body": { "format": "text/plain", "language": "de", "type": "TextualBody", - "value": "Göttinger Marktplatz mit Gänseliesel Brunnen", + "value": "Der Gänseliesel-Brunnen", }, - "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1/annopage-2/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", "motivation": "commenting", - "target": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/canvas-1", + "target": { + "selector": { + "conformsTo": "http://www.w3.org/TR/media-frags/", + "type": "FragmentSelector", + "value": "xywh=300,800,1200,1200", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, "type": "Annotation", }, ], @@ -28236,23 +31717,23 @@ exports[`Cookbook > Testing normalize %p (%p) 0269-embedded-or-referenced-annota } `; -exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0309-annotation-collection https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image": { + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p1": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap1", "type": "Annotation", }, ], @@ -28261,25 +31742,25 @@ exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image": { + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p2": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p2", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap2", "type": "Annotation", }, ], @@ -28288,153 +31769,800 @@ exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image": { - "body": [ + }, + "AnnotationCollection": {}, + "AnnotationPage": { + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1", + "type": "AnnotationPage", + }, + ], + "iiif-parser:isExternal": true, + "items": [], + "label": null, + "metadata": [], + "next": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "partOf": [ + { + "first": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_coll.json", + "label": { + "en": [ + "Newspaper layout markup", + ], + }, + "last": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "total": 8, + "type": "AnnotationCollection", + }, + ], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2", + "type": "AnnotationPage", + }, + ], + "iiif-parser:isExternal": true, + "items": [], + "label": null, + "metadata": [], + "partOf": [ + { + "first": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_coll.json", + "label": { + "en": [ + "Newspaper layout markup", + ], + }, + "last": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "total": 8, + "type": "AnnotationCollection", + }, + ], + "prev": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p1", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap2": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap2", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p2", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + }, + "Canvas": { + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1": { + "accompanyingCanvas": null, + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "type": "AnnotationPage", + }, + ], + "behavior": [], + "duration": 0, + "height": 5000, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap1", + "type": "AnnotationPage", + }, + ], + "label": { + "none": [ + "p. 1", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 3602, + }, + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2": { + "accompanyingCanvas": null, + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "type": "AnnotationPage", + }, + ], + "behavior": [], + "duration": 0, + "height": 5000, + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap2", + "type": "AnnotationPage", + }, + ], + "label": { + "none": [ + "p. 2", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "Canvas", + "width": 3602, + }, + }, + "Collection": {}, + "ContentResource": { + "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1/full/max/0/default.jpg": { + "format": "image/jpeg", + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1/full/max/0/default.jpg", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p1", + "type": "Image", + }, + ], + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + }, + "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg": { + "format": "image/jpeg", + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", - "type": "ContentResource", + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p2", + "type": "Image", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", - "iiif-parser:hasPart": [ + "service": [ { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", - "type": "Annotation", + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", + "profile": "level1", + "type": "ImageService3", }, ], - "motivation": [ - "painting", - ], - "target": { - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", + "type": "Image", }, }, - "AnnotationCollection": {}, - "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1": { + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json": { + "@context": [ + "http://iiif.io/api/presentation/3/context.json", + ], + "accompanyingCanvas": null, + "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json", + "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1", + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2", + "type": "Canvas", }, ], - "label": null, + "label": { + "de": [ + "Berliner Tageblatt - 1925-02-16", + ], + }, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], - "requiredStatement": null, - "rights": null, + "requiredStatement": { + "label": { + "en": [ + "Attribution", + ], + }, + "value": { + "en": [ + "

Berliner Tageblatt - Staatsbibliothek zu Berlin - Preußischer Kulturbesitz. Public Domain Mark - http://creativecommons.org/publicdomain/mark/1.0/

", + ], + }, + }, + "rights": "http://creativecommons.org/publicdomain/mark/1.0/", "seeAlso": [], "service": [], + "services": [], + "start": null, + "structures": [], "summary": null, "thumbnail": [], - "type": "AnnotationPage", + "type": "Manifest", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1": { + }, + "Range": {}, + "Selector": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1": { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2": { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", + "profile": "level1", + "type": "ImageService3", + }, + }, + }, + "mapping": { + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p2": "Annotation", + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap2": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2": "Canvas", + "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json": "Manifest", + "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg": "ContentResource", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json", + "type": "Manifest", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0309-annotation-collection https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json 2`] = ` +{ + "@context": [ + "http://iiif.io/api/presentation/3/context.json", + ], + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json", + "items": [ + { + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "next": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "partOf": [ + { + "first": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_coll.json", + "label": { + "en": [ + "Newspaper layout markup", + ], + }, + "last": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "total": 8, + "type": "AnnotationCollection", + }, + ], + "type": "AnnotationPage", + }, + ], + "height": 5000, + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap1", + "items": [ + { + "body": { + "format": "image/jpeg", + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + }, + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p1", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "none": [ + "p. 1", + ], + }, + "type": "Canvas", + "width": 3602, + }, + { + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "partOf": [ + { + "first": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_coll.json", + "label": { + "en": [ + "Newspaper layout markup", + ], + }, + "last": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "total": 8, + "type": "AnnotationCollection", + }, + ], + "prev": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "type": "AnnotationPage", + }, + ], + "height": 5000, + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap2", + "items": [ + { + "body": { + "format": "image/jpeg", + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + }, + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p2", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "label": { + "none": [ + "p. 2", + ], + }, + "type": "Canvas", + "width": 3602, + }, + ], + "label": { + "de": [ + "Berliner Tageblatt - 1925-02-16", + ], + }, + "requiredStatement": { + "label": { + "en": [ + "Attribution", + ], + }, + "value": { + "en": [ + "

Berliner Tageblatt - Staatsbibliothek zu Berlin - Preußischer Kulturbesitz. Public Domain Mark - http://creativecommons.org/publicdomain/mark/1.0/

", + ], + }, + }, + "rights": "http://creativecommons.org/publicdomain/mark/1.0/", + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0318-navPlace-navDate-collection https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": {}, + "AnnotationCollection": {}, + "AnnotationPage": {}, + "Canvas": {}, + "Collection": { + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json": { + "@context": [ + "http://iiif.io/api/extension/navplace/context.json", + "http://iiif.io/api/presentation/3/context.json", + ], + "accompanyingCanvas": null, + "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json", + "type": "Collection", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-1.json", + "iiif-parser:isExternal": true, + "label": { + "en": [ + "Castel Sant'Angelo, Rome", + ], + }, + "navDate": "1776-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.4663, + 41.9031, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/1", + "properties": { + "label": { + "en": [ + "Castel Sant'Angelo, Rome", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/1", + "type": "FeatureCollection", + }, + "type": "Manifest", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-2.json", + "iiif-parser:isExternal": true, + "label": { + "en": [ + "The Colosseum", + ], + }, + "navDate": "1776-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.492222, + 41.890278, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/2", + "properties": { + "label": { + "en": [ + "The Colosseum", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/2", + "type": "FeatureCollection", + }, + "type": "Manifest", }, - ], - "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-3.json", + "iiif-parser:isExternal": true, + "label": { + "en": [ + "The Arch of Titus from the Forum, Rome, ca. 1725", + ], + }, + "navDate": "1725-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.488585, + 41.890717, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/3", + "properties": { + "label": { + "en": [ + "The Arch of Titus from the Forum, Rome, ca. 1725", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/3", + "type": "FeatureCollection", + }, + "type": "Manifest", }, - ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", - }, - "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", - "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-4.json", + "iiif-parser:isExternal": true, + "label": { + "en": [ + "The Temple of Vesta, Rome, 1849", + ], + }, + "navDate": "1849-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.4862, + 41.8917, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/4", + "properties": { + "label": { + "en": [ + "The Temple of Vesta, Rome, 1849", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/4", + "type": "FeatureCollection", + }, + "type": "Manifest", }, - ], - "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", - "type": "Annotation", + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-5.json", + "iiif-parser:isExternal": true, + "label": { + "en": [ + "A View of Trajan's Forum, Rome, 1821", + ], + }, + "navDate": "1821-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.485869, + 41.895419, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/5", + "properties": { + "label": { + "en": [ + "A View of Trajan's Forum, Rome, 1821", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/5", + "type": "FeatureCollection", + }, + "type": "Manifest", }, ], - "label": null, + "label": { + "en": [ + "NavPlace and NavDate Collection", + ], + }, "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, "provider": [], "rendering": [], - "requiredStatement": null, + "requiredStatement": { + "label": { + "en": [ + "Attribution", + ], + }, + "value": { + "en": [ + "Objects from the Yale Center for British Art", + ], + }, + }, "rights": null, "seeAlso": [], "service": [], - "summary": null, + "services": [], + "summary": { + "en": [ + "A collection of items related to Rome.", + ], + }, "thumbnail": [], - "type": "AnnotationPage", + "type": "Collection", + "viewingDirection": "left-to-right", }, }, - "Canvas": { - "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1": { + "ContentResource": {}, + "Manifest": { + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-1.json": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 2504, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", - "type": "AnnotationPage", - }, - ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-1.json", + "iiif-parser:isExternal": true, + "items": [], "label": { "en": [ - "f. 1r", + "Castel Sant'Angelo, Rome", ], }, "metadata": [], - "navDate": null, + "navDate": "1776-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.4663, + 41.9031, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/1", + "properties": { + "label": { + "en": [ + "Castel Sant'Angelo, Rome", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/1", + "type": "FeatureCollection", + }, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -28443,40 +32571,53 @@ exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io "rights": null, "seeAlso": [], "service": [], + "services": [], + "start": null, + "structures": [], "summary": null, "thumbnail": [], - "type": "Canvas", - "width": 1768, + "type": "Manifest", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2": { + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-2.json": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 2504, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2", + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-2.json", + "iiif-parser:isExternal": true, "items": [], "label": { "en": [ - "f. 1v — MISSING", + "The Colosseum", ], }, - "metadata": [ - { - "label": { - "en": [ - "Description", - ], - }, - "value": { - "en": [ - "Image unavailable or does not exist", - ], + "metadata": [], + "navDate": "1776-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.492222, + 41.890278, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/2", + "properties": { + "label": { + "en": [ + "The Colosseum", + ], + }, + }, + "type": "Feature", }, - }, - ], - "navDate": null, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/2", + "type": "FeatureCollection", + }, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -28485,32 +32626,53 @@ exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io "rights": null, "seeAlso": [], "service": [], + "services": [], + "start": null, + "structures": [], "summary": null, "thumbnail": [], - "type": "Canvas", - "width": 1768, + "type": "Manifest", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3": { + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-3.json": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 2456, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", - "type": "AnnotationPage", - }, - ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-3.json", + "iiif-parser:isExternal": true, + "items": [], "label": { "en": [ - "f. 2r", + "The Arch of Titus from the Forum, Rome, ca. 1725", ], }, "metadata": [], - "navDate": null, + "navDate": "1725-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.488585, + 41.890717, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/3", + "properties": { + "label": { + "en": [ + "The Arch of Titus from the Forum, Rome, ca. 1725", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/3", + "type": "FeatureCollection", + }, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -28519,32 +32681,53 @@ exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io "rights": null, "seeAlso": [], "service": [], + "services": [], + "start": null, + "structures": [], "summary": null, "thumbnail": [], - "type": "Canvas", - "width": 1792, + "type": "Manifest", + "viewingDirection": "left-to-right", }, - "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4": { + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-4.json": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 0, - "height": 2440, - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", - "type": "AnnotationPage", - }, - ], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-4.json", + "iiif-parser:isExternal": true, + "items": [], "label": { "en": [ - "f. 2v", + "The Temple of Vesta, Rome, 1849", ], }, "metadata": [], - "navDate": null, + "navDate": "1849-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.4862, + 41.8917, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/4", + "properties": { + "label": { + "en": [ + "The Temple of Vesta, Rome, 1849", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/4", + "type": "FeatureCollection", + }, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -28553,118 +32736,53 @@ exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io "rights": null, "seeAlso": [], "service": [], + "services": [], + "start": null, + "structures": [], "summary": null, "thumbnail": [], - "type": "Canvas", - "width": 1760, - }, - }, - "Collection": {}, - "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 2504, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 1768, - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 2456, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 1792, - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 2440, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", - "type": "Image", - }, - ], - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 1760, + "type": "Manifest", + "viewingDirection": "left-to-right", }, - }, - "Manifest": { - "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-5.json": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", - "type": "Manifest", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", - "type": "Canvas", - }, - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", - "type": "Canvas", - }, - ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-5.json", + "iiif-parser:isExternal": true, + "items": [], "label": { "en": [ - "Ethiopic Ms 10", + "A View of Trajan's Forum, Rome, 1821", ], }, "metadata": [], - "navDate": null, + "navDate": "1821-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.485869, + 41.895419, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/5", + "properties": { + "label": { + "en": [ + "A View of Trajan's Forum, Rome, 1821", + ], + }, + }, + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/5", + "type": "FeatureCollection", + }, "partOf": [], "placeholderCanvas": null, "provider": [], @@ -28684,231 +32802,245 @@ exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io }, "Range": {}, "Selector": {}, - "Service": { - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master": { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master": { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master": { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", - "profile": "level1", - "type": "ImageService3", - }, - }, + "Service": {}, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2": "Canvas", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3": "Canvas", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4": "Canvas", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json": "Collection", + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-1.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-2.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-3.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-4.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-5.json": "Manifest", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", - "type": "Manifest", + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json", + "type": "Collection", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0283-missing-image https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0318-navPlace-navDate-collection https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json 2`] = ` { - "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/manifest.json", + "@context": [ + "http://iiif.io/api/extension/navplace/context.json", + "http://iiif.io/api/presentation/3/context.json", + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json", "items": [ { - "height": 2504, - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p1/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 2504, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", - "profile": "level1", - "type": "ImageService3", - }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-1.json", + "label": { + "en": [ + "Castel Sant'Angelo, Rome", + ], + }, + "navDate": "1776-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.4663, + 41.9031, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/1", + "properties": { + "label": { + "en": [ + "Castel Sant'Angelo, Rome", ], - "type": "Image", - "width": 1768, }, - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0001-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p1", - "type": "Annotation", }, - ], - "type": "AnnotationPage", - }, - ], + "type": "Feature", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/1", + "type": "FeatureCollection", + }, + "type": "Manifest", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-2.json", "label": { "en": [ - "f. 1r", + "The Colosseum", + ], + }, + "navDate": "1776-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.492222, + 41.890278, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/2", + "properties": { + "label": { + "en": [ + "The Colosseum", + ], + }, + }, + "type": "Feature", + }, ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/2", + "type": "FeatureCollection", }, - "type": "Canvas", - "width": 1768, + "type": "Manifest", }, { - "height": 2504, - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p2", - "items": [], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-3.json", "label": { "en": [ - "f. 1v — MISSING", + "The Arch of Titus from the Forum, Rome, ca. 1725", ], }, - "metadata": [ - { - "label": { - "en": [ - "Description", - ], - }, - "value": { - "en": [ - "Image unavailable or does not exist", - ], + "navDate": "1725-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.488585, + 41.890717, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/3", + "properties": { + "label": { + "en": [ + "The Arch of Titus from the Forum, Rome, ca. 1725", + ], + }, + }, + "type": "Feature", }, - }, - ], - "type": "Canvas", - "width": 1768, + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/3", + "type": "FeatureCollection", + }, + "type": "Manifest", }, { - "height": 2456, - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p3/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 2456, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", - "profile": "level1", - "type": "ImageService3", - }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-4.json", + "label": { + "en": [ + "The Temple of Vesta, Rome, 1849", + ], + }, + "navDate": "1849-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.4862, + 41.8917, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/4", + "properties": { + "label": { + "en": [ + "The Temple of Vesta, Rome, 1849", ], - "type": "Image", - "width": 1792, }, - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0003-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p3", - "type": "Annotation", }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "f. 2r", + "type": "Feature", + }, ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/4", + "type": "FeatureCollection", }, - "type": "Canvas", - "width": 1792, + "type": "Manifest", }, { - "height": 2440, - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/page/p4/1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 2440, - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", - "profile": "level1", - "type": "ImageService3", - }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-5.json", + "label": { + "en": [ + "A View of Trajan's Forum, Rome, 1821", + ], + }, + "navDate": "1821-01-01T00:00:00+00:00", + "navPlace": { + "features": [ + { + "geometry": { + "coordinates": [ + 12.485869, + 41.895419, + ], + "type": "Point", + }, + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/5", + "properties": { + "label": { + "en": [ + "A View of Trajan's Forum, Rome, 1821", ], - "type": "Image", - "width": 1760, }, - "id": "https://iiif.io/api/cookbook/recipe/0283-missing-image/annotation/p0004-image", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0283-missing-image/canvas/p4", - "type": "Annotation", }, - ], - "type": "AnnotationPage", - }, - ], - "label": { - "en": [ - "f. 2v", + "type": "Feature", + }, ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/5", + "type": "FeatureCollection", }, - "type": "Canvas", - "width": 1760, + "type": "Manifest", }, ], "label": { "en": [ - "Ethiopic Ms 10", + "NavPlace and NavDate Collection", ], }, - "type": "Manifest", + "requiredStatement": { + "label": { + "en": [ + "Attribution", + ], + }, + "value": { + "en": [ + "Objects from the Yale Center for British Art", + ], + }, + }, + "summary": { + "en": [ + "A collection of items related to Rome.", + ], + }, + "type": "Collection", } `; -exports[`Cookbook > Testing normalize %p (%p) 0299-region https://iiif.io/api/cookbook/recipe/0299-region/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image": { + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image": { "body": [ { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/body/b1", - "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "region": "1768,2423,1768,2080", - "type": "iiif:ImageApiSelector", - }, - "source": { - "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", - "type": "ContentResource", - }, - "type": "SpecificResource", + "id": "vault://6e534aac", + "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", "type": "Annotation", }, ], @@ -28917,30 +33049,88 @@ exports[`Cookbook > Testing normalize %p (%p) 0299-region https://iiif.io/api/co ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag": { + "body": [ + { + "id": "vault://14f7ebdc", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", + "type": "Annotation", + }, + ], + "motivation": [ + "tagging", + ], + "target": { + "selector": { + "region": "810,900,260,370", + "size": "2000,1271", + "type": "ImageApiSelector", + }, + "source": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "type": "SpecificResource", + }, + "type": "Annotation", + }, }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1": { + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", + "type": "AnnotationPage", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "summary": null, + "thumbnail": [], + "type": "AnnotationPage", + }, + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1": { + "behavior": [], + "homepage": [], + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", + "iiif-parser:partOf": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", "type": "Annotation", }, ], @@ -28958,17 +33148,17 @@ exports[`Cookbook > Testing normalize %p (%p) 0299-region https://iiif.io/api/co }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1": { + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1": { "accompanyingCanvas": null, "annotations": [], "behavior": [], "duration": 0, - "height": 2080, + "height": 1271, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", "type": "AnnotationPage", }, ], @@ -28986,50 +33176,115 @@ exports[`Cookbook > Testing normalize %p (%p) 0299-region https://iiif.io/api/co "summary": null, "thumbnail": [], "type": "Canvas", - "width": 1768, + "width": 2000, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 4999, - "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", + "height": 1271, + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", + "label": { + "en": [ + "Natural Light", + ], + }, "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 3536, + "width": 2000, + }, + "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg": { + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", + "type": "AnnotationPage", + }, + ], + "format": "image/jpeg", + "height": 1271, + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg", + "label": { + "en": [ + "X-ray", + ], + }, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 2000, + }, + "vault://14f7ebdc": { + "format": "text/plain", + "id": "vault://14f7ebdc", + "iiif-parser:hasPart": [ + { + "id": "vault://14f7ebdc", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", + "type": "TextualBody", + }, + ], + "language": "en", + "type": "TextualBody", + "value": "A group of skulls.", + }, + "vault://6e534aac": { + "id": "vault://6e534aac", + "iiif-parser:hasPart": [ + { + "id": "vault://6e534aac", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", + "type": "Choice", + }, + ], + "items": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", + "type": "ContentResource", + }, + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg", + "type": "ContentResource", + }, + ], + "type": "Choice", }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", "type": "Canvas", }, ], "label": { "en": [ - "Berliner Tageblatt article, 'Ein neuer Sicherungsplan?'", + "Choice Example with layer specific annotation", ], }, "metadata": [], @@ -29054,66 +33309,124 @@ exports[`Cookbook > Testing normalize %p (%p) 0299-region https://iiif.io/api/co "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2": { - "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", + "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural": { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", + "profile": "level1", + "type": "ImageService3", + }, + "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray": { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag": "Annotation", + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg": "ContentResource", + "vault://14f7ebdc": "ContentResource", + "vault://6e534aac": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0299-region https://iiif.io/api/cookbook/recipe/0299-region/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", "items": [ { - "height": 2080, - "id": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", + "height": 1271, + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", "items": [ { "body": { - "id": "https://iiif.io/api/cookbook/recipe/0299-region/body/b1", - "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "region": "1768,2423,1768,2080", - "type": "iiif:ImageApiSelector", - }, - "source": { - "format": "image/jpeg", - "height": 4999, - "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", - "profile": "level1", - "type": "ImageService3", + "items": [ + { + "format": "image/jpeg", + "height": 1271, + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", + "label": { + "en": [ + "Natural Light", + ], }, - ], - "type": "Image", - "width": 3536, - }, - "type": "SpecificResource", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 2000, + }, + { + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", + "items": [ + { + "body": { + "format": "text/plain", + "language": "en", + "type": "TextualBody", + "value": "A group of skulls.", + }, + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", + "motivation": "tagging", + "target": { + "selector": { + "region": "810,900,260,370", + "size": "2000,1271", + "type": "ImageApiSelector", + }, + "source": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "type": "SpecificResource", + }, + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "format": "image/jpeg", + "height": 1271, + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg", + "label": { + "en": [ + "X-ray", + ], + }, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "profile": "level1", + "type": "ImageService3", + }, + ], + "type": "Image", + "width": 2000, + }, + ], + "type": "Choice", }, - "id": "https://iiif.io/api/cookbook/recipe/0299-region/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0299-region/canvas/p1", + "target": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", "type": "Annotation", }, ], @@ -29121,35 +33434,66 @@ exports[`Cookbook > Testing normalize %p (%p) 0299-region https://iiif.io/api/co }, ], "type": "Canvas", - "width": 1768, + "width": 2000, }, ], "label": { "en": [ - "Berliner Tageblatt article, 'Ein neuer Sicherungsplan?'", + "Choice Example with layer specific annotation", ], }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manifests https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0346-multilingual-annotation-body https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1": { + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-comment": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "id": "vault://bd9c6322", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-comment", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-comment", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p2/1", + "type": "Annotation", + }, + ], + "motivation": [ + "commenting", + ], + "target": { + "selector": { + "type": "FragmentSelector", + "value": "xywh=1650,1200,925,1250", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-image": { + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p1/1", "type": "Annotation", }, ], @@ -29158,7 +33502,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manife ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1", "type": "Canvas", }, "type": "SpecificResource", @@ -29168,19 +33512,23 @@ exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manife }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json": { + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p1/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p1/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1", "type": "AnnotationPage", }, ], - "iiif-parser:isExternal": true, - "items": [], + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-image", + "type": "Annotation", + }, + ], "label": null, "metadata": [], "provider": [], @@ -29193,20 +33541,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manife "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1": { + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p2/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p2/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p2/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-comment", "type": "Annotation", }, ], @@ -29224,22 +33572,22 @@ exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manife }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1": { + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1": { "accompanyingCanvas": null, "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p2/1", "type": "AnnotationPage", }, ], "behavior": [], "duration": 0, - "height": 3024, + "height": 31722, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p1/1", "type": "AnnotationPage", }, ], @@ -29257,57 +33605,95 @@ exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manife "summary": null, "thumbnail": [], "type": "Canvas", - "width": 4032, + "width": 70399, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg": { "format": "image/jpeg", - "height": 3024, - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "height": 31722, + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-image", "type": "Image", }, ], "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 4032, + "width": 70399, + }, + "vault://0894647a": { + "format": "text/plain", + "id": "vault://0894647a", + "language": "ja", + "type": "TextualBody", + "value": "袋に収められた琴", + }, + "vault://bd9c6322": { + "id": "vault://bd9c6322", + "iiif-parser:hasPart": [ + { + "id": "vault://bd9c6322", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-comment", + "type": "Choice", + }, + ], + "items": [ + { + "id": "vault://fb88d5a7", + "type": "ContentResource", + }, + { + "id": "vault://0894647a", + "type": "ContentResource", + }, + ], + "type": "Choice", + }, + "vault://fb88d5a7": { + "format": "text/plain", + "id": "vault://fb88d5a7", + "language": "en", + "type": "TextualBody", + "value": "Koto with a cover being carried", }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1", "type": "Canvas", }, ], "label": { "en": [ - "Picture of Göttingen taken during the 2019 IIIF Conference", + "Koto, chess, calligraphy, and painting", + ], + "ja": [ + "琴棋書画図屏風", ], }, "metadata": [], @@ -29332,64 +33718,93 @@ exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manife "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen": { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004": { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json": "Manifest", - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-comment": "Annotation", + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p1/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p2/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg": "ContentResource", + "vault://0894647a": "ContentResource", + "vault://bd9c6322": "ContentResource", + "vault://fb88d5a7": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manifests https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0346-multilingual-annotation-body https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json", "items": [ { "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p2/1", + "items": [ + { + "body": { + "items": [ + { + "format": "text/plain", + "language": "en", + "type": "TextualBody", + "value": "Koto with a cover being carried", + }, + { + "format": "text/plain", + "language": "ja", + "type": "TextualBody", + "value": "袋に収められた琴", + }, + ], + "type": "Choice", + }, + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-comment", + "motivation": "commenting", + "target": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1#xywh=1650,1200,925,1250", + "type": "Annotation", + }, + ], "type": "AnnotationPage", }, ], - "height": 3024, - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", + "height": 31722, + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p1/1", "items": [ { "body": { "format": "image/jpeg", - "height": 3024, - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "height": 31722, + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 4032, + "width": 70399, }, - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", + "target": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1", "type": "Annotation", }, ], @@ -29397,186 +33812,38 @@ exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manife }, ], "type": "Canvas", - "width": 4032, - }, - ], - "label": { - "en": [ - "Picture of Göttingen taken during the 2019 IIIF Conference", - ], - }, - "type": "Manifest", -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manifests-annotationpage https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json 1`] = ` -{ - "entities": { - "Agent": {}, - "Annotation": { - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1": { - "body": [ - { - "id": "vault://2876d220", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", - "type": "Annotation", - }, - ], - "motivation": [ - "commenting", - ], - "target": { - "selector": { - "conformsTo": "http://www.w3.org/TR/media-frags/", - "type": "FragmentSelector", - "value": "xywh=300,800,1200,1200", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", - "partOf": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", - "type": "Manifest", - }, - ], - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - }, - "AnnotationCollection": {}, - "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json": { - "@context": "http://iiif.io/api/presentation/3/context.json", - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", - "type": "AnnotationPage", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", - "type": "Annotation", - }, - ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", - }, - }, - "Canvas": {}, - "Collection": {}, - "ContentResource": { - "vault://2876d220": { - "format": "text/plain", - "id": "vault://2876d220", - "iiif-parser:hasPart": [ - { - "id": "vault://2876d220", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", - "type": "TextualBody", - }, - ], - "language": "de", - "type": "TextualBody", - "value": "Der Gänseliesel-Brunnen", - }, - }, - "Manifest": {}, - "Range": {}, - "Selector": {}, - "Service": {}, - }, - "mapping": { - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1": "Annotation", - "vault://2876d220": "ContentResource", - }, - "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", - "type": "AnnotationPage", - }, -} -`; - -exports[`Cookbook > Testing normalize %p (%p) 0306-linking-annotations-to-manifests-annotationpage https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json 2`] = ` -{ - "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/annotationpage.json", - "items": [ - { - "body": { - "format": "text/plain", - "language": "de", - "type": "TextualBody", - "value": "Der Gänseliesel-Brunnen", - }, - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1/annopage-2/anno-1", - "motivation": "commenting", - "target": { - "selector": { - "conformsTo": "http://www.w3.org/TR/media-frags/", - "type": "FragmentSelector", - "value": "xywh=300,800,1200,1200", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/canvas-1", - "partOf": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0306-linking-annotations-to-manifests/manifest.json", - "type": "Manifest", - }, - ], - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", + "width": 70399, }, ], - "type": "AnnotationPage", + "label": { + "en": [ + "Koto, chess, calligraphy, and painting", + ], + "ja": [ + "琴棋書画図屏風", + ], + }, + "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image": { + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1": { "body": [ { - "id": "vault://6e534aac", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", "type": "Annotation", }, ], @@ -29585,38 +33852,44 @@ exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https: ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", "type": "Canvas", }, "type": "SpecificResource", }, "type": "Annotation", }, - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag": { + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1": { "body": [ { - "id": "vault://14f7ebdc", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg", + "type": "ContentResource", + }, + { + "id": "vault://69cc99ce", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", "type": "Annotation", }, ], "motivation": [ - "tagging", + "commenting", ], "target": { "selector": { - "region": "810,900,260,370", - "size": "2000,1271", - "type": "ImageApiSelector", + "type": "FragmentSelector", + "value": "xywh=138,550,1477,1710", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", + "type": "Canvas", }, - "source": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", "type": "SpecificResource", }, "type": "Annotation", @@ -29624,20 +33897,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https: }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1": { + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", "type": "Annotation", }, ], @@ -29653,20 +33926,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https: "thumbnail": [], "type": "AnnotationPage", }, - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1": { + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", - "iiif-parser:partOf": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", "type": "Annotation", }, ], @@ -29684,17 +33957,22 @@ exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https: }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1": { + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1": { "accompanyingCanvas": null, - "annotations": [], + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", + "type": "AnnotationPage", + }, + ], "behavior": [], "duration": 0, - "height": 1271, + "height": 3024, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", "type": "AnnotationPage", }, ], @@ -29712,115 +33990,82 @@ exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https: "summary": null, "thumbnail": [], "type": "Canvas", - "width": 2000, + "width": 4032, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg": { + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg": { "format": "image/jpeg", - "height": 1271, - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", - "label": { - "en": [ - "Natural Light", - ], - }, - "service": [ + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", - "profile": "level1", - "type": "ImageService3", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", + "type": "Image", }, ], "type": "Image", - "width": 2000, }, - "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg": { - "annotations": [ + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", - "type": "AnnotationPage", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", + "type": "Image", }, ], - "format": "image/jpeg", - "height": 1271, - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg", - "label": { - "en": [ - "X-ray", - ], - }, "service": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", "profile": "level1", "type": "ImageService3", }, ], "type": "Image", - "width": 2000, + "width": 4032, }, - "vault://14f7ebdc": { - "format": "text/plain", - "id": "vault://14f7ebdc", + "vault://69cc99ce": { + "id": "vault://69cc99ce", "iiif-parser:hasPart": [ { - "id": "vault://14f7ebdc", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", + "id": "vault://69cc99ce", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", "type": "TextualBody", }, ], "language": "en", "type": "TextualBody", - "value": "A group of skulls.", - }, - "vault://6e534aac": { - "id": "vault://6e534aac", - "iiif-parser:hasPart": [ - { - "id": "vault://6e534aac", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", - "type": "Choice", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", - "type": "ContentResource", - }, - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg", - "type": "ContentResource", - }, - ], - "type": "Choice", + "value": "Night picture of the Gänseliesel fountain in Göttingen taken during the 2019 IIIF Conference", }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", "type": "Canvas", }, ], "label": { "en": [ - "Choice Example with layer specific annotation", + "Picture of Göttingen taken during the 2019 IIIF Conference", ], }, "metadata": [], @@ -29845,124 +34090,87 @@ exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https: "Range": {}, "Selector": {}, "Service": { - "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural": { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", - "profile": "level1", - "type": "ImageService3", - }, - "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray": { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen": { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", "profile": "level1", "type": "ImageService3", }, }, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image": "Annotation", - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag": "Annotation", - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json": "Manifest", - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1": "AnnotationPage", - "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg": "ContentResource", - "vault://14f7ebdc": "ContentResource", - "vault://6e534aac": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json": "Manifest", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg": "ContentResource", + "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", + "vault://69cc99ce": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", "items": [ { - "height": 1271, - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", - "items": [ + "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p1/1", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", "items": [ { - "body": { - "items": [ - { - "format": "image/jpeg", - "height": 1271, - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", - "label": { - "en": [ - "Natural Light", - ], - }, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 2000, - }, + "body": [ + { + "format": "image/jpeg", + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg", + "type": "Image", + }, + { + "language": "en", + "type": "TextualBody", + "value": "Night picture of the Gänseliesel fountain in Göttingen taken during the 2019 IIIF Conference", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", + "motivation": "commenting", + "target": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1#xywh=138,550,1477,1710", + "type": "Annotation", + }, + ], + "type": "AnnotationPage", + }, + ], + "height": 3024, + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", + "items": [ + { + "body": { + "format": "image/jpeg", + "height": 3024, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "service": [ { - "annotations": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/page/p2/1", - "items": [ - { - "body": { - "format": "text/plain", - "language": "en", - "type": "TextualBody", - "value": "A group of skulls.", - }, - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0002-tag", - "motivation": "tagging", - "target": { - "selector": { - "region": "810,900,260,370", - "size": "2000,1271", - "type": "ImageApiSelector", - }, - "source": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", - "type": "SpecificResource", - }, - "type": "Annotation", - }, - ], - "type": "AnnotationPage", - }, - ], - "format": "image/jpeg", - "height": 1271, - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/2000,1271/0/default.jpg", - "label": { - "en": [ - "X-ray", - ], - }, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 2000, + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3", }, ], - "type": "Choice", + "type": "Image", + "width": 4032, }, - "id": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/annotation/p0001-image", + "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/canvas/p1", + "target": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", "type": "Annotation", }, ], @@ -29970,35 +34178,35 @@ exports[`Cookbook > Testing normalize %p (%p) 0326-annotating-image-layer https: }, ], "type": "Canvas", - "width": 2000, + "width": 4032, }, ], "label": { "en": [ - "Choice Example with layer specific annotation", + "Picture of Göttingen taken during the 2019 IIIF Conference", ], }, "type": "Manifest", } `; -exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1": { + "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1": { "body": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "id": "vault://adac293e", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", "type": "Annotation", }, ], @@ -30007,42 +34215,7 @@ exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://i ], "target": { "source": { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", - "type": "Canvas", - }, - "type": "SpecificResource", - }, - "type": "Annotation", - }, - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1": { - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg", - "type": "ContentResource", - }, - { - "id": "vault://69cc99ce", - "type": "ContentResource", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", - "type": "Annotation", - }, - ], - "motivation": [ - "commenting", - ], - "target": { - "selector": { - "type": "FragmentSelector", - "value": "xywh=138,550,1477,1710", - }, - "source": { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", "type": "Canvas", }, "type": "SpecificResource", @@ -30052,49 +34225,20 @@ exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://i }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1": { - "behavior": [], - "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", - "type": "AnnotationPage", - }, - ], - "items": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", - "type": "Annotation", - }, - ], - "label": null, - "metadata": [], - "provider": [], - "rendering": [], - "requiredStatement": null, - "rights": null, - "seeAlso": [], - "service": [], - "summary": null, - "thumbnail": [], - "type": "AnnotationPage", - }, - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2": { + "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", "type": "Annotation", }, ], @@ -30112,22 +34256,17 @@ exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://i }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1": { + "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1": { "accompanyingCanvas": null, - "annotations": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", - "type": "AnnotationPage", - }, - ], + "annotations": [], "behavior": [], - "duration": 0, - "height": 3024, + "duration": 16, + "height": 0, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", "type": "AnnotationPage", }, ], @@ -30145,82 +34284,139 @@ exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://i "summary": null, "thumbnail": [], "type": "Canvas", - "width": 4032, + "width": 0, }, }, "Collection": {}, "ContentResource": { - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg": { - "format": "image/jpeg", - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg", - "iiif-parser:hasPart": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", - "type": "Image", - }, - ], - "type": "Image", + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac": { + "duration": 16, + "format": "audio/flac", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac", + "label": { + "en": [ + "FLAC", + ], + }, + "type": "Sound", }, - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": { - "format": "image/jpeg", - "height": 3024, - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a": { + "duration": 16, + "format": "audio/alac", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a", + "label": { + "en": [ + "ALAC", + ], + }, + "type": "Sound", + }, + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3": { + "duration": 16, + "format": "audio/mpeg", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3", + "label": { + "en": [ + "MP3", + ], + }, + "type": "Sound", + }, + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg": { + "duration": 16, + "format": "audio/mpeg", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg", + "label": { + "en": [ + "MPEG2", + ], + }, + "type": "Sound", + }, + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg": { + "duration": 16, + "format": "audio/ogg", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg", + "label": { + "en": [ + "OGG Vorbis OGG", + ], + }, + "type": "Sound", + }, + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav": { + "duration": 16, + "format": "audio/wav", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav", + "label": { + "en": [ + "WAV", + ], + }, + "type": "Sound", + }, + "vault://adac293e": { + "id": "vault://adac293e", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", - "type": "Image", + "id": "vault://adac293e", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", + "type": "Choice", }, ], - "service": [ + "items": [ { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", - "profile": "level1", - "type": "ImageService3", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a", + "type": "ContentResource", }, - ], - "type": "Image", - "width": 4032, - }, - "vault://69cc99ce": { - "id": "vault://69cc99ce", - "iiif-parser:hasPart": [ { - "id": "vault://69cc99ce", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", - "type": "TextualBody", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3", + "type": "ContentResource", + }, + { + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac", + "type": "ContentResource", + }, + { + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg", + "type": "ContentResource", + }, + { + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg", + "type": "ContentResource", + }, + { + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav", + "type": "ContentResource", }, ], - "language": "en", - "type": "TextualBody", - "value": "Night picture of the Gänseliesel fountain in Göttingen taken during the 2019 IIIF Conference", + "type": "Choice", }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", "type": "Canvas", }, ], "label": { "en": [ - "Picture of Göttingen taken during the 2019 IIIF Conference", + "Excerpt from Egbe Iyawo", ], }, "metadata": [], @@ -30230,13 +34426,17 @@ exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://i "provider": [], "rendering": [], "requiredStatement": null, - "rights": null, + "rights": "http://creativecommons.org/publicdomain/zero/1.0/", "seeAlso": [], "service": [], "services": [], "start": null, "structures": [], - "summary": null, + "summary": { + "en": [ + "Excerpt from a performance of Egbe Iyawo recorded in Kabba Division, Kwara State. ", + ], + }, "thumbnail": [], "type": "Manifest", "viewingDirection": "left-to-right", @@ -30244,124 +34444,240 @@ exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://i }, "Range": {}, "Selector": {}, - "Service": { - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen": { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", - "profile": "level1", - "type": "ImageService3", - }, - }, + "Service": {}, }, "mapping": { - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json": "Manifest", - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg": "ContentResource", - "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg": "ContentResource", - "vault://69cc99ce": "ContentResource", + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac": "ContentResource", + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a": "ContentResource", + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3": "ContentResource", + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg": "ContentResource", + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg": "ContentResource", + "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1": "Canvas", + "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1": "AnnotationPage", + "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1": "Annotation", + "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json": "Manifest", + "vault://adac293e": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0377-image-in-annotation https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", "items": [ { - "annotations": [ + "duration": 16, + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", + "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2", + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", "items": [ { - "body": [ - { - "format": "image/jpeg", - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-fountain/full/300,/0/default.jpg", - "type": "Image", - }, - { - "language": "en", - "type": "TextualBody", - "value": "Night picture of the Gänseliesel fountain in Göttingen taken during the 2019 IIIF Conference", - }, - ], - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-2/anno-1", - "motivation": "commenting", - "target": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1#xywh=138,550,1477,1710", + "body": { + "items": [ + { + "duration": 16, + "format": "audio/alac", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a", + "label": { + "en": [ + "ALAC", + ], + }, + "type": "Sound", + }, + { + "duration": 16, + "format": "audio/mpeg", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3", + "label": { + "en": [ + "MP3", + ], + }, + "type": "Sound", + }, + { + "duration": 16, + "format": "audio/flac", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac", + "label": { + "en": [ + "FLAC", + ], + }, + "type": "Sound", + }, + { + "duration": 16, + "format": "audio/ogg", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg", + "label": { + "en": [ + "OGG Vorbis OGG", + ], + }, + "type": "Sound", + }, + { + "duration": 16, + "format": "audio/mpeg", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg", + "label": { + "en": [ + "MPEG2", + ], + }, + "type": "Sound", + }, + { + "duration": 16, + "format": "audio/wav", + "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav", + "label": { + "en": [ + "WAV", + ], + }, + "type": "Sound", + }, + ], + "type": "Choice", + }, + "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", "type": "Annotation", }, ], "type": "AnnotationPage", }, ], - "height": 3024, - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", - "items": [ + "type": "Canvas", + }, + ], + "label": { + "en": [ + "Excerpt from Egbe Iyawo", + ], + }, + "rights": "http://creativecommons.org/publicdomain/zero/1.0/", + "summary": { + "en": [ + "Excerpt from a performance of Egbe Iyawo recorded in Kabba Division, Kwara State. ", + ], + }, + "type": "Manifest", +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0485-contentstate-canvas-region-annotation https://iiif.io/api/cookbook/recipe/0485-contentstate-canvas-region/annotation.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://example.org/import/1": { + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://example.org/import/1", + "iiif-parser:hasPart": [ + { + "id": "https://example.org/import/1", + "iiif-parser:partOf": "https://example.org/import/1", + "type": "Annotation", + }, + ], + "motivation": [ + "contentState", + ], + "target": { + "selector": { + "type": "FragmentSelector", + "value": "xywh=1528,3024,344,408", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p2", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0009-book-1/manifest.json", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": {}, + "Canvas": {}, + "Collection": {}, + "ContentResource": {}, + "Manifest": {}, + "Range": {}, + "Selector": {}, + "Service": {}, + }, + "mapping": { + "https://example.org/import/1": "Annotation", + }, + "resource": { + "id": "https://example.org/import/1", + "type": "Annotation", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0485-contentstate-canvas-region-annotation https://iiif.io/api/cookbook/recipe/0485-contentstate-canvas-region/annotation.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://example.org/import/1", + "motivation": "contentState", + "target": { + "selector": { + "type": "FragmentSelector", + "value": "xywh=1528,3024,344,408", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p2", + "partOf": [ { - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1", - "items": [ - { - "body": { - "format": "image/jpeg", - "height": 3024, - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", - "profile": "level1", - "type": "ImageService3", - }, - ], - "type": "Image", - "width": 4032, - }, - "id": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1/annopage-1/anno-1", - "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/canvas-1", - "type": "Annotation", - }, - ], - "type": "AnnotationPage", + "id": "https://iiif.io/api/cookbook/recipe/0009-book-1/manifest.json", + "type": "Manifest", }, ], "type": "Canvas", - "width": 4032, }, - ], - "label": { - "en": [ - "Picture of Göttingen taken during the 2019 IIIF Conference", - ], + "type": "SpecificResource", }, - "type": "Manifest", + "type": "Annotation", } `; -exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json 1`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0489-multimedia-canvas https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json 1`] = ` { "entities": { "Agent": {}, "Annotation": { - "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1": { + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0001-image": { "body": [ { - "id": "vault://adac293e", + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", "type": "ContentResource", }, ], - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0001-image", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0001-image", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", "type": "Annotation", }, ], @@ -30369,8 +34685,136 @@ exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api "painting", ], "target": { + "selector": { + "type": "FragmentSelector", + "value": "t=11,42", + }, "source": { - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0002-video": { + "body": [ + { + "id": "https://fixtures.iiif.io/video/indiana/30-minute-clock/medium/30-minute-clock.mp4", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0002-video", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0002-video", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "selector": { + "type": "FragmentSelector", + "value": "xywh=1000,500,5000,6000&t=11,42", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0004-text": { + "body": [ + { + "id": "vault://94602451", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0004-text", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0004-text", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "selector": { + "type": "FragmentSelector", + "value": "xywh=30200,10200,15000,5000&t=0,1", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0005-text": { + "body": [ + { + "id": "vault://bea81c2d", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0005-text", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0005-text", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "selector": { + "type": "FragmentSelector", + "value": "xywh=20220,5000,30000,5000&t=1,11", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0006-text": { + "body": [ + { + "id": "vault://a0ffc779", + "type": "ContentResource", + }, + ], + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0006-text", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0006-text", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", + "type": "Annotation", + }, + ], + "motivation": [ + "painting", + ], + "target": { + "selector": { + "type": "FragmentSelector", + "value": "xywh=27000,10200,25000,5000&t=42,180", + }, + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", "type": "Canvas", }, "type": "SpecificResource", @@ -30380,20 +34824,36 @@ exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api }, "AnnotationCollection": {}, "AnnotationPage": { - "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1": { + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1": { "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", "type": "AnnotationPage", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0001-image", + "type": "Annotation", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0002-video", + "type": "Annotation", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0004-text", + "type": "Annotation", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0005-text", + "type": "Annotation", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0006-text", "type": "Annotation", }, ], @@ -30411,17 +34871,17 @@ exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api }, }, "Canvas": { - "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1": { + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas": { "accompanyingCanvas": null, "annotations": [], "behavior": [], - "duration": 16, - "height": 0, + "duration": 180, + "height": 31722, "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", "type": "AnnotationPage", }, ], @@ -30439,139 +34899,114 @@ exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api "summary": null, "thumbnail": [], "type": "Canvas", - "width": 0, + "width": 70399, }, }, "Collection": {}, "ContentResource": { - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac": { - "duration": 16, - "format": "audio/flac", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac", - "label": { - "en": [ - "FLAC", - ], - }, - "type": "Sound", - }, - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a": { - "duration": 16, - "format": "audio/alac", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a", - "label": { - "en": [ - "ALAC", - ], - }, - "type": "Sound", - }, - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3": { - "duration": 16, - "format": "audio/mp3", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3", - "label": { - "en": [ - "MP3", - ], - }, - "type": "Sound", - }, - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg": { - "duration": 16, - "format": "audio/mpeg", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg", - "label": { - "en": [ - "MPEG2", - ], - }, - "type": "Sound", - }, - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg": { - "duration": 16, - "format": "audio/ogg", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg", - "label": { - "en": [ - "OGG Vorbis OGG", - ], - }, - "type": "Sound", - }, - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav": { - "duration": 16, - "format": "audio/wav", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav", - "label": { - "en": [ - "WAV", - ], - }, - "type": "Sound", - }, - "vault://adac293e": { - "id": "vault://adac293e", + "https://fixtures.iiif.io/video/indiana/30-minute-clock/medium/30-minute-clock.mp4": { + "duration": 1801.055, + "format": "video/mp4", + "height": 360, + "id": "https://fixtures.iiif.io/video/indiana/30-minute-clock/medium/30-minute-clock.mp4", "iiif-parser:hasPart": [ { - "id": "vault://adac293e", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", - "type": "Choice", - }, - ], - "items": [ - { - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a", - "type": "ContentResource", + "id": "https://fixtures.iiif.io/video/indiana/30-minute-clock/medium/30-minute-clock.mp4", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0002-video", + "type": "Video", }, + ], + "type": "Video", + "width": 640, + }, + "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg": { + "format": "image/jpeg", + "height": 31722, + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", + "iiif-parser:hasPart": [ { - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3", - "type": "ContentResource", + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0001-image", + "type": "Image", }, + ], + "service": [ { - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac", - "type": "ContentResource", + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", + "profile": "level1", + "type": "ImageService3", }, + ], + "type": "Image", + "width": 70399, + }, + "vault://94602451": { + "format": "text/html", + "id": "vault://94602451", + "iiif-parser:hasPart": [ { - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg", - "type": "ContentResource", + "id": "vault://94602451", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0004-text", + "type": "TextualBody", }, + ], + "language": "en", + "type": "TextualBody", + "value": "

Press Play

", + }, + "vault://a0ffc779": { + "format": "text/html", + "id": "vault://a0ffc779", + "iiif-parser:hasPart": [ { - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg", - "type": "ContentResource", + "id": "vault://a0ffc779", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0006-text", + "type": "TextualBody", }, + ], + "language": "en", + "type": "TextualBody", + "value": "

Close your browser

", + }, + "vault://bea81c2d": { + "format": "text/html", + "id": "vault://bea81c2d", + "iiif-parser:hasPart": [ { - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav", - "type": "ContentResource", + "id": "vault://bea81c2d", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0005-text", + "type": "TextualBody", }, ], - "type": "Choice", + "language": "en", + "type": "TextualBody", + "value": "

In 10 seconds, this text will be replaced by a clock and an image. You will have 30 seconds (shown on the clock) in which to take notes on the image you see. After 30 seconds, the image will be replaced by the start screen. You will not be responsible for the part of the image covered by the clock.

", }, }, "Manifest": { - "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json": { + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json": { "@context": "http://iiif.io/api/presentation/3/context.json", "accompanyingCanvas": null, "annotations": [], "behavior": [], "homepage": [], - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json", "iiif-parser:hasPart": [ { - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", - "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json", "type": "Manifest", }, ], "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", "type": "Canvas", }, ], "label": { "en": [ - "Excerpt from Egbe Iyawo", + "Multimedia Canvas", ], }, "metadata": [], @@ -30581,17 +35016,13 @@ exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api "provider": [], "rendering": [], "requiredStatement": null, - "rights": "http://creativecommons.org/publicdomain/zero/1.0/", + "rights": null, "seeAlso": [], "service": [], "services": [], "start": null, "structures": [], - "summary": { - "en": [ - "Excerpt from a performance of Egbe Iyawo recorded in Kabba Division, Kwara State. ", - ], - }, + "summary": null, "thumbnail": [], "type": "Manifest", "viewingDirection": "left-to-right", @@ -30599,115 +35030,117 @@ exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api }, "Range": {}, "Selector": {}, - "Service": {}, + "Service": { + "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004": { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", + "profile": "level1", + "type": "ImageService3", + }, + }, }, "mapping": { - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac": "ContentResource", - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a": "ContentResource", - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3": "ContentResource", - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg": "ContentResource", - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg": "ContentResource", - "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav": "ContentResource", - "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1": "Canvas", - "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1": "AnnotationPage", - "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1": "Annotation", - "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json": "Manifest", - "vault://adac293e": "ContentResource", + "https://fixtures.iiif.io/video/indiana/30-minute-clock/medium/30-minute-clock.mp4": "ContentResource", + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0001-image": "Annotation", + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0002-video": "Annotation", + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0004-text": "Annotation", + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0005-text": "Annotation", + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0006-text": "Annotation", + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas": "Canvas", + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json": "Manifest", + "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1": "AnnotationPage", + "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg": "ContentResource", + "vault://94602451": "ContentResource", + "vault://a0ffc779": "ContentResource", + "vault://bea81c2d": "ContentResource", }, "resource": { - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json", "type": "Manifest", }, } `; -exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json 2`] = ` +exports[`Cookbook > Testing normalize %p (%p) 0489-multimedia-canvas https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json 2`] = ` { "@context": "http://iiif.io/api/presentation/3/context.json", - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/manifest.json", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json", "items": [ { - "duration": 16, - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", + "duration": 180, + "height": 31722, + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", "items": [ { - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", "items": [ { "body": { - "items": [ - { - "duration": 16, - "format": "audio/alac", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.m4a", - "label": { - "en": [ - "ALAC", - ], - }, - "type": "Sound", - }, - { - "duration": 16, - "format": "audio/mp3", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3", - "label": { - "en": [ - "MP3", - ], - }, - "type": "Sound", - }, - { - "duration": 16, - "format": "audio/flac", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.flac", - "label": { - "en": [ - "FLAC", - ], - }, - "type": "Sound", - }, - { - "duration": 16, - "format": "audio/ogg", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.ogg", - "label": { - "en": [ - "OGG Vorbis OGG", - ], - }, - "type": "Sound", - }, - { - "duration": 16, - "format": "audio/mpeg", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mpeg", - "label": { - "en": [ - "MPEG2", - ], - }, - "type": "Sound", - }, + "format": "image/jpeg", + "height": 31722, + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", + "service": [ { - "duration": 16, - "format": "audio/wav", - "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.wav", - "label": { - "en": [ - "WAV", - ], - }, - "type": "Sound", + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", + "profile": "level1", + "type": "ImageService3", }, ], - "type": "Choice", + "type": "Image", + "width": 70399, }, - "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1/annotation/1", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0001-image", "motivation": "painting", - "target": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#t=11,42", + "type": "Annotation", + }, + { + "body": { + "duration": 1801.055, + "format": "video/mp4", + "height": 360, + "id": "https://fixtures.iiif.io/video/indiana/30-minute-clock/medium/30-minute-clock.mp4", + "type": "Video", + "width": 640, + }, + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0002-video", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#xywh=1000,500,5000,6000&t=11,42", + "type": "Annotation", + }, + { + "body": { + "format": "text/html", + "language": "en", + "type": "TextualBody", + "value": "

Press Play

", + }, + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0004-text", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#xywh=30200,10200,15000,5000&t=0,1", + "type": "Annotation", + }, + { + "body": { + "format": "text/html", + "language": "en", + "type": "TextualBody", + "value": "

In 10 seconds, this text will be replaced by a clock and an image. You will have 30 seconds (shown on the clock) in which to take notes on the image you see. After 30 seconds, the image will be replaced by the start screen. You will not be responsible for the part of the image covered by the clock.

", + }, + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0005-text", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#xywh=20220,5000,30000,5000&t=1,11", + "type": "Annotation", + }, + { + "body": { + "format": "text/html", + "language": "en", + "type": "TextualBody", + "value": "

Close your browser

", + }, + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0006-text", + "motivation": "painting", + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#xywh=27000,10200,25000,5000&t=42,180", "type": "Annotation", }, ], @@ -30715,19 +35148,90 @@ exports[`Cookbook > Testing normalize %p (%p) 0434-choice-av https://iiif.io/api }, ], "type": "Canvas", + "width": 70399, }, ], "label": { "en": [ - "Excerpt from Egbe Iyawo", - ], - }, - "rights": "http://creativecommons.org/publicdomain/zero/1.0/", - "summary": { - "en": [ - "Excerpt from a performance of Egbe Iyawo recorded in Kabba Division, Kwara State. ", + "Multimedia Canvas", ], }, "type": "Manifest", } `; + +exports[`Cookbook > Testing normalize %p (%p) 0540-link-for-opening-multiple-canvases-annotation https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json 1`] = ` +{ + "entities": { + "Agent": {}, + "Annotation": { + "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json": { + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json", + "iiif-parser:partOf": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json", + "type": "Annotation", + }, + ], + "motivation": [ + "contentState", + ], + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/canvas/2", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/manifest-2.json", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", + }, + }, + "AnnotationCollection": {}, + "AnnotationPage": {}, + "Canvas": {}, + "Collection": {}, + "ContentResource": {}, + "Manifest": {}, + "Range": {}, + "Selector": {}, + "Service": {}, + }, + "mapping": { + "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json": "Annotation", + }, + "resource": { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json", + "type": "Annotation", + }, +} +`; + +exports[`Cookbook > Testing normalize %p (%p) 0540-link-for-opening-multiple-canvases-annotation https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json 2`] = ` +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json", + "motivation": "contentState", + "target": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/canvas/2", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/manifest-2.json", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Annotation", +} +`; diff --git a/__tests__/presentation-3-parser/cookbook.tests.ts b/__tests__/presentation-3-parser/cookbook.tests.ts index 4006e0b..f223306 100644 --- a/__tests__/presentation-3-parser/cookbook.tests.ts +++ b/__tests__/presentation-3-parser/cookbook.tests.ts @@ -6,8 +6,10 @@ const { readFile } = promises; import { normalize, serialize, serializeConfigPresentation3 } from '../../src'; const prWaitingForMerge: string[] = [ - // '0219-using-caption-file', // https://github.com/IIIF/cookbook-recipes/pull/340 + // These 3 have uncompressed SpecificResources. Manually tested, that's the only deviation. '0022-linking-with-a-hotspot', + '0540-link-for-opening-multiple-canvases-annotation', + '0485-contentstate-canvas-region-annotation', ]; describe('Cookbook', function () { @@ -15,6 +17,7 @@ describe('Cookbook', function () { .filter((item: any) => prWaitingForMerge.indexOf(item.id) === -1) .map((item) => [item.id, item.url]); + test.each(tests)('Testing normalize %p (%p)', async (id, url) => { const json = await readFile(join(cwd(), 'fixtures/cookbook', `${id}.json`)); const jsonString = json.toString(); diff --git a/fixtures/cookbook/0022-linking-with-a-hotspot.json b/fixtures/cookbook/0022-linking-with-a-hotspot.json index a9a7fc6..6aff827 100644 --- a/fixtures/cookbook/0022-linking-with-a-hotspot.json +++ b/fixtures/cookbook/0022-linking-with-a-hotspot.json @@ -43,7 +43,7 @@ ], "annotations": [ { - "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p2/1", + "id": "https://iiif.io/api/cookbook/recipe/0022-linking-with-a-hotspot/page/p1/2", "type": "AnnotationPage", "items": [ { diff --git a/fixtures/cookbook/0040-image-rotation-service-manifest-service.json b/fixtures/cookbook/0040-image-rotation-service-manifest-service.json index b606027..2753985 100644 --- a/fixtures/cookbook/0040-image-rotation-service-manifest-service.json +++ b/fixtures/cookbook/0040-image-rotation-service-manifest-service.json @@ -45,8 +45,7 @@ ] }, "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "type": "iiif:ImageApiSelector", + "type": "ImageApiSelector", "rotation": "90" } }, diff --git a/fixtures/cookbook/0135-annotating-point-in-canvas.json b/fixtures/cookbook/0135-annotating-point-in-canvas.json index 354d8db..ca964d2 100644 --- a/fixtures/cookbook/0135-annotating-point-in-canvas.json +++ b/fixtures/cookbook/0135-annotating-point-in-canvas.json @@ -59,11 +59,6 @@ { "id": "https://iiif.io/api/cookbook/recipe/0135-annotating-point-in-canvas/annotation/p0002-tag", "type": "Annotation", - "label": { - "en": [ - "Annotation containing the name of the place annotated using the PointSelector." - ] - }, "motivation": "tagging", "body": { "type": "TextualBody", diff --git a/fixtures/cookbook/0139-geolocate-canvas-fragment.json b/fixtures/cookbook/0139-geolocate-canvas-fragment.json index f8dc9aa..6508b43 100644 --- a/fixtures/cookbook/0139-geolocate-canvas-fragment.json +++ b/fixtures/cookbook/0139-geolocate-canvas-fragment.json @@ -35,11 +35,6 @@ "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/content.json", "type": "Annotation", "motivation": "painting", - "label": { - "en": [ - "Pamphlet Cover" - ] - }, "body": { "id": "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg", "type": "Image", @@ -68,11 +63,6 @@ "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geoAnno.json", "type": "Annotation", "motivation": "tagging", - "label": { - "en": [ - "Annotation containing GeoJSON-LD coordinates that place the map depiction onto a Leaflet web map." - ] - }, "body": { "id": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/geo.json", "type": "Feature", diff --git a/fixtures/cookbook/0229-behavior-ranges.json b/fixtures/cookbook/0229-behavior-ranges.json new file mode 100644 index 0000000..7735581 --- /dev/null +++ b/fixtures/cookbook/0229-behavior-ranges.json @@ -0,0 +1,312 @@ +{ + "@context": [ + "http://iiif.io/api/presentation/3/context.json" + ], + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json ", + "type": "Manifest", + "label": { + "en": [ + "Video navigation with thumbnails in a Range" + ] + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1", + "type": "Canvas", + "height": 1080, + "width": 1920, + "duration": 3307.22, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1/annotation_page/1/annotation/2", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_2.mp4", + "type": "Video", + "format": "video/mp4", + "height": 1080, + "width": 1920, + "duration": 3307.22 + }, + "target": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1" + } + ] + } + ] + } + ], + "structures": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1", + "type": "Range", + "label": { + "en": [ + "Thumbnail Navigation" + ] + }, + "behavior": [ + "thumbnail-nav" + ], + "items": [ + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/1.1", + "behavior": [ + "no-nav" + ], + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=0,9" + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/2", + "label": { + "en": [ + "9s – 305s" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=9,305" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-01.png", + "type": "Image", + "format": "image/png", + "height": 1266, + "width": 2250 + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/3", + "label": { + "en": [ + "305s – 610s" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=305,610" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-02.png", + "type": "Image", + "format": "image/png", + "height": 1266, + "width": 2250 + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/4", + "label": { + "en": [ + "610s – 915s" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=610,915" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-03.png", + "type": "Image", + "format": "image/png", + "height": 1266, + "width": 2250 + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/5", + "label": { + "en": [ + "915s – 1220s" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=915,1220" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-04.png", + "type": "Image", + "format": "image/png", + "height": 1266, + "width": 2250 + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/6", + "label": { + "en": [ + "1220s – 1525s" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1220,1525" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-05.png", + "type": "Image", + "format": "image/png", + "height": 1266, + "width": 2250 + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/7", + "label": { + "en": [ + "1525s – 1830s" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1525,1830" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-06.png", + "type": "Image", + "format": "image/png", + "height": 1266, + "width": 2250 + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/8", + "label": { + "en": [ + "1830s – 2135s" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=1830,2135" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-07.png", + "type": "Image", + "format": "image/png", + "height": 1266, + "width": 2250 + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/9", + "label": { + "en": [ + "2135s – 2440s" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2135,2440" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-08.png", + "type": "Image", + "format": "image/png", + "height": 1266, + "width": 2250 + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/10", + "label": { + "en": [ + "2440s – 2745s" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2440,2745" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-09.png", + "type": "Image", + "format": "image/png", + "height": 1266, + "width": 2250 + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/range/11", + "label": { + "en": [ + "2745s – end" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/canvas/1#t=2745,3307.22" + } + ], + "thumbnail": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/thumbnails/thumb-nav-10.png", + "type": "Image", + "format": "image/png", + "width": 2250, + "height": 1266 + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/fixtures/cookbook/0234-provider.json b/fixtures/cookbook/0234-provider.json index 3687d6c..6254da9 100644 --- a/fixtures/cookbook/0234-provider.json +++ b/fixtures/cookbook/0234-provider.json @@ -38,7 +38,7 @@ ], "logo": [ { - "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/full/0/default.png", + "id": "https://iiif.library.ucla.edu/iiif/2/UCLA-Library-Logo-double-line-2/full/max/0/default.png", "type": "Image", "service": [ { diff --git a/fixtures/cookbook/0299-region.json b/fixtures/cookbook/0299-region.json index 7e56992..b03089c 100644 --- a/fixtures/cookbook/0299-region.json +++ b/fixtures/cookbook/0299-region.json @@ -40,8 +40,7 @@ ] }, "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "type": "iiif:ImageApiSelector", + "type": "ImageApiSelector", "region": "1768,2423,1768,2080" } }, diff --git a/fixtures/cookbook/0309-annotation-collection.json b/fixtures/cookbook/0309-annotation-collection.json new file mode 100644 index 0000000..12d50c9 --- /dev/null +++ b/fixtures/cookbook/0309-annotation-collection.json @@ -0,0 +1,143 @@ +{ + "@context": [ + "http://iiif.io/api/presentation/3/context.json" + ], + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json", + "type": "Manifest", + "label": { + "de": [ + "Berliner Tageblatt - 1925-02-16" + ] + }, + "rights": "http://creativecommons.org/publicdomain/mark/1.0/", + "requiredStatement": { + "label": { + "en": [ + "Attribution" + ] + }, + "value": { + "en": [ + "

Berliner Tageblatt - Staatsbibliothek zu Berlin - Preußischer Kulturbesitz. Public Domain Mark - http://creativecommons.org/publicdomain/mark/1.0/

" + ] + } + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1", + "type": "Canvas", + "label": { + "none": [ + "p. 1" + ] + }, + "height": 5000, + "width": 3602, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p1", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p1", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p1" + } + ] + } + ], + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "type": "AnnotationPage", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_coll.json", + "type": "AnnotationCollection", + "label": { + "en": [ + "Newspaper layout markup" + ] + }, + "total": 8, + "first": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "last": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json" + } + ], + "next": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json" + } + ] + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2", + "type": "Canvas", + "label": { + "none": [ + "p. 2" + ] + }, + "height": 5000, + "width": 3602, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation_page_painting/ap2", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/annotation/p2", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/4ce82cef49fb16798f4c2440307c3d6f-newspaper-p2", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/canvas/p2" + } + ] + } + ], + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json", + "type": "AnnotationPage", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_coll.json", + "type": "AnnotationCollection", + "label": { + "en": [ + "Newspaper layout markup" + ] + }, + "total": 8, + "first": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json", + "last": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p2.json" + } + ], + "prev": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/anno_p1.json" + } + ] + } + ] +} \ No newline at end of file diff --git a/fixtures/cookbook/0318-navPlace-navDate-collection.json b/fixtures/cookbook/0318-navPlace-navDate-collection.json new file mode 100644 index 0000000..99e2998 --- /dev/null +++ b/fixtures/cookbook/0318-navPlace-navDate-collection.json @@ -0,0 +1,202 @@ +{ + "@context": [ + "http://iiif.io/api/extension/navplace/context.json", + "http://iiif.io/api/presentation/3/context.json" + ], + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json", + "type": "Collection", + "label": { + "en": [ + "NavPlace and NavDate Collection" + ] + }, + "summary": { + "en": [ + "A collection of items related to Rome." + ] + }, + "requiredStatement": { + "label": { + "en": [ + "Attribution" + ] + }, + "value": { + "en": [ + "Objects from the Yale Center for British Art" + ] + } + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-1.json", + "type": "Manifest", + "label": { + "en": [ + "Castel Sant'Angelo, Rome" + ] + }, + "navDate": "1776-01-01T00:00:00+00:00", + "navPlace": { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/1", + "type": "FeatureCollection", + "features": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/1", + "type": "Feature", + "properties": { + "label": { + "en": [ + "Castel Sant'Angelo, Rome" + ] + } + }, + "geometry": { + "type": "Point", + "coordinates": [ + 12.4663, + 41.9031 + ] + } + } + ] + } + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-2.json", + "type": "Manifest", + "label": { + "en": [ + "The Colosseum" + ] + }, + "navDate": "1776-01-01T00:00:00+00:00", + "navPlace": { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/2", + "type": "FeatureCollection", + "features": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/2", + "type": "Feature", + "properties": { + "label": { + "en": [ + "The Colosseum" + ] + } + }, + "geometry": { + "type": "Point", + "coordinates": [ + 12.492222, + 41.890278 + ] + } + } + ] + } + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-3.json", + "type": "Manifest", + "label": { + "en": [ + "The Arch of Titus from the Forum, Rome, ca. 1725" + ] + }, + "navDate": "1725-01-01T00:00:00+00:00", + "navPlace": { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/3", + "type": "FeatureCollection", + "features": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/3", + "type": "Feature", + "properties": { + "label": { + "en": [ + "The Arch of Titus from the Forum, Rome, ca. 1725" + ] + } + }, + "geometry": { + "type": "Point", + "coordinates": [ + 12.488585, + 41.890717 + ] + } + } + ] + } + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-4.json", + "type": "Manifest", + "label": { + "en": [ + "The Temple of Vesta, Rome, 1849" + ] + }, + "navDate": "1849-01-01T00:00:00+00:00", + "navPlace": { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/4", + "type": "FeatureCollection", + "features": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/4", + "type": "Feature", + "properties": { + "label": { + "en": [ + "The Temple of Vesta, Rome, 1849" + ] + } + }, + "geometry": { + "type": "Point", + "coordinates": [ + 12.4862, + 41.8917 + ] + } + } + ] + } + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/manifest-5.json", + "type": "Manifest", + "label": { + "en": [ + "A View of Trajan's Forum, Rome, 1821" + ] + }, + "navDate": "1821-01-01T00:00:00+00:00", + "navPlace": { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature-collection/5", + "type": "FeatureCollection", + "features": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/feature/5", + "type": "Feature", + "properties": { + "label": { + "en": [ + "A View of Trajan's Forum, Rome, 1821" + ] + } + }, + "geometry": { + "type": "Point", + "coordinates": [ + 12.485869, + 41.895419 + ] + } + } + ] + } + } + ] +} \ No newline at end of file diff --git a/fixtures/cookbook/0346-multilingual-annotation-body.json b/fixtures/cookbook/0346-multilingual-annotation-body.json new file mode 100644 index 0000000..b1dbc3a --- /dev/null +++ b/fixtures/cookbook/0346-multilingual-annotation-body.json @@ -0,0 +1,80 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Koto, chess, calligraphy, and painting" + ], + "ja": [ + "琴棋書画図屏風" + ] + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1", + "type": "Canvas", + "height": 31722, + "width": 70399, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 31722, + "width": 70399, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1" + } + ] + } + ], + "annotations": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/page/p2/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/annotation/p0001-comment", + "type": "Annotation", + "motivation": "commenting", + "body": { + "type": "Choice", + "items": [ + { + "type": "TextualBody", + "value": "Koto with a cover being carried", + "language": "en", + "format": "text/plain" + }, + { + "type": "TextualBody", + "value": "袋に収められた琴", + "language": "ja", + "format": "text/plain" + } + ] + }, + "target": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/canvas/p1#xywh=1650,1200,925,1250" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/fixtures/cookbook/0434-choice-av.json b/fixtures/cookbook/0434-choice-av.json index 8d6c232..fa56be7 100644 --- a/fixtures/cookbook/0434-choice-av.json +++ b/fixtures/cookbook/0434-choice-av.json @@ -17,7 +17,7 @@ { "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1", "type": "Canvas", - "duration": 16, + "duration": 16.0, "items": [ { "id": "https://iiif.io/api/cookbook/recipe/0434-choice-av/canvas/1/annotation_page/1", @@ -45,7 +45,7 @@ { "id": "https://fixtures.iiif.io/audio/ucla/egbe-iyawo-ucla.mp3", "type": "Sound", - "format": "audio/mp3", + "format": "audio/mpeg", "duration": 16.0, "label": { "en": [ diff --git a/fixtures/cookbook/0485-contentstate-canvas-region-annotation.json b/fixtures/cookbook/0485-contentstate-canvas-region-annotation.json new file mode 100644 index 0000000..57bff07 --- /dev/null +++ b/fixtures/cookbook/0485-contentstate-canvas-region-annotation.json @@ -0,0 +1,18 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://example.org/import/1", + "type": "Annotation", + "motivation": [ + "contentState" + ], + "target": { + "id": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p2#xywh=1528,3024,344,408", + "type": "Canvas", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0009-book-1/manifest.json", + "type": "Manifest" + } + ] + } +} \ No newline at end of file diff --git a/fixtures/cookbook/0489-multimedia-canvas.json b/fixtures/cookbook/0489-multimedia-canvas.json new file mode 100644 index 0000000..b686d32 --- /dev/null +++ b/fixtures/cookbook/0489-multimedia-canvas.json @@ -0,0 +1,97 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Multimedia Canvas" + ] + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas", + "type": "Canvas", + "height": 31722, + "width": 70399, + "duration": 180.0, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0001-image", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 31722, + "width": 70399, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#t=11,42" + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0002-video", + "type": "Annotation", + "motivation": "painting", + "body": { + "id": "https://fixtures.iiif.io/video/indiana/30-minute-clock/medium/30-minute-clock.mp4", + "type": "Video", + "height": 360, + "width": 640, + "duration": 1801.055, + "format": "video/mp4" + }, + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#xywh=1000,500,5000,6000&t=11,42" + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0004-text", + "type": "Annotation", + "motivation": "painting", + "body": { + "type": "TextualBody", + "format": "text/html", + "value": "

Press Play

", + "language": "en" + }, + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#xywh=30200,10200,15000,5000&t=0,1" + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0005-text", + "type": "Annotation", + "motivation": "painting", + "body": { + "type": "TextualBody", + "format": "text/html", + "value": "

In 10 seconds, this text will be replaced by a clock and an image. You will have 30 seconds (shown on the clock) in which to take notes on the image you see. After 30 seconds, the image will be replaced by the start screen. You will not be responsible for the part of the image covered by the clock.

", + "language": "en" + }, + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#xywh=20220,5000,30000,5000&t=1,11" + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/annotation/p0006-text", + "type": "Annotation", + "motivation": "painting", + "body": { + "type": "TextualBody", + "format": "text/html", + "value": "

Close your browser

", + "language": "en" + }, + "target": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/canvas#xywh=27000,10200,25000,5000&t=42,180" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/fixtures/cookbook/0540-link-for-opening-multiple-canvases-annotation.json b/fixtures/cookbook/0540-link-for-opening-multiple-canvases-annotation.json new file mode 100644 index 0000000..deeb913 --- /dev/null +++ b/fixtures/cookbook/0540-link-for-opening-multiple-canvases-annotation.json @@ -0,0 +1,30 @@ +{ + "@context": "http://iiif.io/api/presentation/3/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json", + "type": "Annotation", + "motivation": [ + "contentState" + ], + "target": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/canvas/2", + "type": "Canvas", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/manifest-2.json", + "type": "Manifest" + } + ] + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/canvas/p2", + "type": "Canvas", + "partOf": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/manifest.json", + "type": "Manifest" + } + ] + } + ] +} \ No newline at end of file diff --git a/fixtures/cookbook/_index.json b/fixtures/cookbook/_index.json index 896c07e..fe7909f 100644 --- a/fixtures/cookbook/_index.json +++ b/fixtures/cookbook/_index.json @@ -47,6 +47,10 @@ "id": "0299-region", "url": "https://iiif.io/api/cookbook/recipe/0299-region/manifest.json" }, + "0309-annotation-collection": { + "id": "0309-annotation-collection", + "url": "https://iiif.io/api/cookbook/recipe/0309-annotation-collection/manifest.json" + }, "0377-image-in-annotation": { "id": "0377-image-in-annotation", "url": "https://iiif.io/api/cookbook/recipe/0377-image-in-annotation/manifest.json" @@ -171,6 +175,10 @@ "id": "0036-composition-from-multiple-images", "url": "https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/manifest.json" }, + "0229-behavior-ranges": { + "id": "0229-behavior-ranges", + "url": "https://iiif.io/api/cookbook/recipe/0229-behavior-ranges/manifest.json" + }, "0004-canvas-size": { "id": "0004-canvas-size", "url": "https://iiif.io/api/cookbook/recipe/0004-canvas-size/manifest.json" @@ -247,6 +255,22 @@ "id": "0326-annotating-image-layer", "url": "https://iiif.io/api/cookbook/recipe/0326-annotating-image-layer/manifest.json" }, + "0346-multilingual-annotation-body": { + "id": "0346-multilingual-annotation-body", + "url": "https://iiif.io/api/cookbook/recipe/0346-multilingual-annotation-body/manifest.json" + }, + "0489-multimedia-canvas": { + "id": "0489-multimedia-canvas", + "url": "https://iiif.io/api/cookbook/recipe/0489-multimedia-canvas/manifest.json" + }, + "0485-contentstate-canvas-region-annotation": { + "id": "0485-contentstate-canvas-region-annotation", + "url": "https://iiif.io/api/cookbook/recipe/0485-contentstate-canvas-region/annotation.json" + }, + "0540-link-for-opening-multiple-canvases-annotation": { + "id": "0540-link-for-opening-multiple-canvases-annotation", + "url": "https://iiif.io/api/cookbook/recipe/0540-link-for-opening-multiple-canvases/annotation.json" + }, "0139-geolocate-canvas-fragment": { "id": "0139-geolocate-canvas-fragment", "url": "https://iiif.io/api/cookbook/recipe/0139-geolocate-canvas-fragment/manifest.json" @@ -258,5 +282,9 @@ "0240-navPlace-on-canvases": { "id": "0240-navPlace-on-canvases", "url": "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json" + }, + "0318-navPlace-navDate-collection": { + "id": "0318-navPlace-navDate-collection", + "url": "https://iiif.io/api/cookbook/recipe/0318-navPlace-navDate/collection.json" } } \ No newline at end of file diff --git a/fixtures/presentation-2/collection-scta.json b/fixtures/presentation-2/collection-scta.json new file mode 100644 index 0000000..f3e9d04 --- /dev/null +++ b/fixtures/presentation-2/collection-scta.json @@ -0,0 +1,1032 @@ +{ + "@id": "https://scta.info/iiif/authors/collection", + "@type": "sc:Collection", + "label": "SCTA Authors", + "collections": [ + { + "@id": "https://scta.info/iiif/Wodeham/collection", + "@type": "sc:Collection", + "label": "Adam Wodeham" + }, + { + "@id": "https://scta.info/iiif/Albert/collection", + "@type": "sc:Collection", + "label": "Albert the Great" + }, + { + "@id": "https://scta.info/iiif/AlbertusDeSaxonia/collection", + "@type": "sc:Collection", + "label": "Albertus De Saxonia" + }, + { + "@id": "https://scta.info/iiif/AlexanderIII/collection", + "@type": "sc:Collection", + "label": "Alexander III" + }, + { + "@id": "https://scta.info/iiif/AlexanderOfHales/collection", + "@type": "sc:Collection", + "label": "Alexander of Hales" + }, + { + "@id": "https://scta.info/iiif/AlfonsoPenafiel/collection", + "@type": "sc:Collection", + "label": "Alfonso Penafiel" + }, + { + "@id": "https://scta.info/iiif/AlphonsusVargas/collection", + "@type": "sc:Collection", + "label": "Alphonso Vargas of Toledo" + }, + { + "@id": "https://scta.info/iiif/per-jjska2/collection", + "@type": "sc:Collection", + "label": "Amandus Polanus von Polansdorf" + }, + { + "@id": "https://scta.info/iiif/Ambrose/collection", + "@type": "sc:Collection", + "label": "Ambrose of Milan" + }, + { + "@id": "https://scta.info/iiif/AndreaDeLangenstein/collection", + "@type": "sc:Collection", + "label": "Andrea de Langenstein" + }, + { + "@id": "https://scta.info/iiif/AndreasDeNovoCastro/collection", + "@type": "sc:Collection", + "label": "Andreas de Novo Castro" + }, + { + "@id": "https://scta.info/iiif/Anonymous/collection", + "@type": "sc:Collection", + "label": "Anonymous" + }, + { + "@id": "https://scta.info/iiif/AnonymusRise/collection", + "@type": "sc:Collection", + "label": "Anonymous" + }, + { + "@id": "https://scta.info/iiif/per-Ca13fj/collection", + "@type": "sc:Collection", + "label": "Anonymous" + }, + { + "@id": "https://scta.info/iiif/Anselm/collection", + "@type": "sc:Collection", + "label": "Anselm" + }, + { + "@id": "https://scta.info/iiif/per-vqn2ad/collection", + "@type": "sc:Collection", + "label": "Anselm of Lucca" + }, + { + "@id": "https://scta.info/iiif/AntoineDeChandieu/collection", + "@type": "sc:Collection", + "label": "Antoine de Chandieu" + }, + { + "@id": "https://scta.info/iiif/AntoniusAndreas/collection", + "@type": "sc:Collection", + "label": "Antonius Andreas" + }, + { + "@id": "https://scta.info/iiif/AntoniusPerez/collection", + "@type": "sc:Collection", + "label": "Antonoius Perez" + }, + { + "@id": "https://scta.info/iiif/Arcadius/collection", + "@type": "sc:Collection", + "label": "Arcadius" + }, + { + "@id": "https://scta.info/iiif/Aristotle/collection", + "@type": "sc:Collection", + "label": "Aristotle" + }, + { + "@id": "https://scta.info/iiif/Athanasius/collection", + "@type": "sc:Collection", + "label": "Athanasius of Alexandria" + }, + { + "@id": "https://scta.info/iiif/Augustine/collection", + "@type": "sc:Collection", + "label": "Augustine" + }, + { + "@id": "https://scta.info/iiif/AugustinusDeAncona/collection", + "@type": "sc:Collection", + "label": "Augustinus de Ancona" + }, + { + "@id": "https://scta.info/iiif/Averroes/collection", + "@type": "sc:Collection", + "label": "Averroes" + }, + { + "@id": "https://scta.info/iiif/Avicenna/collection", + "@type": "sc:Collection", + "label": "Avicenna" + }, + { + "@id": "https://scta.info/iiif/Bandinus/collection", + "@type": "sc:Collection", + "label": "Bandinus" + }, + { + "@id": "https://scta.info/iiif/per-29vsnv/collection", + "@type": "sc:Collection", + "label": "Bartholomeus Brixiensis" + }, + { + "@id": "https://scta.info/iiif/BartolomeoMastri/collection", + "@type": "sc:Collection", + "label": "Bartolomeo Mastri" + }, + { + "@id": "https://scta.info/iiif/per-bdlcbd/collection", + "@type": "sc:Collection", + "label": "Bartolomé de las Casas" + }, + { + "@id": "https://scta.info/iiif/Bede/collection", + "@type": "sc:Collection", + "label": "Bede" + }, + { + "@id": "https://scta.info/iiif/Bernard/collection", + "@type": "sc:Collection", + "label": "Bernard of Clairvaux" + }, + { + "@id": "https://scta.info/iiif/per-bdp8db/collection", + "@type": "sc:Collection", + "label": "Bernard of Parma" + }, + { + "@id": "https://scta.info/iiif/Boethius/collection", + "@type": "sc:Collection", + "label": "Boethius" + }, + { + "@id": "https://scta.info/iiif/Bonaventure/collection", + "@type": "sc:Collection", + "label": "Bonaventure" + }, + { + "@id": "https://scta.info/iiif/BonifaceVIII/collection", + "@type": "sc:Collection", + "label": "Boniface VIII" + }, + { + "@id": "https://scta.info/iiif/ClementV/collection", + "@type": "sc:Collection", + "label": "Clement V" + }, + { + "@id": "https://scta.info/iiif/ClementOfAlexandria/collection", + "@type": "sc:Collection", + "label": "Clement of Alexandria" + }, + { + "@id": "https://scta.info/iiif/DionysiusDeBruges/collection", + "@type": "sc:Collection", + "label": "Dionysius de Bruges" + }, + { + "@id": "https://scta.info/iiif/DionysiusdeMontina/collection", + "@type": "sc:Collection", + "label": "Dionysius de Montina" + }, + { + "@id": "https://scta.info/iiif/DominicusGundissalinus/collection", + "@type": "sc:Collection", + "label": "Dominicus Gundissalinus" + }, + { + "@id": "https://scta.info/iiif/per-dOcdOc/collection", + "@type": "sc:Collection", + "label": "Durand of Champagne" + }, + { + "@id": "https://scta.info/iiif/Durandus/collection", + "@type": "sc:Collection", + "label": "Durandus of St. Pourcain" + }, + { + "@id": "https://scta.info/iiif/Euclid/collection", + "@type": "sc:Collection", + "label": "Euclid" + }, + { + "@id": "https://scta.info/iiif/per-U89ddd/collection", + "@type": "sc:Collection", + "label": "Facinus de Ast" + }, + { + "@id": "https://scta.info/iiif/FranciscoSuarez/collection", + "@type": "sc:Collection", + "label": "Fracisco Suárez" + }, + { + "@id": "https://scta.info/iiif/per-ferq7p/collection", + "@type": "sc:Collection", + "label": "Francesco Silvestri" + }, + { + "@id": "https://scta.info/iiif/FrancisofMeyronnes/collection", + "@type": "sc:Collection", + "label": "Francis of Meyronnes" + }, + { + "@id": "https://scta.info/iiif/FranciscoDeHerrera/collection", + "@type": "sc:Collection", + "label": "Francisco de Herrera" + }, + { + "@id": "https://scta.info/iiif/per-FLBca3/collection", + "@type": "sc:Collection", + "label": "Franciscus Lychetus" + }, + { + "@id": "https://scta.info/iiif/FranciscusTotiDePerusia/collection", + "@type": "sc:Collection", + "label": "Franciscus Toti de Perusia" + }, + { + "@id": "https://scta.info/iiif/FranciscusTurrettinus/collection", + "@type": "sc:Collection", + "label": "Franciscus Turrettinus" + }, + { + "@id": "https://scta.info/iiif/per-Gav9di/collection", + "@type": "sc:Collection", + "label": "Frederico Niccolo Gavardi" + }, + { + "@id": "https://scta.info/iiif/per-c8ahhx/collection", + "@type": "sc:Collection", + "label": "Frontinus" + }, + { + "@id": "https://scta.info/iiif/per-Fulcq4/collection", + "@type": "sc:Collection", + "label": "Fulgentius of Ruspe" + }, + { + "@id": "https://scta.info/iiif/GabrielBiel/collection", + "@type": "sc:Collection", + "label": "Gabriel Biel" + }, + { + "@id": "https://scta.info/iiif/per-g8a8b8/collection", + "@type": "sc:Collection", + "label": "Gabriel Vazquez" + }, + { + "@id": "https://scta.info/iiif/GeoffreyOfTrani/collection", + "@type": "sc:Collection", + "label": "Geoffrey of Trani" + }, + { + "@id": "https://scta.info/iiif/GerardusDeSiena/collection", + "@type": "sc:Collection", + "label": "Gerard of Siena" + }, + { + "@id": "https://scta.info/iiif/per-c7y65a/collection", + "@type": "sc:Collection", + "label": "Geremia da Montagnone" + }, + { + "@id": "https://scta.info/iiif/GerhardusVischpekchDeOsnabruck/collection", + "@type": "sc:Collection", + "label": "Gerhardus Vischpekch de Osnabrück" + }, + { + "@id": "https://scta.info/iiif/GilesOfRome/collection", + "@type": "sc:Collection", + "label": "Giles of Rome" + }, + { + "@id": "https://scta.info/iiif/GodfreyOfFontaines/collection", + "@type": "sc:Collection", + "label": "Godfrey of Fontaines" + }, + { + "@id": "https://scta.info/iiif/GonsalvoOfSpain/collection", + "@type": "sc:Collection", + "label": "GonsalvoOfSpain" + }, + { + "@id": "https://scta.info/iiif/Gratian/collection", + "@type": "sc:Collection", + "label": "Gratian" + }, + { + "@id": "https://scta.info/iiif/BasilOfCasarea/collection", + "@type": "sc:Collection", + "label": "Gregory of Nazianzus" + }, + { + "@id": "https://scta.info/iiif/Rimini/collection", + "@type": "sc:Collection", + "label": "Gregory of Rimini" + }, + { + "@id": "https://scta.info/iiif/GregoryGreat/collection", + "@type": "sc:Collection", + "label": "Gregory the Great" + }, + { + "@id": "https://scta.info/iiif/WillemHesselsVanEst/collection", + "@type": "sc:Collection", + "label": "Guillelmus Estius" + }, + { + "@id": "https://scta.info/iiif/GuillelmusHedonensis/collection", + "@type": "sc:Collection", + "label": "Guillelmus Hedonensis" + }, + { + "@id": "https://scta.info/iiif/HeinrichBullinger/collection", + "@type": "sc:Collection", + "label": "Heinrich Bullinger" + }, + { + "@id": "https://scta.info/iiif/HenningusBoltenhagen/collection", + "@type": "sc:Collection", + "label": "Henningus Boltenhagen" + }, + { + "@id": "https://scta.info/iiif/HenriBohic/collection", + "@type": "sc:Collection", + "label": "Henri Bohic" + }, + { + "@id": "https://scta.info/iiif/HenricusDeWerl/collection", + "@type": "sc:Collection", + "label": "Henricus de Werl" + }, + { + "@id": "https://scta.info/iiif/Oyta/collection", + "@type": "sc:Collection", + "label": "Henry Totting de Oyta" + }, + { + "@id": "https://scta.info/iiif/HenryOfGhent/collection", + "@type": "sc:Collection", + "label": "Henry of Ghent" + }, + { + "@id": "https://scta.info/iiif/Langenstein/collection", + "@type": "sc:Collection", + "label": "Henry of Langenstein" + }, + { + "@id": "https://scta.info/iiif/HerveusNatalis/collection", + "@type": "sc:Collection", + "label": "Herveus Natalis" + }, + { + "@id": "https://scta.info/iiif/HimbertOfGarda/collection", + "@type": "sc:Collection", + "label": "Himbert of Garda" + }, + { + "@id": "https://scta.info/iiif/Hostiensis/collection", + "@type": "sc:Collection", + "label": "Hostiensis" + }, + { + "@id": "https://scta.info/iiif/HughOfStVictor/collection", + "@type": "sc:Collection", + "label": "Hugh of St. Victor" + }, + { + "@id": "https://scta.info/iiif/HugolinoOfOrvieto/collection", + "@type": "sc:Collection", + "label": "Hugolino of Orvieto" + }, + { + "@id": "https://scta.info/iiif/per-igzigz/collection", + "@type": "sc:Collection", + "label": "Inokentii Gizel" + }, + { + "@id": "https://scta.info/iiif/IohannesBerwardus/collection", + "@type": "sc:Collection", + "label": "Iohannes Berwardus" + }, + { + "@id": "https://scta.info/iiif/IsidoreOfSeville/collection", + "@type": "sc:Collection", + "label": "Isidore of Seville" + }, + { + "@id": "https://scta.info/iiif/JacobusDeAltavilla/collection", + "@type": "sc:Collection", + "label": "Jacobus de Altavilla" + }, + { + "@id": "https://scta.info/iiif/JacquesAlmain/collection", + "@type": "sc:Collection", + "label": "Jacques Almain" + }, + { + "@id": "https://scta.info/iiif/JamesViterbo/collection", + "@type": "sc:Collection", + "label": "James of Viterbo" + }, + { + "@id": "https://scta.info/iiif/JanHus/collection", + "@type": "sc:Collection", + "label": "Jan Hus" + }, + { + "@id": "https://scta.info/iiif/JeanBuridan/collection", + "@type": "sc:Collection", + "label": "Jean Buridan" + }, + { + "@id": "https://scta.info/iiif/JeanLalemandet/collection", + "@type": "sc:Collection", + "label": "Jean Lalemandet" + }, + { + "@id": "https://scta.info/iiif/Jerome/collection", + "@type": "sc:Collection", + "label": "Jerome" + }, + { + "@id": "https://scta.info/iiif/JohannGerhard/collection", + "@type": "sc:Collection", + "label": "Johann Gerhard" + }, + { + "@id": "https://scta.info/iiif/JohannesDeFonte/collection", + "@type": "sc:Collection", + "label": "Johannes De Fonte" + }, + { + "@id": "https://scta.info/iiif/JohannesMonachus/collection", + "@type": "sc:Collection", + "label": "Johannes Monachus" + }, + { + "@id": "https://scta.info/iiif/per-jpdw2a/collection", + "@type": "sc:Collection", + "label": "Johannes Pfeffer de Weidenberg" + }, + { + "@id": "https://scta.info/iiif/JohannesRuesbach/collection", + "@type": "sc:Collection", + "label": "Johannes Ruesbach" + }, + { + "@id": "https://scta.info/iiif/per-jdwJDW/collection", + "@type": "sc:Collection", + "label": "Johannes de Wesalia" + }, + { + "@id": "https://scta.info/iiif/JohnAltenstaig/collection", + "@type": "sc:Collection", + "label": "John Altenstaig" + }, + { + "@id": "https://scta.info/iiif/JohnBaconthorpe/collection", + "@type": "sc:Collection", + "label": "John Baconthorpe" + }, + { + "@id": "https://scta.info/iiif/JohnBassolis/collection", + "@type": "sc:Collection", + "label": "John Bassolis" + }, + { + "@id": "https://scta.info/iiif/JohnBelethus/collection", + "@type": "sc:Collection", + "label": "John Belethus" + }, + { + "@id": "https://scta.info/iiif/JohnDinsdale/collection", + "@type": "sc:Collection", + "label": "John Dinsdale" + }, + { + "@id": "https://scta.info/iiif/Scotus/collection", + "@type": "sc:Collection", + "label": "John Duns Scotus" + }, + { + "@id": "https://scta.info/iiif/JohnEck/collection", + "@type": "sc:Collection", + "label": "John Eck" + }, + { + "@id": "https://scta.info/iiif/JohnHiltalingenBasel/collection", + "@type": "sc:Collection", + "label": "John Hiltalingen of Basel" + }, + { + "@id": "https://scta.info/iiif/JohnKlenkok/collection", + "@type": "sc:Collection", + "label": "John Klenkok" + }, + { + "@id": "https://scta.info/iiif/JohnMair/collection", + "@type": "sc:Collection", + "label": "John Mair" + }, + { + "@id": "https://scta.info/iiif/JohnMirecourt/collection", + "@type": "sc:Collection", + "label": "John Mirecourt" + }, + { + "@id": "https://scta.info/iiif/JohnPeckham/collection", + "@type": "sc:Collection", + "label": "John Peckham" + }, + { + "@id": "https://scta.info/iiif/JohnOfJandun/collection", + "@type": "sc:Collection", + "label": "John of Jandun" + }, + { + "@id": "https://scta.info/iiif/Ripa/collection", + "@type": "sc:Collection", + "label": "John of Ripa" + }, + { + "@id": "https://scta.info/iiif/JohnOfRodington/collection", + "@type": "sc:Collection", + "label": "John of Rodington" + }, + { + "@id": "https://scta.info/iiif/JohnOfSalisbury/collection", + "@type": "sc:Collection", + "label": "John of Salisbury" + }, + { + "@id": "https://scta.info/iiif/JohnOfWales/collection", + "@type": "sc:Collection", + "label": "John of Wales" + }, + { + "@id": "https://scta.info/iiif/JohnDamascenus/collection", + "@type": "sc:Collection", + "label": "John the Damascene" + }, + { + "@id": "https://scta.info/iiif/JustinianI/collection", + "@type": "sc:Collection", + "label": "Justinian I" + }, + { + "@id": "https://scta.info/iiif/per-kSkSkS/collection", + "@type": "sc:Collection", + "label": "Kilianus Stetzing" + }, + { + "@id": "https://scta.info/iiif/Lactantius/collection", + "@type": "sc:Collection", + "label": "Lactantius" + }, + { + "@id": "https://scta.info/iiif/LambertusDaneau/collection", + "@type": "sc:Collection", + "label": "Lambertus Daneau" + }, + { + "@id": "https://scta.info/iiif/LambertusDeMonte/collection", + "@type": "sc:Collection", + "label": "Lambertus de Monte" + }, + { + "@id": "https://scta.info/iiif/LeonardusPenafiel/collection", + "@type": "sc:Collection", + "label": "Leonardus Penafiel" + }, + { + "@id": "https://scta.info/iiif/Lionhardus/collection", + "@type": "sc:Collection", + "label": "Lionhardus" + }, + { + "@id": "https://scta.info/iiif/per-sdv3av/collection", + "@type": "sc:Collection", + "label": "Marcantonio Zimara" + }, + { + "@id": "https://scta.info/iiif/Cicero/collection", + "@type": "sc:Collection", + "label": "Marcus Tulius Cicero" + }, + { + "@id": "https://scta.info/iiif/MartinChemnitz/collection", + "@type": "sc:Collection", + "label": "Martin Chemnitz" + }, + { + "@id": "https://scta.info/iiif/MartinLuther/collection", + "@type": "sc:Collection", + "label": "Martin Luther" + }, + { + "@id": "https://scta.info/iiif/MelchiorCano/collection", + "@type": "sc:Collection", + "label": "Melchior Cano" + }, + { + "@id": "https://scta.info/iiif/per-nc88aa/collection", + "@type": "sc:Collection", + "label": "Niccolo Cabeo" + }, + { + "@id": "https://scta.info/iiif/NicholasTrivet/collection", + "@type": "sc:Collection", + "label": "Nicholas Trivet" + }, + { + "@id": "https://scta.info/iiif/per-nt88nt/collection", + "@type": "sc:Collection", + "label": "Nicholas Trivet" + }, + { + "@id": "https://scta.info/iiif/NicolasDeAnaskilch/collection", + "@type": "sc:Collection", + "label": "Nicolas de Anaskilch" + }, + { + "@id": "https://scta.info/iiif/NicolasDeDinkelsbuhl/collection", + "@type": "sc:Collection", + "label": "Nicolas de Dinkelsbuhl" + }, + { + "@id": "https://scta.info/iiif/per-nbd2d8/collection", + "@type": "sc:Collection", + "label": "Nicolaus Bonetus" + }, + { + "@id": "https://scta.info/iiif/per-ndtndt/collection", + "@type": "sc:Collection", + "label": "Nicolo de Tudeschi" + }, + { + "@id": "https://scta.info/iiif/OsbertPickingham/collection", + "@type": "sc:Collection", + "label": "Osbert Pickingham" + }, + { + "@id": "https://scta.info/iiif/per-b3aq1a/collection", + "@type": "sc:Collection", + "label": "Paolo Cortese" + }, + { + "@id": "https://scta.info/iiif/PaulusDeGelria/collection", + "@type": "sc:Collection", + "label": "Paulus de Gelria" + }, + { + "@id": "https://scta.info/iiif/PedroGarcia/collection", + "@type": "sc:Collection", + "label": "Pedro Garcia" + }, + { + "@id": "https://scta.info/iiif/per-a28anv/collection", + "@type": "sc:Collection", + "label": "Pelbartus de Themeswar" + }, + { + "@id": "https://scta.info/iiif/per-dsPeAb/collection", + "@type": "sc:Collection", + "label": "Peter Abelard" + }, + { + "@id": "https://scta.info/iiif/Aureoli/collection", + "@type": "sc:Collection", + "label": "Peter Aureoli" + }, + { + "@id": "https://scta.info/iiif/Candia/collection", + "@type": "sc:Collection", + "label": "Peter Candia" + }, + { + "@id": "https://scta.info/iiif/PeterJeanOlivi/collection", + "@type": "sc:Collection", + "label": "Peter Jean Olivi" + }, + { + "@id": "https://scta.info/iiif/Lombard/collection", + "@type": "sc:Collection", + "label": "Peter Lombard" + }, + { + "@id": "https://scta.info/iiif/peter-plaoul/collection", + "@type": "sc:Collection", + "label": "Peter Plaoul" + }, + { + "@id": "https://scta.info/iiif/PeterDeAquila/collection", + "@type": "sc:Collection", + "label": "Peter de Aquila" + }, + { + "@id": "https://scta.info/iiif/PetrusDePalude/collection", + "@type": "sc:Collection", + "label": "Peter of Palude" + }, + { + "@id": "https://scta.info/iiif/PetrusGracilis/collection", + "@type": "sc:Collection", + "label": "Petrus Gracilis" + }, + { + "@id": "https://scta.info/iiif/PetrusHispanus/collection", + "@type": "sc:Collection", + "label": "Petrus Hispanus" + }, + { + "@id": "https://scta.info/iiif/per-PePeMa/collection", + "@type": "sc:Collection", + "label": "Petrus Peregrinus de Maricourt" + }, + { + "@id": "https://scta.info/iiif/PetrusScad/collection", + "@type": "sc:Collection", + "label": "Petrus Scad" + }, + { + "@id": "https://scta.info/iiif/PetrusDeAilly/collection", + "@type": "sc:Collection", + "label": "Petrus de Ailly" + }, + { + "@id": "https://scta.info/iiif/PetrusDeTarantasia/collection", + "@type": "sc:Collection", + "label": "Petrus de Tarantasia" + }, + { + "@id": "https://scta.info/iiif/PetrusDeTreisa/collection", + "@type": "sc:Collection", + "label": "Petrus de Treisa" + }, + { + "@id": "https://scta.info/iiif/PetrusDeWalse/collection", + "@type": "sc:Collection", + "label": "Petrus de Walse" + }, + { + "@id": "https://scta.info/iiif/PhilipMelanchthon/collection", + "@type": "sc:Collection", + "label": "Philip Melanchthon" + }, + { + "@id": "https://scta.info/iiif/per-nbhytr/collection", + "@type": "sc:Collection", + "label": "Philippus Probus" + }, + { + "@id": "https://scta.info/iiif/PicoDellaMirandola/collection", + "@type": "sc:Collection", + "label": "Pico Della Mirandola" + }, + { + "@id": "https://scta.info/iiif/PlacidusAegidiusMelander/collection", + "@type": "sc:Collection", + "label": "Placidus Aegidius Melander" + }, + { + "@id": "https://scta.info/iiif/per-HDmDvD/collection", + "@type": "sc:Collection", + "label": "Pliny the Elder" + }, + { + "@id": "https://scta.info/iiif/per-ZEvn3a/collection", + "@type": "sc:Collection", + "label": "Pope Innocent II" + }, + { + "@id": "https://scta.info/iiif/PopeInnocentIII/collection", + "@type": "sc:Collection", + "label": "Pope Innocent III" + }, + { + "@id": "https://scta.info/iiif/Porphyry/collection", + "@type": "sc:Collection", + "label": "Porphyry of Tyre" + }, + { + "@id": "https://scta.info/iiif/PsBonaventure/collection", + "@type": "sc:Collection", + "label": "Ps-Bonaventure" + }, + { + "@id": "https://scta.info/iiif/PsAugustine/collection", + "@type": "sc:Collection", + "label": "Pseudo-Augustinus" + }, + { + "@id": "https://scta.info/iiif/Dionysius/collection", + "@type": "sc:Collection", + "label": "Pseudo-Dionysius" + }, + { + "@id": "https://scta.info/iiif/RadulphusBrito/collection", + "@type": "sc:Collection", + "label": "Radulphus Brito" + }, + { + "@id": "https://scta.info/iiif/RaymondOfPenyafort/collection", + "@type": "sc:Collection", + "label": "Raymond Of Penyafort" + }, + { + "@id": "https://scta.info/iiif/per-RDeDRD/collection", + "@type": "sc:Collection", + "label": "René Descartes" + }, + { + "@id": "https://scta.info/iiif/RicardusDeMediavilla/collection", + "@type": "sc:Collection", + "label": "Ricardus de Mediavilla" + }, + { + "@id": "https://scta.info/iiif/RichardFishacre/collection", + "@type": "sc:Collection", + "label": "Richard Fishacre" + }, + { + "@id": "https://scta.info/iiif/RichardFitzRalph/collection", + "@type": "sc:Collection", + "label": "Richard FitzRalph" + }, + { + "@id": "https://scta.info/iiif/RichardKilvington/collection", + "@type": "sc:Collection", + "label": "Richard of Kilvington" + }, + { + "@id": "https://scta.info/iiif/RichardOfStVictor/collection", + "@type": "sc:Collection", + "label": "Richard of St. Victor" + }, + { + "@id": "https://scta.info/iiif/per-x7hda7/collection", + "@type": "sc:Collection", + "label": "Robert Baron" + }, + { + "@id": "https://scta.info/iiif/Holcot/collection", + "@type": "sc:Collection", + "label": "Robert Holcot" + }, + { + "@id": "https://scta.info/iiif/RobertKilwardby/collection", + "@type": "sc:Collection", + "label": "Robert Kilwardby" + }, + { + "@id": "https://scta.info/iiif/RobertOfCricklade/collection", + "@type": "sc:Collection", + "label": "Robert of Cricklade" + }, + { + "@id": "https://scta.info/iiif/RogerBacon/collection", + "@type": "sc:Collection", + "label": "Roger Bacon" + }, + { + "@id": "https://scta.info/iiif/SimonMagister/collection", + "@type": "sc:Collection", + "label": "Simon Magister" + }, + { + "@id": "https://scta.info/iiif/SimonFaversham/collection", + "@type": "sc:Collection", + "label": "Simon of Faversham" + }, + { + "@id": "https://scta.info/iiif/per-sykisy/collection", + "@type": "sc:Collection", + "label": "Stefan Yavorskyi" + }, + { + "@id": "https://scta.info/iiif/StephansuDeEntzendorf/collection", + "@type": "sc:Collection", + "label": "Stephanus de Entzendorf" + }, + { + "@id": "https://scta.info/iiif/per-x84nST/collection", + "@type": "sc:Collection", + "label": "Stephen Tempier" + }, + { + "@id": "https://scta.info/iiif/Aquinas/collection", + "@type": "sc:Collection", + "label": "Thomas Aquinas" + }, + { + "@id": "https://scta.info/iiif/Bradwardine/collection", + "@type": "sc:Collection", + "label": "Thomas Bradwardine" + }, + { + "@id": "https://scta.info/iiif/ThomasCajetan/collection", + "@type": "sc:Collection", + "label": "Thomas Cajetan" + }, + { + "@id": "https://scta.info/iiif/ThomasOfIreland/collection", + "@type": "sc:Collection", + "label": "Thomas Of Ireland" + }, + { + "@id": "https://scta.info/iiif/ThomasDeClivis/collection", + "@type": "sc:Collection", + "label": "Thomas de Clivis" + }, + { + "@id": "https://scta.info/iiif/ThomasStrasbourg/collection", + "@type": "sc:Collection", + "label": "Thomas of Strasbourg" + }, + { + "@id": "https://scta.info/iiif/ThomasOfSutton/collection", + "@type": "sc:Collection", + "label": "Thomas of Sutton" + }, + { + "@id": "https://scta.info/iiif/Ulpianus/collection", + "@type": "sc:Collection", + "label": "Ulpianus" + }, + { + "@id": "https://scta.info/iiif/Virgil/collection", + "@type": "sc:Collection", + "label": "Virgil" + }, + { + "@id": "https://scta.info/iiif/Chatton/collection", + "@type": "sc:Collection", + "label": "Walter Chatton" + }, + { + "@id": "https://scta.info/iiif/WilliamCrathorn/collection", + "@type": "sc:Collection", + "label": "William Crathorn" + }, + { + "@id": "https://scta.info/iiif/per-cnuv73/collection", + "@type": "sc:Collection", + "label": "William St. Amour" + }, + { + "@id": "https://scta.info/iiif/per-uyt678/collection", + "@type": "sc:Collection", + "label": "William Whitaker" + }, + { + "@id": "https://scta.info/iiif/WilliamDeRothwell/collection", + "@type": "sc:Collection", + "label": "William de Rothwell" + }, + { + "@id": "https://scta.info/iiif/WilliamDeVaurouillon/collection", + "@type": "sc:Collection", + "label": "William de Vaurouillon" + }, + { + "@id": "https://scta.info/iiif/WilliamOfAuxerre/collection", + "@type": "sc:Collection", + "label": "William of Auxerre" + }, + { + "@id": "https://scta.info/iiif/WilliamOfMelitona/collection", + "@type": "sc:Collection", + "label": "William of Melitona" + }, + { + "@id": "https://scta.info/iiif/Ockham/collection", + "@type": "sc:Collection", + "label": "William of Ockham" + }, + { + "@id": "https://scta.info/iiif/WilliamOfParis/collection", + "@type": "sc:Collection", + "label": "William of Paris" + }, + { + "@id": "https://scta.info/iiif/WilliamofRubio/collection", + "@type": "sc:Collection", + "label": "William of Rubio" + } + ] +} diff --git a/fixtures/presentation-2/duplicate-member-collection.json b/fixtures/presentation-2/duplicate-member-collection.json new file mode 100644 index 0000000..4041d53 --- /dev/null +++ b/fixtures/presentation-2/duplicate-member-collection.json @@ -0,0 +1,21 @@ +{ + "@context": "http://iiif.io/api/presentation/2/context.json", + "@id": "https://iiif.harvardartmuseums.org/collections/", + "@type": "sc:Collection", + "collections": [ + { + "@id": "https://iiif.harvardartmuseums.org/collections/object", + "@type": "sc:Collection", + "label": "Objects" + } + ], + "label": "Harvard Art Museums Collections", + "members": [ + { + "@id": "https://iiif.harvardartmuseums.org/collections/object", + "@type": "sc:Collection", + "label": "Objects", + "viewingHint": "individuals" + } + ] +} diff --git a/fixtures/presentation-2/paginated-collection-page.json b/fixtures/presentation-2/paginated-collection-page.json new file mode 100644 index 0000000..4b0e828 --- /dev/null +++ b/fixtures/presentation-2/paginated-collection-page.json @@ -0,0 +1 @@ +{"@context":"http://iiif.io/api/presentation/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/collection/top?cursor=initial","@type":"sc:Collection","label":"Top Level Collection for BSB Digital Collections","manifests":[{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040721/manifest","label":"Krankenvorstellungen aus der psychiatrischen Klinik in Breslau. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040721_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040721_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040607/manifest","label":"Auer, Aurel: Das allgemein beliebte und vielbegehrte Lied S' Gamsgebirg","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040607_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040607_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040606/manifest","label":"Suppé, Franz 〈〈von〉〉,, 1819-1895,: Vollständige Ouverture : zu Dichter und Bauer","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040606_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040606_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040605/manifest","label":"Kösporer, Johann Nepomuk, -1900: Feuerwehr-Marsch : für Pianoforte mit oder ohne 1stg. Männerchor","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040605_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040605_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040604/manifest","label":"Becker, Valentin Eduard,, 1814-1890,: Es war einmal ein Sängerlein : Gedicht von A. A. Naaff ; op. 120,4","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040604_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040604_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040603/manifest","label":"Roth, Johann,, 1750-1802,: Drei Konfirmationslieder : op. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040603_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040603_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040602/manifest","label":"Liebe, Ludwig,, 1819-1900,: Drei Volkslieder : für 1 Singstimme mit Pianofortebegl. 3, Wir seh'n uns wieder : op. 94, Nr. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040602_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040602_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040601/manifest","label":"Hermes, Eduard,, 1818-1905,: Drei Volkslieder : für 1 Singstimme mit Pianofortebegl. 2, Rösleins Grab : op. 90, Nr. 6","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040601_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040601_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040600/manifest","label":"Braun, Albert,, 1808-1883,: Drei Volkslieder : für 1 Singstimme mit Pianofortebegl. 1, Mutterseelenallein : op. 1","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040600_00004/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040600_00004","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040598/manifest","label":"Hohmann, Edmund: Drei Lieder : von Walther von d. Vogelweide ; für 1 Singstimme mit Klavierbegl. ; op. 1","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040598_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040598_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040581/manifest","label":"Magyarország árúforgalma Ausztriával és más országokkal : a Földmivelés-, Ipar- és Kereskedelemügyi Miniszter úr rendeletéből. 5[,2]. 1885/86 (1886)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040581_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040581_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040580/manifest","label":"Magyarország árúforgalma Ausztriával és más országokkal : a Földmivelés-, Ipar- és Kereskedelemügyi Miniszter úr rendeletéből. 6,[2]. 1886/87 (1887)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040580_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040580_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040579/manifest","label":"Magyarország árúforgalma Ausztriával és más országokkal : a Földmivelés-, Ipar- és Kereskedelemügyi Miniszter úr rendeletéből. 7,[2]. 1887/88 (1888)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040579_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040579_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040576/manifest","label":"Jñānendra: Tattvabodhinī von Jñānendra. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040576_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040576_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040575/manifest","label":"Wappenkunde : heraldische Monatsschrift zur Veröffentlichung von nicht edierten Wappenwerken. 4. 1896","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040575_00046/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040575_00046","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040574/manifest","label":"Kievskaja starina : ežeměsjačnyj istoričeskij žurnal. 37. 1892 = God. 11","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040574_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040574_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040573/manifest","label":"Kievskaja starina : ežeměsjačnyj istoričeskij žurnal. 38. 1892 = God. 11","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040573_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040573_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040572/manifest","label":"Kievskaja starina : ežeměsjačnyj istoričeskij žurnal. 39. 1892 = God. 11","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040572_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040572_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040571/manifest","label":"Bhámana: Prākṛtaprakāśaḥ (vielm.: Manoramā) : Vidvadvaraśrīmad-Bhāmaha-viracitaḥ, paṇḍitakulatilaka-śrīmad-Vararuci-racita-sūtra (Prākṛtaprakāśa)-samalaṅkṛtaḥ ; Mānavally-upākhya-Tailaṅga-Rāmaśāstriṇā saṃśodhitaḥ = Prakrita Prakasha","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040571_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040571_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040569/manifest","label":"Beiträge zur Physik des Waldes","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040569_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040569_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040568/manifest","label":"Saake, Wilhelm: Studien über Glykogen","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040568_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040568_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040567/manifest","label":"Lempe, Johann Friedrich: Fortsetzung der gründlichen Anleitung zur Markscheidekunst","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040567_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040567_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040566/manifest","label":"Händel, Georg Friedrich: Air de l'opéra Rinaldo","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040566_00004/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040566_00004","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040564/manifest","label":"Hohmann, Christian Heinrich: Der erste Unterricht im Clavierspiel in 180 instructiven Uebungssätzen","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040564_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040564_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040561/manifest","label":"Würzburger Journal. 1879,7/11 = Jg. 25","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040561_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040561_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040560/manifest","label":"Compte rendu de la ... session. 1,1. 1873","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040560_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040560_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040559/manifest","label":"Compte rendu de la ... session. 1,3. 1873","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040559_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040559_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040558/manifest","label":"Compte rendu de la ... session. 1,2. 1873","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040558_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040558_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040557/manifest","label":"Cuthbertson, John: Beschreibung einer verbesserten Luftpumpe : nebst einer Nachricht von verschiedenen mit selbiger gemachten Versuchen","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040557_00057/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040557_00057","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040556/manifest","label":"Meggendorfer, Lothar: Neuer Korb voll Allerlei","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040556_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040556_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040555/manifest","label":"Meggendorfer, Lothar: Der Sonnenschein : ein humoristischer Hausfreund","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040555_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040555_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040553/manifest","label":"Schulte vom Brühl, Walther: Piep, der Staarmatz : eine Vogel- und Knabengeschichte","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040553_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040553_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040552/manifest","label":"Schaupp-Horn, Helene: Ich kann schon französisch ! : Ein Büchlein um spielend französisch zu lernen","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040552_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040552_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040551/manifest","label":"Meggendorfer, Lothar: Für die Allerkleinsten : ein Bilderbuch","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040551_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040551_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040550/manifest","label":"Katalog der Münchener Lehrerbibliothek : von Zeit zu Zeit folgen Nachträge","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040550_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040550_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12040548/manifest","label":"Ordnung für die Kirchen- und Stadt-Musik der Stadt Nürnberg","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040548_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12040548_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039086/manifest","label":"Hulett, George Augustus: Der stetige Übergang fest-flüssig","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039086_00010/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039086_00010","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039085/manifest","label":"Kieseritzky, Richard: Elektrometrische Konstitutionsbestimmungen","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039085_00005/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039085_00005","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039084/manifest","label":"Weinhold, Lothar: Zur Elasticität der Metalle","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039084_00005/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039084_00005","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039083/manifest","label":"Danneberg, Rudolf: Über die festen Aggregatzustände des Wassers : unter besonderer Berücksichtigung der Gletschertheorie","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039083_00061/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039083_00061","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039079/manifest","label":"Bericht über die Tätigkeit des Preussischen Meteorologischen Instituts. 1898 (1899)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039079_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039079_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039078/manifest","label":"Bericht der Meteorologischen Commission des Naturforschenden Vereines in Brünn : Ergebnisse der meteorologischen Beobachtungen. 17. 1897 (1899)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039078_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039078_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039075/manifest","label":"Witterung im : Beobachtungen der Meteorologischen Station Eberswalde. 1899","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039075_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039075_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039074/manifest","label":"Starck, Walter: Über die elektrische Leitfähigkeit glycerinhaltiger Salzlösungen bei hohen Temperaturen","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039074_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039074_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039073/manifest","label":"Oettgen, Peter: Über die Oberflächenspannung einiger organischer Substanzen in wässeriger und alkoholischer Lösung dargestellt als Funktion der Konzentration und Temperatur","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039073_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039073_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12039063/manifest","label":"Lorber, Jakob: Winke über Unsterblichkeit der Menschenseele und vom Wiedersehen Jenseits : Licht- und Trostworte. Empfangen vom Herrn durch Jakob Lorber u. t. Nebst einem Anhange aus älteren theosophischen Schriften. (Erstmals herausgegeben von J. Busch, Dresden.)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039063_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12039063_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12038990/manifest","label":"Abhandlungen und Bericht des Vereins für Naturkunde zu Kassel. 44. 1898/99","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12038990_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12038990_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12038083/manifest","label":"Wernicke, Carl,, 1848-1905,: Ueber die Klassifikation der Psychosen : nach einem in der Medizinischen Section der Vaterländischen Gesellschaft zu Breslau gehaltenen Vorträge","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12038083_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12038083_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12037861/manifest","label":"Möbius, Paul J.: Über J. J. Rousseaus Jugend","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037861_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037861_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12037853/manifest","label":"Henckel, Mary: Auf welchen psychologischen Thatsachen beruhen die fünf formalen Stufen Herbarts?","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037853_00030/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037853_00030","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12037852/manifest","label":"Stein, E.: Welche Stellung nehmen wir gegenüber der Einführung des Knaben-Handarbeitsunterrichtes in den Lehrplan der Volksschule ein?","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037852_00009/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037852_00009","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12037851/manifest","label":"Keferstein, Horst: Pädagogische Mittel gegen den Alkoholismus","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037851_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037851_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12037850/manifest","label":"Klumpen, Johannes: Naturgemässes Turnen in der Volksschule","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037850_00032/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037850_00032","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12037849/manifest","label":"Mainzer, Ludwig: Über Schülerausflüge","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037849_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037849_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12037848/manifest","label":"Märker, Wilhelm: Wie gelangt der Lehrer zu einer sichern Beurteilung der Leistungen der einzelnen Schüler?","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037848_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037848_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12037847/manifest","label":"Hartleb, Philipp, ca. Ende 19. Jh.: Die Forderungen der Gegenwart an den Geschichtsunterricht der Volksschule","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037847_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12037847_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12036924/manifest","label":"Ward, Humphry, Mrs.: Helbeck of Bannisdale. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036924_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036924_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12036900/manifest","label":"Savage, Richard Henry: In the swim : a story of currents and under-currents in gayest New York. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036900_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036900_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12036871/manifest","label":"Lyall, Edna: Hope the hermit : a novel. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036871_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036871_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12036870/manifest","label":"Lyall, Edna: Wayfaring men : a novel. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036870_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036870_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12036848/manifest","label":"Harraden, Beatrice: The fowler. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036848_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12036848_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12032446/manifest","label":"Essai de restitution des plus anciens mémoriaux de la Chambre des comptes de Paris ... : (Pater, Noster 1, Noster 2, Qui es in coelis, Croix, A 1)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12032446_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12032446_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12032421/manifest","label":"Annuaire. 1899","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12032421_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12032421_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12032370/manifest","label":"Folk-Lore Society : [Kleinere Drucksachen.]. 6","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12032370_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12032370_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12032369/manifest","label":"Folk-Lore Society : [Kleinere Drucksachen.]. 5","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12032369_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12032369_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12029264/manifest","label":"Lagerkatalog. 244. 1889","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029264_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029264_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12029263/manifest","label":"Lagerkatalog. 249. 1889","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029263_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029263_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12029262/manifest","label":"Lagerkatalog. 246. 1889","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029262_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029262_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12029261/manifest","label":"Lagerkatalog. 250. 1889","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029261_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029261_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12029260/manifest","label":"Lagerkatalog. 247. 1889","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029260_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029260_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12029259/manifest","label":"Lagerkatalog. 245. 1889","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029259_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029259_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12029258/manifest","label":"Lagerkatalog. 248. 1889","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029258_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029258_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12029257/manifest","label":"Lagerkatalog. 243. 1889","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029257_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12029257_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12026407/manifest","label":"Kitāb al-Hidayā : wa-huwa radd ʿala 'l-kitāb al-musammā ʿIẓhār al-ḥaqq, wa-ʿalā al-kitāb al-musammā as-Saif al-Ḥamīdī aṣ-Ṣaqīl. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12026407_00011/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12026407_00011","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12026383/manifest","label":"al- Mausūʾāt. 1. 1898/99, al-'Adad 1 - 24 = 15. Nov. - 20. Okt.","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12026383_00136/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12026383_00136","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12026317/manifest","label":"Kārikāvalī and Muktāvalī : With the Commentaries Dinakarī and Rāmarudrī. (Śabdakhaṇḍaṃ)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12026317_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12026317_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12025078/manifest","label":"Zergiebel, Emil H.: Die Formenbildung des französischen Zeitwortes. II = 1898/99","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12025078_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12025078_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12024131/manifest","label":"Mendelssohn Bartholdy, Felix,, 1809-1847,: Lobgesang : Sinfonie-Cantate nach Worten der heiligen Schrift ; op. 52","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024131_00022/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024131_00022","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12024130/manifest","label":"Liszt, Franz,, 1811-1886,: Aus Wagners Opern : 14 Bearb. für Klavier zu 2 Hdn","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024130_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024130_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12024129/manifest","label":"Mozart, Wolfgang Amadeus,, 1756-1791,: Requiem","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024129_00008/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024129_00008","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12024128/manifest","label":"Bach, Johann Sebastian,, 1685-1750,: Matthäus-Passion : Oratorium","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024128_00022/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024128_00022","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12024127/manifest","label":"Galuppi, Baldassare,, 1706-1785,: THE Favourite SONGS in the OPERA Call'd L'OLIMPIADE","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024127_00014/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024127_00014","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12024126/manifest","label":"Franz, Robert,, 1815-1892,: Franz-Album : ausgewählte Lieder für eine Singstimme mit Klavierbegleitung. 2, [Aus op. 5, 11, 16, 17, 18, 20, 21, 23, 25, 26, 28, 42]","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024126_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12024126_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023574/manifest","label":"Harthan, Hans: Vier Lieder : für gem. Chor ; op. 26","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023574_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023574_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023573/manifest","label":"Weinberger, Carl,, 1861-1939,: Zwei Reiselieder : 4stg. Männerchöre ; für fröhlige Sänger ; op. 11. [2], Hinaus, wo die leuchtenden Rosen blüh'n","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023573_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023573_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023572/manifest","label":"Weinberger, Carl,, 1861-1939,: Zwei Reiselieder : 4stg. Männerchöre ; für fröhlige Sänger ; op. 11. [1], Horch, wie schallt aus dem Walde die Weise : op. 11, No. 1","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023572_00006/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023572_00006","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023565/manifest","label":"Stein, Joseph: Missa : in honorem SS. Angelorum Custodum ; für 3stg. Frauen- oder Männerchor ; op. 32","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023565_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023565_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023564/manifest","label":"Goetz, Hermann: Naenia : (poem by Schiller) ; for chorus and orchestra ; op. 10","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023564_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023564_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023562/manifest","label":"Trauttenfels, Paul, 1849-: Zehn Gesänge und Lieder : für 3- u. 4stg. Frauenchor ; op. 39a u. b. [1], Wiegenlied. Im Maien. Gesellenlied. Heimweh nach der Schweiz. Nachtgesang","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023562_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023562_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023561/manifest","label":"Trauttenfels, Paul, 1849-: Zehn Gesänge und Lieder : für 3- u. 4stg. Frauenchor ; op. 39a u. b. [2], Ave Maria. Sehnsucht. Lenzbeginn. Hirtenknabe. Erntefest","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023561_00013/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023561_00013","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023556/manifest","label":"Storm, Theodor: IV Gesänge : für Männerstimmen ; op. 45. 1, Das Meer ist still : von Storm","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023556_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023556_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023554/manifest","label":"Deigendesch, Karl: III Männerchöre. [2], Ich hört ein Sichele rauschen: op. 34,1. Röslein auf der Heiden: op. 34,2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023554_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023554_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023553/manifest","label":"Deigendesch, Karl: III Männerchöre. [1], Lied eines fahrenden Schülers: op. 20,1","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023553_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023553_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023544/manifest","label":"Rheinberger, Joseph,, 1839-1901,: IV 6stimmige Motetten : (Text dt. u. lat.) für Kirche & Concert ; op. 133. 3, Laudate Dominum (= Lobpreiset Gott)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023544_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023544_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023543/manifest","label":"Rheinberger, Joseph,, 1839-1901,: IV 6stimmige Motetten : (Text dt. u. lat.) für Kirche & Concert ; op. 133. 4, Angelus Domini (= Siehe vom Himmel hoch)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023543_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023543_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023542/manifest","label":"Rheinberger, Joseph,, 1839-1901,: IV 6stimmige Motetten : (Text dt. u. lat.) für Kirche & Concert ; op. 133. 2, Meditabor (= Denken will' ich)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023542_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023542_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023541/manifest","label":"Rheinberger, Joseph,, 1839-1901,: IV 6stimmige Motetten : (Text dt. u. lat.) für Kirche & Concert ; op. 133. 1, Anima nostra (= Unsere Seele)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023541_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023541_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023538/manifest","label":"Geistliches und Weltliches : eine Sammlung von Liedern, Arien, Chorgesängen, Volksliedern etc. ; zum Gebrauch für Gesangvereine, sowie für Kirche und Familie ; op. 51. Viertes Heft","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023538_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023538_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023537/manifest","label":"Geistliches und Weltliches : eine Sammlung von Liedern, Arien, Chorgesängen, Volksliedern etc. ; zum Gebrauch für Gesangvereine, sowie für Kirche und Familie ; op. 51. Fünftes Heft","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023537_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023537_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023536/manifest","label":"Geistliches und Weltliches : eine Sammlung von Liedern, Arien, Chorgesängen, Volksliedern etc. ; zum Gebrauch für Gesangvereine, sowie für Kirche und Familie ; op. 51. Zweites Heft","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023536_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023536_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023535/manifest","label":"Geistliches und Weltliches : eine Sammlung von Liedern, Arien, Chorgesängen, Volksliedern etc. ; zum Gebrauch für Gesangvereine, sowie für Kirche und Familie ; op. 51. Erstes Heft","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023535_00020/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023535_00020","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023534/manifest","label":"Missa pro defunctis : quatuor vocum","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023534_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023534_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12023533/manifest","label":"Stehle, Johann Gustav Eduard,, 1839-1915,: Motettum : Terra tremuit ; ad 4 voces inaequales ; op. 40","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023533_00015/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12023533_00015","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12022771/manifest","label":"Vorlesungsverzeichnis. 1898/99. WS","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12022771_00062/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12022771_00062","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12022770/manifest","label":"Vorlesungsverzeichnis. 1899. SS","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12022770_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12022770_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12022716/manifest","label":"Bowman, Harold Martin: Preliminary Stages of the Peace of Amiens : the Diplomatic Relations of Great Britain and France from the Fall of the Directory to the Death of Emperor Paul of Russia, November 1799-March 1801","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12022716_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12022716_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12020371/manifest","label":"Osmanli : journal bi-mensuel ; organe de la Jeune Turquie. 2. 1898/99, 1. Dez. - 15. Nov. = Nr. 25 - 48","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12020371_00052/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12020371_00052","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12020321/manifest","label":"Orientalistische Literaturzeitung : Zeitschrift für die Wissenschaft vom ganzen Orient und seinen Beziehungen zu den angrenzenden Kulturkreisen. 2. 1899","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12020321_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12020321_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018867/manifest","label":"Ḫaimī, Al-Ḥasan Ibn-Aḥmad Al-: Zur Geschichte Abessiniens im 17. Jahrhundert : der Gesandschaftsbericht","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018867_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018867_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018864/manifest","label":"Bernabei, Giuseppe Antonio: Missa ad regias agni dapes : ad quatuor voces inaequales","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018864_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018864_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018863/manifest","label":"Carrière, Auguste: Het'anos Hayastani owt' meheannern Agat'angeġosi ew M. Xorenac'woy hamemat : k'nnadatakan owsowmnasirowt'iwn A. Kariêri","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018863_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018863_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018862/manifest","label":"Gazančean, Yovhannês: Ewdokioy hayoc' gawaṙabarbaṙẹ","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018862_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018862_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018861/manifest","label":"Gowrikean, Grigoris: Hayk' Yeġisabet'owpolis Dransilowanioy : 1680 - 1779. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018861_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018861_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018860/manifest","label":"Mserianc, Levon: Hayerên barbaṙaxôsowt'iwn : anor owsowmnasirowt'eanc patmowt'iwnẹ, očn, ew xndirnerẹ, hayerên lezowi patmowt'ean nkatmamb ownec'ac nšanakowt'eambn handerj","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018860_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018860_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018858/manifest","label":"Ġulām Ḥusain Salīm, -1817: Riyázu-s-salátin, History of Bengal. Fasciculus 5","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018858_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018858_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018857/manifest","label":"The Varáha Purána. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018857_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018857_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018856/manifest","label":"The Śānkhāyana Śrauta Sūtra : together with the commentary of varadattasuta ānartīya. 4, Adh. XVII. XVIII. The commentary of Govinda : new series, no. 938","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018856_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018856_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018855/manifest","label":"〈〈Das〉〉 Vaterland : patriotischer Kalender. 1899","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018855_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018855_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018854/manifest","label":"Orb, Michael: Zur Casuistik der Actinomycose","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018854_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018854_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018853/manifest","label":"Druebin, Simon: Die Herstellung wägbarer Mengen von Blutplättchen bei den Säugethieren und die wirklichen Blutplättchen des Frosches","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018853_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018853_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018852/manifest","label":"Redlich, Johann Ernst: Ueber ein Lustrum poliklinischer Geburtshilfe","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018852_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018852_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018851/manifest","label":"Koch, Edmund: Über die therapeutische Wirkung des Salophen","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018851_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018851_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018850/manifest","label":"Orthen, Jacob, 1866-: Ueber die mechanische Uebererregbarkeit des Nervus facialis","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018850_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018850_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018849/manifest","label":"Koch, Emil: Ein Beitrag zur Kenntniss des chirurgischen Scharlach : aus dem Kinder-Spital zu Basel","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018849_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018849_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018848/manifest","label":"Mirus, Martin: Eine Predigt, Vber das schöne Sprüchlein: Also hat Gott die Welt geliebet, Johann. am dritten Capitel : In welchem Erstlich der Text vnnd Wort erkleret, vnd dann angezeiget, wie die gantze Bibel in diesem Sprüchlein verfasset vnd begriffen ist. Gethan in der Schloßkirchen zu Dreßden, Anno 1593.","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018848_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018848_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018847/manifest","label":"Warhafftige Newe Zeittung. Bericht was sich auff dem Feldzug, den die Keyserliche Mayestat Anno M.D.XLiij. Im October wider den König von Franckreich vorgenommen, zu getragen hat","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018847_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018847_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018846/manifest","label":"Ettner von Eiteritz, Johann Christoph: Des Getreuen Eckarths ungewissenhaffter Apotecker : In welchem wie ein rechtschaffener Apotecker beschaffen seyn, was er vor Tugenden an sich nehmen, und welcherley Laster er fliehen soll; Hernach bewehrteste Artzney-Mittel in allerhand Kranckheiten und Zufällen menschlichen Leibes zu gebrauchen; Dann sonderliche Philosophische, Politische, Medicinische, am meisten aber Chymische Observationes, Anmerckungen und Elaborationes, wie auch eine gründliche Erörterung vieler zweifelhaffter Vorträge; Endlich welcher gestalt man sich auf Reisen und so wohl in fremden als einheimischen Zusammenkünften verhalten soll: Mit Beyfügung Sinn- und Lehr-reicher, erschröcklicher und lustiger Begebenheiten vorgestellet werden","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018846_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018846_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018845/manifest","label":"Precios Corrientes de los generos fabricados y expedidos por Förster y Günther de Nuremberga","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018845_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018845_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018843/manifest","label":"Althamer, Andreas: Conciliationes locorum scripturæ, qui specie Tenvs Inter se pugnare uidentur: Centuriæ duæ : Andrea Althamero Avthore. Præter inspersas hincinde additiones, accesserunt huic aeditioni triginta locorum bini seu paria. & negotium Sacramentorum sub finem pie ac diligenter tractatum. Additus est insuper Index sanè quàm copiosus, eorum quæ hic tractantur","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018843_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018843_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018842/manifest","label":"Bartholomaeus, Coloniensis: Bartholomei Coloniensis Epistola Mythologica : cu[m] quorundam difficilium vocabulo[rum] in ea posito[rum] luculenta interpretatione","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018842_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018842_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018838/manifest","label":"Wimmer, Gottlieb August: Neuestes Gemälde von Afrika und den dazu gehörigen Inseln. 1","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018838_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018838_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018837/manifest","label":"Ornement De L'Esprit Et De La Mémoire, Ou Choix D'Anecdotes, De Traits Intéressans, Et De Narrations Historiques","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018837_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018837_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018835/manifest","label":"Lagerkatalog. 183. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018835_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018835_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018834/manifest","label":"Lagerkatalog. 182. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018834_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018834_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018833/manifest","label":"Lagerkatalog. 181. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018833_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018833_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018832/manifest","label":"Lagerkatalog. 180. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018832_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018832_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018831/manifest","label":"Lagerkatalog. 179. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018831_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018831_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018830/manifest","label":"Lagerkatalog. 178. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018830_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018830_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018829/manifest","label":"Lagerkatalog. 177. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018829_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018829_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018828/manifest","label":"Lagerkatalog. 176. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018828_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018828_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018827/manifest","label":"Lagerkatalog. 172. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018827_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018827_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018826/manifest","label":"Lagerkatalog. 171. 1886","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018826_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018826_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018825/manifest","label":"Lagerkatalog. 170. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018825_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018825_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018824/manifest","label":"Lagerkatalog. 169. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018824_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018824_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018823/manifest","label":"Lagerkatalog. 168. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018823_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018823_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018822/manifest","label":"Lagerkatalog. 167. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018822_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018822_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018821/manifest","label":"Lagerkatalog. 166. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018821_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018821_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018820/manifest","label":"Lagerkatalog. 165. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018820_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018820_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018819/manifest","label":"Lagerkatalog. 145. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018819_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018819_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018818/manifest","label":"Lagerkatalog. 144. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018818_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018818_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018817/manifest","label":"Lagerkatalog. 162. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018817_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018817_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018816/manifest","label":"Lagerkatalog. 161. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018816_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018816_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018815/manifest","label":"Lagerkatalog. 160. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018815_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018815_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018814/manifest","label":"Lagerkatalog. 159. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018814_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018814_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018813/manifest","label":"Lagerkatalog. 158. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018813_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018813_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018812/manifest","label":"Lagerkatalog. 157. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018812_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018812_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018811/manifest","label":"Lagerkatalog. 156. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018811_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018811_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018810/manifest","label":"Lagerkatalog. 155. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018810_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018810_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018809/manifest","label":"Lagerkatalog. 154. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018809_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018809_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018808/manifest","label":"Lagerkatalog. 153. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018808_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018808_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018807/manifest","label":"Lagerkatalog. 152. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018807_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018807_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018806/manifest","label":"Lagerkatalog. 151. 1885","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018806_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018806_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018805/manifest","label":"Lagerkatalog. 150. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018805_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018805_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018804/manifest","label":"Lagerkatalog. 149. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018804_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018804_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018803/manifest","label":"Lagerkatalog. 148. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018803_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018803_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018802/manifest","label":"Lagerkatalog. 147. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018802_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018802_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018801/manifest","label":"Lagerkatalog. 146. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018801_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018801_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018800/manifest","label":"Lagerkatalog. 142. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018800_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018800_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018799/manifest","label":"Lagerkatalog. 141. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018799_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018799_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018798/manifest","label":"Lagerkatalog. 140. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018798_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018798_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018797/manifest","label":"Lagerkatalog. 139. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018797_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018797_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018796/manifest","label":"Lagerkatalog. 138. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018796_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018796_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018795/manifest","label":"Lagerkatalog. 137. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018795_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018795_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018794/manifest","label":"Lagerkatalog. 136. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018794_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018794_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018793/manifest","label":"Lagerkatalog. 135. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018793_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018793_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018792/manifest","label":"Lagerkatalog. 134. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018792_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018792_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018791/manifest","label":"Lagerkatalog. 133. 1884","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018791_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018791_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018790/manifest","label":"Lagerkatalog. 132. 1883","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018790_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018790_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018789/manifest","label":"Lagerkatalog. 131. 1883","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018789_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018789_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018788/manifest","label":"Lagerkatalog. 130. 1883","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018788_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018788_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018787/manifest","label":"Lagerkatalog. 129. 1883","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018787_00036/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018787_00036","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018786/manifest","label":"Blätter für Volks- und Landwirthschaft, für Familien- und Hauswesen. 1894","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018786_00020/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018786_00020","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018785/manifest","label":"Der fränkische Bauer : Eigentum und Organ des Christlichen Bauernvereins für Unterfranken und Angrenzende Gebiete. 7. 1899","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018785_00006/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018785_00006","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018781/manifest","label":"Einfeltige erklerung Des drey vnd Zwantzigsten Trostreichen Psalms Dauids, Der Herr ist mein Hirdt, etc. : Itzo in der betrübten vnd trawrigen zeit, allen bedrengten vnd bekümmerten frommen Christen, sehr nützlich vnd tröstlich, teglich zu betrachten. Nach Christo dem Herrn, vnserm Ertzhirten vnd Bischoffe vnserer Seelen, zu ehren Dediciret, Allen Stenden Geistlich vnd Weltlich, Hoch vnd Nidrig, Adel vnd Vnadel, Ampts vnd Regiments personen, so Gottes Wort vnd Kunst lieben, vnd Gelärten personen zur förderung gewogen","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018781_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018781_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018776/manifest","label":"La Haye de: La Politiqve Civile Et Militaire des Venitiens","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018776_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018776_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018775/manifest","label":"Geschichte der Erziehung der pfälzischen Wittelsbacher : Urkunden. 2, Namen- und Sachregister","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018775_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018775_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018774/manifest","label":"Schuffenhauer, W.: Façadenbuch : Sammlung von Façaden neu ausgeführter Wohnhäuser und Original-Entwürfe ; nebst Grundrissen und Details. 5. Sammlung, Façaden-Album","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018774_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018774_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018773/manifest","label":"Schuffenhauer, W.: Façadenbuch : Sammlung von Façaden neu ausgeführter Wohnhäuser und Original-Entwürfe ; nebst Grundrissen und Details. 1. - 4. Sammlung","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018773_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018773_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018771/manifest","label":"Auberon : testi francesi inediti","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018771_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018771_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018770/manifest","label":"Eisenreiter, Franz: Ueber cavernöse Angiome am Halse","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018770_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018770_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018769/manifest","label":"Revue musicale Sainte Cécile : publ. bi-mensuelle. 6. 1898/99","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018769_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018769_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018768/manifest","label":"Neujahrsblatt der Allgemeinen Musikgesellschaft Zürich auf das Jahr .... 87. 1899","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018768_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018768_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018765/manifest","label":"Officivm B. Mariæ Virginis: Das ist, Vnser lieben Frawen Curß, zu dreyen vnderschiedlichen Zeiten zubetten : Wie er newlich reformiert, vnd auß Befelch Bapst Pii deß Fünfften, außgangen: Den andächtigen Christen zu gutem verteutscht, vnd in Truck gegeben","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018765_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018765_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018764/manifest","label":"Helmreich, Andreas: Kunstbüchlein. Wie man künstlich die Weine halten, vnd für allen Zufällen bewahren, den brechhafftigen vnd abgefallenen Wein, widerumb zu recht bringen, allerley Kräuter vnd gewürtzte Wein, Bier vnd WeinEssig machen soll : Zu Nutz vnd Dienst allen Weinhändlern, Schencken, vnd denen so mit Wein vnd Bier umbgehen, aus den fürnembsten Büchern Natürlicher Künsten, Zusammen gezogen, verbessert, vnd zum andernmal ausgangen","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018764_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018764_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018762/manifest","label":"Eyn Außtzug etlicher Practica vnd Prophetzeyen auff vergangene vnd zukunfftige Jhar, Sybille, Brigitte, Cirilli, Joachim des Abtes, Methodij vnnd bruder Reynharts, Wird weren bis auff das M.D.lxxxi. jhar.","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018762_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018762_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018757/manifest","label":"Hohe Kammer der Abgeordneten! Betreff: Ehrerbietigste Petition des Vereins für Schulreform in Bayern, \"Reform der Mittelschulen\". (Mit 3 Beilagen) : München, den 25. Januar 1890","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018757_00007/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018757_00007","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018756/manifest","label":"Lange, Friedrich: Denkschrift zur Begründung eines Vereins für Schulreform : Berlin, im Februar 1889","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018756_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018756_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018755/manifest","label":"Bericht über Verlauf und Erfolg der Werbungen für den Verein für Schulreform in Bayern, erstattet in der öffentlichen Vereinsversammlung am 27. November 1889 im großen Saale des Kunstgewerbehauses vom Vereinsrechner, Rittmeister à l. s. Julius Schulze","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018755_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018755_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018754/manifest","label":"München, den [...] 18[...] An den Verein für Schulreform in Bayern","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018754_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018754_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018753/manifest","label":"Drucksache. An den Vereinsausschuss p. Adr.: Herrn Rittmeister à la s. Julius Schulze (Vereinscassier)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018753_00002/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018753_00002","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018752/manifest","label":"Falch, G.: Verein für Schulrefom in Bayern : Wir beehren uns, Ihnen in der Anlage die Satzungen unseres Vereines ... zu übersenden ...","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018752_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018752_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018751/manifest","label":"Datum [...] Ich erläre hierdurch meinen Beitritt zum Verein für Schulreform und werde einen Jahresbeitrag von [...] Mark zahlen. Name: [...] Stand: [...] Wohnort: [...]","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018751_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018751_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018750/manifest","label":"Satzungen des Vereins für Schulreform : (beschlossen in der constituirenden Versammlung am 4. April 1889)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018750_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018750_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018749/manifest","label":"Falch, G.: Verein für Schulrefom in Bayern : Wir beehren uns, Ihnen in der Anlage die Satzungen unseres Vereines ... zu übersenden ...","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018749_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018749_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018748/manifest","label":"Schulze, Julius: Verein für Schulreform betreffend : München, 3. Juni 1889. Barerstraße 33/I. ...","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018748_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018748_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018747/manifest","label":"Schulze, Julius: Der Kampf um die Schulreform : dargestellt in Bildern aus dem Alltagsleben","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018747_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018747_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018746/manifest","label":"María de Jesús, de Agreda: Mistica citta di dio ... : istoria divina e vita della vergine madre di dio, regina, e signora nostra Maria santissima ... ; di piu accresciuta con Il prologo Galeato, Vita della vener. madre scrittrice, con le Note divotissime .... 4","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018746_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018746_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018745/manifest","label":"Jiménez Samaniego, José: Prologo Galeato o sia Discorso Preliminare","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018745_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018745_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018744/manifest","label":"Echo vom Gebirge : illustriertes Fachblatt für Zitherspiel. 17. 1899","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018744_00005/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018744_00005","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018743/manifest","label":"Geschäfts-Bericht der Actiengesellschaft vormals Frister & Rossmann zu Berlin für das Geschäftsjahr .... 1898 (1899)","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018743_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018743_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018738/manifest","label":"Augustinus, Aurelius, Heiliger: Divi Avrelii Avgvstini De Doctrina Christiana Libri quatuor : unà cum singulorum Argumentis","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018738_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018738_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018737/manifest","label":"Ferdinand I., Heiliges Römisches Reich, Kaiser: Landtsordnung der Fürstlichen Graffschafft Tirol","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018737_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018737_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018736/manifest","label":"Strena Ad Potentiss: Cæsarem Rvdolphvm II. Archidvcem Austriæ, Regemq[ue] Bohemiæ, &c. Et Illvstrem Heroa, Ac D. D. Vilhelmvm Vrsinum Rosenbergensem &c. Amplissimosq[ue] Ordines Regni Dom: in Comitijs Pragensibus congregandos, auspice Christo Emmanvele, ad 12. Ianuarij: An: sal: 1580. : Additus est geminus Index librr[!]: editorum à Th. M. hactenus atq[ue] edendorum postmodò","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018736_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018736_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018735/manifest","label":"Vehemens, Ac, Devota Incerti Avthoris, Ad Svmmvm Pontificem, Ad Christianos Principes Cvnctosq[ue] Fideles Exhortatio: Ad Terrae, Sancte, Et Christi Patrimonii: Ab Infidelibvs Occvpati Recvperationem, Et Dire Christianorvm Calamitatis Vltionem Atq[ue] Vindictam, Seram Qvidem, Sed Eo, Magis Pro Exitialivm Iam Malorvm Gravitate Necessariam","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018735_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018735_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018734/manifest","label":"Hauser, Josef: Frühlingsboten : Concert-Fantasie im Ländlerstyl [für Zither] ; op. 12","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018734_00002/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018734_00002","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018733/manifest","label":"Habert, Johannes Evangelista: II Tantum ergo : harmonisirter Choral für 4 Singstimmen ; op. 31","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018733_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018733_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018732/manifest","label":"Habert, Johannes Evangelista: Verschiedene Gesänge : für 4 u. mehrere Stimmen abwechselnd mit Choral ; op. 19","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018732_00006/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018732_00006","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018731/manifest","label":"Gutmann, Friedrich: Walzer-Kränzchen : für 1 oder 2 Zithern ; op. 4","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018731_00011/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018731_00011","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018730/manifest","label":"Gutmann, Friedrich: Walzer-Guirlande : für 1 oder 2 Zithern arr. ; op. 11","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018730_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018730_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018729/manifest","label":"Mühlauer, Michael: Walzer : für Zither mit willkürlicher Begl. einer 2. Zither oder 1 Violine ; op. 33","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018729_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018729_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018728/manifest","label":"Mühlauer, Michael: Steyerische Tänze : für d. Zither mit willkührl. Begl. einer 2. Zither oder 1 Violine ; op. 21","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018728_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018728_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018727/manifest","label":"Fischer, C. M.: Rekrutenmarsch : über e. Favoritlied von F. Kücken ; für 2 (oder auch 1) Zither ; op. 4","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018727_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018727_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018726/manifest","label":"Fischer, C. M.: Marsch über d. beliebte thüringische Volkslied Ach wie ist's möglich dann : für 2 oder auch 1 Zither comp. ; op. 12","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018726_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018726_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018725/manifest","label":"Mühlauer, Michael: Marsch : für Zither mit willkürl. Begl. einer 2. Zither oder 1 Violine ; op. 35","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018725_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018725_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018724/manifest","label":"Fischer, C. M.: Liedermarsch : für 2 (oder auch 1) Zither ; op. 7","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018724_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018724_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018723/manifest","label":"Mühlauer, Michael: Ländler : für Zither u. Flageolet ; op. 39","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018723_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018723_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018722/manifest","label":"Mühlauer, Michael: Laendler : für Zither mit willkürlicher Begl. einer 2. Zither oder 1 Violine ; op. 30","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018722_00003/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018722_00003","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018721/manifest","label":"Gutmann, Friedrich: Irenen-Polka-Mazurka : für 1 oder 2 Zithern ; op. 30","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018721_00004/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018721_00004","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018720/manifest","label":"Mühlauer, Michael: Gemütliche Tanzln : Ländler für 2 Zithern ; op. 51","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018720_00014/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018720_00014","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018719/manifest","label":"Mühlauer, Michael: Frühlingsmarsch : für Zither mit willkürl. Begl. einer 2. Zither oder 1 Violine ; op. 24","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018719_00004/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018719_00004","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018718/manifest","label":"Feyertag, Friedrich: Erinnerung an Starnberg : Ländler für 1 Zither mit willkührl. Begl. e. 2. Zither","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018718_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018718_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018717/manifest","label":"Gutmann, Friedrich: Erinnerung an die frohe Jugendzeit : Ländler für 1 oder 2 Zithern ; op. 33","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018717_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018717_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018716/manifest","label":"Bayern, Maximilian in: Aus den Bergen : Ländler ; op. 43","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018716_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018716_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018715/manifest","label":"Mühlauer, Michael: Alpenklänge : Steyrer Ländler ; für 2 Zithern ; op. 64","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018715_00009/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018715_00009","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018714/manifest","label":"Burgstaller, Franz Xaver, 1815-: 100 Unterländler : für 2 Zithern ; auch für Violin & Zither, oder 2 Violinen oder 2 gleich stimmende Clarinetten ; op. 5. 2. Lieferung, 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018714_00038/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018714_00038","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018713/manifest","label":"Burgstaller, Franz Xaver, 1815-: 100 Unterländler : für 2 Zithern ; auch für Violin & Zither, oder 2 Violinen oder 2 gleich stimmende Clarinetten ; op. 5. 1. Lieferung","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018713_00049/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018713_00049","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018712/manifest","label":"Bruckner, J.: Johannes-Ländler : op. 12 ; für 2 Zithern comp.","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018712_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018712_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018711/manifest","label":"Bauer, Carl: Still vergnügt : 2 Parthien Ländler für d. Zither mit willkürl. Begl. e. 2. Zither ; op. 2","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018711_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018711_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018706/manifest","label":"Luther, Martin: Das einer mit dem andern nicht zürnen, vnd sich niemand selbs rechen solle, eine schöne Predigt : Vermanung zur Gedult vnd Sanfftmut, ein ander Predigt, D. Mart. Luth.","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018706_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018706_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018705/manifest","label":"Lagerkatalog. 407. 1898","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018705_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018705_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018704/manifest","label":"Lagerkatalog. 406. 1898","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018704_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018704_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018703/manifest","label":"Lagerkatalog. 405. 1898","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018703_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018703_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018702/manifest","label":"Lagerkatalog. 404. 1898","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018702_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018702_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018701/manifest","label":"Luther, Martin: Czwo predigt auff die Epistel S. Pauli. i. Thess. iiij. : D. Marti. Luther gethan vber der leiche des Chürfursten Hertzog Friderichs zu Sachssenn. Jtem eyne tröstunge an Chürfursten von Sachsen seliger vnd Christlicher gedechtnis Freytags nach Misericordia D[omi]ni den letzten seynes lebens hie auff erden","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018701_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018701_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018700/manifest","label":"Lagerkatalog. 403. 1898","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018700_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018700_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018699/manifest","label":"Lagerkatalog. 402. 1898","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018699_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018699_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018698/manifest","label":"Lagerkatalog. 401. 1898","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018698_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018698_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018696/manifest","label":"Lagerkatalog. 398. 1898","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018696_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018696_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018695/manifest","label":"Lagerkatalog. 389. 1897","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018695_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018695_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}},{"@type":"sc:Manifest","@id":"https://api.digitale-sammlungen.de/iiif/presentation/v2/bsb12018694/manifest","label":"Lagerkatalog. 386. 1897","thumbnail":{"@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018694_00001/full/250,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://api.digitale-sammlungen.de/iiif/image/v2/bsb12018694_00001","profile":"http://iiif.io/api/image/2/level2.json","protocol":"http://iiif.io/api/image"},"format":"image/jpeg"}}],"next":"https://api.digitale-sammlungen.de/iiif/presentation/v2/collection/top?cursor=AoIIP4AAACtic2IxMjAxODY5NA==","total":3074231,"attribution":"Bayerische Staatsbibliothek"} diff --git a/fixtures/presentation-2/paginated-collection.json b/fixtures/presentation-2/paginated-collection.json new file mode 100644 index 0000000..127b2b6 --- /dev/null +++ b/fixtures/presentation-2/paginated-collection.json @@ -0,0 +1,10 @@ +{ + "@context": "http://iiif.io/api/presentation/2/context.json", + "@id": "https://api.digitale-sammlungen.de/iiif/presentation/v2/collection/top", + "@type": "sc:Collection", + "label": "Top Level Collection for BSB Digital Collections", + "first": "https://api.digitale-sammlungen.de/iiif/presentation/v2/collection/top?cursor=initial", + "total": 3074231, + "attribution": "Bayerische Staatsbibliothek", + "viewingHint": "top" +} diff --git a/scripts/update-cookbook.mjs b/scripts/update-cookbook.mjs index ccb4a6f..c789024 100644 --- a/scripts/update-cookbook.mjs +++ b/scripts/update-cookbook.mjs @@ -5,6 +5,8 @@ import { join } from 'node:path'; const { writeFile } = promises; +const fetch = global.fetch; + GlobalRegistrator.register(); const matcher = /https:\/\/iiif\.io\/api\/cookbook\/recipe\/([^\/.]*)\//; diff --git a/src/presentation-2/traverse.ts b/src/presentation-2/traverse.ts index 769619f..3ecc58c 100644 --- a/src/presentation-2/traverse.ts +++ b/src/presentation-2/traverse.ts @@ -169,9 +169,18 @@ export class Traverse< ...(collection.members || []), ]; + const seenIds: string[] = []; + const filteredMembers = members.filter(resource => { + if (seenIds.includes(resource['@id'])) { + return false; + } + seenIds.push(resource['@id']); + return true; + }); + delete collection.collections; delete collection.manifests; - collection.members = members; + collection.members = filteredMembers; } if (collection.manifests) { @@ -199,6 +208,12 @@ export class Traverse< if (typeof member === 'string') { return member; } + if (member['@type'] === 'sc:Collection') { + return this.traverseCollection(member); + } + if (member['@type'] === 'sc:Manifest') { + return this.traverseManifest(member as any); + } return this.traverseUnknown(member); }); } diff --git a/src/presentation-2/upgrader.ts b/src/presentation-2/upgrader.ts index 77b276d..db31463 100644 --- a/src/presentation-2/upgrader.ts +++ b/src/presentation-2/upgrader.ts @@ -10,7 +10,7 @@ const configuration = { attributionLabel: 'Attribution', lang: 'none', providerId: 'http://example.org/provider', - providerName: 'Unknown', + providerName: '', }; function compatLanguageMap(inputLangProperty?: unknown): Array { @@ -498,6 +498,7 @@ function linkingProperties(resource: Presentation2.LinkingProperties & Presentat const related = resource.related ? (Array.isArray(resource.related) ? resource.related : [resource.related]) : []; const layer = resource.contentLayer as Presentation2.Layer; + return { provider: resource.logo || related.length @@ -529,12 +530,90 @@ function embeddedContentProperties(resource: Presentation2.CharsEmbeddedContent) }; } +function stringOrRefToRef(object: any, type: string) { + if (!object) return null; + if (typeof object === 'string') { + return { + id: object, + type, + }; + } + + if (typeof object?.['@id'] === 'string') { + return { + id: object['@id'], + type, + }; + } + + if (typeof object.id === 'string') { + return { + id: object.id, + type, + }; + } + + return null; +} + +function paginationProperties(collection: Presentation2.Collection) { + // This is a sort of "IIIF Presentation 3.1" upgrade before 4.0 adds Collections and CollectionPages. + // v2 supports paged Collections, so this is a stop-gap solution. Strict implementations can ignore it. + // Properties: + // - first + // - total + // - prev + // - next + const additionalProperties: any = {}; + + if ((collection as any).first) { + // Note: This is a stop-gap solution for "v3.1", which does not have CollectionPages. + const ref = stringOrRefToRef((collection as any).first, 'Collection'); + if (ref) { + additionalProperties.first = ref; + } + } + + if ((collection as any).total || (collection as any).total === 0) { + additionalProperties.total = (collection as any).total; + } + + if ((collection as any).prev) { + const ref = stringOrRefToRef((collection as any).prev, 'Collection'); + if (ref) { + additionalProperties.prev = ref; + } + } + + if ((collection as any).next) { + const ref = stringOrRefToRef((collection as any).next, 'Collection'); + if (ref) { + additionalProperties.next = ref; + } + } + + return additionalProperties as any; +} + +function removeEmptyItems(resources: any[]) { + const toReturn = []; + for (const originalResource of resources) { + const resource = {...originalResource}; + if (resource.items && resource.items.length === 0) { + delete resource.items; + } + toReturn.push(resource); + } + return toReturn; +} + function upgradeCollection(collection: Presentation2.Collection): Presentation3.Collection { return removeUndefinedProperties({ ...technicalProperties(collection), ...descriptiveProperties>(collection), ...linkingProperties(collection), - items: collection.members as any, + ...paginationProperties(collection), + items: removeEmptyItems(collection.members as any), }); } @@ -552,8 +631,6 @@ function upgradeManifest(manifest: Presentation2.Manifest): Presentation3.Manife let start = undefined; let viewingDirection = undefined; for (const sequence of manifest.sequences || []) { - console.log(sequence); - if (sequence.canvases.length) { allCanvases.push(...sequence.canvases); } @@ -853,8 +930,14 @@ export function convertPresentation2(entity: any): Presentation3.Manifest | Pres entity['@context'].indexOf('http://iiif.io/api/presentation/2/context.json') !== -1 || // Yale context. entity['@context'] === 'http://www.shared-canvas.org/ns/context.json')) || - entity['@context'] === 'http://iiif.io/api/image/2/context.json' + entity['@context'] === 'http://iiif.io/api/image/2/context.json' || + // No-context is possible. + (entity['@id'] && entity['@type'] === 'sc:Collection') || + (entity['@id'] && entity['@type'] === 'sc:Manifest') ) { + if (!entity['@context']) { + entity['@context'] = 'http://iiif.io/api/presentation/2/context.json'; + } return presentation2to3.traverseUnknown(entity); } return entity; diff --git a/src/presentation-3/serialize-presentation-3.ts b/src/presentation-3/serialize-presentation-3.ts index 4d66043..660fe41 100644 --- a/src/presentation-3/serialize-presentation-3.ts +++ b/src/presentation-3/serialize-presentation-3.ts @@ -141,13 +141,23 @@ export const serializeConfigPresentation3: SerializeConfig = { // Only a snippet. ...technicalProperties(entity), ...(yield* descriptiveProperties(entity)), + ['navPlace', (entity as any).navPlace], + ]; + } + + let context: any = 'http://iiif.io/api/presentation/3/context.json'; + + if (entity.navPlace || itemsHaveNavPlace(entity)) { + context = [ + 'http://iiif.io/api/presentation/3/context.json', + 'http://iiif.io/api/extension/navplace/context.json', ]; } return [ [ '@context', - (entity as any)['@context'] ? (entity as any)['@context'] : 'http://iiif.io/api/presentation/3/context.json', + (entity as any)['@context'] ? (entity as any)['@context'] : context, ], ...technicalProperties(entity), ...(yield* descriptiveProperties(entity)), @@ -299,8 +309,17 @@ export const serializeConfigPresentation3: SerializeConfig = { Collection: function* (entity, state, { isTopLevel }) { if (isTopLevel) { + let context: any = 'http://iiif.io/api/presentation/3/context.json'; + + if (entity.navPlace || itemsHaveNavPlace(entity)) { + context = [ + 'http://iiif.io/api/extension/navplace/context.json', + 'http://iiif.io/api/presentation/3/context.json', + ]; + } + return [ - ['@context', 'http://iiif.io/api/presentation/3/context.json'], + ['@context', context], ...technicalProperties(entity), ...(yield* descriptiveProperties(entity)), ...(yield* linkingProperties(entity)), @@ -308,7 +327,11 @@ export const serializeConfigPresentation3: SerializeConfig = { ['navPlace', (entity as any).navPlace], // @todo remove when types are updated ]; } - return [...technicalProperties(entity), ...(yield* descriptiveProperties(entity))]; + return [ + ...technicalProperties(entity), + ...(yield* descriptiveProperties(entity)), + ['navPlace', (entity as any).navPlace], + ]; }, Range: function* (entity) { @@ -354,3 +377,18 @@ function mergeRemainingProperties(entries: [string, any][], object: any): [strin } return entries; } + + +function itemsHaveNavPlace(item: any) { + if (!item.items || !Array.isArray(item.items)) { + return false; + } + + for (const singleItem of item.items) { + if (singleItem.navPlace) { + return true; + } + } + + return false; +} diff --git a/src/presentation-3/traverse.ts b/src/presentation-3/traverse.ts index 8cc73ee..a61560e 100644 --- a/src/presentation-3/traverse.ts +++ b/src/presentation-3/traverse.ts @@ -229,8 +229,10 @@ export class Traverse { traverseCollection(collection: Collection, parent?: any): Collection { return this.traverseType( this.traverseDescriptive( - this.traverseInlineAnnotationPages( - this.traverseLinking(this.traverseLinkedCanvases(this.traverseCollectionItems(collection as any))) + this.traverseNavPlace( + this.traverseInlineAnnotationPages( + this.traverseLinking(this.traverseLinkedCanvases(this.traverseCollectionItems(collection as any))) + ) ) ), { parent }, @@ -265,11 +267,12 @@ export class Traverse { _traverseManifest: (manifest: Manifest) => Manifest = compose( this.traverseManifestItems.bind(this), + this.traverseNavPlace.bind(this), this.traverseLinking.bind(this), this.traverseDescriptive.bind(this), this.traverseLinkedCanvases.bind(this), this.traverseManifestStructures.bind(this), - this.traverseInlineAnnotationPages.bind(this) + this.traverseInlineAnnotationPages.bind(this), ); traverseManifest(manifest: Manifest, parent?: any): Manifest {