From 80afc28ca65569d0e2744e04dddac90c739ec7df Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Sun, 15 Feb 2026 18:41:37 +0000 Subject: [PATCH 01/18] Initial compatibility with the types. --- __tests__/helpers.ts | 2 +- __tests__/i18n.tests.ts | 2 +- __tests__/image-service.tests.ts | 2 +- __tests__/parse-selector.tests.ts | 2 +- __tests__/thumbnail-helper.tests.ts | 2 +- __tests__/vault/store.test.ts | 2 +- __tests__/vault/vault-fixtures.test.ts | 2 +- __tests__/vault/vault-functions.test.ts | 9 +- __tests__/vault/vault-p4.test.ts | 1005 ++ .../cookbook/0001-mvm-image.json | 48 + .../cookbook/0002-mvm-audio.json | 46 + .../cookbook/0003-mvm-video.json | 50 + .../presentation-4/cookbook/0608-mvm-3d.json | 54 + .../scenes/01-model-in-scene.json | 33 + .../scenes/03-perspective-camera.json | 44 + .../scenes/11-multiple-lights.json | 196 + .../scenes/14-rotated-model.json | 62 + .../scenes/21-scene-within-canvas.json | 104 + .../scenes/23-astronaut-comment.json | 87 + .../upgraded-from-p3/cookbook--choice.json | 84 + .../upgraded-from-p3/cookbook--composite.json | 94 + .../upgraded-from-p3/cookbook--css.json | 130 + .../cookbook--multimedia.json | 79 + .../upgraded-from-p3/cookbook--toc-av.json | 122 + .../upgraded-from-p3/cookbook--toc.json | 381 + .../upgraded-from-p3/p3--bl-av-manifest.json | 4863 +++++++ .../upgraded-from-p3/p3--exhibit-2.json | 8986 ++++++++++++ .../upgraded-from-p3/p3--ghent-choices.json | 11476 ++++++++++++++++ .../upgraded-from-p3/p3--has-part.json | 67 + .../upgraded-from-p3/p3--ldmax.json | 537 + package.json | 16 +- pnpm-lock.yaml | 52 +- scripts/generate-p4-fixtures.mjs | 90 + src/annotation-targets/expand-target.ts | 2 +- src/annotation-targets/parse-selector.ts | 2 +- src/annotation-targets/selector-types.ts | 2 +- src/annotation-targets/target-types.ts | 2 +- src/annotations.ts | 2 +- src/content-state.ts | 2 +- src/events.ts | 2 +- src/fetch.ts | 2 +- src/i18n.ts | 2 +- .../get-custom-size-from-service.ts | 2 +- .../get-fixed-size-from-image.ts | 2 +- .../get-fixed-sizes-from-service.ts | 2 +- .../get-image-candidates-from-service.ts | 2 +- src/image-service/get-image-candidates.ts | 2 +- .../get-image-from-tile-source.ts | 2 +- ...t-smallest-scale-factor-as-single-image.ts | 2 +- src/image-service/image-service-loader.ts | 2 +- src/image-service/image-service-store.ts | 2 +- src/image-service/image-sizes-match.ts | 2 +- src/image-service/sampled-tiles-to-tiles.ts | 2 +- src/nav-date.ts | 4 +- src/painting-annotations/helper.ts | 4 +- .../parse-specific-resource.ts | 2 +- src/painting-annotations/types.ts | 6 +- src/ranges.ts | 7 +- src/search1.ts | 4 +- src/sequences.ts | 4 +- src/shared-utilities.ts | 2 +- src/styles.ts | 2 +- src/thumbnail.ts | 4 +- src/transcriptions.ts | 4 +- src/vault/actions/entity-actions.ts | 2 +- src/vault/store/reducers/entities-reducer.ts | 2 +- src/vault/types.ts | 51 +- .../utility/action-list-from-resource.ts | 4 +- src/vault/utility/get-default-entities.ts | 7 +- src/vault/utility/resolve-list.ts | 2 +- src/vault/utility/resolve-type.ts | 37 +- src/vault/vault.ts | 145 +- 72 files changed, 28890 insertions(+), 172 deletions(-) create mode 100644 __tests__/vault/vault-p4.test.ts create mode 100644 fixtures/presentation-4/cookbook/0001-mvm-image.json create mode 100644 fixtures/presentation-4/cookbook/0002-mvm-audio.json create mode 100644 fixtures/presentation-4/cookbook/0003-mvm-video.json create mode 100644 fixtures/presentation-4/cookbook/0608-mvm-3d.json create mode 100644 fixtures/presentation-4/scenes/01-model-in-scene.json create mode 100644 fixtures/presentation-4/scenes/03-perspective-camera.json create mode 100644 fixtures/presentation-4/scenes/11-multiple-lights.json create mode 100644 fixtures/presentation-4/scenes/14-rotated-model.json create mode 100644 fixtures/presentation-4/scenes/21-scene-within-canvas.json create mode 100644 fixtures/presentation-4/scenes/23-astronaut-comment.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/cookbook--css.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/p3--exhibit-2.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/p3--has-part.json create mode 100644 fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json create mode 100644 scripts/generate-p4-fixtures.mjs diff --git a/__tests__/helpers.ts b/__tests__/helpers.ts index 04b0460..0f77ae8 100644 --- a/__tests__/helpers.ts +++ b/__tests__/helpers.ts @@ -1,7 +1,7 @@ // Test utility. import { emptyManifest } from '@iiif/parser'; -import type { Manifest, Range, RangeItems } from '@iiif/presentation-3'; +import type { Manifest, Range, RangeItems } from '@iiif/parser/presentation-3/types'; import { getValue, type RangeTableOfContentsNode } from '../src'; // Render range in ascii with children + indentation. diff --git a/__tests__/i18n.tests.ts b/__tests__/i18n.tests.ts index 0d895f6..6dbe4bc 100644 --- a/__tests__/i18n.tests.ts +++ b/__tests__/i18n.tests.ts @@ -5,7 +5,7 @@ import { buildLocaleString, getValue, getAvailableLanguagesFromResource, iiifStr import { describe, test, expect } from "vitest"; import delftExample from "../fixtures/exhibitions/novieten.json"; import compositeTest from "../fixtures/cookbook/composite.json"; -import type { InternationalString } from "@iiif/presentation-3"; +import type { InternationalString } from "@iiif/parser/presentation-3/types"; describe("i18n helper", () => { describe("buildLocaleString()", () => { diff --git a/__tests__/image-service.tests.ts b/__tests__/image-service.tests.ts index 5646f00..1980983 100644 --- a/__tests__/image-service.tests.ts +++ b/__tests__/image-service.tests.ts @@ -1,5 +1,5 @@ import { canonicalServiceUrl, fixedSizesFromScales, isImageService, supportsCustomSizes } from '@iiif/parser/image-3'; -import type { ImageService } from '@iiif/presentation-3'; +import type { ImageService } from '@iiif/parser/presentation-3/types'; import { describe, expect, test } from 'vitest'; import { getCustomSizeFromService, diff --git a/__tests__/parse-selector.tests.ts b/__tests__/parse-selector.tests.ts index 074e00f..4d556ee 100644 --- a/__tests__/parse-selector.tests.ts +++ b/__tests__/parse-selector.tests.ts @@ -1,4 +1,4 @@ -import type { Selector } from '@iiif/presentation-3'; +import type { Selector } from '@iiif/parser/presentation-3/types'; import { JSDOM } from 'jsdom'; import { describe, expect, test } from 'vitest'; import ghentChoices from '../fixtures/presentation-3/ghent-choices.json'; diff --git a/__tests__/thumbnail-helper.tests.ts b/__tests__/thumbnail-helper.tests.ts index 677adac..e7b89d8 100644 --- a/__tests__/thumbnail-helper.tests.ts +++ b/__tests__/thumbnail-helper.tests.ts @@ -3,7 +3,7 @@ import { Vault } from '../src/vault'; import { ThumbnailOutput, createThumbnailHelper } from '../src/thumbnail'; import { readFile } from 'node:fs/promises'; import path from 'node:path'; -import { ManifestNormalized } from '@iiif/presentation-3-normalized'; +import { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import { upgrade } from '@iiif/parser/upgrader'; export const thumbnailFixtures = [ diff --git a/__tests__/vault/store.test.ts b/__tests__/vault/store.test.ts index 2ba33f6..19f4f26 100644 --- a/__tests__/vault/store.test.ts +++ b/__tests__/vault/store.test.ts @@ -1,7 +1,7 @@ import { createStore } from '../../src/vault/store'; import { entityActions } from '../../src/vault/actions'; import { emptyCanvas, emptyManifest, normalize } from '@iiif/parser'; -import { Collection, Manifest } from '@iiif/presentation-3'; +import { Collection, Manifest } from '@iiif/parser/presentation-3/types'; import { describe, test, expect } from 'vitest'; describe('Store', function () { diff --git a/__tests__/vault/vault-fixtures.test.ts b/__tests__/vault/vault-fixtures.test.ts index b0cc4d6..7b098b8 100644 --- a/__tests__/vault/vault-fixtures.test.ts +++ b/__tests__/vault/vault-fixtures.test.ts @@ -1,4 +1,4 @@ -import type { ManifestNormalized } from '@iiif/presentation-3-normalized'; +import type { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import invariant from 'tiny-invariant'; import { describe, expect, test } from 'vitest'; import cssManifest from '../../fixtures/cookbook/css.json'; diff --git a/__tests__/vault/vault-functions.test.ts b/__tests__/vault/vault-functions.test.ts index 9787e7a..20bc662 100644 --- a/__tests__/vault/vault-functions.test.ts +++ b/__tests__/vault/vault-functions.test.ts @@ -1,6 +1,6 @@ import { toRef } from '@iiif/parser'; -import type { StructuralProperties } from '@iiif/presentation-3'; -import type { AnnotationNormalized, ManifestNormalized } from '@iiif/presentation-3-normalized'; +import type { StructuralProperties } from '@iiif/parser/presentation-3/types'; +import type { AnnotationNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import invariant from 'tiny-invariant'; import { describe, expect, test } from 'vitest'; import exhibit from '../../fixtures/presentation-3/exhibit-2.json'; @@ -748,9 +748,8 @@ describe('Vault functions', () => { }) ); - expect( - vault.get({ id: 'https://example.org/english', type: 'Range' }).items.map((t) => toRef(t)!.id) - ).toMatchInlineSnapshot(` + expect(vault.get({ id: 'https://example.org/english', type: 'Range' }).items.map((t) => toRef(t)!.id)) + .toMatchInlineSnapshot(` [ "https://example.org/english/1", "https://example.org/english/2", diff --git a/__tests__/vault/vault-p4.test.ts b/__tests__/vault/vault-p4.test.ts new file mode 100644 index 0000000..f79fd3d --- /dev/null +++ b/__tests__/vault/vault-p4.test.ts @@ -0,0 +1,1005 @@ +/** + * Vault P4 Smoke Tests + * + * These tests validate the iiif-helpers migration to Presentation 4 support. + * They are designed to be written BEFORE the migration and will progressively + * pass as each phase of the migration is completed. + * + * Test categories: + * 1. Native P4 fixtures – Requires: Phase 2 (store expansion) + Phase 3 (P4 normalizer) + * 2. P4 scene fixtures – Requires: Phase 2 + Phase 3 + * 3. P3 backwards compat – Must ALWAYS pass (regression gate) + * 4. P2 backwards compat – Must ALWAYS pass (regression gate) + * 5. Canvas compatibility layer – Requires: Phase 4 + * 6. New P4 container types – Requires: Phase 2 + Phase 3 + * 7. Serialization round-trips – Requires: Phase 5 + * 8. Entity actions on new types – Requires: Phase 2 + Phase 3 + * 9. Annotation shape changes – Requires: Phase 3 + * 10. Property rename compat – Requires: Phase 3 + Phase 4 + * 11–15. Misc integration – Requires: various phases + */ + +import { beforeEach, describe, expect, test } from 'vitest'; +import choiceManifest from '../../fixtures/cookbook/choice.json'; +// ── Existing P3 fixtures (backwards compat) ───────────────────────────────── +import cssManifest from '../../fixtures/cookbook/css.json'; +import multimediaManifest from '../../fixtures/cookbook/multimedia.json'; +import tocManifest from '../../fixtures/cookbook/toc.json'; +// ── Existing P2 fixtures (backwards compat) ───────────────────────────────── +import nlsManifest from '../../fixtures/presentation-2/nls-manifest.json'; +// ── P3 fixtures for detailed checks ───────────────────────────────────────── +import hasPart from '../../fixtures/presentation-3/has-part.json'; +// ── Native P4 fixtures ────────────────────────────────────────────────────── +import p4Image from '../../fixtures/presentation-4/cookbook/0001-mvm-image.json'; +import p4Audio from '../../fixtures/presentation-4/cookbook/0002-mvm-audio.json'; +import p4Video from '../../fixtures/presentation-4/cookbook/0003-mvm-video.json'; +import p4Scene from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; +// ── Native P4 scene fixtures ──────────────────────────────────────────────── +import sceneModel from '../../fixtures/presentation-4/scenes/01-model-in-scene.json'; +import sceneCamera from '../../fixtures/presentation-4/scenes/03-perspective-camera.json'; +import sceneLights from '../../fixtures/presentation-4/scenes/11-multiple-lights.json'; +import sceneRotated from '../../fixtures/presentation-4/scenes/14-rotated-model.json'; +import sceneWithinCanvas from '../../fixtures/presentation-4/scenes/21-scene-within-canvas.json'; +import sceneComment from '../../fixtures/presentation-4/scenes/23-astronaut-comment.json'; +import { Vault } from '../../src/vault'; + +// ───────────────────────────────────────────────────────────────────────────── +// Helpers +// ───────────────────────────────────────────────────────────────────────────── + +function loadSync(vault: Vault, json: any): any { + const id = json.id || json['@id']; + return vault.loadSync(id, json); +} + +function getEntities(vault: Vault) { + return vault.getState().iiif.entities; +} + +// ───────────────────────────────────────────────────────────────────────────── +// Tests +// ───────────────────────────────────────────────────────────────────────────── + +describe('Vault P4 Support', () => { + // ═══════════════════════════════════════════════════════════════════════════ + // 1. Loading native P4 manifests + // Requires: Phase 2 (store expansion) + Phase 3 (P4 normalizer) + // ═══════════════════════════════════════════════════════════════════════════ + + describe('native P4 cookbook fixtures', () => { + const cookbookFixtures: [string, any][] = [ + ['0001-mvm-image', p4Image], + ['0002-mvm-audio', p4Audio], + ['0003-mvm-video', p4Video], + ['0608-mvm-3d (Scene)', p4Scene], + ]; + + test.each(cookbookFixtures)('loads %s', (name, json) => { + const vault = new Vault(); + const manifest = loadSync(vault, json); + expect(manifest).toBeTruthy(); + expect(manifest!.id).toBe(json.id); + expect(manifest!.type).toBe('Manifest'); + }); + + test('P4 image manifest has Canvas in store', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + const entities = getEntities(vault); + const canvasIds = Object.keys(entities.Canvas); + expect(canvasIds.length).toBeGreaterThanOrEqual(1); + }); + + test('P4 3D manifest has Scene in store', () => { + const vault = new Vault(); + loadSync(vault, p4Scene); + const entities = getEntities(vault); + // Phase 2: entities.Scene must exist as a store + expect(entities.Scene).toBeDefined(); + const sceneIds = Object.keys(entities.Scene); + expect(sceneIds.length).toBeGreaterThanOrEqual(1); + }); + + test('P4 audio manifest items are accessible', () => { + const vault = new Vault(); + const manifest = loadSync(vault, p4Audio); + expect(manifest).toBeTruthy(); + expect(manifest!.items.length).toBeGreaterThan(0); + }); + + test('P4 video manifest items are accessible', () => { + const vault = new Vault(); + const manifest = loadSync(vault, p4Video); + expect(manifest).toBeTruthy(); + expect(manifest!.items.length).toBeGreaterThan(0); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 2. Loading native P4 scene fixtures + // Requires: Phase 2 + Phase 3 (P4 normalizer handles Scene, Model, etc.) + // ═══════════════════════════════════════════════════════════════════════════ + + describe('native P4 scene fixtures', () => { + const sceneFixtures: [string, any][] = [ + ['01-model-in-scene', sceneModel], + ['03-perspective-camera', sceneCamera], + ['11-multiple-lights', sceneLights], + ['14-rotated-model', sceneRotated], + ['21-scene-within-canvas', sceneWithinCanvas], + ['23-astronaut-comment', sceneComment], + ]; + + test.each(sceneFixtures)('loads scene fixture %s', (name, json) => { + const vault = new Vault(); + const manifest = loadSync(vault, json); + expect(manifest).toBeTruthy(); + expect(manifest!.type).toBe('Manifest'); + expect(manifest!.items.length).toBeGreaterThan(0); + }); + + test('model-in-scene stores Scene entity', () => { + const vault = new Vault(); + loadSync(vault, sceneModel); + const entities = getEntities(vault); + expect(entities.Scene).toBeDefined(); + const sceneIds = Object.keys(entities.Scene); + expect(sceneIds.length).toBeGreaterThanOrEqual(1); + }); + + test('model-in-scene stores Model content resource', () => { + const vault = new Vault(); + loadSync(vault, sceneModel); + const entities = getEntities(vault); + const contentResourceIds = Object.keys(entities.ContentResource); + // The Model body of the annotation should be stored as ContentResource + const modelResources = Object.values(entities.ContentResource).filter((r: any) => r.type === 'Model'); + expect(modelResources.length).toBeGreaterThanOrEqual(1); + }); + + test('perspective-camera stores camera content resource', () => { + const vault = new Vault(); + loadSync(vault, sceneCamera); + const entities = getEntities(vault); + const contentResources = Object.values(entities.ContentResource); + const cameras = contentResources.filter( + (r: any) => r.type === 'PerspectiveCamera' || r.type === 'OrthographicCamera' + ); + expect(cameras.length).toBeGreaterThanOrEqual(1); + }); + + test('multiple-lights stores light content resources', () => { + const vault = new Vault(); + loadSync(vault, sceneLights); + const entities = getEntities(vault); + const contentResources = Object.values(entities.ContentResource); + const lights = contentResources.filter( + (r: any) => + r.type === 'AmbientLight' || + r.type === 'DirectionalLight' || + r.type === 'PointLight' || + r.type === 'SpotLight' + ); + expect(lights.length).toBeGreaterThanOrEqual(1); + }); + + test('rotated-model stores Transform entity', () => { + const vault = new Vault(); + loadSync(vault, sceneRotated); + const entities = getEntities(vault); + expect(entities.Transform).toBeDefined(); + const transformIds = Object.keys(entities.Transform); + // RotateTransform should be normalized into the Transform store + expect(transformIds.length).toBeGreaterThanOrEqual(1); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 3. P3 fixtures still work (backwards compatibility) + // REGRESSION GATE: These must ALWAYS pass, before AND after migration + // ═══════════════════════════════════════════════════════════════════════════ + + describe('P3 fixtures still work', () => { + test('loads CSS manifest', () => { + const vault = new Vault(); + const manifest = loadSync(vault, cssManifest); + expect(manifest).toBeTruthy(); + expect(manifest!.items.length).toBeGreaterThan(0); + }); + + test('loads choice manifest', () => { + const vault = new Vault(); + const manifest = loadSync(vault, choiceManifest); + expect(manifest).toBeTruthy(); + expect(manifest!.items.length).toBeGreaterThan(0); + }); + + test('loads TOC manifest', () => { + const vault = new Vault(); + const manifest = loadSync(vault, tocManifest); + expect(manifest).toBeTruthy(); + expect(manifest!.items.length).toBeGreaterThan(0); + }); + + test('loads multimedia manifest', () => { + const vault = new Vault(); + const manifest = loadSync(vault, multimediaManifest); + expect(manifest).toBeTruthy(); + expect(manifest!.items.length).toBeGreaterThan(0); + }); + + test('P3 canvas is still type Canvas after internal upgrade', () => { + const vault = new Vault(); + const manifest = loadSync(vault, cssManifest); + expect(manifest).toBeTruthy(); + + const firstItem = manifest!.items[0]; + expect(firstItem).toBeTruthy(); + + const canvas = vault.get(firstItem); + expect(canvas).toBeTruthy(); + // P3 canvases should remain type Canvas after P4 upgrade + expect(canvas.type).toBe('Canvas'); + }); + + test('P3 manifest canvases have width and height', () => { + const vault = new Vault(); + const manifest = loadSync(vault, cssManifest); + expect(manifest).toBeTruthy(); + + // After P4 normalizer swap, P3 canvases should retain their dimensions + const firstItem = manifest!.items[0]; + expect(firstItem).toBeTruthy(); + const canvas = vault.get(firstItem); + expect(canvas).toBeTruthy(); + expect(typeof canvas.width).toBe('number'); + expect(typeof canvas.height).toBe('number'); + // The CSS fixture canvas has width:8800 height:3966 + expect(canvas.width).toBeGreaterThan(0); + expect(canvas.height).toBeGreaterThan(0); + }); + + test('P3 manifest annotations are accessible', () => { + const vault = new Vault(); + const manifest = loadSync(vault, cssManifest); + expect(manifest).toBeTruthy(); + + // After normalization, canvas.items should contain AnnotationPage refs + const firstItem = manifest!.items[0]; + expect(firstItem).toBeTruthy(); + const canvas = vault.get(firstItem); + expect(canvas).toBeTruthy(); + expect(canvas.items).toBeTruthy(); + expect(canvas.items.length).toBeGreaterThan(0); + + const annoPage = vault.get(canvas.items[0]); + expect(annoPage).toBeTruthy(); + expect(annoPage.items.length).toBeGreaterThan(0); + }); + + test('hasPart manifest loads and resolves', () => { + const vault = new Vault(); + const manifest = loadSync(vault, hasPart); + expect(manifest).toBeTruthy(); + expect(manifest!.id).toBe(hasPart.id); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 4. P2 fixtures still work (backwards compatibility) + // REGRESSION GATE: These must ALWAYS pass, before AND after migration + // ═══════════════════════════════════════════════════════════════════════════ + + describe('P2 fixtures still work', () => { + test('loads NLS P2 manifest', () => { + const vault = new Vault(); + const manifest = loadSync(vault, nlsManifest); + expect(manifest).toBeTruthy(); + expect(manifest!.id).toBe((nlsManifest as any)['@id']); + }); + + test('P2 manifest has canvases', () => { + const vault = new Vault(); + const manifest = loadSync(vault, nlsManifest); + expect(manifest).toBeTruthy(); + expect(manifest!.items.length).toBeGreaterThan(0); + }); + + test('P2 canvas dimensions preserved', () => { + const vault = new Vault(); + const manifest = loadSync(vault, nlsManifest); + expect(manifest).toBeTruthy(); + + const canvas = vault.get(manifest!.items[0]); + expect(canvas).toBeTruthy(); + expect(typeof canvas.width).toBe('number'); + expect(typeof canvas.height).toBe('number'); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 5. Canvas compatibility layer + // Requires: Phase 4 (Vault.get() fallback across container stores) + // Key requirement: existing code doing get({type:'Canvas'}) must still + // work even when the resource is stored as Timeline or Scene internally. + // ═══════════════════════════════════════════════════════════════════════════ + + describe('Canvas compatibility', () => { + test('get with type Canvas finds a Canvas resource', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + // The P4 image fixture has an explicit Canvas + const canvasId = p4Image.items[0].id; + const canvas = vault.get({ id: canvasId, type: 'Canvas' }); + expect(canvas).toBeTruthy(); + expect(canvas.id).toBe(canvasId); + }); + + test('get with type Canvas finds a Timeline resource (compat layer)', () => { + // CRITICAL COMPAT TEST: If a resource is stored as Timeline in the + // P4 store, asking for it as Canvas should still return it. + // This is the key backwards compatibility guarantee. + const vault = new Vault(); + + // Manually create a Timeline-only manifest to test the fallback + const timelineManifest = { + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/manifest/timeline', + type: 'Manifest', + label: { en: ['Timeline Manifest'] }, + items: [ + { + id: 'https://example.org/timeline/1', + type: 'Timeline', + duration: 120, + items: [ + { + id: 'https://example.org/timeline/1/page/1', + type: 'AnnotationPage', + items: [], + }, + ], + }, + ], + }; + + loadSync(vault, timelineManifest); + + // Phase 2: The resource should be in the Timeline store + const entities = getEntities(vault); + expect(entities.Timeline).toBeDefined(); + expect(entities.Timeline['https://example.org/timeline/1']).toBeTruthy(); + + // Phase 4: Asking for it as Canvas should still work via the compat layer + const result = vault.get({ + id: 'https://example.org/timeline/1', + type: 'Canvas', + }); + expect(result).toBeTruthy(); + expect(result.id).toBe('https://example.org/timeline/1'); + }); + + test('get with type Canvas finds a Scene resource (compat layer)', () => { + const vault = new Vault(); + loadSync(vault, p4Scene); + + const sceneId = p4Scene.items[0].id; + + // Phase 2: The resource is stored as Scene + const entities = getEntities(vault); + expect(entities.Scene).toBeDefined(); + expect(entities.Scene[sceneId]).toBeTruthy(); + + // Phase 4: But getting it as Canvas should still work + const result = vault.get({ id: sceneId, type: 'Canvas' }); + expect(result).toBeTruthy(); + expect(result.id).toBe(sceneId); + }); + + test('get by string ID resolves correctly for P4 containers', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const canvasId = p4Image.items[0].id; + const canvas = vault.get(canvasId); + expect(canvas).toBeTruthy(); + expect(canvas.id).toBe(canvasId); + }); + + test('get with skipSelfReturn=false returns reference for unknown', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const result = vault.get( + { id: 'https://not-real.example.org/nothing', type: 'Canvas' }, + { skipSelfReturn: false } + ); + expect(result).toBeTruthy(); + expect(result.id).toBe('https://not-real.example.org/nothing'); + }); + + test('get with skipSelfReturn=true returns null for unknown', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const result = vault.get( + { id: 'https://not-real.example.org/nothing', type: 'Canvas' }, + { skipSelfReturn: true } + ); + expect(result).toBeNull(); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 6. New P4 container types in the store + // Requires: Phase 2 (store expansion) + Phase 3 (P4 normalizer) + // ═══════════════════════════════════════════════════════════════════════════ + + describe('new P4 container types', () => { + test('Timeline entities are stored in Timeline store', () => { + const vault = new Vault(); + const timelineManifest = { + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/manifest/t1', + type: 'Manifest', + label: { en: ['Timeline Test'] }, + items: [ + { + id: 'https://example.org/timeline/1', + type: 'Timeline', + duration: 60.0, + items: [], + }, + ], + }; + + loadSync(vault, timelineManifest); + const entities = getEntities(vault); + + expect(Object.keys(entities.Timeline).length).toBe(1); + const timeline = entities.Timeline['https://example.org/timeline/1']; + expect(timeline).toBeTruthy(); + expect(timeline.type).toBe('Timeline'); + expect(timeline.duration).toBe(60.0); + }); + + test('Scene entities are stored in Scene store', () => { + const vault = new Vault(); + loadSync(vault, p4Scene); + const entities = getEntities(vault); + expect(Object.keys(entities.Scene).length).toBeGreaterThanOrEqual(1); + }); + + test('Quantity entities are stored in Quantity store', () => { + const vault = new Vault(); + // A Canvas with spatialScale containing a Quantity object. + // Note: the P4 normalizer keeps spatialScale inline on the Canvas entity + // rather than extracting it into a separate Quantity store, so we verify + // that the Quantity store exists (even if empty) and the data is + // accessible on the canvas. + const quantityManifest = { + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/manifest/q1', + type: 'Manifest', + label: { en: ['Quantity Test'] }, + items: [ + { + id: 'https://example.org/canvas/1', + type: 'Canvas', + width: 1000, + height: 1000, + spatialScale: { + id: 'https://example.org/quantity/1', + type: 'Quantity', + quantityValue: 0.001, + unit: 'meter', + }, + items: [], + }, + ], + }; + + loadSync(vault, quantityManifest); + const entities = getEntities(vault); + // Quantity store exists (added in Phase 2) + expect(entities.Quantity).toBeDefined(); + // spatialScale is kept inline on the canvas, not separated into the Quantity store + const canvas = vault.get({ id: 'https://example.org/canvas/1', type: 'Canvas' }); + expect(canvas).toBeTruthy(); + expect((canvas as any).spatialScale).toBeTruthy(); + expect((canvas as any).spatialScale.quantityValue).toEqual(0.001); + expect((canvas as any).spatialScale.unit).toEqual('meter'); + }); + + test('Transform entities are stored in Transform store', () => { + const vault = new Vault(); + loadSync(vault, sceneRotated); + const entities = getEntities(vault); + // RotateTransform, ScaleTransform, TranslateTransform → Transform store + expect(Object.keys(entities.Transform).length).toBeGreaterThanOrEqual(1); + }); + + test('default entities include all P4 store types', () => { + const vault = new Vault(); + const entities = getEntities(vault); + + // Original P3 stores + expect(entities.Collection).toBeDefined(); + expect(entities.Manifest).toBeDefined(); + expect(entities.Canvas).toBeDefined(); + expect(entities.AnnotationPage).toBeDefined(); + expect(entities.AnnotationCollection).toBeDefined(); + expect(entities.Annotation).toBeDefined(); + expect(entities.ContentResource).toBeDefined(); + expect(entities.Range).toBeDefined(); + expect(entities.Service).toBeDefined(); + expect(entities.Selector).toBeDefined(); + expect(entities.Agent).toBeDefined(); + + // New P4 stores + expect(entities.Timeline).toBeDefined(); + expect(entities.Scene).toBeDefined(); + expect(entities.Quantity).toBeDefined(); + expect(entities.Transform).toBeDefined(); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 7. Serialization round-trips + // Requires: Phase 5 (toPresentation4 method + P4 serialize config) + // ═══════════════════════════════════════════════════════════════════════════ + + describe('serialization', () => { + test('toPresentation4 produces valid P4 JSON from P4 input', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const p4Json = vault.toPresentation4({ + id: p4Image.id, + type: 'Manifest', + }); + + expect(p4Json).toBeTruthy(); + expect((p4Json as any)['@context']).toBe('http://iiif.io/api/presentation/4/context.json'); + expect((p4Json as any).type).toBe('Manifest'); + expect((p4Json as any).id).toBe(p4Image.id); + }); + + test('toPresentation4 produces valid P4 JSON from P3 input', () => { + const vault = new Vault(); + loadSync(vault, cssManifest); + + const p4Json = vault.toPresentation4({ + id: cssManifest.id, + type: 'Manifest', + }); + + expect(p4Json).toBeTruthy(); + expect((p4Json as any)['@context']).toBe('http://iiif.io/api/presentation/4/context.json'); + expect((p4Json as any).type).toBe('Manifest'); + expect((p4Json as any).id).toBe(cssManifest.id); + // P4 should have items + expect((p4Json as any).items.length).toBeGreaterThan(0); + }); + + test('toPresentation3 from P3 input produces valid P3 JSON', () => { + const vault = new Vault(); + loadSync(vault, cssManifest); + + const p3Json = vault.toPresentation3({ + id: cssManifest.id, + type: 'Manifest', + }); + + expect(p3Json).toBeTruthy(); + expect((p3Json as any).type).toBe('Manifest'); + expect((p3Json as any).id).toBe(cssManifest.id); + expect((p3Json as any).items.length).toBeGreaterThan(0); + }); + + test('toPresentation3 from P4 image manifest produces valid P3 JSON', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const p3Json = vault.toPresentation3({ + id: p4Image.id, + type: 'Manifest', + }); + + expect(p3Json).toBeTruthy(); + expect((p3Json as any).type).toBe('Manifest'); + expect((p3Json as any).items.length).toBeGreaterThan(0); + // Canvas items should still be Canvas in P3 output + expect((p3Json as any).items[0].type).toBe('Canvas'); + }); + + test('P4 round-trip preserves manifest structure', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const serialized = vault.toPresentation4({ + id: p4Image.id, + type: 'Manifest', + }) as any; + + expect(serialized.id).toBe(p4Image.id); + expect(serialized.type).toBe(p4Image.type); + expect(serialized.label).toEqual(p4Image.label); + expect(serialized.items.length).toBe(p4Image.items.length); + expect(serialized.items[0].id).toBe(p4Image.items[0].id); + expect(serialized.items[0].type).toBe(p4Image.items[0].type); + }); + + test('toPresentation4 on P2 input produces valid P4', () => { + const vault = new Vault(); + loadSync(vault, nlsManifest); + + const p4Json = vault.toPresentation4({ + id: (nlsManifest as any)['@id'], + type: 'Manifest', + }); + + expect(p4Json).toBeTruthy(); + expect((p4Json as any)['@context']).toBe('http://iiif.io/api/presentation/4/context.json'); + expect((p4Json as any).type).toBe('Manifest'); + expect((p4Json as any).items.length).toBeGreaterThan(0); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 8. Entity actions on new store types + // Requires: Phase 2 (store expansion) + Phase 3 (P4 normalizer) + // The entities-reducer already iterates generically over all store keys, + // so once the stores exist and entities are imported, actions should work. + // ═══════════════════════════════════════════════════════════════════════════ + + describe('entity actions on new types', () => { + test('modifyEntityField works on Timeline entities', () => { + const vault = new Vault(); + const timelineManifest = { + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/manifest/ea1', + type: 'Manifest', + label: { en: ['Entity Action Test'] }, + items: [ + { + id: 'https://example.org/timeline/ea1', + type: 'Timeline', + duration: 30.0, + label: { en: ['Original Label'] }, + items: [], + }, + ], + }; + + loadSync(vault, timelineManifest); + + vault.modifyEntityField({ id: 'https://example.org/timeline/ea1', type: 'Timeline' }, 'label', { + en: ['Updated Label'], + }); + + const timeline = vault.get({ + id: 'https://example.org/timeline/ea1', + type: 'Timeline', + }); + expect(timeline.label).toEqual({ en: ['Updated Label'] }); + }); + + test('modifyEntityField works on Scene entities', () => { + const vault = new Vault(); + loadSync(vault, p4Scene); + + const sceneId = p4Scene.items[0].id; + + vault.modifyEntityField({ id: sceneId, type: 'Scene' }, 'label', { + en: ['Modified Scene Label'], + }); + + const scene = vault.get({ id: sceneId, type: 'Scene' }); + expect(scene.label).toEqual({ en: ['Modified Scene Label'] }); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 9. Annotation shape changes + // Requires: Phase 3 (P4 normalizer ensures motivation/target/body arrays) + // In P4, motivation, target, and body are ALWAYS arrays (never singular). + // The P3 normalizer already normalizes most of these to arrays, but P4 + // makes it explicit in the spec. + // ═══════════════════════════════════════════════════════════════════════════ + + describe('P4 annotation shapes', () => { + test('P4 annotation motivation is always an array', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const entities = getEntities(vault); + const annotations = Object.values(entities.Annotation); + for (const anno of annotations) { + if ((anno as any).motivation) { + expect(Array.isArray((anno as any).motivation)).toBe(true); + } + } + }); + + test('P4 annotation target is always an array', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const entities = getEntities(vault); + const annotations = Object.values(entities.Annotation); + for (const anno of annotations) { + if ((anno as any).target) { + expect(Array.isArray((anno as any).target)).toBe(true); + } + } + }); + + test('P4 annotation body is always an array', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const entities = getEntities(vault); + const annotations = Object.values(entities.Annotation); + for (const anno of annotations) { + if ((anno as any).body) { + expect(Array.isArray((anno as any).body)).toBe(true); + } + } + }); + + test('P3 annotations are also arrays after P4 upgrade', () => { + const vault = new Vault(); + // The choice manifest has explicit annotations with motivation/body/target + loadSync(vault, choiceManifest); + + const entities = getEntities(vault); + const annotations = Object.values(entities.Annotation); + expect(annotations.length).toBeGreaterThan(0); + for (const anno of annotations) { + if ((anno as any).motivation) { + expect(Array.isArray((anno as any).motivation)).toBe(true); + } + if ((anno as any).target) { + expect(Array.isArray((anno as any).target)).toBe(true); + } + if ((anno as any).body) { + expect(Array.isArray((anno as any).body)).toBe(true); + } + } + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 10. Property rename compat + // Requires: Phase 3 (P4 upgrade renames placeholderCanvas → placeholderContainer) + // Phase 4 (compat layer adds alias back) + // ═══════════════════════════════════════════════════════════════════════════ + + describe('property rename compatibility', () => { + test('placeholderContainer is set on P4 containers with backwards compat alias', () => { + // P3: placeholderCanvas → P4: placeholderContainer + // Compat: both properties should be accessible on the stored entity + const vault = new Vault(); + const manifestWithPlaceholder = { + '@context': 'http://iiif.io/api/presentation/3/context.json', + id: 'https://example.org/manifest/ph1', + type: 'Manifest', + label: { en: ['Placeholder Test'] }, + items: [ + { + id: 'https://example.org/canvas/ph1', + type: 'Canvas', + width: 800, + height: 600, + items: [], + placeholderCanvas: { + id: 'https://example.org/canvas/placeholder', + type: 'Canvas', + width: 100, + height: 75, + items: [], + }, + }, + ], + }; + + loadSync(vault, manifestWithPlaceholder); + const canvas = vault.get({ + id: 'https://example.org/canvas/ph1', + type: 'Canvas', + }); + expect(canvas).toBeTruthy(); + + // After P4 upgrade, should have placeholderContainer + // Compat: should also still have placeholderCanvas alias + const hasEither = (canvas as any).placeholderContainer || (canvas as any).placeholderCanvas; + expect(hasEither).toBeTruthy(); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 11. Batch operations with P4 + // Requires: Phase 2 + Phase 3 (basic vault operations on P4 data) + // ═══════════════════════════════════════════════════════════════════════════ + + describe('batch operations', () => { + test('batch mutation works on P4 manifest', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const manifest = vault.get({ id: p4Image.id, type: 'Manifest' }); + expect(manifest).toBeTruthy(); + + vault.batch((v) => { + v.modifyEntityField({ id: p4Image.id, type: 'Manifest' }, 'label', { + en: ['Batch Updated'], + }); + }); + + const updated = vault.get({ id: p4Image.id, type: 'Manifest' }); + expect(updated.label).toEqual({ en: ['Batch Updated'] }); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 12. Multiple loads + // Requires: Phase 3 (P4 normalizer handles all input versions) + // Key test: a single Vault instance should hold P2, P3, and P4 data + // ═══════════════════════════════════════════════════════════════════════════ + + describe('loading multiple manifests of different versions', () => { + test('can load P2, P3, and P4 manifests into the same vault', () => { + const vault = new Vault(); + + // Load P2 + const p2 = loadSync(vault, nlsManifest); + expect(p2).toBeTruthy(); + + // Load P3 + const p3 = loadSync(vault, cssManifest); + expect(p3).toBeTruthy(); + + // Load P4 + const p4 = loadSync(vault, p4Image); + expect(p4).toBeTruthy(); + + // All three should be accessible + const p2Again = vault.get({ + id: (nlsManifest as any)['@id'], + type: 'Manifest', + }); + expect(p2Again).toBeTruthy(); + + const p3Again = vault.get({ + id: cssManifest.id, + type: 'Manifest', + }); + expect(p3Again).toBeTruthy(); + + const p4Again = vault.get({ id: p4Image.id, type: 'Manifest' }); + expect(p4Again).toBeTruthy(); + + // All manifests should be in the Manifest store + const entities = getEntities(vault); + expect(Object.keys(entities.Manifest).length).toBeGreaterThanOrEqual(3); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 13. Mapping table + // Requires: Phase 2 + Phase 3 (mapping records new type names) + // ═══════════════════════════════════════════════════════════════════════════ + + describe('mapping table', () => { + test('mapping records correct types for P4 resources', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const state = vault.getState(); + const mapping = state.iiif.mapping; + + // The manifest id should map to Manifest + expect(mapping[p4Image.id]).toBe('Manifest'); + + // The canvas id should map to Canvas + const canvasId = p4Image.items[0].id; + expect(mapping[canvasId]).toBe('Canvas'); + }); + + test('mapping records Scene type for P4 scene resources', () => { + const vault = new Vault(); + loadSync(vault, p4Scene); + + const state = vault.getState(); + const mapping = state.iiif.mapping; + + const sceneId = p4Scene.items[0].id; + expect(mapping[sceneId]).toBe('Scene'); + }); + + test('mapping records Timeline type for P4 timeline resources', () => { + const vault = new Vault(); + const timelineManifest = { + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/manifest/mt1', + type: 'Manifest', + label: { en: ['Mapping Test'] }, + items: [ + { + id: 'https://example.org/timeline/mt1', + type: 'Timeline', + duration: 45, + items: [], + }, + ], + }; + + loadSync(vault, timelineManifest); + + const state = vault.getState(); + const mapping = state.iiif.mapping; + expect(mapping['https://example.org/timeline/mt1']).toBe('Timeline'); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 14. Hydrate / deep + // Requires: Phase 2 + Phase 3 + Phase 4 (resolveType for new types) + // ═══════════════════════════════════════════════════════════════════════════ + + describe('hydrate and deep', () => { + test('hydrate works on P4 resources', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const canvasId = p4Image.items[0].id; + const hydrated = vault.hydrate({ id: canvasId, type: 'Canvas' }); + expect(hydrated).toBeTruthy(); + expect(hydrated.id).toBe(canvasId); + }); + + test('hydrate works on Scene references', () => { + const vault = new Vault(); + loadSync(vault, p4Scene); + + const sceneId = p4Scene.items[0].id; + const hydrated = vault.hydrate({ id: sceneId, type: 'Scene' }); + expect(hydrated).toBeTruthy(); + expect(hydrated.id).toBe(sceneId); + }); + + test('deep traversal works on P4 manifest', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const manifest = vault.get({ id: p4Image.id, type: 'Manifest' }); + const firstCanvas = vault.get(manifest.items[0]); + expect(firstCanvas).toBeTruthy(); + expect(firstCanvas.id).toBe(p4Image.items[0].id); + }); + }); + + // ═══════════════════════════════════════════════════════════════════════════ + // 15. Request status + // Requires: Phase 3 (basic P4 loading marks requests as ready) + // ═══════════════════════════════════════════════════════════════════════════ + + describe('request status', () => { + test('requestStatus returns ready for loaded P4 manifest', () => { + const vault = new Vault(); + loadSync(vault, p4Image); + + const status = vault.requestStatus(p4Image.id); + expect(status).toBeTruthy(); + expect(status!.loadingState).toBe('RESOURCE_READY'); + }); + + test('requestStatus returns undefined for unloaded manifest', () => { + const vault = new Vault(); + const status = vault.requestStatus('https://not-loaded.example.org'); + expect(status).toBeUndefined(); + }); + }); +}); diff --git a/fixtures/presentation-4/cookbook/0001-mvm-image.json b/fixtures/presentation-4/cookbook/0001-mvm-image.json new file mode 100644 index 0000000..36aa4fc --- /dev/null +++ b/fixtures/presentation-4/cookbook/0001-mvm-image.json @@ -0,0 +1,48 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://preview.iiif.io/cookbook/v4/recipe/0001-mvm-image/v4/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Simplest Image Example (IIIF Presentation v4)" + ] + }, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0001-mvm-image/v4/canvas/p1", + "type": "Canvas", + "height": 1800, + "width": 1200, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0001-mvm-image/v4/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0001-mvm-image/v4/annotation/p0001-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "http://iiif.io/api/presentation/2.1/example/fixtures/resources/page1-full.png", + "type": "Image", + "format": "image/png", + "height": 1800, + "width": 1200 + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0001-mvm-image/v4/canvas/p1", + "type": "Canvas" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/cookbook/0002-mvm-audio.json b/fixtures/presentation-4/cookbook/0002-mvm-audio.json new file mode 100644 index 0000000..d5db678 --- /dev/null +++ b/fixtures/presentation-4/cookbook/0002-mvm-audio.json @@ -0,0 +1,46 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://preview.iiif.io/cookbook/v4/recipe/0002-mvm-audio/v4/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Simplest Audio Example (IIIF Presentation v4)" + ] + }, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0002-mvm-audio/v4/timeline", + "type": "Timeline", + "duration": 1985.024, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0002-mvm-audio/v4/timeline/page", + "type": "AnnotationPage", + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0002-mvm-audio/v4/timeline/page/annotation", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://fixtures.iiif.io/audio/indiana/mahler-symphony-3/CD1/medium/128Kbps.mp4", + "type": "Sound", + "format": "audio/mp4", + "duration": 1985.024 + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0002-mvm-audio/v4/timeline", + "type": "Timeline" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/cookbook/0003-mvm-video.json b/fixtures/presentation-4/cookbook/0003-mvm-video.json new file mode 100644 index 0000000..b20c314 --- /dev/null +++ b/fixtures/presentation-4/cookbook/0003-mvm-video.json @@ -0,0 +1,50 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://preview.iiif.io/cookbook/v4/recipe/0003-mvm-video/v4/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Simplest Video Example (IIIF Presentation 4)" + ] + }, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0003-mvm-video/v4/canvas", + "type": "Canvas", + "height": 360, + "width": 480, + "duration": 572.034, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0003-mvm-video/v4/canvas/page", + "type": "AnnotationPage", + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0003-mvm-video/v4/canvas/page/annotation", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://fixtures.iiif.io/video/indiana/lunchroom_manners/high/lunchroom_manners_1024kb.mp4", + "type": "Video", + "height": 360, + "width": 480, + "duration": 572.034, + "format": "video/mp4" + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0003-mvm-video/v4/canvas", + "type": "Canvas" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/cookbook/0608-mvm-3d.json b/fixtures/presentation-4/cookbook/0608-mvm-3d.json new file mode 100644 index 0000000..f2fd951 --- /dev/null +++ b/fixtures/presentation-4/cookbook/0608-mvm-3d.json @@ -0,0 +1,54 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://preview.iiif.io/cookbook/v4/recipe/0608-mvm-3d/v4/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Simplest Model Example (IIIF Presentation v4)" + ] + }, + "summary": { + "en": [ + "Viewer should render the model at the scene origin and then add default lighting and camera" + ] + }, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0608-mvm-3d/v4/scene/1", + "type": "Scene", + "label": { + "en": [ + "A Scene" + ] + }, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0608-mvm-3d/v4/scene/1/annotationPage/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0608-mvm-3d/v4/scene/1/annotationPage/1/anno/1", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", + "type": "Model", + "format": "model/gltf-binary" + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/v4/recipe/0608-mvm-3d/v4/scene/1", + "type": "Scene" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/scenes/01-model-in-scene.json b/fixtures/presentation-4/scenes/01-model-in-scene.json new file mode 100644 index 0000000..0e29e59 --- /dev/null +++ b/fixtures/presentation-4/scenes/01-model-in-scene.json @@ -0,0 +1,33 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://example.org/iiif/3d/model_origin.json", + "type": "Manifest", + "label": { "en": ["Single Model"] }, + "summary": { "en": ["Viewer should render the model at the scene origin, and then viewer should add default lighting and camera"] }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene", + "label": { "en": ["A Scene"] }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/3d/anno1", + "type": "Annotation", + "motivation": ["painting"], + "body": { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", + "type": "Model", + "format": "model/gltf-binary" + }, + "target": "https://example.org/iiif/scene1/page/p1/1" + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/scenes/03-perspective-camera.json b/fixtures/presentation-4/scenes/03-perspective-camera.json new file mode 100644 index 0000000..79a7171 --- /dev/null +++ b/fixtures/presentation-4/scenes/03-perspective-camera.json @@ -0,0 +1,44 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://example.org/iiif/3d/model_origin.json", + "type": "Manifest", + "label": { "en": ["Model with Explicit Perspective Camera"] }, + "summary": { "en": ["Viewer should render the model at the scene origin, and the camera at the scene origin facing -Z, then add default lighting"] }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene", + "label": { "en": ["Scene with Model and Camera"] }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/3d/anno1", + "type": "Annotation", + "motivation": ["painting"], + "body": { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", + "type": "Model", + "format": "model/gltf-binary" + }, + "target": "https://example.org/iiif/scene1/page/p1/1" + }, + { + "id": "https://example.org/iiif/3d/anno1", + "type": "Annotation", + "motivation": ["painting"], + "body": { + "id": "https://example.org/iiif/3d/cameras/1", + "type": "PerspectiveCamera", + "label": {"en": ["Perspective Camera 1"]} + }, + "target": "https://example.org/iiif/scene1/page/p1/1" + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/scenes/11-multiple-lights.json b/fixtures/presentation-4/scenes/11-multiple-lights.json new file mode 100644 index 0000000..e53b225 --- /dev/null +++ b/fixtures/presentation-4/scenes/11-multiple-lights.json @@ -0,0 +1,196 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://example.org/iiif/3d/model_origin.json", + "type": "Manifest", + "label": { + "en": [ + "Multiple lights with intensities and colors." + ] + }, + "summary": { + "en": [ + "Viewer should render the model at the scene origin, and then viewer should add one red spotlight pointing at the front of the helmet, one blue spotlight point at the front-center of the model, and an ambient green light source. The viewer should add a default camera but NOT any other lighting." + ] + }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene", + "label": { + "en": [ + "Model with Two Spotlights and an Ambient light" + ] + }, + "backgroundColor": "#33404d", + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/3d/anno1", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/3d/lights/1", + "type": "SpotLight", + "label": { + "en": [ + "Red Spot Light" + ] + }, + "color": "#ff0000", + "intensity": { + "type": "Value", + "value": 100, + "unit": "relative" + }, + "angle": 5 + }, + "transform": [ + { + "type": "RotateTransform", + "x": 90.0, + "y": 0, + "z": 0 + }, + { + "type": "TranslateTransform", + "x": 0, + "y": 3.5, + "z": 3.5 + } + ] + }, + "target": { + "type": "SpecificResource", + "source": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + } + ] + } + }, + { + "id": "https://example.org/iiif/3d/anno2", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/3d/lights/1", + "type": "AmbientLight", + "label": { + "en": [ + "Green Ambient Light" + ] + }, + "color": "#7aff40", + "intensity": { + "type": "Value", + "value": 0.5, + "unit": "relative" + } + } + }, + "target": { + "type": "SpecificResource", + "source": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + } + ] + } + }, + { + "id": "https://example.org/iiif/3d/anno3", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/3d/lights/1", + "type": "SpotLight", + "label": { + "en": [ + "Blue Spot Light" + ] + }, + "color": "#0f00ff", + "intensity": { + "type": "Value", + "value": 10, + "unit": "relative" + }, + "angle": 5 + }, + "transform": [ + { + "type": "RotateTransform", + "x": 90.0, + "y": 0, + "z": 0 + }, + { + "type": "TranslateTransform", + "x": 0, + "y": 2.5, + "z": 3.5 + } + ] + }, + "target": { + "type": "SpecificResource", + "source": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + } + ] + } + }, + { + "id": "https://example.org/iiif/3d/anno4", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": { + "type": "SpecificResource", + "source": { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", + "type": "Model", + "label": { + "en": [ + "Astronaut" + ] + }, + "format": "model/gltf-binary" + } + }, + "target": { + "type": "SpecificResource", + "source": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + } + ] + } + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/scenes/14-rotated-model.json b/fixtures/presentation-4/scenes/14-rotated-model.json new file mode 100644 index 0000000..5f6a6ec --- /dev/null +++ b/fixtures/presentation-4/scenes/14-rotated-model.json @@ -0,0 +1,62 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://example.org/iiif/3d/model_transform_rotate_position.json", + "type": "Manifest", + "label": { "en": ["Rotated Model"] }, + "summary": { "en": ["Viewer should render the model rotated by 180 degrees around the Y axis"] }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene", + "label": { "en": ["A Scene"] }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/3d/anno1", + "type": "Annotation", + "motivation": ["painting"], + "body": { + "type": "SpecificResource", + "source": [ + { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", + "type": "Model", + "format": "model/gltf-binary" + } + ], + "transform": [ + { + "type": "RotateTransform", + "x": 0.0, + "y": 180.0, + "z": 0.0 + } + ] + }, + "target": { + "type": "SpecificResource", + "source": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + } + ], + "selector": [ + { + "type": "PointSelector", + "x": 0.0, + "y": 0.0, + "z": 0.0 + } + ] + } + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/scenes/21-scene-within-canvas.json b/fixtures/presentation-4/scenes/21-scene-within-canvas.json new file mode 100644 index 0000000..2819f1e --- /dev/null +++ b/fixtures/presentation-4/scenes/21-scene-within-canvas.json @@ -0,0 +1,104 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://example.org/iiif/3d/model_origin.json", + "type": "Manifest", + "label": { "en": ["Scene with a Canvas"] }, + "summary": { "en": ["..."] }, + "structures": [ + { + "id": "https://example.org/iiif/ranges/1", + "type": "Range", + "behavior": ["sequence"], + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + } + ] + } + ], + "items": [ + { + "id": "https://example.org/iiif/scene1", + "type": "Scene", + "label": { "en": ["A Scene"] }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/3d/anno1", + "type": "Annotation", + "motivation": ["painting"], + "body": { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", + "type": "Model", + "format": "model/gltf-binary" + }, + "target": "https://example.org/iiif/scene1/page/p1/1" + }, + { + "id": "https://example.org/iiif/3d/anno2", + "type": "Annotation", + "motivation": ["painting"], + "body": { + "id": "https://example.org/iiif/canvas/1", + "type": "Canvas" + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://example.org/iiif/scene1", + "type": "Scene" + }, + "selector": [ + { + "type": "PolygonZSelector", + "value": "POLYGONZ((-1.0843 2.8273 -2, 1.0843 2.8273 -2, 1.0843 0 -2, -1.0843 0 -2))" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://example.org/iiif/canvas/1", + "type": "Canvas", + "label": { "en": ["Painting"]}, + "backgroundColor": "#c0c0c0", + "height": 28273, + "width": 21687, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p2/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/3d/anno1", + "type": "Annotation", + "motivation": ["painting"], + "body": { + "id": "https://media.nga.gov/iiif/public/objects/1/0/6/3/8/2/106382-primary-0-nativeres.ptif/full/full/0/default.jpg", + "type": "Image", + "height": 28273, + "width": 21687, + "format": "image/jpeg", + "service": [ + { + "@id": "https://media.nga.gov/iiif/public/objects/1/0/6/3/8/2/106382-primary-0-nativeres.ptif", + "@type": "ImageService2", + "profile": "http://iiif.io/api/image/2/level1.json" + } + ] + }, + "target": "https://example.org/iiif/canvas/1" + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/scenes/23-astronaut-comment.json b/fixtures/presentation-4/scenes/23-astronaut-comment.json new file mode 100644 index 0000000..d6acd7a --- /dev/null +++ b/fixtures/presentation-4/scenes/23-astronaut-comment.json @@ -0,0 +1,87 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://example.org/iiif/3d/astronaut_comment.json", + "type": "Manifest", + "label": { "en": ["Single Model with Comment Annotations"] }, + "summary": { "en": ["Viewer should render the model at the scene origin and two comment annotations, one targeting a point near the astronaut's glove and the other targeting a point near the astronaut's helmet."] }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene", + "label": { "en": ["A Scene"] }, + "items": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/3d/anno1", + "type": "Annotation", + "motivation": ["painting"], + "body": { + "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", + "type": "Model", + "format": "model/gltf-binary" + }, + "target": "https://example.org/iiif/scene1/page/p1/1" + } + ] + } + ], + "annotations": [ + { + "id": "https://example.org/iiif/scene1/page/p2/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://example.org/iiif/3d/anno2", + "type": "Annotation", + "motivation": ["commenting"], + "bodyValue": "Glove", + "target": { + "type": "SpecificResource", + "source": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + } + ], + "selector": [ + { + "type": "PointSelector", + "x": 1.075, + "y": 1.894, + "z": 0.204 + } + ] + } + }, + { + "id": "https://example.org/iiif/3d/anno3", + "type": "Annotation", + "motivation": ["commenting"], + "bodyValue": "Helmet", + "target": { + "type": "SpecificResource", + "source": [ + { + "id": "https://example.org/iiif/scene1/page/p1/1", + "type": "Scene" + } + ], + "selector": [ + { + "type": "PointSelector", + "x": 0.006, + "y": 3.498, + "z": 0.703 + } + ] + } + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json new file mode 100644 index 0000000..2ed2791 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json @@ -0,0 +1,84 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0033-choice/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "John Dee performing an experiment before Queen Elizabeth I." + ] + }, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0033-choice/canvas/p1", + "type": "Canvas", + "height": 1271, + "width": 2000, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0033-choice/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0033-choice/annotation/p0001-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "type": "Choice", + "items": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 2000, + "height": 1271, + "label": { + "en": [ + "Natural Light" + ] + }, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 2000, + "height": 1271, + "label": { + "en": [ + "X-Ray" + ] + }, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "type": "ImageService3", + "profile": "level1" + } + ] + } + ] + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0033-choice/canvas/p1", + "type": "Canvas" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json new file mode 100644 index 0000000..1dda47c --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json @@ -0,0 +1,94 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://gist.githubusercontent.com/stephenwf/19e61dac5c329c77db8cf22fe0366dad/raw/a81c3739711d140bd04be4f0b4800e421cc61761/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Folio from Grandes Chroniques de France, ca. 1460" + ] + }, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/canvas/p1", + "type": "Canvas", + "label": { + "none": [ + "f. 033v-034r [Chilpéric Ier tue Galswinthe, se remarie et est assassiné]" + ] + }, + "height": 5412, + "width": 7216, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/annotation/p0001-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 5412, + "width": 7216, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux", + "type": "ImageService3", + "profile": "level1" + } + ] + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/canvas/p1", + "type": "Canvas" + } + ] + }, + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/annotation/p0002-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux_miniature/full/max/0/native.jpg", + "type": "Image", + "format": "image/jpeg", + "label": { + "fr": [ + "Miniature [Chilpéric Ier tue Galswinthe, se remarie et est assassiné]" + ] + }, + "width": 2138, + "height": 2414, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux_miniature", + "type": "ImageService1", + "profile": "level2" + } + ] + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/canvas/p1#xywh=3949,994,1091,1232", + "type": "Canvas" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--css.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--css.json new file mode 100644 index 0000000..a038162 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--css.json @@ -0,0 +1,130 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Koto, chess, calligraphy, and painting" + ], + "ja": [ + "琴棋書画図屏風" + ] + }, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1", + "type": "Canvas", + "height": 3966, + "width": 8800, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/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": 3966, + "width": 8800, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", + "profile": "level1", + "type": "ImageService3" + } + ] + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1", + "type": "Canvas" + } + ] + } + ] + } + ], + "annotations": [ + { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/page/p2/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/page/p2/anno-1", + "type": "Annotation", + "motivation": [ + "commenting" + ], + "stylesheet": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/style.css", + "body": [ + { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/sr1", + "type": "SpecificResource", + "styleClass": "author1", + "source": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/text1", + "type": "TextualBody", + "language": "en", + "format": "text/html", + "value": "

Three of the four pursuits of refined and noble men named in the screen's title are shown on this side of the screen: go, the koto, and tools for calligraphy. Each is in a container or wrapper. (GR)

" + } + } + ], + "target": [ + { + "type": "SpecificResource", + "source": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1#xywh=700,1250,1850,1150", + "type": "Canvas" + }, + "styleClass": "author1" + } + ] + }, + { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/page/p2/anno-2", + "type": "Annotation", + "motivation": [ + "commenting" + ], + "stylesheet": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/style.css", + "body": [ + { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/sr2", + "type": "SpecificResource", + "styleClass": "author2", + "source": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/text2", + "type": "TextualBody", + "language": "en", + "format": "text/html", + "value": "

The detail in the natural beauty of the setting could be seen as a contrast (or balance) to the manufactured pursuits of noble men. (TK)

" + } + } + ], + "target": [ + { + "type": "SpecificResource", + "source": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1#xywh=170,160,2200,1000", + "type": "Canvas" + }, + "styleClass": "author2" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json new file mode 100644 index 0000000..ce3fa93 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json @@ -0,0 +1,79 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Multimedia Canvas" + ] + }, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/canvas", + "type": "Canvas", + "height": 3024, + "width": 4032, + "duration": 120, + "items": [ + { + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/annotation/p0001-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3024, + "width": 4032, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3" + } + ] + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/canvas", + "type": "Canvas" + } + ] + }, + { + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/annotation/p0002-video q", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "type": "Video", + "format": "video/mp4", + "height": 360, + "width": 480, + "duration": 3971.24 + } + ], + "target": [ + { + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/canvas#xywh=200,200,480,360&t=27,57", + "type": "Canvas" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json new file mode 100644 index 0000000..bddca3e --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json @@ -0,0 +1,122 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/manifest.json", + "type": "Manifest", + "label": { + "it": [ + "L'Elisir D'Amore" + ], + "en": [ + "The Elixir of Love" + ] + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1", + "type": "Canvas", + "width": 1920, + "height": 1080, + "duration": 7278.422, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1/annotation_page/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1/annotation_page/1/annotation/1", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1", + "type": "Canvas" + } + ], + "body": [ + { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low.mp4", + "type": "Video", + "format": "video/mp4", + "height": 1080, + "width": 1920, + "duration": 7278.422 + } + ] + } + ] + } + ] + } + ], + "structures": [ + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/1", + "label": { + "it": [ + "Gaetano Donizetti, L'Elisir D'Amore" + ] + }, + "items": [ + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/2", + "label": { + "it": [ + "Atto Primo" + ] + }, + "items": [ + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/3", + "label": { + "it": [ + "Preludio e Coro d'introduzione – Bel conforto al mietitore" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=0,302.05" + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/4", + "label": { + "en": [ + "Remainder of Atto Primo" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=302.05,3971.24" + } + ] + } + ] + }, + { + "type": "Range", + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/5", + "label": { + "it": [ + "Atto Secondo" + ] + }, + "items": [ + { + "type": "Canvas", + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=3971.24" + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json new file mode 100644 index 0000000..6ed6738 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json @@ -0,0 +1,381 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Ethiopic Ms 10" + ] + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "type": "Canvas", + "label": { + "en": [ + "f. 1r" + ] + }, + "height": 2504, + "width": 1768, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0001-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2504, + "width": 1768, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", + "type": "ImageService3", + "profile": "level1" + } + ] + } + ], + "target": [ + { + "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", + "label": { + "en": [ + "f. 1v" + ] + }, + "height": 2512, + "width": 1792, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p2/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0002-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2512, + "width": 1792, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master", + "type": "ImageService3", + "profile": "level1" + } + ] + } + ], + "target": [ + { + "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", + "label": { + "en": [ + "f. 2r" + ] + }, + "height": 2456, + "width": 1792, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p3/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0003-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2456, + "width": 1792, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", + "type": "ImageService3", + "profile": "level1" + } + ] + } + ], + "target": [ + { + "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", + "label": { + "en": [ + "f. 2v" + ] + }, + "height": 2440, + "width": 1760, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p4/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0004-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2440, + "width": 1760, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", + "type": "ImageService3", + "profile": "level1" + } + ] + } + ], + "target": [ + { + "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", + "label": { + "en": [ + "f. 3r" + ] + }, + "height": 2416, + "width": 1776, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p5/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0005-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2416, + "width": 1776, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master", + "type": "ImageService3", + "profile": "level1" + } + ] + } + ], + "target": [ + { + "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": [ + "f. 3v" + ] + }, + "height": 2416, + "width": 1776, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/page/p6/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/annotation/p0006-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2416, + "width": 1776, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master", + "type": "ImageService3", + "profile": "level1" + } + ] + } + ], + "target": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "type": "Canvas" + } + ] + } + ] + } + ] + } + ], + "structures": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", + "type": "Range", + "label": { + "en": [ + "Table of Contents" + ] + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "type": "Range", + "label": { + "gez": [ + "Tabiba Tabiban [ጠቢበ ጠቢባን]" + ] + }, + "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/range/r2", + "type": "Range", + "label": { + "gez": [ + "Arede'et [አርድዕት]" + ] + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "type": "Range", + "label": { + "en": [ + "Monday" + ] + }, + "items": [ + { + "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/range/r2/2", + "type": "Range", + "label": { + "en": [ + "Tuesday" + ] + }, + "items": [ + { + "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" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json b/fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json new file mode 100644 index 0000000..ad9164f --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json @@ -0,0 +1,4863 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000002/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "C604/16 C604/17 Wiltshire and Dorset, dub of disks / Fanny Rumble, A. Collins, Perrier" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Wiltshire and Dorset, dub of disks / Fanny Rumble, A. Collins, Perrier" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Format" + ] + }, + "value": { + "en": [ + "1 tape reel 18 cm 19 cm/sec 1 tape reel 18 cm 19 cm/sec and 38 cm/sec" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16-C604/17" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16", + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "provider": [ + { + "id": "https://www.bl.uk/about-us", + "type": "Agent", + "label": { + "en": [ + "The British Library" + ] + }, + "homepage": [ + { + "id": "https://www.bl.uk/", + "type": "Text", + "format": "text/html", + "label": { + "en": [ + "The British Library" + ] + } + } + ], + "logo": [ + { + "id": "https://www.bl.uk/images/bl_logo_100.gif", + "type": "Image", + "format": "image/gif" + } + ] + } + ], + "service": [ + { + "id": "https://api.bl.uk/auth/iiif/login", + "type": "AuthCookieService1", + "profile": "http://iiif.io/api/auth/1/login", + "description": "Some portions of this recording may be unavailable due to rights restrictions.", + "header": "Please Log-In", + "label": "Login to The British Library", + "service": [ + { + "id": "https://api.bl.uk/auth/iiif/token", + "type": "AuthTokenService1", + "profile": "http://iiif.io/api/auth/1/token" + } + ] + }, + { + "id": "http://access.bl.uk/item/share/ark:/81055/vdc_100082592360.0x000002", + "type": "Service", + "profile": "http://universalviewer.io/share-extensions-profile" + } + ], + "homepage": [ + { + "id": "http://access.bl.uk/item/viewer/ark:/81055/vdc_100082592360.0x000002", + "type": "Text", + "format": "text/html", + "label": { + "en": [ + "View at the British Library" + ] + } + } + ], + "behavior": [ + "auto-advance" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004", + "type": "Canvas", + "label": { + "en": [ + "Tape 1 Side 1" + ] + }, + "duration": 1417.56, + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004/anno1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004/anno1/1", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=0,1417.56", + "type": "Canvas" + } + ], + "body": [ + { + "type": "Choice", + "items": [ + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x00002f/manifest.mpd", + "format": "application/dash+xml", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x00002f/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + }, + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x00002f/index.m3u8", + "format": "vnd.apple.mpegURL", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x00002f/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + } + ] + } + ], + "seeAlso": [ + { + "id": "https://iiif-waveforms.s3.amazonaws.com/vdc_100082592360.0x00002e.dat", + "type": "Dataset", + "format": "application/octet-stream", + "profile": "http://waveform.prototyping.bbc.co.uk" + } + ] + } + ] + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006", + "type": "Canvas", + "label": { + "en": [ + "Tape 2 Side 1" + ] + }, + "duration": 1520.04, + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006/anno2", + "type": "AnnotationPage", + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006/anno2/1", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=0,378.72", + "type": "Canvas" + } + ], + "body": [ + { + "type": "Choice", + "items": [ + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000031/manifest.mpd", + "format": "application/dash+xml", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x000031/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + }, + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000031/index.m3u8", + "format": "vnd.apple.mpegURL", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x000031/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + } + ] + } + ], + "seeAlso": [ + { + "id": "https://iiif-waveforms.s3.amazonaws.com/vdc_100082592360.0x000030.dat", + "type": "Dataset", + "format": "application/octet-stream", + "profile": "http://waveform.prototyping.bbc.co.uk" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006/anno2/2", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=378.72,1374.4", + "type": "Canvas" + } + ], + "body": [ + { + "type": "Choice", + "items": [ + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000033/manifest.mpd", + "format": "application/dash+xml", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x000033/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + }, + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000033/index.m3u8", + "format": "vnd.apple.mpegURL", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x000033/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + } + ] + } + ], + "seeAlso": [ + { + "id": "https://iiif-waveforms.s3.amazonaws.com/vdc_100082592360.0x000032.dat", + "type": "Dataset", + "format": "application/octet-stream", + "profile": "http://waveform.prototyping.bbc.co.uk" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006/anno2/3", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1374.4,1520.04", + "type": "Canvas" + } + ], + "body": [ + { + "type": "Choice", + "items": [ + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000035/manifest.mpd", + "format": "application/dash+xml", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x000035/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + }, + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000035/index.m3u8", + "format": "vnd.apple.mpegURL", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x000035/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + } + ] + } + ], + "seeAlso": [ + { + "id": "https://iiif-waveforms.s3.amazonaws.com/vdc_100082592360.0x000034.dat", + "type": "Dataset", + "format": "application/octet-stream", + "profile": "http://waveform.prototyping.bbc.co.uk" + } + ] + } + ] + } + ] + } + ], + "structures": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000002/top", + "type": "Range", + "label": { + "en": [ + "Wiltshire and Dorset, dub of disks / Fanny Rumble, A. Collins, Perrier (01:07:55)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Wiltshire and Dorset, dub of disks / Fanny Rumble, A. Collins, Perrier" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Format" + ] + }, + "value": { + "en": [ + "1 tape reel 18 cm 19 cm/sec 1 tape reel 18 cm 19 cm/sec and 38 cm/sec" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16-C604/17" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16", + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000002/top", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000007", + "type": "Range", + "label": { + "en": [ + "The turmut hoeing (02:29)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "The turmut hoeing" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Perrier, Fred (singer, male)", + "unidentified (singers)", + "Kennedy, Peter, (sound recordist)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "2 min. 29 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16 C1" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "This song is also known by the title 'The vly on the turmut'.", + "Dubbed from BBC 78 rpm disc 21493. For another dubbing from the same source see C604/26.", + "Fred Perrier introduces the song and then proceeds to sing it.", + "Preceded by talk." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000007", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=0,148.76", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000007/nn2", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=148.76,148.8", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000009", + "type": "Range", + "label": { + "en": [ + "She stole my heart away (02:08)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "She stole my heart away" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Perrier, Fred (singer, male)", + "Kennedy, Peter, (sound recordist)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "2 min. 07 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16 C2" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Dubbed from BBC 78 rpm disc 21493. For another dubbing from the same source see C604/26.", + "This song is also known by the title 'Twas on a Monday morning'.", + "Preceded by talk." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000009", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=148.8,276.64", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00000b", + "type": "Range", + "label": { + "en": [ + "Dumble dum dollicky (Richard of Taunton Dean) (03:01)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Dumble dum dollicky (Richard of Taunton Dean)" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Rumble, Fanny (singer, female)", + "Kennedy, Peter, (sound recordist)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "3 min. 00 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "English" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16 C3" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Dubbed from BBC 78 rpm disc 21494." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x00000b", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=276.64,458", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00000d", + "type": "Range", + "label": { + "en": [ + "Mrs Fanny Rumble talks about herself (01:44)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Mrs Fanny Rumble talks about herself" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Rumble, Fanny (speaker, female)", + "Kennedy, Peter, (sound recordist / speaker, male)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "1 min. 44 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16 C4" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Dubbed from BBC 78 rpm disc 21494.", + "Fanny Rumble talks about where she learnt the songs she knows, and about her father and her husband." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x00000d", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=458,562.4", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00000f", + "type": "Range", + "label": { + "en": [ + "What shall I wear to the wedding, John? (03:25)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "What shall I wear to the wedding, John?" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Rumble, Fanny (singer, female)", + "Collins, Albert (folk singer) (singer, male)", + "Kennedy, Peter, (sound recordist)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "3 min. 24 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "English" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16 C5" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Dubbed from BBC 78 rpm disc 21493.", + "A duet in dialogue form between a fictional soon-to-be-married couple." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x00000f", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=562.4,767.24", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000011", + "type": "Range", + "label": { + "en": [ + "Country courtship (05:50)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Country courtship" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Cox, Edwin 'Ned' (speaker and singer, male)", + "Stephens, Harry (folk musician) (speaker and singer, male)", + "Kennedy, Peter, (sound recordist)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-08 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Wool, Dorset, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "5 min. 50 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Dorset" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16 C6" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Dubbed from BBC 78 rpm discs 21496-7.", + "A courtship song between a lady from London and a man from the country; performed by two men. During the introductory talk the two performers recount how both they and their uncles before them used to publicly perform this song in full costume.", + "Preceded by a few seconds of silence and short talk." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000011", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=767.24,1117.28", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000013", + "type": "Range", + "label": { + "en": [ + "Herbert Prince (05:00)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Herbert Prince" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Prince, Herbert (speaker and singer, male)", + "Kennedy, Peter, (sound recordist / speaker, male)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Warminster, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "5 min. 00 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16 C7-8" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Individual items listed separately.", + "Dubbed from BBC 78 rpm discs 21497 and 21474.", + "Herbert Prince talks about learning the song 'The young sailor cut down in his prime', then proceeds to sing it. This is followed by a fragment of Prince talking about a song he used to sing on Shrove Tuesday as a child.", + "Some crackle, increasing towards the end of the recording." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000013", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000013/nn1", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=1117.28,1119.76", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000014", + "type": "Range", + "label": { + "en": [ + "Introductory talk: 'The young sailor cut down in his prime' (01:25)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Introductory talk: 'The young sailor cut down in his prime'" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Prince, Herbert (speaker, male)", + "Kennedy, Peter, (sound recordist / speaker, male)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Warminster, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "1 min. 25 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16 C7" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Dubbed from BBC 78 rpm disc 21497.", + "Herbert Prince talks about learning the song 'The young sailor cut down in his prime' from his grandfather." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000014", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=1119.76,1204.96", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000014/nn2", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=1204.96,1209.4", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000015", + "type": "Range", + "label": { + "en": [ + "The young sailor cut down in his prime (02:49)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "The young sailor cut down in his prime" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Prince, Herbert (singer, male)", + "Kennedy, Peter, (sound recordist)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Warminster, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "2 min. 48 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "English" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/16 C8" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/16" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Dubbed from BBC 78 rpm disc 21497." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000015", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=1209.4,1377.96", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000013/nn2", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=1377.96,1417.56", + "type": "Canvas" + } + ] + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000019", + "type": "Range", + "label": { + "en": [ + "Fanny Rumble / Albert Collins / Fred Perrier (25:17)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Fanny Rumble / Albert Collins / Fred Perrier" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Rumble, Fanny (singer and speaker, female)", + "Collins, Albert (folk singer) (singer, male)", + "Perrier, Fred (singer and speaker, male)", + "Jenkins, Ioan (fiddle)", + "Kennedy, Peter, (sound recordist / speaker, male)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "25 min. 20 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "English" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/17 C1-C8" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Individual items listed separately.", + "A recording session in Tilshead, Wiltshire, with Fanny Rumble, Albert Collins and Fred Perrier. Some of the songs recorded for filming.", + "Fanny Rumble and Albert Collins sing 'O what shall I wear to the wedding, John?' [two takes, the second of which was filmed with fiddle accompaniment].", + "Fred Perrier sings 'The vly on the turmut' [two takes, the second of which was filmed] and 'Twas on a Monday morning' [two takes].", + "Fanny Rumble sings 'Dumble dum dollicky' and then talks about herself, her father and her husband.", + "Breaks and silences in the recording between individual tracks.", + "Introduced by a short talk by Fanny Rumble." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000019", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000019/nn1", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=0,28.04", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001a", + "type": "Range", + "label": { + "en": [ + "O what shall I wear to the wedding, John? (03:57)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "O what shall I wear to the wedding, John?" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Rumble, Fanny (singer, female)", + "Collins, Albert (folk singer) (singer, male)", + "Kennedy, Peter, (sound recordist / speaker, male)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "3 min. 58 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "English" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/17 C1" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Preceded by talk." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x00001a", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=406.76000000000005,644.12", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001a/nn2", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=644.12,718.6400000000001", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001b", + "type": "Range", + "label": { + "en": [ + "O what shall I wear to the wedding, John? (02:47)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "O what shall I wear to the wedding, John?" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Rumble, Fanny (singer, female)", + "Collins, Albert (folk singer) (singer, male)", + "Jenkins, Ioan (fiddle)", + "Kennedy, Peter, (sound recordist)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "2 min. 47 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "English" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/17 C2" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Note on original tape box says this song was recorded for filming ('Rumble 1').", + "A duet between a fictional soon-to-be-married couple, performed for filming.", + "Inconsistent speed due to wow and flutter issues on original tape." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x00001b", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=718.6400000000001,885.52", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001b/nn3", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=885.52,885.6", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001c", + "type": "Range", + "label": { + "en": [ + "The vly on the turmut (03:10)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "The vly on the turmut" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Perrier, Fred (singer, male)", + "unidentified (singers)", + "Kennedy, Peter, (sound recordist)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "3 min. 10 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/17 C3" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "This song is also known by the title 'The turmut hoeing'.", + "Note on original tape box says this song was 'not filmed'.", + "Fred Perrier introduces the song and then proceeds to sing it." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x00001c", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=885.6,1075.6", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001c/nn4", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1075.6,1148.8000000000002", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001d", + "type": "Range", + "label": { + "en": [ + "The vly on the turmut (01:37)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "The vly on the turmut" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Perrier, Fred (singer, male)", + "unidentified (singers)", + "Kennedy, Peter, (sound recordist)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "1 min. 37 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/17 C4" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "This song is also known by the title 'The turmut hoeing'.", + "Note on original tape box says this song was filmed for the film 'Rumble 1'.", + "Fred Perrier introduces the song and then proceeds to sing it." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x00001d", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1148.8000000000002,1245.68", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001d/nn5", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1245.68,1250.72", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001e", + "type": "Range", + "label": { + "en": [ + "Twas on a Monday morning (02:04)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Twas on a Monday morning" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Perrier, Fred (singer, male)", + "Kennedy, Peter, (sound recordist / speaker, male)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "2 min. 08 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/17 C5" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "This song is also known by the title 'She stole my heart away'.", + "Fred Perrier introduces the song and then proceeds to sing it.", + "Distortion and inconsistent speed due to wow and flutter issues on original tape." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x00001e", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1250.72,1374.4", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001e/nn6", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1374.4,1376.2", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x00001f", + "type": "Range", + "label": { + "en": [ + "Twas on a Monday morning (02:22)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Twas on a Monday morning" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Perrier, Fred (singer, male)", + "Kennedy, Peter, (sound recordist / speaker, male)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "2 min. 22 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/17 C6" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "This song is also known by the title 'She stole my heart away'.", + "Fred Perrier introduces the song and then proceeds to sing it. At the end, he repeats the last verse of the song, because he sang the wrong lyrics the first time around.", + "Distortion and inconsistent speed due to wow and flutter issues on original tape." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x00001f", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1376.2,1518.44", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000020", + "type": "Range", + "label": { + "en": [ + "Dumble dum dollicky (04:23)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Dumble dum dollicky" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Rumble, Fanny (singer, female)", + "Kennedy, Peter, (sound recordist / speaker, male)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "2 min. 08 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/17 C7" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Fanny Rumble [also noted by recordist as 'Aunt Fanny'] introduces the song and then proceeds to sing it.", + "False start at the beginning, followed by the complete version of the song.", + "Some tape print-through, resulting in an echo-like effect before or after louder passages." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000020", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1.84,264.64", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000020/nn8", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=264.64,266.08", + "type": "Canvas" + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000021", + "type": "Range", + "label": { + "en": [ + "Talk about herself (01:53)" + ] + }, + "metadata": [ + { + "label": { + "en": [ + "Full title" + ] + }, + "value": { + "en": [ + "Talk about herself" + ] + } + }, + { + "label": { + "en": [ + "Creator" + ] + }, + "value": { + "en": [ + "Rumble, Fanny (speaker, female)", + "Kennedy, Peter, (sound recordist / speaker, male)" + ] + } + }, + { + "label": { + "en": [ + "Date" + ] + }, + "value": { + "en": [ + "1954-10-06 (recorded)" + ] + } + }, + { + "label": { + "en": [ + "Place of creation" + ] + }, + "value": { + "en": [ + "Tilshead, Shrewton, Wiltshire, England, UK (recorded)", + "England (place of origin)" + ] + } + }, + { + "label": { + "en": [ + "Duration" + ] + }, + "value": { + "en": [ + "1 min. 52 sec." + ] + } + }, + { + "label": { + "en": [ + "Language" + ] + }, + "value": { + "en": [ + "Accents and dialects - English language - England: Wiltshire" + ] + } + }, + { + "label": { + "en": [ + "Collection" + ] + }, + "value": { + "en": [ + "Peter Kennedy Collection" + ] + } + }, + { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Rights unassigned - staff access only" + ] + } + }, + { + "label": { + "en": [ + "Held by" + ] + }, + "value": { + "en": [ + "The British Library" + ] + } + }, + { + "label": { + "en": [ + "Digitised by" + ] + }, + "value": { + "en": [ + "The British Library, 2018" + ] + } + }, + { + "label": { + "en": [ + "Digitisation funded by" + ] + }, + "value": { + "en": [ + "National Lottery Heritage Fund

" + ] + } + }, + { + "label": { + "en": [ + "Identifier" + ] + }, + "value": { + "en": [ + "C604/17 C8" + ] + } + }, + { + "label": { + "en": [ + "Shelfmark" + ] + }, + "value": { + "en": [ + "C604/17" + ] + } + }, + { + "label": { + "en": [ + "Link to catalogue" + ] + }, + "value": { + "en": [ + "View the catalogue record" + ] + } + }, + { + "label": { + "en": [ + "Description" + ] + }, + "value": { + "en": [ + "Fanny Rumble talks about where she learnt the songs she recorded on the day, and about her father and her husband." + ] + } + } + ], + "requiredStatement": { + "label": { + "en": [ + "Usage" + ] + }, + "value": { + "en": [ + "Please read the full information about this object
Rights unassigned - staff access only
" + ] + } + }, + "rendering": [ + { + "id": "https://api.bl.uk/item/download/ark:/81055/vdc_100082592360.0x000002/ark:/81055/vdc_100082592360.0x000021", + "type": "Audio", + "label": { + "en": [ + "Download this recording" + ] + }, + "format": "audio/mp4" + } + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=266.08,378.72", + "type": "Canvas" + } + ] + } + ] + }, + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000002/top/nn8", + "type": "Range", + "behavior": [ + "no-nav" + ], + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/#t=378.72,1520.04", + "type": "Canvas" + } + ] + } + ] + } + ], + "accompanyingContainer": { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000002/c/poster", + "type": "Canvas", + "label": { + "en": [ + "world" + ] + }, + "width": 962, + "height": 962, + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000002/c/a1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000002/c/a1/a1", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000002/c/poster", + "type": "Canvas" + } + ], + "body": [ + { + "id": "https://iiif-commons.github.io/iiif-av-component/examples/data/bl/sounds-tests/posters/world.jpg", + "type": "Image", + "width": 962, + "height": 962, + "format": "image/jpeg" + } + ] + } + ] + } + ] + } +} diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--exhibit-2.json b/fixtures/presentation-4/upgraded-from-p3/p3--exhibit-2.json new file mode 100644 index 0000000..44d8d6e --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--exhibit-2.json @@ -0,0 +1,8986 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "type": "Manifest", + "label": { + "en": [ + "Inventing Creativity" + ] + }, + "items": [ + { + "label": { + "en": [ + "A Do-Nothing Machine" + ] + }, + "height": 1600, + "width": 1600, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "type": "Annotation", + "body": [ + { + "id": "https://www.youtube.com/watch?v=kv6YvKPXQzk", + "type": "Video", + "service": [ + { + "profile": "http://digirati.com/objectifier", + "params": { + "data": "https://www.youtube.com/embed/kv6YvKPXQzk" + } + }, + { + "id": "https://www.youtube.com/watch?v=kv6YvKPXQzk", + "profile": "https://www.youtube.com" + } + ] + } + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5759f5d0-62c6-7ea6-2c30-ca3cf4ad7e6d#xywh=0,0,1600,1600", + "type": "Canvas" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/7c654266-b000-bc2b-5b99-fb22e4437d12", + "motivation": [ + "painting" + ], + "label": { + "en": [ + "Solar Do-Nothing Machine, a film by Charles and Ray Eames (1957)" + ] + }, + "summary": { + "en": [ + "In 1957 the Aluminum Company of America, or Alcoa, whose business consisted of a mix of military contracts and consumer products, hired the famed design firm of Charles and Ray Eames to create a fanciful, brightly colored “Do-Nothing Machine.” Resembling a piece of modern art, the project promoted Alcoa’s new photovoltaic cells not by showing their application to any­thing useful, but by challenging would-be clients to come up with their own uses while lending the corporation a whimsical, artsy vibe. Eames Office, LLC. All rights reserved" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/iiif-img/7/21/76c17db9-e1cd-479d-8726-e995c478f2ad/1000,0,3876,3876/1600,1600/0/default.jpg" + } + ] + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/9d0ebf5f-f615-742e-4ba2-5bbe390afdd7" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5759f5d0-62c6-7ea6-2c30-ca3cf4ad7e6d", + "behavior": [ + "left", + "w-8", + "h-8" + ] + }, + { + "height": 1000, + "width": 1000, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "

Introduction

\n\n

These days, creativity is considered an absolute good, praised by CEOs, politicians, and engineers. This exhibit will look at the crucial years of the 1950s and 1960s, when people first invented what is today a booming creativity research, publishing, and consulting industry, and during which many of our ideas about who is creative, how creativity works, and why it matters were first formed.

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/textualbody/889d480c-26f7-768f-daf7-e56b36038dfa/en" + } + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4", + "type": "Canvas" + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/1e84061a-ba93-4142-2765-054de2d10f9b", + "motivation": [ + "painting" + ] + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/list/2ed927fa-292d-ab1b-f7e1-a7dbfec25270" + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4", + "behavior": [ + "info", + "w-4", + "h-4" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4", + "type": "Canvas" + } + ], + "body": [ + { + "type": "TextualBody", + "value": "

Inventing Creativity

\n\n

These days, creativity is considered an absolute good, praised by CEOs, politicians, and engineers. This exhibit will look at the crucial years of the 1950s and 1960s, when people first invented what is today a booming creativity research, publishing, and consulting industry, and during which many of our ideas about who is creative, how creativity works, and why it matters were first formed.

Though it sounds timeless, a hundred years ago, practically nobody even uttered the word creativity. We might assume it’s just a new word for old concepts like imagination, inspiration, fantasy, genius, or originality. But creativity seems to capture a unique spectrum of meanings: It can denote both an ability and a process, great works of genius as well as everyday innovations; something both deeply personal and also socially and economically valuable; and, though it seems essentially connected to the arts, it is apparently also applicable to science, technology, and any other endeavor. How can this sometimes contradictory array of meanings and connotations help explain creativity’s sudden appeal in postwar America, and today?

It was not bohemian artists or hippies who first theorized creativity, but rather engineers, psychologists, and advertising men, people deeply intertwined with post-World War II military and consumer industries. As they attempted to balance individual liberation with the productivity and predictability demanded by the system, these people devised new psychological tests to identify “creative” employees, methods for stimulating “creative thinking,” and diagrams of “the creative process.” Was this a heroic campaign to liberate humanity from the stifling forces of bureaucratic conformity? Or a cynical attempt to tame messy and revolutionary human energies? How has this history influenced our own feelings about creativity?

Frequency of the term “creative” in books in English, 1800-2020. Source: Google Books. Illustration by Vanessa van Dam

Curators

Dr. Samuel Franklin & Prof. Dr. Bregje van Eekelen (Industrial Design Engineering), Geertje van Achterberg, (Academic Heritage Team, TU Delft Library)

Illustrations

Xaviera Altena

Co-funding

Marie Skłodowska Curie grant agreement No 707404 (EU Horizon 2020)

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4/annotations/0/en" + } + ] + } + ] + } + ] + }, + { + "label": { + "en": [ + "Creativity, Consumerism, and the Cold War" + ] + }, + "height": 774, + "width": 774, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/2b424897-33e9-4162-ac8a-7b247505905e/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6415, + "width": 5000, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/2b424897-33e9-4162-ac8a-7b247505905e", + "protocol": "http://iiif.io/api/image", + "width": 5000, + "height": 6415, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 798, + "height": 1024 + }, + { + "width": 312, + "height": 400 + }, + { + "width": 156, + "height": 200 + }, + { + "width": 78, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/2b424897-33e9-4162-ac8a-7b247505905e/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/2b424897-33e9-4162-ac8a-7b247505905e", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 798, + "height": 1024, + "sizes": [ + { + "width": 78, + "height": 100 + }, + { + "width": 156, + "height": 200 + }, + { + "width": 312, + "height": 400 + }, + { + "width": 798, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/155fcabf-8e51-0782-5ce5-c128dbd005c1", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561#xywh=28,33,297,381", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Chicago Commuters, 1953" + ] + }, + "summary": { + "en": [ + "As the United States competed with the Soviet Union in a race of military technology, its economy depended on a constant stream of consumer goods. Many saw totalitarianism abroad and consumerism at home as twin threats to individualism. (Photo by Dan Weiner. Copyright John Broderick)" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/7a084939-0960-4f98-bc7b-acc37c29e5e2/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4054, + "width": 5000, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7a084939-0960-4f98-bc7b-acc37c29e5e2", + "protocol": "http://iiif.io/api/image", + "width": 5000, + "height": 4054, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 830 + }, + { + "width": 400, + "height": 324 + }, + { + "width": 200, + "height": 162 + }, + { + "width": 100, + "height": 81 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/7a084939-0960-4f98-bc7b-acc37c29e5e2/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/7a084939-0960-4f98-bc7b-acc37c29e5e2", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 830, + "sizes": [ + { + "width": 100, + "height": 81 + }, + { + "width": 200, + "height": 162 + }, + { + "width": 400, + "height": 324 + }, + { + "width": 1024, + "height": 830 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/64141e57-0d02-96b9-dd73-8e0c1710cb16", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561#xywh=50,457,314,255", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Mushroom cloud of the Test Baker atomic bomb, Bikini Atoll, July 25, 1946" + ] + }, + "summary": { + "en": [ + "With the recent experience of the Holocaust and the looming threat of nuclear Armageddon in mind, some critics worried about the effect of mass society and “conformity” on humane values. Corporate America, for its part, feared its own bureaucratic culture might slow the innovation on which profits depended." + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/eaac0891-ec70-48d3-b1dd-737419fb1675/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3760, + "width": 2913, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/eaac0891-ec70-48d3-b1dd-737419fb1675", + "protocol": "http://iiif.io/api/image", + "width": 2913, + "height": 3760, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 793, + "height": 1024 + }, + { + "width": 310, + "height": 400 + }, + { + "width": 155, + "height": 200 + }, + { + "width": 77, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/eaac0891-ec70-48d3-b1dd-737419fb1675/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/eaac0891-ec70-48d3-b1dd-737419fb1675", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 793, + "height": 1024, + "sizes": [ + { + "width": 77, + "height": 100 + }, + { + "width": 155, + "height": 200 + }, + { + "width": 310, + "height": 400 + }, + { + "width": 793, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/28fd3aa8-6917-b28d-ded3-500bc640a915", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561#xywh=405,32,339,437", + "type": "Canvas" + } + ], + "requiredStatement": { + "value": { + "en": [ + "" + ] + } + }, + "summary": { + "en": [ + "Rockets and cars – military and consumer goods – were the twin engines of the post-WWII American economy. Sometimes they even imitated one another, as in the aeronautical styling and advertising art for this 1950s Oldsmobile Rocket 88. (Image Courtesy of The Advertising Archives.)" + ] + }, + "label": { + "en": [ + "Oldsmobile advertisement, USA, 1955" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/list/e9855598-615b-b481-6164-faf53164e205" + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561", + "behavior": [ + "w-8", + "h-8" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561/annotations/17", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/155fcabf-8e51-0782-5ce5-c128dbd005c1", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561/annotations/18", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/64141e57-0d02-96b9-dd73-8e0c1710cb16", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561/annotations/19", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/28fd3aa8-6917-b28d-ded3-500bc640a915", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + } + ] + } + ] + }, + { + "height": 1000, + "width": 1000, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "

Creativity, Consumerism, and the Cold War

\n\n

Postwar America contained the perfect conditions for the concept of creativity to arise–a potent mix of optimism about material progress and fears of conformity and technology run amok.

\n\n

As the United States competed with the Soviet Union in a race of military technology, its economy depended on a constant stream of consumer goods. Many saw totalitarianism abroad and consumerism at home as twin threats to individualism. With the recent experience of the Holocaust and the looming threat of nuclear Armageddon in mind, some critics worried about the effect of mass society and “conformity” on humane values. Corporate America, for its part, feared its own bureaucratic culture might slow the innovation on which profits depended.

\n\n

CREATIVITY was a salve for all these problems: it conjured individuality, self-expression, and freedom, but also promised all the inventiveness and dynamism necessary to keep the whole system running.

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/textualbody/a9ba045a-859d-c7e2-1f82-51ab7c4181a3/en" + } + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056", + "type": "Canvas" + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/22b86aa4-37a0-c441-c78e-cfe339b7907e", + "motivation": [ + "painting" + ] + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/list/f20a343e-a0b8-4077-01e8-b3a02fd48d2f" + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056", + "behavior": [ + "info", + "w-4", + "h-8" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056", + "type": "Canvas" + } + ], + "body": [ + { + "type": "TextualBody", + "value": "

Creativity, Consumerism, and the Cold War

\n\n
“In a time when knowledge, constructive and destructive, is advancing by the most incredible leaps and bounds into a fantastic atomic age, genuinely creative adaptation seems to represent the only possibility that man can keep abreast of the kaleidoscopic change in his world … international annihilation will be the price we pay for a lack of creativity.” – Carl Rogers, humanistic psychologist, Toward a Theory of Creativity, 1954
“The Cold War called for ever-accelerating efforts in a contest of intellects. Inventive brains were at a premium, and there were never enough.” – J. P. Guilford, psychologist, Journal of Creative Behavior, 1967 The 1950s and 1960s contained the perfect storm for an idea like creativity to arise: During the Cold War “the West,” led by a newly empowered United States, was competing with the Soviet Union in a race of military technology.

Postwar America contained the perfect conditions for the concept of creativity to arise–a potent mix of optimism about material progress and fears of conformity and technology run amok.

As the United States competed with the Soviet Union in a race of military technology, its economy depended on a constant stream of consumer goods. Many saw totalitarianism abroad and consumerism at home as twin threats to individualism. With the recent experience of the Holocaust and the looming threat of nuclear Armageddon in mind, some critics worried about the effect of mass society and “conformity” on humane values. Corporate America, for its part, feared its own bureaucratic culture might slow the innovation on which profits depended.

CREATIVITY was a salve for all these problems: it conjured individuality, self-expression, and freedom, but also promised all the inventiveness and dynamism necessary to keep the whole system running.

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056/annotations/0/en" + } + ] + } + ] + } + ] + }, + { + "height": 2344, + "width": 5417, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/63a4a98b-ea2a-9a35-7005-7b2424850197/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 5417, + "width": 5417, + "label": { + "en": [ + "-" + ] + }, + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8", + "protocol": "http://iiif.io/api/image", + "width": 5417, + "height": 5417, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + }, + "selector": { + "@context": "http://iiif.io/api/annex/openannotation/context.json", + "type": "iiif:ImageApiSelector", + "region": "0,14,5417,2344" + } + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 1024, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/63a4a98b-ea2a-9a35-7005-7b2424850197", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/a4f17d27-6a80-ed4a-098b-390ae648e826#xywh=0,0,5417,2344", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "Brainstorming meeting at the advertising firm BBDO, where the technique was born. Late 1950s. The woman at bottom right is using a stenograph machine to record the barrage of ideas, while the poster on the wall lists the “Brainstorm Ground Rules.” (Photo by Philippe Halsman)" + ] + }, + "label": { + "en": [ + "BBDO" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/78f00079-3e77-1d5e-5d25-0ce48770639b" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/a4f17d27-6a80-ed4a-098b-390ae648e826", + "behavior": [ + "w-12", + "h-5" + ] + }, + { + "label": { + "en": [ + "Managing the Muse" + ] + }, + "height": 1000, + "width": 800, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/088f52a1-830a-8bae-a182-f4edebf87e7b/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/81efc6f1-2c2a-42ba-8001-c7e598d91110/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6610, + "width": 6812, + "label": { + "en": [ + "-" + ] + }, + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/81efc6f1-2c2a-42ba-8001-c7e598d91110", + "protocol": "http://iiif.io/api/image", + "width": 6812, + "height": 6610, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 994 + }, + { + "width": 400, + "height": 388 + }, + { + "width": 200, + "height": 194 + }, + { + "width": 100, + "height": 97 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + }, + "selector": { + "@context": "http://iiif.io/api/annex/openannotation/context.json", + "type": "iiif:ImageApiSelector", + "region": "1560,750,3608,5218" + } + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/81efc6f1-2c2a-42ba-8001-c7e598d91110/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/81efc6f1-2c2a-42ba-8001-c7e598d91110", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 994, + "sizes": [ + { + "width": 100, + "height": 97 + }, + { + "width": 200, + "height": 194 + }, + { + "width": 400, + "height": 388 + }, + { + "width": 1024, + "height": 994 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/088f52a1-830a-8bae-a182-f4edebf87e7b", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=46,75,203,296", + "type": "Canvas" + } + ], + "label": { + "en": [ + "The “bible” of the creative thinking movement, originally published in 1953, which made brainstorming a household name." + ] + }, + "summary": { + "en": [ + "Alex F. Osborn, Applied Imagination, Charles Scribner’s Sons, Third Revised Edition, 1963" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/70c2e178-8426-48a1-a620-d0c27d4e92b8/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3183, + "width": 5096, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/70c2e178-8426-48a1-a620-d0c27d4e92b8", + "protocol": "http://iiif.io/api/image", + "width": 5096, + "height": 3183, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 640 + }, + { + "width": 400, + "height": 250 + }, + { + "width": 200, + "height": 125 + }, + { + "width": 100, + "height": 62 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/70c2e178-8426-48a1-a620-d0c27d4e92b8/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/70c2e178-8426-48a1-a620-d0c27d4e92b8", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 640, + "sizes": [ + { + "width": 100, + "height": 62 + }, + { + "width": 200, + "height": 125 + }, + { + "width": 400, + "height": 250 + }, + { + "width": 1024, + "height": 640 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/6b47f632-f355-3fe4-1a7b-2657e62a3a6e", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=314,58,420,261", + "type": "Canvas" + } + ], + "label": { + "en": [ + "New York Herald Tribune, December 1956" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/aeef2956-3952-4a46-aa39-69eec0357773/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3667, + "width": 2583, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/aeef2956-3952-4a46-aa39-69eec0357773", + "protocol": "http://iiif.io/api/image", + "width": 2583, + "height": 3667, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 721, + "height": 1024 + }, + { + "width": 282, + "height": 400 + }, + { + "width": 141, + "height": 200 + }, + { + "width": 70, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/aeef2956-3952-4a46-aa39-69eec0357773/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/aeef2956-3952-4a46-aa39-69eec0357773", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 721, + "height": 1024, + "sizes": [ + { + "width": 70, + "height": 100 + }, + { + "width": 141, + "height": 200 + }, + { + "width": 282, + "height": 400 + }, + { + "width": 721, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3119e8c8-9eaa-cf81-068b-c8d8d7d22aa8", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=41,454,271,389", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Nation’s Business, February 1959" + ] + }, + "summary": { + "en": [ + "Courtesy of Hagley Museum and Library" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/9e7233da-71d4-47d8-83b7-4142444645b4/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2159, + "width": 3141, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/9e7233da-71d4-47d8-83b7-4142444645b4", + "protocol": "http://iiif.io/api/image", + "width": 3141, + "height": 2159, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 704 + }, + { + "width": 400, + "height": 275 + }, + { + "width": 200, + "height": 137 + }, + { + "width": 100, + "height": 69 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/9e7233da-71d4-47d8-83b7-4142444645b4/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/9e7233da-71d4-47d8-83b7-4142444645b4", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 704, + "sizes": [ + { + "width": 100, + "height": 69 + }, + { + "width": 200, + "height": 137 + }, + { + "width": 400, + "height": 275 + }, + { + "width": 1024, + "height": 704 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/ece517b5-3e7a-cc8b-4e7b-196ab10186af", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=361,383,375,258", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Book describing Osborn’s rules of brainstorming and a snippet of a brainstorming session in action." + ] + }, + "summary": { + "en": [ + "Creative Thinking, Charles S. Whiting, Reinhold Publishing Corporation, 1958" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/5a8c9030-f75f-4315-bfd2-4a609f93adbd/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2792, + "width": 5000, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/5a8c9030-f75f-4315-bfd2-4a609f93adbd", + "protocol": "http://iiif.io/api/image", + "width": 5000, + "height": 2792, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 572 + }, + { + "width": 400, + "height": 223 + }, + { + "width": 200, + "height": 112 + }, + { + "width": 100, + "height": 56 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/5a8c9030-f75f-4315-bfd2-4a609f93adbd/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/5a8c9030-f75f-4315-bfd2-4a609f93adbd", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 572, + "sizes": [ + { + "width": 100, + "height": 56 + }, + { + "width": 200, + "height": 112 + }, + { + "width": 400, + "height": 223 + }, + { + "width": 1024, + "height": 572 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2899bd51-9b44-e5aa-dfef-2b2809973833", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=357,713,420,236", + "type": "Canvas" + } + ], + "label": { + "en": [ + "U.S. Navy officers are trained in brainstorming by creativity expert Charles Clarke “Visual Spur to Wild Ideas” " + ] + }, + "summary": { + "en": [ + "Life, June 1956" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/629813ef-3d7c-a7b6-06f2-952d6b821752" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2", + "behavior": [ + "left", + "w-12", + "h-10" + ], + "summary": { + "en": [ + "Postwar managers of corporations like General Electric, Alcoa, and General Motors dreamed of making innovation as predictable as cars off an assembly line. But they also worried that too much bureaucracy might stifle good ideas. How to summon the genius of the nineteenth-century inventor within the modern corporation? Increasingly they looked to experts offering new-fangled techniques for \"creative thinking\" and \"creative problem-solving\".", + "", + "These early creativity consultants claimed white collar workers were too rational and needed help accessing their irrational and poetic sides. In highly-structured, replicable sessions, buttoned-up types were encouraged to get wild and break rules – temporarily, at least – to generate profitable new ideas. These experts claimed their methods could be used to solve any problem from domestic arguments to ending the nuclear standoff, but they were most widely taken up in the world from which they emerged: corporate R&D and product development." + ] + }, + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations/21", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/088f52a1-830a-8bae-a182-f4edebf87e7b", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations/22", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/6b47f632-f355-3fe4-1a7b-2657e62a3a6e", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations/23", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3119e8c8-9eaa-cf81-068b-c8d8d7d22aa8", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations/24", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/ece517b5-3e7a-cc8b-4e7b-196ab10186af", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations/25", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2899bd51-9b44-e5aa-dfef-2b2809973833", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + } + ] + } + ] + }, + { + "label": { + "en": [ + "When brainstorming was new" + ] + }, + "height": 1000, + "width": 1000, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/6ca3ab55-3a95-427a-96bb-ec15dcf7b3f0/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4038, + "width": 4038, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/6ca3ab55-3a95-427a-96bb-ec15dcf7b3f0", + "protocol": "http://iiif.io/api/image", + "width": 4038, + "height": 4038, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/6ca3ab55-3a95-427a-96bb-ec15dcf7b3f0/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/6ca3ab55-3a95-427a-96bb-ec15dcf7b3f0", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 1024, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e799fa1f-dc65-c61f-22b5-d3e74374ac6a", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5144f647-9ae9-51fb-e285-88c5f1cec72a#xywh=0,0,1000,1000", + "type": "Canvas" + } + ], + "label": { + "en": [ + "New York Herald Tribune, January 1958" + ] + }, + "summary": { + "en": [ + "Brainstorming was a new craze in the 1950s. Its inventor, advertising executive Alex Osborn, proselytized his method for generating ideas: judgement was strictly prohibited, and shouting out ideas encouraged. A secretary would write down ideas as they came flying forth – the more the better – and later pass them to upper management for vetting. When a 1958 Yale study claimed brain­storming was ineffective, it became a national controversy, a lightning rod for the larger question facing mass society: are more heads better than one, or should the individual reign supreme?" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/10dba3bc-19f4-f7ae-0829-b03ec2932c96" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5144f647-9ae9-51fb-e285-88c5f1cec72a", + "summary": { + "en": [ + "Brainstorming was a new craze in the 1950s. Its inventor, advertising executive Alex Osborn, proselytized his method for generating ideas: judgement was strictly prohibited, and shouting out ideas encouraged. A secretary would write down ideas as they came flying forth – the more the better – and later pass them to upper management for vetting. When a 1958 Yale study claimed brain­storming was ineffective, it became a national controversy, a lightning rod for the larger question facing mass society: are more heads better than one, or should the individual reign supreme?" + ] + }, + "behavior": [ + "bottom", + "w-6", + "h-10" + ] + }, + { + "height": 1000, + "width": 1000, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "

Making the Strange Familiar and the Familiar Strange

\n\n

In the wake of the brainstorming controversy, new methods such as Synectics popped up. Synectics was based on the theory that new ideas came from metaphorical thinking.

\n\n

As in brainstorming, its facilitators led participants through a series of steps aimed at unleashing seemingly irrelevant ideas – like fish anatomy to improve a hammer – then corral­ling them back toward a relevant solution. Observers said Synectics sessions resembled “LSD parties,” but the intention was always to end with a concrete goal, product, or service. Even as Synectics founders railed against the corporate culture of efficiency and rationality, they also espoused traditional management techniques to optimize their creative process.

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/textualbody/43711a7d-7d9c-21ff-a48d-8a64bbf353b2/en" + } + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e", + "type": "Canvas" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/68d14edc-845e-7aed-341d-a128fc1125ce", + "motivation": [ + "painting" + ] + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/1de12013-6246-5e22-7053-8940f757f288" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e", + "behavior": [ + "info", + "w-6", + "h-4" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e", + "type": "Canvas" + } + ], + "body": [ + { + "type": "TextualBody", + "value": "

Making the Strange Familiar and the Familiar Strange

\n\n

In the wake of the brainstorming controversy, new methods such as Synectics popped up. Synectics was based on the theory that new ideas came from metaphorical thinking. As in brainstorming, its facilitators led participants through a series of steps aimed at unleashing seemingly irrelevant ideas – like fish anatomy to improve a hammer – then corral­ling them back toward a relevant solution. Observers said Synectics sessions resembled “LSD parties,” but the intention was always to end with a concrete goal, product, or service. Even as Synectics founders railed against the corporate culture of efficiency and rationality, they also espoused traditional management techniques to optimize their creative process. Just like the “scientific manage­ment” experts of the early 20th Century made detailed motion studies to find the “one best way” of doing physical labor, Synectics, Inc.  used video and audio recordings of product design sessions to make the process of group creativity more efficient.

Transcript of a synectics meeting

Bellow is a transcript of a tape recorded Synectics session c.1965. The participants included members of the Synectics, Inc. team and employees of Steel Products Engineering, a U.S. company here trying to solve a problem associated with the manufacture of metal gears.

Jack:
O.K., the date is March 4, 1965, the PAG [Problem as Given] is “How to make a finished gear round,” the PAU [Problem as Understood] is “How to grind gear without rounding” … O.K., start off with rounding as the key word. We need a direct analogy first.
Alex:
How about pregnancy? Swelling abdomen – rounding?
Bill:
When I think of rounding, 
I think about the universe.
Horace:
Marble.
Jack:
Let’s take a symbolic analogy of marble.
Jim:
Well, let’s see, I’m a very still lake – and I get tremendous enjoyment from reflecting all the objects that come over me – and I’m terribly upset when the wind blows and the ripples form so that the reflections can’t be transmitted.
Horace:
Ripples destroy the reflections.
Jim:
Yeah, ripples ruin me.
Bill:
On that same lake, let me get in there. I have enjoyment from the knowledge … that the waters from me gave birth to little streams but I’m especially proud when I realize that some of the waters which come from me leave me in evaporation … I see this beautiful colored rainbow. I realize this is a child of mine …

Printed in Tom Alexander, “Synectics: Inventing by the Madness Method,” Fortune, August 1965

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e/annotations/0/en" + } + ] + } + ] + } + ] + }, + { + "label": { + "en": [ + "Synectics session" + ] + }, + "height": 266, + "width": 360, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/d78b883c-f07f-4c92-825f-b4b8c97ae723/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2758, + "width": 3754, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/d78b883c-f07f-4c92-825f-b4b8c97ae723", + "protocol": "http://iiif.io/api/image", + "width": 3754, + "height": 2758, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 752 + }, + { + "width": 400, + "height": 294 + }, + { + "width": 200, + "height": 147 + }, + { + "width": 100, + "height": 73 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/d78b883c-f07f-4c92-825f-b4b8c97ae723/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/d78b883c-f07f-4c92-825f-b4b8c97ae723", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 752, + "sizes": [ + { + "width": 100, + "height": 73 + }, + { + "width": 200, + "height": 147 + }, + { + "width": 400, + "height": 294 + }, + { + "width": 1024, + "height": 752 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/43da7b7e-fb7e-6f7a-d031-3d66e461ca7f", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/a7dc6147-894c-dd1d-0edb-fbb0d4aa01b9#xywh=0,0,360,266", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Synectics session, showing recording equipment in use, c.1974" + ] + }, + "summary": { + "en": [ + "Courtesy of Synecticsworld®, Inc. (synecticsworld.com)" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/e71c36eb-37bc-52c4-645e-242bedd525d4" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/a7dc6147-894c-dd1d-0edb-fbb0d4aa01b9", + "behavior": [ + "w-6", + "h-6" + ] + }, + { + "height": 999, + "width": 999, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/96d105de-9a6b-419c-86b2-cf192c95523a/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 10417, + "width": 10417, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/96d105de-9a6b-419c-86b2-cf192c95523a", + "protocol": "http://iiif.io/api/image", + "width": 10417, + "height": 10417, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/96d105de-9a6b-419c-86b2-cf192c95523a/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/96d105de-9a6b-419c-86b2-cf192c95523a", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 1024, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/1febb90d-5e2a-0838-766e-22dd4aeb85eb", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/c6d6462b-8d86-446a-9314-153647c3e639#xywh=0,0,999,999", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "Kaiser Aluminum News, 1968" + ] + }, + "label": { + "en": [ + "Rorschach inkblot" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/11ef9ff1-0f48-a484-12b5-1b195e91e66f" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/c6d6462b-8d86-446a-9314-153647c3e639", + "behavior": [ + "w-12", + "h-5" + ] + }, + { + "label": { + "en": [ + "The Science of Creativity" + ] + }, + "height": 1000, + "width": 800, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/a6985875-6445-44ad-bf6c-1cacac3e8540/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6668, + "width": 10152, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/a6985875-6445-44ad-bf6c-1cacac3e8540", + "protocol": "http://iiif.io/api/image", + "width": 10152, + "height": 6668, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 673 + }, + { + "width": 400, + "height": 263 + }, + { + "width": 200, + "height": 131 + }, + { + "width": 100, + "height": 66 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/a6985875-6445-44ad-bf6c-1cacac3e8540/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/a6985875-6445-44ad-bf6c-1cacac3e8540", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 673, + "sizes": [ + { + "width": 100, + "height": 66 + }, + { + "width": 200, + "height": 131 + }, + { + "width": 400, + "height": 263 + }, + { + "width": 1024, + "height": 673 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/5284b26f-c526-71c3-90c7-4b35f3d6e5ed", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=70,60,366,240", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "In 1966, the educational psychologist Ellis Paul Torrance released the Torrance Tests of Creative Thinking, the first pencil-and-paper creativity test. Though some doubted its predictive validity – including, eventually, Torrance himself – the ease of distributing and scoring the test at a mass scale ensured it would be widely used in both research and education." + ] + }, + "label": { + "en": [ + "Torrance test completed by Dr. Samuel Franklin in 2014" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e79b7757-d82d-aa69-b0cd-a88b581a63a2/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/cd5ff140-c806-4399-81a2-1c0cadfbad1a/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 8008, + "width": 6506, + "label": { + "en": [ + "-" + ] + }, + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/cd5ff140-c806-4399-81a2-1c0cadfbad1a", + "protocol": "http://iiif.io/api/image", + "width": 6506, + "height": 8008, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 832, + "height": 1024 + }, + { + "width": 325, + "height": 400 + }, + { + "width": 162, + "height": 200 + }, + { + "width": 81, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + }, + "selector": { + "@context": "http://iiif.io/api/annex/openannotation/context.json", + "type": "iiif:ImageApiSelector", + "region": "718,789,4982,6483" + } + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/cd5ff140-c806-4399-81a2-1c0cadfbad1a/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/cd5ff140-c806-4399-81a2-1c0cadfbad1a", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 832, + "height": 1024, + "sizes": [ + { + "width": 81, + "height": 100 + }, + { + "width": 162, + "height": 200 + }, + { + "width": 325, + "height": 400 + }, + { + "width": 832, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e79b7757-d82d-aa69-b0cd-a88b581a63a2", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=19,351,372,486", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "In 1966, the educational psychologist Ellis Paul Torrance released the Torrance Tests of Creative Thinking, the first pencil-and-paper creativity test. Though some doubted its predictive validity – including, eventually, Torrance himself – the ease of distributing and scoring the test at a mass scale ensured it would be widely used in both research and education. " + ] + }, + "label": { + "en": [ + "Torrance test completed by Dr. Samuel Franklin in 2014" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/eb445252-3688-4a97-b4b3-ce82b8135ce8/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6309, + "width": 4590, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/eb445252-3688-4a97-b4b3-ce82b8135ce8", + "protocol": "http://iiif.io/api/image", + "width": 4590, + "height": 6309, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 745, + "height": 1024 + }, + { + "width": 291, + "height": 400 + }, + { + "width": 146, + "height": 200 + }, + { + "width": 73, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/eb445252-3688-4a97-b4b3-ce82b8135ce8/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/eb445252-3688-4a97-b4b3-ce82b8135ce8", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 745, + "height": 1024, + "sizes": [ + { + "width": 73, + "height": 100 + }, + { + "width": 146, + "height": 200 + }, + { + "width": 291, + "height": 400 + }, + { + "width": 745, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2a88ffd9-b62c-73cf-a062-ac288eea0c2e", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=480,41,270,372", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "The field of creativity studies was in some respect built on the foundation of a single brick. One of the most widely used tests was to have people list as many uses for a common brick as they could in a set amount of time. Though later studies showed little correspondence between such “divergent thinking” tests and extraordinary creative accomplishment later in life, they became a staple of creativity testing. " + ] + }, + "label": { + "en": [ + "Kaiser Aluminum News, 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2607, + "width": 3600, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19", + "protocol": "http://iiif.io/api/image", + "width": 3600, + "height": 2607, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 742 + }, + { + "width": 400, + "height": 290 + }, + { + "width": 200, + "height": 145 + }, + { + "width": 100, + "height": 72 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 742, + "sizes": [ + { + "width": 100, + "height": 72 + }, + { + "width": 200, + "height": 145 + }, + { + "width": 400, + "height": 290 + }, + { + "width": 1024, + "height": 742 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9cc3e632-8abf-f970-62fd-9ec3974d6ed4", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=426,452,356,259", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "One of the goals of early creativity researchers was to show that creative ability was distinct from general intelligence, at least as measured by standard IQ tests. If true, this would prove the practical importance for a new science of creativity. Here the authors compare test results of high-IQ students and ones that scored well on purported tests of creativity such as the one on the left." + ] + }, + "label": { + "en": [ + "Jacob W. Getzels and Philip W. Jackson, Creativity and Intelligence, John Wiley & Sons, Inc., 1962" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/cbcd6a7e-78d6-45a3-ba3b-23444cd1e9f5/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6115, + "width": 9213, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/cbcd6a7e-78d6-45a3-ba3b-23444cd1e9f5", + "protocol": "http://iiif.io/api/image", + "width": 9213, + "height": 6115, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 680 + }, + { + "width": 400, + "height": 265 + }, + { + "width": 200, + "height": 133 + }, + { + "width": 100, + "height": 66 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/cbcd6a7e-78d6-45a3-ba3b-23444cd1e9f5/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/cbcd6a7e-78d6-45a3-ba3b-23444cd1e9f5", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 680, + "sizes": [ + { + "width": 100, + "height": 66 + }, + { + "width": 200, + "height": 133 + }, + { + "width": 400, + "height": 265 + }, + { + "width": 1024, + "height": 680 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/b38edd9d-c00f-bd1e-4b6a-45538e91c1e3", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=429,744,333,222", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "Postwar psychologists used a wide variety of methods to study creativity, from psychoanalysis and biographical studies to tests of “divergent thinking” that were partly inspired by brainstorming. The ultimate aim of many researchers was to devise a new test able to identify inventive people early in life, a particular wish of the massive government and private R&D apparatus that proliferated after WWII. In service of this aim, researchers collected large data sets and employed the most sophisticated statistical methods, even though many of the assessments could be extremely hard to quantify." + ] + }, + "label": { + "en": [ + "Frank Barron, Creativity and Psychological Health, D. van Nostrand Company, Inc., 1963" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/c0f387fb-1323-46e0-8d42-c02c07a18362" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c", + "summary": { + "en": [ + "The 1950s and 1960s saw a boom of creativity research. Much of this research was initially funded by the U.S. military, looking for ways to identify, train, and retain talented scientists and engineers. But it was also attractive to those who hoped for social and cultural progress as well. By the late 1960s research had been carried out on cadets, famous writers, primary school children, and a host of others, in the hopes of unlocking the secrets of human ingenuity.", + "", + "But before they could approach the topic researchers had to first define it: how would they know creativity when they saw it? Some researchers would only consider eminent figures with a proven record, while others insisted they could study creativity in children. Though researchers never reached a consensus on the ultimate criteria of creativity, they were united in the belief that creativity research was a dire social need. The figure of the “creative person” that emerged from their research was an ideal liberal citizen capable of resisting conformity, adapting to change, and being innovative all at the same time." + ] + }, + "behavior": [ + "left", + "w-12", + "h-10" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations/29", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/5284b26f-c526-71c3-90c7-4b35f3d6e5ed", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations/30", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e79b7757-d82d-aa69-b0cd-a88b581a63a2", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations/31", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2a88ffd9-b62c-73cf-a062-ac288eea0c2e", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations/32", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9cc3e632-8abf-f970-62fd-9ec3974d6ed4", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations/33", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/b38edd9d-c00f-bd1e-4b6a-45538e91c1e3", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + } + ] + } + ] + }, + { + "height": 960, + "width": 960, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/942b1eda-584f-40ec-9097-05b55d85e51b/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 5417, + "width": 5417, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/942b1eda-584f-40ec-9097-05b55d85e51b", + "protocol": "http://iiif.io/api/image", + "width": 5417, + "height": 5417, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/942b1eda-584f-40ec-9097-05b55d85e51b/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/942b1eda-584f-40ec-9097-05b55d85e51b", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 1024, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/0ae6f467-bfde-6d8e-c26a-b24f7c453b6f", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/7f51e481-4d9c-acf3-7173-45c6ad9d9983#xywh=0,0,960,960", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "Many diagrams elaborated on the 4-stage model proposed by British socialist and scholar Graham Wallas in 1927: Preparation, Incubation, Illumination, and Verification. Since then, theorists have added, renamed, reshuffled, and looped these steps, as well as devised myriad other schemes, all to bring order to what some insist can never be truly orderly." + ] + }, + "label": { + "en": [ + "Diagramming the Creative Process" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/47e2976b-50e2-7af9-c7e7-bf58304ecb16" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/7f51e481-4d9c-acf3-7173-45c6ad9d9983", + "summary": { + "en": [ + "The dream of understanding the creative process scientifically, in a way that could be easily replicated, came with a proliferation of diagrams – a frenzy of lines and arrows, bubbles and diamonds. Some diagrams showed “scientifically” how creativity rises and falls over a lifetime, while others layed out the steps of having an idea so that people of any age or ability might learn to be creative. These visuals echoed the graphic design and technological analogies of the fields they drew upon, including engineering, cybernetics, and industrial design." + ] + }, + "label": { + "en": [ + "Diagramming the Creative Process" + ] + }, + "behavior": [ + "bottom", + "w-6", + "h-9" + ] + }, + { + "height": 1000, + "width": 1000, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "

Constructing the Creative Personality

\n\n

Some of the most highly publicized creativity studies were carried out at the Institute for Personality Assessment and Research (IPAR) at the University of California, Berkeley. There, famous writers, mathematicians, and architects like Truman Capote, Louis Kahn, and Eero Saarinnen underwent intensive scrutiny including Rorschach ink blots, drawing completion tests, and psycho­analysis.

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/textualbody/82ff28d9-5b54-ec09-d0c9-0ded31d7be4a/en" + } + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834", + "type": "Canvas" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/36b024a6-f7a1-3099-9312-783ea3ed60b9", + "motivation": [ + "painting" + ] + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/43d46381-c36b-ad21-ac4f-ce86523b3271" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834", + "behavior": [ + "info", + "w-6", + "h-3" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834", + "type": "Canvas" + } + ], + "body": [ + { + "type": "TextualBody", + "value": "

Constructing the Creative Personality

\n\n

Some of the most highly publicized creativity studies were carried out at the Institute for Personality Assessment and Research (IPAR) at the University of California, Berkeley. There, famous writers, mathematicians, and architects like Truman Capote, Louis Kahn, and Eero Saarinnen underwent intensive scrutiny including Rorschach ink blots, drawing completion tests, and psycho­analysis.

\n\n

One finding revealed these creative subjects preferred abstract to representational art. The researchers interpreted this aesthetic preference, as well as characteristics like high “ego strength” and “femininity” in men, as the result of a naturally creative personality, but later critics pointed out they might also have had to do with education, socialization, and the expectation to be creative in the first place.

\n\n

Indeed, much creativity research has been based on individuals who society already considered creative, thus reinforcing notions of who was creative, particularly white, male professionals with high education and liberal cultural values. Many researchers today doubt that something like the “creative personality” really exists, instead seeing creativity as a complex social phenomenon.

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834/annotations/0/en" + } + ] + } + ] + } + ] + }, + { + "label": { + "en": [ + "Constructing the Creative Personality" + ] + }, + "height": 1000, + "width": 1000, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/92fab8fb-2fff-9abe-f901-f07122318a1c/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6036, + "width": 8174, + "label": { + "en": [ + "-" + ] + }, + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270", + "protocol": "http://iiif.io/api/image", + "width": 8174, + "height": 6036, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 756 + }, + { + "width": 400, + "height": 295 + }, + { + "width": 200, + "height": 148 + }, + { + "width": 100, + "height": 74 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + }, + "selector": { + "@context": "http://iiif.io/api/annex/openannotation/context.json", + "type": "iiif:ImageApiSelector", + "region": "4164,352,3702,5420" + } + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 756, + "sizes": [ + { + "width": 100, + "height": 74 + }, + { + "width": 200, + "height": 148 + }, + { + "width": 400, + "height": 295 + }, + { + "width": 1024, + "height": 756 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/92fab8fb-2fff-9abe-f901-f07122318a1c", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=124,624,205,298", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "Researchers found that people they deemed creative preferred messy and asymmetrical figures, while randomly selected university students tended to prefer simple, linear, and sym­metrical figures. The psychologists concluded creative people had a higher “tolerance for ambiguity,” though the result might also have been because the creative group, which included successful architects and writers, was more likely to have a learned taste for modern art." + ] + }, + "label": { + "en": [ + "Sidney J. Parnes and Harold F. Harding eds., The Sourcebook for Creative Thinking, 1962" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/27efc122-6e41-0792-dcfe-aa001147d254/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/9be87962-0977-4b05-9012-c3a0061ced9f/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6237, + "width": 8713, + "label": { + "en": [ + "-" + ] + }, + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/9be87962-0977-4b05-9012-c3a0061ced9f", + "protocol": "http://iiif.io/api/image", + "width": 8713, + "height": 6237, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 733 + }, + { + "width": 400, + "height": 286 + }, + { + "width": 200, + "height": 143 + }, + { + "width": 100, + "height": 72 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + }, + "selector": { + "@context": "http://iiif.io/api/annex/openannotation/context.json", + "type": "iiif:ImageApiSelector", + "region": "4415,422,3758,5440" + } + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/9be87962-0977-4b05-9012-c3a0061ced9f/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/9be87962-0977-4b05-9012-c3a0061ced9f", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 733, + "sizes": [ + { + "width": 100, + "height": 72 + }, + { + "width": 200, + "height": 143 + }, + { + "width": 400, + "height": 286 + }, + { + "width": 1024, + "height": 733 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/27efc122-6e41-0792-dcfe-aa001147d254", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=365,622,205,296", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Sidney J. Parnes and Harold F. Harding eds., The Sourcebook for Creative Thinking, 1962" + ] + }, + "summary": { + "en": [ + "Traditionally, psychologists used ink blot tests to peer into peoples’ subconscious. Creativity researchers were interested not in the underlying meaning of what their subjects saw in the random shapes but rather their originality, which researchers quantified to calculate a measure of creative ability." + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3c6f823d-4999-2cd7-d7a8-3ff9209f6dee/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/4ae24fbb-cc11-4dbd-ae68-2a2951380b04/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6452, + "width": 8840, + "label": { + "en": [ + "-" + ] + }, + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/4ae24fbb-cc11-4dbd-ae68-2a2951380b04", + "protocol": "http://iiif.io/api/image", + "width": 8840, + "height": 6452, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 747 + }, + { + "width": 400, + "height": 292 + }, + { + "width": 200, + "height": 146 + }, + { + "width": 100, + "height": 73 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + }, + "selector": { + "@context": "http://iiif.io/api/annex/openannotation/context.json", + "type": "iiif:ImageApiSelector", + "region": "4479,548,3718,5404" + } + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/4ae24fbb-cc11-4dbd-ae68-2a2951380b04/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/4ae24fbb-cc11-4dbd-ae68-2a2951380b04", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 747, + "sizes": [ + { + "width": 100, + "height": 73 + }, + { + "width": 200, + "height": 146 + }, + { + "width": 400, + "height": 292 + }, + { + "width": 1024, + "height": 747 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3c6f823d-4999-2cd7-d7a8-3ff9209f6dee", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=603,622,203,293", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Sidney J. Parnes and Harold F. Harding eds., The Sourcebook for Creative Thinking, 1962" + ] + }, + "summary": { + "en": [ + "Drawing completion tests were commonly used in creativity studies. Although creativity and art were closely associated, these tests were scored not on the test-taker’s artistic ability, but rather on the originality and elaborateness of their responses." + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/00298292-8c7a-4939-b153-bef45c24160a/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6423, + "width": 8722, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/00298292-8c7a-4939-b153-bef45c24160a", + "protocol": "http://iiif.io/api/image", + "width": 8722, + "height": 6423, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 754 + }, + { + "width": 400, + "height": 295 + }, + { + "width": 200, + "height": 147 + }, + { + "width": 100, + "height": 74 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/00298292-8c7a-4939-b153-bef45c24160a/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/00298292-8c7a-4939-b153-bef45c24160a", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 754, + "sizes": [ + { + "width": 100, + "height": 74 + }, + { + "width": 200, + "height": 147 + }, + { + "width": 400, + "height": 295 + }, + { + "width": 1024, + "height": 754 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/742f09f4-1005-6fb1-0a56-7b2967a9c627", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=77,21,787,577", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "Researchers at Berkeley’s IPAR asked subjects to create mosaics with colored tiles. The examples on the left were produced by the “non-creative” control group of randomly selected students, while those on the right were produced by prominent figures rated highly creative by their peers. The researchers concluded that creative people naturally prefer asymmetrical figures." + ] + }, + "label": { + "en": [ + "Sidney J. Parnes and Harold F. Harding eds., The Sourcebook for Creative Thinking, 1962" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/a9af9f68-5adb-0db6-3826-40b3c8e3ffaf" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59", + "behavior": [ + "w-6", + "h-6" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59/annotations/35", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/92fab8fb-2fff-9abe-f901-f07122318a1c", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59/annotations/36", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/27efc122-6e41-0792-dcfe-aa001147d254", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59/annotations/37", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3c6f823d-4999-2cd7-d7a8-3ff9209f6dee", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59/annotations/38", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/742f09f4-1005-6fb1-0a56-7b2967a9c627", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + } + ] + } + ] + }, + { + "height": 999, + "width": 999, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/948d003d-2eac-6916-95c5-b54bdfb17909/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 10417, + "width": 10417, + "label": { + "en": [ + "-" + ] + }, + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba", + "protocol": "http://iiif.io/api/image", + "width": 10417, + "height": 10417, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + }, + "selector": { + "@context": "http://iiif.io/api/annex/openannotation/context.json", + "type": "iiif:ImageApiSelector", + "region": "0,0,10417,10417" + } + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 1024, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/948d003d-2eac-6916-95c5-b54bdfb17909", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b8f3a066-c17b-e125-b3b8-5294155cb48e#xywh=-9418,-9418,10417,10417", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Peter Max for Tin Lizzie Restaurant New York" + ] + }, + "summary": { + "en": [ + "Reprinted in Kaiser Aluminum News, 1968" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/96a22ad3-3263-25c6-8e79-aeb30070f298" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b8f3a066-c17b-e125-b3b8-5294155cb48e", + "behavior": [ + "w-12", + "h-5" + ] + }, + { + "label": { + "en": [ + "A Corporate Counterculture" + ] + }, + "height": 1000, + "width": 1000, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/d9475790-9cb2-422b-9b91-68d2da7e5c2e/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3215, + "width": 5009, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/d9475790-9cb2-422b-9b91-68d2da7e5c2e", + "protocol": "http://iiif.io/api/image", + "width": 5009, + "height": 3215, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 657 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/d9475790-9cb2-422b-9b91-68d2da7e5c2e/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/d9475790-9cb2-422b-9b91-68d2da7e5c2e", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 657, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 1024, + "height": 657 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/31466717-e1ea-ecab-ddc8-ed55f334340a", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=18,42,229,146", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/f1cfec20-4128-4796-b5b1-b800604687f3/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3230, + "width": 5040, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/f1cfec20-4128-4796-b5b1-b800604687f3", + "protocol": "http://iiif.io/api/image", + "width": 5040, + "height": 3230, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 656 + }, + { + "width": 400, + "height": 256 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/f1cfec20-4128-4796-b5b1-b800604687f3/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/f1cfec20-4128-4796-b5b1-b800604687f3", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 656, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 400, + "height": 256 + }, + { + "width": 1024, + "height": 656 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e2afad69-442c-82b6-259e-5b9c1efb38ab", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=263,48,230,147", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/8326717e-381b-41d2-b019-e0d54e29b0dd/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3208, + "width": 5035, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/8326717e-381b-41d2-b019-e0d54e29b0dd", + "protocol": "http://iiif.io/api/image", + "width": 5035, + "height": 3208, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 652 + }, + { + "width": 400, + "height": 255 + }, + { + "width": 200, + "height": 127 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/8326717e-381b-41d2-b019-e0d54e29b0dd/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/8326717e-381b-41d2-b019-e0d54e29b0dd", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 652, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 127 + }, + { + "width": 400, + "height": 255 + }, + { + "width": 1024, + "height": 652 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c24489ae-b4ed-0e1d-2cf0-b14649345be0", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=508,39,230,147", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3219, + "width": 5011, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96", + "protocol": "http://iiif.io/api/image", + "width": 5011, + "height": 3219, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 658 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 658, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 1024, + "height": 658 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/13301733-9e5a-a1b7-c5aa-46e8c8da8454", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=750,33,233,149", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/f001c9b4-c83c-4528-9076-d3c8f67c5f8b/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3219, + "width": 5002, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/f001c9b4-c83c-4528-9076-d3c8f67c5f8b", + "protocol": "http://iiif.io/api/image", + "width": 5002, + "height": 3219, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 659 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/f001c9b4-c83c-4528-9076-d3c8f67c5f8b/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/f001c9b4-c83c-4528-9076-d3c8f67c5f8b", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 659, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 1024, + "height": 659 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/36229569-3f9e-c11d-2f05-0016d089326f", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=20,226,232,148", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/0c8b94c2-77ef-47c2-a2c9-87b6835a9a21/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3201, + "width": 5000, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/0c8b94c2-77ef-47c2-a2c9-87b6835a9a21", + "protocol": "http://iiif.io/api/image", + "width": 5000, + "height": 3201, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 656 + }, + { + "width": 400, + "height": 256 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/0c8b94c2-77ef-47c2-a2c9-87b6835a9a21/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/0c8b94c2-77ef-47c2-a2c9-87b6835a9a21", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 656, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 400, + "height": 256 + }, + { + "width": 1024, + "height": 656 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/09640709-1b54-a90c-114c-394424c29238", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=266,228,222,141", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/a39894a9-8cef-4b0b-a0e8-fa2a3ebdf504/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3229, + "width": 5037, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/a39894a9-8cef-4b0b-a0e8-fa2a3ebdf504", + "protocol": "http://iiif.io/api/image", + "width": 5037, + "height": 3229, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 656 + }, + { + "width": 400, + "height": 256 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/a39894a9-8cef-4b0b-a0e8-fa2a3ebdf504/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/a39894a9-8cef-4b0b-a0e8-fa2a3ebdf504", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 656, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 400, + "height": 256 + }, + { + "width": 1024, + "height": 656 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/163af9c8-84b6-9d1b-99ef-9d77cb190345", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=510,221,232,148", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/7d723b73-8509-40e3-8bb5-b66d00d52097/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3239, + "width": 5012, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7d723b73-8509-40e3-8bb5-b66d00d52097", + "protocol": "http://iiif.io/api/image", + "width": 5012, + "height": 3239, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 662 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/7d723b73-8509-40e3-8bb5-b66d00d52097/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/7d723b73-8509-40e3-8bb5-b66d00d52097", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 662, + "sizes": [ + { + "width": 100, + "height": 65 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 1024, + "height": 662 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9a30bd2e-b202-adf9-0a44-2e5f650e3feb", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=764,234,223,144", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/cf185286-36b1-4022-be37-2283ae8e4edb/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3226, + "width": 5003, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/cf185286-36b1-4022-be37-2283ae8e4edb", + "protocol": "http://iiif.io/api/image", + "width": 5003, + "height": 3226, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 660 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/cf185286-36b1-4022-be37-2283ae8e4edb/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/cf185286-36b1-4022-be37-2283ae8e4edb", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 660, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 1024, + "height": 660 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3bb8624e-c1dc-b07d-e301-a9cf7ef4e0c3", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=15,396,235,151", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/66928523-34d6-4394-aafa-8c287a457dee/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3224, + "width": 4979, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/66928523-34d6-4394-aafa-8c287a457dee", + "protocol": "http://iiif.io/api/image", + "width": 4979, + "height": 3224, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 663 + }, + { + "width": 400, + "height": 259 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/66928523-34d6-4394-aafa-8c287a457dee/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/66928523-34d6-4394-aafa-8c287a457dee", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 663, + "sizes": [ + { + "width": 100, + "height": 65 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 400, + "height": 259 + }, + { + "width": 1024, + "height": 663 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/8ad0d15b-2c27-e73e-47bb-f4199056c8cf", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=276,394,224,145", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/c962c6a8-08a1-4288-8aa9-1bfa1fd13ffa/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3233, + "width": 4978, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/c962c6a8-08a1-4288-8aa9-1bfa1fd13ffa", + "protocol": "http://iiif.io/api/image", + "width": 4978, + "height": 3233, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 665 + }, + { + "width": 400, + "height": 260 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/c962c6a8-08a1-4288-8aa9-1bfa1fd13ffa/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/c962c6a8-08a1-4288-8aa9-1bfa1fd13ffa", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 665, + "sizes": [ + { + "width": 100, + "height": 65 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 400, + "height": 260 + }, + { + "width": 1024, + "height": 665 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/513eb124-da3c-55ea-fb54-bc01a1dbbaff", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=518,404,218,141", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/563a73a1-8264-4a0d-a5a7-ad1517a7cc09/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3194, + "width": 4962, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/563a73a1-8264-4a0d-a5a7-ad1517a7cc09", + "protocol": "http://iiif.io/api/image", + "width": 4962, + "height": 3194, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 659 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/563a73a1-8264-4a0d-a5a7-ad1517a7cc09/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/563a73a1-8264-4a0d-a5a7-ad1517a7cc09", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 659, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 1024, + "height": 659 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/50fe8189-90f6-1e78-e8a6-16d9688dce7c", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=755,411,232,148", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/d865a110-6ba9-42bb-9fce-b9574f1ed84e/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3226, + "width": 4982, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/d865a110-6ba9-42bb-9fce-b9574f1ed84e", + "protocol": "http://iiif.io/api/image", + "width": 4982, + "height": 3226, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 663 + }, + { + "width": 400, + "height": 259 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/d865a110-6ba9-42bb-9fce-b9574f1ed84e/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/d865a110-6ba9-42bb-9fce-b9574f1ed84e", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 663, + "sizes": [ + { + "width": 100, + "height": 65 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 400, + "height": 259 + }, + { + "width": 1024, + "height": 663 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c0913eac-9272-0b7e-f73d-79436a9e49f1", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=12,601,229,148", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/9d2ab96c-4b3b-4015-ad9b-b6eebbfbd429/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3229, + "width": 4978, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/9d2ab96c-4b3b-4015-ad9b-b6eebbfbd429", + "protocol": "http://iiif.io/api/image", + "width": 4978, + "height": 3229, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 664 + }, + { + "width": 400, + "height": 259 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/9d2ab96c-4b3b-4015-ad9b-b6eebbfbd429/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/9d2ab96c-4b3b-4015-ad9b-b6eebbfbd429", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 664, + "sizes": [ + { + "width": 100, + "height": 65 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 400, + "height": 259 + }, + { + "width": 1024, + "height": 664 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e6081f7c-7ba9-4f7b-990a-0e74cdabe78f", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=257,584,237,153", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/1c9d5f72-3922-4ef5-9a2e-ccfbb29ad448/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3234, + "width": 5009, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/1c9d5f72-3922-4ef5-9a2e-ccfbb29ad448", + "protocol": "http://iiif.io/api/image", + "width": 5009, + "height": 3234, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 661 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/1c9d5f72-3922-4ef5-9a2e-ccfbb29ad448/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/1c9d5f72-3922-4ef5-9a2e-ccfbb29ad448", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 661, + "sizes": [ + { + "width": 100, + "height": 65 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 1024, + "height": 661 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/08997bad-bc2f-65d6-b918-480547ceecca", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=510,603,231,149", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/25365eba-8584-4b92-8bdc-556c6423f02b/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3232, + "width": 5015, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/25365eba-8584-4b92-8bdc-556c6423f02b", + "protocol": "http://iiif.io/api/image", + "width": 5015, + "height": 3232, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 660 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/25365eba-8584-4b92-8bdc-556c6423f02b/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/25365eba-8584-4b92-8bdc-556c6423f02b", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 660, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 1024, + "height": 660 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/accc95b6-1120-fe01-e3b8-97cbc686506c", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=761,586,225,144", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/d1be611f-3ed2-41e1-bf2c-b83543ce8a3c/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3226, + "width": 5007, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/d1be611f-3ed2-41e1-bf2c-b83543ce8a3c", + "protocol": "http://iiif.io/api/image", + "width": 5007, + "height": 3226, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 660 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/d1be611f-3ed2-41e1-bf2c-b83543ce8a3c/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/d1be611f-3ed2-41e1-bf2c-b83543ce8a3c", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 660, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 1024, + "height": 660 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c32d124a-718d-8e23-a519-938b6f1f8e18", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=10,779,238,152", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/f68d2c83-cb1b-4b7f-9a81-546c5a482982/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3233, + "width": 5012, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/f68d2c83-cb1b-4b7f-9a81-546c5a482982", + "protocol": "http://iiif.io/api/image", + "width": 5012, + "height": 3233, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 661 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/f68d2c83-cb1b-4b7f-9a81-546c5a482982/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/f68d2c83-cb1b-4b7f-9a81-546c5a482982", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 661, + "sizes": [ + { + "width": 100, + "height": 65 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 1024, + "height": 661 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/836eef4d-1f08-4240-4577-10504228a3ad", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=263,789,237,152", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/33597349-12ad-40fb-bde5-afd13649099e/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3228, + "width": 5020, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/33597349-12ad-40fb-bde5-afd13649099e", + "protocol": "http://iiif.io/api/image", + "width": 5020, + "height": 3228, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 658 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/33597349-12ad-40fb-bde5-afd13649099e/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/33597349-12ad-40fb-bde5-afd13649099e", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 658, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 1024, + "height": 658 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/cfebe2ab-731f-400c-e336-e437f9a2ac3f", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=514,809,232,148", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/18804aee-2b95-45b6-b82b-7437a311aabd/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3233, + "width": 5010, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/18804aee-2b95-45b6-b82b-7437a311aabd", + "protocol": "http://iiif.io/api/image", + "width": 5010, + "height": 3233, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 661 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/18804aee-2b95-45b6-b82b-7437a311aabd/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/18804aee-2b95-45b6-b82b-7437a311aabd", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 661, + "sizes": [ + { + "width": 100, + "height": 65 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 1024, + "height": 661 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/1918f1bd-46f3-bac6-8ffa-53ffa2efbbe1", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=754,797,235,150", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Kaiser Aluminum News, “You and Creativity,” 1968" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/a294e3fe-5b42-1178-3b3e-4a77015902f6" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92", + "summary": { + "en": [ + "Oakland-based Kaiser Aluminum & Chemical Company, a paragon of the military-consumer-industrial complex, manufactured everything from fighter jet fuselages to TV dinner trays.", + "The 1968 edition of Kaiser News featured tests and exercises to help improve employee creativity alongside lyrical essays and psychedelic art inspired by the blossoming counterculture in nearby Berkeley and San Francisco. Kaiser apparently saw in creativity a value it shared with the counterculture, and hoped it could channel the spirit of liberation, self-expression, and innovation for its own gain." + ] + }, + "behavior": [ + "left", + "w-12", + "h-8" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/40", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/31466717-e1ea-ecab-ddc8-ed55f334340a", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/41", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e2afad69-442c-82b6-259e-5b9c1efb38ab", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/42", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c24489ae-b4ed-0e1d-2cf0-b14649345be0", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/43", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/13301733-9e5a-a1b7-c5aa-46e8c8da8454", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/44", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/36229569-3f9e-c11d-2f05-0016d089326f", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/45", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/09640709-1b54-a90c-114c-394424c29238", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/46", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/163af9c8-84b6-9d1b-99ef-9d77cb190345", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/47", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9a30bd2e-b202-adf9-0a44-2e5f650e3feb", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/48", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3bb8624e-c1dc-b07d-e301-a9cf7ef4e0c3", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/49", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/8ad0d15b-2c27-e73e-47bb-f4199056c8cf", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/50", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/513eb124-da3c-55ea-fb54-bc01a1dbbaff", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/51", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/50fe8189-90f6-1e78-e8a6-16d9688dce7c", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/52", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c0913eac-9272-0b7e-f73d-79436a9e49f1", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/53", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e6081f7c-7ba9-4f7b-990a-0e74cdabe78f", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/54", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/08997bad-bc2f-65d6-b918-480547ceecca", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/55", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/accc95b6-1120-fe01-e3b8-97cbc686506c", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/56", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c32d124a-718d-8e23-a519-938b6f1f8e18", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/57", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/836eef4d-1f08-4240-4577-10504228a3ad", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/58", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/cfebe2ab-731f-400c-e336-e437f9a2ac3f", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/59", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/1918f1bd-46f3-bac6-8ffa-53ffa2efbbe1", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + } + ] + } + ] + }, + { + "label": { + "en": [ + "The Appeal of Art" + ] + }, + "height": 1000, + "width": 696, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/7abc7471-4a24-4b61-a9ec-7bb9e5b588ef/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 8292, + "width": 5775, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7abc7471-4a24-4b61-a9ec-7bb9e5b588ef", + "protocol": "http://iiif.io/api/image", + "width": 5775, + "height": 8292, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 713, + "height": 1024 + }, + { + "width": 279, + "height": 400 + }, + { + "width": 139, + "height": 200 + }, + { + "width": 70, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/7abc7471-4a24-4b61-a9ec-7bb9e5b588ef/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/7abc7471-4a24-4b61-a9ec-7bb9e5b588ef", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 713, + "height": 1024, + "sizes": [ + { + "width": 70, + "height": 100 + }, + { + "width": 139, + "height": 200 + }, + { + "width": 279, + "height": 400 + }, + { + "width": 713, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/cab264ad-d299-4774-ea0c-601181791fc9", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/820c7365-b5a4-3e07-da24-006bf156d258#xywh=0,0,696,1000", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Scientific American, September 1958" + ] + }, + "summary": { + "en": [ + "In 1958 Alcoa ran an ad in Scientific American with an array of missiles styled in a modern, cubist painting, suggesting missiles, like paintings, were just another product of imagination." + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/14d3683e-6c22-07ca-89b1-79b387c47585" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/820c7365-b5a4-3e07-da24-006bf156d258", + "behavior": [ + "bottom", + "w-6", + "h-9" + ], + "summary": { + "en": [ + "In 1958 Alcoa ran an ad in Scientific American with an array of missiles styled in a modern, cubist painting, suggesting missiles, like paintings, were just another product of imagination." + ] + } + }, + { + "height": 1000, + "width": 1000, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "

Creativity Is Not About Art

\n\n

The British author Oscar Wilde once wrote, “all art is quite useless.” So why would people who write about creativity – which they say is the ability to come up with something new and useful – constantly urge people to unleash their inner artist?

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/textualbody/aa1400d1-970d-91ce-7dcc-9cc7ff001307/en" + } + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08", + "type": "Canvas" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/96fa4c9b-b0ed-daa9-7986-8f1076442cfe", + "motivation": [ + "painting" + ] + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/1c48a4a0-44d5-414b-d947-d8463066469e" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08", + "behavior": [ + "info", + "w-6", + "h-3" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08", + "type": "Canvas" + } + ], + "body": [ + { + "type": "TextualBody", + "value": "

Creativity is Not About Art

\n\n

The British author Oscar Wilde once wrote, “all art is quite useless.” So why would people who write about creativity – which they say is the ability to come up with something new and useful – constantly urge people to unleash their inner artist? In creativity literature the idealized figure of the romantic artist is a model for us to emulate, not for his or her ability to make art – reading books on creativity will not make us skilled painters – but rather for other attributes seen as desirable, such as flexibility, passion, playfulness, rebelliousness, and above all a purported penchant for novelty. Yet even as creativity experts embrace the figure of the artist, they are also quick to disown the reputation of the wild-eyed bohemian who is hostile to capitalism. Truly creative people, they say, can thrive even in the commercial or technical worlds. Creativity is like the essence of the artist, distilled and bottled for general use.

", + "format": "text/html", + "language": "en", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08/annotations/0/en" + } + ] + } + ] + } + ] + }, + { + "label": { + "en": [ + "Creativity Is Not About Art" + ] + }, + "height": 681, + "width": 681, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/4d76fcca-3a39-43de-ba76-23ad0e000309/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3398, + "width": 5227, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/4d76fcca-3a39-43de-ba76-23ad0e000309", + "protocol": "http://iiif.io/api/image", + "width": 5227, + "height": 3398, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 666 + }, + { + "width": 400, + "height": 260 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/4d76fcca-3a39-43de-ba76-23ad0e000309/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/4d76fcca-3a39-43de-ba76-23ad0e000309", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 666, + "sizes": [ + { + "width": 100, + "height": 65 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 400, + "height": 260 + }, + { + "width": 1024, + "height": 666 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/45e9c6b5-1a69-6477-8bf0-5294a19b804b", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25#xywh=21,23,462,297", + "type": "Canvas" + } + ], + "summary": { + "en": [ + "In the brochure for his tape cassette course on creativity, famed consumer research guru turned creativity consultant Ernest Dichter assured potential clients that developing creativity via “Dr. Dichter’s 12 Steps to Creativity” would not lead to a life of self-absorbed poverty, but rather professional success. (Courtesy of Hagley Museum and Library)" + ] + }, + "label": { + "en": [ + "The artist in the business suit" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/c856e755-513f-4f72-82f9-0135f7f30b78/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3210, + "width": 5181, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/c856e755-513f-4f72-82f9-0135f7f30b78", + "protocol": "http://iiif.io/api/image", + "width": 5181, + "height": 3210, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 634 + }, + { + "width": 400, + "height": 248 + }, + { + "width": 200, + "height": 124 + }, + { + "width": 100, + "height": 62 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/c856e755-513f-4f72-82f9-0135f7f30b78/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/c856e755-513f-4f72-82f9-0135f7f30b78", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 634, + "sizes": [ + { + "width": 100, + "height": 62 + }, + { + "width": 200, + "height": 124 + }, + { + "width": 400, + "height": 248 + }, + { + "width": 1024, + "height": 634 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/7abe4c4d-509e-5b62-4521-07e2758cb92f", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25#xywh=193,330,463,286", + "type": "Canvas" + } + ], + "label": { + "en": [ + "The artist in the business suit" + ] + }, + "summary": { + "en": [ + "In the brochure for his tape cassette course on creativity, famed consumer research guru turned creativity consultant Ernest Dichter assured potential clients that developing creativity via “Dr. Dichter’s 12 Steps to Creativity” would not lead to a life of self-absorbed poverty, but rather professional success. (Courtesy of Hagley Museum and Library)" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/32a6dfb6-7784-168a-d623-d9155729b204" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25", + "behavior": [ + "w-6", + "h-6" + ], + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25/annotations/61", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/45e9c6b5-1a69-6477-8bf0-5294a19b804b", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25/annotations/62", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/7abe4c4d-509e-5b62-4521-07e2758cb92f", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + } + ] + } + ] + }, + { + "label": { + "en": [ + "Creative Spaces" + ] + }, + "height": 1000, + "width": 792, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/7756ed2b-f072-4fef-b821-09ecf9ee9d3d/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4079, + "width": 3234, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7756ed2b-f072-4fef-b821-09ecf9ee9d3d", + "protocol": "http://iiif.io/api/image", + "width": 3234, + "height": 4079, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 812, + "height": 1024 + }, + { + "width": 317, + "height": 400 + }, + { + "width": 159, + "height": 200 + }, + { + "width": 79, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/7756ed2b-f072-4fef-b821-09ecf9ee9d3d/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/7756ed2b-f072-4fef-b821-09ecf9ee9d3d", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 812, + "height": 1024, + "sizes": [ + { + "width": 79, + "height": 100 + }, + { + "width": 159, + "height": 200 + }, + { + "width": 317, + "height": 400 + }, + { + "width": 812, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/39ee5c41-cd5f-2352-a90c-15af871be681", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5178cf84-8590-d231-e7e3-d09995b3ae1c#xywh=0,0,792,1000", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Action Office promotional photograph from the Herman Miller company, 1964" + ] + }, + "summary": { + "en": [ + "Believing the traditional office was “restrictive and inflexible,” they studied people “noted for creativity” (some­times using the psychologist J. P. Guilford’s battery of creativity tests) and determined the workspace of the future should be flexible, active, and individualized. Unfortunately the desires of management intervened and the subsequent versions devolved into the endless rectangular cubicle farms we know today. (Courtesy Vitra Design Museum)" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/list/c6e3adf2-89b7-620c-7392-ead37b3e4ab8" + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5178cf84-8590-d231-e7e3-d09995b3ae1c", + "behavior": [ + "right", + "w-12", + "h-9" + ], + "summary": { + "en": [ + "In 1964 the designers Robert Propst and George Nelson attempted to revolutionize the white collar workplace with their new Action Office line of furniture for the Herman Miller company.", + "Believing the traditional office was “restrictive and inflexible,” they studied people “noted for creativity” (some­times using the psychologist J. P. Guilford’s battery of creativity tests) and determined the workspace of the future should be flexible, active, and individualized. Unfortunately the desires of management intervened and the subsequent versions devolved into the endless rectangular cubicle farms we know today.", + "The idea that creativity could be heightened through open and flexible workplaces persisted, reflected in our own era of corporate design that looks anything but corporate, from the refurbished factories and artist studio-inspired lofts of urban tech startups to the playground-like campuses of Silicon Valley giants. All of these changes have been accompanied by parallel changes in the way we dress, the way we are managed, and the way we are encouraged to think about our work – not as work, but as passion and play, where the boundaries between work and leisure break down and, we are told, the future runs not on toil but on pure ideas." + ] + } + }, + { + "height": 1000, + "width": 1000, + "type": "Canvas", + "items": [ + { + "type": "AnnotationPage", + "items": [ + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/7832f040-0f0e-4e41-8742-1cdb481e6b9c/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 11812, + "width": 11812, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7832f040-0f0e-4e41-8742-1cdb481e6b9c", + "protocol": "http://iiif.io/api/image", + "width": 11812, + "height": 11812, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/7832f040-0f0e-4e41-8742-1cdb481e6b9c/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/7832f040-0f0e-4e41-8742-1cdb481e6b9c", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 1024, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/6a579d95-9667-08b7-f19e-dc1749a21a74", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=0,0,500,500", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Creative work" + ] + }, + "summary": { + "en": [ + "Creativity cliches - artistically interpreted by Xaviera Altena" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/6187e854-138b-4d8e-b0b0-4bfdc398a077/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 11812, + "width": 11812, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/6187e854-138b-4d8e-b0b0-4bfdc398a077", + "protocol": "http://iiif.io/api/image", + "width": 11812, + "height": 11812, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/6187e854-138b-4d8e-b0b0-4bfdc398a077/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/6187e854-138b-4d8e-b0b0-4bfdc398a077", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 1024, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/c6e43b29-35e6-d10e-455e-6a07e2cd3a99", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=0,500,500,500", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Creative person" + ] + }, + "summary": { + "en": [ + "Creativity cliches - artistically interpreted by Xaviera Altena" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/f33d6ee8-ae0b-403e-861a-dc53962df4e5/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 11812, + "width": 11812, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/f33d6ee8-ae0b-403e-861a-dc53962df4e5", + "protocol": "http://iiif.io/api/image", + "width": 11812, + "height": 11812, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/f33d6ee8-ae0b-403e-861a-dc53962df4e5/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/f33d6ee8-ae0b-403e-861a-dc53962df4e5", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 1024, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/f32da43f-0c40-36f1-49ab-355138d79cf2", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=500,0,500,500", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Creative workplace" + ] + }, + "summary": { + "en": [ + "Creativity cliches - artistically interpreted by Xaviera Altena" + ] + } + }, + { + "motivation": [ + "painting" + ], + "type": "Annotation", + "body": [ + { + "id": "https://dlc.services/iiif-img/7/21/2478f680-330d-4f5f-8d79-161b25b38063/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 11812, + "width": 11812, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/2478f680-330d-4f5f-8d79-161b25b38063", + "protocol": "http://iiif.io/api/image", + "width": 11812, + "height": 11812, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + } + ], + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/2478f680-330d-4f5f-8d79-161b25b38063/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/2478f680-330d-4f5f-8d79-161b25b38063", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 1024, + "height": 1024 + } + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/7775972e-5694-bc2c-5b48-9311bebd5f0f", + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=500,500,500,500", + "type": "Canvas" + } + ], + "label": { + "en": [ + "Creative session" + ] + }, + "summary": { + "en": [ + "Creativity cliches - artistically interpreted by Xaviera Altena" + ] + } + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/list/f297625a-27e6-387a-d98e-4599bd296c45" + } + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7", + "behavior": [ + "left", + "w-12", + "h-8" + ], + "label": { + "en": [ + "What does it mean to be creative?" + ] + }, + "summary": { + "en": [ + "From the image of the fashionably shabby urban dweller, always at work yet always at play, to the ubiquitous “brainstorm” session, postwar ideas about what creativity is, who has it, and how to foster it still resonate today.", + "Though much of the postwar context has changed, many of the key components–such as a hyper-consumer economy and fundamental anxieties about technology and the survival of our species–remain. Perhaps that’s why we continue to spend so much time and money attempting to uncover the secrets of the “creative mind” and the “creative process,” and why “creativity,” despite its vagueness, continues to be the thing we all want more of. " + ] + }, + "requiredStatement": { + "value": { + "en": [ + "Illustrations by Xaviera Altena" + ] + } + }, + "annotations": [ + { + "type": "AnnotationPage", + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7/annotations", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7/annotations/64", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/6a579d95-9667-08b7-f19e-dc1749a21a74", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7/annotations/65", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/c6e43b29-35e6-d10e-455e-6a07e2cd3a99", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7/annotations/66", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/f32da43f-0c40-36f1-49ab-355138d79cf2", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + }, + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7/annotations/67", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": [ + { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/7775972e-5694-bc2c-5b48-9311bebd5f0f", + "type": "Annotation", + "motivation": [], + "body": [], + "target": [] + } + ], + "body": [] + } + ] + } + ] + } + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/manifest", + "homepage": [ + { + "id": "https://heritage.tudelft.nl/nl/exhibitions/inventing-creativity", + "type": "Text", + "format": "text/html", + "language": [ + "nl" + ] + }, + { + "id": "https://heritage.tudelft.nl/en/exhibitions/inventing-creativity", + "type": "Text", + "format": "text/html", + "language": [ + "en" + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json b/fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json new file mode 100644 index 0000000..ac9b7ea --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json @@ -0,0 +1,11476 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219", + "type": "Manifest", + "label": { + "en": [ + "O.0219" + ] + }, + "items": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas", + "label": { + "en": [ + "O.0219" + ] + }, + "height": 6270, + "width": 2551, + "items": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation-page/layers", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/layers", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "type": "Choice", + "items": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorB/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorB", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ColorB" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedA/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedA", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ShadedA" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorA/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorA", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ColorA" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Soft/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Soft", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_Sketch01Soft" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedC/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedC", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ShadedC" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorD/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorD", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ColorD" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Color00/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Color00", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_Color00" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Hard/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Hard", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_Sketch01Hard" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorC/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorC", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ColorC" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedD/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedD", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ShadedD" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedB/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedB", + "type": "ImageService2", + "profile": "level2" + } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ShadedB" + ] + } + } + ] + } + ], + "target": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + } + ] + } + ] + } + ], + "annotations": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation-page/sign-annotations", + "type": "AnnotationPage", + "items": [ + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "1(u)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1" + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c426144a-b36b-4503-bcf6-7a0c36edd371", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "1(asz)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2b053d88-5bce-49ff-aba9-104bd645b279", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "iku", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0417f494-13e9-4e95-8fff-1040c5e1ce86", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e691a439-a30a-4d67-9828-f0718b07af62", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sza3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2b34febc-4ae0-4dd0-a7e6-d5e023d4bdb2", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{gisz}", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#23e7b773-92e0-4bef-afdc-5a923dd68111", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "kiri6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0e968c19-e4a0-4120-a94c-8bcc867c99e3", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "da", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#24ed6b89-1364-4ca6-b9d9-44b2572dd6b7", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9738e9ac-3873-4683-9210-c658ced8d0b1", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sza3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1d500524-b74c-4e07-89ba-5d3d90a3e3c3", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6c455ecf-9d52-41b3-b010-d12b9aba3c5c", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#38d7bccb-b518-4dd2-96cd-c2321bff1241", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ti", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b6d7b7f5-16c5-4b2b-b65b-110522cd683e", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ia", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#67ae185f-fb06-4d0b-bf59-41fc71c12f0f", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "u3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6b290be0-3502-491a-adfe-efa45cef0dd8", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "da", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#bdcd0efb-7ef4-4699-a5b2-7ea1cd373735", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7319ccb1-d442-400f-bbdb-e70801de6852", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ra", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2d4ba567-31dd-47fb-a3c4-f0d92f350456", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "am", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4ba32aa7-c882-465a-b1e0-48a826717b29", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "tum", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7cb2d6e5-782d-4cfc-a33e-f47afb87da8a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sag", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#80fc4205-8d91-49a6-ab75-a150e1f63e5f", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "1(disz)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4d8d7312-874b-4183-80b4-5a910a1e2404", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "kam", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6a95d7c2-3e6c-493f-853c-b949eba94f83", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "hu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#37d01b14-1bf6-4962-a21c-19936442c3c6", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0dced633-9902-4d1e-8a5c-996b3befab70", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#77b00339-3d34-437f-b161-d8a488ee6377", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "um", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3a83bb45-e1da-407a-8125-09d5147d9cb1", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sag", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7e2f5d68-07c1-4f80-b29f-484fbee6171b", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "2(disz)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5" + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#210e2dcd-3ca2-43dc-908d-48b379b89458", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "kam", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#5305137e-c099-4142-a7f7-cd99a4882ca6", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2da3bd88-400e-4ddd-904c-3cc26c4101c9", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#76a47021-848c-4475-8492-23504234b2b6", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "be", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#32c11fd9-21ce-4a6b-9d46-a2e72b3026d2", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "el", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#541f884b-aec8-4ae0-9d65-7779ba968178", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ti", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#cc72ab91-ec7e-41cd-8850-96d861eaa620", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6ca4fe58-710e-4a28-b844-a09626549a62", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szam2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3396511f-bb35-4331-af10-497bd56ec44f", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "til", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3dbc632d-c1d8-4cce-9ccc-ea66a818ba35", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#806a9bad-1f85-4c53-977c-445ac56d5d70", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#bcf228f8-732f-4308-a548-970c0ccef28f", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sze3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f5c8881c-73d0-4e8d-b8fd-c0cb221a7237", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "1(u)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2dfb00e8-e9c0-4dc3-be34-0ecc5f55760d", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "gin2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#8c6fc70e-d799-4517-9f12-d80f666b9e44", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ku3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f87cc403-6b47-4bfe-8ebc-1f0e9e7ffa35", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "babbar", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#bdea0ad3-1d2a-4ab4-897a-d8b743a784e6", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "in", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0693f74e-4d6d-4500-8f87-be5ea22e2be6", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f1838cc4-d0bf-413b-bed9-178cb0f0ef85", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#05fb6483-1848-4e95-884d-90596ffa0727", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ki", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#822f3bc4-5944-4486-8556-800f5b61ef17", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d63ac510-62c7-440e-9e02-8a1187c9b2b4", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{gisz}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d0674eb3-34a9-4708-b80e-3fed6582db6f", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "gigir", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f5867d69-9282-43c5-afb9-5ce18a9d54bf", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#30b10b87-2944-4e75-9999-b9c2fef8b1ac", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2afa342c-7dbd-431b-ae11-740fecf3bb26", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ti", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#07ab3be6-829b-4336-83d7-5d98cd36f336", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ia", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#65b92dc8-0da0-4c13-bde5-1609c2c665c5", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "in", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#cc0cc404-632f-4cec-b863-7b6653bb7548", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1ba510b3-08b3-4d5d-b8ca-aa98959135a4", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sa10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f190fcab-6b54-464b-94d2-98981b8cbf62", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "u4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#af084012-ad9e-4344-b57f-f3918dd7e962", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "kur2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b31d5f01-2ceb-460f-98fd-316c4daad229", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sze3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e3f038b1-3aa4-41b8-a7b6-01c02a7e7e57", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "inim", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6e18ed6b-b3c0-4d6e-aa56-aff45616515a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#a99766b2-be55-400b-97c0-72ba76c52973", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ga2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6d0797c8-815f-45a7-a09a-c6569327fe56", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ga2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#073006f2-c233-40e7-b4e6-8fb57bcb3879", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#876c9690-7aa9-4387-a05a-520bcd7dbeeb", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ma", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#927ea45d-66d3-41cf-ba79-1def1221a11c", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e6572b26-5574-4898-8f73-8bcba06dbf84", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "lugal", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#5ee31f96-5896-47c9-985d-f5338cb52fd9", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "mar2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#10708a15-3b93-4e64-882d-6d3bfdcd8e90", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "da", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6be60fef-ff06-4693-a71b-ee9e21bef8a5", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "u3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d2fefdc4-c268-47b5-94c3-a7d0eb5760dc", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "su", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c505c508-3977-42e2-a3cc-8cbb62a4a739", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "mu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#81692287-3ebd-482a-b1de-36c492604d2a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#15e5f14a-3700-477a-b1db-2ffce10c34a0", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "um", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0ce92c79-7e45-45a4-b6d7-cf877ea570a4", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "hi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#af566a2c-85e8-43b3-9043-3ea118cf3dc0", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "im", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9d380a28-0568-491d-acff-93a7ead798f5", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "in", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9d3fcca5-75d4-4a7f-ad2b-8ab7e51cb7d7", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d32f19ed-ab81-4813-9bb1-a89501b094ee", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ru", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#50c50634-3f5e-4203-9867-1ab6f6a13819", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "de3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#8d823b8e-9a7d-4f4e-ab3e-2babfcbf9b50", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "esz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#23fbfc92-a856-4e7b-a6ba-c2b8223809bc", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#39d37237-4d50-47f9-9c50-4126720f175c", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sza", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e467dad2-23ad-4ca4-9e90-c3f41f1021e3", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#07b7c131-b110-41d4-9bf1-cc940481df55", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "gi4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6fa133b2-044e-4063-a3f4-0c782c31a502", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ri", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#65815467-3fc8-4239-87fc-1d3bb8ba4e14", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "is", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b9eeef4e-2030-478a-a40a-4979b1c35739", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1fbdcad7-a202-4371-a75e-2a4ecb6053be", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "mil", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#74b5481c-25c5-430c-be1a-58cad8ac5528", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9abac41e-6425-429d-bcd8-892b21327387", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "en", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4c35868f-c81a-4753-944a-539feee43e63", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#42461aee-9590-45b7-a1a7-855b74e63ba8", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d346108a-c810-4b9b-823d-aecfcbe77727", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b6a937a5-bdc9-4c1e-9984-c0d331439056", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0e45fc02-5fbc-4be6-b690-51f3898ef060", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f031b2a7-5b60-4863-b05a-9e1f7594bb52", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "en", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6a0114f0-b36c-4d40-a81e-8ddbd89fe21c", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e173ee15-1c11-40a3-9dd2-e6ef701b8947", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#aee3ca12-8ec6-49d7-83d0-12a6e17285a1", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "be", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1e84bb7d-aa50-4735-bfb1-b9f9c2bb5a3c", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4d1bd19a-e978-4f89-baa6-e33b4d929835", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#70abf5c6-7744-446a-97fd-d89b0719d94d", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "um", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#64333bd0-a3eb-4e69-9005-974318dac169", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3b1f5534-834b-4464-a0b4-5359ab2cddfb", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ku3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#71b0179a-dd7a-4e60-af1a-0279413b0db7", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1302ab52-cb83-4a75-bed1-5d4a99718ab9", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nin", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#a9f9b8e0-51db-4b1a-960b-d99f0e827279", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szubur", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4a4f053d-9e76-48f7-b56f-9e5ff2df1c6c", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#df6ded75-b0a5-4028-acb6-2a571bab5f6b", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dingir§", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c09403f7-8b7b-4e1e-91ba-280c7a59abff", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ba", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#97a9e37f-4b8a-4ccd-8c55-94f080089ca9", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c6542cf0-1211-4d13-bcf2-3721b1276586", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0c01b49e-9ebf-4099-ba4c-62e50487d501", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f3d80430-4564-40aa-abf6-9fff6589b2e0", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "en", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0b6e287a-d3d1-407a-9b31-930d422a709b", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#317696fa-36a9-4563-8537-e2c8580f3d84", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + }, + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "li", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#835f3152-5f51-4e2f-aeac-88e23c7a6b2c", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "di", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#aaeb970d-84f7-463b-af62-4869ee27efb5", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "isz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#af26748b-12dc-493f-a3a6-21b7fcd4600b", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2ee73f5a-13db-4ab5-bd9b-628921c68da9", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dingir", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0c80ce22-1942-4985-a46d-03e8d57f1b9a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ba", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6c62ae29-4532-454e-a00e-f7d932ccf114", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#45c38035-5a82-4b8c-b166-b10b1bb57dd7", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#fb94bb47-0e7b-4554-abb2-179895703fd1", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#cf62d6db-166f-4958-be1f-fb948a5ee5da", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9e5e25a0-cb01-40e4-be2a-3262bbbaa58a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "be", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f1b292ad-f85f-4291-a16c-2c8e77827521", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "el", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6e6ddbb1-9428-4f9d-b2cf-923443711776", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ti", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e1440654-a3ea-4153-acfe-1c5e5d635368", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1f5487b6-3f53-4096-8327-d32adf2d4e83", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szesz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9ccbe406-284d-4489-8f67-26f13fd6198a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#63c34d01-57af-4a13-b46d-d22d801f165b", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b984046e-66f3-4c31-88fd-bd1cb1a80f7e", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ca06ec7e-f77c-4e28-9f2c-914bd6ea1950", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ib", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1e07d2a8-6fe5-42dd-ae70-80e543f0afea", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#90dfa187-04fa-4367-a350-16ed7be05093", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ir3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ba97ca65-b53f-472e-9f61-231aca8dfe5f", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ra", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#29c3f876-ba2a-4013-bba2-8df180f48023", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#25945214-963a-4d3a-8bc2-367b9f300da2", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "i3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f7e6c92a-7cdc-4478-825b-922494b79b92", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "li2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#5b5ed5e0-c085-4b46-bf08-12a92d6a446d", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ba", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Wordindex", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f496d0ec-88dc-4b1c-9a2e-7ff53ea58741", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "asz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b024d758-053e-463a-86e7-1d4a7751d4e2", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#bf7632f3-9287-463e-b432-8154323976dc", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ae689a4b-5837-4631-9058-17aeea33e53e", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ku", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "13", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ecb18e32-0c93-4f79-a194-3ef77090ed9d", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#aa2e9c9c-11ff-4ce3-ba90-abea327f5559", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c2f22535-26e9-4bd8-87ba-3a772b80c5cc", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "hu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4210808b-82fe-4ac6-a981-c2aa927858c0", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#70748999-5ec1-4827-8e81-8203d4c9569c", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ad7b2655-b685-4571-be23-30126ab4c4c4", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2a942048-86a9-4781-9f68-f01bc0e04fe8", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#575ce70e-b72d-4c62-aa38-ae8b4494a003", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "en", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3f337d58-2622-43b2-a5b8-e53391eee97a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4d069d60-2feb-4b04-9cc8-72c85a7d8a27", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "gal", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#72f18670-2f06-46ed-92f4-c4357ba70177", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#03482e0c-9483-4a9e-bb97-a44504ec833b", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3a73cf29-a306-4a3f-a7c5-04ae3f6c52c1", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ar", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9e5207d6-020e-46ed-938f-333da54373fd", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "wi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e9e6ac96-efa5-478a-a72a-2c01779ecee1", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "um", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#35b2366d-207f-4e2b-b21d-9b17c4d47f42", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dub", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#fc9ac66f-885c-4ee3-a6db-f79e4478d1b7", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sar", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#720dae2c-285b-4398-81ca-1142c5b672b0", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d815aeb4-74a1-4fe9-9ac6-6c9f2e58e81a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9bf50a63-990d-45e3-bb05-4685db321108", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c5d488d9-0a05-447f-bbc6-1fe7e781921b", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "i3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c34c61ca-b895-4d5e-8089-09c330b566dd", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "li2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#be02179c-d033-407c-b191-75d03abd52f7", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ec78d225-ddb9-4ea8-ad54-478cabddbc5f", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#cd00e814-8bd3-4acd-9d19-bb60cf73f299", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "i3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ecbcce6d-0230-4828-a8cc-112042775c84", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "li2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#a3e0f777-5e22-4d02-810b-5ce99f44f220", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ba", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7e2aa440-df60-453a-a483-91a793c93df1", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "asz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#295c95ec-78bb-456e-995a-5bdb450f5efb", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#55ea7e7a-f613-47f3-8cf0-f038b5a14ec7", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "13", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#5e4c4209-9d11-41ad-91f9-be3bf1f856e0", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ku", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "14", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#34510804-6274-4945-8031-9b45b7dc7125", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "du8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "13", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#435c513d-49d8-4c48-a3a6-60b8844f062a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "13", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3592f0da-5e25-49b8-9093-d9a370c95159", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "za", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f3924d78-17c7-4199-b9ab-2e22e4a62463", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bara2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top", + "dimensions": { + "x": 2034, + "y": 5000 + } + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#788c96d3-8e31-4b7c-8283-b9a2b884e84f", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6b3af227-90fd-4ceb-a837-edfb2efe549b", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nin", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#72d14cca-2b9a-4399-8817-8b5c536dac3f", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "mu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7a77b427-fec8-4489-8edd-962d1271826e", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#80957bda-f6a9-4267-96ee-2a175f3af61a", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dim2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#49bfcf04-50c4-4e87-a983-a6c922d3855e", + "motivation": [ + "tagging" + ] + }, + { + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "re", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" + } + ], + "target": [ + { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + } + ], + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6500d6b9-de49-4fdb-83a7-ccab7d0ef59a", + "motivation": [ + "tagging" + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--has-part.json b/fixtures/presentation-4/upgraded-from-p3/p3--has-part.json new file mode 100644 index 0000000..8ddf73c --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--has-part.json @@ -0,0 +1,67 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://iiif.io/api/cookbook/recipe/0005-image-service/manifest.json", + "type": "Manifest", + "label": { + "en": [ + "Picture of Göttingen taken during the 2019 IIIF Conference" + ] + }, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0005-image-service/canvas/p1", + "type": "Canvas", + "label": { + "en": [ + "Canvas with a single IIIF image" + ] + }, + "thumbnail": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg" + } + ], + "height": 3024, + "width": 4032, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0005-image-service/page/p1/1", + "type": "AnnotationPage", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0005-image-service/annotation/p0001-image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3024, + "width": 4032, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3" + } + ] + } + ], + "target": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0005-image-service/canvas/p1", + "type": "Canvas" + } + ] + } + ] + } + ] + } + ] +} diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json b/fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json new file mode 100644 index 0000000..92d6420 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json @@ -0,0 +1,537 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json", + "type": "Manifest", + "label": { + "nl": [ + "De familie van Grenthe, het kippenvrouwtje" + ] + }, + "metadata": [ + { + "label": { + "nl": [ + "Datum gemaakt" + ] + }, + "value": { + "nl": [ + "2025-06-05T15:01:51" + ] + } + }, + { + "label": { + "nl": [ + "Datum gewijzigd" + ] + }, + "value": { + "nl": [ + "2025-06-05T15:14:31" + ] + } + }, + { + "label": { + "nl": [ + "dateCreated" + ] + }, + "value": { + "nl": [ + "1938" + ] + } + }, + { + "label": { + "nl": [ + "beschrijving" + ] + }, + "value": { + "nl": [ + "De kunstenares maakte zes illustraties voor het sprookje 'Grethe het kippenvrouwtje' van H.C. Andersen." + ] + } + }, + { + "label": { + "nl": [ + "identificatie" + ] + }, + "value": { + "nl": [ + "00002" + ] + } + }, + { + "label": { + "nl": [ + "itemLocatie" + ] + }, + "value": { + "nl": [ + "KO.rek06.40" + ] + } + }, + { + "label": { + "nl": [ + "naam" + ] + }, + "value": { + "nl": [ + "De familie van Grenthe, het kippenvrouwtje" + ] + } + } + ], + "summary": { + "nl": [ + "De kunstenares maakte zes illustraties voor het sprookje 'Grethe het kippenvrouwtje' van H.C. Andersen." + ] + }, + "thumbnail": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.180/full/!250,250/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.180/full/!250,250/0/default.jpg", + "type": "ImageService3", + "profile": "level3" + } + ] + }, + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.178/full/!250,250/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.178/full/!250,250/0/default.jpg", + "type": "ImageService3", + "profile": "level3" + } + ] + }, + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.179/full/!250,250/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.179/full/!250,250/0/default.jpg", + "type": "ImageService3", + "profile": "level3" + } + ] + }, + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.15370/full/!250,250/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.15370/full/!250,250/0/default.jpg", + "type": "ImageService3", + "profile": "level3" + } + ] + }, + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.182/full/!250,250/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.182/full/!250,250/0/default.jpg", + "type": "ImageService3", + "profile": "level3" + } + ] + }, + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.183/full/!250,250/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.183/full/!250,250/0/default.jpg", + "type": "ImageService3", + "profile": "level3" + } + ] + } + ], + "viewingDirection": "right-to-left", + "behavior": [ + "paged" + ], + "rights": "http://creativecommons.org/licenses/by/4.0", + "requiredStatement": { + "label": { + "en": [ + "Attribution" + ], + "nl": [ + "Naamsvermelding" + ] + }, + "value": { + "en": [ + "Provided by Museum Kranenburgh" + ], + "nl": [ + "Aangeboden door Museum Kranenburgh" + ] + } + }, + "provider": [ + { + "id": "http://www.museumkranenburgh.nl", + "type": "Agent", + "label": { + "none": [ + "Museum Kranenburgh" + ] + }, + "seeAlso": [ + { + "id": "https://www.ldmax.nl/organisaties/q4350196.jsonld", + "type": "Dataset", + "format": "application/ld+json", + "profile": "https://schema.org/" + }, + { + "id": "https://www.ldmax.nl/organisaties/q4350196.ttl", + "type": "Dataset", + "format": "text/turtle", + "profile": "https://schema.org/" + }, + { + "id": "https://www.ldmax.nl/organisaties/q4350196.nt", + "type": "Dataset", + "format": "application/n-triples", + "profile": "https://schema.org/" + } + ] + } + ], + "homepage": [ + { + "id": "https://www.ldmax.nl/datasets/q4350196/triples?subject=https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71", + "type": "Text", + "label": { + "nl": [ + "Detailpagina" + ] + }, + "format": "text/html" + } + ], + "partOf": [ + { + "id": "https://www.ldmax.nl/datasets/q4350196.jsonld", + "type": "Collection" + } + ], + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1", + "type": "Canvas", + "label": { + "none": [ + "p. 1" + ] + }, + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/annotation", + "type": "AnnotationPage", + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/annotation/image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1", + "type": "Canvas" + } + ], + "body": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.180", + "type": "ImageService3", + "profile": "level3" + } + ] + } + ] + } + ] + } + ] + }, + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2", + "type": "Canvas", + "label": { + "none": [ + "p. 2" + ] + }, + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2/annotation", + "type": "AnnotationPage", + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2/annotation/image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2", + "type": "Canvas" + } + ], + "body": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.178", + "type": "ImageService3", + "profile": "level3" + } + ] + } + ] + } + ] + } + ] + }, + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3", + "type": "Canvas", + "label": { + "none": [ + "p. 3" + ] + }, + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3/annotation", + "type": "AnnotationPage", + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3/annotation/image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3", + "type": "Canvas" + } + ], + "body": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.179", + "type": "ImageService3", + "profile": "level3" + } + ] + } + ] + } + ] + } + ] + }, + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4", + "type": "Canvas", + "label": { + "none": [ + "p. 4" + ] + }, + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4/annotation", + "type": "AnnotationPage", + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4/annotation/image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4", + "type": "Canvas" + } + ], + "body": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.15370", + "type": "ImageService3", + "profile": "level3" + } + ] + } + ] + } + ] + } + ] + }, + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5", + "type": "Canvas", + "label": { + "none": [ + "p. 5" + ] + }, + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5/annotation", + "type": "AnnotationPage", + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5/annotation/image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5", + "type": "Canvas" + } + ], + "body": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.182", + "type": "ImageService3", + "profile": "level3" + } + ] + } + ] + } + ] + } + ] + }, + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6", + "type": "Canvas", + "label": { + "none": [ + "p. 6" + ] + }, + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6/annotation", + "type": "AnnotationPage", + "height": 1000, + "width": 750, + "items": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6/annotation/image", + "type": "Annotation", + "motivation": [ + "painting" + ], + "target": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6", + "type": "Canvas" + } + ], + "body": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.183", + "type": "ImageService3", + "profile": "level3" + } + ] + } + ] + } + ] + } + ] + } + ] +} diff --git a/package.json b/package.json index 4552641..a65d422 100644 --- a/package.json +++ b/package.json @@ -238,15 +238,8 @@ "test": "vitest", "lint": "publint" }, - "resolutions": { - "@iiif/presentation-3": "2.2.3", - "@iiif/presentation-3-normalized": "0.9.7" - }, "dependencies": { - "@types/geojson": "7946.0.13", - "@iiif/presentation-2": "1.0.4", - "@iiif/presentation-3": "2.2.3", - "@iiif/presentation-3-normalized": "0.9.7" + "@types/geojson": "7946.0.13" }, "optionalDependencies": { "abs-svg-path": "^0.1.1", @@ -254,12 +247,7 @@ "svg-arc-to-cubic-bezier": "^3.2.0" }, "peerDependencies": { - "@iiif/parser": "^2.2.8" - }, - "overrides": { - "@iiif/parser": { - "@iiif/presentation-3": "2.2.3" - } + "@iiif/parser": "https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60" }, "devDependencies": { "@types/jsdom": "^21.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3fa2f6..0217080 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,26 +4,13 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - '@iiif/presentation-3': 2.2.3 - '@iiif/presentation-3-normalized': 0.9.7 - importers: .: dependencies: '@iiif/parser': - specifier: ^2.2.8 - version: 2.2.8 - '@iiif/presentation-2': - specifier: 1.0.4 - version: 1.0.4(@iiif/presentation-3@2.2.3) - '@iiif/presentation-3': - specifier: 2.2.3 - version: 2.2.3 - '@iiif/presentation-3-normalized': - specifier: 0.9.7 - version: 0.9.7 + specifier: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60 + version: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60 '@types/geojson': specifier: 7946.0.13 version: 7946.0.13 @@ -357,19 +344,9 @@ packages: cpu: [x64] os: [win32] - '@iiif/parser@2.2.8': - resolution: {integrity: sha512-wZNPBvcdncXh+y434ASkmkr4hhHRj63E0L5hMJOJobAuBa0p5jf/o1kV0RXRngAZxJYQ49t68L3g2KE48yNx8w==} - - '@iiif/presentation-2@1.0.4': - resolution: {integrity: sha512-hJakpq62VBajesLJrYPtFm6hcn6c/HkKP7CmKZ5atuzu40m0nifWYsqigR1l9sZGvhhHb/DRshPmiW/0GNrJoA==} - peerDependencies: - '@iiif/presentation-3': 2.2.3 - - '@iiif/presentation-3-normalized@0.9.7': - resolution: {integrity: sha512-Aqk0sYBFIH5W3wmVxW02tnAFbNzUU5oPygGQjvszB3PP2nSkFQ1skVjqJhQPPZTyi/de1qcJUrgSy0vp6s+c5A==} - - '@iiif/presentation-3@2.2.3': - resolution: {integrity: sha512-xCLbUr9euqegsrxGe65M2fWbv6gKpiUhHXCpOn+V+qtawkMbOSNWbYOISo2aLQdYVg4DGYD0g2bMzSCF33uNOQ==} + '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60': + resolution: {tarball: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60} + version: 2.2.9 '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} @@ -1776,24 +1753,7 @@ snapshots: '@esbuild/win32-x64@0.20.2': optional: true - '@iiif/parser@2.2.8': - dependencies: - '@iiif/presentation-2': 1.0.4(@iiif/presentation-3@2.2.3) - '@iiif/presentation-3': 2.2.3 - '@iiif/presentation-3-normalized': 0.9.7 - '@types/geojson': 7946.0.13 - - '@iiif/presentation-2@1.0.4(@iiif/presentation-3@2.2.3)': - dependencies: - '@iiif/presentation-3': 2.2.3 - - '@iiif/presentation-3-normalized@0.9.7': - dependencies: - '@iiif/presentation-3': 2.2.3 - - '@iiif/presentation-3@2.2.3': - dependencies: - '@types/geojson': 7946.0.13 + '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60': {} '@jest/schemas@29.6.3': dependencies: diff --git a/scripts/generate-p4-fixtures.mjs b/scripts/generate-p4-fixtures.mjs new file mode 100644 index 0000000..86b7e8b --- /dev/null +++ b/scripts/generate-p4-fixtures.mjs @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +/** + * Generate P4 fixtures by upgrading existing P3 cookbook fixtures. + * + * Usage: + * node scripts/generate-p4-fixtures.mjs + * + * This reads every JSON file in fixtures/cookbook/ and fixtures/presentation-3/, + * upgrades each to Presentation 4 using the parser's upgrader, and writes the + * result into fixtures/presentation-4/upgraded-from-p3/. + */ + +import { + existsSync, + mkdirSync, + readdirSync, + readFileSync, + writeFileSync, +} from "node:fs"; +import { basename, dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const root = join(__dirname, ".."); + +// Dynamically import the parser – it may be installed from the preview package +// or linked locally. +let upgradeToPresentation4; +try { + const p4 = await import("@iiif/parser/presentation-4"); + upgradeToPresentation4 = p4.upgradeToPresentation4; +} catch { + // Fallback: try loading from the sibling parser source tree (for local dev) + try { + const p4 = await import("../../src/presentation-4/index.ts"); + upgradeToPresentation4 = p4.upgradeToPresentation4; + } catch (err) { + console.error( + "Could not load @iiif/parser/presentation-4. Make sure the parser is installed or linked.\n", + err.message, + ); + process.exit(1); + } +} + +const outputDir = join(root, "fixtures/presentation-4/upgraded-from-p3"); + +if (!existsSync(outputDir)) { + mkdirSync(outputDir, { recursive: true }); +} + +const sourceDirs = [ + { dir: join(root, "fixtures/cookbook"), prefix: "cookbook" }, + { dir: join(root, "fixtures/presentation-3"), prefix: "p3" }, +]; + +let totalProcessed = 0; +let totalErrors = 0; + +for (const { dir, prefix } of sourceDirs) { + if (!existsSync(dir)) { + console.warn(`Skipping ${dir} – directory not found`); + continue; + } + + const files = readdirSync(dir).filter((f) => f.endsWith(".json")); + + for (const file of files) { + const inputPath = join(dir, file); + const outputName = `${prefix}--${file}`; + const outputPath = join(outputDir, outputName); + + try { + const raw = readFileSync(inputPath, "utf8"); + const json = JSON.parse(raw); + const upgraded = upgradeToPresentation4(json); + writeFileSync(outputPath, JSON.stringify(upgraded, null, 2) + "\n"); + totalProcessed++; + console.log(`✓ ${outputName}`); + } catch (err) { + totalErrors++; + console.error(`✗ ${outputName}: ${err.message}`); + } + } +} + +console.log(`\nDone. ${totalProcessed} upgraded, ${totalErrors} errors.`); +console.log(`Output: ${outputDir}`); diff --git a/src/annotation-targets/expand-target.ts b/src/annotation-targets/expand-target.ts index 0b576a2..05c05f2 100644 --- a/src/annotation-targets/expand-target.ts +++ b/src/annotation-targets/expand-target.ts @@ -1,4 +1,4 @@ -import type { ExternalWebResource, W3CAnnotationTarget } from '@iiif/presentation-3'; +import type { ExternalWebResource, W3CAnnotationTarget } from '@iiif/parser/presentation-3/types'; import { parseSelector, splitCanvasFragment } from './parse-selector'; import type { ParsedSelector, SupportedSelector } from './selector-types'; import type { SupportedTarget } from './target-types'; diff --git a/src/annotation-targets/parse-selector.ts b/src/annotation-targets/parse-selector.ts index d9b6084..9f3883d 100644 --- a/src/annotation-targets/parse-selector.ts +++ b/src/annotation-targets/parse-selector.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import type { ImageApiSelector, Selector } from '@iiif/presentation-3'; +import type { ImageApiSelector, Selector } from '@iiif/parser/presentation-3/types'; import { flattenCubicBezier, flattenQuadraticBezier } from './bezier'; import { resolveSelectorStyle } from './css-selectors'; import { diff --git a/src/annotation-targets/selector-types.ts b/src/annotation-targets/selector-types.ts index 52979ec..6ee910d 100644 --- a/src/annotation-targets/selector-types.ts +++ b/src/annotation-targets/selector-types.ts @@ -1,4 +1,4 @@ -import type { ImageApiSelector } from '@iiif/presentation-3'; +import type { ImageApiSelector } from '@iiif/parser/presentation-3/types'; export type SvgShapeType = 'rect' | 'circle' | 'ellipse' | 'line' | 'polyline' | 'polygon' | 'path'; export interface SupportedSelector { diff --git a/src/annotation-targets/target-types.ts b/src/annotation-targets/target-types.ts index f400598..981e8c2 100644 --- a/src/annotation-targets/target-types.ts +++ b/src/annotation-targets/target-types.ts @@ -1,4 +1,4 @@ -import { ExternalWebResource } from '@iiif/presentation-3'; +import { ExternalWebResource } from '@iiif/parser/presentation-3/types'; import { SupportedSelectors } from './selector-types'; export type SupportedTarget = { diff --git a/src/annotations.ts b/src/annotations.ts index 8a003ad..d14ccf7 100644 --- a/src/annotations.ts +++ b/src/annotations.ts @@ -1,4 +1,4 @@ -import { ChoiceBody, ImageService, InternationalString } from '@iiif/presentation-3'; +import { ChoiceBody, ImageService, InternationalString } from '@iiif/parser/presentation-3/types'; import { ParsedSelector, SupportedTarget } from './annotation-targets'; import { ChoiceDescription, ComplexChoice, SingleChoice } from './painting-annotations'; diff --git a/src/content-state.ts b/src/content-state.ts index d362aab..113e14f 100644 --- a/src/content-state.ts +++ b/src/content-state.ts @@ -1,4 +1,4 @@ -import { Annotation, AnyMotivation } from '@iiif/presentation-3'; +import { Annotation, AnyMotivation } from '@iiif/parser/presentation-3/types'; import { expandTarget } from './annotation-targets/expand-target'; import { SupportedTarget } from './annotation-targets/target-types'; diff --git a/src/events.ts b/src/events.ts index 78004e7..67acae0 100644 --- a/src/events.ts +++ b/src/events.ts @@ -1,4 +1,4 @@ -import type { Reference } from '@iiif/presentation-3'; +import type { Reference } from '@iiif/parser/presentation-3/types'; import { compatVault, CompatVault } from './compat'; export function createEventsHelper(vault: CompatVault = compatVault) { diff --git a/src/fetch.ts b/src/fetch.ts index 3d0a834..d45b436 100644 --- a/src/fetch.ts +++ b/src/fetch.ts @@ -1,4 +1,4 @@ -import { Collection, Manifest } from '@iiif/presentation-3'; +import { Collection, Manifest } from '@iiif/parser/presentation-3/types'; import { upgrade } from '@iiif/parser/upgrader'; function fetchAndUpgrade(input: RequestInfo | URL, init?: RequestInit): Promise { diff --git a/src/i18n.ts b/src/i18n.ts index 54d0667..858b892 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -1,5 +1,5 @@ import { Traverse } from '@iiif/parser'; -import { Canvas, Collection, InternationalString, Manifest } from '@iiif/presentation-3'; +import { Canvas, Collection, InternationalString, Manifest } from '@iiif/parser/presentation-3/types'; export function getClosestLanguage( i18nLanguage: string | undefined, diff --git a/src/image-service/get-custom-size-from-service.ts b/src/image-service/get-custom-size-from-service.ts index 4dcb120..41c29de 100644 --- a/src/image-service/get-custom-size-from-service.ts +++ b/src/image-service/get-custom-size-from-service.ts @@ -1,6 +1,6 @@ import { ImageCandidate } from './types'; import { isImage3 } from './is-image-3'; -import { ImageService } from '@iiif/presentation-3'; +import { ImageService } from '@iiif/parser/presentation-3/types'; import { getId, supportsCustomSizes, getImageServiceLevel } from '@iiif/parser/image-3'; /** diff --git a/src/image-service/get-fixed-size-from-image.ts b/src/image-service/get-fixed-size-from-image.ts index 6bb9170..b2e0217 100644 --- a/src/image-service/get-fixed-size-from-image.ts +++ b/src/image-service/get-fixed-size-from-image.ts @@ -1,4 +1,4 @@ -import { ContentResource, IIIFExternalWebResource } from '@iiif/presentation-3'; +import { ContentResource, IIIFExternalWebResource } from '@iiif/parser/presentation-3/types'; import { ImageCandidate } from './types'; import { inferImageSizeFromUrl } from './infer-size-from-url'; import { getId, getType } from '@iiif/parser/image-3'; diff --git a/src/image-service/get-fixed-sizes-from-service.ts b/src/image-service/get-fixed-sizes-from-service.ts index f9ce74e..c39b21d 100644 --- a/src/image-service/get-fixed-sizes-from-service.ts +++ b/src/image-service/get-fixed-sizes-from-service.ts @@ -1,4 +1,4 @@ -import { Service } from '@iiif/presentation-3'; +import { Service } from '@iiif/parser/presentation-3/types'; import { FixedSizeImageService } from './types'; import { getId, isImageService, getImageServiceLevel } from '@iiif/parser/image-3'; import { isImage3 } from './is-image-3'; diff --git a/src/image-service/get-image-candidates-from-service.ts b/src/image-service/get-image-candidates-from-service.ts index efda42d..48249e8 100644 --- a/src/image-service/get-image-candidates-from-service.ts +++ b/src/image-service/get-image-candidates-from-service.ts @@ -1,4 +1,4 @@ -import { ImageService } from '@iiif/presentation-3'; +import { ImageService } from '@iiif/parser/presentation-3/types'; import { ImageCandidate } from './types'; import { getFixedSizesFromService } from './get-fixed-sizes-from-service'; import { getCustomSizeFromService } from './get-custom-size-from-service'; diff --git a/src/image-service/get-image-candidates.ts b/src/image-service/get-image-candidates.ts index 65eb84c..195c913 100644 --- a/src/image-service/get-image-candidates.ts +++ b/src/image-service/get-image-candidates.ts @@ -1,4 +1,4 @@ -import { ContentResource, IIIFExternalWebResource } from '@iiif/presentation-3'; +import { ContentResource, IIIFExternalWebResource } from '@iiif/parser/presentation-3/types'; import { ImageServiceLoader, ImageServiceRequest } from './image-service-loader'; import { ImageCandidate } from './types'; import { getImageCandidatesFromService } from './get-image-candidates-from-service'; diff --git a/src/image-service/get-image-from-tile-source.ts b/src/image-service/get-image-from-tile-source.ts index 1d5ce6b..5cbc086 100644 --- a/src/image-service/get-image-from-tile-source.ts +++ b/src/image-service/get-image-from-tile-source.ts @@ -5,7 +5,7 @@ import { imageServiceRequestToString, } from '@iiif/parser/image-3'; import { FixedSizeImage, FixedSizeImageService } from './types'; -import { ImageProfile } from '@iiif/presentation-3'; +import { ImageProfile } from '@iiif/parser/presentation-3/types'; export function getImageFromTileSource( image: FixedSizeImageService, diff --git a/src/image-service/get-smallest-scale-factor-as-single-image.ts b/src/image-service/get-smallest-scale-factor-as-single-image.ts index c0ec7be..92b6da1 100644 --- a/src/image-service/get-smallest-scale-factor-as-single-image.ts +++ b/src/image-service/get-smallest-scale-factor-as-single-image.ts @@ -1,4 +1,4 @@ -import { ImageService } from '@iiif/presentation-3'; +import { ImageService } from '@iiif/parser/presentation-3/types'; import { isImage3 } from './is-image-3'; import { FixedSizeImageService } from './types'; import { getId, getImageServiceLevel } from '@iiif/parser/image-3'; diff --git a/src/image-service/image-service-loader.ts b/src/image-service/image-service-loader.ts index c9a3ded..a620418 100644 --- a/src/image-service/image-service-loader.ts +++ b/src/image-service/image-service-loader.ts @@ -13,7 +13,7 @@ import { ImageSize, ImageTile, ImageService, -} from '@iiif/presentation-3'; +} from '@iiif/parser/presentation-3/types'; import { getImageServerFromId } from './get-image-server-from-id'; import { sampledTilesToTiles } from './sampled-tiles-to-tiles'; import { ImageCandidate, ImageCandidateRequest } from './types'; diff --git a/src/image-service/image-service-store.ts b/src/image-service/image-service-store.ts index e647a52..c74db84 100644 --- a/src/image-service/image-service-store.ts +++ b/src/image-service/image-service-store.ts @@ -1,7 +1,7 @@ import { ImageServiceLoader } from './image-service-loader'; import { createStore } from 'zustand/vanilla'; import mitt, { Emitter, Handler } from 'mitt'; -import { ImageService } from '@iiif/presentation-3'; +import { ImageService } from '@iiif/parser/presentation-3/types'; import { getId } from '@iiif/parser/image-3'; export type LoadImageServiceDetail = { diff --git a/src/image-service/image-sizes-match.ts b/src/image-service/image-sizes-match.ts index 2364eb5..692c9b9 100644 --- a/src/image-service/image-sizes-match.ts +++ b/src/image-service/image-sizes-match.ts @@ -1,4 +1,4 @@ -import { ImageSize } from '@iiif/presentation-3'; +import { ImageSize } from '@iiif/parser/presentation-3/types'; export function imageSizesMatch(sizesA: ImageSize[], sizesB: ImageSize[]): boolean { if (sizesA.length !== sizesB.length) { diff --git a/src/image-service/sampled-tiles-to-tiles.ts b/src/image-service/sampled-tiles-to-tiles.ts index d7ef750..8cbc6b2 100644 --- a/src/image-service/sampled-tiles-to-tiles.ts +++ b/src/image-service/sampled-tiles-to-tiles.ts @@ -1,4 +1,4 @@ -import { ImageTile } from '@iiif/presentation-3'; +import { ImageTile } from '@iiif/parser/presentation-3/types'; export function sampledTilesToTiles(width: number, height: number, sampledTiles: ImageTile[]): ImageTile[] { const maxDim = width > height ? width : height; diff --git a/src/nav-date.ts b/src/nav-date.ts index af4536b..1da9d46 100644 --- a/src/nav-date.ts +++ b/src/nav-date.ts @@ -4,9 +4,9 @@ // "navDate": "1986-01-01T00:00:00+00:00" // "navDate": "1987-01-01T00:00:00+00:00" -import { Collection, InternationalString, Manifest } from '@iiif/presentation-3'; +import { Collection, InternationalString, Manifest } from '@iiif/parser/presentation-3/types'; import { CompatVault } from './compat'; -import { CollectionNormalized, ManifestNormalized } from '@iiif/presentation-3-normalized'; +import { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; export interface DateNavigationResource { id: string; diff --git a/src/painting-annotations/helper.ts b/src/painting-annotations/helper.ts index 453e6fc..46cc9dd 100644 --- a/src/painting-annotations/helper.ts +++ b/src/painting-annotations/helper.ts @@ -1,5 +1,5 @@ -import { ContentResource, IIIFExternalWebResource } from '@iiif/presentation-3'; -import { AnnotationNormalized, CanvasNormalized } from '@iiif/presentation-3-normalized'; +import { ContentResource, IIIFExternalWebResource } from '@iiif/parser/presentation-3/types'; +import { AnnotationNormalized, CanvasNormalized } from '@iiif/parser/presentation-3-normalized/types'; import { ComplexChoice, Paintables } from './types'; import { parseSpecificResource } from './parse-specific-resource'; import { compatVault, CompatVault } from '../compat'; diff --git a/src/painting-annotations/parse-specific-resource.ts b/src/painting-annotations/parse-specific-resource.ts index c82879a..935b0f3 100644 --- a/src/painting-annotations/parse-specific-resource.ts +++ b/src/painting-annotations/parse-specific-resource.ts @@ -1,4 +1,4 @@ -import { ChoiceBody, ContentResource } from "@iiif/presentation-3"; +import { ChoiceBody, ContentResource } from "@iiif/parser/presentation-3/types"; export function parseSpecificResource(resource: ContentResource): [ContentResource | ChoiceBody, { selector?: any }] { if (resource.type === 'SpecificResource') { diff --git a/src/painting-annotations/types.ts b/src/painting-annotations/types.ts index e2ca8fd..dcc8fba 100644 --- a/src/painting-annotations/types.ts +++ b/src/painting-annotations/types.ts @@ -1,6 +1,6 @@ -import { IIIFExternalWebResource, SpecificResource } from '@iiif/presentation-3'; -import { InternationalString } from '@iiif/presentation-3'; -import { AnnotationNormalized } from '@iiif/presentation-3-normalized'; +import { IIIFExternalWebResource, SpecificResource } from '@iiif/parser/presentation-3/types'; +import { InternationalString } from '@iiif/parser/presentation-3/types'; +import { AnnotationNormalized } from '@iiif/parser/presentation-3-normalized/types'; export interface SingleChoice { type: 'single-choice'; diff --git a/src/ranges.ts b/src/ranges.ts index aad9c2a..9ad690e 100644 --- a/src/ranges.ts +++ b/src/ranges.ts @@ -1,6 +1,6 @@ import { compressSpecificResource } from '@iiif/parser'; -import type { Canvas, InternationalString, Manifest, Range, Reference, SpecificResource } from '@iiif/presentation-3'; -import type { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized'; +import type { Canvas, InternationalString, Manifest, Range, Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; +import type { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/parser/presentation-3-normalized/types'; import { splitCanvasFragment } from './annotation-targets'; import { type CompatVault, compatVault } from './compat'; import { hash } from './shared-utilities'; @@ -341,6 +341,9 @@ function getCanvasesFromRange( } } else if (item.type === 'Range') { canvases.push(...getCanvasesFromRange(vault, item as Range, currentPath)); + } else if ((item as any).type === 'Canvas' || (item as any).type === 'Timeline' || (item as any).type === 'Scene') { + // P4 normalization stores container references directly (not wrapped in SpecificResource) + canvases.push({ canvas: item as unknown as Canvas, path: currentPath }); } } return canvases; diff --git a/src/search1.ts b/src/search1.ts index b535ab5..cc91810 100644 --- a/src/search1.ts +++ b/src/search1.ts @@ -8,8 +8,8 @@ import { SearchServiceQueryParams, Manifest, SearchServiceCommonHitSelectors, -} from '@iiif/presentation-3'; -import { ManifestNormalized } from '@iiif/presentation-3-normalized'; +} from '@iiif/parser/presentation-3/types'; +import { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import { g } from 'vitest/dist/suite-a18diDsI.js'; import { createStore } from 'zustand/vanilla'; diff --git a/src/sequences.ts b/src/sequences.ts index a9daf20..dc875bd 100644 --- a/src/sequences.ts +++ b/src/sequences.ts @@ -1,5 +1,5 @@ -import { Reference } from '@iiif/presentation-3'; -import { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized'; +import { Reference } from '@iiif/parser/presentation-3/types'; +import { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/parser/presentation-3-normalized/types'; import { findAllCanvasesInRange } from './ranges'; import { compatVault, CompatVault } from './compat'; diff --git a/src/shared-utilities.ts b/src/shared-utilities.ts index 64b8039..9de4461 100644 --- a/src/shared-utilities.ts +++ b/src/shared-utilities.ts @@ -1,5 +1,5 @@ import { isSpecificResource } from '@iiif/parser'; -import type { Reference, SpecificResource } from '@iiif/presentation-3'; +import type { Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; /** * A string hashing function based on Daniel J. Bernstein's popular 'times 33' hash algorithm. diff --git a/src/styles.ts b/src/styles.ts index 09914cb..dc28527 100644 --- a/src/styles.ts +++ b/src/styles.ts @@ -1,4 +1,4 @@ -import { Reference } from '@iiif/presentation-3'; +import { Reference } from '@iiif/parser/presentation-3/types'; import { compatVault, CompatVault } from './compat'; export type StyleDefinition = Record; diff --git a/src/thumbnail.ts b/src/thumbnail.ts index 1acfe94..b10e252 100644 --- a/src/thumbnail.ts +++ b/src/thumbnail.ts @@ -1,4 +1,4 @@ -import { ChoiceBody, CollectionItemSchemas, ContentResource, Reference } from '@iiif/presentation-3'; +import { ChoiceBody, CollectionItemSchemas, ContentResource, Reference } from '@iiif/parser/presentation-3/types'; import { AnnotationNormalized, AnnotationPageNormalized, @@ -6,7 +6,7 @@ import { CollectionNormalized, DescriptiveNormalized, ManifestNormalized, -} from '@iiif/presentation-3-normalized'; +} from '@iiif/parser/presentation-3-normalized/types'; import { compatVault, CompatVault } from './compat'; import { FixedSizeImage, diff --git a/src/transcriptions.ts b/src/transcriptions.ts index 0094a78..dc04bec 100644 --- a/src/transcriptions.ts +++ b/src/transcriptions.ts @@ -117,13 +117,13 @@ import { type ContentResource, type Manifest, ManifestDescriptive, -} from '@iiif/presentation-3'; +} from '@iiif/parser/presentation-3/types'; import type { AnnotationNormalized, AnnotationPageNormalized, CanvasNormalized, ManifestNormalized, -} from '@iiif/presentation-3-normalized'; +} from '@iiif/parser/presentation-3-normalized/types'; import { expandTarget, type ParsedSelector, parseSelector, type TemporalSelector } from './annotation-targets'; import type { CompatVault } from './compat'; diff --git a/src/vault/actions/entity-actions.ts b/src/vault/actions/entity-actions.ts index 138732b..d4478fd 100644 --- a/src/vault/actions/entity-actions.ts +++ b/src/vault/actions/entity-actions.ts @@ -1,4 +1,4 @@ -import type { InternationalString, SpecificResource } from '@iiif/presentation-3'; +import type { InternationalString, SpecificResource } from '@iiif/parser/presentation-3/types'; import type { ActionType } from 'typesafe-actions'; import type { Entities } from '../types'; diff --git a/src/vault/store/reducers/entities-reducer.ts b/src/vault/store/reducers/entities-reducer.ts index 5131eb7..2a8c83b 100644 --- a/src/vault/store/reducers/entities-reducer.ts +++ b/src/vault/store/reducers/entities-reducer.ts @@ -1,5 +1,5 @@ import { isSpecificResource, toRef } from '@iiif/parser'; -import type { Reference, SpecificResource } from '@iiif/presentation-3'; +import type { Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; import { changeRefIdentifier } from '../../../shared-utilities'; import { ADD_METADATA, diff --git a/src/vault/types.ts b/src/vault/types.ts index ebcb602..c3fbb02 100644 --- a/src/vault/types.ts +++ b/src/vault/types.ts @@ -9,7 +9,7 @@ import type { ResourceProvider, Selector, Service, -} from '@iiif/presentation-3'; +} from '@iiif/parser/presentation-3/types'; import type { AnnotationNormalized, AnnotationPageNormalized, @@ -19,7 +19,7 @@ import type { RangeNormalized, ResourceProviderNormalized, ServiceNormalized, -} from '@iiif/presentation-3-normalized'; +} from '@iiif/parser/presentation-3-normalized/types'; import type { PayloadAction } from 'typesafe-actions'; import type { EntityActions } from './actions/entity-actions'; import type { MappingActions } from './actions/mapping-actions'; @@ -32,6 +32,17 @@ declare global { interface A {} } +/** + * A loosely-typed normalized entity for P4-only store types + * (Timeline, Scene, Quantity, Transform) which do not have + * dedicated normalized type packages yet. + */ +export type GenericNormalizedEntity = { + id: string; + type: string; + [key: string]: unknown; +}; + export type MetaState = Record>>; export type RequestState = { @@ -76,7 +87,8 @@ export type NormalizedEntity = | RangeNormalized | ServiceNormalized | ResourceProviderNormalized - | Selector; + | Selector + | GenericNormalizedEntity; export type RefToNormalized = Ref['type'] extends 'Manifest' ? ManifestNormalized @@ -98,7 +110,15 @@ export type RefToNormalized = Ref['type'] extends ? ResourceProviderNormalized : Ref['type'] extends 'Collection' ? CollectionNormalized - : any; + : Ref['type'] extends 'Timeline' + ? GenericNormalizedEntity + : Ref['type'] extends 'Scene' + ? GenericNormalizedEntity + : Ref['type'] extends 'Quantity' + ? GenericNormalizedEntity + : Ref['type'] extends 'Transform' + ? GenericNormalizedEntity + : any; export type RefToFull = Ref['type'] extends 'Manifest' ? Manifest @@ -120,7 +140,15 @@ export type RefToFull = Ref['type'] extends 'Mani ? ResourceProvider : Ref['type'] extends 'Collection' ? Collection - : any; + : Ref['type'] extends 'Timeline' + ? GenericNormalizedEntity + : Ref['type'] extends 'Scene' + ? GenericNormalizedEntity + : Ref['type'] extends 'Quantity' + ? GenericNormalizedEntity + : Ref['type'] extends 'Transform' + ? GenericNormalizedEntity + : any; export type Entities = { Collection: { @@ -156,6 +184,19 @@ export type Entities = { Agent: { [id: string]: ResourceProviderNormalized; }; + // ── P4 entity stores ────────────────────────────────────────────────── + Timeline: { + [id: string]: GenericNormalizedEntity; + }; + Scene: { + [id: string]: GenericNormalizedEntity; + }; + Quantity: { + [id: string]: GenericNormalizedEntity; + }; + Transform: { + [id: string]: GenericNormalizedEntity; + }; }; export type EntityStore = { diff --git a/src/vault/utility/action-list-from-resource.ts b/src/vault/utility/action-list-from-resource.ts index 8ceb0f3..d276a38 100644 --- a/src/vault/utility/action-list-from-resource.ts +++ b/src/vault/utility/action-list-from-resource.ts @@ -1,6 +1,6 @@ -import { normalize } from '@iiif/parser'; -import { AllActions } from '../types'; +import { normalize } from '@iiif/parser/presentation-4'; import { addMapping, addMappings, importEntities, requestComplete, requestError, requestMismatch } from '../actions'; +import type { AllActions } from '../types'; export const actionListFromResource = (id: string, response: unknown): AllActions[] => { const { entities, resource, mapping } = normalize(response); diff --git a/src/vault/utility/get-default-entities.ts b/src/vault/utility/get-default-entities.ts index 027a581..97a559c 100644 --- a/src/vault/utility/get-default-entities.ts +++ b/src/vault/utility/get-default-entities.ts @@ -1,4 +1,4 @@ -import { Entities } from '../types'; +import type { Entities } from '../types'; export function getDefaultEntities(): Entities { return { @@ -13,5 +13,10 @@ export function getDefaultEntities(): Entities { Service: {}, Selector: {}, Agent: {}, + // Presentation 4 entity stores + Timeline: {}, + Scene: {}, + Quantity: {}, + Transform: {}, }; } diff --git a/src/vault/utility/resolve-list.ts b/src/vault/utility/resolve-list.ts index ccbebde..7b9a8de 100644 --- a/src/vault/utility/resolve-list.ts +++ b/src/vault/utility/resolve-list.ts @@ -1,4 +1,4 @@ -import { Reference } from '@iiif/presentation-3'; +import { Reference } from '@iiif/parser/presentation-3/types'; import { IIIFStore, NormalizedEntity } from '../types'; export function resolveList( diff --git a/src/vault/utility/resolve-type.ts b/src/vault/utility/resolve-type.ts index f4e074e..6148a1b 100644 --- a/src/vault/utility/resolve-type.ts +++ b/src/vault/utility/resolve-type.ts @@ -1,7 +1,8 @@ -import { Entities } from '../types'; +import type { Entities } from '../types'; export function resolveType(type: string): keyof Entities { switch (type) { + // Content resource types (P3 + P4) case 'Image': case 'Video': case 'Sound': @@ -11,11 +12,45 @@ export function resolveType(type: string): keyof Entities { case 'List': case 'Independents': case 'Audience': + // P4 content resource types + case 'Model': + case 'TextualBody': + case 'Choice': + case 'Audio': + // P4 scene component types (stored as ContentResource) + case 'PerspectiveCamera': + case 'OrthographicCamera': + case 'AmbientLight': + case 'DirectionalLight': + case 'PointLight': + case 'SpotLight': + case 'AmbientAudio': + case 'PointAudio': + case 'SpotAudio': return 'ContentResource'; + + // Service types case 'ImageService1': case 'ImageService2': case 'ImageService3': return 'Service'; + + // P4 container types + case 'Timeline': + return 'Timeline'; + case 'Scene': + return 'Scene'; + + // P4 structural types + case 'Quantity': + return 'Quantity'; + + // P4 transform types + case 'Transform': + case 'RotateTransform': + case 'ScaleTransform': + case 'TranslateTransform': + return 'Transform'; } return type as any; diff --git a/src/vault/vault.ts b/src/vault/vault.ts index 16631d9..befa670 100644 --- a/src/vault/vault.ts +++ b/src/vault/vault.ts @@ -1,6 +1,18 @@ /// +import { frameResource, HAS_PART, isSpecificResource, PART_OF, serializeConfigPresentation2 } from '@iiif/parser'; import { + type SerializeConfig, + serialize, + serializeConfigPresentation3, + serializeConfigPresentation4, +} from '@iiif/parser/presentation-4'; +import type { Collection, Manifest, Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; +import type { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import mitt, { type Emitter } from 'mitt'; +import { BATCH_ACTIONS, type BatchAction, batchActions, entityActions, metaActions } from './actions'; +import { createStore, type VaultZustandStore } from './store'; +import type { ActionFromType, AllActions, Entities, @@ -10,25 +22,13 @@ import { RefToNormalized, RequestState, } from './types'; -import { Collection, Manifest, Reference, SpecificResource } from '@iiif/presentation-3'; -import { - frameResource, - HAS_PART, - isSpecificResource, - PART_OF, - serialize, - SerializeConfig, - serializeConfigPresentation2, - serializeConfigPresentation3, -} from '@iiif/parser'; -import { BATCH_ACTIONS, BatchAction, batchActions, entityActions, metaActions } from './actions'; -import { createFetchHelper, areInputsEqual } from './utility'; -import { createStore, VaultZustandStore } from './store'; -import mitt, { Emitter } from 'mitt'; -import { CollectionNormalized, ManifestNormalized } from '@iiif/presentation-3-normalized'; -import { isWrapped, ReactiveWrapped, wrapObject } from './utility/objects'; +import { areInputsEqual, createFetchHelper } from './utility'; +import { isWrapped, type ReactiveWrapped, wrapObject } from './utility/objects'; import { resolveType } from './utility/resolve-type'; +/** Container types that are P4 equivalents of Canvas (used for compat fallback). */ +const CONTAINER_FALLBACK_TYPES: ReadonlyArray = ['Timeline', 'Scene'] as const; + export type VaultOptions = { reducers: Record; defaultState?: IIIFStore; @@ -55,7 +55,11 @@ export class Vault { private isBatching = false; private batchQueue: AllActions[] = []; remoteFetcher: (str: string, options?: any, mapper?: (resource: any) => any) => Promise; - staticFetcher: (str: string, json: any, mapper?: (resource: any) => any) => Promise | NormalizedEntity | undefined; + staticFetcher: ( + str: string, + json: any, + mapper?: (resource: any) => any + ) => Promise | NormalizedEntity | undefined; constructor(options?: Partial, store?: VaultZustandStore) { this.options = Object.assign( @@ -137,12 +141,18 @@ export class Vault { if (!this.isBatching) { if (action.type === BATCH_ACTIONS) { for (const realAction of action.payload.actions) { - this.emitter.emit(realAction.type, { action: realAction, state: this.store.getState() }); + this.emitter.emit(realAction.type, { + action: realAction, + state: this.store.getState(), + }); } this.store.dispatch(action); const state = this.getState(); for (const realAction of action.payload.actions) { - this.emitter.emit(`after:${realAction.type}`, { action: realAction, state }); + this.emitter.emit(`after:${realAction.type}`, { + action: realAction, + state, + }); } return; } @@ -168,17 +178,21 @@ export class Vault { } serialize(entity: Reference, config: SerializeConfig) { - return serialize(this.getState().iiif, entity, config); + return serialize(this.getState().iiif as any, entity as any, config); } toPresentation2(entity: Reference) { - return this.serialize(entity, serializeConfigPresentation2); + return this.serialize(entity, serializeConfigPresentation2 as any); } toPresentation3(entity: Reference) { return this.serialize(entity, serializeConfigPresentation3); } + toPresentation4(entity: Reference) { + return this.serialize(entity, serializeConfigPresentation4); + } + hydrate( reference: string | Partial, type?: string | GetOptions, @@ -194,7 +208,10 @@ export class Vault { type?: string | GetOptions, options: GetOptions = {} ): RefToNormalized | RefToNormalized[] { - return this.get(reference as any, type as any, { ...options, skipSelfReturn: false }); + return this.get(reference as any, type as any, { + ...options, + skipSelfReturn: false, + }); } get( @@ -265,7 +282,24 @@ export class Vault { const _type = resolveType(type ? type : (reference as any)?.type); const _id = (reference as any)?.id; - const entities = (state.iiif.entities as any)[_type]; + let entities = (state.iiif.entities as any)[_type]; + + // ── P4 Container compatibility fallback ────────────────────────────── + // When the requested type is "Canvas" but the entity isn't found in the + // Canvas store, check the P4 container stores (Timeline, Scene) so that + // callers using `get({ id, type: 'Canvas' })` still resolve P4 containers. + if (!entities || !entities[_id]) { + if (_type === 'Canvas' && _id) { + for (const altType of CONTAINER_FALLBACK_TYPES) { + const altEntities = (state.iiif.entities as any)[altType]; + if (altEntities && altEntities[_id]) { + entities = altEntities; + break; + } + } + } + } + if (!entities) { const request = state.iiif.requests[_id]; if (request && request.resourceUri !== _id) { @@ -322,12 +356,20 @@ export class Vault { return fn; } - loadManifest(id: string | Reference, json?: unknown, mapper?: (resource: any) => any): Promise { + loadManifest( + id: string | Reference, + json?: unknown, + mapper?: (resource: any) => any + ): Promise { const _id = typeof id === 'string' ? id : id.id; return this.load(_id, json, mapper); } - loadCollection(id: string | Reference, json?: unknown, mapper?: (resource: any) => any): Promise { + loadCollection( + id: string | Reference, + json?: unknown, + mapper?: (resource: any) => any + ): Promise { const _id = typeof id === 'string' ? id : id.id; return this.load(_id, json, mapper); } @@ -345,12 +387,20 @@ export class Vault { return this.staticFetcher(_id, json, mapper) as T | undefined; } - loadManifestSync(id: string | Reference, json: unknown, mapper?: (resource: any) => any): ManifestNormalized | undefined { + loadManifestSync( + id: string | Reference, + json: unknown, + mapper?: (resource: any) => any + ): ManifestNormalized | undefined { const _id = typeof id === 'string' ? id : id.id; return this.loadSync(_id, json, mapper); } - loadCollectionSync(id: string | Reference, json: unknown, mapper?: (resource: any) => any): CollectionNormalized | undefined { + loadCollectionSync( + id: string | Reference, + json: unknown, + mapper?: (resource: any) => any + ): CollectionNormalized | undefined { const _id = typeof id === 'string' ? id : id.id; return this.loadSync(_id, json, mapper); } @@ -398,7 +448,6 @@ export class Vault { }); } - // Pagination built on "meta". getPaginationState(resource: string | Reference): PaginationState | null { // This will return the pagination state of a resource from it's meta. @@ -426,7 +475,7 @@ export class Vault { currentLength: 0, }; - this.setMetaValue([id, '@vault/pagination', 'state'], initialState) + this.setMetaValue([id, '@vault/pagination', 'state'], initialState); return initialState; } @@ -436,7 +485,10 @@ export class Vault { return null; } - async loadNextPage(resource: string | Reference, json?: any): Promise<[PaginationState | null, CollectionNormalized | null]> { + async loadNextPage( + resource: string | Reference, + json?: any + ): Promise<[PaginationState | null, CollectionNormalized | null]> { const id = typeof resource === 'string' ? resource : resource.id; if (!id) return [null, null]; @@ -463,7 +515,7 @@ export class Vault { // 2. Make the fetch request. let collectionPage; try { - collectionPage = await this.loadCollection(nextPage, json, mapped => { + collectionPage = await this.loadCollection(nextPage, json, (mapped) => { // This is required because the page MIGHT have the same id. const { id, ['@id']: _id, ...properties } = mapped || {}; @@ -472,7 +524,7 @@ export class Vault { } return { id: nextPage, ...properties }; - }) + }); } catch (err) { const errState: PaginationState = { ...state, @@ -487,23 +539,21 @@ export class Vault { const errState: PaginationState = { ...state, isFetching: false, - error: new Error("Collection not found"), + error: new Error('Collection not found'), }; this.setMetaValue([id, '@vault/pagination', 'state'], errState); return [errState, null]; } const fullCollection = this.get(id); - const combinedItems = [ - ...(fullCollection.items || []), - ...(collectionPage.items || []), - ].map(resource => ({ - id: resource.id, type: resource.type - })); - - this.modifyEntityField({ id, type: "Collection" }, "items", combinedItems); + const combinedItems = [...(fullCollection.items || []), ...(collectionPage.items || [])].map((resource) => ({ + id: resource.id, + type: resource.type, + })); + + this.modifyEntityField({ id, type: 'Collection' }, 'items', combinedItems); const latestState = this.getPaginationState(resource); - if (!latestState) throw new Error("Pagination state not found"); + if (!latestState) throw new Error('Pagination state not found'); const successState: PaginationState = { ...latestState, isFetching: false, @@ -516,11 +566,11 @@ export class Vault { ...latestState.pages, { id: collectionPage.id, - type: "Collection", - startIndex: fullCollection.items.length, - pageLength: collectionPage.items.length, + type: 'Collection', + startIndex: (fullCollection.items || []).length, + pageLength: (collectionPage.items || []).length, order: typeof latestState.currentPageIndex === 'number' ? latestState.currentPageIndex + 1 : 0, - } + }, ], isFullyLoaded: !(collectionPage as any).next, previous: previousPage, @@ -532,7 +582,6 @@ export class Vault { return [successState, collectionPage]; } - getResourceMeta(resource: string): Partial | undefined; getResourceMeta(resource: string, metaKey: Key): T[Key] | undefined; getResourceMeta( From 434d8ce37bac1791593eec78f52c89f2f2aff823 Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Mon, 16 Feb 2026 00:44:35 +0000 Subject: [PATCH 02/18] Fixed types, updated preview package --- __tests__/nav-date.tests.ts | 2 +- __tests__/range.tests.ts | 28 +++--- __tests__/thumbnail-helper.tests.ts | 13 +-- package.json | 14 +-- pnpm-lock.yaml | 146 ++++++---------------------- src/annotations.ts | 4 +- src/vault/vault.ts | 73 +++++++++++++- 7 files changed, 133 insertions(+), 147 deletions(-) diff --git a/__tests__/nav-date.tests.ts b/__tests__/nav-date.tests.ts index 1998ad7..ba3d196 100644 --- a/__tests__/nav-date.tests.ts +++ b/__tests__/nav-date.tests.ts @@ -1,4 +1,4 @@ -import { Collection } from '@iiif/presentation-3'; +import { Collection } from '@iiif/parser/presentation-3/types'; import { createDateNavigation } from '../src/nav-date'; import { Vault } from '../src'; diff --git a/__tests__/range.tests.ts b/__tests__/range.tests.ts index 44c4ad4..6a9eb91 100644 --- a/__tests__/range.tests.ts +++ b/__tests__/range.tests.ts @@ -1,5 +1,5 @@ -import type { Range, RangeItems } from '@iiif/presentation-3'; -import type { ManifestNormalized } from '@iiif/presentation-3-normalized'; +import type { Range, RangeItems } from '@iiif/parser/presentation-3/types'; +import type { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import invariant from 'tiny-invariant'; import tableOfContentManifests from '../fixtures/cookbook/toc.json'; import tableOfContentsAvManifest from '../fixtures/cookbook/toc-av.json'; @@ -634,35 +634,35 @@ describe('range helper', () => { expect(renderRange(tree, true)).toMatchInlineSnapshot(` "Wiltshire and Dorset, dub of disks / Fanny Rumble, A. Collins, Perrier (01:07:55) ├── The turmut hoeing (02:29) - ├── [no-nav] + ├── [no-nav] ├── She stole my heart away (02:08) ├── Dumble dum dollicky (Richard of Taunton Dean) (03:01) ├── Mrs Fanny Rumble talks about herself (01:44) ├── What shall I wear to the wedding, John? (03:25) ├── Country courtship (05:50) ├── Herbert Prince (05:00) - ├── [no-nav] + ├── [no-nav] ├── Introductory talk: 'The young sailor cut down in his prime' (01:25) - ├── [no-nav] + ├── [no-nav] ├── The young sailor cut down in his prime (02:49) - └── [no-nav] + └── [no-nav] ├── Fanny Rumble / Albert Collins / Fred Perrier (25:17) - ├── [no-nav] + ├── [no-nav] ├── O what shall I wear to the wedding, John? (03:57) - ├── [no-nav] + ├── [no-nav] ├── O what shall I wear to the wedding, John? (02:47) - ├── [no-nav] + ├── [no-nav] ├── The vly on the turmut (03:10) - ├── [no-nav] + ├── [no-nav] ├── The vly on the turmut (01:37) - ├── [no-nav] + ├── [no-nav] ├── Twas on a Monday morning (02:04) - ├── [no-nav] + ├── [no-nav] ├── Twas on a Monday morning (02:22) ├── Dumble dum dollicky (04:23) - ├── [no-nav] + ├── [no-nav] └── Talk about herself (01:53) - └── [no-nav] + └── [no-nav] " `); }); diff --git a/__tests__/thumbnail-helper.tests.ts b/__tests__/thumbnail-helper.tests.ts index e7b89d8..76c50ef 100644 --- a/__tests__/thumbnail-helper.tests.ts +++ b/__tests__/thumbnail-helper.tests.ts @@ -3,9 +3,14 @@ import { Vault } from '../src/vault'; import { ThumbnailOutput, createThumbnailHelper } from '../src/thumbnail'; import { readFile } from 'node:fs/promises'; import path from 'node:path'; +import { fileURLToPath } from 'node:url'; import { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import { upgrade } from '@iiif/parser/upgrader'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const fixtureDir = path.join(__dirname, '../fixtures/thumbnails'); + export const thumbnailFixtures = [ { label: 'Canvas with no thumbnail property - ImageService', @@ -48,9 +53,7 @@ describe('Thumbnail helper', function () { test.each(thumbnailFixtures as { label: string; description: string }[])(`Thumbnail - $label`, async (fixture) => { const vault = new Vault(); const helper = createThumbnailHelper(vault); - const manifestJson: any = JSON.parse( - (await readFile(path.join(process.cwd(), 'fixtures/thumbnails', `${fixture.label}.json`))).toString() - ); + const manifestJson: any = JSON.parse((await readFile(path.join(fixtureDir, `${fixture.label}.json`))).toString()); const manifest = await vault.load(manifestJson.id || manifestJson['@id'], manifestJson); if (!manifest) { @@ -70,9 +73,7 @@ describe('Thumbnail helper', function () { async (fixture) => { const helper = createThumbnailHelper(); const manifest: any = upgrade( - JSON.parse( - (await readFile(path.join(process.cwd(), 'fixtures/thumbnails', `${fixture.label}.json`))).toString() - ) + JSON.parse((await readFile(path.join(fixtureDir, `${fixture.label}.json`))).toString()) ); if (!manifest) { diff --git a/package.json b/package.json index a65d422..4a60467 100644 --- a/package.json +++ b/package.json @@ -247,25 +247,25 @@ "svg-arc-to-cubic-bezier": "^3.2.0" }, "peerDependencies": { - "@iiif/parser": "https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60" + "@iiif/parser": "https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1" }, "devDependencies": { - "@types/jsdom": "^21.1.3", - "@types/svg-arc-to-cubic-bezier": "^3.2.0", + "@types/jsdom": "^21.1.4", + "@types/svg-arc-to-cubic-bezier": "^3.2.1", "@vitejs/plugin-react": "^4.3.4", - "happy-dom": "^12.6.0", + "happy-dom": "^12.10.0", "jsdom": "^22.1.0", "mitt": "^3.0.1", "prettier": "^3.2.5", + "publint": "^0.3.17", "tiny-invariant": "^1.3.3", + "tsdown": "0.16.5", "tslib": "^2.6.2", "typesafe-actions": "^5.1.0", "typescript": "^5.4.5", "vite": "^5.2.8", "vitest": "^1.4.0", - "zustand": "^4.5.2", - "tsdown": "0.16.5", - "publint": "^0.2.7" + "zustand": "^4.5.2" }, "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0217080..28936f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@iiif/parser': - specifier: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60 - version: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60 + specifier: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1 + version: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1 '@types/geojson': specifier: 7946.0.13 version: 7946.0.13 @@ -26,16 +26,16 @@ importers: version: 3.2.0 devDependencies: '@types/jsdom': - specifier: ^21.1.3 + specifier: ^21.1.4 version: 21.1.4 '@types/svg-arc-to-cubic-bezier': - specifier: ^3.2.0 + specifier: ^3.2.1 version: 3.2.1 '@vitejs/plugin-react': specifier: ^4.3.4 version: 4.3.4(vite@5.2.8(@types/node@20.8.9)) happy-dom: - specifier: ^12.6.0 + specifier: ^12.10.0 version: 12.10.0 jsdom: specifier: ^22.1.0 @@ -47,14 +47,14 @@ importers: specifier: ^3.2.5 version: 3.2.5 publint: - specifier: ^0.2.7 - version: 0.2.7 + specifier: ^0.3.17 + version: 0.3.17 tiny-invariant: specifier: ^1.3.3 version: 1.3.3 tsdown: specifier: 0.16.5 - version: 0.16.5(publint@0.2.7)(typescript@5.4.5) + version: 0.16.5(publint@0.3.17)(typescript@5.4.5) tslib: specifier: ^2.6.2 version: 2.6.2 @@ -344,8 +344,8 @@ packages: cpu: [x64] os: [win32] - '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60': - resolution: {tarball: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60} + '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1': + resolution: {tarball: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1} version: 2.2.9 '@jest/schemas@29.6.3': @@ -403,6 +403,10 @@ packages: '@oxc-project/types@0.98.0': resolution: {integrity: sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==} + '@publint/pack@0.1.4': + resolution: {integrity: sha512-HDVTWq3H0uTXiU0eeSQntcVUTPP3GamzeXI41+x7uU9J65JgWQh3qWZHblR1i0npXfFtF+mxBiU2nJH8znxWnQ==} + engines: {node: '>=18'} + '@quansync/fs@0.1.5': resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} @@ -751,15 +755,9 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - birpc@2.8.0: resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - browserslist@4.24.3: resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -886,9 +884,6 @@ packages: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -908,10 +903,6 @@ packages: get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -942,16 +933,6 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - ignore-walk@5.0.1: - resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -1026,10 +1007,6 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -1051,19 +1028,6 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - npm-bundled@2.0.1: - resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - npm-normalize-package-bin@2.0.0: - resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - npm-packlist@5.1.3: - resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1074,9 +1038,6 @@ packages: obug@2.1.0: resolution: {integrity: sha512-uu/tgLPoa75CFA7UDkmqspKbefvZh1WMPwkU3bNr0PY746a/+xwXVgbw5co5C3GvJj3h5u8g/pbxXzI0gd1QFg==} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -1085,6 +1046,9 @@ packages: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + parse-svg-path@0.1.2: resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==} @@ -1137,9 +1101,9 @@ packages: psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - publint@0.2.7: - resolution: {integrity: sha512-tLU4ee3110BxWfAmCZggJmCUnYWgPTr0QLnx08sqpLYa8JHRiOudd+CgzdpfU5x5eOaW2WMkpmOrFshRFYK7Mw==} - engines: {node: '>=16'} + publint@0.3.17: + resolution: {integrity: sha512-Q3NLegA9XM6usW+dYQRG1g9uEHiYUzcCVBJDJ7yMcWRqVU9LYZUWdqbwMZfmTCFC5PZLQpLAmhvRcQRl3exqkw==} + engines: {node: '>=18'} hasBin: true punycode@2.3.0: @@ -1472,9 +1436,6 @@ packages: engines: {node: '>=8'} hasBin: true - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.14.2: resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} @@ -1753,7 +1714,7 @@ snapshots: '@esbuild/win32-x64@0.20.2': optional: true - '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60': {} + '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1': {} '@jest/schemas@29.6.3': dependencies: @@ -1814,6 +1775,8 @@ snapshots: '@oxc-project/types@0.98.0': {} + '@publint/pack@0.1.4': {} + '@quansync/fs@0.1.5': dependencies: quansync: 0.2.11 @@ -2071,14 +2034,8 @@ snapshots: asynckit@0.4.0: {} - balanced-match@1.0.2: {} - birpc@2.8.0: {} - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - browserslist@4.24.3: dependencies: caniuse-lite: 1.0.30001690 @@ -2214,8 +2171,6 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -2229,14 +2184,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - globals@11.12.0: {} happy-dom@12.10.0: @@ -2275,17 +2222,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - ignore-walk@5.0.1: - dependencies: - minimatch: 5.1.6 - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - is-potential-custom-element-name@1.0.1: {} is-stream@3.0.0: {} @@ -2367,10 +2303,6 @@ snapshots: mimic-fn@4.0.0: {} - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - mitt@3.0.1: {} mlly@1.4.2: @@ -2388,19 +2320,6 @@ snapshots: node-releases@2.0.19: {} - npm-bundled@2.0.1: - dependencies: - npm-normalize-package-bin: 2.0.0 - - npm-normalize-package-bin@2.0.0: {} - - npm-packlist@5.1.3: - dependencies: - glob: 8.1.0 - ignore-walk: 5.0.1 - npm-bundled: 2.0.1 - npm-normalize-package-bin: 2.0.0 - npm-run-path@5.1.0: dependencies: path-key: 4.0.0 @@ -2409,10 +2328,6 @@ snapshots: obug@2.1.0: {} - once@1.4.0: - dependencies: - wrappy: 1.0.2 - onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -2421,6 +2336,8 @@ snapshots: dependencies: yocto-queue: 1.0.0 + package-manager-detector@1.6.0: {} + parse-svg-path@0.1.2: optional: true @@ -2466,10 +2383,11 @@ snapshots: psl@1.9.0: {} - publint@0.2.7: + publint@0.3.17: dependencies: - npm-packlist: 5.1.3 - picocolors: 1.0.0 + '@publint/pack': 0.1.4 + package-manager-detector: 1.6.0 + picocolors: 1.1.1 sade: 1.8.1 punycode@2.3.0: {} @@ -2643,7 +2561,7 @@ snapshots: tree-kill@1.2.2: {} - tsdown@0.16.5(publint@0.2.7)(typescript@5.4.5): + tsdown@0.16.5(publint@0.3.17)(typescript@5.4.5): dependencies: ansis: 4.2.0 cac: 6.7.14 @@ -2661,7 +2579,7 @@ snapshots: unconfig-core: 7.4.1 unrun: 0.2.11 optionalDependencies: - publint: 0.2.7 + publint: 0.3.17 typescript: 5.4.5 transitivePeerDependencies: - '@ts-macro/tsc' @@ -2796,8 +2714,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wrappy@1.0.2: {} - ws@8.14.2: {} xml-name-validator@4.0.0: {} diff --git a/src/annotations.ts b/src/annotations.ts index d14ccf7..c2619e1 100644 --- a/src/annotations.ts +++ b/src/annotations.ts @@ -1,6 +1,6 @@ -import { ChoiceBody, ImageService, InternationalString } from '@iiif/parser/presentation-3/types'; +import { ImageService, InternationalString } from '@iiif/parser/presentation-3/types'; import { ParsedSelector, SupportedTarget } from './annotation-targets'; -import { ChoiceDescription, ComplexChoice, SingleChoice } from './painting-annotations'; +import { ChoiceDescription } from './painting-annotations'; // A wrapper for annotations that are "well-known" interface ClassifiedAnnotation { diff --git a/src/vault/vault.ts b/src/vault/vault.ts index befa670..c0149f3 100644 --- a/src/vault/vault.ts +++ b/src/vault/vault.ts @@ -29,6 +29,75 @@ import { resolveType } from './utility/resolve-type'; /** Container types that are P4 equivalents of Canvas (used for compat fallback). */ const CONTAINER_FALLBACK_TYPES: ReadonlyArray = ['Timeline', 'Scene'] as const; +function applyLegacyGetShape(resource: any, inAnnotationTarget = false): any { + if (Array.isArray(resource)) { + let changed = false; + const mapped = resource.map((item) => { + const next = applyLegacyGetShape(item, inAnnotationTarget); + if (next !== item) { + changed = true; + } + return next; + }); + return changed ? mapped : resource; + } + + if (!resource || typeof resource !== 'object') { + return resource; + } + + let nextResource = resource; + let changed = false; + + if (resource.type === 'Annotation' && Array.isArray(resource.target) && resource.target.length === 1) { + nextResource = { + ...nextResource, + target: applyLegacyGetShape(resource.target[0], true), + }; + changed = true; + } + + for (const key of Object.keys(nextResource)) { + const value = (nextResource as any)[key]; + const nextInAnnotationTarget = nextResource.type === 'Annotation' && key === 'target'; + const nextValue = applyLegacyGetShape(value, nextInAnnotationTarget ? true : inAnnotationTarget); + if (nextValue !== value) { + if (!changed) { + nextResource = { ...nextResource }; + changed = true; + } + (nextResource as any)[key] = nextValue; + } + } + + if ( + nextResource.type === 'SpecificResource' && + inAnnotationTarget && + Object.prototype.hasOwnProperty.call(nextResource, 'selector') && + typeof (nextResource as any).selector === 'undefined' + ) { + if (!changed) { + nextResource = { ...nextResource }; + changed = true; + } + delete (nextResource as any).selector; + } + + if ( + nextResource.type === 'SpecificResource' && + !inAnnotationTarget && + !Object.prototype.hasOwnProperty.call(nextResource, 'selector') + ) { + if (!changed) { + nextResource = { ...nextResource }; + changed = true; + } + (nextResource as any).selector = undefined; + } + + return changed ? nextResource : resource; +} + export type VaultOptions = { reducers: Record; defaultState?: IIIFStore; @@ -317,10 +386,10 @@ export class Vault { const framing = found[HAS_PART].find((t: any) => { return parent ? t[PART_OF] === parent : t[PART_OF] === found.id; }); - return frameResource(found, framing); + return applyLegacyGetShape(frameResource(found, framing)); } - return entities[(reference as any).id] || (skipSelfReturn ? null : reference); + return applyLegacyGetShape(entities[(reference as any).id] || (skipSelfReturn ? null : reference)); } select(selector: (state: IIIFStore) => R): R { From 44c2e761731f0dd6edf1014ac29fffd68c1f3598 Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Mon, 16 Feb 2026 17:08:00 +0000 Subject: [PATCH 03/18] Revert v4 Vault changes (switching to dual vaults) --- MIGRATION-PLAN.md | 956 ++++++++++++++++ VAULT-3-4.md | 169 +++ __tests__/helpers.ts | 3 +- __tests__/vault/vault-functions.test.ts | 5 +- __tests__/vault/vault-p4.test.ts | 1005 ----------------- src/vault/types.ts | 47 +- .../utility/action-list-from-resource.ts | 4 +- src/vault/utility/get-default-entities.ts | 7 +- src/vault/utility/resolve-type.ts | 37 +- src/vault/vault.ts | 218 +--- 10 files changed, 1187 insertions(+), 1264 deletions(-) create mode 100644 MIGRATION-PLAN.md create mode 100644 VAULT-3-4.md delete mode 100644 __tests__/vault/vault-p4.test.ts diff --git a/MIGRATION-PLAN.md b/MIGRATION-PLAN.md new file mode 100644 index 0000000..ddb956e --- /dev/null +++ b/MIGRATION-PLAN.md @@ -0,0 +1,956 @@ +# IIIF Helpers → Presentation 4 Migration Plan + +## Overview + +This document outlines the plan for migrating `@iiif/helpers` (Vault) to support IIIF Presentation 4 internally, while maintaining full backwards compatibility for existing consumer code. + +**Core principle**: Code written against iiif-helpers today MUST NOT break. Users just update the libraries. + +**Parser dependency**: `pnpm i https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60` + +--- + +## Table of Contents + +1. [Architecture Summary](#1-architecture-summary) +2. [Breaking Changes Inventory](#2-breaking-changes-inventory) +3. [Phase 1: Dependency & Type Migration](#phase-1-dependency--type-migration) +4. [Phase 2: Store & Entity Expansion](#phase-2-store--entity-expansion) +5. [Phase 3: Normalizer Swap (P3 → P4)](#phase-3-normalizer-swap-p3--p4) +6. [Phase 4: Canvas Compatibility Layer](#phase-4-canvas-compatibility-layer) +7. [Phase 5: Serialization & Export](#phase-5-serialization--export) +8. [Phase 6: Fixtures & Smoke Tests](#phase-6-fixtures--smoke-tests) +9. [Phase 7: Type Package Removal](#phase-7-type-package-removal) +10. [Testing Strategy](#testing-strategy) +11. [Potential Parser Changes Needed](#potential-parser-changes-needed) +12. [Rollout Checklist](#rollout-checklist) + +--- + +## 1. Architecture Summary + +### Current Flow (P3) +``` +Input JSON (P2/P3) → normalize() [P3] → Entities Store (P3 shape) → Vault.get() → P3 Normalized types + → serialize() → P2 or P3 JSON +``` + +### Target Flow (P4) +``` +Input JSON (P2/P3/P4) → normalize() [P4] → Entities Store (P4 shape) → Vault.get() → P4 Normalized types + → serialize() → P2, P3, or P4 JSON +``` + +### Key Structural Differences: P3 vs P4 Entities + +| P3 Store Keys | P4 Store Keys | Notes | +|---|---|---| +| Collection | Collection | Same | +| Manifest | Manifest | Same | +| Canvas | Canvas | Still exists, but now shares space with Timeline/Scene | +| — | Timeline | **NEW** - was a Canvas with duration in P3 | +| — | Scene | **NEW** - 3D container, no P3 equivalent | +| AnnotationPage | AnnotationPage | Same | +| AnnotationCollection | AnnotationCollection | Same | +| Annotation | Annotation | `motivation`/`target` now always arrays | +| ContentResource | ContentResource | Gains Model, Dataset, scene components | +| Range | Range | Items can reference Timeline/Scene | +| Service | Service | Same | +| Selector | Selector | Gains PointSelector, WktSelector, AnimationSelector | +| Agent | Agent | Was `ResourceProvider` in P3 normalized | +| — | Quantity | **NEW** - spatial/temporal scales | +| — | Transform | **NEW** - RotateTransform, ScaleTransform, TranslateTransform | + +### Key Property Renames (P3 → P4) +- `placeholderCanvas` → `placeholderContainer` +- `accompanyingCanvas` → `accompanyingContainer` +- `motivation: string` → `motivation: string[]` +- `target: string | object` → `target: object[]` +- `body: object` → `body: object[]` + +--- + +## 2. Breaking Changes Inventory + +### Changes in Vault (user-facing, MUST be backwards compatible) + +| Area | Change | Compat Strategy | +|---|---|---| +| `Vault.get({type:'Canvas'})` | P4 may store as Timeline/Scene | Fallback search across container stores | +| `Vault.get()` return types | Returns P4 normalized shape | Type aliases + compatible shapes | +| `Entities` type | Gains Timeline, Scene, Quantity, Transform | Additive — existing keys unchanged | +| `toPresentation3()` | Now serializes from P4 store | Uses P4's `serializeConfigPresentation3` (handles downgrade) | +| Annotation shapes | `motivation`/`target` always arrays | Existing code may assume string; P3 normalize already arrays | +| `placeholderCanvas` | Renamed to `placeholderContainer` | Add getter alias or keep both | + +### Potential Parser Changes Needed + +See [Section 11](#potential-parser-changes-needed) for details. + +--- + +## Phase 1: Dependency & Type Migration + +### Goal +Replace `@iiif/presentation-3`, `@iiif/presentation-3-normalized`, and `@iiif/presentation-2` type packages with types from `@iiif/parser`. + +### Tasks + +#### 1.1 Update `package.json` + +```json +{ + "peerDependencies": { + "@iiif/parser": "^2.2.9" + }, + "dependencies": { + "@types/geojson": "7946.0.13" + } +} +``` + +**Remove** from `dependencies`: +- `@iiif/presentation-2` +- `@iiif/presentation-3` +- `@iiif/presentation-3-normalized` + +**Remove** from `resolutions` and `overrides`: +- All `@iiif/presentation-3` overrides + +#### 1.2 Create Import Mapping Guide + +All imports must be remapped: + +| Old Import | New Import | +|---|---| +| `from '@iiif/presentation-3'` | `from '@iiif/parser/presentation-3/types'` | +| `from '@iiif/presentation-3-normalized'` | `from '@iiif/parser/presentation-3-normalized/types'` | +| `from '@iiif/parser'` | `from '@iiif/parser'` (unchanged, but now also has P4) | +| `from '@iiif/parser/upgrader'` | `from '@iiif/parser/upgrader'` (unchanged) | + +Specific type remappings: +- `ResourceProvider` → still exported from `@iiif/parser/presentation-3/types` +- `ResourceProviderNormalized` → still exported from `@iiif/parser/presentation-3-normalized/types` + +#### 1.3 Files to Update (import paths) + +Every file importing from the old packages needs updating. Key files: + +**Direct `@iiif/presentation-3` imports** (~20 files): +- `src/vault/types.ts` — Core type definitions +- `src/vault/vault.ts` — Vault class +- `src/vault/store/reducers/entities-reducer.ts` +- `src/vault/utility/is-reference-list.ts` +- `src/vault/utility/resolve-if-exists.ts` +- `src/vault/utility/action-list-from-resource.ts` +- `src/i18n.ts` +- `src/ranges.ts` +- `src/shared-utilities.ts` +- `src/annotations.ts` +- `src/content-state.ts` +- `src/events.ts` +- `src/fetch.ts` +- `src/image-service/*.ts` (many files) +- `src/painting-annotations/*.ts` +- `src/annotation-targets/*.ts` +- `src/sequences.ts` +- `src/thumbnail.ts` +- `src/transcriptions.ts` +- `src/nav-date.ts` +- `src/search1.ts` + +**Direct `@iiif/presentation-3-normalized` imports** (~10 files): +- `src/vault/types.ts` +- `src/vault/vault.ts` +- `src/painting-annotations/helper.ts` +- `src/painting-annotations/types.ts` +- `src/ranges.ts` +- `src/sequences.ts` +- `src/thumbnail.ts` +- `src/transcriptions.ts` +- `src/nav-date.ts` +- `src/search1.ts` + +#### 1.4 Verification + +```bash +# After all imports are updated: +pnpm run typecheck +pnpm run test +``` + +--- + +## Phase 2: Store & Entity Expansion + +### Goal +Add new P4 entity stores (Timeline, Scene, Quantity, Transform) to the Vault's internal state while keeping the existing stores intact. + +### Tasks + +#### 2.1 Update `Entities` type (`src/vault/types.ts`) + +```typescript +export type Entities = { + // Existing (unchanged) + Collection: { [id: string]: CollectionNormalized }; + Manifest: { [id: string]: ManifestNormalized }; + Canvas: { [id: string]: CanvasNormalized }; + AnnotationPage: { [id: string]: AnnotationPageNormalized }; + AnnotationCollection: { [id: string]: AnnotationCollection }; + Annotation: { [id: string]: AnnotationNormalized }; + ContentResource: { [id: string]: ContentResource }; + Range: { [id: string]: RangeNormalized }; + Service: { [id: string]: any }; + Selector: { [id: string]: Selector }; + Agent: { [id: string]: ResourceProviderNormalized }; + + // NEW P4 stores + Timeline: { [id: string]: any }; // P4 Timeline container + Scene: { [id: string]: any }; // P4 Scene container (3D) + Quantity: { [id: string]: any }; // P4 Quantity (spatial/temporal scale) + Transform: { [id: string]: any }; // P4 Transform (rotate/scale/translate) +}; +``` + +> **Note**: Using `any` initially for new types to avoid coupling too tightly to P4 normalized types. These can be narrowed later once the P4 normalized type contract stabilizes. Alternatively, use `NormalizedEntityV4` from `@iiif/parser/presentation-4-normalized/types`. + +#### 2.2 Update `NormalizedEntity` union type (`src/vault/types.ts`) + +Add to the union: +```typescript +export type NormalizedEntity = + | CollectionNormalized + | ManifestNormalized + | CanvasNormalized + // ... existing ... + | TimelineNormalized // or any + | SceneNormalized // or any + | QuantityNormalized // or any + | TransformNormalized // or any + ; +``` + +#### 2.3 Update `RefToNormalized` and `RefToFull` conditional types (`src/vault/types.ts`) + +Add branches for new types: +```typescript +// In RefToNormalized: +: Ref['type'] extends 'Timeline' ? any +: Ref['type'] extends 'Scene' ? any +: Ref['type'] extends 'Quantity' ? any +: Ref['type'] extends 'Transform' ? any +``` + +#### 2.4 Update `getDefaultEntities()` (`src/vault/utility/get-default-entities.ts`) + +```typescript +export function getDefaultEntities(): Entities { + return { + Collection: {}, + Manifest: {}, + Canvas: {}, + AnnotationPage: {}, + AnnotationCollection: {}, + Annotation: {}, + ContentResource: {}, + Range: {}, + Service: {}, + Selector: {}, + Agent: {}, + // NEW + Timeline: {}, + Scene: {}, + Quantity: {}, + Transform: {}, + }; +} +``` + +#### 2.5 Update `resolveType()` (`src/vault/utility/resolve-type.ts`) + +```typescript +export function resolveType(type: string): keyof Entities { + switch (type) { + // Existing content resource mappings + case 'Image': + case 'Video': + case 'Sound': + case 'Audio': // P4 alias + case 'Model': // P4 new + case 'Dataset': // P4 (also in late P3) + case 'Text': + case 'TextualBody': + case 'Composite': + case 'List': + case 'Independents': + case 'Audience': + case 'Choice': + // P4 scene components (stored as content resources) + case 'PerspectiveCamera': + case 'OrthographicCamera': + case 'AmbientLight': + case 'DirectionalLight': + case 'PointLight': + case 'SpotLight': + case 'AmbientAudio': + case 'PointAudio': + case 'SpotAudio': + return 'ContentResource'; + + // Service types + case 'ImageService1': + case 'ImageService2': + case 'ImageService3': + return 'Service'; + + // P4 new container types + case 'Timeline': + return 'Timeline'; + case 'Scene': + return 'Scene'; + + // P4 new types + case 'Quantity': + return 'Quantity'; + + // P4 transforms + case 'Transform': + case 'RotateTransform': + case 'ScaleTransform': + case 'TranslateTransform': + return 'Transform'; + + // Selector types + case 'PointSelector': + case 'WktSelector': + case 'AnimationSelector': + case 'FragmentSelector': + case 'ImageApiSelector': + case 'SvgSelector': + return 'Selector'; + + default: + return type as any; + } +} +``` + +#### 2.6 Update `entities-reducer.ts` + +The `IMPORT_ENTITIES` case already iterates over all keys, so it will automatically handle new stores. The `updateField` helper similarly works generically. No structural changes needed — just ensure the TypeScript types align. + +#### 2.7 Update `is-reference-list.ts` + +Uses `CompatibleStore['entities']` which is generic — should work with new stores automatically after type update. + +#### 2.8 Verification + +```bash +pnpm run typecheck +pnpm run test +``` + +All existing tests should pass unchanged since new stores are empty by default and nothing references them yet. + +--- + +## Phase 3: Normalizer Swap (P3 → P4) + +### Goal +Switch Vault's internal normalizer from P3 `normalize()` to P4 `normalize()`, so all incoming resources (P2, P3, P4) are upgraded to P4 shape before storage. + +### Tasks + +#### 3.1 Update `action-list-from-resource.ts` + +This is the **critical change point**. Currently: + +```typescript +import { normalize } from '@iiif/parser'; +``` + +This imports P3's `normalize`. Change to: + +```typescript +import { normalize } from '@iiif/parser/presentation-4'; +``` + +The P4 `normalize()` already: +1. Detects source version (P2/P3/P4) +2. Upgrades through P2→P3→P4 +3. Returns `Presentation4Entities` with all new store types + +The return shape is: +```typescript +{ + entities: Presentation4Entities; // Has Timeline, Scene, Quantity, Transform + mapping: Record; + resource: { id: string; type: string }; + diagnostics: ValidationIssue[]; + sourceVersion: 2 | 3 | 4 | 'unknown'; +} +``` + +The `entities` keys match our expanded `Entities` type (after Phase 2), so `importEntities({ entities })` should work. + +#### 3.2 Entity Shape Compatibility + +**Critical concern**: The P4 normalizer stores entities with a looser shape (`NormalizedEntityV4 = { id?, type?, [key: string]: unknown }`) compared to the strongly-typed P3 normalized types (e.g., `CanvasNormalized` with explicit `width`, `height`, `items` fields). + +However, the actual data stored will have those fields — they're just not typed. The P4 normalizer preserves all fields from the input, and the upgrade from P3 ensures fields like `width`/`height` remain. + +**Key shape changes that DO happen in the P4 upgrade**: +- `Annotation.motivation`: already an array in P3 normalize → stays array +- `Annotation.target`: already expanded in P3 → stays expanded, now always array of objects +- `Annotation.body`: already expanded → now always array +- `placeholderCanvas` → `placeholderContainer` (renamed) +- `accompanyingCanvas` → `accompanyingContainer` (renamed) + +**What the P4 normalizer does that P3 didn't**: +- Canvases that only have `duration` (no width/height) may be stored as `Timeline` + - **But wait** — the P4 *upgrade* keeps the type as-is from the P3 output. It only changes to Timeline/Scene if the input explicitly says so, or if the original P4 input had those types. + - P3 manifests upgraded to P4 will keep `type: "Canvas"` on all canvases. + +#### 3.3 Mapping Compatibility + +The P4 `mapping` maps ids to store names like `"Canvas"`, `"Timeline"`, `"Scene"`, etc. Our `resolveType()` (updated in Phase 2) will correctly map these back when `Vault.get()` looks up entities. + +#### 3.4 Serializer Import Updates (`src/vault/vault.ts`) + +Currently: +```typescript +import { + serialize, + SerializeConfig, + serializeConfigPresentation2, + serializeConfigPresentation3, +} from '@iiif/parser'; +``` + +Change to import P4's serializer infrastructure: +```typescript +import { + serialize, + type SerializeConfig, + serializeConfigPresentation3, + serializeConfigPresentation4, +} from '@iiif/parser/presentation-4'; +import { + serializeConfigPresentation2, +} from '@iiif/parser'; +``` + +> **Note**: P4's `serializeConfigPresentation3` handles downgrading from P4 store back to P3 JSON (maps `placeholderContainer` back to `placeholderCanvas`, converts Timelines to Canvases, etc.). This is different from the P3 serializer's `serializeConfigPresentation3`. + +> **Breaking concern**: P4's `serializeConfigPresentation3` will throw on Scene containers (unsupported in P3). This is correct behavior — you can't downgrade a 3D scene to P3. + +#### 3.5 Update `resolve-if-exists.ts` + +Currently imports `frameResource`, `HAS_PART`, `PART_OF` from `@iiif/parser`. Need to check if P4 normalizer still uses the same framing mechanism. + +**Finding**: The P4 normalizer does NOT currently use `HAS_PART`/`PART_OF` framing. This is a **parser gap** — see [Section 11](#potential-parser-changes-needed). For now, these utilities can remain imported from `@iiif/parser` (P3 export) since `HAS_PART` is a constant string and `frameResource` is a utility function that works on any object shape. + +#### 3.6 Verification + +```bash +pnpm run typecheck +pnpm run test +``` + +Existing tests loading P2/P3 manifests should still pass because the P4 normalizer handles them. The entities stored will have a slightly different shape (P4 conventions) but the structural fields (`items`, `label`, etc.) are preserved. + +--- + +## Phase 4: Canvas Compatibility Layer + +### Goal +Ensure `vault.get({id: '...', type: 'Canvas'})` still works even when a resource has been stored as `Timeline` or `Scene` in the P4 store. + +### Tasks + +#### 4.1 Update `Vault.get()` Container Fallback + +In `src/vault/vault.ts`, the `get()` method resolves the entity store via type. Add fallback logic: + +```typescript +// After looking up entities[_type][_id] and not finding it: +const CONTAINER_TYPES = ['Canvas', 'Timeline', 'Scene'] as const; + +// If the requested type is a container type but wasn't found, +// search other container stores +if (CONTAINER_TYPES.includes(_type) && !found) { + for (const containerType of CONTAINER_TYPES) { + if (containerType === _type) continue; + const altEntities = (state.iiif.entities as any)[containerType]; + if (altEntities && altEntities[_id]) { + found = altEntities[_id]; + break; + } + } +} +``` + +This ensures: +- `get({id, type: 'Canvas'})` finds Timeline/Scene resources +- `get({id, type: 'Timeline'})` finds Canvas resources (forward compat) +- `get({id, type: 'Scene'})` finds Canvas resources + +#### 4.2 Update Mapping Fallback + +Also check the `mapping` table. If someone passes a bare ID string: +```typescript +if (typeof reference === 'string') { + const _type = resolveType(type ? type : state.iiif.mapping[reference]); + // If mapping says "Timeline" but user asked for "Canvas", that's fine +} +``` + +This already works — `resolveType` maps `"Timeline"` to `"Timeline"`, and the mapping correctly tells us where it's stored. The fallback in 4.1 handles the case where someone explicitly passes `type: 'Canvas'` but it's stored as `Timeline`. + +#### 4.3 Property Compatibility Aliases + +For backwards compatibility, when returning entities that used to be Canvases, consider adding computed properties: + +```typescript +// In Vault or a utility, when returning a container: +// If the entity has placeholderContainer but no placeholderCanvas: +if (entity.placeholderContainer && !entity.placeholderCanvas) { + entity.placeholderCanvas = entity.placeholderContainer; +} +if (entity.accompanyingContainer && !entity.accompanyingCanvas) { + entity.accompanyingCanvas = entity.accompanyingContainer; +} +``` + +**Decision point**: Should this be done at read time (in `get()`) or at import time (in the entities reducer)? + +**Recommendation**: Do it at import time in the entities reducer, during `IMPORT_ENTITIES`. This way the compatibility properties are always present and we don't add overhead to every `get()` call. Add both the old and new property names to Container entities. + +#### 4.4 Verification + +Write specific tests: +```typescript +test('get with type Canvas finds Timeline resources', () => { ... }); +test('get with type Canvas finds Scene resources', () => { ... }); +test('placeholderCanvas alias works on P4 containers', () => { ... }); +``` + +--- + +## Phase 5: Serialization & Export + +### Goal +Add `toPresentation4()` method and ensure existing `toPresentation2()`/`toPresentation3()` still work correctly with the P4 internal store. + +### Tasks + +#### 5.1 Add `toPresentation4()` to Vault + +```typescript +// In src/vault/vault.ts +toPresentation4(entity: Reference) { + return this.serialize(entity, serializeConfigPresentation4); +} +``` + +#### 5.2 Update `toPresentation3()` + +Currently uses `serializeConfigPresentation3` from `@iiif/parser` (P3). After Phase 3, it should use the P4 serializer's `serializeConfigPresentation3` which correctly downgrades from P4 store format: + +```typescript +// This now uses P4's downgrade serializer +toPresentation3(entity: Reference) { + return this.serialize(entity, serializeConfigPresentation3); +} +``` + +#### 5.3 Update `toPresentation2()` + +The P3 serializer's `serializeConfigPresentation2` was designed to work with a P3 store. Since we now have a P4 store, we need a two-step approach: + +**Option A**: Serialize P4 → P3 → P2 (two passes) +**Option B**: Create a P4 → P2 serializer config + +**Recommendation**: Option A for simplicity: +```typescript +toPresentation2(entity: Reference) { + // First serialize to P3 JSON, then normalize as P3, then serialize to P2 + // ... or use the P3 serializeConfigPresentation2 if it works with the P4 store shape +} +``` + +**Actually**: The P4 store shape is close enough to the P3 store shape that `serializeConfigPresentation2` from P3 may just work, since it only reads standard properties. Test this. If it fails on new container types, fall back to Option A. + +**Simplest approach**: Keep importing `serializeConfigPresentation2` from `@iiif/parser` (the P3 export). If the serializer encounters a Timeline, it will likely skip or error — which is acceptable since Timelines don't exist in P2. + +#### 5.4 Update `serialize()` Method + +The `serialize()` method's `SerializeConfig` type comes from the P4 serializer module which has a more generic `{ [type: string]: Serializer }` shape. This is actually more flexible than the P3 version which was keyed to specific types. Ensure the Vault's `serialize()` call works with both. + +#### 5.5 Add exports to `src/index.ts` + +No changes needed — the Vault class already exports `toPresentation3`, `toPresentation2`, and now `toPresentation4`. + +#### 5.6 Verification + +```bash +pnpm run typecheck +pnpm run test +``` + +Write tests for round-trip: +- Load P3 manifest → toPresentation4() → valid P4 JSON +- Load P3 manifest → toPresentation3() → matches original (modulo normalization) +- Load P4 manifest → toPresentation3() → valid P3 JSON +- Load P4 manifest → toPresentation4() → matches original + +--- + +## Phase 6: Fixtures & Smoke Tests + +### Goal +Create comprehensive test fixtures and smoke tests for P4 vault operation. + +### Tasks + +#### 6.1 Copy P4 Fixtures from Parser + +Copy the parser's P4 fixtures into iiif-helpers: + +``` +parser/fixtures/cookbook-v4/*.json → iiif-helpers/fixtures/presentation-4/cookbook/ +parser/fixtures/presentation-4/*.json → iiif-helpers/fixtures/presentation-4/scenes/ +``` + +These are "native P4" fixtures with: +- Scene containers +- Model content resources +- 3D annotations +- Cameras, lights, transforms + +#### 6.2 Generate P4 Fixtures by Upgrading Existing P3 Fixtures + +Create a script `scripts/generate-p4-fixtures.mjs`: + +```javascript +import { upgradeToPresentation4 } from '@iiif/parser/presentation-4'; +import { readFileSync, writeFileSync, readdirSync } from 'fs'; +import { join } from 'path'; + +const fixtureDir = 'fixtures/cookbook'; +const outputDir = 'fixtures/presentation-4/upgraded-from-p3'; + +const files = readdirSync(fixtureDir).filter(f => f.endsWith('.json')); +for (const file of files) { + const json = JSON.parse(readFileSync(join(fixtureDir, file), 'utf8')); + const upgraded = upgradeToPresentation4(json); + writeFileSync(join(outputDir, file), JSON.stringify(upgraded, null, 2)); +} +``` + +This gives us a set of "P3 manifests upgraded to P4" to test the upgrade path. + +#### 6.3 Keep Existing Fixtures + +All existing fixtures in `fixtures/presentation-2/`, `fixtures/presentation-3/`, `fixtures/cookbook/` stay as-is. Tests should load them through the vault and verify they work. + +#### 6.4 New Fixture Directory Structure + +``` +fixtures/ +├── annotations/ # existing +├── cookbook/ # existing P3 cookbook fixtures +├── exhibitions/ # existing +├── presentation-2/ # existing P2 fixtures +├── presentation-3/ # existing P3 fixtures (has-part.json etc.) +├── presentation-4/ # NEW +│ ├── cookbook/ # Native P4 cookbook (from parser) +│ ├── scenes/ # Native P4 scene fixtures (from parser) +│ └── upgraded-from-p3/ # P3 fixtures upgraded to P4 shape +├── search1/ # existing +└── thumbnails/ # existing +``` + +#### 6.5 Write Smoke Tests + +Create `__tests__/vault/vault-p4.test.ts`: + +```typescript +describe('Vault P4 support', () => { + // Category 1: Loading native P4 manifests + describe('native P4 fixtures', () => { + test.each(p4CookbookFixtures)('loads %s', async (name, json) => { + const vault = new Vault(); + const manifest = vault.loadSync(json.id, json); + expect(manifest).toBeTruthy(); + expect(manifest.id).toBe(json.id); + expect(manifest.type).toBe('Manifest'); + }); + }); + + // Category 2: Loading P3 manifests (backwards compat) + describe('P3 fixtures still work', () => { + test.each(p3CookbookFixtures)('loads %s', async (name, json) => { + const vault = new Vault(); + const manifest = vault.loadSync(json.id, json); + expect(manifest).toBeTruthy(); + expect(manifest.items.length).toBeGreaterThan(0); + }); + }); + + // Category 3: Loading P2 manifests (backwards compat) + describe('P2 fixtures still work', () => { + test('loads NLS manifest', () => { + const vault = new Vault(); + const manifest = vault.loadSync(nlsManifest['@id'], nlsManifest); + expect(manifest).toBeTruthy(); + }); + }); + + // Category 4: Canvas compatibility + describe('Canvas compatibility', () => { + test('get with type Canvas finds Timeline', () => { ... }); + test('get with type Canvas finds Scene', () => { ... }); + test('P3 canvas is still type Canvas after P4 upgrade', () => { ... }); + }); + + // Category 5: Serialization round-trips + describe('serialization', () => { + test('toPresentation4 from P3 input', () => { ... }); + test('toPresentation3 from P4 input', () => { ... }); + test('toPresentation4 round-trip', () => { ... }); + }); + + // Category 6: New container types + describe('new P4 containers', () => { + test('Timeline entities are stored correctly', () => { ... }); + test('Scene entities are stored correctly', () => { ... }); + test('Quantity entities are stored correctly', () => { ... }); + test('Transform entities are stored correctly', () => { ... }); + }); + + // Category 7: Scene/3D fixtures + describe('3D/Scene support', () => { + test('loads manifest with Scene container', () => { ... }); + test('loads manifest with Model content resource', () => { ... }); + test('loads manifest with camera and lights', () => { ... }); + }); +}); +``` + +#### 6.6 Verify Existing Tests Still Pass + +```bash +pnpm run test +``` + +**ALL existing tests must pass unchanged.** This is the primary compatibility gate. + +--- + +## Phase 7: Type Package Removal + +### Goal +Fully remove `@iiif/presentation-2`, `@iiif/presentation-3`, and `@iiif/presentation-3-normalized` packages, replacing all type imports with `@iiif/parser` exports. + +### Tasks + +This was partially covered in Phase 1. The remaining work: + +#### 7.1 Audit All Type Imports + +Run: +```bash +grep -r "@iiif/presentation-" src/ --include="*.ts" | grep -v "@iiif/parser" +``` + +Every hit must be remapped. + +#### 7.2 Specific Type Mappings + +| Old Type | New Location | +|---|---| +| `Canvas` | `@iiif/parser/presentation-3/types` | +| `Manifest` | `@iiif/parser/presentation-3/types` | +| `Collection` | `@iiif/parser/presentation-3/types` | +| `Annotation` | `@iiif/parser/presentation-3/types` | +| `AnnotationPage` | `@iiif/parser/presentation-3/types` | +| `AnnotationCollection` | `@iiif/parser/presentation-3/types` | +| `Range` | `@iiif/parser/presentation-3/types` | +| `ContentResource` | `@iiif/parser/presentation-3/types` | +| `Reference` | `@iiif/parser/presentation-3/types` | +| `SpecificResource` | `@iiif/parser/presentation-3/types` | +| `InternationalString` | `@iiif/parser/presentation-3/types` | +| `Service` | `@iiif/parser/presentation-3/types` | +| `Selector` | `@iiif/parser/presentation-3/types` | +| `ImageService` | `@iiif/parser/presentation-3/types` | +| `ImageService2` | `@iiif/parser/presentation-3/types` | +| `ImageService3` | `@iiif/parser/presentation-3/types` | +| `ResourceProvider` | `@iiif/parser/presentation-3/types` | +| `CanvasNormalized` | `@iiif/parser/presentation-3-normalized/types` | +| `ManifestNormalized` | `@iiif/parser/presentation-3-normalized/types` | +| `CollectionNormalized` | `@iiif/parser/presentation-3-normalized/types` | +| `AnnotationNormalized` | `@iiif/parser/presentation-3-normalized/types` | +| `AnnotationPageNormalized` | `@iiif/parser/presentation-3-normalized/types` | +| `RangeNormalized` | `@iiif/parser/presentation-3-normalized/types` | +| `ServiceNormalized` | `@iiif/parser/presentation-3-normalized/types` | +| `ResourceProviderNormalized` | `@iiif/parser/presentation-3-normalized/types` | +| `DescriptiveNormalized` | `@iiif/parser/presentation-3-normalized/types` | + +#### 7.3 Remove Packages + +```bash +pnpm remove @iiif/presentation-2 @iiif/presentation-3 @iiif/presentation-3-normalized +``` + +Remove from `resolutions` and `overrides` in `package.json`. + +#### 7.4 Verification + +```bash +pnpm run typecheck +pnpm run test +pnpm run build +pnpm run lint +``` + +--- + +## Testing Strategy + +### Test Pyramid + +``` + ┌─────────────┐ + │ E2E/Smoke │ Vault loads all fixture types, + │ Tests │ serialize round-trips work + ├─────────────┤ + │ Integration │ Vault + store + normalizer + │ Tests │ together, Canvas compat layer + ├─────────────┤ + │ Unit │ resolveType, getDefaultEntities, + │ Tests │ entities-reducer with new types + └─────────────┘ +``` + +### Test Files + +| File | What It Tests | +|---|---| +| `__tests__/vault/vault-p4.test.ts` | **NEW** - P4 loading, new containers, Canvas compat | +| `__tests__/vault/vault-fixtures.test.ts` | Existing - must still pass | +| `__tests__/vault/vault-functions.test.ts` | Existing - must still pass | +| `__tests__/vault/store.test.ts` | Existing - must still pass | +| `__tests__/vault/objects.test.ts` | Existing - must still pass | +| `__tests__/vault/global-vault.test.ts` | Existing - must still pass | +| All other test files | Must still pass | + +### Specific Test Scenarios for P4 + +1. **Load P3 cookbook manifest → verify Canvas items are still Canvas type** +2. **Load P4 cookbook manifest with Timeline → verify Timeline in Timeline store** +3. **Load P4 manifest with Scene → verify Scene in Scene store** +4. **`get({id, type:'Canvas'})` on a Timeline → returns the Timeline** +5. **`get({id, type:'Canvas'})` on a Canvas → returns the Canvas (no regression)** +6. **Load P2 manifest → verify full upgrade path works** +7. **`toPresentation4()` produces valid P4 JSON with correct @context** +8. **`toPresentation3()` from P4-normalized store produces valid P3 JSON** +9. **`toPresentation3()` throws on Scene (unsupported in P3)** +10. **`placeholderCanvas` compat alias works** +11. **Annotation target/body arrays work correctly** +12. **Entity actions (add/remove/modify) work on new store types** +13. **Metadata actions work on new store types** + +--- + +## Potential Parser Changes Needed + +These are areas where the parser may need updates to fully support the iiif-helpers migration: + +### 11.1 HAS_PART / Framing in P4 Normalizer + +**Issue**: The P3 normalizer supports `iiif-parser:hasPart` framing for resources that appear in multiple contexts with different metadata. The P4 normalizer does not implement this. + +**Impact**: Manifests with framed resources (e.g., a Canvas appearing in multiple Ranges with different labels) may lose context-specific metadata. + +**Recommendation**: Port the `HAS_PART`/`PART_OF` framing logic from P3 normalizer to P4. This is needed for `resolve-if-exists.ts` and `Vault.get()` which check for `HAS_PART`. + +**Workaround**: If not ported, `Vault.get()` will still work — it just won't apply framing. The `HAS_PART` check in `get()` will be a no-op since no entities will have that property. + +### 11.2 P4 `serializeConfigPresentation2` + +**Issue**: There is no P4 → P2 serializer config in the parser. + +**Impact**: `Vault.toPresentation2()` may not work correctly with P4-shaped stores. + +**Recommendation**: Either: +- Create a `serializeConfigPresentation2` in `src/presentation-4/` in the parser +- Or do a two-pass: serialize P4→P3 then P3→P2 in iiif-helpers + +### 11.3 Empty Types for P4 + +**Issue**: The P4 normalizer has `emptyCanvas`, `emptyManifest`, etc. but these are used differently than P3's. Vault's `hydrate()` method may need access to empty type templates. + +**Impact**: Low — `hydrate()` uses `skipSelfReturn: false` which returns the reference itself as fallback. + +### 11.4 `CompatibleStore` Type Alignment + +**Issue**: P3's `CompatibleStore` type and P4's are slightly different. P3's is strongly typed per entity type, P4's uses `{ [type: string]: { [id: string]: NormalizedEntity } }`. + +**Impact**: The P4 `serialize()` function accepts the broader type, so Vault's state should be compatible. Verify with type checking. + +### 11.5 `placeholderContainer` / `accompanyingContainer` in P3 Downgrade + +**Issue**: When serializing P4 back to P3, the P4 serializer's `serializeConfigPresentation3` correctly maps `placeholderContainer` → `placeholderCanvas`. But it throws if the container type is not Canvas. Need to ensure this is well-tested. + +**Impact**: Mostly correct. Edge case: a P3 manifest with `placeholderCanvas` that gets upgraded to P4 (becoming `placeholderContainer`) and then serialized back to P3 — the round-trip should preserve `placeholderCanvas`. + +--- + +## Rollout Checklist + +### Pre-merge +- [ ] All Phase 1-7 tasks complete +- [ ] `pnpm run typecheck` passes +- [ ] `pnpm run test` passes (ALL existing + new tests) +- [ ] `pnpm run lint` passes +- [ ] `pnpm run build` passes +- [ ] `pkg-tests` scripts pass after build +- [ ] No unintended export/API surface changes +- [ ] Backwards compatibility verified for P2/P3 inputs +- [ ] Canvas compat layer tested +- [ ] `toPresentation4()` tested +- [ ] `toPresentation3()` tested with P4 store +- [ ] New P4 fixtures in place +- [ ] Smoke tests for all fixture categories pass + +### Post-merge +- [ ] Publish pre-release for downstream testing +- [ ] Test with known consumers (Clover, Manifest Editor, etc.) +- [ ] Verify no runtime regressions in browser +- [ ] Document migration for downstream users (should be: "just update") + +--- + +## Execution Order Summary + +``` +Phase 1: Dependency & Type Migration ← Do first, foundation + ↓ +Phase 2: Store & Entity Expansion ← Additive, safe + ↓ +Phase 3: Normalizer Swap (P3 → P4) ← Core change, most risk + ↓ +Phase 4: Canvas Compatibility Layer ← Safety net for Phase 3 + ↓ +Phase 5: Serialization & Export ← New features + ↓ +Phase 6: Fixtures & Smoke Tests ← Validation (start writing early) + ↓ +Phase 7: Type Package Removal ← Cleanup (can merge with Phase 1) +``` + +**Estimated effort**: Phases 1-2 can be done together. Phase 3 is the riskiest and should be done carefully with constant test runs. Phase 4 is small but critical. Phases 5-6 add value. Phase 7 is cleanup. + +**Recommended approach**: Do Phases 1+2+7 together (type migration), then 3+4 together (core swap), then 5+6 (features + tests). Write tests from Phase 6 early to validate each phase. diff --git a/VAULT-3-4.md b/VAULT-3-4.md new file mode 100644 index 0000000..6f5afb2 --- /dev/null +++ b/VAULT-3-4.md @@ -0,0 +1,169 @@ +# Vault 3/4 Compatibility Plan + +## Goals + +1. Restore backwards compatibility for all existing projects using `Vault` today. +2. Introduce explicit `Vault3` and `Vault4` implementations. +3. Introduce a default `VaultAuto` (exported as `Vault`) that: + - starts in v3 mode, + - can opt-in to v4 switching, + - only switches when v4-only content (Scene) is detected. +4. Prove parity with exhaustive fixture-based tests and snapshots before enabling any default behavior changes. + +## Non-goals (for this phase) + +1. Making v4 the default runtime mode. +2. Removing v3 action/property compatibility paths. +3. Large refactors of helper APIs beyond compatibility shims. + +## Target API + +### Classes + +1. `Vault3` + - Uses Presentation 3 normalization/serialization path. + - Keeps current v3-compatible behavior as baseline. +2. `Vault4` + - Uses Presentation 4 normalization/serialization path. + - Accepts v3 inputs by upgrading/parsing into v4-normalized state. +3. `VaultAuto` (default export alias as `Vault`) + - Starts with an internal `Vault3` instance. + - Optionally enables automatic switching to `Vault4`. + - Exposes `v4` accessor for typed access when app code knows Scene is present. + +### Construction options + +Proposed options for `VaultAuto`: + +1. `enablePresentation4?: boolean` (default: `false`) + - Backwards-compatible default. + - When `false`, v4 resources containing Scene fail with a clear error. +2. `switchOnScene?: boolean` (default: `true`) + - Controls Scene-triggered migration when `enablePresentation4` is `true`. +3. `onVersionSwitch?: (from: 3, to: 4, context: { triggerId: string }) => void` + - Optional event hook for application observability. + +### Accessors + +`VaultAuto` should expose: + +1. `isPresentation4(): boolean` +2. `getVersion(): 3 | 4` +3. `v4` + - `undefined` before switch. + - typed `Vault4` after switch. + - supports usage pattern: `if (hasScene) { vault.v4?.get(...) }` + +## Behavior contract + +1. Existing projects importing `Vault` should behave exactly as now for v2/v3 resources. +2. No automatic switch without explicit opt-in (`enablePresentation4`). +3. Scene presence is the switching trigger in `VaultAuto`. +4. `Vault4` loading v3 resources must preserve output compatibility for existing helpers and workflows. +5. Legacy property aliases (e.g. `accompanyingCanvas` vs `accompanyingContainer`) must be mirrored in normalized entities and action-level mutations. + +## Migration strategy (VaultAuto internal switch) + +## Phase A: Safe and simple migration path + +1. Keep a journal of loaded source payloads in `VaultAuto`: + - `{ requestedId, responseJson }[]` +2. On switch trigger: + - instantiate `Vault4`, + - replay journal through `Vault4.loadSync` / `Vault4.load`, + - swap active implementation pointer from `Vault3` to `Vault4`, + - emit version-switch event. +3. Keep this replay strategy first; optimize later only if needed. + +Rationale: replay is deterministic, low risk, and avoids fragile in-place state transforms. + +## Phase B: Optional optimization (later) + +1. Evaluate direct store migration if replay cost becomes significant. +2. Only attempt after parity tests are stable and comprehensive. + +## Helpers compatibility plan + +1. Audit current helpers for strict `presentation-3-normalized` assumptions. +2. Update shared helpers to use union-compatible normalized references where possible. +3. Keep shared entrypoints v3/v4-compatible. +4. Add v4-only helper additions under a dedicated subpath (e.g. `iiif-helpers/v4/*`). +5. Do not break existing helper signatures unless absolutely required. + +## Testing strategy (regression gate) + +Snapshot-driven parity testing across **all fixtures**. + +### Test groups + +1. `Vault3` baseline snapshots: + - load fixture -> capture resolved top-level object, + - capture normalized store summary (entities/mapping shape), + - capture selected helper outputs. +2. `Vault4` compatibility snapshots for v3 fixtures: + - same fixture set and same snapshot shape as `Vault3`. +3. Direct parity assertions (`Vault3` vs `Vault4`) for v2/v3 fixtures: + - deep equality on compatibility projections, + - allowed-difference list for known renamed fields. +4. `VaultAuto` behavior: + - default mode remains v3 behavior, + - opt-in off + Scene fixture -> explicit failure path, + - opt-in on + Scene fixture -> switches to v4, + - post-switch `vault.v4` accessor typed and usable. + +### Fixture matrix (must include) + +1. `fixtures/presentation-2/**/*` +2. `fixtures/presentation-3/**/*` +3. `fixtures/cookbook/**/*` (v3 cookbook) +4. `iiif-helpers/fixtures/**/*` relevant helper fixtures +5. `fixtures/presentation-4/**/*` for switch + v4-only expectations + +### Snapshot shape guidance + +To reduce noise, snapshot normalized projections rather than entire internal state blobs: + +1. Root resource `{ id, type, item counts }` +2. Entity counts by type +3. Canonicalized key properties per type (including alias-mirrored fields) +4. Helper result snapshots for representative helpers (thumbnail, ranges, i18n, etc.) + +## Implementation phases + +1. `Phase 0: Reset` + - Undo current partial Vault migration changes. + - Re-establish green baseline on existing tests. +2. `Phase 1: Split classes` + - Introduce `Vault3` and `Vault4` classes. + - Keep `Vault` export as compatibility wrapper. +3. `Phase 2: Introduce VaultAuto` + - Implement dual-engine wrapper and replay migration. + - Add version accessors and `v4` accessor. +4. `Phase 3: Alias/mutation compatibility` + - Implement field alias mirroring in normalization projections and actions. + - Add targeted tests for alias writes/reads. +5. `Phase 4: Fixture parity suite` + - Add full snapshot + parity matrix. + - Gate with CI. +6. `Phase 5: Helper dual-compat` + - Update helper internals for v3/v4 compatibility. + - Add `v4` helper subpath for v4-specific functionality. + +## Exit criteria + +1. Existing v2/v3 integration tests pass unchanged. +2. New parity suite passes for all selected fixtures. +3. `VaultAuto` default path shows zero behavior regressions for v2/v3. +4. `VaultAuto` opt-in path successfully switches on Scene and exposes typed `vault.v4`. +5. Build, typecheck, tests, and package-load checks all pass. + +## Open decisions to approve before implementation + +1. Option names: + - keep `enablePresentation4` / `switchOnScene`, or rename. (A: keep) +2. Scene detection point: + - detect from raw payload pre-normalization vs post-normalization signal. (A: pre) +3. Default behavior when Scene is loaded with opt-in disabled: + - throw error (recommended) vs ignore. (throw) +4. `v4` accessor shape: + - property (`vault.v4`) vs method (`vault.getV4()`). (A: vault.v4) diff --git a/__tests__/helpers.ts b/__tests__/helpers.ts index 0f77ae8..3dcc088 100644 --- a/__tests__/helpers.ts +++ b/__tests__/helpers.ts @@ -93,5 +93,6 @@ export function renderRange(range: RangeTableOfContentsNode | null, skipCanvases str += `${spaces}${isLastItem ? treeChars.corner : treeChars.tee}${treeChars.horizontal}${treeChars.horizontal}${nn} ${renderRange(item, skipCanvases, indent + 2)}`; } }); - return str; + // Keep snapshots stable by stripping trailing spaces before line breaks. + return str.replace(/[ \t]+\n/g, '\n'); } diff --git a/__tests__/vault/vault-functions.test.ts b/__tests__/vault/vault-functions.test.ts index 20bc662..bd2a2d1 100644 --- a/__tests__/vault/vault-functions.test.ts +++ b/__tests__/vault/vault-functions.test.ts @@ -748,8 +748,9 @@ describe('Vault functions', () => { }) ); - expect(vault.get({ id: 'https://example.org/english', type: 'Range' }).items.map((t) => toRef(t)!.id)) - .toMatchInlineSnapshot(` + expect( + vault.get({ id: 'https://example.org/english', type: 'Range' }).items.map((t) => toRef(t)!.id) + ).toMatchInlineSnapshot(` [ "https://example.org/english/1", "https://example.org/english/2", diff --git a/__tests__/vault/vault-p4.test.ts b/__tests__/vault/vault-p4.test.ts deleted file mode 100644 index f79fd3d..0000000 --- a/__tests__/vault/vault-p4.test.ts +++ /dev/null @@ -1,1005 +0,0 @@ -/** - * Vault P4 Smoke Tests - * - * These tests validate the iiif-helpers migration to Presentation 4 support. - * They are designed to be written BEFORE the migration and will progressively - * pass as each phase of the migration is completed. - * - * Test categories: - * 1. Native P4 fixtures – Requires: Phase 2 (store expansion) + Phase 3 (P4 normalizer) - * 2. P4 scene fixtures – Requires: Phase 2 + Phase 3 - * 3. P3 backwards compat – Must ALWAYS pass (regression gate) - * 4. P2 backwards compat – Must ALWAYS pass (regression gate) - * 5. Canvas compatibility layer – Requires: Phase 4 - * 6. New P4 container types – Requires: Phase 2 + Phase 3 - * 7. Serialization round-trips – Requires: Phase 5 - * 8. Entity actions on new types – Requires: Phase 2 + Phase 3 - * 9. Annotation shape changes – Requires: Phase 3 - * 10. Property rename compat – Requires: Phase 3 + Phase 4 - * 11–15. Misc integration – Requires: various phases - */ - -import { beforeEach, describe, expect, test } from 'vitest'; -import choiceManifest from '../../fixtures/cookbook/choice.json'; -// ── Existing P3 fixtures (backwards compat) ───────────────────────────────── -import cssManifest from '../../fixtures/cookbook/css.json'; -import multimediaManifest from '../../fixtures/cookbook/multimedia.json'; -import tocManifest from '../../fixtures/cookbook/toc.json'; -// ── Existing P2 fixtures (backwards compat) ───────────────────────────────── -import nlsManifest from '../../fixtures/presentation-2/nls-manifest.json'; -// ── P3 fixtures for detailed checks ───────────────────────────────────────── -import hasPart from '../../fixtures/presentation-3/has-part.json'; -// ── Native P4 fixtures ────────────────────────────────────────────────────── -import p4Image from '../../fixtures/presentation-4/cookbook/0001-mvm-image.json'; -import p4Audio from '../../fixtures/presentation-4/cookbook/0002-mvm-audio.json'; -import p4Video from '../../fixtures/presentation-4/cookbook/0003-mvm-video.json'; -import p4Scene from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; -// ── Native P4 scene fixtures ──────────────────────────────────────────────── -import sceneModel from '../../fixtures/presentation-4/scenes/01-model-in-scene.json'; -import sceneCamera from '../../fixtures/presentation-4/scenes/03-perspective-camera.json'; -import sceneLights from '../../fixtures/presentation-4/scenes/11-multiple-lights.json'; -import sceneRotated from '../../fixtures/presentation-4/scenes/14-rotated-model.json'; -import sceneWithinCanvas from '../../fixtures/presentation-4/scenes/21-scene-within-canvas.json'; -import sceneComment from '../../fixtures/presentation-4/scenes/23-astronaut-comment.json'; -import { Vault } from '../../src/vault'; - -// ───────────────────────────────────────────────────────────────────────────── -// Helpers -// ───────────────────────────────────────────────────────────────────────────── - -function loadSync(vault: Vault, json: any): any { - const id = json.id || json['@id']; - return vault.loadSync(id, json); -} - -function getEntities(vault: Vault) { - return vault.getState().iiif.entities; -} - -// ───────────────────────────────────────────────────────────────────────────── -// Tests -// ───────────────────────────────────────────────────────────────────────────── - -describe('Vault P4 Support', () => { - // ═══════════════════════════════════════════════════════════════════════════ - // 1. Loading native P4 manifests - // Requires: Phase 2 (store expansion) + Phase 3 (P4 normalizer) - // ═══════════════════════════════════════════════════════════════════════════ - - describe('native P4 cookbook fixtures', () => { - const cookbookFixtures: [string, any][] = [ - ['0001-mvm-image', p4Image], - ['0002-mvm-audio', p4Audio], - ['0003-mvm-video', p4Video], - ['0608-mvm-3d (Scene)', p4Scene], - ]; - - test.each(cookbookFixtures)('loads %s', (name, json) => { - const vault = new Vault(); - const manifest = loadSync(vault, json); - expect(manifest).toBeTruthy(); - expect(manifest!.id).toBe(json.id); - expect(manifest!.type).toBe('Manifest'); - }); - - test('P4 image manifest has Canvas in store', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - const entities = getEntities(vault); - const canvasIds = Object.keys(entities.Canvas); - expect(canvasIds.length).toBeGreaterThanOrEqual(1); - }); - - test('P4 3D manifest has Scene in store', () => { - const vault = new Vault(); - loadSync(vault, p4Scene); - const entities = getEntities(vault); - // Phase 2: entities.Scene must exist as a store - expect(entities.Scene).toBeDefined(); - const sceneIds = Object.keys(entities.Scene); - expect(sceneIds.length).toBeGreaterThanOrEqual(1); - }); - - test('P4 audio manifest items are accessible', () => { - const vault = new Vault(); - const manifest = loadSync(vault, p4Audio); - expect(manifest).toBeTruthy(); - expect(manifest!.items.length).toBeGreaterThan(0); - }); - - test('P4 video manifest items are accessible', () => { - const vault = new Vault(); - const manifest = loadSync(vault, p4Video); - expect(manifest).toBeTruthy(); - expect(manifest!.items.length).toBeGreaterThan(0); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 2. Loading native P4 scene fixtures - // Requires: Phase 2 + Phase 3 (P4 normalizer handles Scene, Model, etc.) - // ═══════════════════════════════════════════════════════════════════════════ - - describe('native P4 scene fixtures', () => { - const sceneFixtures: [string, any][] = [ - ['01-model-in-scene', sceneModel], - ['03-perspective-camera', sceneCamera], - ['11-multiple-lights', sceneLights], - ['14-rotated-model', sceneRotated], - ['21-scene-within-canvas', sceneWithinCanvas], - ['23-astronaut-comment', sceneComment], - ]; - - test.each(sceneFixtures)('loads scene fixture %s', (name, json) => { - const vault = new Vault(); - const manifest = loadSync(vault, json); - expect(manifest).toBeTruthy(); - expect(manifest!.type).toBe('Manifest'); - expect(manifest!.items.length).toBeGreaterThan(0); - }); - - test('model-in-scene stores Scene entity', () => { - const vault = new Vault(); - loadSync(vault, sceneModel); - const entities = getEntities(vault); - expect(entities.Scene).toBeDefined(); - const sceneIds = Object.keys(entities.Scene); - expect(sceneIds.length).toBeGreaterThanOrEqual(1); - }); - - test('model-in-scene stores Model content resource', () => { - const vault = new Vault(); - loadSync(vault, sceneModel); - const entities = getEntities(vault); - const contentResourceIds = Object.keys(entities.ContentResource); - // The Model body of the annotation should be stored as ContentResource - const modelResources = Object.values(entities.ContentResource).filter((r: any) => r.type === 'Model'); - expect(modelResources.length).toBeGreaterThanOrEqual(1); - }); - - test('perspective-camera stores camera content resource', () => { - const vault = new Vault(); - loadSync(vault, sceneCamera); - const entities = getEntities(vault); - const contentResources = Object.values(entities.ContentResource); - const cameras = contentResources.filter( - (r: any) => r.type === 'PerspectiveCamera' || r.type === 'OrthographicCamera' - ); - expect(cameras.length).toBeGreaterThanOrEqual(1); - }); - - test('multiple-lights stores light content resources', () => { - const vault = new Vault(); - loadSync(vault, sceneLights); - const entities = getEntities(vault); - const contentResources = Object.values(entities.ContentResource); - const lights = contentResources.filter( - (r: any) => - r.type === 'AmbientLight' || - r.type === 'DirectionalLight' || - r.type === 'PointLight' || - r.type === 'SpotLight' - ); - expect(lights.length).toBeGreaterThanOrEqual(1); - }); - - test('rotated-model stores Transform entity', () => { - const vault = new Vault(); - loadSync(vault, sceneRotated); - const entities = getEntities(vault); - expect(entities.Transform).toBeDefined(); - const transformIds = Object.keys(entities.Transform); - // RotateTransform should be normalized into the Transform store - expect(transformIds.length).toBeGreaterThanOrEqual(1); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 3. P3 fixtures still work (backwards compatibility) - // REGRESSION GATE: These must ALWAYS pass, before AND after migration - // ═══════════════════════════════════════════════════════════════════════════ - - describe('P3 fixtures still work', () => { - test('loads CSS manifest', () => { - const vault = new Vault(); - const manifest = loadSync(vault, cssManifest); - expect(manifest).toBeTruthy(); - expect(manifest!.items.length).toBeGreaterThan(0); - }); - - test('loads choice manifest', () => { - const vault = new Vault(); - const manifest = loadSync(vault, choiceManifest); - expect(manifest).toBeTruthy(); - expect(manifest!.items.length).toBeGreaterThan(0); - }); - - test('loads TOC manifest', () => { - const vault = new Vault(); - const manifest = loadSync(vault, tocManifest); - expect(manifest).toBeTruthy(); - expect(manifest!.items.length).toBeGreaterThan(0); - }); - - test('loads multimedia manifest', () => { - const vault = new Vault(); - const manifest = loadSync(vault, multimediaManifest); - expect(manifest).toBeTruthy(); - expect(manifest!.items.length).toBeGreaterThan(0); - }); - - test('P3 canvas is still type Canvas after internal upgrade', () => { - const vault = new Vault(); - const manifest = loadSync(vault, cssManifest); - expect(manifest).toBeTruthy(); - - const firstItem = manifest!.items[0]; - expect(firstItem).toBeTruthy(); - - const canvas = vault.get(firstItem); - expect(canvas).toBeTruthy(); - // P3 canvases should remain type Canvas after P4 upgrade - expect(canvas.type).toBe('Canvas'); - }); - - test('P3 manifest canvases have width and height', () => { - const vault = new Vault(); - const manifest = loadSync(vault, cssManifest); - expect(manifest).toBeTruthy(); - - // After P4 normalizer swap, P3 canvases should retain their dimensions - const firstItem = manifest!.items[0]; - expect(firstItem).toBeTruthy(); - const canvas = vault.get(firstItem); - expect(canvas).toBeTruthy(); - expect(typeof canvas.width).toBe('number'); - expect(typeof canvas.height).toBe('number'); - // The CSS fixture canvas has width:8800 height:3966 - expect(canvas.width).toBeGreaterThan(0); - expect(canvas.height).toBeGreaterThan(0); - }); - - test('P3 manifest annotations are accessible', () => { - const vault = new Vault(); - const manifest = loadSync(vault, cssManifest); - expect(manifest).toBeTruthy(); - - // After normalization, canvas.items should contain AnnotationPage refs - const firstItem = manifest!.items[0]; - expect(firstItem).toBeTruthy(); - const canvas = vault.get(firstItem); - expect(canvas).toBeTruthy(); - expect(canvas.items).toBeTruthy(); - expect(canvas.items.length).toBeGreaterThan(0); - - const annoPage = vault.get(canvas.items[0]); - expect(annoPage).toBeTruthy(); - expect(annoPage.items.length).toBeGreaterThan(0); - }); - - test('hasPart manifest loads and resolves', () => { - const vault = new Vault(); - const manifest = loadSync(vault, hasPart); - expect(manifest).toBeTruthy(); - expect(manifest!.id).toBe(hasPart.id); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 4. P2 fixtures still work (backwards compatibility) - // REGRESSION GATE: These must ALWAYS pass, before AND after migration - // ═══════════════════════════════════════════════════════════════════════════ - - describe('P2 fixtures still work', () => { - test('loads NLS P2 manifest', () => { - const vault = new Vault(); - const manifest = loadSync(vault, nlsManifest); - expect(manifest).toBeTruthy(); - expect(manifest!.id).toBe((nlsManifest as any)['@id']); - }); - - test('P2 manifest has canvases', () => { - const vault = new Vault(); - const manifest = loadSync(vault, nlsManifest); - expect(manifest).toBeTruthy(); - expect(manifest!.items.length).toBeGreaterThan(0); - }); - - test('P2 canvas dimensions preserved', () => { - const vault = new Vault(); - const manifest = loadSync(vault, nlsManifest); - expect(manifest).toBeTruthy(); - - const canvas = vault.get(manifest!.items[0]); - expect(canvas).toBeTruthy(); - expect(typeof canvas.width).toBe('number'); - expect(typeof canvas.height).toBe('number'); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 5. Canvas compatibility layer - // Requires: Phase 4 (Vault.get() fallback across container stores) - // Key requirement: existing code doing get({type:'Canvas'}) must still - // work even when the resource is stored as Timeline or Scene internally. - // ═══════════════════════════════════════════════════════════════════════════ - - describe('Canvas compatibility', () => { - test('get with type Canvas finds a Canvas resource', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - // The P4 image fixture has an explicit Canvas - const canvasId = p4Image.items[0].id; - const canvas = vault.get({ id: canvasId, type: 'Canvas' }); - expect(canvas).toBeTruthy(); - expect(canvas.id).toBe(canvasId); - }); - - test('get with type Canvas finds a Timeline resource (compat layer)', () => { - // CRITICAL COMPAT TEST: If a resource is stored as Timeline in the - // P4 store, asking for it as Canvas should still return it. - // This is the key backwards compatibility guarantee. - const vault = new Vault(); - - // Manually create a Timeline-only manifest to test the fallback - const timelineManifest = { - '@context': 'http://iiif.io/api/presentation/4/context.json', - id: 'https://example.org/manifest/timeline', - type: 'Manifest', - label: { en: ['Timeline Manifest'] }, - items: [ - { - id: 'https://example.org/timeline/1', - type: 'Timeline', - duration: 120, - items: [ - { - id: 'https://example.org/timeline/1/page/1', - type: 'AnnotationPage', - items: [], - }, - ], - }, - ], - }; - - loadSync(vault, timelineManifest); - - // Phase 2: The resource should be in the Timeline store - const entities = getEntities(vault); - expect(entities.Timeline).toBeDefined(); - expect(entities.Timeline['https://example.org/timeline/1']).toBeTruthy(); - - // Phase 4: Asking for it as Canvas should still work via the compat layer - const result = vault.get({ - id: 'https://example.org/timeline/1', - type: 'Canvas', - }); - expect(result).toBeTruthy(); - expect(result.id).toBe('https://example.org/timeline/1'); - }); - - test('get with type Canvas finds a Scene resource (compat layer)', () => { - const vault = new Vault(); - loadSync(vault, p4Scene); - - const sceneId = p4Scene.items[0].id; - - // Phase 2: The resource is stored as Scene - const entities = getEntities(vault); - expect(entities.Scene).toBeDefined(); - expect(entities.Scene[sceneId]).toBeTruthy(); - - // Phase 4: But getting it as Canvas should still work - const result = vault.get({ id: sceneId, type: 'Canvas' }); - expect(result).toBeTruthy(); - expect(result.id).toBe(sceneId); - }); - - test('get by string ID resolves correctly for P4 containers', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const canvasId = p4Image.items[0].id; - const canvas = vault.get(canvasId); - expect(canvas).toBeTruthy(); - expect(canvas.id).toBe(canvasId); - }); - - test('get with skipSelfReturn=false returns reference for unknown', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const result = vault.get( - { id: 'https://not-real.example.org/nothing', type: 'Canvas' }, - { skipSelfReturn: false } - ); - expect(result).toBeTruthy(); - expect(result.id).toBe('https://not-real.example.org/nothing'); - }); - - test('get with skipSelfReturn=true returns null for unknown', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const result = vault.get( - { id: 'https://not-real.example.org/nothing', type: 'Canvas' }, - { skipSelfReturn: true } - ); - expect(result).toBeNull(); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 6. New P4 container types in the store - // Requires: Phase 2 (store expansion) + Phase 3 (P4 normalizer) - // ═══════════════════════════════════════════════════════════════════════════ - - describe('new P4 container types', () => { - test('Timeline entities are stored in Timeline store', () => { - const vault = new Vault(); - const timelineManifest = { - '@context': 'http://iiif.io/api/presentation/4/context.json', - id: 'https://example.org/manifest/t1', - type: 'Manifest', - label: { en: ['Timeline Test'] }, - items: [ - { - id: 'https://example.org/timeline/1', - type: 'Timeline', - duration: 60.0, - items: [], - }, - ], - }; - - loadSync(vault, timelineManifest); - const entities = getEntities(vault); - - expect(Object.keys(entities.Timeline).length).toBe(1); - const timeline = entities.Timeline['https://example.org/timeline/1']; - expect(timeline).toBeTruthy(); - expect(timeline.type).toBe('Timeline'); - expect(timeline.duration).toBe(60.0); - }); - - test('Scene entities are stored in Scene store', () => { - const vault = new Vault(); - loadSync(vault, p4Scene); - const entities = getEntities(vault); - expect(Object.keys(entities.Scene).length).toBeGreaterThanOrEqual(1); - }); - - test('Quantity entities are stored in Quantity store', () => { - const vault = new Vault(); - // A Canvas with spatialScale containing a Quantity object. - // Note: the P4 normalizer keeps spatialScale inline on the Canvas entity - // rather than extracting it into a separate Quantity store, so we verify - // that the Quantity store exists (even if empty) and the data is - // accessible on the canvas. - const quantityManifest = { - '@context': 'http://iiif.io/api/presentation/4/context.json', - id: 'https://example.org/manifest/q1', - type: 'Manifest', - label: { en: ['Quantity Test'] }, - items: [ - { - id: 'https://example.org/canvas/1', - type: 'Canvas', - width: 1000, - height: 1000, - spatialScale: { - id: 'https://example.org/quantity/1', - type: 'Quantity', - quantityValue: 0.001, - unit: 'meter', - }, - items: [], - }, - ], - }; - - loadSync(vault, quantityManifest); - const entities = getEntities(vault); - // Quantity store exists (added in Phase 2) - expect(entities.Quantity).toBeDefined(); - // spatialScale is kept inline on the canvas, not separated into the Quantity store - const canvas = vault.get({ id: 'https://example.org/canvas/1', type: 'Canvas' }); - expect(canvas).toBeTruthy(); - expect((canvas as any).spatialScale).toBeTruthy(); - expect((canvas as any).spatialScale.quantityValue).toEqual(0.001); - expect((canvas as any).spatialScale.unit).toEqual('meter'); - }); - - test('Transform entities are stored in Transform store', () => { - const vault = new Vault(); - loadSync(vault, sceneRotated); - const entities = getEntities(vault); - // RotateTransform, ScaleTransform, TranslateTransform → Transform store - expect(Object.keys(entities.Transform).length).toBeGreaterThanOrEqual(1); - }); - - test('default entities include all P4 store types', () => { - const vault = new Vault(); - const entities = getEntities(vault); - - // Original P3 stores - expect(entities.Collection).toBeDefined(); - expect(entities.Manifest).toBeDefined(); - expect(entities.Canvas).toBeDefined(); - expect(entities.AnnotationPage).toBeDefined(); - expect(entities.AnnotationCollection).toBeDefined(); - expect(entities.Annotation).toBeDefined(); - expect(entities.ContentResource).toBeDefined(); - expect(entities.Range).toBeDefined(); - expect(entities.Service).toBeDefined(); - expect(entities.Selector).toBeDefined(); - expect(entities.Agent).toBeDefined(); - - // New P4 stores - expect(entities.Timeline).toBeDefined(); - expect(entities.Scene).toBeDefined(); - expect(entities.Quantity).toBeDefined(); - expect(entities.Transform).toBeDefined(); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 7. Serialization round-trips - // Requires: Phase 5 (toPresentation4 method + P4 serialize config) - // ═══════════════════════════════════════════════════════════════════════════ - - describe('serialization', () => { - test('toPresentation4 produces valid P4 JSON from P4 input', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const p4Json = vault.toPresentation4({ - id: p4Image.id, - type: 'Manifest', - }); - - expect(p4Json).toBeTruthy(); - expect((p4Json as any)['@context']).toBe('http://iiif.io/api/presentation/4/context.json'); - expect((p4Json as any).type).toBe('Manifest'); - expect((p4Json as any).id).toBe(p4Image.id); - }); - - test('toPresentation4 produces valid P4 JSON from P3 input', () => { - const vault = new Vault(); - loadSync(vault, cssManifest); - - const p4Json = vault.toPresentation4({ - id: cssManifest.id, - type: 'Manifest', - }); - - expect(p4Json).toBeTruthy(); - expect((p4Json as any)['@context']).toBe('http://iiif.io/api/presentation/4/context.json'); - expect((p4Json as any).type).toBe('Manifest'); - expect((p4Json as any).id).toBe(cssManifest.id); - // P4 should have items - expect((p4Json as any).items.length).toBeGreaterThan(0); - }); - - test('toPresentation3 from P3 input produces valid P3 JSON', () => { - const vault = new Vault(); - loadSync(vault, cssManifest); - - const p3Json = vault.toPresentation3({ - id: cssManifest.id, - type: 'Manifest', - }); - - expect(p3Json).toBeTruthy(); - expect((p3Json as any).type).toBe('Manifest'); - expect((p3Json as any).id).toBe(cssManifest.id); - expect((p3Json as any).items.length).toBeGreaterThan(0); - }); - - test('toPresentation3 from P4 image manifest produces valid P3 JSON', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const p3Json = vault.toPresentation3({ - id: p4Image.id, - type: 'Manifest', - }); - - expect(p3Json).toBeTruthy(); - expect((p3Json as any).type).toBe('Manifest'); - expect((p3Json as any).items.length).toBeGreaterThan(0); - // Canvas items should still be Canvas in P3 output - expect((p3Json as any).items[0].type).toBe('Canvas'); - }); - - test('P4 round-trip preserves manifest structure', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const serialized = vault.toPresentation4({ - id: p4Image.id, - type: 'Manifest', - }) as any; - - expect(serialized.id).toBe(p4Image.id); - expect(serialized.type).toBe(p4Image.type); - expect(serialized.label).toEqual(p4Image.label); - expect(serialized.items.length).toBe(p4Image.items.length); - expect(serialized.items[0].id).toBe(p4Image.items[0].id); - expect(serialized.items[0].type).toBe(p4Image.items[0].type); - }); - - test('toPresentation4 on P2 input produces valid P4', () => { - const vault = new Vault(); - loadSync(vault, nlsManifest); - - const p4Json = vault.toPresentation4({ - id: (nlsManifest as any)['@id'], - type: 'Manifest', - }); - - expect(p4Json).toBeTruthy(); - expect((p4Json as any)['@context']).toBe('http://iiif.io/api/presentation/4/context.json'); - expect((p4Json as any).type).toBe('Manifest'); - expect((p4Json as any).items.length).toBeGreaterThan(0); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 8. Entity actions on new store types - // Requires: Phase 2 (store expansion) + Phase 3 (P4 normalizer) - // The entities-reducer already iterates generically over all store keys, - // so once the stores exist and entities are imported, actions should work. - // ═══════════════════════════════════════════════════════════════════════════ - - describe('entity actions on new types', () => { - test('modifyEntityField works on Timeline entities', () => { - const vault = new Vault(); - const timelineManifest = { - '@context': 'http://iiif.io/api/presentation/4/context.json', - id: 'https://example.org/manifest/ea1', - type: 'Manifest', - label: { en: ['Entity Action Test'] }, - items: [ - { - id: 'https://example.org/timeline/ea1', - type: 'Timeline', - duration: 30.0, - label: { en: ['Original Label'] }, - items: [], - }, - ], - }; - - loadSync(vault, timelineManifest); - - vault.modifyEntityField({ id: 'https://example.org/timeline/ea1', type: 'Timeline' }, 'label', { - en: ['Updated Label'], - }); - - const timeline = vault.get({ - id: 'https://example.org/timeline/ea1', - type: 'Timeline', - }); - expect(timeline.label).toEqual({ en: ['Updated Label'] }); - }); - - test('modifyEntityField works on Scene entities', () => { - const vault = new Vault(); - loadSync(vault, p4Scene); - - const sceneId = p4Scene.items[0].id; - - vault.modifyEntityField({ id: sceneId, type: 'Scene' }, 'label', { - en: ['Modified Scene Label'], - }); - - const scene = vault.get({ id: sceneId, type: 'Scene' }); - expect(scene.label).toEqual({ en: ['Modified Scene Label'] }); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 9. Annotation shape changes - // Requires: Phase 3 (P4 normalizer ensures motivation/target/body arrays) - // In P4, motivation, target, and body are ALWAYS arrays (never singular). - // The P3 normalizer already normalizes most of these to arrays, but P4 - // makes it explicit in the spec. - // ═══════════════════════════════════════════════════════════════════════════ - - describe('P4 annotation shapes', () => { - test('P4 annotation motivation is always an array', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const entities = getEntities(vault); - const annotations = Object.values(entities.Annotation); - for (const anno of annotations) { - if ((anno as any).motivation) { - expect(Array.isArray((anno as any).motivation)).toBe(true); - } - } - }); - - test('P4 annotation target is always an array', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const entities = getEntities(vault); - const annotations = Object.values(entities.Annotation); - for (const anno of annotations) { - if ((anno as any).target) { - expect(Array.isArray((anno as any).target)).toBe(true); - } - } - }); - - test('P4 annotation body is always an array', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const entities = getEntities(vault); - const annotations = Object.values(entities.Annotation); - for (const anno of annotations) { - if ((anno as any).body) { - expect(Array.isArray((anno as any).body)).toBe(true); - } - } - }); - - test('P3 annotations are also arrays after P4 upgrade', () => { - const vault = new Vault(); - // The choice manifest has explicit annotations with motivation/body/target - loadSync(vault, choiceManifest); - - const entities = getEntities(vault); - const annotations = Object.values(entities.Annotation); - expect(annotations.length).toBeGreaterThan(0); - for (const anno of annotations) { - if ((anno as any).motivation) { - expect(Array.isArray((anno as any).motivation)).toBe(true); - } - if ((anno as any).target) { - expect(Array.isArray((anno as any).target)).toBe(true); - } - if ((anno as any).body) { - expect(Array.isArray((anno as any).body)).toBe(true); - } - } - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 10. Property rename compat - // Requires: Phase 3 (P4 upgrade renames placeholderCanvas → placeholderContainer) - // Phase 4 (compat layer adds alias back) - // ═══════════════════════════════════════════════════════════════════════════ - - describe('property rename compatibility', () => { - test('placeholderContainer is set on P4 containers with backwards compat alias', () => { - // P3: placeholderCanvas → P4: placeholderContainer - // Compat: both properties should be accessible on the stored entity - const vault = new Vault(); - const manifestWithPlaceholder = { - '@context': 'http://iiif.io/api/presentation/3/context.json', - id: 'https://example.org/manifest/ph1', - type: 'Manifest', - label: { en: ['Placeholder Test'] }, - items: [ - { - id: 'https://example.org/canvas/ph1', - type: 'Canvas', - width: 800, - height: 600, - items: [], - placeholderCanvas: { - id: 'https://example.org/canvas/placeholder', - type: 'Canvas', - width: 100, - height: 75, - items: [], - }, - }, - ], - }; - - loadSync(vault, manifestWithPlaceholder); - const canvas = vault.get({ - id: 'https://example.org/canvas/ph1', - type: 'Canvas', - }); - expect(canvas).toBeTruthy(); - - // After P4 upgrade, should have placeholderContainer - // Compat: should also still have placeholderCanvas alias - const hasEither = (canvas as any).placeholderContainer || (canvas as any).placeholderCanvas; - expect(hasEither).toBeTruthy(); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 11. Batch operations with P4 - // Requires: Phase 2 + Phase 3 (basic vault operations on P4 data) - // ═══════════════════════════════════════════════════════════════════════════ - - describe('batch operations', () => { - test('batch mutation works on P4 manifest', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const manifest = vault.get({ id: p4Image.id, type: 'Manifest' }); - expect(manifest).toBeTruthy(); - - vault.batch((v) => { - v.modifyEntityField({ id: p4Image.id, type: 'Manifest' }, 'label', { - en: ['Batch Updated'], - }); - }); - - const updated = vault.get({ id: p4Image.id, type: 'Manifest' }); - expect(updated.label).toEqual({ en: ['Batch Updated'] }); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 12. Multiple loads - // Requires: Phase 3 (P4 normalizer handles all input versions) - // Key test: a single Vault instance should hold P2, P3, and P4 data - // ═══════════════════════════════════════════════════════════════════════════ - - describe('loading multiple manifests of different versions', () => { - test('can load P2, P3, and P4 manifests into the same vault', () => { - const vault = new Vault(); - - // Load P2 - const p2 = loadSync(vault, nlsManifest); - expect(p2).toBeTruthy(); - - // Load P3 - const p3 = loadSync(vault, cssManifest); - expect(p3).toBeTruthy(); - - // Load P4 - const p4 = loadSync(vault, p4Image); - expect(p4).toBeTruthy(); - - // All three should be accessible - const p2Again = vault.get({ - id: (nlsManifest as any)['@id'], - type: 'Manifest', - }); - expect(p2Again).toBeTruthy(); - - const p3Again = vault.get({ - id: cssManifest.id, - type: 'Manifest', - }); - expect(p3Again).toBeTruthy(); - - const p4Again = vault.get({ id: p4Image.id, type: 'Manifest' }); - expect(p4Again).toBeTruthy(); - - // All manifests should be in the Manifest store - const entities = getEntities(vault); - expect(Object.keys(entities.Manifest).length).toBeGreaterThanOrEqual(3); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 13. Mapping table - // Requires: Phase 2 + Phase 3 (mapping records new type names) - // ═══════════════════════════════════════════════════════════════════════════ - - describe('mapping table', () => { - test('mapping records correct types for P4 resources', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const state = vault.getState(); - const mapping = state.iiif.mapping; - - // The manifest id should map to Manifest - expect(mapping[p4Image.id]).toBe('Manifest'); - - // The canvas id should map to Canvas - const canvasId = p4Image.items[0].id; - expect(mapping[canvasId]).toBe('Canvas'); - }); - - test('mapping records Scene type for P4 scene resources', () => { - const vault = new Vault(); - loadSync(vault, p4Scene); - - const state = vault.getState(); - const mapping = state.iiif.mapping; - - const sceneId = p4Scene.items[0].id; - expect(mapping[sceneId]).toBe('Scene'); - }); - - test('mapping records Timeline type for P4 timeline resources', () => { - const vault = new Vault(); - const timelineManifest = { - '@context': 'http://iiif.io/api/presentation/4/context.json', - id: 'https://example.org/manifest/mt1', - type: 'Manifest', - label: { en: ['Mapping Test'] }, - items: [ - { - id: 'https://example.org/timeline/mt1', - type: 'Timeline', - duration: 45, - items: [], - }, - ], - }; - - loadSync(vault, timelineManifest); - - const state = vault.getState(); - const mapping = state.iiif.mapping; - expect(mapping['https://example.org/timeline/mt1']).toBe('Timeline'); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 14. Hydrate / deep - // Requires: Phase 2 + Phase 3 + Phase 4 (resolveType for new types) - // ═══════════════════════════════════════════════════════════════════════════ - - describe('hydrate and deep', () => { - test('hydrate works on P4 resources', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const canvasId = p4Image.items[0].id; - const hydrated = vault.hydrate({ id: canvasId, type: 'Canvas' }); - expect(hydrated).toBeTruthy(); - expect(hydrated.id).toBe(canvasId); - }); - - test('hydrate works on Scene references', () => { - const vault = new Vault(); - loadSync(vault, p4Scene); - - const sceneId = p4Scene.items[0].id; - const hydrated = vault.hydrate({ id: sceneId, type: 'Scene' }); - expect(hydrated).toBeTruthy(); - expect(hydrated.id).toBe(sceneId); - }); - - test('deep traversal works on P4 manifest', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const manifest = vault.get({ id: p4Image.id, type: 'Manifest' }); - const firstCanvas = vault.get(manifest.items[0]); - expect(firstCanvas).toBeTruthy(); - expect(firstCanvas.id).toBe(p4Image.items[0].id); - }); - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // 15. Request status - // Requires: Phase 3 (basic P4 loading marks requests as ready) - // ═══════════════════════════════════════════════════════════════════════════ - - describe('request status', () => { - test('requestStatus returns ready for loaded P4 manifest', () => { - const vault = new Vault(); - loadSync(vault, p4Image); - - const status = vault.requestStatus(p4Image.id); - expect(status).toBeTruthy(); - expect(status!.loadingState).toBe('RESOURCE_READY'); - }); - - test('requestStatus returns undefined for unloaded manifest', () => { - const vault = new Vault(); - const status = vault.requestStatus('https://not-loaded.example.org'); - expect(status).toBeUndefined(); - }); - }); -}); diff --git a/src/vault/types.ts b/src/vault/types.ts index c3fbb02..e4e8ebd 100644 --- a/src/vault/types.ts +++ b/src/vault/types.ts @@ -32,17 +32,6 @@ declare global { interface A {} } -/** - * A loosely-typed normalized entity for P4-only store types - * (Timeline, Scene, Quantity, Transform) which do not have - * dedicated normalized type packages yet. - */ -export type GenericNormalizedEntity = { - id: string; - type: string; - [key: string]: unknown; -}; - export type MetaState = Record>>; export type RequestState = { @@ -87,8 +76,7 @@ export type NormalizedEntity = | RangeNormalized | ServiceNormalized | ResourceProviderNormalized - | Selector - | GenericNormalizedEntity; + | Selector; export type RefToNormalized = Ref['type'] extends 'Manifest' ? ManifestNormalized @@ -110,15 +98,7 @@ export type RefToNormalized = Ref['type'] extends ? ResourceProviderNormalized : Ref['type'] extends 'Collection' ? CollectionNormalized - : Ref['type'] extends 'Timeline' - ? GenericNormalizedEntity - : Ref['type'] extends 'Scene' - ? GenericNormalizedEntity - : Ref['type'] extends 'Quantity' - ? GenericNormalizedEntity - : Ref['type'] extends 'Transform' - ? GenericNormalizedEntity - : any; + : any; export type RefToFull = Ref['type'] extends 'Manifest' ? Manifest @@ -140,15 +120,7 @@ export type RefToFull = Ref['type'] extends 'Mani ? ResourceProvider : Ref['type'] extends 'Collection' ? Collection - : Ref['type'] extends 'Timeline' - ? GenericNormalizedEntity - : Ref['type'] extends 'Scene' - ? GenericNormalizedEntity - : Ref['type'] extends 'Quantity' - ? GenericNormalizedEntity - : Ref['type'] extends 'Transform' - ? GenericNormalizedEntity - : any; + : any; export type Entities = { Collection: { @@ -184,19 +156,6 @@ export type Entities = { Agent: { [id: string]: ResourceProviderNormalized; }; - // ── P4 entity stores ────────────────────────────────────────────────── - Timeline: { - [id: string]: GenericNormalizedEntity; - }; - Scene: { - [id: string]: GenericNormalizedEntity; - }; - Quantity: { - [id: string]: GenericNormalizedEntity; - }; - Transform: { - [id: string]: GenericNormalizedEntity; - }; }; export type EntityStore = { diff --git a/src/vault/utility/action-list-from-resource.ts b/src/vault/utility/action-list-from-resource.ts index d276a38..8ceb0f3 100644 --- a/src/vault/utility/action-list-from-resource.ts +++ b/src/vault/utility/action-list-from-resource.ts @@ -1,6 +1,6 @@ -import { normalize } from '@iiif/parser/presentation-4'; +import { normalize } from '@iiif/parser'; +import { AllActions } from '../types'; import { addMapping, addMappings, importEntities, requestComplete, requestError, requestMismatch } from '../actions'; -import type { AllActions } from '../types'; export const actionListFromResource = (id: string, response: unknown): AllActions[] => { const { entities, resource, mapping } = normalize(response); diff --git a/src/vault/utility/get-default-entities.ts b/src/vault/utility/get-default-entities.ts index 97a559c..027a581 100644 --- a/src/vault/utility/get-default-entities.ts +++ b/src/vault/utility/get-default-entities.ts @@ -1,4 +1,4 @@ -import type { Entities } from '../types'; +import { Entities } from '../types'; export function getDefaultEntities(): Entities { return { @@ -13,10 +13,5 @@ export function getDefaultEntities(): Entities { Service: {}, Selector: {}, Agent: {}, - // Presentation 4 entity stores - Timeline: {}, - Scene: {}, - Quantity: {}, - Transform: {}, }; } diff --git a/src/vault/utility/resolve-type.ts b/src/vault/utility/resolve-type.ts index 6148a1b..f4e074e 100644 --- a/src/vault/utility/resolve-type.ts +++ b/src/vault/utility/resolve-type.ts @@ -1,8 +1,7 @@ -import type { Entities } from '../types'; +import { Entities } from '../types'; export function resolveType(type: string): keyof Entities { switch (type) { - // Content resource types (P3 + P4) case 'Image': case 'Video': case 'Sound': @@ -12,45 +11,11 @@ export function resolveType(type: string): keyof Entities { case 'List': case 'Independents': case 'Audience': - // P4 content resource types - case 'Model': - case 'TextualBody': - case 'Choice': - case 'Audio': - // P4 scene component types (stored as ContentResource) - case 'PerspectiveCamera': - case 'OrthographicCamera': - case 'AmbientLight': - case 'DirectionalLight': - case 'PointLight': - case 'SpotLight': - case 'AmbientAudio': - case 'PointAudio': - case 'SpotAudio': return 'ContentResource'; - - // Service types case 'ImageService1': case 'ImageService2': case 'ImageService3': return 'Service'; - - // P4 container types - case 'Timeline': - return 'Timeline'; - case 'Scene': - return 'Scene'; - - // P4 structural types - case 'Quantity': - return 'Quantity'; - - // P4 transform types - case 'Transform': - case 'RotateTransform': - case 'ScaleTransform': - case 'TranslateTransform': - return 'Transform'; } return type as any; diff --git a/src/vault/vault.ts b/src/vault/vault.ts index c0149f3..d7a0c06 100644 --- a/src/vault/vault.ts +++ b/src/vault/vault.ts @@ -1,18 +1,6 @@ /// -import { frameResource, HAS_PART, isSpecificResource, PART_OF, serializeConfigPresentation2 } from '@iiif/parser'; import { - type SerializeConfig, - serialize, - serializeConfigPresentation3, - serializeConfigPresentation4, -} from '@iiif/parser/presentation-4'; -import type { Collection, Manifest, Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; -import type { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; -import mitt, { type Emitter } from 'mitt'; -import { BATCH_ACTIONS, type BatchAction, batchActions, entityActions, metaActions } from './actions'; -import { createStore, type VaultZustandStore } from './store'; -import type { ActionFromType, AllActions, Entities, @@ -22,82 +10,25 @@ import type { RefToNormalized, RequestState, } from './types'; -import { areInputsEqual, createFetchHelper } from './utility'; -import { isWrapped, type ReactiveWrapped, wrapObject } from './utility/objects'; +import { Collection, Manifest, Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; +import { + frameResource, + HAS_PART, + isSpecificResource, + PART_OF, + serialize, + SerializeConfig, + serializeConfigPresentation2, + serializeConfigPresentation3, +} from '@iiif/parser'; +import { BATCH_ACTIONS, BatchAction, batchActions, entityActions, metaActions } from './actions'; +import { createFetchHelper, areInputsEqual } from './utility'; +import { createStore, VaultZustandStore } from './store'; +import mitt, { Emitter } from 'mitt'; +import { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import { isWrapped, ReactiveWrapped, wrapObject } from './utility/objects'; import { resolveType } from './utility/resolve-type'; -/** Container types that are P4 equivalents of Canvas (used for compat fallback). */ -const CONTAINER_FALLBACK_TYPES: ReadonlyArray = ['Timeline', 'Scene'] as const; - -function applyLegacyGetShape(resource: any, inAnnotationTarget = false): any { - if (Array.isArray(resource)) { - let changed = false; - const mapped = resource.map((item) => { - const next = applyLegacyGetShape(item, inAnnotationTarget); - if (next !== item) { - changed = true; - } - return next; - }); - return changed ? mapped : resource; - } - - if (!resource || typeof resource !== 'object') { - return resource; - } - - let nextResource = resource; - let changed = false; - - if (resource.type === 'Annotation' && Array.isArray(resource.target) && resource.target.length === 1) { - nextResource = { - ...nextResource, - target: applyLegacyGetShape(resource.target[0], true), - }; - changed = true; - } - - for (const key of Object.keys(nextResource)) { - const value = (nextResource as any)[key]; - const nextInAnnotationTarget = nextResource.type === 'Annotation' && key === 'target'; - const nextValue = applyLegacyGetShape(value, nextInAnnotationTarget ? true : inAnnotationTarget); - if (nextValue !== value) { - if (!changed) { - nextResource = { ...nextResource }; - changed = true; - } - (nextResource as any)[key] = nextValue; - } - } - - if ( - nextResource.type === 'SpecificResource' && - inAnnotationTarget && - Object.prototype.hasOwnProperty.call(nextResource, 'selector') && - typeof (nextResource as any).selector === 'undefined' - ) { - if (!changed) { - nextResource = { ...nextResource }; - changed = true; - } - delete (nextResource as any).selector; - } - - if ( - nextResource.type === 'SpecificResource' && - !inAnnotationTarget && - !Object.prototype.hasOwnProperty.call(nextResource, 'selector') - ) { - if (!changed) { - nextResource = { ...nextResource }; - changed = true; - } - (nextResource as any).selector = undefined; - } - - return changed ? nextResource : resource; -} - export type VaultOptions = { reducers: Record; defaultState?: IIIFStore; @@ -124,11 +55,7 @@ export class Vault { private isBatching = false; private batchQueue: AllActions[] = []; remoteFetcher: (str: string, options?: any, mapper?: (resource: any) => any) => Promise; - staticFetcher: ( - str: string, - json: any, - mapper?: (resource: any) => any - ) => Promise | NormalizedEntity | undefined; + staticFetcher: (str: string, json: any, mapper?: (resource: any) => any) => Promise | NormalizedEntity | undefined; constructor(options?: Partial, store?: VaultZustandStore) { this.options = Object.assign( @@ -210,18 +137,12 @@ export class Vault { if (!this.isBatching) { if (action.type === BATCH_ACTIONS) { for (const realAction of action.payload.actions) { - this.emitter.emit(realAction.type, { - action: realAction, - state: this.store.getState(), - }); + this.emitter.emit(realAction.type, { action: realAction, state: this.store.getState() }); } this.store.dispatch(action); const state = this.getState(); for (const realAction of action.payload.actions) { - this.emitter.emit(`after:${realAction.type}`, { - action: realAction, - state, - }); + this.emitter.emit(`after:${realAction.type}`, { action: realAction, state }); } return; } @@ -247,21 +168,17 @@ export class Vault { } serialize(entity: Reference, config: SerializeConfig) { - return serialize(this.getState().iiif as any, entity as any, config); + return serialize(this.getState().iiif, entity, config); } toPresentation2(entity: Reference) { - return this.serialize(entity, serializeConfigPresentation2 as any); + return this.serialize(entity, serializeConfigPresentation2); } toPresentation3(entity: Reference) { return this.serialize(entity, serializeConfigPresentation3); } - toPresentation4(entity: Reference) { - return this.serialize(entity, serializeConfigPresentation4); - } - hydrate( reference: string | Partial, type?: string | GetOptions, @@ -277,10 +194,7 @@ export class Vault { type?: string | GetOptions, options: GetOptions = {} ): RefToNormalized | RefToNormalized[] { - return this.get(reference as any, type as any, { - ...options, - skipSelfReturn: false, - }); + return this.get(reference as any, type as any, { ...options, skipSelfReturn: false }); } get( @@ -351,24 +265,7 @@ export class Vault { const _type = resolveType(type ? type : (reference as any)?.type); const _id = (reference as any)?.id; - let entities = (state.iiif.entities as any)[_type]; - - // ── P4 Container compatibility fallback ────────────────────────────── - // When the requested type is "Canvas" but the entity isn't found in the - // Canvas store, check the P4 container stores (Timeline, Scene) so that - // callers using `get({ id, type: 'Canvas' })` still resolve P4 containers. - if (!entities || !entities[_id]) { - if (_type === 'Canvas' && _id) { - for (const altType of CONTAINER_FALLBACK_TYPES) { - const altEntities = (state.iiif.entities as any)[altType]; - if (altEntities && altEntities[_id]) { - entities = altEntities; - break; - } - } - } - } - + const entities = (state.iiif.entities as any)[_type]; if (!entities) { const request = state.iiif.requests[_id]; if (request && request.resourceUri !== _id) { @@ -386,10 +283,10 @@ export class Vault { const framing = found[HAS_PART].find((t: any) => { return parent ? t[PART_OF] === parent : t[PART_OF] === found.id; }); - return applyLegacyGetShape(frameResource(found, framing)); + return frameResource(found, framing); } - return applyLegacyGetShape(entities[(reference as any).id] || (skipSelfReturn ? null : reference)); + return entities[(reference as any).id] || (skipSelfReturn ? null : reference); } select(selector: (state: IIIFStore) => R): R { @@ -425,20 +322,12 @@ export class Vault { return fn; } - loadManifest( - id: string | Reference, - json?: unknown, - mapper?: (resource: any) => any - ): Promise { + loadManifest(id: string | Reference, json?: unknown, mapper?: (resource: any) => any): Promise { const _id = typeof id === 'string' ? id : id.id; return this.load(_id, json, mapper); } - loadCollection( - id: string | Reference, - json?: unknown, - mapper?: (resource: any) => any - ): Promise { + loadCollection(id: string | Reference, json?: unknown, mapper?: (resource: any) => any): Promise { const _id = typeof id === 'string' ? id : id.id; return this.load(_id, json, mapper); } @@ -456,20 +345,12 @@ export class Vault { return this.staticFetcher(_id, json, mapper) as T | undefined; } - loadManifestSync( - id: string | Reference, - json: unknown, - mapper?: (resource: any) => any - ): ManifestNormalized | undefined { + loadManifestSync(id: string | Reference, json: unknown, mapper?: (resource: any) => any): ManifestNormalized | undefined { const _id = typeof id === 'string' ? id : id.id; return this.loadSync(_id, json, mapper); } - loadCollectionSync( - id: string | Reference, - json: unknown, - mapper?: (resource: any) => any - ): CollectionNormalized | undefined { + loadCollectionSync(id: string | Reference, json: unknown, mapper?: (resource: any) => any): CollectionNormalized | undefined { const _id = typeof id === 'string' ? id : id.id; return this.loadSync(_id, json, mapper); } @@ -517,6 +398,7 @@ export class Vault { }); } + // Pagination built on "meta". getPaginationState(resource: string | Reference): PaginationState | null { // This will return the pagination state of a resource from it's meta. @@ -544,7 +426,7 @@ export class Vault { currentLength: 0, }; - this.setMetaValue([id, '@vault/pagination', 'state'], initialState); + this.setMetaValue([id, '@vault/pagination', 'state'], initialState) return initialState; } @@ -554,10 +436,7 @@ export class Vault { return null; } - async loadNextPage( - resource: string | Reference, - json?: any - ): Promise<[PaginationState | null, CollectionNormalized | null]> { + async loadNextPage(resource: string | Reference, json?: any): Promise<[PaginationState | null, CollectionNormalized | null]> { const id = typeof resource === 'string' ? resource : resource.id; if (!id) return [null, null]; @@ -584,7 +463,7 @@ export class Vault { // 2. Make the fetch request. let collectionPage; try { - collectionPage = await this.loadCollection(nextPage, json, (mapped) => { + collectionPage = await this.loadCollection(nextPage, json, mapped => { // This is required because the page MIGHT have the same id. const { id, ['@id']: _id, ...properties } = mapped || {}; @@ -593,7 +472,7 @@ export class Vault { } return { id: nextPage, ...properties }; - }); + }) } catch (err) { const errState: PaginationState = { ...state, @@ -608,21 +487,23 @@ export class Vault { const errState: PaginationState = { ...state, isFetching: false, - error: new Error('Collection not found'), + error: new Error("Collection not found"), }; this.setMetaValue([id, '@vault/pagination', 'state'], errState); return [errState, null]; } const fullCollection = this.get(id); - const combinedItems = [...(fullCollection.items || []), ...(collectionPage.items || [])].map((resource) => ({ - id: resource.id, - type: resource.type, - })); - - this.modifyEntityField({ id, type: 'Collection' }, 'items', combinedItems); + const combinedItems = [ + ...(fullCollection.items || []), + ...(collectionPage.items || []), + ].map(resource => ({ + id: resource.id, type: resource.type + })); + + this.modifyEntityField({ id, type: "Collection" }, "items", combinedItems); const latestState = this.getPaginationState(resource); - if (!latestState) throw new Error('Pagination state not found'); + if (!latestState) throw new Error("Pagination state not found"); const successState: PaginationState = { ...latestState, isFetching: false, @@ -635,11 +516,11 @@ export class Vault { ...latestState.pages, { id: collectionPage.id, - type: 'Collection', - startIndex: (fullCollection.items || []).length, - pageLength: (collectionPage.items || []).length, + type: "Collection", + startIndex: fullCollection.items.length, + pageLength: collectionPage.items.length, order: typeof latestState.currentPageIndex === 'number' ? latestState.currentPageIndex + 1 : 0, - }, + } ], isFullyLoaded: !(collectionPage as any).next, previous: previousPage, @@ -651,6 +532,7 @@ export class Vault { return [successState, collectionPage]; } + getResourceMeta(resource: string): Partial | undefined; getResourceMeta(resource: string, metaKey: Key): T[Key] | undefined; getResourceMeta( From 38e59736425316140bde51e5c08d79b9914ab7a9 Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Mon, 16 Feb 2026 17:11:04 +0000 Subject: [PATCH 04/18] Initial Vault3 and Vault4 classes --- __tests__/vault/vault-versions.test.ts | 36 +++++++ .../utility/action-list-from-resource.ts | 30 +++++- src/vault/utility/create-fetch-helper.ts | 15 ++- src/vault/vault.ts | 96 ++++++++++++++----- 4 files changed, 142 insertions(+), 35 deletions(-) create mode 100644 __tests__/vault/vault-versions.test.ts diff --git a/__tests__/vault/vault-versions.test.ts b/__tests__/vault/vault-versions.test.ts new file mode 100644 index 0000000..659dcd2 --- /dev/null +++ b/__tests__/vault/vault-versions.test.ts @@ -0,0 +1,36 @@ +import invariant from 'tiny-invariant'; +import { describe, expect, test } from 'vitest'; +import type { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import cssManifest from '../../fixtures/cookbook/css.json'; +import { Vault, Vault3, Vault4 } from '../../src/vault'; + +describe('Vault versions', () => { + test('Vault remains backwards-compatible with Vault3 for v3 fixtures', () => { + const autoVault = new Vault(); + const vault3 = new Vault3(); + + const autoManifest = autoVault.loadSync( + cssManifest.id, + JSON.parse(JSON.stringify(cssManifest)) + ); + const v3Manifest = vault3.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + + invariant(autoManifest); + invariant(v3Manifest); + + expect(autoManifest.id).toBe(v3Manifest.id); + expect(autoManifest.type).toBe(v3Manifest.type); + expect(autoManifest.items.length).toBe(v3Manifest.items.length); + expect(autoVault.getState().iiif.mapping).toEqual(vault3.getState().iiif.mapping); + }); + + test('Vault4 can load v3 fixtures', () => { + const vault4 = new Vault4(); + const manifest = vault4.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + + invariant(manifest); + expect(manifest.id).toBe(cssManifest.id); + expect(manifest.type).toBe('Manifest'); + expect(manifest.items.length).toBeGreaterThan(0); + }); +}); diff --git a/src/vault/utility/action-list-from-resource.ts b/src/vault/utility/action-list-from-resource.ts index 8ceb0f3..e8d8f95 100644 --- a/src/vault/utility/action-list-from-resource.ts +++ b/src/vault/utility/action-list-from-resource.ts @@ -1,9 +1,20 @@ -import { normalize } from '@iiif/parser'; -import { AllActions } from '../types'; +import { normalize as normalizePresentation3 } from '@iiif/parser'; +import { normalize as normalizePresentation4 } from '@iiif/parser/presentation-4'; +import type { AllActions } from '../types'; import { addMapping, addMappings, importEntities, requestComplete, requestError, requestMismatch } from '../actions'; -export const actionListFromResource = (id: string, response: unknown): AllActions[] => { - const { entities, resource, mapping } = normalize(response); +export type ActionListFromResource = (id: string, response: unknown) => AllActions[]; + +function toActionList( + normalizeFn: (response: unknown) => { + entities: Record; + resource: { id?: string; type?: string }; + mapping: any; + }, + id: string, + response: unknown +): AllActions[] { + const { entities, resource, mapping } = normalizeFn(response); if (resource.id === undefined) { return [requestError({ id, message: 'ID is not defined in resource.' })] as AllActions[]; } @@ -18,4 +29,13 @@ export const actionListFromResource = (id: string, response: unknown): AllAction actions.push(requestComplete({ id })); // and return. return actions; -}; +} + +export const actionListFromResourceV3: ActionListFromResource = (id, response) => + toActionList(normalizePresentation3 as any, id, response); + +export const actionListFromResourceV4: ActionListFromResource = (id, response) => + toActionList(normalizePresentation4 as any, id, response); + +// Backward-compatible default used by the current Vault implementation. +export const actionListFromResource = actionListFromResourceV3; diff --git a/src/vault/utility/create-fetch-helper.ts b/src/vault/utility/create-fetch-helper.ts index 7b72ced..14270b1 100644 --- a/src/vault/utility/create-fetch-helper.ts +++ b/src/vault/utility/create-fetch-helper.ts @@ -1,4 +1,4 @@ -import { actionListFromResource } from './action-list-from-resource'; +import { actionListFromResource, type ActionListFromResource } from './action-list-from-resource'; import { resolveIfExists } from './resolve-if-exists'; import { NormalizedEntity } from '../types'; import { @@ -15,9 +15,16 @@ import { isPromise } from './is-promise'; export function createFetchHelper( vault: Vault, fetcher: (url: string, options?: T) => any | Promise, - { waitTimeout = 30 }: { waitTimeout?: number } = {} + { + waitTimeout = 30, + actionListFromResource: actionListFromResourceFn = actionListFromResource, + }: { waitTimeout?: number; actionListFromResource?: ActionListFromResource } = {} ) { - return (url: string, options?: T, mapper?: (r: any) => any): NormalizedEntity | undefined | Promise => { + return ( + url: string, + options?: T, + mapper?: (r: any) => any + ): NormalizedEntity | undefined | Promise => { const store = vault.getStore(); const state = store.getState(); @@ -108,7 +115,7 @@ export function createFetchHelper( resource.id = url; } } - const toDispatch = actionListFromResource(url, resource); + const toDispatch = actionListFromResourceFn(url, resource); vault.dispatch(batchActions({ actions: toDispatch })); return resolveIfExists(store.getState(), url); }; diff --git a/src/vault/vault.ts b/src/vault/vault.ts index d7a0c06..0874fdc 100644 --- a/src/vault/vault.ts +++ b/src/vault/vault.ts @@ -28,6 +28,11 @@ import mitt, { Emitter } from 'mitt'; import { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import { isWrapped, ReactiveWrapped, wrapObject } from './utility/objects'; import { resolveType } from './utility/resolve-type'; +import { + actionListFromResourceV3, + actionListFromResourceV4, + type ActionListFromResource, +} from './utility/action-list-from-resource'; export type VaultOptions = { reducers: Record; @@ -49,13 +54,17 @@ type AllActionsType = AllActions['type']; export type EntityRef = IIIFStore['iiif']['entities'][Ref][string]; export class Vault { - private readonly options: VaultOptions; + protected readonly options: VaultOptions; private readonly store: VaultZustandStore; private readonly emitter: Emitter; private isBatching = false; private batchQueue: AllActions[] = []; remoteFetcher: (str: string, options?: any, mapper?: (resource: any) => any) => Promise; - staticFetcher: (str: string, json: any, mapper?: (resource: any) => any) => Promise | NormalizedEntity | undefined; + staticFetcher: ( + str: string, + json: any, + mapper?: (resource: any) => any + ) => Promise | NormalizedEntity | undefined; constructor(options?: Partial, store?: VaultZustandStore) { this.options = Object.assign( @@ -74,8 +83,16 @@ export class Vault { enableDevtools: this.options.enableDevtools, }); this.emitter = mitt(); - this.remoteFetcher = createFetchHelper(this, this.options.customFetcher) as any; - this.staticFetcher = createFetchHelper(this, (id: string, json: any) => json); + this.remoteFetcher = createFetchHelper(this, this.options.customFetcher, { + actionListFromResource: this.getActionListFromResource(), + }) as any; + this.staticFetcher = createFetchHelper(this, (id: string, json: any) => json, { + actionListFromResource: this.getActionListFromResource(), + }); + } + + protected getActionListFromResource(): ActionListFromResource { + return actionListFromResourceV3; } defaultFetcher = (url: string) => { @@ -322,12 +339,20 @@ export class Vault { return fn; } - loadManifest(id: string | Reference, json?: unknown, mapper?: (resource: any) => any): Promise { + loadManifest( + id: string | Reference, + json?: unknown, + mapper?: (resource: any) => any + ): Promise { const _id = typeof id === 'string' ? id : id.id; return this.load(_id, json, mapper); } - loadCollection(id: string | Reference, json?: unknown, mapper?: (resource: any) => any): Promise { + loadCollection( + id: string | Reference, + json?: unknown, + mapper?: (resource: any) => any + ): Promise { const _id = typeof id === 'string' ? id : id.id; return this.load(_id, json, mapper); } @@ -345,12 +370,20 @@ export class Vault { return this.staticFetcher(_id, json, mapper) as T | undefined; } - loadManifestSync(id: string | Reference, json: unknown, mapper?: (resource: any) => any): ManifestNormalized | undefined { + loadManifestSync( + id: string | Reference, + json: unknown, + mapper?: (resource: any) => any + ): ManifestNormalized | undefined { const _id = typeof id === 'string' ? id : id.id; return this.loadSync(_id, json, mapper); } - loadCollectionSync(id: string | Reference, json: unknown, mapper?: (resource: any) => any): CollectionNormalized | undefined { + loadCollectionSync( + id: string | Reference, + json: unknown, + mapper?: (resource: any) => any + ): CollectionNormalized | undefined { const _id = typeof id === 'string' ? id : id.id; return this.loadSync(_id, json, mapper); } @@ -398,7 +431,6 @@ export class Vault { }); } - // Pagination built on "meta". getPaginationState(resource: string | Reference): PaginationState | null { // This will return the pagination state of a resource from it's meta. @@ -426,7 +458,7 @@ export class Vault { currentLength: 0, }; - this.setMetaValue([id, '@vault/pagination', 'state'], initialState) + this.setMetaValue([id, '@vault/pagination', 'state'], initialState); return initialState; } @@ -436,7 +468,10 @@ export class Vault { return null; } - async loadNextPage(resource: string | Reference, json?: any): Promise<[PaginationState | null, CollectionNormalized | null]> { + async loadNextPage( + resource: string | Reference, + json?: any + ): Promise<[PaginationState | null, CollectionNormalized | null]> { const id = typeof resource === 'string' ? resource : resource.id; if (!id) return [null, null]; @@ -463,7 +498,7 @@ export class Vault { // 2. Make the fetch request. let collectionPage; try { - collectionPage = await this.loadCollection(nextPage, json, mapped => { + collectionPage = await this.loadCollection(nextPage, json, (mapped) => { // This is required because the page MIGHT have the same id. const { id, ['@id']: _id, ...properties } = mapped || {}; @@ -472,7 +507,7 @@ export class Vault { } return { id: nextPage, ...properties }; - }) + }); } catch (err) { const errState: PaginationState = { ...state, @@ -487,23 +522,21 @@ export class Vault { const errState: PaginationState = { ...state, isFetching: false, - error: new Error("Collection not found"), + error: new Error('Collection not found'), }; this.setMetaValue([id, '@vault/pagination', 'state'], errState); return [errState, null]; } const fullCollection = this.get(id); - const combinedItems = [ - ...(fullCollection.items || []), - ...(collectionPage.items || []), - ].map(resource => ({ - id: resource.id, type: resource.type - })); - - this.modifyEntityField({ id, type: "Collection" }, "items", combinedItems); + const combinedItems = [...(fullCollection.items || []), ...(collectionPage.items || [])].map((resource) => ({ + id: resource.id, + type: resource.type, + })); + + this.modifyEntityField({ id, type: 'Collection' }, 'items', combinedItems); const latestState = this.getPaginationState(resource); - if (!latestState) throw new Error("Pagination state not found"); + if (!latestState) throw new Error('Pagination state not found'); const successState: PaginationState = { ...latestState, isFetching: false, @@ -516,11 +549,11 @@ export class Vault { ...latestState.pages, { id: collectionPage.id, - type: "Collection", + type: 'Collection', startIndex: fullCollection.items.length, pageLength: collectionPage.items.length, order: typeof latestState.currentPageIndex === 'number' ? latestState.currentPageIndex + 1 : 0, - } + }, ], isFullyLoaded: !(collectionPage as any).next, previous: previousPage, @@ -532,7 +565,6 @@ export class Vault { return [successState, collectionPage]; } - getResourceMeta(resource: string): Partial | undefined; getResourceMeta(resource: string, metaKey: Key): T[Key] | undefined; getResourceMeta( @@ -610,3 +642,15 @@ export class Vault { ); } } + +export class Vault3 extends Vault { + protected getActionListFromResource(): ActionListFromResource { + return actionListFromResourceV3; + } +} + +export class Vault4 extends Vault { + protected getActionListFromResource(): ActionListFromResource { + return actionListFromResourceV4; + } +} From 3a7a2cd69bf1c43a4562d9786dfea0018e2d4a9c Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Mon, 16 Feb 2026 17:23:05 +0000 Subject: [PATCH 05/18] Split out Vault3 and Vault4 implementations, handled accompanying container --- __tests__/vault/vault-aliases.test.ts | 98 +++++ __tests__/vault/vault-auto.test.ts | 44 ++ src/vault.ts | 3 + src/vault/store/reducers/entities-reducer.ts | 58 ++- src/vault/types.ts | 41 +- src/vault/utility/get-default-entities.ts | 4 + src/vault/utility/objects.ts | 12 + src/vault/vault-auto.ts | 406 +++++++++++++++++++ src/vault/vault.ts | 18 +- src/vault/vault3.ts | 9 + src/vault/vault4.ts | 9 + 11 files changed, 679 insertions(+), 23 deletions(-) create mode 100644 __tests__/vault/vault-aliases.test.ts create mode 100644 __tests__/vault/vault-auto.test.ts create mode 100644 src/vault/vault-auto.ts create mode 100644 src/vault/vault3.ts create mode 100644 src/vault/vault4.ts diff --git a/__tests__/vault/vault-aliases.test.ts b/__tests__/vault/vault-aliases.test.ts new file mode 100644 index 0000000..27b7684 --- /dev/null +++ b/__tests__/vault/vault-aliases.test.ts @@ -0,0 +1,98 @@ +import { describe, expect, test } from 'vitest'; +import { createStore } from '../../src/vault/store'; +import { entityActions } from '../../src/vault/actions'; + +describe('Vault alias compatibility', () => { + test('mirrors container aliases when importing entities', () => { + const store = createStore(); + const manifestId = 'https://example.org/manifest/alias-import'; + const accompanying = { id: 'https://example.org/canvas/a', type: 'Canvas' }; + const placeholder = { id: 'https://example.org/canvas/p', type: 'Canvas' }; + + store.dispatch( + entityActions.importEntities({ + entities: { + Manifest: { + [manifestId]: { + id: manifestId, + type: 'Manifest', + items: [], + accompanyingContainer: accompanying, + placeholderContainer: placeholder, + } as any, + }, + }, + }) + ); + + const manifest = store.getState().iiif.entities.Manifest[manifestId] as any; + expect(manifest.accompanyingContainer).toEqual(accompanying); + expect(manifest.accompanyingCanvas).toEqual(accompanying); + expect(manifest.placeholderContainer).toEqual(placeholder); + expect(manifest.placeholderCanvas).toEqual(placeholder); + }); + + test('mirrors container aliases when modifying entities', () => { + const store = createStore(); + const manifestId = 'https://example.org/manifest/alias-modify'; + const accompanyingA = { id: 'https://example.org/canvas/1', type: 'Canvas' }; + const accompanyingB = { id: 'https://example.org/canvas/2', type: 'Canvas' }; + const placeholderA = { id: 'https://example.org/canvas/3', type: 'Canvas' }; + const placeholderB = { id: 'https://example.org/canvas/4', type: 'Canvas' }; + + store.dispatch( + entityActions.importEntities({ + entities: { + Manifest: { + [manifestId]: { + id: manifestId, + type: 'Manifest', + items: [], + accompanyingCanvas: null, + placeholderCanvas: null, + } as any, + }, + }, + }) + ); + + store.dispatch( + entityActions.modifyEntityField({ + id: manifestId, + type: 'Manifest', + key: 'accompanyingCanvas', + value: accompanyingA, + }) + ); + store.dispatch( + entityActions.modifyEntityField({ + id: manifestId, + type: 'Manifest', + key: 'accompanyingContainer', + value: accompanyingB, + }) + ); + store.dispatch( + entityActions.modifyEntityField({ + id: manifestId, + type: 'Manifest', + key: 'placeholderCanvas', + value: placeholderA, + }) + ); + store.dispatch( + entityActions.modifyEntityField({ + id: manifestId, + type: 'Manifest', + key: 'placeholderContainer', + value: placeholderB, + }) + ); + + const manifest = store.getState().iiif.entities.Manifest[manifestId] as any; + expect(manifest.accompanyingCanvas).toEqual(accompanyingB); + expect(manifest.accompanyingContainer).toEqual(accompanyingB); + expect(manifest.placeholderCanvas).toEqual(placeholderB); + expect(manifest.placeholderContainer).toEqual(placeholderB); + }); +}); diff --git a/__tests__/vault/vault-auto.test.ts b/__tests__/vault/vault-auto.test.ts new file mode 100644 index 0000000..02ddd9f --- /dev/null +++ b/__tests__/vault/vault-auto.test.ts @@ -0,0 +1,44 @@ +import invariant from 'tiny-invariant'; +import { describe, expect, test } from 'vitest'; +import cssManifest from '../../fixtures/cookbook/css.json'; +import p4SceneManifest from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; +import type { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import { VaultAuto } from '../../src/vault'; + +describe('VaultAuto', () => { + test('starts in v3 mode by default', () => { + const vault = new VaultAuto(); + expect(vault.getVersion()).toBe(3); + expect(vault.isPresentation4()).toBe(false); + expect(vault.v4).toBeUndefined(); + }); + + test('stays on v3 for v3 fixtures', () => { + const vault = new VaultAuto(); + const manifest = vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + invariant(manifest); + + expect(manifest.id).toBe(cssManifest.id); + expect(vault.getVersion()).toBe(3); + expect(vault.v4).toBeUndefined(); + }); + + test('switches to v4 when Scene is loaded and opt-in is enabled', () => { + const vault = new VaultAuto({ enablePresentation4: true }); + + const v3Manifest = vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + invariant(v3Manifest); + + const v4Manifest = vault.loadSync(p4SceneManifest.id, JSON.parse(JSON.stringify(p4SceneManifest))); + invariant(v4Manifest); + + expect(vault.getVersion()).toBe(4); + expect(vault.isPresentation4()).toBe(true); + expect(vault.v4).toBeDefined(); + + // Ensure replay kept earlier loaded v3 resources available after switch. + const replayedV3Manifest = vault.get(cssManifest.id); + expect(replayedV3Manifest).toBeTruthy(); + expect((replayedV3Manifest as any).id).toBe(cssManifest.id); + }); +}); diff --git a/src/vault.ts b/src/vault.ts index d9ad15b..935c01a 100644 --- a/src/vault.ts +++ b/src/vault.ts @@ -1,3 +1,6 @@ export * from './vault/vault'; +export * from './vault/vault3'; +export * from './vault/vault4'; +export * from './vault/vault-auto'; export * from './vault/global-vault'; export * from './vault/types'; diff --git a/src/vault/store/reducers/entities-reducer.ts b/src/vault/store/reducers/entities-reducer.ts index 2a8c83b..21cc6d1 100644 --- a/src/vault/store/reducers/entities-reducer.ts +++ b/src/vault/store/reducers/entities-reducer.ts @@ -22,6 +22,55 @@ import { getDefaultEntities } from '../../utility'; import { isReferenceList } from '../../utility/is-reference-list'; import { quickMerge } from '../../utility/quick-merge'; +const aliasFields = { + accompanyingCanvas: 'accompanyingContainer', + accompanyingContainer: 'accompanyingCanvas', + placeholderCanvas: 'placeholderContainer', + placeholderContainer: 'placeholderCanvas', +} as const; + +function mirrorContainerAliases(entity: any) { + if (!entity || typeof entity !== 'object' || Array.isArray(entity)) { + return entity; + } + + const hasAccompanyingContainer = Object.prototype.hasOwnProperty.call(entity, 'accompanyingContainer'); + const hasPlaceholderContainer = Object.prototype.hasOwnProperty.call(entity, 'placeholderContainer'); + + if (!hasAccompanyingContainer && !hasPlaceholderContainer) { + return entity; + } + + const next = { ...entity }; + + if (hasAccompanyingContainer) { + const accompanyingValue = entity.accompanyingContainer; + next.accompanyingCanvas = accompanyingValue; + } + + if (hasPlaceholderContainer) { + const placeholderValue = entity.placeholderContainer; + next.placeholderCanvas = placeholderValue; + } + + return next; +} + +function mirrorAliasFieldValues(entity: Record, values: Record) { + const mirrored = { ...values }; + for (const key of Object.keys(values)) { + const alias = aliasFields[key as keyof typeof aliasFields]; + if (alias) { + const keyIsV4Field = key === 'accompanyingContainer' || key === 'placeholderContainer'; + const aliasExistsOnEntity = Object.prototype.hasOwnProperty.call(entity, alias); + if (keyIsV4Field || aliasExistsOnEntity) { + mirrored[alias] = values[key]; + } + } + } + return mirrored; +} + function payload(action: T): T['payload'] { return action.payload || {}; } @@ -61,14 +110,15 @@ function numberOr(a: number | undefined, b: number): number { } export const entitiesReducer = (state: Entities = getDefaultEntities(), action: EntityActions): Entities => { - const updateField = (entity: any, values: any) => { + const updateField = (entity: any, values: Record) => { + const mirroredValues = mirrorAliasFieldValues(entity, values); return { ...state, [(payload(action) as any).type]: { ...((state as any)[(payload(action) as any).type] as any), [(payload(action) as any).id]: { ...entity, - ...values, + ...mirroredValues, }, }, }; @@ -245,7 +295,9 @@ export const entitiesReducer = (state: Entities = getDefaultEntities(), action: if (entities && ids) { for (const id of ids) { changed = true; - newEntities[id] = state[key][id] ? quickMerge(state[key][id], entities[id]) : entities[id]; + newEntities[id] = mirrorContainerAliases( + state[key][id] ? quickMerge(state[key][id], entities[id]) : entities[id] + ); } if (changed) { toReturn[key] = newEntities as any; diff --git a/src/vault/types.ts b/src/vault/types.ts index e4e8ebd..16303d5 100644 --- a/src/vault/types.ts +++ b/src/vault/types.ts @@ -32,6 +32,12 @@ declare global { interface A {} } +export type GenericNormalizedEntity = { + id: string; + type: string; + [key: string]: unknown; +}; + export type MetaState = Record>>; export type RequestState = { @@ -76,7 +82,8 @@ export type NormalizedEntity = | RangeNormalized | ServiceNormalized | ResourceProviderNormalized - | Selector; + | Selector + | GenericNormalizedEntity; export type RefToNormalized = Ref['type'] extends 'Manifest' ? ManifestNormalized @@ -98,7 +105,15 @@ export type RefToNormalized = Ref['type'] extends ? ResourceProviderNormalized : Ref['type'] extends 'Collection' ? CollectionNormalized - : any; + : Ref['type'] extends 'Timeline' + ? GenericNormalizedEntity + : Ref['type'] extends 'Scene' + ? GenericNormalizedEntity + : Ref['type'] extends 'Quantity' + ? GenericNormalizedEntity + : Ref['type'] extends 'Transform' + ? GenericNormalizedEntity + : any; export type RefToFull = Ref['type'] extends 'Manifest' ? Manifest @@ -120,7 +135,15 @@ export type RefToFull = Ref['type'] extends 'Mani ? ResourceProvider : Ref['type'] extends 'Collection' ? Collection - : any; + : Ref['type'] extends 'Timeline' + ? GenericNormalizedEntity + : Ref['type'] extends 'Scene' + ? GenericNormalizedEntity + : Ref['type'] extends 'Quantity' + ? GenericNormalizedEntity + : Ref['type'] extends 'Transform' + ? GenericNormalizedEntity + : any; export type Entities = { Collection: { @@ -156,6 +179,18 @@ export type Entities = { Agent: { [id: string]: ResourceProviderNormalized; }; + Timeline: { + [id: string]: GenericNormalizedEntity; + }; + Scene: { + [id: string]: GenericNormalizedEntity; + }; + Quantity: { + [id: string]: GenericNormalizedEntity; + }; + Transform: { + [id: string]: GenericNormalizedEntity; + }; }; export type EntityStore = { diff --git a/src/vault/utility/get-default-entities.ts b/src/vault/utility/get-default-entities.ts index 027a581..fd8981a 100644 --- a/src/vault/utility/get-default-entities.ts +++ b/src/vault/utility/get-default-entities.ts @@ -13,5 +13,9 @@ export function getDefaultEntities(): Entities { Service: {}, Selector: {}, Agent: {}, + Timeline: {}, + Scene: {}, + Quantity: {}, + Transform: {}, }; } diff --git a/src/vault/utility/objects.ts b/src/vault/utility/objects.ts index d291c76..4c11d58 100644 --- a/src/vault/utility/objects.ts +++ b/src/vault/utility/objects.ts @@ -74,6 +74,8 @@ export type ReactiveWrapped = {} & WrappedObject & | 'supplementary' | 'homepage' | 'thumbnail' + | 'placeholderContainer' + | 'accompanyingContainer' | 'placeholderCanvas' | 'accompanyingCanvas' | 'provider' @@ -96,6 +98,12 @@ export type ReactiveWrapped = {} & WrappedObject & : never; homepage: Full extends { homepage: (infer A)[] } ? ReactiveWrapped[] : never; thumbnail: Full extends { thumbnail: (infer A)[] } ? ReactiveWrapped[] : never; + placeholderContainer: Full extends { placeholderContainer: (infer A)[] } + ? ReactiveWrapped[] + : never; + accompanyingContainer: Full extends { accompanyingContainer: (infer A)[] } + ? ReactiveWrapped[] + : never; placeholderCanvas: Full extends { placeholderCanvas: (infer A)[] } ? ReactiveWrapped[] : never; @@ -203,6 +211,8 @@ function createPrototype(vault: Vault, reactive = false, parent?: string) supplementary: that.supplementary, homepage: that.homepage, thumbnail: that.thumbnail, + placeholderContainer: that.placeholderContainer, + accompanyingContainer: that.accompanyingContainer, placeholderCanvas: that.placeholderCanvas, accompanyingCanvas: that.accompanyingCanvas, provider: that.provider, @@ -236,6 +246,8 @@ function createPrototype(vault: Vault, reactive = false, parent?: string) // Descriptive defineProperty('thumbnail', prototype, vault); + defineProperty('placeholderContainer', prototype, vault, false); + defineProperty('accompanyingContainer', prototype, vault, false); defineProperty('placeholderCanvas', prototype, vault, false); defineProperty('accompanyingCanvas', prototype, vault, false); defineProperty('provider', prototype, vault); diff --git a/src/vault/vault-auto.ts b/src/vault/vault-auto.ts new file mode 100644 index 0000000..1ce3722 --- /dev/null +++ b/src/vault/vault-auto.ts @@ -0,0 +1,406 @@ +import type { Collection, Manifest, Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; +import type { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import type { BatchAction } from './actions'; +import type { ActionFromType, AllActions, Entities, IIIFStore, NormalizedEntity, PaginationState, RefToNormalized, RequestState } from './types'; +import { VaultZustandStore } from './store'; +import type { ReactiveWrapped } from './utility/objects'; +import { Vault, type GetObjectOptions, type GetOptions, type VaultOptions } from './vault'; +import { Vault3 } from './vault3'; +import { Vault4 } from './vault4'; +import { SerializeConfig } from '@iiif/parser'; + +type VaultAutoLoadJournalEntry = { + id: string; + resource: unknown; +}; + +export type VaultAutoOptions = Partial & { + enablePresentation4?: boolean; + switchOnScene?: boolean; + onVersionSwitch?: (from: 3, to: 4, context: { triggerId: string }) => void; +}; + +function cloneForReplay(value: T): T { + if (typeof structuredClone === 'function') { + return structuredClone(value); + } + return JSON.parse(JSON.stringify(value)); +} + +function hasSceneResource(input: unknown): boolean { + const seen = new Set(); + const queue: unknown[] = [input]; + + while (queue.length) { + const current = queue.shift(); + if (!current || typeof current !== 'object') { + continue; + } + if (seen.has(current)) { + continue; + } + seen.add(current); + + if ((current as any).type === 'Scene') { + return true; + } + + if (Array.isArray(current)) { + for (const item of current) { + queue.push(item); + } + continue; + } + + for (const value of Object.values(current as Record)) { + queue.push(value); + } + } + + return false; +} + +export class VaultAuto { + private readonly options: Required> & + Omit; + private readonly vaultOptions: Partial; + private readonly fetcher: (url: string, options: T) => unknown | Promise; + private readonly vault3: Vault3; + private vault4Internal?: Vault4; + private activeVault: Vault3 | Vault4; + private loadJournal: VaultAutoLoadJournalEntry[] = []; + + constructor(options?: VaultAutoOptions) { + const { + enablePresentation4 = false, + switchOnScene = true, + onVersionSwitch, + reducers, + defaultState, + customFetcher, + enableDevtools, + } = options || {}; + + this.options = { + enablePresentation4, + switchOnScene, + onVersionSwitch, + reducers, + defaultState, + customFetcher, + enableDevtools, + }; + + this.vaultOptions = { + reducers, + defaultState, + customFetcher, + enableDevtools, + }; + + this.fetcher = customFetcher || this.defaultFetcher; + this.vault3 = new Vault3(this.vaultOptions); + this.activeVault = this.vault3; + } + + get v4(): Vault4 | undefined { + return this.vault4Internal; + } + + getVersion(): 3 | 4 { + return this.vault4Internal ? 4 : 3; + } + + isPresentation4(): boolean { + return this.getVersion() === 4; + } + + private getVault(): Vault3 | Vault4 { + return this.activeVault; + } + + private defaultFetcher = (url: string) => { + return fetch(url).then((r) => { + if (r.status === 200) { + return r.json(); + } + const err = new Error(`${r.status} ${r.statusText}`); + err.name = `HTTPError`; + throw err; + }); + }; + + private shouldUseAutoLoadPath(): boolean { + return this.options.enablePresentation4 && !this.vault4Internal; + } + + private pushToJournal(id: string, resource: unknown) { + this.loadJournal.push({ + id, + resource: cloneForReplay(resource), + }); + } + + private maybeSwitchToV4(id: string, resource: unknown) { + if (!this.options.enablePresentation4 || !this.options.switchOnScene || this.vault4Internal) { + return; + } + if (!hasSceneResource(resource)) { + return; + } + this.switchToV4(id); + } + + private switchToV4(triggerId: string) { + if (this.vault4Internal) { + this.activeVault = this.vault4Internal; + return; + } + + const nextVault = new Vault4(this.vaultOptions); + for (const loaded of this.loadJournal) { + nextVault.loadSync(loaded.id, cloneForReplay(loaded.resource)); + } + + this.vault4Internal = nextVault; + this.activeVault = nextVault; + if (this.options.onVersionSwitch) { + this.options.onVersionSwitch(3, 4, { triggerId }); + } + } + + batch(cb: (vault: any) => void) { + return this.getVault().batch(cb as any); + } + + async asyncBatch(cb: (vault: any) => Promise | void) { + return this.getVault().asyncBatch(cb as any); + } + + modifyEntityField(entity: Reference, key: string, value: any) { + return this.getVault().modifyEntityField(entity, key, value); + } + + dispatch(action: AllActions | BatchAction) { + return this.getVault().dispatch(action); + } + + on( + event: Type | `after:${Type}`, + handler: (ctx: { action: ActionFromType; state: IIIFStore }) => void + ) { + return this.getVault().on(event, handler); + } + + serialize(entity: Reference, config: SerializeConfig) { + return this.getVault().serialize(entity, config); + } + + toPresentation2(entity: Reference) { + return this.getVault().toPresentation2(entity); + } + + toPresentation3(entity: Reference) { + return this.getVault().toPresentation3(entity); + } + + hydrate( + reference: string | R | NormalizedEntity | string[] | R[] | NormalizedEntity[], + type?: string | GetOptions, + options?: GetOptions + ): RefToNormalized | RefToNormalized[] { + return this.getVault().hydrate(reference as any, type as any, options); + } + + get( + reference: + | string + | R + | NormalizedEntity + | string[] + | R[] + | NormalizedEntity[] + | SpecificResource + | SpecificResource[], + type?: string | GetOptions, + options?: GetOptions + ): RefToNormalized | RefToNormalized[] { + return this.getVault().get(reference as any, type as any, options as any); + } + + select(selector: (state: IIIFStore) => R): R { + return this.getVault().select(selector); + } + + getStore(): VaultZustandStore { + return this.getVault().getStore(); + } + + getState(): IIIFStore { + return this.getVault().getState(); + } + + deep(input?: any, prev?: any) { + return this.getVault().deep(input, prev); + } + + loadManifest( + id: string | Reference, + json?: unknown, + mapper?: (resource: any) => any + ): Promise { + const _id = typeof id === 'string' ? id : id.id; + return this.load(_id, json, mapper); + } + + loadCollection( + id: string | Reference, + json?: unknown, + mapper?: (resource: any) => any + ): Promise { + const _id = typeof id === 'string' ? id : id.id; + return this.load(_id, json, mapper); + } + + async load(id: string | Reference, json?: unknown, mapper?: (resource: any) => any): Promise { + const _id = typeof id === 'string' ? id : id.id; + + if (!this.shouldUseAutoLoadPath()) { + return this.getVault().load(_id, json, mapper); + } + + if (typeof json === 'undefined') { + const remote = await this.fetcher(_id, {}); + return this.loadSync(_id, remote, mapper); + } + + return this.loadSync(_id, json, mapper); + } + + loadSync(id: string | Reference, json: unknown, mapper?: (resource: any) => any): T | undefined { + const _id = typeof id === 'string' ? id : id.id; + + if (!this.shouldUseAutoLoadPath()) { + return this.getVault().loadSync(_id, json, mapper); + } + + const mapped = mapper ? mapper(json) : json; + this.pushToJournal(_id, mapped); + this.maybeSwitchToV4(_id, mapped); + + return this.getVault().loadSync(_id, mapped); + } + + loadManifestSync( + id: string | Reference, + json: unknown, + mapper?: (resource: any) => any + ): ManifestNormalized | undefined { + const _id = typeof id === 'string' ? id : id.id; + return this.loadSync(_id, json, mapper); + } + + loadCollectionSync( + id: string | Reference, + json: unknown, + mapper?: (resource: any) => any + ): CollectionNormalized | undefined { + const _id = typeof id === 'string' ? id : id.id; + return this.loadSync(_id, json, mapper); + } + + areInputsEqual(newInputs: readonly unknown[] | unknown, lastInputs: readonly unknown[] | unknown) { + return this.getVault().areInputsEqual(newInputs, lastInputs); + } + + subscribe( + selector: (state: IIIFStore) => T, + subscription: (state: T, vault: Vault) => void, + skipInitial?: boolean + ): () => void; + subscribe(subscription: (state: T, vault: Vault) => void, skipInitial?: boolean): () => void; + subscribe( + selector: ((state: IIIFStore) => T) | ((state: T, vault: Vault) => void), + subscription?: ((state: T, vault: Vault) => void) | boolean, + skipInitial?: boolean + ): () => void { + return (this.getVault() as any).subscribe(selector as any, subscription as any, skipInitial as any); + } + + async ensureLoaded(_id: string | Reference): Promise { + return this.getVault().ensureLoaded(_id); + } + + requestStatus(id: string): RequestState[any] | undefined { + return this.getVault().requestStatus(id); + } + + getPaginationState(resource: string | Reference): PaginationState | null { + return this.getVault().getPaginationState(resource); + } + + async loadNextPage( + resource: string | Reference, + json?: any + ): Promise<[PaginationState | null, CollectionNormalized | null]> { + return this.getVault().loadNextPage(resource, json); + } + + getResourceMeta(resource: string): Partial | undefined; + getResourceMeta(resource: string, metaKey: Key): T[Key] | undefined; + getResourceMeta( + resource: string, + metaKey?: Key + ): Partial | T[Key] | undefined { + return this.getVault().getResourceMeta(resource, metaKey as any); + } + + getObject( + reference: string | Partial, + type?: string | GetObjectOptions, + options?: GetObjectOptions + ): RefToNormalized; + getObject( + reference: string | R | NormalizedEntity, + type?: string | GetObjectOptions, + options?: GetObjectOptions + ): RefToNormalized { + return this.getVault().getObject(reference as any, type as any, options as any); + } + + async loadObject( + id: string | Reference, + json?: any + ): Promise> { + return this.getVault().loadObject(id, json); + } + + async loadManifestObject( + id: string | Reference, + json?: any + ): Promise> { + return this.getVault().loadManifestObject(id, json); + } + + async loadCollectionObject( + id: string | Reference, + json?: any + ): Promise> { + return this.getVault().loadCollectionObject(id, json); + } + + wrapObject(objectType: Reference) { + return this.getVault().wrapObject(objectType); + } + + isWrapped(object: any) { + return this.getVault().isWrapped(object); + } + + setMetaValue( + [id, meta, key]: [string, string, string], + newValueOrUpdate: Value | ((oldValue: Value | undefined) => Value) + ) { + return this.getVault().setMetaValue([id, meta, key], newValueOrUpdate); + } +} diff --git a/src/vault/vault.ts b/src/vault/vault.ts index 0874fdc..b08b87a 100644 --- a/src/vault/vault.ts +++ b/src/vault/vault.ts @@ -28,11 +28,7 @@ import mitt, { Emitter } from 'mitt'; import { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import { isWrapped, ReactiveWrapped, wrapObject } from './utility/objects'; import { resolveType } from './utility/resolve-type'; -import { - actionListFromResourceV3, - actionListFromResourceV4, - type ActionListFromResource, -} from './utility/action-list-from-resource'; +import { actionListFromResourceV3, type ActionListFromResource } from './utility/action-list-from-resource'; export type VaultOptions = { reducers: Record; @@ -642,15 +638,3 @@ export class Vault { ); } } - -export class Vault3 extends Vault { - protected getActionListFromResource(): ActionListFromResource { - return actionListFromResourceV3; - } -} - -export class Vault4 extends Vault { - protected getActionListFromResource(): ActionListFromResource { - return actionListFromResourceV4; - } -} diff --git a/src/vault/vault3.ts b/src/vault/vault3.ts new file mode 100644 index 0000000..c5aee0e --- /dev/null +++ b/src/vault/vault3.ts @@ -0,0 +1,9 @@ +import type { ActionListFromResource } from './utility/action-list-from-resource'; +import { actionListFromResourceV3 } from './utility/action-list-from-resource'; +import { Vault } from './vault'; + +export class Vault3 extends Vault { + protected getActionListFromResource(): ActionListFromResource { + return actionListFromResourceV3; + } +} diff --git a/src/vault/vault4.ts b/src/vault/vault4.ts new file mode 100644 index 0000000..d7a428d --- /dev/null +++ b/src/vault/vault4.ts @@ -0,0 +1,9 @@ +import type { ActionListFromResource } from './utility/action-list-from-resource'; +import { actionListFromResourceV4 } from './utility/action-list-from-resource'; +import { Vault } from './vault'; + +export class Vault4 extends Vault { + protected getActionListFromResource(): ActionListFromResource { + return actionListFromResourceV4; + } +} From ef6004d76d7e89d9034e89e8e1f2a32f49c53783 Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Mon, 16 Feb 2026 17:26:08 +0000 Subject: [PATCH 06/18] Updated the plan --- VAULT-3-4.md | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/VAULT-3-4.md b/VAULT-3-4.md index 6f5afb2..9d6d3d6 100644 --- a/VAULT-3-4.md +++ b/VAULT-3-4.md @@ -3,7 +3,7 @@ ## Goals 1. Restore backwards compatibility for all existing projects using `Vault` today. -2. Introduce explicit `Vault3` and `Vault4` implementations. +2. Keep `Vault` as the v3 implementation and introduce `Vault4`. 3. Introduce a default `VaultAuto` (exported as `Vault`) that: - starts in v3 mode, - can opt-in to v4 switching, @@ -20,14 +20,14 @@ ### Classes -1. `Vault3` +1. `Vault` - Uses Presentation 3 normalization/serialization path. - Keeps current v3-compatible behavior as baseline. 2. `Vault4` - Uses Presentation 4 normalization/serialization path. - Accepts v3 inputs by upgrading/parsing into v4-normalized state. -3. `VaultAuto` (default export alias as `Vault`) - - Starts with an internal `Vault3` instance. +3. `VaultAuto` + - Starts with an internal `Vault` instance. - Optionally enables automatic switching to `Vault4`. - Exposes `v4` accessor for typed access when app code knows Scene is present. @@ -60,7 +60,8 @@ Proposed options for `VaultAuto`: 2. No automatic switch without explicit opt-in (`enablePresentation4`). 3. Scene presence is the switching trigger in `VaultAuto`. 4. `Vault4` loading v3 resources must preserve output compatibility for existing helpers and workflows. -5. Legacy property aliases (e.g. `accompanyingCanvas` vs `accompanyingContainer`) must be mirrored in normalized entities and action-level mutations. +5. `Vault4` methods must be type-safe across the existing vault API surface. +6. Legacy property aliases (e.g. `accompanyingCanvas` vs `accompanyingContainer`) must be mirrored in normalized entities and action-level mutations. ## Migration strategy (VaultAuto internal switch) @@ -71,7 +72,7 @@ Proposed options for `VaultAuto`: 2. On switch trigger: - instantiate `Vault4`, - replay journal through `Vault4.loadSync` / `Vault4.load`, - - swap active implementation pointer from `Vault3` to `Vault4`, + - swap active implementation pointer from `Vault` to `Vault4`, - emit version-switch event. 3. Keep this replay strategy first; optimize later only if needed. @@ -96,13 +97,13 @@ Snapshot-driven parity testing across **all fixtures**. ### Test groups -1. `Vault3` baseline snapshots: +1. `Vault` baseline snapshots: - load fixture -> capture resolved top-level object, - capture normalized store summary (entities/mapping shape), - capture selected helper outputs. 2. `Vault4` compatibility snapshots for v3 fixtures: - - same fixture set and same snapshot shape as `Vault3`. -3. Direct parity assertions (`Vault3` vs `Vault4`) for v2/v3 fixtures: + - same fixture set and same snapshot shape as `Vault`. +3. Direct parity assertions (`Vault` vs `Vault4`) for v2/v3 fixtures: - deep equality on compatibility projections, - allowed-difference list for known renamed fields. 4. `VaultAuto` behavior: @@ -134,18 +135,22 @@ To reduce noise, snapshot normalized projections rather than entire internal sta - Undo current partial Vault migration changes. - Re-establish green baseline on existing tests. 2. `Phase 1: Split classes` - - Introduce `Vault3` and `Vault4` classes. - - Keep `Vault` export as compatibility wrapper. + - Keep `Vault` as the v3 class. + - Introduce `Vault4` as a separate class. 3. `Phase 2: Introduce VaultAuto` - Implement dual-engine wrapper and replay migration. - Add version accessors and `v4` accessor. 4. `Phase 3: Alias/mutation compatibility` - Implement field alias mirroring in normalization projections and actions. - Add targeted tests for alias writes/reads. -5. `Phase 4: Fixture parity suite` +5. `Phase 4: Vault4 type-safety hardening` + - Audit `Vault4` method signatures (`get`, `hydrate`, `load*`, `serialize*`, `getObject`, `loadObject`, `subscribe`, pagination/meta helpers). + - Remove `any`-based fallbacks where avoidable and align return types with v3 compatibility contracts. + - Add dedicated type-focused tests (compile-time assertions) for common usage paths. +6. `Phase 5: Fixture parity suite` - Add full snapshot + parity matrix. - Gate with CI. -6. `Phase 5: Helper dual-compat` +7. `Phase 6: Helper dual-compat` - Update helper internals for v3/v4 compatibility. - Add `v4` helper subpath for v4-specific functionality. From be4942a1410ad5b96b7d4ac1cdb518784e7a8d08 Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Thu, 19 Feb 2026 00:02:17 +0000 Subject: [PATCH 07/18] Upated to new Normalized types --- MIGRATION-PLAN.md | 956 ---------------------- VAULT-3-4.md | 174 ---- __tests__/vault/store.test.ts | 10 +- __tests__/vault/vault-auto.test.ts | 14 +- __tests__/vault/vault-versions.test.ts | 44 +- __tests__/vault/vault4-types.test.ts | 63 ++ package.json | 2 +- pnpm-lock.yaml | 15 +- src/vault.ts | 1 - src/vault/types.ts | 84 +- src/vault/utility/default-fetcher.ts | 11 + src/vault/utility/get-default-entities.ts | 4 +- src/vault/utility/quick-merge.ts | 36 +- src/vault/utility/resolve-type.ts | 19 +- src/vault/vault-auto.ts | 191 +++-- src/vault/vault.ts | 13 +- src/vault/vault3.ts | 9 - src/vault/vault4.ts | 645 ++++++++++++++- 18 files changed, 978 insertions(+), 1313 deletions(-) delete mode 100644 MIGRATION-PLAN.md delete mode 100644 VAULT-3-4.md create mode 100644 __tests__/vault/vault4-types.test.ts create mode 100644 src/vault/utility/default-fetcher.ts delete mode 100644 src/vault/vault3.ts diff --git a/MIGRATION-PLAN.md b/MIGRATION-PLAN.md deleted file mode 100644 index ddb956e..0000000 --- a/MIGRATION-PLAN.md +++ /dev/null @@ -1,956 +0,0 @@ -# IIIF Helpers → Presentation 4 Migration Plan - -## Overview - -This document outlines the plan for migrating `@iiif/helpers` (Vault) to support IIIF Presentation 4 internally, while maintaining full backwards compatibility for existing consumer code. - -**Core principle**: Code written against iiif-helpers today MUST NOT break. Users just update the libraries. - -**Parser dependency**: `pnpm i https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60` - ---- - -## Table of Contents - -1. [Architecture Summary](#1-architecture-summary) -2. [Breaking Changes Inventory](#2-breaking-changes-inventory) -3. [Phase 1: Dependency & Type Migration](#phase-1-dependency--type-migration) -4. [Phase 2: Store & Entity Expansion](#phase-2-store--entity-expansion) -5. [Phase 3: Normalizer Swap (P3 → P4)](#phase-3-normalizer-swap-p3--p4) -6. [Phase 4: Canvas Compatibility Layer](#phase-4-canvas-compatibility-layer) -7. [Phase 5: Serialization & Export](#phase-5-serialization--export) -8. [Phase 6: Fixtures & Smoke Tests](#phase-6-fixtures--smoke-tests) -9. [Phase 7: Type Package Removal](#phase-7-type-package-removal) -10. [Testing Strategy](#testing-strategy) -11. [Potential Parser Changes Needed](#potential-parser-changes-needed) -12. [Rollout Checklist](#rollout-checklist) - ---- - -## 1. Architecture Summary - -### Current Flow (P3) -``` -Input JSON (P2/P3) → normalize() [P3] → Entities Store (P3 shape) → Vault.get() → P3 Normalized types - → serialize() → P2 or P3 JSON -``` - -### Target Flow (P4) -``` -Input JSON (P2/P3/P4) → normalize() [P4] → Entities Store (P4 shape) → Vault.get() → P4 Normalized types - → serialize() → P2, P3, or P4 JSON -``` - -### Key Structural Differences: P3 vs P4 Entities - -| P3 Store Keys | P4 Store Keys | Notes | -|---|---|---| -| Collection | Collection | Same | -| Manifest | Manifest | Same | -| Canvas | Canvas | Still exists, but now shares space with Timeline/Scene | -| — | Timeline | **NEW** - was a Canvas with duration in P3 | -| — | Scene | **NEW** - 3D container, no P3 equivalent | -| AnnotationPage | AnnotationPage | Same | -| AnnotationCollection | AnnotationCollection | Same | -| Annotation | Annotation | `motivation`/`target` now always arrays | -| ContentResource | ContentResource | Gains Model, Dataset, scene components | -| Range | Range | Items can reference Timeline/Scene | -| Service | Service | Same | -| Selector | Selector | Gains PointSelector, WktSelector, AnimationSelector | -| Agent | Agent | Was `ResourceProvider` in P3 normalized | -| — | Quantity | **NEW** - spatial/temporal scales | -| — | Transform | **NEW** - RotateTransform, ScaleTransform, TranslateTransform | - -### Key Property Renames (P3 → P4) -- `placeholderCanvas` → `placeholderContainer` -- `accompanyingCanvas` → `accompanyingContainer` -- `motivation: string` → `motivation: string[]` -- `target: string | object` → `target: object[]` -- `body: object` → `body: object[]` - ---- - -## 2. Breaking Changes Inventory - -### Changes in Vault (user-facing, MUST be backwards compatible) - -| Area | Change | Compat Strategy | -|---|---|---| -| `Vault.get({type:'Canvas'})` | P4 may store as Timeline/Scene | Fallback search across container stores | -| `Vault.get()` return types | Returns P4 normalized shape | Type aliases + compatible shapes | -| `Entities` type | Gains Timeline, Scene, Quantity, Transform | Additive — existing keys unchanged | -| `toPresentation3()` | Now serializes from P4 store | Uses P4's `serializeConfigPresentation3` (handles downgrade) | -| Annotation shapes | `motivation`/`target` always arrays | Existing code may assume string; P3 normalize already arrays | -| `placeholderCanvas` | Renamed to `placeholderContainer` | Add getter alias or keep both | - -### Potential Parser Changes Needed - -See [Section 11](#potential-parser-changes-needed) for details. - ---- - -## Phase 1: Dependency & Type Migration - -### Goal -Replace `@iiif/presentation-3`, `@iiif/presentation-3-normalized`, and `@iiif/presentation-2` type packages with types from `@iiif/parser`. - -### Tasks - -#### 1.1 Update `package.json` - -```json -{ - "peerDependencies": { - "@iiif/parser": "^2.2.9" - }, - "dependencies": { - "@types/geojson": "7946.0.13" - } -} -``` - -**Remove** from `dependencies`: -- `@iiif/presentation-2` -- `@iiif/presentation-3` -- `@iiif/presentation-3-normalized` - -**Remove** from `resolutions` and `overrides`: -- All `@iiif/presentation-3` overrides - -#### 1.2 Create Import Mapping Guide - -All imports must be remapped: - -| Old Import | New Import | -|---|---| -| `from '@iiif/presentation-3'` | `from '@iiif/parser/presentation-3/types'` | -| `from '@iiif/presentation-3-normalized'` | `from '@iiif/parser/presentation-3-normalized/types'` | -| `from '@iiif/parser'` | `from '@iiif/parser'` (unchanged, but now also has P4) | -| `from '@iiif/parser/upgrader'` | `from '@iiif/parser/upgrader'` (unchanged) | - -Specific type remappings: -- `ResourceProvider` → still exported from `@iiif/parser/presentation-3/types` -- `ResourceProviderNormalized` → still exported from `@iiif/parser/presentation-3-normalized/types` - -#### 1.3 Files to Update (import paths) - -Every file importing from the old packages needs updating. Key files: - -**Direct `@iiif/presentation-3` imports** (~20 files): -- `src/vault/types.ts` — Core type definitions -- `src/vault/vault.ts` — Vault class -- `src/vault/store/reducers/entities-reducer.ts` -- `src/vault/utility/is-reference-list.ts` -- `src/vault/utility/resolve-if-exists.ts` -- `src/vault/utility/action-list-from-resource.ts` -- `src/i18n.ts` -- `src/ranges.ts` -- `src/shared-utilities.ts` -- `src/annotations.ts` -- `src/content-state.ts` -- `src/events.ts` -- `src/fetch.ts` -- `src/image-service/*.ts` (many files) -- `src/painting-annotations/*.ts` -- `src/annotation-targets/*.ts` -- `src/sequences.ts` -- `src/thumbnail.ts` -- `src/transcriptions.ts` -- `src/nav-date.ts` -- `src/search1.ts` - -**Direct `@iiif/presentation-3-normalized` imports** (~10 files): -- `src/vault/types.ts` -- `src/vault/vault.ts` -- `src/painting-annotations/helper.ts` -- `src/painting-annotations/types.ts` -- `src/ranges.ts` -- `src/sequences.ts` -- `src/thumbnail.ts` -- `src/transcriptions.ts` -- `src/nav-date.ts` -- `src/search1.ts` - -#### 1.4 Verification - -```bash -# After all imports are updated: -pnpm run typecheck -pnpm run test -``` - ---- - -## Phase 2: Store & Entity Expansion - -### Goal -Add new P4 entity stores (Timeline, Scene, Quantity, Transform) to the Vault's internal state while keeping the existing stores intact. - -### Tasks - -#### 2.1 Update `Entities` type (`src/vault/types.ts`) - -```typescript -export type Entities = { - // Existing (unchanged) - Collection: { [id: string]: CollectionNormalized }; - Manifest: { [id: string]: ManifestNormalized }; - Canvas: { [id: string]: CanvasNormalized }; - AnnotationPage: { [id: string]: AnnotationPageNormalized }; - AnnotationCollection: { [id: string]: AnnotationCollection }; - Annotation: { [id: string]: AnnotationNormalized }; - ContentResource: { [id: string]: ContentResource }; - Range: { [id: string]: RangeNormalized }; - Service: { [id: string]: any }; - Selector: { [id: string]: Selector }; - Agent: { [id: string]: ResourceProviderNormalized }; - - // NEW P4 stores - Timeline: { [id: string]: any }; // P4 Timeline container - Scene: { [id: string]: any }; // P4 Scene container (3D) - Quantity: { [id: string]: any }; // P4 Quantity (spatial/temporal scale) - Transform: { [id: string]: any }; // P4 Transform (rotate/scale/translate) -}; -``` - -> **Note**: Using `any` initially for new types to avoid coupling too tightly to P4 normalized types. These can be narrowed later once the P4 normalized type contract stabilizes. Alternatively, use `NormalizedEntityV4` from `@iiif/parser/presentation-4-normalized/types`. - -#### 2.2 Update `NormalizedEntity` union type (`src/vault/types.ts`) - -Add to the union: -```typescript -export type NormalizedEntity = - | CollectionNormalized - | ManifestNormalized - | CanvasNormalized - // ... existing ... - | TimelineNormalized // or any - | SceneNormalized // or any - | QuantityNormalized // or any - | TransformNormalized // or any - ; -``` - -#### 2.3 Update `RefToNormalized` and `RefToFull` conditional types (`src/vault/types.ts`) - -Add branches for new types: -```typescript -// In RefToNormalized: -: Ref['type'] extends 'Timeline' ? any -: Ref['type'] extends 'Scene' ? any -: Ref['type'] extends 'Quantity' ? any -: Ref['type'] extends 'Transform' ? any -``` - -#### 2.4 Update `getDefaultEntities()` (`src/vault/utility/get-default-entities.ts`) - -```typescript -export function getDefaultEntities(): Entities { - return { - Collection: {}, - Manifest: {}, - Canvas: {}, - AnnotationPage: {}, - AnnotationCollection: {}, - Annotation: {}, - ContentResource: {}, - Range: {}, - Service: {}, - Selector: {}, - Agent: {}, - // NEW - Timeline: {}, - Scene: {}, - Quantity: {}, - Transform: {}, - }; -} -``` - -#### 2.5 Update `resolveType()` (`src/vault/utility/resolve-type.ts`) - -```typescript -export function resolveType(type: string): keyof Entities { - switch (type) { - // Existing content resource mappings - case 'Image': - case 'Video': - case 'Sound': - case 'Audio': // P4 alias - case 'Model': // P4 new - case 'Dataset': // P4 (also in late P3) - case 'Text': - case 'TextualBody': - case 'Composite': - case 'List': - case 'Independents': - case 'Audience': - case 'Choice': - // P4 scene components (stored as content resources) - case 'PerspectiveCamera': - case 'OrthographicCamera': - case 'AmbientLight': - case 'DirectionalLight': - case 'PointLight': - case 'SpotLight': - case 'AmbientAudio': - case 'PointAudio': - case 'SpotAudio': - return 'ContentResource'; - - // Service types - case 'ImageService1': - case 'ImageService2': - case 'ImageService3': - return 'Service'; - - // P4 new container types - case 'Timeline': - return 'Timeline'; - case 'Scene': - return 'Scene'; - - // P4 new types - case 'Quantity': - return 'Quantity'; - - // P4 transforms - case 'Transform': - case 'RotateTransform': - case 'ScaleTransform': - case 'TranslateTransform': - return 'Transform'; - - // Selector types - case 'PointSelector': - case 'WktSelector': - case 'AnimationSelector': - case 'FragmentSelector': - case 'ImageApiSelector': - case 'SvgSelector': - return 'Selector'; - - default: - return type as any; - } -} -``` - -#### 2.6 Update `entities-reducer.ts` - -The `IMPORT_ENTITIES` case already iterates over all keys, so it will automatically handle new stores. The `updateField` helper similarly works generically. No structural changes needed — just ensure the TypeScript types align. - -#### 2.7 Update `is-reference-list.ts` - -Uses `CompatibleStore['entities']` which is generic — should work with new stores automatically after type update. - -#### 2.8 Verification - -```bash -pnpm run typecheck -pnpm run test -``` - -All existing tests should pass unchanged since new stores are empty by default and nothing references them yet. - ---- - -## Phase 3: Normalizer Swap (P3 → P4) - -### Goal -Switch Vault's internal normalizer from P3 `normalize()` to P4 `normalize()`, so all incoming resources (P2, P3, P4) are upgraded to P4 shape before storage. - -### Tasks - -#### 3.1 Update `action-list-from-resource.ts` - -This is the **critical change point**. Currently: - -```typescript -import { normalize } from '@iiif/parser'; -``` - -This imports P3's `normalize`. Change to: - -```typescript -import { normalize } from '@iiif/parser/presentation-4'; -``` - -The P4 `normalize()` already: -1. Detects source version (P2/P3/P4) -2. Upgrades through P2→P3→P4 -3. Returns `Presentation4Entities` with all new store types - -The return shape is: -```typescript -{ - entities: Presentation4Entities; // Has Timeline, Scene, Quantity, Transform - mapping: Record; - resource: { id: string; type: string }; - diagnostics: ValidationIssue[]; - sourceVersion: 2 | 3 | 4 | 'unknown'; -} -``` - -The `entities` keys match our expanded `Entities` type (after Phase 2), so `importEntities({ entities })` should work. - -#### 3.2 Entity Shape Compatibility - -**Critical concern**: The P4 normalizer stores entities with a looser shape (`NormalizedEntityV4 = { id?, type?, [key: string]: unknown }`) compared to the strongly-typed P3 normalized types (e.g., `CanvasNormalized` with explicit `width`, `height`, `items` fields). - -However, the actual data stored will have those fields — they're just not typed. The P4 normalizer preserves all fields from the input, and the upgrade from P3 ensures fields like `width`/`height` remain. - -**Key shape changes that DO happen in the P4 upgrade**: -- `Annotation.motivation`: already an array in P3 normalize → stays array -- `Annotation.target`: already expanded in P3 → stays expanded, now always array of objects -- `Annotation.body`: already expanded → now always array -- `placeholderCanvas` → `placeholderContainer` (renamed) -- `accompanyingCanvas` → `accompanyingContainer` (renamed) - -**What the P4 normalizer does that P3 didn't**: -- Canvases that only have `duration` (no width/height) may be stored as `Timeline` - - **But wait** — the P4 *upgrade* keeps the type as-is from the P3 output. It only changes to Timeline/Scene if the input explicitly says so, or if the original P4 input had those types. - - P3 manifests upgraded to P4 will keep `type: "Canvas"` on all canvases. - -#### 3.3 Mapping Compatibility - -The P4 `mapping` maps ids to store names like `"Canvas"`, `"Timeline"`, `"Scene"`, etc. Our `resolveType()` (updated in Phase 2) will correctly map these back when `Vault.get()` looks up entities. - -#### 3.4 Serializer Import Updates (`src/vault/vault.ts`) - -Currently: -```typescript -import { - serialize, - SerializeConfig, - serializeConfigPresentation2, - serializeConfigPresentation3, -} from '@iiif/parser'; -``` - -Change to import P4's serializer infrastructure: -```typescript -import { - serialize, - type SerializeConfig, - serializeConfigPresentation3, - serializeConfigPresentation4, -} from '@iiif/parser/presentation-4'; -import { - serializeConfigPresentation2, -} from '@iiif/parser'; -``` - -> **Note**: P4's `serializeConfigPresentation3` handles downgrading from P4 store back to P3 JSON (maps `placeholderContainer` back to `placeholderCanvas`, converts Timelines to Canvases, etc.). This is different from the P3 serializer's `serializeConfigPresentation3`. - -> **Breaking concern**: P4's `serializeConfigPresentation3` will throw on Scene containers (unsupported in P3). This is correct behavior — you can't downgrade a 3D scene to P3. - -#### 3.5 Update `resolve-if-exists.ts` - -Currently imports `frameResource`, `HAS_PART`, `PART_OF` from `@iiif/parser`. Need to check if P4 normalizer still uses the same framing mechanism. - -**Finding**: The P4 normalizer does NOT currently use `HAS_PART`/`PART_OF` framing. This is a **parser gap** — see [Section 11](#potential-parser-changes-needed). For now, these utilities can remain imported from `@iiif/parser` (P3 export) since `HAS_PART` is a constant string and `frameResource` is a utility function that works on any object shape. - -#### 3.6 Verification - -```bash -pnpm run typecheck -pnpm run test -``` - -Existing tests loading P2/P3 manifests should still pass because the P4 normalizer handles them. The entities stored will have a slightly different shape (P4 conventions) but the structural fields (`items`, `label`, etc.) are preserved. - ---- - -## Phase 4: Canvas Compatibility Layer - -### Goal -Ensure `vault.get({id: '...', type: 'Canvas'})` still works even when a resource has been stored as `Timeline` or `Scene` in the P4 store. - -### Tasks - -#### 4.1 Update `Vault.get()` Container Fallback - -In `src/vault/vault.ts`, the `get()` method resolves the entity store via type. Add fallback logic: - -```typescript -// After looking up entities[_type][_id] and not finding it: -const CONTAINER_TYPES = ['Canvas', 'Timeline', 'Scene'] as const; - -// If the requested type is a container type but wasn't found, -// search other container stores -if (CONTAINER_TYPES.includes(_type) && !found) { - for (const containerType of CONTAINER_TYPES) { - if (containerType === _type) continue; - const altEntities = (state.iiif.entities as any)[containerType]; - if (altEntities && altEntities[_id]) { - found = altEntities[_id]; - break; - } - } -} -``` - -This ensures: -- `get({id, type: 'Canvas'})` finds Timeline/Scene resources -- `get({id, type: 'Timeline'})` finds Canvas resources (forward compat) -- `get({id, type: 'Scene'})` finds Canvas resources - -#### 4.2 Update Mapping Fallback - -Also check the `mapping` table. If someone passes a bare ID string: -```typescript -if (typeof reference === 'string') { - const _type = resolveType(type ? type : state.iiif.mapping[reference]); - // If mapping says "Timeline" but user asked for "Canvas", that's fine -} -``` - -This already works — `resolveType` maps `"Timeline"` to `"Timeline"`, and the mapping correctly tells us where it's stored. The fallback in 4.1 handles the case where someone explicitly passes `type: 'Canvas'` but it's stored as `Timeline`. - -#### 4.3 Property Compatibility Aliases - -For backwards compatibility, when returning entities that used to be Canvases, consider adding computed properties: - -```typescript -// In Vault or a utility, when returning a container: -// If the entity has placeholderContainer but no placeholderCanvas: -if (entity.placeholderContainer && !entity.placeholderCanvas) { - entity.placeholderCanvas = entity.placeholderContainer; -} -if (entity.accompanyingContainer && !entity.accompanyingCanvas) { - entity.accompanyingCanvas = entity.accompanyingContainer; -} -``` - -**Decision point**: Should this be done at read time (in `get()`) or at import time (in the entities reducer)? - -**Recommendation**: Do it at import time in the entities reducer, during `IMPORT_ENTITIES`. This way the compatibility properties are always present and we don't add overhead to every `get()` call. Add both the old and new property names to Container entities. - -#### 4.4 Verification - -Write specific tests: -```typescript -test('get with type Canvas finds Timeline resources', () => { ... }); -test('get with type Canvas finds Scene resources', () => { ... }); -test('placeholderCanvas alias works on P4 containers', () => { ... }); -``` - ---- - -## Phase 5: Serialization & Export - -### Goal -Add `toPresentation4()` method and ensure existing `toPresentation2()`/`toPresentation3()` still work correctly with the P4 internal store. - -### Tasks - -#### 5.1 Add `toPresentation4()` to Vault - -```typescript -// In src/vault/vault.ts -toPresentation4(entity: Reference) { - return this.serialize(entity, serializeConfigPresentation4); -} -``` - -#### 5.2 Update `toPresentation3()` - -Currently uses `serializeConfigPresentation3` from `@iiif/parser` (P3). After Phase 3, it should use the P4 serializer's `serializeConfigPresentation3` which correctly downgrades from P4 store format: - -```typescript -// This now uses P4's downgrade serializer -toPresentation3(entity: Reference) { - return this.serialize(entity, serializeConfigPresentation3); -} -``` - -#### 5.3 Update `toPresentation2()` - -The P3 serializer's `serializeConfigPresentation2` was designed to work with a P3 store. Since we now have a P4 store, we need a two-step approach: - -**Option A**: Serialize P4 → P3 → P2 (two passes) -**Option B**: Create a P4 → P2 serializer config - -**Recommendation**: Option A for simplicity: -```typescript -toPresentation2(entity: Reference) { - // First serialize to P3 JSON, then normalize as P3, then serialize to P2 - // ... or use the P3 serializeConfigPresentation2 if it works with the P4 store shape -} -``` - -**Actually**: The P4 store shape is close enough to the P3 store shape that `serializeConfigPresentation2` from P3 may just work, since it only reads standard properties. Test this. If it fails on new container types, fall back to Option A. - -**Simplest approach**: Keep importing `serializeConfigPresentation2` from `@iiif/parser` (the P3 export). If the serializer encounters a Timeline, it will likely skip or error — which is acceptable since Timelines don't exist in P2. - -#### 5.4 Update `serialize()` Method - -The `serialize()` method's `SerializeConfig` type comes from the P4 serializer module which has a more generic `{ [type: string]: Serializer }` shape. This is actually more flexible than the P3 version which was keyed to specific types. Ensure the Vault's `serialize()` call works with both. - -#### 5.5 Add exports to `src/index.ts` - -No changes needed — the Vault class already exports `toPresentation3`, `toPresentation2`, and now `toPresentation4`. - -#### 5.6 Verification - -```bash -pnpm run typecheck -pnpm run test -``` - -Write tests for round-trip: -- Load P3 manifest → toPresentation4() → valid P4 JSON -- Load P3 manifest → toPresentation3() → matches original (modulo normalization) -- Load P4 manifest → toPresentation3() → valid P3 JSON -- Load P4 manifest → toPresentation4() → matches original - ---- - -## Phase 6: Fixtures & Smoke Tests - -### Goal -Create comprehensive test fixtures and smoke tests for P4 vault operation. - -### Tasks - -#### 6.1 Copy P4 Fixtures from Parser - -Copy the parser's P4 fixtures into iiif-helpers: - -``` -parser/fixtures/cookbook-v4/*.json → iiif-helpers/fixtures/presentation-4/cookbook/ -parser/fixtures/presentation-4/*.json → iiif-helpers/fixtures/presentation-4/scenes/ -``` - -These are "native P4" fixtures with: -- Scene containers -- Model content resources -- 3D annotations -- Cameras, lights, transforms - -#### 6.2 Generate P4 Fixtures by Upgrading Existing P3 Fixtures - -Create a script `scripts/generate-p4-fixtures.mjs`: - -```javascript -import { upgradeToPresentation4 } from '@iiif/parser/presentation-4'; -import { readFileSync, writeFileSync, readdirSync } from 'fs'; -import { join } from 'path'; - -const fixtureDir = 'fixtures/cookbook'; -const outputDir = 'fixtures/presentation-4/upgraded-from-p3'; - -const files = readdirSync(fixtureDir).filter(f => f.endsWith('.json')); -for (const file of files) { - const json = JSON.parse(readFileSync(join(fixtureDir, file), 'utf8')); - const upgraded = upgradeToPresentation4(json); - writeFileSync(join(outputDir, file), JSON.stringify(upgraded, null, 2)); -} -``` - -This gives us a set of "P3 manifests upgraded to P4" to test the upgrade path. - -#### 6.3 Keep Existing Fixtures - -All existing fixtures in `fixtures/presentation-2/`, `fixtures/presentation-3/`, `fixtures/cookbook/` stay as-is. Tests should load them through the vault and verify they work. - -#### 6.4 New Fixture Directory Structure - -``` -fixtures/ -├── annotations/ # existing -├── cookbook/ # existing P3 cookbook fixtures -├── exhibitions/ # existing -├── presentation-2/ # existing P2 fixtures -├── presentation-3/ # existing P3 fixtures (has-part.json etc.) -├── presentation-4/ # NEW -│ ├── cookbook/ # Native P4 cookbook (from parser) -│ ├── scenes/ # Native P4 scene fixtures (from parser) -│ └── upgraded-from-p3/ # P3 fixtures upgraded to P4 shape -├── search1/ # existing -└── thumbnails/ # existing -``` - -#### 6.5 Write Smoke Tests - -Create `__tests__/vault/vault-p4.test.ts`: - -```typescript -describe('Vault P4 support', () => { - // Category 1: Loading native P4 manifests - describe('native P4 fixtures', () => { - test.each(p4CookbookFixtures)('loads %s', async (name, json) => { - const vault = new Vault(); - const manifest = vault.loadSync(json.id, json); - expect(manifest).toBeTruthy(); - expect(manifest.id).toBe(json.id); - expect(manifest.type).toBe('Manifest'); - }); - }); - - // Category 2: Loading P3 manifests (backwards compat) - describe('P3 fixtures still work', () => { - test.each(p3CookbookFixtures)('loads %s', async (name, json) => { - const vault = new Vault(); - const manifest = vault.loadSync(json.id, json); - expect(manifest).toBeTruthy(); - expect(manifest.items.length).toBeGreaterThan(0); - }); - }); - - // Category 3: Loading P2 manifests (backwards compat) - describe('P2 fixtures still work', () => { - test('loads NLS manifest', () => { - const vault = new Vault(); - const manifest = vault.loadSync(nlsManifest['@id'], nlsManifest); - expect(manifest).toBeTruthy(); - }); - }); - - // Category 4: Canvas compatibility - describe('Canvas compatibility', () => { - test('get with type Canvas finds Timeline', () => { ... }); - test('get with type Canvas finds Scene', () => { ... }); - test('P3 canvas is still type Canvas after P4 upgrade', () => { ... }); - }); - - // Category 5: Serialization round-trips - describe('serialization', () => { - test('toPresentation4 from P3 input', () => { ... }); - test('toPresentation3 from P4 input', () => { ... }); - test('toPresentation4 round-trip', () => { ... }); - }); - - // Category 6: New container types - describe('new P4 containers', () => { - test('Timeline entities are stored correctly', () => { ... }); - test('Scene entities are stored correctly', () => { ... }); - test('Quantity entities are stored correctly', () => { ... }); - test('Transform entities are stored correctly', () => { ... }); - }); - - // Category 7: Scene/3D fixtures - describe('3D/Scene support', () => { - test('loads manifest with Scene container', () => { ... }); - test('loads manifest with Model content resource', () => { ... }); - test('loads manifest with camera and lights', () => { ... }); - }); -}); -``` - -#### 6.6 Verify Existing Tests Still Pass - -```bash -pnpm run test -``` - -**ALL existing tests must pass unchanged.** This is the primary compatibility gate. - ---- - -## Phase 7: Type Package Removal - -### Goal -Fully remove `@iiif/presentation-2`, `@iiif/presentation-3`, and `@iiif/presentation-3-normalized` packages, replacing all type imports with `@iiif/parser` exports. - -### Tasks - -This was partially covered in Phase 1. The remaining work: - -#### 7.1 Audit All Type Imports - -Run: -```bash -grep -r "@iiif/presentation-" src/ --include="*.ts" | grep -v "@iiif/parser" -``` - -Every hit must be remapped. - -#### 7.2 Specific Type Mappings - -| Old Type | New Location | -|---|---| -| `Canvas` | `@iiif/parser/presentation-3/types` | -| `Manifest` | `@iiif/parser/presentation-3/types` | -| `Collection` | `@iiif/parser/presentation-3/types` | -| `Annotation` | `@iiif/parser/presentation-3/types` | -| `AnnotationPage` | `@iiif/parser/presentation-3/types` | -| `AnnotationCollection` | `@iiif/parser/presentation-3/types` | -| `Range` | `@iiif/parser/presentation-3/types` | -| `ContentResource` | `@iiif/parser/presentation-3/types` | -| `Reference` | `@iiif/parser/presentation-3/types` | -| `SpecificResource` | `@iiif/parser/presentation-3/types` | -| `InternationalString` | `@iiif/parser/presentation-3/types` | -| `Service` | `@iiif/parser/presentation-3/types` | -| `Selector` | `@iiif/parser/presentation-3/types` | -| `ImageService` | `@iiif/parser/presentation-3/types` | -| `ImageService2` | `@iiif/parser/presentation-3/types` | -| `ImageService3` | `@iiif/parser/presentation-3/types` | -| `ResourceProvider` | `@iiif/parser/presentation-3/types` | -| `CanvasNormalized` | `@iiif/parser/presentation-3-normalized/types` | -| `ManifestNormalized` | `@iiif/parser/presentation-3-normalized/types` | -| `CollectionNormalized` | `@iiif/parser/presentation-3-normalized/types` | -| `AnnotationNormalized` | `@iiif/parser/presentation-3-normalized/types` | -| `AnnotationPageNormalized` | `@iiif/parser/presentation-3-normalized/types` | -| `RangeNormalized` | `@iiif/parser/presentation-3-normalized/types` | -| `ServiceNormalized` | `@iiif/parser/presentation-3-normalized/types` | -| `ResourceProviderNormalized` | `@iiif/parser/presentation-3-normalized/types` | -| `DescriptiveNormalized` | `@iiif/parser/presentation-3-normalized/types` | - -#### 7.3 Remove Packages - -```bash -pnpm remove @iiif/presentation-2 @iiif/presentation-3 @iiif/presentation-3-normalized -``` - -Remove from `resolutions` and `overrides` in `package.json`. - -#### 7.4 Verification - -```bash -pnpm run typecheck -pnpm run test -pnpm run build -pnpm run lint -``` - ---- - -## Testing Strategy - -### Test Pyramid - -``` - ┌─────────────┐ - │ E2E/Smoke │ Vault loads all fixture types, - │ Tests │ serialize round-trips work - ├─────────────┤ - │ Integration │ Vault + store + normalizer - │ Tests │ together, Canvas compat layer - ├─────────────┤ - │ Unit │ resolveType, getDefaultEntities, - │ Tests │ entities-reducer with new types - └─────────────┘ -``` - -### Test Files - -| File | What It Tests | -|---|---| -| `__tests__/vault/vault-p4.test.ts` | **NEW** - P4 loading, new containers, Canvas compat | -| `__tests__/vault/vault-fixtures.test.ts` | Existing - must still pass | -| `__tests__/vault/vault-functions.test.ts` | Existing - must still pass | -| `__tests__/vault/store.test.ts` | Existing - must still pass | -| `__tests__/vault/objects.test.ts` | Existing - must still pass | -| `__tests__/vault/global-vault.test.ts` | Existing - must still pass | -| All other test files | Must still pass | - -### Specific Test Scenarios for P4 - -1. **Load P3 cookbook manifest → verify Canvas items are still Canvas type** -2. **Load P4 cookbook manifest with Timeline → verify Timeline in Timeline store** -3. **Load P4 manifest with Scene → verify Scene in Scene store** -4. **`get({id, type:'Canvas'})` on a Timeline → returns the Timeline** -5. **`get({id, type:'Canvas'})` on a Canvas → returns the Canvas (no regression)** -6. **Load P2 manifest → verify full upgrade path works** -7. **`toPresentation4()` produces valid P4 JSON with correct @context** -8. **`toPresentation3()` from P4-normalized store produces valid P3 JSON** -9. **`toPresentation3()` throws on Scene (unsupported in P3)** -10. **`placeholderCanvas` compat alias works** -11. **Annotation target/body arrays work correctly** -12. **Entity actions (add/remove/modify) work on new store types** -13. **Metadata actions work on new store types** - ---- - -## Potential Parser Changes Needed - -These are areas where the parser may need updates to fully support the iiif-helpers migration: - -### 11.1 HAS_PART / Framing in P4 Normalizer - -**Issue**: The P3 normalizer supports `iiif-parser:hasPart` framing for resources that appear in multiple contexts with different metadata. The P4 normalizer does not implement this. - -**Impact**: Manifests with framed resources (e.g., a Canvas appearing in multiple Ranges with different labels) may lose context-specific metadata. - -**Recommendation**: Port the `HAS_PART`/`PART_OF` framing logic from P3 normalizer to P4. This is needed for `resolve-if-exists.ts` and `Vault.get()` which check for `HAS_PART`. - -**Workaround**: If not ported, `Vault.get()` will still work — it just won't apply framing. The `HAS_PART` check in `get()` will be a no-op since no entities will have that property. - -### 11.2 P4 `serializeConfigPresentation2` - -**Issue**: There is no P4 → P2 serializer config in the parser. - -**Impact**: `Vault.toPresentation2()` may not work correctly with P4-shaped stores. - -**Recommendation**: Either: -- Create a `serializeConfigPresentation2` in `src/presentation-4/` in the parser -- Or do a two-pass: serialize P4→P3 then P3→P2 in iiif-helpers - -### 11.3 Empty Types for P4 - -**Issue**: The P4 normalizer has `emptyCanvas`, `emptyManifest`, etc. but these are used differently than P3's. Vault's `hydrate()` method may need access to empty type templates. - -**Impact**: Low — `hydrate()` uses `skipSelfReturn: false` which returns the reference itself as fallback. - -### 11.4 `CompatibleStore` Type Alignment - -**Issue**: P3's `CompatibleStore` type and P4's are slightly different. P3's is strongly typed per entity type, P4's uses `{ [type: string]: { [id: string]: NormalizedEntity } }`. - -**Impact**: The P4 `serialize()` function accepts the broader type, so Vault's state should be compatible. Verify with type checking. - -### 11.5 `placeholderContainer` / `accompanyingContainer` in P3 Downgrade - -**Issue**: When serializing P4 back to P3, the P4 serializer's `serializeConfigPresentation3` correctly maps `placeholderContainer` → `placeholderCanvas`. But it throws if the container type is not Canvas. Need to ensure this is well-tested. - -**Impact**: Mostly correct. Edge case: a P3 manifest with `placeholderCanvas` that gets upgraded to P4 (becoming `placeholderContainer`) and then serialized back to P3 — the round-trip should preserve `placeholderCanvas`. - ---- - -## Rollout Checklist - -### Pre-merge -- [ ] All Phase 1-7 tasks complete -- [ ] `pnpm run typecheck` passes -- [ ] `pnpm run test` passes (ALL existing + new tests) -- [ ] `pnpm run lint` passes -- [ ] `pnpm run build` passes -- [ ] `pkg-tests` scripts pass after build -- [ ] No unintended export/API surface changes -- [ ] Backwards compatibility verified for P2/P3 inputs -- [ ] Canvas compat layer tested -- [ ] `toPresentation4()` tested -- [ ] `toPresentation3()` tested with P4 store -- [ ] New P4 fixtures in place -- [ ] Smoke tests for all fixture categories pass - -### Post-merge -- [ ] Publish pre-release for downstream testing -- [ ] Test with known consumers (Clover, Manifest Editor, etc.) -- [ ] Verify no runtime regressions in browser -- [ ] Document migration for downstream users (should be: "just update") - ---- - -## Execution Order Summary - -``` -Phase 1: Dependency & Type Migration ← Do first, foundation - ↓ -Phase 2: Store & Entity Expansion ← Additive, safe - ↓ -Phase 3: Normalizer Swap (P3 → P4) ← Core change, most risk - ↓ -Phase 4: Canvas Compatibility Layer ← Safety net for Phase 3 - ↓ -Phase 5: Serialization & Export ← New features - ↓ -Phase 6: Fixtures & Smoke Tests ← Validation (start writing early) - ↓ -Phase 7: Type Package Removal ← Cleanup (can merge with Phase 1) -``` - -**Estimated effort**: Phases 1-2 can be done together. Phase 3 is the riskiest and should be done carefully with constant test runs. Phase 4 is small but critical. Phases 5-6 add value. Phase 7 is cleanup. - -**Recommended approach**: Do Phases 1+2+7 together (type migration), then 3+4 together (core swap), then 5+6 (features + tests). Write tests from Phase 6 early to validate each phase. diff --git a/VAULT-3-4.md b/VAULT-3-4.md deleted file mode 100644 index 9d6d3d6..0000000 --- a/VAULT-3-4.md +++ /dev/null @@ -1,174 +0,0 @@ -# Vault 3/4 Compatibility Plan - -## Goals - -1. Restore backwards compatibility for all existing projects using `Vault` today. -2. Keep `Vault` as the v3 implementation and introduce `Vault4`. -3. Introduce a default `VaultAuto` (exported as `Vault`) that: - - starts in v3 mode, - - can opt-in to v4 switching, - - only switches when v4-only content (Scene) is detected. -4. Prove parity with exhaustive fixture-based tests and snapshots before enabling any default behavior changes. - -## Non-goals (for this phase) - -1. Making v4 the default runtime mode. -2. Removing v3 action/property compatibility paths. -3. Large refactors of helper APIs beyond compatibility shims. - -## Target API - -### Classes - -1. `Vault` - - Uses Presentation 3 normalization/serialization path. - - Keeps current v3-compatible behavior as baseline. -2. `Vault4` - - Uses Presentation 4 normalization/serialization path. - - Accepts v3 inputs by upgrading/parsing into v4-normalized state. -3. `VaultAuto` - - Starts with an internal `Vault` instance. - - Optionally enables automatic switching to `Vault4`. - - Exposes `v4` accessor for typed access when app code knows Scene is present. - -### Construction options - -Proposed options for `VaultAuto`: - -1. `enablePresentation4?: boolean` (default: `false`) - - Backwards-compatible default. - - When `false`, v4 resources containing Scene fail with a clear error. -2. `switchOnScene?: boolean` (default: `true`) - - Controls Scene-triggered migration when `enablePresentation4` is `true`. -3. `onVersionSwitch?: (from: 3, to: 4, context: { triggerId: string }) => void` - - Optional event hook for application observability. - -### Accessors - -`VaultAuto` should expose: - -1. `isPresentation4(): boolean` -2. `getVersion(): 3 | 4` -3. `v4` - - `undefined` before switch. - - typed `Vault4` after switch. - - supports usage pattern: `if (hasScene) { vault.v4?.get(...) }` - -## Behavior contract - -1. Existing projects importing `Vault` should behave exactly as now for v2/v3 resources. -2. No automatic switch without explicit opt-in (`enablePresentation4`). -3. Scene presence is the switching trigger in `VaultAuto`. -4. `Vault4` loading v3 resources must preserve output compatibility for existing helpers and workflows. -5. `Vault4` methods must be type-safe across the existing vault API surface. -6. Legacy property aliases (e.g. `accompanyingCanvas` vs `accompanyingContainer`) must be mirrored in normalized entities and action-level mutations. - -## Migration strategy (VaultAuto internal switch) - -## Phase A: Safe and simple migration path - -1. Keep a journal of loaded source payloads in `VaultAuto`: - - `{ requestedId, responseJson }[]` -2. On switch trigger: - - instantiate `Vault4`, - - replay journal through `Vault4.loadSync` / `Vault4.load`, - - swap active implementation pointer from `Vault` to `Vault4`, - - emit version-switch event. -3. Keep this replay strategy first; optimize later only if needed. - -Rationale: replay is deterministic, low risk, and avoids fragile in-place state transforms. - -## Phase B: Optional optimization (later) - -1. Evaluate direct store migration if replay cost becomes significant. -2. Only attempt after parity tests are stable and comprehensive. - -## Helpers compatibility plan - -1. Audit current helpers for strict `presentation-3-normalized` assumptions. -2. Update shared helpers to use union-compatible normalized references where possible. -3. Keep shared entrypoints v3/v4-compatible. -4. Add v4-only helper additions under a dedicated subpath (e.g. `iiif-helpers/v4/*`). -5. Do not break existing helper signatures unless absolutely required. - -## Testing strategy (regression gate) - -Snapshot-driven parity testing across **all fixtures**. - -### Test groups - -1. `Vault` baseline snapshots: - - load fixture -> capture resolved top-level object, - - capture normalized store summary (entities/mapping shape), - - capture selected helper outputs. -2. `Vault4` compatibility snapshots for v3 fixtures: - - same fixture set and same snapshot shape as `Vault`. -3. Direct parity assertions (`Vault` vs `Vault4`) for v2/v3 fixtures: - - deep equality on compatibility projections, - - allowed-difference list for known renamed fields. -4. `VaultAuto` behavior: - - default mode remains v3 behavior, - - opt-in off + Scene fixture -> explicit failure path, - - opt-in on + Scene fixture -> switches to v4, - - post-switch `vault.v4` accessor typed and usable. - -### Fixture matrix (must include) - -1. `fixtures/presentation-2/**/*` -2. `fixtures/presentation-3/**/*` -3. `fixtures/cookbook/**/*` (v3 cookbook) -4. `iiif-helpers/fixtures/**/*` relevant helper fixtures -5. `fixtures/presentation-4/**/*` for switch + v4-only expectations - -### Snapshot shape guidance - -To reduce noise, snapshot normalized projections rather than entire internal state blobs: - -1. Root resource `{ id, type, item counts }` -2. Entity counts by type -3. Canonicalized key properties per type (including alias-mirrored fields) -4. Helper result snapshots for representative helpers (thumbnail, ranges, i18n, etc.) - -## Implementation phases - -1. `Phase 0: Reset` - - Undo current partial Vault migration changes. - - Re-establish green baseline on existing tests. -2. `Phase 1: Split classes` - - Keep `Vault` as the v3 class. - - Introduce `Vault4` as a separate class. -3. `Phase 2: Introduce VaultAuto` - - Implement dual-engine wrapper and replay migration. - - Add version accessors and `v4` accessor. -4. `Phase 3: Alias/mutation compatibility` - - Implement field alias mirroring in normalization projections and actions. - - Add targeted tests for alias writes/reads. -5. `Phase 4: Vault4 type-safety hardening` - - Audit `Vault4` method signatures (`get`, `hydrate`, `load*`, `serialize*`, `getObject`, `loadObject`, `subscribe`, pagination/meta helpers). - - Remove `any`-based fallbacks where avoidable and align return types with v3 compatibility contracts. - - Add dedicated type-focused tests (compile-time assertions) for common usage paths. -6. `Phase 5: Fixture parity suite` - - Add full snapshot + parity matrix. - - Gate with CI. -7. `Phase 6: Helper dual-compat` - - Update helper internals for v3/v4 compatibility. - - Add `v4` helper subpath for v4-specific functionality. - -## Exit criteria - -1. Existing v2/v3 integration tests pass unchanged. -2. New parity suite passes for all selected fixtures. -3. `VaultAuto` default path shows zero behavior regressions for v2/v3. -4. `VaultAuto` opt-in path successfully switches on Scene and exposes typed `vault.v4`. -5. Build, typecheck, tests, and package-load checks all pass. - -## Open decisions to approve before implementation - -1. Option names: - - keep `enablePresentation4` / `switchOnScene`, or rename. (A: keep) -2. Scene detection point: - - detect from raw payload pre-normalization vs post-normalization signal. (A: pre) -3. Default behavior when Scene is loaded with opt-in disabled: - - throw error (recommended) vs ignore. (throw) -4. `v4` accessor shape: - - property (`vault.v4`) vs method (`vault.getV4()`). (A: vault.v4) diff --git a/__tests__/vault/store.test.ts b/__tests__/vault/store.test.ts index 19f4f26..64a4601 100644 --- a/__tests__/vault/store.test.ts +++ b/__tests__/vault/store.test.ts @@ -1,10 +1,10 @@ -import { createStore } from '../../src/vault/store'; -import { entityActions } from '../../src/vault/actions'; import { emptyCanvas, emptyManifest, normalize } from '@iiif/parser'; -import { Collection, Manifest } from '@iiif/parser/presentation-3/types'; -import { describe, test, expect } from 'vitest'; +import type { Collection, Manifest } from '@iiif/parser/presentation-3/types'; +import { describe, expect, test } from 'vitest'; +import { entityActions } from '../../src/vault/actions'; +import { createStore } from '../../src/vault/store'; -describe('Store', function () { +describe('Store', () => { test('It should be creatable', () => { const store = createStore(); diff --git a/__tests__/vault/vault-auto.test.ts b/__tests__/vault/vault-auto.test.ts index 02ddd9f..7e676cd 100644 --- a/__tests__/vault/vault-auto.test.ts +++ b/__tests__/vault/vault-auto.test.ts @@ -2,7 +2,8 @@ import invariant from 'tiny-invariant'; import { describe, expect, test } from 'vitest'; import cssManifest from '../../fixtures/cookbook/css.json'; import p4SceneManifest from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; -import type { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import type { ManifestNormalized as ManifestNormalizedV3 } from '@iiif/parser/presentation-3-normalized/types'; +import type { ManifestNormalized as ManifestNormalizedV4 } from '@iiif/parser/presentation-4-normalized/types'; import { VaultAuto } from '../../src/vault'; describe('VaultAuto', () => { @@ -15,7 +16,7 @@ describe('VaultAuto', () => { test('stays on v3 for v3 fixtures', () => { const vault = new VaultAuto(); - const manifest = vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + const manifest = vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); invariant(manifest); expect(manifest.id).toBe(cssManifest.id); @@ -26,10 +27,13 @@ describe('VaultAuto', () => { test('switches to v4 when Scene is loaded and opt-in is enabled', () => { const vault = new VaultAuto({ enablePresentation4: true }); - const v3Manifest = vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + const v3Manifest = vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); invariant(v3Manifest); - const v4Manifest = vault.loadSync(p4SceneManifest.id, JSON.parse(JSON.stringify(p4SceneManifest))); + const v4Manifest = vault.loadSync( + p4SceneManifest.id, + JSON.parse(JSON.stringify(p4SceneManifest)) + ); invariant(v4Manifest); expect(vault.getVersion()).toBe(4); @@ -37,7 +41,7 @@ describe('VaultAuto', () => { expect(vault.v4).toBeDefined(); // Ensure replay kept earlier loaded v3 resources available after switch. - const replayedV3Manifest = vault.get(cssManifest.id); + const replayedV3Manifest = vault.get({ id: cssManifest.id, type: 'Manifest' }); expect(replayedV3Manifest).toBeTruthy(); expect((replayedV3Manifest as any).id).toBe(cssManifest.id); }); diff --git a/__tests__/vault/vault-versions.test.ts b/__tests__/vault/vault-versions.test.ts index 659dcd2..828a66f 100644 --- a/__tests__/vault/vault-versions.test.ts +++ b/__tests__/vault/vault-versions.test.ts @@ -2,35 +2,47 @@ import invariant from 'tiny-invariant'; import { describe, expect, test } from 'vitest'; import type { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import cssManifest from '../../fixtures/cookbook/css.json'; -import { Vault, Vault3, Vault4 } from '../../src/vault'; +import p4SceneManifest from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; +import { Vault, Vault4 } from '../../src/vault'; describe('Vault versions', () => { - test('Vault remains backwards-compatible with Vault3 for v3 fixtures', () => { - const autoVault = new Vault(); - const vault3 = new Vault3(); + test('Vault remains stable for v3 fixtures', () => { + const vaultA = new Vault(); + const vaultB = new Vault(); - const autoManifest = autoVault.loadSync( - cssManifest.id, - JSON.parse(JSON.stringify(cssManifest)) - ); - const v3Manifest = vault3.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + const manifestA = vaultA.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + const manifestB = vaultB.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); - invariant(autoManifest); - invariant(v3Manifest); + invariant(manifestA); + invariant(manifestB); - expect(autoManifest.id).toBe(v3Manifest.id); - expect(autoManifest.type).toBe(v3Manifest.type); - expect(autoManifest.items.length).toBe(v3Manifest.items.length); - expect(autoVault.getState().iiif.mapping).toEqual(vault3.getState().iiif.mapping); + expect(manifestA.id).toBe(manifestB.id); + expect(manifestA.type).toBe(manifestB.type); + expect(manifestA.items.length).toBe(manifestB.items.length); + expect(vaultA.getState().iiif.mapping).toEqual(vaultB.getState().iiif.mapping); }); test('Vault4 can load v3 fixtures', () => { const vault4 = new Vault4(); - const manifest = vault4.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + const manifest = vault4.loadManifestSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); invariant(manifest); expect(manifest.id).toBe(cssManifest.id); expect(manifest.type).toBe('Manifest'); expect(manifest.items.length).toBeGreaterThan(0); }); + + test('Vault4 serializes with presentation-4 serializer and downgrades scene manifests safely', () => { + const vault4 = new Vault4(); + const manifest = vault4.loadManifestSync(p4SceneManifest.id, JSON.parse(JSON.stringify(p4SceneManifest))); + invariant(manifest); + + const asV4: any = vault4.toPresentation4(manifest); + expect(asV4['@context']).toBe('http://iiif.io/api/presentation/4/context.json'); + expect(asV4.items[0].type).toBe('Scene'); + + expect(() => vault4.toPresentation3(manifest)).toThrowError( + 'Presentation 4 -> 3 downgrade unsupported: Scene container' + ); + }); }); diff --git a/__tests__/vault/vault4-types.test.ts b/__tests__/vault/vault4-types.test.ts new file mode 100644 index 0000000..60561a9 --- /dev/null +++ b/__tests__/vault/vault4-types.test.ts @@ -0,0 +1,63 @@ +import { describe, expectTypeOf, test } from 'vitest'; +import type { + CollectionNormalized, + ManifestNormalized, + SceneNormalized, +} from '@iiif/parser/presentation-4-normalized/types'; +import cssManifest from '../../fixtures/cookbook/css.json'; +import p4SceneManifest from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; +import { Vault4 } from '../../src/vault'; + +describe('Vault4 types', () => { + test('core method signatures remain type-safe', () => { + const vault = new Vault4(); + + const loadedManifest = vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + expectTypeOf(loadedManifest).toEqualTypeOf(); + + const loadedManifestViaHelper = vault.loadManifest(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + expectTypeOf(loadedManifestViaHelper).toMatchTypeOf>(); + + const loadedManifestAsync = vault.load(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + expectTypeOf(loadedManifestAsync).toMatchTypeOf>(); + + const scene = vault.get({ id: 'https://example.org/scene/1', type: 'Scene' }); + expectTypeOf(scene).toMatchTypeOf(); + + const hydratedScene = vault.hydrate({ id: 'https://example.org/scene/1', type: 'Scene' }); + expectTypeOf(hydratedScene).toMatchTypeOf(); + + const manifestRef = vault.get({ id: 'https://example.org/manifest/1', type: 'Manifest' }); + expectTypeOf(manifestRef).toMatchTypeOf(); + + const collectionRef = vault.get({ id: 'https://example.org/collection/1', type: 'Collection' }); + expectTypeOf(collectionRef).toMatchTypeOf(); + + const collection = vault.loadSync( + 'https://example.org/collection/1', + JSON.parse(JSON.stringify({ id: 'https://example.org/collection/1', type: 'Collection', items: [] })) + ); + + expectTypeOf(collection).toMatchTypeOf(); + + const collectionViaHelper = vault.loadCollection( + 'https://example.org/collection/1', + JSON.parse(JSON.stringify({ id: 'https://example.org/collection/1', type: 'Collection', items: [] })) + ); + expectTypeOf(collectionViaHelper).toMatchTypeOf>(); + + const wrapped = vault.loadManifestObject(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + expectTypeOf(wrapped).toMatchTypeOf>(); + + const sceneObject = vault.getObject({ id: 'https://example.org/scene/1', type: 'Scene' }); + expectTypeOf(sceneObject).toMatchTypeOf(); + }); + + test('presentation-4 resources stay strongly typed', () => { + const vault = new Vault4(); + vault.loadSync(p4SceneManifest.id, JSON.parse(JSON.stringify(p4SceneManifest))); + + const scene = vault.get({ id: 'https://iiif.io/api/cookbook/recipe/0608-mvm-3d/scene/1', type: 'Scene' }); + expectTypeOf(scene).toMatchTypeOf(); + }); +}); diff --git a/package.json b/package.json index 4a60467..60e29f9 100644 --- a/package.json +++ b/package.json @@ -247,7 +247,7 @@ "svg-arc-to-cubic-bezier": "^3.2.0" }, "peerDependencies": { - "@iiif/parser": "https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1" + "@iiif/parser": "https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=5" }, "devDependencies": { "@types/jsdom": "^21.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28936f6..9134f53 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@iiif/parser': - specifier: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1 - version: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1 + specifier: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=5 + version: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=5 '@types/geojson': specifier: 7946.0.13 version: 7946.0.13 @@ -344,9 +344,10 @@ packages: cpu: [x64] os: [win32] - '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1': - resolution: {tarball: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1} + '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=5': + resolution: {tarball: https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=5} version: 2.2.9 + hasBin: true '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} @@ -1488,7 +1489,7 @@ snapshots: dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.1.1 '@babel/compat-data@7.26.3': {} @@ -1714,7 +1715,9 @@ snapshots: '@esbuild/win32-x64@0.20.2': optional: true - '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=1': {} + '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=5': + dependencies: + picocolors: 1.1.1 '@jest/schemas@29.6.3': dependencies: diff --git a/src/vault.ts b/src/vault.ts index 935c01a..1f320af 100644 --- a/src/vault.ts +++ b/src/vault.ts @@ -1,5 +1,4 @@ export * from './vault/vault'; -export * from './vault/vault3'; export * from './vault/vault4'; export * from './vault/vault-auto'; export * from './vault/global-vault'; diff --git a/src/vault/types.ts b/src/vault/types.ts index 16303d5..f093440 100644 --- a/src/vault/types.ts +++ b/src/vault/types.ts @@ -6,11 +6,13 @@ import type { Collection, ContentResource, Manifest, + Range, ResourceProvider, Selector, Service, } from '@iiif/parser/presentation-3/types'; import type { + AnnotationCollectionNormalized, AnnotationNormalized, AnnotationPageNormalized, CanvasNormalized, @@ -20,6 +22,15 @@ import type { ResourceProviderNormalized, ServiceNormalized, } from '@iiif/parser/presentation-3-normalized/types'; +import type { Agent as AgentV4, Scene, Timeline } from '@iiif/parser/presentation-4/types'; +import type { + AgentNormalized as AgentNormalizedV4, + AnnotationCollectionNormalized as AnnotationCollectionNormalizedV4, + ContentResourceNormalized as ContentResourceNormalizedV4, + SceneNormalized, + SpecificResourceNormalized, + TimelineNormalized, +} from '@iiif/parser/presentation-4-normalized/types'; import type { PayloadAction } from 'typesafe-actions'; import type { EntityActions } from './actions/entity-actions'; import type { MappingActions } from './actions/mapping-actions'; @@ -76,13 +87,20 @@ export type NormalizedEntity = | ManifestNormalized | CanvasNormalized | AnnotationPageNormalized + | AnnotationCollectionNormalized + | AnnotationCollectionNormalizedV4 | AnnotationCollection | AnnotationNormalized + | ContentResourceNormalizedV4 + | SpecificResourceNormalized | ContentResource | RangeNormalized | ServiceNormalized + | AgentNormalizedV4 | ResourceProviderNormalized | Selector + | TimelineNormalized + | SceneNormalized | GenericNormalizedEntity; export type RefToNormalized = Ref['type'] extends 'Manifest' @@ -92,27 +110,27 @@ export type RefToNormalized = Ref['type'] extends : Ref['type'] extends 'AnnotationPage' ? AnnotationPageNormalized : Ref['type'] extends 'AnnotationCollection' - ? AnnotationCollection + ? AnnotationCollectionNormalized | AnnotationCollectionNormalizedV4 | AnnotationCollection : Ref['type'] extends 'Annotation' ? AnnotationNormalized : Ref['type'] extends 'Range' ? RangeNormalized : Ref['type'] extends 'Service' ? ServiceNormalized - : Ref['type'] extends 'ContentResource' - ? ContentResource - : Ref['type'] extends 'ResourceProvider' - ? ResourceProviderNormalized - : Ref['type'] extends 'Collection' - ? CollectionNormalized - : Ref['type'] extends 'Timeline' - ? GenericNormalizedEntity - : Ref['type'] extends 'Scene' - ? GenericNormalizedEntity - : Ref['type'] extends 'Quantity' - ? GenericNormalizedEntity - : Ref['type'] extends 'Transform' - ? GenericNormalizedEntity + : Ref['type'] extends 'SpecificResource' + ? SpecificResourceNormalized + : Ref['type'] extends 'ContentResource' + ? ContentResource | ContentResourceNormalizedV4 | SpecificResourceNormalized + : Ref['type'] extends 'ResourceProvider' + ? ResourceProviderNormalized + : Ref['type'] extends 'Agent' + ? ResourceProviderNormalized | AgentNormalizedV4 + : Ref['type'] extends 'Collection' + ? CollectionNormalized + : Ref['type'] extends 'Timeline' + ? TimelineNormalized + : Ref['type'] extends 'Scene' + ? SceneNormalized : any; export type RefToFull = Ref['type'] extends 'Manifest' @@ -133,17 +151,15 @@ export type RefToFull = Ref['type'] extends 'Mani ? ContentResource : Ref['type'] extends 'ResourceProvider' ? ResourceProvider - : Ref['type'] extends 'Collection' - ? Collection - : Ref['type'] extends 'Timeline' - ? GenericNormalizedEntity - : Ref['type'] extends 'Scene' - ? GenericNormalizedEntity - : Ref['type'] extends 'Quantity' - ? GenericNormalizedEntity - : Ref['type'] extends 'Transform' - ? GenericNormalizedEntity - : any; + : Ref['type'] extends 'Agent' + ? ResourceProvider | AgentV4 + : Ref['type'] extends 'Collection' + ? Collection + : Ref['type'] extends 'Timeline' + ? Timeline + : Ref['type'] extends 'Scene' + ? Scene + : any; export type Entities = { Collection: { @@ -159,13 +175,13 @@ export type Entities = { [id: string]: AnnotationPageNormalized; }; AnnotationCollection: { - [id: string]: AnnotationCollection; + [id: string]: AnnotationCollectionNormalized | AnnotationCollectionNormalizedV4 | AnnotationCollection; }; Annotation: { [id: string]: AnnotationNormalized; }; ContentResource: { - [id: string]: ContentResource; + [id: string]: ContentResource | ContentResourceNormalizedV4 | SpecificResourceNormalized; }; Range: { [id: string]: RangeNormalized; @@ -177,19 +193,13 @@ export type Entities = { [id: string]: Selector; }; Agent: { - [id: string]: ResourceProviderNormalized; + [id: string]: ResourceProviderNormalized | AgentNormalizedV4; }; Timeline: { - [id: string]: GenericNormalizedEntity; + [id: string]: TimelineNormalized; }; Scene: { - [id: string]: GenericNormalizedEntity; - }; - Quantity: { - [id: string]: GenericNormalizedEntity; - }; - Transform: { - [id: string]: GenericNormalizedEntity; + [id: string]: SceneNormalized; }; }; diff --git a/src/vault/utility/default-fetcher.ts b/src/vault/utility/default-fetcher.ts new file mode 100644 index 0000000..71537b8 --- /dev/null +++ b/src/vault/utility/default-fetcher.ts @@ -0,0 +1,11 @@ +export const defaultFetcher = (url: string) => { + return fetch(url).then((r) => { + if (r.status === 200) { + return r.json(); + } + + const err = new Error(`${r.status} ${r.statusText}`); + err.name = 'HTTPError'; + throw err; + }); +}; diff --git a/src/vault/utility/get-default-entities.ts b/src/vault/utility/get-default-entities.ts index fd8981a..4508a4b 100644 --- a/src/vault/utility/get-default-entities.ts +++ b/src/vault/utility/get-default-entities.ts @@ -1,4 +1,4 @@ -import { Entities } from '../types'; +import type { Entities } from '../types'; export function getDefaultEntities(): Entities { return { @@ -15,7 +15,5 @@ export function getDefaultEntities(): Entities { Agent: {}, Timeline: {}, Scene: {}, - Quantity: {}, - Transform: {}, }; } diff --git a/src/vault/utility/quick-merge.ts b/src/vault/utility/quick-merge.ts index 4805d5e..9fc5930 100644 --- a/src/vault/utility/quick-merge.ts +++ b/src/vault/utility/quick-merge.ts @@ -1,21 +1,33 @@ export function quickMerge(a: any, b: any) { + const left = a || {}; + const right = b || {}; const newResource: any = {}; - const added: string[] = []; - for (const [key, value] of Object.entries(a || {})) { - added.push(key); - const bValue = (b || {})[key]; - if (!bValue || bValue.length === 0) { - newResource[key] = value; + const keys = new Set([...Object.keys(left), ...Object.keys(right)]); + + for (const key of keys) { + if (!Object.hasOwn(right, key) || typeof right[key] === 'undefined') { + newResource[key] = left[key]; continue; } - newResource[key] = bValue; - } - for (const [key, value] of Object.entries(b || {})) { - if (added.indexOf(key) !== -1) { + + // Imported normalized entities often include placeholder defaults. + // Do not let null/empty-array placeholders clobber richer existing values. + if (right[key] === null) { + newResource[key] = left[key]; + continue; + } + + if (Array.isArray(right[key]) && right[key].length === 0) { + newResource[key] = left[key]; continue; } - // merge. - newResource[key] = value; + + if (typeof right[key] !== 'undefined') { + newResource[key] = right[key]; + continue; + } + + newResource[key] = left[key]; } return newResource; diff --git a/src/vault/utility/resolve-type.ts b/src/vault/utility/resolve-type.ts index f4e074e..07abcb0 100644 --- a/src/vault/utility/resolve-type.ts +++ b/src/vault/utility/resolve-type.ts @@ -1,6 +1,6 @@ -import { Entities } from '../types'; +import type { Entities } from '../types'; -export function resolveType(type: string): keyof Entities { +export function resolveType(type?: string): keyof Entities { switch (type) { case 'Image': case 'Video': @@ -11,6 +11,21 @@ export function resolveType(type: string): keyof Entities { case 'List': case 'Independents': case 'Audience': + case 'SpecificResource': + case 'CollectionPage': + case 'Quantity': + case 'RotateTransform': + case 'ScaleTransform': + case 'TranslateTransform': + case 'PerspectiveCamera': + case 'OrthographicCamera': + case 'AmbientLight': + case 'DirectionalLight': + case 'PointLight': + case 'SpotLight': + case 'AmbientAudio': + case 'PointAudio': + case 'SpotAudio': return 'ContentResource'; case 'ImageService1': case 'ImageService2': diff --git a/src/vault/vault-auto.ts b/src/vault/vault-auto.ts index 1ce3722..84b21c8 100644 --- a/src/vault/vault-auto.ts +++ b/src/vault/vault-auto.ts @@ -1,13 +1,30 @@ +import type { SerializeConfig } from '@iiif/parser'; import type { Collection, Manifest, Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; -import type { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import type { + CollectionNormalized as CollectionNormalizedV3, + ManifestNormalized as ManifestNormalizedV3, +} from '@iiif/parser/presentation-3-normalized/types'; +import { normalize as normalizePresentation4 } from '@iiif/parser/presentation-4'; +import type { + CollectionNormalized as CollectionNormalizedV4, + ManifestNormalized as ManifestNormalizedV4, + Presentation4NormalizeResult, +} from '@iiif/parser/presentation-4-normalized/types'; import type { BatchAction } from './actions'; -import type { ActionFromType, AllActions, Entities, IIIFStore, NormalizedEntity, PaginationState, RefToNormalized, RequestState } from './types'; -import { VaultZustandStore } from './store'; +import type { VaultZustandStore } from './store'; +import type { + ActionFromType, + AllActions, + Entities, + IIIFStore, + NormalizedEntity, + PaginationState, + RefToNormalized, + RequestState, +} from './types'; import type { ReactiveWrapped } from './utility/objects'; -import { Vault, type GetObjectOptions, type GetOptions, type VaultOptions } from './vault'; -import { Vault3 } from './vault3'; +import { type GetObjectOptions, type GetOptions, Vault, type VaultOptions } from './vault'; import { Vault4 } from './vault4'; -import { SerializeConfig } from '@iiif/parser'; type VaultAutoLoadJournalEntry = { id: string; @@ -16,8 +33,14 @@ type VaultAutoLoadJournalEntry = { export type VaultAutoOptions = Partial & { enablePresentation4?: boolean; - switchOnScene?: boolean; onVersionSwitch?: (from: 3, to: 4, context: { triggerId: string }) => void; + onVersionProbe?: (probe: { + id: string; + sourceVersion: Presentation4NormalizeResult['sourceVersion']; + diagnosticsCount: number; + rootType: string; + shouldSwitch: boolean; + }) => void; }; function cloneForReplay(value: T): T { @@ -27,54 +50,21 @@ function cloneForReplay(value: T): T { return JSON.parse(JSON.stringify(value)); } -function hasSceneResource(input: unknown): boolean { - const seen = new Set(); - const queue: unknown[] = [input]; - - while (queue.length) { - const current = queue.shift(); - if (!current || typeof current !== 'object') { - continue; - } - if (seen.has(current)) { - continue; - } - seen.add(current); - - if ((current as any).type === 'Scene') { - return true; - } - - if (Array.isArray(current)) { - for (const item of current) { - queue.push(item); - } - continue; - } - - for (const value of Object.values(current as Record)) { - queue.push(value); - } - } - - return false; -} - export class VaultAuto { - private readonly options: Required> & - Omit; + private readonly options: Required> & + Omit; private readonly vaultOptions: Partial; private readonly fetcher: (url: string, options: T) => unknown | Promise; - private readonly vault3: Vault3; + private readonly baseVault: Vault; private vault4Internal?: Vault4; - private activeVault: Vault3 | Vault4; + private activeVault: Vault | Vault4; private loadJournal: VaultAutoLoadJournalEntry[] = []; constructor(options?: VaultAutoOptions) { const { enablePresentation4 = false, - switchOnScene = true, onVersionSwitch, + onVersionProbe, reducers, defaultState, customFetcher, @@ -83,8 +73,8 @@ export class VaultAuto { this.options = { enablePresentation4, - switchOnScene, onVersionSwitch, + onVersionProbe, reducers, defaultState, customFetcher, @@ -99,8 +89,8 @@ export class VaultAuto { }; this.fetcher = customFetcher || this.defaultFetcher; - this.vault3 = new Vault3(this.vaultOptions); - this.activeVault = this.vault3; + this.baseVault = new Vault(this.vaultOptions); + this.activeVault = this.baseVault; } get v4(): Vault4 | undefined { @@ -115,7 +105,7 @@ export class VaultAuto { return this.getVersion() === 4; } - private getVault(): Vault3 | Vault4 { + private getVault(): Vault | Vault4 { return this.activeVault; } @@ -141,11 +131,50 @@ export class VaultAuto { }); } + private probeV4Switch(id: string, resource: unknown) { + let probeResult: { + id: string; + sourceVersion: Presentation4NormalizeResult['sourceVersion']; + diagnosticsCount: number; + rootType: string; + shouldSwitch: boolean; + }; + + try { + const probed = normalizePresentation4(resource) as Presentation4NormalizeResult; + const hasScene = probed.resource.type === 'Scene' || Object.values(probed.mapping).includes('Scene'); + const hasTimeline = probed.resource.type === 'Timeline' || Object.values(probed.mapping).includes('Timeline'); + const shouldSwitch = probed.sourceVersion === 4 || hasScene || hasTimeline; + + probeResult = { + id, + sourceVersion: probed.sourceVersion, + diagnosticsCount: probed.diagnostics.length, + rootType: probed.resource.type, + shouldSwitch, + }; + } catch { + probeResult = { + id, + sourceVersion: 'unknown', + diagnosticsCount: 0, + rootType: 'unknown', + shouldSwitch: false, + }; + } + + if (this.options.onVersionProbe) { + this.options.onVersionProbe(probeResult); + } + + return probeResult.shouldSwitch; + } + private maybeSwitchToV4(id: string, resource: unknown) { - if (!this.options.enablePresentation4 || !this.options.switchOnScene || this.vault4Internal) { + if (!this.options.enablePresentation4 || this.vault4Internal) { return; } - if (!hasSceneResource(resource)) { + if (!this.probeV4Switch(id, resource)) { return; } this.switchToV4(id); @@ -193,7 +222,7 @@ export class VaultAuto { } serialize(entity: Reference, config: SerializeConfig) { - return this.getVault().serialize(entity, config); + return (this.getVault() as any).serialize(entity, config as any) as Return; } toPresentation2(entity: Reference) { @@ -205,13 +234,33 @@ export class VaultAuto { } hydrate( - reference: string | R | NormalizedEntity | string[] | R[] | NormalizedEntity[], + reference: string | Partial, + type?: string | GetOptions, + options?: GetOptions + ): RefToNormalized; + hydrate( + reference: string[] | Partial[], type?: string | GetOptions, options?: GetOptions + ): RefToNormalized[]; + hydrate( + reference: string | R | NormalizedEntity | string[] | R[] | NormalizedEntity[], + type?: string | GetOptions, + options: GetOptions = {} ): RefToNormalized | RefToNormalized[] { - return this.getVault().hydrate(reference as any, type as any, options); + return (this.getVault() as any).hydrate(reference as any, type as any, options as any); } + get( + reference: string | Partial | Reference | SpecificResource, + type?: string | GetOptions, + options?: GetOptions + ): RefToNormalized; + get( + reference: string[] | Partial[] | Reference[] | SpecificResource[], + type?: string | GetOptions, + options?: GetOptions + ): RefToNormalized[]; get( reference: | string @@ -223,9 +272,9 @@ export class VaultAuto { | SpecificResource | SpecificResource[], type?: string | GetOptions, - options?: GetOptions + options: GetOptions = {} ): RefToNormalized | RefToNormalized[] { - return this.getVault().get(reference as any, type as any, options as any); + return (this.getVault() as any).get(reference as any, type as any, options as any); } select(selector: (state: IIIFStore) => R): R { @@ -248,18 +297,18 @@ export class VaultAuto { id: string | Reference, json?: unknown, mapper?: (resource: any) => any - ): Promise { + ): Promise { const _id = typeof id === 'string' ? id : id.id; - return this.load(_id, json, mapper); + return this.load(_id, json, mapper); } loadCollection( id: string | Reference, json?: unknown, mapper?: (resource: any) => any - ): Promise { + ): Promise { const _id = typeof id === 'string' ? id : id.id; - return this.load(_id, json, mapper); + return this.load(_id, json, mapper); } async load(id: string | Reference, json?: unknown, mapper?: (resource: any) => any): Promise { @@ -295,18 +344,18 @@ export class VaultAuto { id: string | Reference, json: unknown, mapper?: (resource: any) => any - ): ManifestNormalized | undefined { + ): ManifestNormalizedV3 | ManifestNormalizedV4 | undefined { const _id = typeof id === 'string' ? id : id.id; - return this.loadSync(_id, json, mapper); + return this.loadSync(_id, json, mapper); } loadCollectionSync( id: string | Reference, json: unknown, mapper?: (resource: any) => any - ): CollectionNormalized | undefined { + ): CollectionNormalizedV3 | CollectionNormalizedV4 | undefined { const _id = typeof id === 'string' ? id : id.id; - return this.loadSync(_id, json, mapper); + return this.loadSync(_id, json, mapper); } areInputsEqual(newInputs: readonly unknown[] | unknown, lastInputs: readonly unknown[] | unknown) { @@ -342,8 +391,8 @@ export class VaultAuto { async loadNextPage( resource: string | Reference, json?: any - ): Promise<[PaginationState | null, CollectionNormalized | null]> { - return this.getVault().loadNextPage(resource, json); + ): Promise<[PaginationState | null, CollectionNormalizedV3 | CollectionNormalizedV4 | null]> { + return (this.getVault() as any).loadNextPage(resource, json); } getResourceMeta(resource: string): Partial | undefined; @@ -365,7 +414,7 @@ export class VaultAuto { type?: string | GetObjectOptions, options?: GetObjectOptions ): RefToNormalized { - return this.getVault().getObject(reference as any, type as any, options as any); + return (this.getVault() as any).getObject(reference as any, type as any, options as any); } async loadObject( @@ -378,15 +427,15 @@ export class VaultAuto { async loadManifestObject( id: string | Reference, json?: any - ): Promise> { - return this.getVault().loadManifestObject(id, json); + ): Promise> { + return (this.getVault() as any).loadManifestObject(id, json); } async loadCollectionObject( id: string | Reference, json?: any - ): Promise> { - return this.getVault().loadCollectionObject(id, json); + ): Promise> { + return (this.getVault() as any).loadCollectionObject(id, json); } wrapObject(objectType: Reference) { diff --git a/src/vault/vault.ts b/src/vault/vault.ts index b08b87a..9b698bc 100644 --- a/src/vault/vault.ts +++ b/src/vault/vault.ts @@ -29,6 +29,7 @@ import { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentat import { isWrapped, ReactiveWrapped, wrapObject } from './utility/objects'; import { resolveType } from './utility/resolve-type'; import { actionListFromResourceV3, type ActionListFromResource } from './utility/action-list-from-resource'; +import { defaultFetcher as defaultVaultFetcher } from './utility/default-fetcher'; export type VaultOptions = { reducers: Record; @@ -91,17 +92,7 @@ export class Vault { return actionListFromResourceV3; } - defaultFetcher = (url: string) => { - return fetch(url).then((r) => { - if (r.status === 200) { - return r.json(); - } else { - const err = new Error(`${r.status} ${r.statusText}`); - err.name = `HTTPError`; - throw err; - } - }); - }; + defaultFetcher = defaultVaultFetcher; batch(cb: (vault: this) => void) { this.isBatching = true; diff --git a/src/vault/vault3.ts b/src/vault/vault3.ts deleted file mode 100644 index c5aee0e..0000000 --- a/src/vault/vault3.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { ActionListFromResource } from './utility/action-list-from-resource'; -import { actionListFromResourceV3 } from './utility/action-list-from-resource'; -import { Vault } from './vault'; - -export class Vault3 extends Vault { - protected getActionListFromResource(): ActionListFromResource { - return actionListFromResourceV3; - } -} diff --git a/src/vault/vault4.ts b/src/vault/vault4.ts index d7a428d..6e32b8a 100644 --- a/src/vault/vault4.ts +++ b/src/vault/vault4.ts @@ -1,9 +1,646 @@ -import type { ActionListFromResource } from './utility/action-list-from-resource'; -import { actionListFromResourceV4 } from './utility/action-list-from-resource'; -import { Vault } from './vault'; +/// + +import { + ActionFromType, + AllActions, + Entities, + IIIFStore, + NormalizedEntity, + PaginationState, + RefToNormalized, + RequestState, +} from './types'; +import { Collection, Manifest, Reference, SpecificResource } from '@iiif/parser/presentation-4/types'; +import { frameResource, HAS_PART, isSpecificResource, PART_OF, serializeConfigPresentation2 } from '@iiif/parser'; +import { + serialize, + SerializeConfig, + serializeConfigPresentation3, + serializeConfigPresentation4, +} from '@iiif/parser/presentation-4'; +import { BATCH_ACTIONS, BatchAction, batchActions, entityActions, metaActions } from './actions'; +import { createFetchHelper, areInputsEqual } from './utility'; +import { createStore, VaultZustandStore } from './store'; +import mitt, { Emitter } from 'mitt'; +import { + CollectionNormalized as CollectionNormalizedV4, + ManifestNormalized as ManifestNormalizedV4, +} from '@iiif/parser/presentation-4-normalized/types'; +import { isWrapped, ReactiveWrapped, wrapObject } from './utility/objects'; +import { resolveType } from './utility/resolve-type'; +import { actionListFromResourceV4, type ActionListFromResource } from './utility/action-list-from-resource'; +import { defaultFetcher as defaultVaultFetcher } from './utility/default-fetcher'; + +type RefToNormalizedV4 = Ref['type'] extends 'Manifest' + ? ManifestNormalizedV4 + : Ref['type'] extends 'Collection' + ? CollectionNormalizedV4 + : RefToNormalized; + +type VaultOptions = { + reducers: Record; + defaultState?: IIIFStore; + customFetcher: (url: string, options: T) => unknown | Promise; + enableDevtools: boolean; +}; + +type GetOptions = { + skipSelfReturn?: boolean; + parent?: Reference | string; + preserveSpecificResources?: boolean; + skipPartOfCheck?: boolean; +}; +type GetObjectOptions = GetOptions & { reactive?: boolean }; + +type AllActionsType = AllActions['type']; + +type EntityRef = IIIFStore['iiif']['entities'][Ref][string]; + +export type Vault4Options = VaultOptions; +export type Vault4GetOptions = GetOptions; +export type Vault4GetObjectOptions = GetObjectOptions; +export type Vault4EntityRef = EntityRef; + +export class Vault4 { + protected readonly options: VaultOptions; + private readonly store: VaultZustandStore; + private readonly emitter: Emitter; + private isBatching = false; + private batchQueue: AllActions[] = []; + remoteFetcher: (str: string, options?: any, mapper?: (resource: any) => any) => Promise; + staticFetcher: ( + str: string, + json: any, + mapper?: (resource: any) => any + ) => Promise | NormalizedEntity | undefined; + + constructor(options?: Partial, store?: VaultZustandStore) { + this.options = Object.assign( + { + reducers: {}, + customFetcher: this.defaultFetcher, + enableDevtools: true, + }, + options || {} + ); + this.store = + store || + createStore({ + customReducers: this.options.reducers, + defaultState: this.options.defaultState, + enableDevtools: this.options.enableDevtools, + }); + this.emitter = mitt(); + this.remoteFetcher = createFetchHelper(this as any, this.options.customFetcher, { + actionListFromResource: this.getActionListFromResource(), + }) as any; + this.staticFetcher = createFetchHelper(this as any, (id: string, json: any) => json, { + actionListFromResource: this.getActionListFromResource(), + }); + } -export class Vault4 extends Vault { protected getActionListFromResource(): ActionListFromResource { return actionListFromResourceV4; } + + defaultFetcher = defaultVaultFetcher; + + batch(cb: (vault: this) => void) { + this.isBatching = true; + try { + cb(this); + this.isBatching = false; + this.dispatch(batchActions({ actions: this.batchQueue })); + } catch (e) { + // Even if we error, we still need to reset the queue. + this.batchQueue = []; + this.isBatching = false; + // And then rethrow. + throw e; + } + this.batchQueue = []; + } + + async asyncBatch(cb: (vault: this) => Promise | void) { + this.isBatching = true; + try { + await cb(this); + this.isBatching = false; + this.dispatch(batchActions({ actions: this.batchQueue })); + } catch (e) { + // Even if we error, we still need to reset the queue. + this.batchQueue = []; + this.isBatching = false; + // And then rethrow. + throw e; + } + this.batchQueue = []; + } + + modifyEntityField(entity: Reference, key: string, value: any) { + this.dispatch( + entityActions.modifyEntityField({ + id: entity.id, + type: entity.type, + key, + value, + }) + ); + } + + dispatch(action: AllActions | BatchAction) { + if (!this.isBatching) { + if (action.type === BATCH_ACTIONS) { + for (const realAction of action.payload.actions) { + this.emitter.emit(realAction.type, { action: realAction, state: this.store.getState() }); + } + this.store.dispatch(action); + const state = this.getState(); + for (const realAction of action.payload.actions) { + this.emitter.emit(`after:${realAction.type}`, { action: realAction, state }); + } + return; + } + + this.emitter.emit(action.type, { action, state: this.store.getState() }); + this.store.dispatch(action); + const state = this.store.getState(); + this.emitter.emit(`after:${action.type}`, { action, state }); + return; + } else { + this.batchQueue.push(action as AllActions); + } + } + + on( + event: Type | `after:${Type}`, + handler: (ctx: { action: ActionFromType; state: IIIFStore }) => void + ) { + this.emitter.on(event, handler); + return () => { + this.emitter.off(event, handler); + }; + } + + serialize(entity: Reference, config: SerializeConfig) { + return serialize(this.getState().iiif as any, entity as any, config as any); + } + + toPresentation2(entity: Reference) { + return this.serialize(entity, serializeConfigPresentation2 as any); + } + + toPresentation3(entity: Reference) { + return this.serialize(entity, serializeConfigPresentation3); + } + + toPresentation4(entity: Reference) { + return this.serialize(entity, serializeConfigPresentation4); + } + + hydrate( + reference: string | Partial, + type?: string | GetOptions, + options?: GetOptions + ): RefToNormalizedV4; + hydrate( + reference: string[] | Partial[], + type?: string | GetOptions, + options?: GetOptions + ): RefToNormalizedV4[]; + hydrate( + reference: string | R | NormalizedEntity | string[] | R[] | NormalizedEntity[], + type?: string | GetOptions, + options: GetOptions = {} + ): RefToNormalizedV4 | RefToNormalizedV4[] { + return this.get(reference as any, type as any, { ...options, skipSelfReturn: false }); + } + + get( + reference: string | Partial | Reference | SpecificResource, + type?: string | GetOptions, + options?: GetOptions + ): RefToNormalizedV4; + get( + reference: string[] | Partial[] | Reference[] | SpecificResource[], + type?: string | GetOptions, + options?: GetOptions + ): RefToNormalizedV4[]; + get( + reference: + | string + | R + | NormalizedEntity + | string[] + | R[] + | NormalizedEntity[] + | SpecificResource + | SpecificResource[], + type?: string | GetOptions, + options: GetOptions = {} + ): RefToNormalizedV4 | RefToNormalizedV4[] { + if (typeof type !== 'string') { + options = type || {}; + type = undefined; + } + + const { skipSelfReturn = true } = options || {}; + let parent = options.parent ? (typeof options.parent === 'string' ? options.parent : options.parent.id) : undefined; + + // Multiples. + if (Array.isArray(reference)) { + return (reference as any[]).map((i) => this.get(i, options)) as EntityRef[]; + } + + const state = this.getState(); + + if (isSpecificResource(reference) && !options.preserveSpecificResources) { + reference = reference.source; + } + + // String IDs. + if (typeof reference === 'string') { + const _type: any = resolveType(type ? type : state.iiif.mapping[reference]); + if (!_type) { + if (skipSelfReturn) { + return null as any; + } + return { id: reference, type: 'unknown' } as any; + } + reference = { id: reference, type: _type }; + } + + if (reference && (reference as any).partOf && !parent && !options.skipPartOfCheck) { + const first = Array.isArray((reference as any).partOf) ? (reference as any).partOf[0] : (reference as any).partOf; + if (first) { + if (typeof first === 'string') { + parent = first; + } + if (typeof first.id === 'string') { + parent = first.id; + } + } + } + + const _type = resolveType(type ? type : (reference as any)?.type); + const _id = (reference as any)?.id; + const entities = (state.iiif.entities as any)[_type]; + if (!entities) { + const request = state.iiif.requests[_id]; + if (request && request.resourceUri !== _id) { + return this.get(request.resourceUri, options); + } + + if (skipSelfReturn) { + return null as any; + } + return reference as any; + } + + const found = entities[(reference as any).id]; + if (found && found[HAS_PART]) { + const framing = found[HAS_PART].find((t: any) => { + return parent ? t[PART_OF] === parent : t[PART_OF] === found.id; + }); + return frameResource(found, framing); + } + + return entities[(reference as any).id] || (skipSelfReturn ? null : reference); + } + + select(selector: (state: IIIFStore) => R): R { + return selector(this.getState()); + } + + getStore(): VaultZustandStore { + return this.store; + } + + getState(): IIIFStore { + return this.store.getState(); + } + + deep(input?: any, prev?: any) { + if (typeof input === 'undefined') { + return this.get(prev, { skipSelfReturn: false }); + } + if (typeof input === 'function') { + try { + const next = input(this.get(prev, { skipSelfReturn: false })); + const fn: any = (newInput: any) => this.deep(newInput, next); + fn.size = Array.isArray(next) ? next.length : 1; + return fn; + } catch (e) { + const fn: any = (newInput: any) => this.deep(newInput, undefined); + fn.size = 0; + return fn; + } + } + const fn: any = (newInput: any) => this.deep(newInput, input); + fn.size = Array.isArray(input) ? input.length : 1; + return fn; + } + + loadManifest( + id: string | Reference, + json?: unknown, + mapper?: (resource: any) => any + ): Promise { + const _id = typeof id === 'string' ? id : id.id; + return this.load(_id, json, mapper); + } + + loadCollection( + id: string | Reference, + json?: unknown, + mapper?: (resource: any) => any + ): Promise { + const _id = typeof id === 'string' ? id : id.id; + return this.load(_id, json, mapper); + } + + load(id: string | Reference, json?: unknown, mapper?: (resource: any) => any): Promise { + const _id = typeof id === 'string' ? id : id.id; + if (json) { + return Promise.resolve(this.staticFetcher(_id, json, mapper)) as Promise; + } + return Promise.resolve(this.remoteFetcher(_id, {}, mapper)) as Promise; + } + + loadSync(id: string | Reference, json: unknown, mapper?: (resource: any) => any): T | undefined { + const _id = typeof id === 'string' ? id : id.id; + return this.staticFetcher(_id, json, mapper) as T | undefined; + } + + loadManifestSync( + id: string | Reference, + json: unknown, + mapper?: (resource: any) => any + ): ManifestNormalizedV4 | undefined { + const _id = typeof id === 'string' ? id : id.id; + return this.loadSync(_id, json, mapper); + } + + loadCollectionSync( + id: string | Reference, + json: unknown, + mapper?: (resource: any) => any + ): CollectionNormalizedV4 | undefined { + const _id = typeof id === 'string' ? id : id.id; + return this.loadSync(_id, json, mapper); + } + + areInputsEqual(newInputs: readonly unknown[] | unknown, lastInputs: readonly unknown[] | unknown) { + return areInputsEqual(newInputs, lastInputs); + } + + subscribe( + selector: (state: IIIFStore) => T, + subscription: (state: T, vault: Vault4) => void, + skipInitial: boolean + ): () => void; + subscribe(subscription: (state: T, vault: Vault4) => void, skipInitial?: boolean): () => void; + subscribe( + selector: ((state: IIIFStore) => T) | ((state: T, vault: Vault4) => void), + subscription?: ((state: T, vault: Vault4) => void) | boolean, + skipInitial?: boolean + ): () => void { + if ( + typeof skipInitial === 'undefined' && + (typeof subscription === 'undefined' || subscription === false || subscription === true) + ) { + skipInitial = subscription; + subscription = selector as any; + selector = (a: any) => a; + } + + return this.store.subscribe(selector as any, (s: any) => (subscription as any)(s, this), { + equalityFn: areInputsEqual, + fireImmediately: !skipInitial, + }); + } + + async ensureLoaded(_id: string | Reference): Promise { + const id = typeof _id === 'string' ? _id : _id.id; + if (!this.requestStatus(id)) { + await this.load(id); + } + } + + requestStatus(id: string): RequestState[any] | undefined { + return this.select((state) => { + return state.iiif.requests[id]; + }); + } + + // Pagination built on "meta". + getPaginationState(resource: string | Reference): PaginationState | null { + // This will return the pagination state of a resource from it's meta. + // If there is no pagination state, it will create it if needed. + const id = typeof resource === 'string' ? resource : resource.id; + if (!id) return null; + + const existing = this.getResourceMeta(id, '@vault/pagination'); + if (existing?.state) { + return existing.state; + } + + const fullResource = this.get(resource); + if (fullResource.first) { + const initialState: PaginationState = { + currentPage: null, + currentPageIndex: null, + isFetching: false, + isFullyLoaded: false, + next: fullResource.first, + page: 1, + pages: [], + previous: null, + totalItems: fullResource.total, + currentLength: 0, + }; + + this.setMetaValue([id, '@vault/pagination', 'state'], initialState); + + return initialState; + } + + // @todo generate from resource. + + return null; + } + + async loadNextPage( + resource: string | Reference, + json?: any + ): Promise<[PaginationState | null, CollectionNormalizedV4 | null]> { + const id = typeof resource === 'string' ? resource : resource.id; + if (!id) return [null, null]; + + // This will get the pagination state and fetch the next page and load it into the vault. + const state = this.getPaginationState(resource); + if (!state || state.isFullyLoaded || !state.next) { + return [null, null]; + } + + if (state.isFetching) { + return [state, null]; + } + + const nextPage = typeof state.next === 'string' ? state.next : (state.next as any).id; + const previousPage = state.currentPage; + + // 1. Update the meta state. + const newState: PaginationState = { + ...state, + isFetching: true, + }; + this.setMetaValue([id, '@vault/pagination', 'state'], newState); + + // 2. Make the fetch request. + let collectionPage; + try { + collectionPage = await this.loadCollection(nextPage, json, (mapped) => { + // This is required because the page MIGHT have the same id. + const { id, ['@id']: _id, ...properties } = mapped || {}; + + if (_id) { + return { ['@id']: nextPage, ...properties }; + } + + return { id: nextPage, ...properties }; + }); + } catch (err) { + const errState: PaginationState = { + ...state, + isFetching: false, + error: err, + }; + this.setMetaValue([id, '@vault/pagination', 'state'], errState); + return [errState, null]; + } + + if (!collectionPage) { + const errState: PaginationState = { + ...state, + isFetching: false, + error: new Error('Collection not found'), + }; + this.setMetaValue([id, '@vault/pagination', 'state'], errState); + return [errState, null]; + } + + const fullCollection = this.get(id); + const combinedItems = [...(fullCollection.items || []), ...(collectionPage.items || [])].map((resource) => ({ + id: resource.id, + type: resource.type, + })); + + this.modifyEntityField({ id, type: 'Collection' }, 'items', combinedItems); + const latestState = this.getPaginationState(resource); + if (!latestState) throw new Error('Pagination state not found'); + const successState: PaginationState = { + ...latestState, + isFetching: false, + error: null, + currentPage: (collectionPage.id || null) as string | null, + next: (collectionPage as any).next?.id || null, + currentPageIndex: latestState.pages.length, + currentLength: combinedItems.length, + pages: [ + ...latestState.pages, + { + id: collectionPage.id as string, + type: 'Collection', + startIndex: (fullCollection.items || []).length, + pageLength: collectionPage.items.length, + order: typeof latestState.currentPageIndex === 'number' ? latestState.currentPageIndex + 1 : 0, + }, + ], + isFullyLoaded: !(collectionPage as any).next, + previous: previousPage, + page: latestState.pages.length + 1, + }; + + this.setMetaValue([id, '@vault/pagination', 'state'], successState); + + return [successState, collectionPage]; + } + + getResourceMeta(resource: string): Partial | undefined; + getResourceMeta(resource: string, metaKey: Key): T[Key] | undefined; + getResourceMeta( + resource: string, + metaKey?: Key + ): Partial | T[Key] | undefined { + const resourceMeta = this.getState().iiif.meta[resource as any] as any; + + if (!resourceMeta) { + return undefined; + } + if (!metaKey) { + return resourceMeta as Partial; + } + + return resourceMeta[metaKey] as T[Key]; + } + + getObject( + reference: string | Partial, + type?: string | GetObjectOptions, + options?: GetObjectOptions + ): RefToNormalizedV4; + getObject( + reference: string | R | NormalizedEntity, + type?: string | GetObjectOptions, + options: GetObjectOptions = {} + ): RefToNormalizedV4 { + const { reactive, ...otherOptions } = options; + return wrapObject(this.get(reference as any, type, otherOptions), this as any, reactive) as any; + } + + async loadObject( + id: string | Reference, + json?: any + ): Promise> { + return wrapObject(await this.load(id, json), this as any); + } + async loadManifestObject( + id: string | Reference, + json?: any + ): Promise> { + return wrapObject(await this.loadManifest(id, json), this as any); + } + async loadCollectionObject( + id: string | Reference, + json?: any + ): Promise> { + return wrapObject(await this.loadCollection(id, json), this as any); + } + wrapObject(objectType: Reference) { + return wrapObject(this.get(objectType, { skipSelfReturn: false }), this as any); + } + isWrapped(object: any) { + return isWrapped(object); + } + setMetaValue( + [id, meta, key]: [string, string, string], + newValueOrUpdate: Value | ((oldValue: Value | undefined) => Value) + ) { + this.dispatch( + typeof newValueOrUpdate === 'function' + ? metaActions.setMetaValueDynamic({ + id, + meta: meta as any, + key, + updateValue: newValueOrUpdate as any, + }) + : metaActions.setMetaValue({ + id, + meta: meta as any, + key, + value: newValueOrUpdate, + }) + ); + } } From dfb72a30ca35e33d120d1e4cee22ba150ad102f2 Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Thu, 19 Feb 2026 00:20:42 +0000 Subject: [PATCH 08/18] Build fixes --- .codesandbox/ci.json | 7 -- .github/workflows/build-test.yml | 1 + __tests__/vault/vault-auto.test.ts | 114 ++++++++++++++++++++++++++++- package.json | 22 +++++- src/vault.ts | 4 +- src/vault/vault-auto.ts | 113 ++++++++++++++++++++++++++++ tsdown.config.ts | 2 + 7 files changed, 249 insertions(+), 14 deletions(-) delete mode 100644 .codesandbox/ci.json diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json deleted file mode 100644 index 8cb48f3..0000000 --- a/.codesandbox/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "sandboxes": [ - "vanilla-typescript", - "vanilla" - ], - "node": "18" -} diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index aacd483..6496d30 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -42,3 +42,4 @@ jobs: - run: pnpm run test - run: node pkg-tests/node-load.cjs - run: node pkg-tests/node-load.mjs + - run: pnpm dlx pkg-pr-new publish diff --git a/__tests__/vault/vault-auto.test.ts b/__tests__/vault/vault-auto.test.ts index 7e676cd..be5f560 100644 --- a/__tests__/vault/vault-auto.test.ts +++ b/__tests__/vault/vault-auto.test.ts @@ -1,9 +1,10 @@ +import type { ManifestNormalized as ManifestNormalizedV3 } from '@iiif/parser/presentation-3-normalized/types'; +import type { ManifestNormalized as ManifestNormalizedV4 } from '@iiif/parser/presentation-4-normalized/types'; import invariant from 'tiny-invariant'; import { describe, expect, test } from 'vitest'; import cssManifest from '../../fixtures/cookbook/css.json'; import p4SceneManifest from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; -import type { ManifestNormalized as ManifestNormalizedV3 } from '@iiif/parser/presentation-3-normalized/types'; -import type { ManifestNormalized as ManifestNormalizedV4 } from '@iiif/parser/presentation-4-normalized/types'; +import p4UpgradedCssManifest from '../../fixtures/presentation-4/upgraded-from-p3/cookbook--css.json'; import { VaultAuto } from '../../src/vault'; describe('VaultAuto', () => { @@ -41,8 +42,115 @@ describe('VaultAuto', () => { expect(vault.v4).toBeDefined(); // Ensure replay kept earlier loaded v3 resources available after switch. - const replayedV3Manifest = vault.get({ id: cssManifest.id, type: 'Manifest' }); + const replayedV3Manifest = vault.get({ + id: cssManifest.id, + type: 'Manifest', + }); expect(replayedV3Manifest).toBeTruthy(); expect((replayedV3Manifest as any).id).toBe(cssManifest.id); }); + + test('surfaces .get() target-resolution drift on shared non-3D content after v4 switch', () => { + const annotationId = 'https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/page/p2/anno-1'; + const canvasId = 'https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1'; + + const v3Vault = new VaultAuto(); + v3Vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + const v3Annotation = v3Vault.get({ + id: annotationId, + type: 'Annotation', + }) as any; + const v3Target = v3Vault.get(v3Annotation.target) as any; + + expect(v3Vault.getVersion()).toBe(3); + expect(v3Annotation.target.type).toBe('SpecificResource'); + expect(v3Target.type).toBe('Canvas'); + expect(v3Target.id).toBe(canvasId); + + const v4Vault = new VaultAuto({ enablePresentation4: true }); + v4Vault.loadSync(p4UpgradedCssManifest.id, JSON.parse(JSON.stringify(p4UpgradedCssManifest))); + const v4Annotation = v4Vault.get({ + id: annotationId, + type: 'Annotation', + }) as any; + const v4Target = v4Vault.get(v4Annotation.target) as any; + + expect(v4Vault.getVersion()).toBe(4); + expect(v4Annotation.target.type).toBe('ContentResource'); + expect(v4Target.type).toBe('SpecificResource'); + expect(v4Target.source.id).toBe(canvasId); + expect(Array.isArray(v4Target.selector)).toBe(true); + }); + + test('surfaces .get() body-resolution drift on shared non-3D content after v4 switch', () => { + const annotationId = 'https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/page/p2/anno-1'; + const textualBodyId = 'https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/text1'; + + const v3Vault = new VaultAuto(); + v3Vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + const v3Annotation = v3Vault.get({ + id: annotationId, + type: 'Annotation', + }) as any; + const v3Body = v3Vault.get(v3Annotation.body) as any[]; + + expect(Array.isArray(v3Annotation.body)).toBe(true); + expect(Array.isArray(v3Body)).toBe(true); + expect(v3Body[0].id).toBe(textualBodyId); + expect(v3Body[0].type).toBe('TextualBody'); + + const v4Vault = new VaultAuto({ enablePresentation4: true }); + v4Vault.loadSync(p4UpgradedCssManifest.id, JSON.parse(JSON.stringify(p4UpgradedCssManifest))); + const v4Annotation = v4Vault.get({ + id: annotationId, + type: 'Annotation', + }) as any; + const v4Body = v4Vault.get(v4Annotation.body) as any; + const v4BodySource = v4Vault.get(v4Body.source) as any; + + expect(v4Vault.getVersion()).toBe(4); + expect(Array.isArray(v4Annotation.body)).toBe(false); + expect(v4Annotation.body.type).toBe('ContentResource'); + expect(v4Body.type).toBe('SpecificResource'); + expect(v4BodySource.id).toBe(textualBodyId); + expect(v4BodySource.type).toBe('TextualBody'); + }); + + test('provides stable target/body helpers across v3 and v4 for shared fixtures', () => { + const annotationRef = { + id: 'https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/page/p2/anno-1', + type: 'Annotation', + }; + const canvasId = 'https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1'; + const textualBodyId = 'https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/text1'; + + const v3Vault = new VaultAuto(); + v3Vault.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + const v3Targets = v3Vault.resolveAnnotationTargets(annotationRef); + const v3Bodies = v3Vault.resolveAnnotationBodies(annotationRef) as any[]; + + expect(v3Targets).toHaveLength(1); + expect(v3Targets[0].source.id).toBe(canvasId); + expect(v3Targets[0].selector).toEqual([{ type: 'FragmentSelector', value: 'xywh=700,1250,1850,1150' }]); + expect(v3Bodies).toHaveLength(1); + expect(v3Bodies[0].id).toBe(textualBodyId); + expect(v3Bodies[0].type).toBe('TextualBody'); + + const v4Vault = new VaultAuto({ enablePresentation4: true }); + v4Vault.loadSync(p4UpgradedCssManifest.id, JSON.parse(JSON.stringify(p4UpgradedCssManifest))); + const v4Targets = v4Vault.resolveAnnotationTargets(annotationRef); + const v4Bodies = v4Vault.resolveAnnotationBodies(annotationRef) as any[]; + + expect(v4Vault.getVersion()).toBe(4); + expect(v4Targets).toHaveLength(1); + expect(v4Targets[0].source.id).toBe(canvasId); + expect(v4Targets[0].selector).toEqual([{ type: 'FragmentSelector', value: 'xywh=700,1250,1850,1150' }]); + expect(v4Bodies).toHaveLength(1); + expect(v4Bodies[0].id).toBe(textualBodyId); + expect(v4Bodies[0].type).toBe('TextualBody'); + + expect(v4Vault.asArray('x')).toEqual(['x']); + expect(v4Vault.asArray(['x', 'y'])).toEqual(['x', 'y']); + expect(v4Vault.asArray(null)).toEqual([]); + }); }); diff --git a/package.json b/package.json index 60e29f9..c32707f 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "bugs": "https://github.com/iiif-commons/iiif-helpers/issues", "repository": { "type": "git", - "url": "https://github.com/iiif-commons/iiif-helpers" + "url": "git+https://github.com/iiif-commons/iiif-helpers.git" }, "version": "1.5.8", "license": "MIT", @@ -168,6 +168,26 @@ "default": "./dist/vault.js" } }, + "./vault-4": { + "require": { + "types": "./dist/vault-4.d.ts", + "default": "./dist/vault-4.cjs" + }, + "import": { + "types": "./dist/vault-4.d.ts", + "default": "./dist/vault-4.js" + } + }, + "./vault-auto": { + "require": { + "types": "./dist/vault-auto.d.ts", + "default": "./dist/vault-auto.cjs" + }, + "import": { + "types": "./dist/vault-auto.d.ts", + "default": "./dist/vault-auto.js" + } + }, "./vault-node": { "require": { "types": "./dist/vault-node.d.ts", diff --git a/src/vault.ts b/src/vault.ts index 1f320af..b0e0c2d 100644 --- a/src/vault.ts +++ b/src/vault.ts @@ -1,5 +1,3 @@ -export * from './vault/vault'; -export * from './vault/vault4'; -export * from './vault/vault-auto'; export * from './vault/global-vault'; export * from './vault/types'; +export * from './vault/vault'; diff --git a/src/vault/vault-auto.ts b/src/vault/vault-auto.ts index 84b21c8..2d97b91 100644 --- a/src/vault/vault-auto.ts +++ b/src/vault/vault-auto.ts @@ -31,6 +31,14 @@ type VaultAutoLoadJournalEntry = { resource: unknown; }; +export type CanonicalSpecificResource = { + source: { id: string; type: string }; + selector: Array<{ type: string; [key: string]: unknown }>; + styleClass?: string; + language?: string[]; + raw: unknown; +}; + export type VaultAutoOptions = Partial & { enablePresentation4?: boolean; onVersionSwitch?: (from: 3, to: 4, context: { triggerId: string }) => void; @@ -50,6 +58,17 @@ function cloneForReplay(value: T): T { return JSON.parse(JSON.stringify(value)); } +function splitIdFragment(id: string): { idWithoutFragment: string; fragment?: string } { + const hashIndex = id.indexOf('#'); + if (hashIndex === -1) { + return { idWithoutFragment: id }; + } + return { + idWithoutFragment: id.slice(0, hashIndex), + fragment: id.slice(hashIndex + 1), + }; +} + export class VaultAuto { private readonly options: Required> & Omit; @@ -277,6 +296,100 @@ export class VaultAuto { return (this.getVault() as any).get(reference as any, type as any, options as any); } + asArray(value: T | T[] | null | undefined): T[] { + if (typeof value === 'undefined' || value === null) { + return []; + } + return Array.isArray(value) ? value : [value]; + } + + getCanonicalSpecificResource(input: unknown): CanonicalSpecificResource | null { + const resolved = this.get(input as any, { + skipSelfReturn: false, + preserveSpecificResources: true, + }) as any; + const candidate = resolved ?? input; + if (!candidate || typeof candidate !== 'object') { + return null; + } + + let source: any = null; + let selector: Array<{ type: string; [key: string]: unknown }> = []; + let styleClass: string | undefined; + let language: string[] | undefined; + + if (candidate.type === 'SpecificResource') { + source = candidate.source ?? null; + selector = this.asArray(candidate.selector as any); + styleClass = candidate.styleClass; + language = Array.isArray(candidate.language) ? candidate.language : undefined; + } else if (typeof candidate.id === 'string') { + source = candidate; + } else if (typeof candidate === 'string') { + source = { id: candidate, type: 'unknown' }; + } else { + return null; + } + + if (typeof source === 'string') { + source = { id: source, type: 'unknown' }; + } + if (!source || typeof source.id !== 'string') { + return null; + } + + const { idWithoutFragment, fragment } = splitIdFragment(source.id); + if (fragment) { + source = { + ...source, + id: idWithoutFragment, + }; + if (!selector.length) { + selector = [{ type: 'FragmentSelector', value: fragment }]; + } + } + + return { + source: { + id: source.id, + type: source.type || 'unknown', + }, + selector, + styleClass, + language, + raw: candidate, + }; + } + + resolveAnnotationTargets(annotation: unknown): CanonicalSpecificResource[] { + const fullAnnotation = this.get(annotation as any, { skipSelfReturn: false }) as any; + if (!fullAnnotation || typeof fullAnnotation !== 'object') { + return []; + } + + return this.asArray(fullAnnotation.target) + .map((target) => this.getCanonicalSpecificResource(target)) + .filter((target): target is CanonicalSpecificResource => target !== null); + } + + resolveAnnotationBodies(annotation: unknown): any[] { + const fullAnnotation = this.get(annotation as any, { skipSelfReturn: false }) as any; + if (!fullAnnotation || typeof fullAnnotation !== 'object') { + return []; + } + + return this.asArray(fullAnnotation.body) + .map((body) => this.get(body as any, { skipSelfReturn: false }) as any) + .filter((body) => body !== null && typeof body !== 'undefined') + .map((body) => { + if (body?.type === 'SpecificResource' && body?.source) { + const unwrapped = this.get(body.source, { skipSelfReturn: false }) as any; + return unwrapped ?? body.source; + } + return body; + }); + } + select(selector: (state: IIIFStore) => R): R { return this.getVault().select(selector); } diff --git a/tsdown.config.ts b/tsdown.config.ts index 84d094f..8c1a140 100644 --- a/tsdown.config.ts +++ b/tsdown.config.ts @@ -21,6 +21,8 @@ export default defineConfig((options) => ({ sequences: 'src/sequences.ts', 'nav-date': 'src/nav-date.ts', vault: 'src/vault.ts', + 'vault-4': 'src/vault/vault4.ts', + 'vault-auto': 'src/vault/vault-auto.ts', 'vault-node': 'src/vault-node.ts', 'vault-store': 'src/vault-store.ts', 'vault-actions': 'src/vault-actions.ts', From f00f7ac968f4507a525fa27af6cf85fc95eb8ccc Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Thu, 19 Feb 2026 00:21:42 +0000 Subject: [PATCH 09/18] Re-run upgrade --- .../upgraded-from-p3/cookbook--choice.json | 92 +- .../upgraded-from-p3/cookbook--composite.json | 88 +- .../upgraded-from-p3/cookbook--css.json | 128 +- .../cookbook--multimedia.json | 68 +- .../upgraded-from-p3/cookbook--toc-av.json | 28 +- .../upgraded-from-p3/cookbook--toc.json | 240 +- .../upgraded-from-p3/p3--bl-av-manifest.json | 310 +- .../upgraded-from-p3/p3--exhibit-2.json | 9470 ++++---- .../upgraded-from-p3/p3--ghent-choices.json | 19230 ++++++++-------- .../upgraded-from-p3/p3--has-part.json | 40 +- .../upgraded-from-p3/p3--ldmax.json | 228 +- 11 files changed, 14771 insertions(+), 15151 deletions(-) diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json index 2ed2791..9893547 100644 --- a/fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json @@ -24,57 +24,53 @@ "motivation": [ "painting" ], - "body": [ - { - "type": "Choice", - "items": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "width": 2000, - "height": 1271, - "label": { - "en": [ - "Natural Light" - ] - }, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", - "type": "ImageService3", - "profile": "level1" - } + "body": { + "type": "Choice", + "items": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 2000, + "height": 1271, + "label": { + "en": [ + "Natural Light" ] }, - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "width": 2000, - "height": 1271, - "label": { - "en": [ - "X-Ray" - ] - }, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", - "type": "ImageService3", - "profile": "level1" - } + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-natural", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "width": 2000, + "height": 1271, + "label": { + "en": [ + "X-Ray" ] - } - ] - } - ], - "target": [ - { - "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0033-choice/canvas/p1", - "type": "Canvas" - } - ] + }, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/421e65be2ce95439b3ad6ef1f2ab87a9-dee-xray", + "type": "ImageService3", + "profile": "level1" + } + ] + } + ] + }, + "target": { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0033-choice/canvas/p1", + "type": "Canvas" + } } ] } diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json index 1dda47c..569b8b7 100644 --- a/fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json @@ -29,28 +29,24 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 5412, - "width": 7216, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux", - "type": "ImageService3", - "profile": "level1" - } - ] - } - ], - "target": [ - { - "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/canvas/p1", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 5412, + "width": 7216, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/canvas/p1", + "type": "Canvas" + } }, { "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/annotation/p0002-image", @@ -58,33 +54,29 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux_miniature/full/max/0/native.jpg", - "type": "Image", - "format": "image/jpeg", - "label": { - "fr": [ - "Miniature [Chilpéric Ier tue Galswinthe, se remarie et est assassiné]" - ] - }, - "width": 2138, - "height": 2414, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux_miniature", - "type": "ImageService1", - "profile": "level2" - } + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux_miniature/full/max/0/native.jpg", + "type": "Image", + "format": "image/jpeg", + "label": { + "fr": [ + "Miniature [Chilpéric Ier tue Galswinthe, se remarie et est assassiné]" ] - } - ], - "target": [ - { - "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/canvas/p1#xywh=3949,994,1091,1232", - "type": "Canvas" - } - ] + }, + "width": 2138, + "height": 2414, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux_miniature", + "type": "ImageService1", + "profile": "level2" + } + ] + }, + "target": { + "id": "https://preview.iiif.io/cookbook/3333-choice/recipe/0036-composition-from-multiple-images/canvas/p1#xywh=3949,994,1091,1232", + "type": "Canvas" + } } ] } diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--css.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--css.json index a038162..3808c12 100644 --- a/fixtures/presentation-4/upgraded-from-p3/cookbook--css.json +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--css.json @@ -27,28 +27,24 @@ "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": 3966, - "width": 8800, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", - "profile": "level1", - "type": "ImageService3" - } - ] - } - ], - "target": [ - { - "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3966, + "width": 8800, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/36ca0a3370db128ec984b33d71a1543d-100320001004", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1", + "type": "Canvas" + } } ] } @@ -65,30 +61,28 @@ "commenting" ], "stylesheet": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/style.css", - "body": [ - { - "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/sr1", - "type": "SpecificResource", - "styleClass": "author1", - "source": { - "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/text1", - "type": "TextualBody", - "language": "en", - "format": "text/html", - "value": "

Three of the four pursuits of refined and noble men named in the screen's title are shown on this side of the screen: go, the koto, and tools for calligraphy. Each is in a container or wrapper. (GR)

" - } + "body": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/sr1", + "type": "SpecificResource", + "styleClass": "author1", + "source": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/text1", + "type": "TextualBody", + "language": [ + "en" + ], + "format": "text/html", + "value": "

Three of the four pursuits of refined and noble men named in the screen's title are shown on this side of the screen: go, the koto, and tools for calligraphy. Each is in a container or wrapper. (GR)

" } - ], - "target": [ - { - "type": "SpecificResource", - "source": { - "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1#xywh=700,1250,1850,1150", - "type": "Canvas" - }, - "styleClass": "author1" - } - ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1#xywh=700,1250,1850,1150", + "type": "Canvas" + }, + "styleClass": "author1" + } }, { "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/page/p2/anno-2", @@ -97,30 +91,28 @@ "commenting" ], "stylesheet": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/style.css", - "body": [ - { - "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/sr2", - "type": "SpecificResource", - "styleClass": "author2", - "source": { - "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/text2", - "type": "TextualBody", - "language": "en", - "format": "text/html", - "value": "

The detail in the natural beauty of the setting could be seen as a contrast (or balance) to the manufactured pursuits of noble men. (TK)

" - } + "body": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/sr2", + "type": "SpecificResource", + "styleClass": "author2", + "source": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/body/text2", + "type": "TextualBody", + "language": [ + "en" + ], + "format": "text/html", + "value": "

The detail in the natural beauty of the setting could be seen as a contrast (or balance) to the manufactured pursuits of noble men. (TK)

" } - ], - "target": [ - { - "type": "SpecificResource", - "source": { - "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1#xywh=170,160,2200,1000", - "type": "Canvas" - }, - "styleClass": "author2" - } - ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1#xywh=170,160,2200,1000", + "type": "Canvas" + }, + "styleClass": "author2" + } } ] } diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json index ce3fa93..2059c91 100644 --- a/fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json @@ -25,28 +25,24 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3024, - "width": 4032, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", - "profile": "level1", - "type": "ImageService3" - } - ] - } - ], - "target": [ - { - "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/canvas", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3024, + "width": 4032, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": { + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/canvas", + "type": "Canvas" + } }, { "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/annotation/p0002-video q", @@ -54,22 +50,18 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", - "type": "Video", - "format": "video/mp4", - "height": 360, - "width": 480, - "duration": 3971.24 - } - ], - "target": [ - { - "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/canvas#xywh=200,200,480,360&t=27,57", - "type": "Canvas" - } - ] + "body": { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4", + "type": "Video", + "format": "video/mp4", + "height": 360, + "width": 480, + "duration": 3971.24 + }, + "target": { + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/canvas#xywh=200,200,480,360&t=27,57", + "type": "Canvas" + } } ] } diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json index bddca3e..f484465 100644 --- a/fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json @@ -28,22 +28,18 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1", - "type": "Canvas" - } - ], - "body": [ - { - "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low.mp4", - "type": "Video", - "format": "video/mp4", - "height": 1080, - "width": 1920, - "duration": 7278.422 - } - ] + "target": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1", + "type": "Canvas" + }, + "body": { + "id": "https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low.mp4", + "type": "Video", + "format": "video/mp4", + "height": 1080, + "width": 1920, + "duration": 7278.422 + } } ] } diff --git a/fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json index 6ed6738..123d262 100644 --- a/fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json @@ -29,28 +29,24 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2504, - "width": 1768, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", - "type": "ImageService3", - "profile": "level1" - } - ] - } - ], - "target": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2504, + "width": 1768, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-1-21198-zz001d8m41_774608_master", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "type": "Canvas" + } } ] } @@ -77,28 +73,24 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2512, - "width": 1792, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master", - "type": "ImageService3", - "profile": "level1" - } - ] - } - ], - "target": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2512, + "width": 1792, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-2-21198-zz001d8m5j_774612_master", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", + "type": "Canvas" + } } ] } @@ -125,28 +117,24 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2456, - "width": 1792, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", - "type": "ImageService3", - "profile": "level1" - } - ] - } - ], - "target": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2456, + "width": 1792, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-3-21198-zz001d8tm5_775004_master", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "type": "Canvas" + } } ] } @@ -173,28 +161,24 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2440, - "width": 1760, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", - "type": "ImageService3", - "profile": "level1" - } - ] - } - ], - "target": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2440, + "width": 1760, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-4-21198-zz001d8tnp_775007_master", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "type": "Canvas" + } } ] } @@ -221,28 +205,24 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2416, - "width": 1776, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master", - "type": "ImageService3", - "profile": "level1" - } - ] - } - ], - "target": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2416, + "width": 1776, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-5-21198-zz001d8v6f_775077_master", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "type": "Canvas" + } } ] } @@ -269,28 +249,24 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2416, - "width": 1776, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master", - "type": "ImageService3", - "profile": "level1" - } - ] - } - ], - "target": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2416, + "width": 1776, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/d3bbf5397c6df6b894c5991195c912ab-6-21198-zz001d8v7z_775085_master", + "type": "ImageService3", + "profile": "level1" + } + ] + }, + "target": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "type": "Canvas" + } } ] } diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json b/fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json index ad9164f..185cde9 100644 --- a/fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json +++ b/fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json @@ -212,7 +212,7 @@ "items": [ { "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004", - "type": "Canvas", + "type": "Timeline", "label": { "en": [ "Tape 1 Side 1" @@ -230,43 +230,39 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=0,1417.56", - "type": "Canvas" - } - ], - "body": [ - { - "type": "Choice", - "items": [ - { - "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x00002f/manifest.mpd", - "format": "application/dash+xml", - "type": "Sound", - "service": [ - { - "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x00002f/probe.json", - "type": "AuthProbeService1", - "profile": "http://iiif.io/api/auth/1/probe" - } - ] - }, - { - "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x00002f/index.m3u8", - "format": "vnd.apple.mpegURL", - "type": "Sound", - "service": [ - { - "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x00002f/probe.json", - "type": "AuthProbeService1", - "profile": "http://iiif.io/api/auth/1/probe" - } - ] - } - ] - } - ], + "target": { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000004#t=0,1417.56", + "type": "Timeline" + }, + "body": { + "type": "Choice", + "items": [ + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x00002f/manifest.mpd", + "format": "application/dash+xml", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x00002f/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + }, + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x00002f/index.m3u8", + "format": "vnd.apple.mpegURL", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x00002f/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + } + ] + }, "seeAlso": [ { "id": "https://iiif-waveforms.s3.amazonaws.com/vdc_100082592360.0x00002e.dat", @@ -282,7 +278,7 @@ }, { "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006", - "type": "Canvas", + "type": "Timeline", "label": { "en": [ "Tape 2 Side 1" @@ -300,43 +296,39 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=0,378.72", - "type": "Canvas" - } - ], - "body": [ - { - "type": "Choice", - "items": [ - { - "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000031/manifest.mpd", - "format": "application/dash+xml", - "type": "Sound", - "service": [ - { - "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x000031/probe.json", - "type": "AuthProbeService1", - "profile": "http://iiif.io/api/auth/1/probe" - } - ] - }, - { - "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000031/index.m3u8", - "format": "vnd.apple.mpegURL", - "type": "Sound", - "service": [ - { - "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x000031/probe.json", - "type": "AuthProbeService1", - "profile": "http://iiif.io/api/auth/1/probe" - } - ] - } - ] - } - ], + "target": { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=0,378.72", + "type": "Timeline" + }, + "body": { + "type": "Choice", + "items": [ + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000031/manifest.mpd", + "format": "application/dash+xml", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x000031/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + }, + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000031/index.m3u8", + "format": "vnd.apple.mpegURL", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x000031/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + } + ] + }, "seeAlso": [ { "id": "https://iiif-waveforms.s3.amazonaws.com/vdc_100082592360.0x000030.dat", @@ -352,43 +344,39 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=378.72,1374.4", - "type": "Canvas" - } - ], - "body": [ - { - "type": "Choice", - "items": [ - { - "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000033/manifest.mpd", - "format": "application/dash+xml", - "type": "Sound", - "service": [ - { - "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x000033/probe.json", - "type": "AuthProbeService1", - "profile": "http://iiif.io/api/auth/1/probe" - } - ] - }, - { - "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000033/index.m3u8", - "format": "vnd.apple.mpegURL", - "type": "Sound", - "service": [ - { - "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x000033/probe.json", - "type": "AuthProbeService1", - "profile": "http://iiif.io/api/auth/1/probe" - } - ] - } - ] - } - ], + "target": { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=378.72,1374.4", + "type": "Timeline" + }, + "body": { + "type": "Choice", + "items": [ + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000033/manifest.mpd", + "format": "application/dash+xml", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x000033/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + }, + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000033/index.m3u8", + "format": "vnd.apple.mpegURL", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x000033/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + } + ] + }, "seeAlso": [ { "id": "https://iiif-waveforms.s3.amazonaws.com/vdc_100082592360.0x000032.dat", @@ -404,43 +392,39 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1374.4,1520.04", - "type": "Canvas" - } - ], - "body": [ - { - "type": "Choice", - "items": [ - { - "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000035/manifest.mpd", - "format": "application/dash+xml", - "type": "Sound", - "service": [ - { - "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x000035/probe.json", - "type": "AuthProbeService1", - "profile": "http://iiif.io/api/auth/1/probe" - } - ] - }, - { - "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000035/index.m3u8", - "format": "vnd.apple.mpegURL", - "type": "Sound", - "service": [ - { - "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x000035/probe.json", - "type": "AuthProbeService1", - "profile": "http://iiif.io/api/auth/1/probe" - } - ] - } - ] - } - ], + "target": { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000006#t=1374.4,1520.04", + "type": "Timeline" + }, + "body": { + "type": "Choice", + "items": [ + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000035/manifest.mpd", + "format": "application/dash+xml", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/dash/ark:/81055/vdc_100082592360.0x000035/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + }, + { + "id": "https://api.bl.uk/media/iiif/ark:/81055/vdc_100082592360.0x000035/index.m3u8", + "format": "vnd.apple.mpegURL", + "type": "Sound", + "service": [ + { + "id": "https://api.bl.uk/media/hls/ark:/81055/vdc_100082592360.0x000035/probe.json", + "type": "AuthProbeService1", + "profile": "http://iiif.io/api/auth/1/probe" + } + ] + } + ] + }, "seeAlso": [ { "id": "https://iiif-waveforms.s3.amazonaws.com/vdc_100082592360.0x000034.dat", @@ -4840,21 +4824,17 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000002/c/poster", - "type": "Canvas" - } - ], - "body": [ - { - "id": "https://iiif-commons.github.io/iiif-av-component/examples/data/bl/sounds-tests/posters/world.jpg", - "type": "Image", - "width": 962, - "height": 962, - "format": "image/jpeg" - } - ] + "target": { + "id": "https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100082592360.0x000002/c/poster", + "type": "Canvas" + }, + "body": { + "id": "https://iiif-commons.github.io/iiif-av-component/examples/data/bl/sounds-tests/posters/world.jpg", + "type": "Image", + "width": 962, + "height": 962, + "format": "image/jpeg" + } } ] } diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--exhibit-2.json b/fixtures/presentation-4/upgraded-from-p3/p3--exhibit-2.json index 44d8d6e..42ce491 100644 --- a/fixtures/presentation-4/upgraded-from-p3/p3--exhibit-2.json +++ b/fixtures/presentation-4/upgraded-from-p3/p3--exhibit-2.json @@ -22,30 +22,26 @@ "items": [ { "type": "Annotation", - "body": [ - { - "id": "https://www.youtube.com/watch?v=kv6YvKPXQzk", - "type": "Video", - "service": [ - { - "profile": "http://digirati.com/objectifier", - "params": { - "data": "https://www.youtube.com/embed/kv6YvKPXQzk" - } - }, - { - "id": "https://www.youtube.com/watch?v=kv6YvKPXQzk", - "profile": "https://www.youtube.com" + "body": { + "id": "https://www.youtube.com/watch?v=kv6YvKPXQzk", + "type": "Video", + "service": [ + { + "profile": "http://digirati.com/objectifier", + "params": { + "data": "https://www.youtube.com/embed/kv6YvKPXQzk" } - ] - } - ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5759f5d0-62c6-7ea6-2c30-ca3cf4ad7e6d#xywh=0,0,1600,1600", - "type": "Canvas" - } - ], + }, + { + "id": "https://www.youtube.com/watch?v=kv6YvKPXQzk", + "profile": "https://www.youtube.com" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5759f5d0-62c6-7ea6-2c30-ca3cf4ad7e6d#xywh=0,0,1600,1600", + "type": "Canvas" + }, "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/7c654266-b000-bc2b-5b99-fb22e4437d12", "motivation": [ "painting" @@ -87,21 +83,19 @@ "items": [ { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "value": "

Introduction

\n\n

These days, creativity is considered an absolute good, praised by CEOs, politicians, and engineers. This exhibit will look at the crucial years of the 1950s and 1960s, when people first invented what is today a booming creativity research, publishing, and consulting industry, and during which many of our ideas about who is creative, how creativity works, and why it matters were first formed.

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/textualbody/889d480c-26f7-768f-daf7-e56b36038dfa/en" - } - ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4", - "type": "Canvas" - } - ], + "body": { + "type": "TextualBody", + "value": "

Introduction

\n\n

These days, creativity is considered an absolute good, praised by CEOs, politicians, and engineers. This exhibit will look at the crucial years of the 1950s and 1960s, when people first invented what is today a booming creativity research, publishing, and consulting industry, and during which many of our ideas about who is creative, how creativity works, and why it matters were first formed.

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/textualbody/889d480c-26f7-768f-daf7-e56b36038dfa/en" + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4", + "type": "Canvas" + }, "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/1e84061a-ba93-4142-2765-054de2d10f9b", "motivation": [ "painting" @@ -128,21 +122,19 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4", - "type": "Canvas" - } - ], - "body": [ - { - "type": "TextualBody", - "value": "

Inventing Creativity

\n\n

These days, creativity is considered an absolute good, praised by CEOs, politicians, and engineers. This exhibit will look at the crucial years of the 1950s and 1960s, when people first invented what is today a booming creativity research, publishing, and consulting industry, and during which many of our ideas about who is creative, how creativity works, and why it matters were first formed.

Though it sounds timeless, a hundred years ago, practically nobody even uttered the word creativity. We might assume it’s just a new word for old concepts like imagination, inspiration, fantasy, genius, or originality. But creativity seems to capture a unique spectrum of meanings: It can denote both an ability and a process, great works of genius as well as everyday innovations; something both deeply personal and also socially and economically valuable; and, though it seems essentially connected to the arts, it is apparently also applicable to science, technology, and any other endeavor. How can this sometimes contradictory array of meanings and connotations help explain creativity’s sudden appeal in postwar America, and today?

It was not bohemian artists or hippies who first theorized creativity, but rather engineers, psychologists, and advertising men, people deeply intertwined with post-World War II military and consumer industries. As they attempted to balance individual liberation with the productivity and predictability demanded by the system, these people devised new psychological tests to identify “creative” employees, methods for stimulating “creative thinking,” and diagrams of “the creative process.” Was this a heroic campaign to liberate humanity from the stifling forces of bureaucratic conformity? Or a cynical attempt to tame messy and revolutionary human energies? How has this history influenced our own feelings about creativity?

Frequency of the term “creative” in books in English, 1800-2020. Source: Google Books. Illustration by Vanessa van Dam

Curators

Dr. Samuel Franklin & Prof. Dr. Bregje van Eekelen (Industrial Design Engineering), Geertje van Achterberg, (Academic Heritage Team, TU Delft Library)

Illustrations

Xaviera Altena

Co-funding

Marie Skłodowska Curie grant agreement No 707404 (EU Horizon 2020)

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4/annotations/0/en" - } - ] + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4", + "type": "Canvas" + }, + "body": { + "type": "TextualBody", + "value": "

Inventing Creativity

\n\n

These days, creativity is considered an absolute good, praised by CEOs, politicians, and engineers. This exhibit will look at the crucial years of the 1950s and 1960s, when people first invented what is today a booming creativity research, publishing, and consulting industry, and during which many of our ideas about who is creative, how creativity works, and why it matters were first formed.

Though it sounds timeless, a hundred years ago, practically nobody even uttered the word creativity. We might assume it’s just a new word for old concepts like imagination, inspiration, fantasy, genius, or originality. But creativity seems to capture a unique spectrum of meanings: It can denote both an ability and a process, great works of genius as well as everyday innovations; something both deeply personal and also socially and economically valuable; and, though it seems essentially connected to the arts, it is apparently also applicable to science, technology, and any other endeavor. How can this sometimes contradictory array of meanings and connotations help explain creativity’s sudden appeal in postwar America, and today?

It was not bohemian artists or hippies who first theorized creativity, but rather engineers, psychologists, and advertising men, people deeply intertwined with post-World War II military and consumer industries. As they attempted to balance individual liberation with the productivity and predictability demanded by the system, these people devised new psychological tests to identify “creative” employees, methods for stimulating “creative thinking,” and diagrams of “the creative process.” Was this a heroic campaign to liberate humanity from the stifling forces of bureaucratic conformity? Or a cynical attempt to tame messy and revolutionary human energies? How has this history influenced our own feelings about creativity?

Frequency of the term “creative” in books in English, 1800-2020. Source: Google Books. Illustration by Vanessa van Dam

Curators

Dr. Samuel Franklin & Prof. Dr. Bregje van Eekelen (Industrial Design Engineering), Geertje van Achterberg, (Academic Heritage Team, TU Delft Library)

Illustrations

Xaviera Altena

Co-funding

Marie Skłodowska Curie grant agreement No 707404 (EU Horizon 2020)

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/43a44fd6-4bd2-2b9a-ad2e-cbfd28c6f4f4/annotations/0/en" + } } ] } @@ -166,83 +158,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/2b424897-33e9-4162-ac8a-7b247505905e/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 6415, - "width": 5000, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/2b424897-33e9-4162-ac8a-7b247505905e", - "protocol": "http://iiif.io/api/image", - "width": 5000, - "height": 6415, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 798, - "height": 1024 - }, - { - "width": 312, - "height": 400 - }, - { - "width": 156, - "height": 200 - }, - { - "width": 78, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/2b424897-33e9-4162-ac8a-7b247505905e/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6415, + "width": 5000, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/2b424897-33e9-4162-ac8a-7b247505905e", + "protocol": "http://iiif.io/api/image", + "width": 5000, + "height": 6415, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 798, + "height": 1024 + }, + { + "width": 312, + "height": 400 + }, + { + "width": 156, + "height": 200 + }, + { + "width": 78, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/2b424897-33e9-4162-ac8a-7b247505905e/full/full/0/default.jpg", @@ -289,12 +279,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/155fcabf-8e51-0782-5ce5-c128dbd005c1", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561#xywh=28,33,297,381", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561#xywh=28,33,297,381", + "type": "Canvas" + }, "label": { "en": [ "Chicago Commuters, 1953" @@ -311,83 +299,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/7a084939-0960-4f98-bc7b-acc37c29e5e2/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 4054, - "width": 5000, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/7a084939-0960-4f98-bc7b-acc37c29e5e2", - "protocol": "http://iiif.io/api/image", - "width": 5000, - "height": 4054, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 830 - }, - { - "width": 400, - "height": 324 - }, - { - "width": 200, - "height": 162 - }, - { - "width": 100, - "height": 81 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/7a084939-0960-4f98-bc7b-acc37c29e5e2/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4054, + "width": 5000, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7a084939-0960-4f98-bc7b-acc37c29e5e2", + "protocol": "http://iiif.io/api/image", + "width": 5000, + "height": 4054, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 830 + }, + { + "width": 400, + "height": 324 + }, + { + "width": 200, + "height": 162 + }, + { + "width": 100, + "height": 81 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/7a084939-0960-4f98-bc7b-acc37c29e5e2/full/full/0/default.jpg", @@ -434,12 +420,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/64141e57-0d02-96b9-dd73-8e0c1710cb16", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561#xywh=50,457,314,255", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561#xywh=50,457,314,255", + "type": "Canvas" + }, "label": { "en": [ "Mushroom cloud of the Test Baker atomic bomb, Bikini Atoll, July 25, 1946" @@ -456,82 +440,80 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/eaac0891-ec70-48d3-b1dd-737419fb1675/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3760, - "width": 2913, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/eaac0891-ec70-48d3-b1dd-737419fb1675", - "protocol": "http://iiif.io/api/image", - "width": 2913, - "height": 3760, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16 - ] - } - ], - "sizes": [ - { - "width": 793, - "height": 1024 - }, - { - "width": 310, - "height": 400 - }, - { - "width": 155, - "height": 200 - }, - { - "width": 77, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/eaac0891-ec70-48d3-b1dd-737419fb1675/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3760, + "width": 2913, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/eaac0891-ec70-48d3-b1dd-737419fb1675", + "protocol": "http://iiif.io/api/image", + "width": 2913, + "height": 3760, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 793, + "height": 1024 + }, + { + "width": 310, + "height": 400 + }, + { + "width": 155, + "height": 200 + }, + { + "width": 77, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/eaac0891-ec70-48d3-b1dd-737419fb1675/full/full/0/default.jpg", @@ -578,12 +560,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/28fd3aa8-6917-b28d-ded3-500bc640a915", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561#xywh=405,32,339,437", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561#xywh=405,32,339,437", + "type": "Canvas" + }, "requiredStatement": { "value": { "en": [ @@ -622,16 +602,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/155fcabf-8e51-0782-5ce5-c128dbd005c1", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/155fcabf-8e51-0782-5ce5-c128dbd005c1", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561/annotations/18", @@ -639,16 +614,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/64141e57-0d02-96b9-dd73-8e0c1710cb16", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/64141e57-0d02-96b9-dd73-8e0c1710cb16", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/775cc804-ec8b-1087-09de-b7eed2101561/annotations/19", @@ -656,16 +626,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/28fd3aa8-6917-b28d-ded3-500bc640a915", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/28fd3aa8-6917-b28d-ded3-500bc640a915", + "type": "Annotation", + "motivation": [] + } } ] } @@ -681,21 +646,19 @@ "items": [ { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "value": "

Creativity, Consumerism, and the Cold War

\n\n

Postwar America contained the perfect conditions for the concept of creativity to arise–a potent mix of optimism about material progress and fears of conformity and technology run amok.

\n\n

As the United States competed with the Soviet Union in a race of military technology, its economy depended on a constant stream of consumer goods. Many saw totalitarianism abroad and consumerism at home as twin threats to individualism. With the recent experience of the Holocaust and the looming threat of nuclear Armageddon in mind, some critics worried about the effect of mass society and “conformity” on humane values. Corporate America, for its part, feared its own bureaucratic culture might slow the innovation on which profits depended.

\n\n

CREATIVITY was a salve for all these problems: it conjured individuality, self-expression, and freedom, but also promised all the inventiveness and dynamism necessary to keep the whole system running.

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/textualbody/a9ba045a-859d-c7e2-1f82-51ab7c4181a3/en" - } - ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056", - "type": "Canvas" - } - ], + "body": { + "type": "TextualBody", + "value": "

Creativity, Consumerism, and the Cold War

\n\n

Postwar America contained the perfect conditions for the concept of creativity to arise–a potent mix of optimism about material progress and fears of conformity and technology run amok.

\n\n

As the United States competed with the Soviet Union in a race of military technology, its economy depended on a constant stream of consumer goods. Many saw totalitarianism abroad and consumerism at home as twin threats to individualism. With the recent experience of the Holocaust and the looming threat of nuclear Armageddon in mind, some critics worried about the effect of mass society and “conformity” on humane values. Corporate America, for its part, feared its own bureaucratic culture might slow the innovation on which profits depended.

\n\n

CREATIVITY was a salve for all these problems: it conjured individuality, self-expression, and freedom, but also promised all the inventiveness and dynamism necessary to keep the whole system running.

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/textualbody/a9ba045a-859d-c7e2-1f82-51ab7c4181a3/en" + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056", + "type": "Canvas" + }, "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/22b86aa4-37a0-c441-c78e-cfe339b7907e", "motivation": [ "painting" @@ -722,21 +685,19 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056", - "type": "Canvas" - } - ], - "body": [ - { - "type": "TextualBody", - "value": "

Creativity, Consumerism, and the Cold War

\n\n
“In a time when knowledge, constructive and destructive, is advancing by the most incredible leaps and bounds into a fantastic atomic age, genuinely creative adaptation seems to represent the only possibility that man can keep abreast of the kaleidoscopic change in his world … international annihilation will be the price we pay for a lack of creativity.” – Carl Rogers, humanistic psychologist, Toward a Theory of Creativity, 1954
“The Cold War called for ever-accelerating efforts in a contest of intellects. Inventive brains were at a premium, and there were never enough.” – J. P. Guilford, psychologist, Journal of Creative Behavior, 1967 The 1950s and 1960s contained the perfect storm for an idea like creativity to arise: During the Cold War “the West,” led by a newly empowered United States, was competing with the Soviet Union in a race of military technology.

Postwar America contained the perfect conditions for the concept of creativity to arise–a potent mix of optimism about material progress and fears of conformity and technology run amok.

As the United States competed with the Soviet Union in a race of military technology, its economy depended on a constant stream of consumer goods. Many saw totalitarianism abroad and consumerism at home as twin threats to individualism. With the recent experience of the Holocaust and the looming threat of nuclear Armageddon in mind, some critics worried about the effect of mass society and “conformity” on humane values. Corporate America, for its part, feared its own bureaucratic culture might slow the innovation on which profits depended.

CREATIVITY was a salve for all these problems: it conjured individuality, self-expression, and freedom, but also promised all the inventiveness and dynamism necessary to keep the whole system running.

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056/annotations/0/en" - } - ] + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056", + "type": "Canvas" + }, + "body": { + "type": "TextualBody", + "value": "

Creativity, Consumerism, and the Cold War

\n\n
“In a time when knowledge, constructive and destructive, is advancing by the most incredible leaps and bounds into a fantastic atomic age, genuinely creative adaptation seems to represent the only possibility that man can keep abreast of the kaleidoscopic change in his world … international annihilation will be the price we pay for a lack of creativity.” – Carl Rogers, humanistic psychologist, Toward a Theory of Creativity, 1954
“The Cold War called for ever-accelerating efforts in a contest of intellects. Inventive brains were at a premium, and there were never enough.” – J. P. Guilford, psychologist, Journal of Creative Behavior, 1967 The 1950s and 1960s contained the perfect storm for an idea like creativity to arise: During the Cold War “the West,” led by a newly empowered United States, was competing with the Soviet Union in a race of military technology.

Postwar America contained the perfect conditions for the concept of creativity to arise–a potent mix of optimism about material progress and fears of conformity and technology run amok.

As the United States competed with the Soviet Union in a race of military technology, its economy depended on a constant stream of consumer goods. Many saw totalitarianism abroad and consumerism at home as twin threats to individualism. With the recent experience of the Holocaust and the looming threat of nuclear Armageddon in mind, some critics worried about the effect of mass society and “conformity” on humane values. Corporate America, for its part, feared its own bureaucratic culture might slow the innovation on which profits depended.

CREATIVITY was a salve for all these problems: it conjured individuality, self-expression, and freedom, but also promised all the inventiveness and dynamism necessary to keep the whole system running.

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/c8d39540-e003-ff5c-d4ea-81ed3a4a8056/annotations/0/en" + } } ] } @@ -755,122 +716,119 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/63a4a98b-ea2a-9a35-7005-7b2424850197/specificResource", - "type": "SpecificResource", - "source": { - "id": "https://dlc.services/iiif-img/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 5417, - "width": 5417, - "label": { - "en": [ - "-" - ] - }, - "service": { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8", - "protocol": "http://iiif.io/api/image", - "width": 5417, - "height": 5417, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 1024 - }, - { - "width": 400, - "height": 400 - }, - { - "width": 200, - "height": 200 - }, - { - "width": 100, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } - }, - "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "type": "iiif:ImageApiSelector", - "region": "0,14,5417,2344" - } - } - ], - "thumbnail": [ - { - "id": "https://dlc.services/thumbs/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8/full/full/0/default.jpg", + "body": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/63a4a98b-ea2a-9a35-7005-7b2424850197/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8/full/full/0/default.jpg", "type": "Image", + "format": "image/jpeg", + "height": 5417, + "width": 5417, + "label": { + "en": [ + "-" + ] + }, "service": { "type": "ImageService2", - "id": "https://dlc.services/thumbs/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8", + "id": "https://dlc.services/iiif-img/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8", "protocol": "http://iiif.io/api/image", - "profile": [ - "http://iiif.io/api/image/2/level0.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "color" - ], - "supports": [ - "sizeByWhListed" + "width": 5417, + "height": 5417, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 ] } ], - "width": 1024, - "height": 1024, "sizes": [ { - "width": 100, - "height": 100 + "width": 1024, + "height": 1024 }, { - "width": 200, - "height": 200 + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + }, + "selector": { + "type": "iiif:ImageApiSelector", + "region": "0,14,5417,2344" + } + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/767ec03d-5399-48a2-bf51-41a7a079f0f8", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 1024, + "sizes": [ + { + "width": 100, + "height": 100 + }, + { + "width": 200, + "height": 200 }, { "width": 400, @@ -885,12 +843,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/63a4a98b-ea2a-9a35-7005-7b2424850197", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/a4f17d27-6a80-ed4a-098b-390ae648e826#xywh=0,0,5417,2344", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/a4f17d27-6a80-ed4a-098b-390ae648e826#xywh=0,0,5417,2344", + "type": "Canvas" + }, "summary": { "en": [ "Brainstorming meeting at the advertising firm BBDO, where the technique was born. Late 1950s. The woman at bottom right is using a stenograph machine to record the barrage of ideas, while the poster on the wall lists the “Brainstorm Ground Rules.” (Photo by Philippe Halsman)" @@ -930,90 +886,87 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/088f52a1-830a-8bae-a182-f4edebf87e7b/specificResource", - "type": "SpecificResource", - "source": { - "id": "https://dlc.services/iiif-img/7/21/81efc6f1-2c2a-42ba-8001-c7e598d91110/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 6610, - "width": 6812, - "label": { - "en": [ - "-" - ] - }, - "service": { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/81efc6f1-2c2a-42ba-8001-c7e598d91110", - "protocol": "http://iiif.io/api/image", - "width": 6812, - "height": 6610, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 994 - }, - { - "width": 400, - "height": 388 - }, - { - "width": 200, - "height": 194 - }, - { - "width": 100, - "height": 97 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/088f52a1-830a-8bae-a182-f4edebf87e7b/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/81efc6f1-2c2a-42ba-8001-c7e598d91110/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6610, + "width": 6812, + "label": { + "en": [ + "-" + ] }, - "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "type": "iiif:ImageApiSelector", - "region": "1560,750,3608,5218" + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/81efc6f1-2c2a-42ba-8001-c7e598d91110", + "protocol": "http://iiif.io/api/image", + "width": 6812, + "height": 6610, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 994 + }, + { + "width": 400, + "height": 388 + }, + { + "width": 200, + "height": 194 + }, + { + "width": 100, + "height": 97 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] } + }, + "selector": { + "type": "iiif:ImageApiSelector", + "region": "1560,750,3608,5218" } - ], + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/81efc6f1-2c2a-42ba-8001-c7e598d91110/full/full/0/default.jpg", @@ -1060,12 +1013,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/088f52a1-830a-8bae-a182-f4edebf87e7b", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=46,75,203,296", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=46,75,203,296", + "type": "Canvas" + }, "label": { "en": [ "The “bible” of the creative thinking movement, originally published in 1953, which made brainstorming a household name." @@ -1082,83 +1033,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/70c2e178-8426-48a1-a620-d0c27d4e92b8/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3183, - "width": 5096, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/70c2e178-8426-48a1-a620-d0c27d4e92b8", - "protocol": "http://iiif.io/api/image", - "width": 5096, - "height": 3183, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 640 - }, - { - "width": 400, - "height": 250 - }, - { - "width": 200, - "height": 125 - }, - { - "width": 100, - "height": 62 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/70c2e178-8426-48a1-a620-d0c27d4e92b8/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3183, + "width": 5096, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/70c2e178-8426-48a1-a620-d0c27d4e92b8", + "protocol": "http://iiif.io/api/image", + "width": 5096, + "height": 3183, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 640 + }, + { + "width": 400, + "height": 250 + }, + { + "width": 200, + "height": 125 + }, + { + "width": 100, + "height": 62 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/70c2e178-8426-48a1-a620-d0c27d4e92b8/full/full/0/default.jpg", @@ -1205,12 +1154,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/6b47f632-f355-3fe4-1a7b-2657e62a3a6e", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=314,58,420,261", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=314,58,420,261", + "type": "Canvas" + }, "label": { "en": [ "New York Herald Tribune, December 1956" @@ -1222,82 +1169,80 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/aeef2956-3952-4a46-aa39-69eec0357773/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3667, - "width": 2583, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/aeef2956-3952-4a46-aa39-69eec0357773", - "protocol": "http://iiif.io/api/image", - "width": 2583, - "height": 3667, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16 - ] - } - ], - "sizes": [ - { - "width": 721, - "height": 1024 - }, - { - "width": 282, - "height": 400 - }, - { - "width": 141, - "height": 200 - }, - { - "width": 70, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/aeef2956-3952-4a46-aa39-69eec0357773/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3667, + "width": 2583, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/aeef2956-3952-4a46-aa39-69eec0357773", + "protocol": "http://iiif.io/api/image", + "width": 2583, + "height": 3667, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 721, + "height": 1024 + }, + { + "width": 282, + "height": 400 + }, + { + "width": 141, + "height": 200 + }, + { + "width": 70, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/aeef2956-3952-4a46-aa39-69eec0357773/full/full/0/default.jpg", @@ -1344,12 +1289,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3119e8c8-9eaa-cf81-068b-c8d8d7d22aa8", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=41,454,271,389", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=41,454,271,389", + "type": "Canvas" + }, "label": { "en": [ "Nation’s Business, February 1959" @@ -1366,110 +1309,108 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/9e7233da-71d4-47d8-83b7-4142444645b4/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2159, - "width": 3141, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/9e7233da-71d4-47d8-83b7-4142444645b4", - "protocol": "http://iiif.io/api/image", - "width": 3141, - "height": 2159, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 704 - }, - { - "width": 400, - "height": 275 - }, - { - "width": 200, - "height": 137 - }, - { - "width": 100, - "height": 69 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/9e7233da-71d4-47d8-83b7-4142444645b4/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2159, + "width": 3141, + "label": { + "en": [ + "-" ] - } - ], - "thumbnail": [ - { - "id": "https://dlc.services/thumbs/7/21/9e7233da-71d4-47d8-83b7-4142444645b4/full/full/0/default.jpg", - "type": "Image", - "service": { + }, + "service": [ + { "type": "ImageService2", - "id": "https://dlc.services/thumbs/7/21/9e7233da-71d4-47d8-83b7-4142444645b4", + "id": "https://dlc.services/iiif-img/7/21/9e7233da-71d4-47d8-83b7-4142444645b4", "protocol": "http://iiif.io/api/image", - "profile": [ - "http://iiif.io/api/image/2/level0.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "color" - ], - "supports": [ - "sizeByWhListed" + "width": 3141, + "height": 2159, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 ] } ], - "width": 1024, - "height": 704, "sizes": [ { - "width": 100, - "height": 69 + "width": 1024, + "height": 704 + }, + { + "width": 400, + "height": 275 + }, + { + "width": 200, + "height": 137 + }, + { + "width": 100, + "height": 69 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/9e7233da-71d4-47d8-83b7-4142444645b4/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/9e7233da-71d4-47d8-83b7-4142444645b4", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 704, + "sizes": [ + { + "width": 100, + "height": 69 }, { "width": 200, @@ -1488,12 +1429,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/ece517b5-3e7a-cc8b-4e7b-196ab10186af", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=361,383,375,258", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=361,383,375,258", + "type": "Canvas" + }, "label": { "en": [ "Book describing Osborn’s rules of brainstorming and a snippet of a brainstorming session in action." @@ -1510,83 +1449,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/5a8c9030-f75f-4315-bfd2-4a609f93adbd/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2792, - "width": 5000, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/5a8c9030-f75f-4315-bfd2-4a609f93adbd", - "protocol": "http://iiif.io/api/image", - "width": 5000, - "height": 2792, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 572 - }, - { - "width": 400, - "height": 223 - }, - { - "width": 200, - "height": 112 - }, - { - "width": 100, - "height": 56 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/5a8c9030-f75f-4315-bfd2-4a609f93adbd/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2792, + "width": 5000, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/5a8c9030-f75f-4315-bfd2-4a609f93adbd", + "protocol": "http://iiif.io/api/image", + "width": 5000, + "height": 2792, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 572 + }, + { + "width": 400, + "height": 223 + }, + { + "width": 200, + "height": 112 + }, + { + "width": 100, + "height": 56 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/5a8c9030-f75f-4315-bfd2-4a609f93adbd/full/full/0/default.jpg", @@ -1633,12 +1570,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2899bd51-9b44-e5aa-dfef-2b2809973833", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=357,713,420,236", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2#xywh=357,713,420,236", + "type": "Canvas" + }, "label": { "en": [ "U.S. Navy officers are trained in brainstorming by creativity expert Charles Clarke “Visual Spur to Wild Ideas” " @@ -1678,16 +1613,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/088f52a1-830a-8bae-a182-f4edebf87e7b", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/088f52a1-830a-8bae-a182-f4edebf87e7b", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations/22", @@ -1695,16 +1625,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/6b47f632-f355-3fe4-1a7b-2657e62a3a6e", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/6b47f632-f355-3fe4-1a7b-2657e62a3a6e", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations/23", @@ -1712,16 +1637,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3119e8c8-9eaa-cf81-068b-c8d8d7d22aa8", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3119e8c8-9eaa-cf81-068b-c8d8d7d22aa8", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations/24", @@ -1729,16 +1649,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/ece517b5-3e7a-cc8b-4e7b-196ab10186af", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/ece517b5-3e7a-cc8b-4e7b-196ab10186af", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/ff197cef-ae36-5a7a-2feb-fcb2b6bd3ab2/annotations/25", @@ -1746,16 +1661,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2899bd51-9b44-e5aa-dfef-2b2809973833", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2899bd51-9b44-e5aa-dfef-2b2809973833", + "type": "Annotation", + "motivation": [] + } } ] } @@ -1779,82 +1689,80 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/6ca3ab55-3a95-427a-96bb-ec15dcf7b3f0/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 4038, - "width": 4038, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/6ca3ab55-3a95-427a-96bb-ec15dcf7b3f0", - "protocol": "http://iiif.io/api/image", - "width": 4038, - "height": 4038, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 1024 - }, - { - "width": 400, - "height": 400 - }, - { - "width": 200, - "height": 200 - }, - { - "width": 100, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/6ca3ab55-3a95-427a-96bb-ec15dcf7b3f0/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4038, + "width": 4038, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/6ca3ab55-3a95-427a-96bb-ec15dcf7b3f0", + "protocol": "http://iiif.io/api/image", + "width": 4038, + "height": 4038, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/6ca3ab55-3a95-427a-96bb-ec15dcf7b3f0/full/full/0/default.jpg", @@ -1901,12 +1809,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e799fa1f-dc65-c61f-22b5-d3e74374ac6a", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5144f647-9ae9-51fb-e285-88c5f1cec72a#xywh=0,0,1000,1000", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5144f647-9ae9-51fb-e285-88c5f1cec72a#xywh=0,0,1000,1000", + "type": "Canvas" + }, "label": { "en": [ "New York Herald Tribune, January 1958" @@ -1944,21 +1850,19 @@ "items": [ { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "value": "

Making the Strange Familiar and the Familiar Strange

\n\n

In the wake of the brainstorming controversy, new methods such as Synectics popped up. Synectics was based on the theory that new ideas came from metaphorical thinking.

\n\n

As in brainstorming, its facilitators led participants through a series of steps aimed at unleashing seemingly irrelevant ideas – like fish anatomy to improve a hammer – then corral­ling them back toward a relevant solution. Observers said Synectics sessions resembled “LSD parties,” but the intention was always to end with a concrete goal, product, or service. Even as Synectics founders railed against the corporate culture of efficiency and rationality, they also espoused traditional management techniques to optimize their creative process.

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/textualbody/43711a7d-7d9c-21ff-a48d-8a64bbf353b2/en" - } - ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e", - "type": "Canvas" - } - ], + "body": { + "type": "TextualBody", + "value": "

Making the Strange Familiar and the Familiar Strange

\n\n

In the wake of the brainstorming controversy, new methods such as Synectics popped up. Synectics was based on the theory that new ideas came from metaphorical thinking.

\n\n

As in brainstorming, its facilitators led participants through a series of steps aimed at unleashing seemingly irrelevant ideas – like fish anatomy to improve a hammer – then corral­ling them back toward a relevant solution. Observers said Synectics sessions resembled “LSD parties,” but the intention was always to end with a concrete goal, product, or service. Even as Synectics founders railed against the corporate culture of efficiency and rationality, they also espoused traditional management techniques to optimize their creative process.

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/textualbody/43711a7d-7d9c-21ff-a48d-8a64bbf353b2/en" + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e", + "type": "Canvas" + }, "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/68d14edc-845e-7aed-341d-a128fc1125ce", "motivation": [ "painting" @@ -1985,21 +1889,19 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e", - "type": "Canvas" - } - ], - "body": [ - { - "type": "TextualBody", - "value": "

Making the Strange Familiar and the Familiar Strange

\n\n

In the wake of the brainstorming controversy, new methods such as Synectics popped up. Synectics was based on the theory that new ideas came from metaphorical thinking. As in brainstorming, its facilitators led participants through a series of steps aimed at unleashing seemingly irrelevant ideas – like fish anatomy to improve a hammer – then corral­ling them back toward a relevant solution. Observers said Synectics sessions resembled “LSD parties,” but the intention was always to end with a concrete goal, product, or service. Even as Synectics founders railed against the corporate culture of efficiency and rationality, they also espoused traditional management techniques to optimize their creative process. Just like the “scientific manage­ment” experts of the early 20th Century made detailed motion studies to find the “one best way” of doing physical labor, Synectics, Inc.  used video and audio recordings of product design sessions to make the process of group creativity more efficient.

Transcript of a synectics meeting

Bellow is a transcript of a tape recorded Synectics session c.1965. The participants included members of the Synectics, Inc. team and employees of Steel Products Engineering, a U.S. company here trying to solve a problem associated with the manufacture of metal gears.

Jack:
O.K., the date is March 4, 1965, the PAG [Problem as Given] is “How to make a finished gear round,” the PAU [Problem as Understood] is “How to grind gear without rounding” … O.K., start off with rounding as the key word. We need a direct analogy first.
Alex:
How about pregnancy? Swelling abdomen – rounding?
Bill:
When I think of rounding, 
I think about the universe.
Horace:
Marble.
Jack:
Let’s take a symbolic analogy of marble.
Jim:
Well, let’s see, I’m a very still lake – and I get tremendous enjoyment from reflecting all the objects that come over me – and I’m terribly upset when the wind blows and the ripples form so that the reflections can’t be transmitted.
Horace:
Ripples destroy the reflections.
Jim:
Yeah, ripples ruin me.
Bill:
On that same lake, let me get in there. I have enjoyment from the knowledge … that the waters from me gave birth to little streams but I’m especially proud when I realize that some of the waters which come from me leave me in evaporation … I see this beautiful colored rainbow. I realize this is a child of mine …

Printed in Tom Alexander, “Synectics: Inventing by the Madness Method,” Fortune, August 1965

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e/annotations/0/en" - } - ] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e", + "type": "Canvas" + }, + "body": { + "type": "TextualBody", + "value": "

Making the Strange Familiar and the Familiar Strange

\n\n

In the wake of the brainstorming controversy, new methods such as Synectics popped up. Synectics was based on the theory that new ideas came from metaphorical thinking. As in brainstorming, its facilitators led participants through a series of steps aimed at unleashing seemingly irrelevant ideas – like fish anatomy to improve a hammer – then corral­ling them back toward a relevant solution. Observers said Synectics sessions resembled “LSD parties,” but the intention was always to end with a concrete goal, product, or service. Even as Synectics founders railed against the corporate culture of efficiency and rationality, they also espoused traditional management techniques to optimize their creative process. Just like the “scientific manage­ment” experts of the early 20th Century made detailed motion studies to find the “one best way” of doing physical labor, Synectics, Inc.  used video and audio recordings of product design sessions to make the process of group creativity more efficient.

Transcript of a synectics meeting

Bellow is a transcript of a tape recorded Synectics session c.1965. The participants included members of the Synectics, Inc. team and employees of Steel Products Engineering, a U.S. company here trying to solve a problem associated with the manufacture of metal gears.

Jack:
O.K., the date is March 4, 1965, the PAG [Problem as Given] is “How to make a finished gear round,” the PAU [Problem as Understood] is “How to grind gear without rounding” … O.K., start off with rounding as the key word. We need a direct analogy first.
Alex:
How about pregnancy? Swelling abdomen – rounding?
Bill:
When I think of rounding, 
I think about the universe.
Horace:
Marble.
Jack:
Let’s take a symbolic analogy of marble.
Jim:
Well, let’s see, I’m a very still lake – and I get tremendous enjoyment from reflecting all the objects that come over me – and I’m terribly upset when the wind blows and the ripples form so that the reflections can’t be transmitted.
Horace:
Ripples destroy the reflections.
Jim:
Yeah, ripples ruin me.
Bill:
On that same lake, let me get in there. I have enjoyment from the knowledge … that the waters from me gave birth to little streams but I’m especially proud when I realize that some of the waters which come from me leave me in evaporation … I see this beautiful colored rainbow. I realize this is a child of mine …

Printed in Tom Alexander, “Synectics: Inventing by the Madness Method,” Fortune, August 1965

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/1def6fea-cba0-259b-b073-d7c959fdeb4e/annotations/0/en" + } } ] } @@ -2023,82 +1925,80 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/d78b883c-f07f-4c92-825f-b4b8c97ae723/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2758, - "width": 3754, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/d78b883c-f07f-4c92-825f-b4b8c97ae723", - "protocol": "http://iiif.io/api/image", - "width": 3754, - "height": 2758, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 752 - }, - { - "width": 400, - "height": 294 - }, - { - "width": 200, - "height": 147 - }, - { - "width": 100, - "height": 73 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/d78b883c-f07f-4c92-825f-b4b8c97ae723/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2758, + "width": 3754, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/d78b883c-f07f-4c92-825f-b4b8c97ae723", + "protocol": "http://iiif.io/api/image", + "width": 3754, + "height": 2758, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 752 + }, + { + "width": 400, + "height": 294 + }, + { + "width": 200, + "height": 147 + }, + { + "width": 100, + "height": 73 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/d78b883c-f07f-4c92-825f-b4b8c97ae723/full/full/0/default.jpg", @@ -2145,12 +2045,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/43da7b7e-fb7e-6f7a-d031-3d66e461ca7f", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/a7dc6147-894c-dd1d-0edb-fbb0d4aa01b9#xywh=0,0,360,266", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/a7dc6147-894c-dd1d-0edb-fbb0d4aa01b9#xywh=0,0,360,266", + "type": "Canvas" + }, "label": { "en": [ "Synectics session, showing recording equipment in use, c.1974" @@ -2185,84 +2083,82 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/96d105de-9a6b-419c-86b2-cf192c95523a/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 10417, - "width": 10417, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/96d105de-9a6b-419c-86b2-cf192c95523a", - "protocol": "http://iiif.io/api/image", - "width": 10417, - "height": 10417, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 1024 - }, - { - "width": 400, - "height": 400 - }, - { - "width": 200, - "height": 200 - }, - { - "width": 100, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/96d105de-9a6b-419c-86b2-cf192c95523a/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 10417, + "width": 10417, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/96d105de-9a6b-419c-86b2-cf192c95523a", + "protocol": "http://iiif.io/api/image", + "width": 10417, + "height": 10417, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/96d105de-9a6b-419c-86b2-cf192c95523a/full/full/0/default.jpg", @@ -2309,12 +2205,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/1febb90d-5e2a-0838-766e-22dd4aeb85eb", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/c6d6462b-8d86-446a-9314-153647c3e639#xywh=0,0,999,999", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/c6d6462b-8d86-446a-9314-153647c3e639#xywh=0,0,999,999", + "type": "Canvas" + }, "summary": { "en": [ "Kaiser Aluminum News, 1968" @@ -2354,84 +2248,82 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/a6985875-6445-44ad-bf6c-1cacac3e8540/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 6668, - "width": 10152, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/a6985875-6445-44ad-bf6c-1cacac3e8540", - "protocol": "http://iiif.io/api/image", - "width": 10152, - "height": 6668, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 673 - }, - { - "width": 400, - "height": 263 - }, - { - "width": 200, - "height": 131 - }, - { - "width": 100, - "height": 66 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/a6985875-6445-44ad-bf6c-1cacac3e8540/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6668, + "width": 10152, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/a6985875-6445-44ad-bf6c-1cacac3e8540", + "protocol": "http://iiif.io/api/image", + "width": 10152, + "height": 6668, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 673 + }, + { + "width": 400, + "height": 263 + }, + { + "width": 200, + "height": 131 + }, + { + "width": 100, + "height": 66 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/a6985875-6445-44ad-bf6c-1cacac3e8540/full/full/0/default.jpg", @@ -2478,12 +2370,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/5284b26f-c526-71c3-90c7-4b35f3d6e5ed", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=70,60,366,240", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=70,60,366,240", + "type": "Canvas" + }, "summary": { "en": [ "In 1966, the educational psychologist Ellis Paul Torrance released the Torrance Tests of Creative Thinking, the first pencil-and-paper creativity test. Though some doubted its predictive validity – including, eventually, Torrance himself – the ease of distributing and scoring the test at a mass scale ensured it would be widely used in both research and education." @@ -2500,90 +2390,87 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e79b7757-d82d-aa69-b0cd-a88b581a63a2/specificResource", - "type": "SpecificResource", - "source": { - "id": "https://dlc.services/iiif-img/7/21/cd5ff140-c806-4399-81a2-1c0cadfbad1a/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 8008, - "width": 6506, - "label": { - "en": [ - "-" - ] - }, - "service": { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/cd5ff140-c806-4399-81a2-1c0cadfbad1a", - "protocol": "http://iiif.io/api/image", - "width": 6506, - "height": 8008, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 832, - "height": 1024 - }, - { - "width": 325, - "height": 400 - }, - { - "width": 162, - "height": 200 - }, - { - "width": 81, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e79b7757-d82d-aa69-b0cd-a88b581a63a2/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/cd5ff140-c806-4399-81a2-1c0cadfbad1a/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 8008, + "width": 6506, + "label": { + "en": [ + "-" + ] }, - "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "type": "iiif:ImageApiSelector", - "region": "718,789,4982,6483" + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/cd5ff140-c806-4399-81a2-1c0cadfbad1a", + "protocol": "http://iiif.io/api/image", + "width": 6506, + "height": 8008, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 832, + "height": 1024 + }, + { + "width": 325, + "height": 400 + }, + { + "width": 162, + "height": 200 + }, + { + "width": 81, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] } + }, + "selector": { + "type": "iiif:ImageApiSelector", + "region": "718,789,4982,6483" } - ], + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/cd5ff140-c806-4399-81a2-1c0cadfbad1a/full/full/0/default.jpg", @@ -2630,12 +2517,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e79b7757-d82d-aa69-b0cd-a88b581a63a2", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=19,351,372,486", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=19,351,372,486", + "type": "Canvas" + }, "summary": { "en": [ "In 1966, the educational psychologist Ellis Paul Torrance released the Torrance Tests of Creative Thinking, the first pencil-and-paper creativity test. Though some doubted its predictive validity – including, eventually, Torrance himself – the ease of distributing and scoring the test at a mass scale ensured it would be widely used in both research and education. " @@ -2652,83 +2537,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/eb445252-3688-4a97-b4b3-ce82b8135ce8/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 6309, - "width": 4590, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/eb445252-3688-4a97-b4b3-ce82b8135ce8", - "protocol": "http://iiif.io/api/image", - "width": 4590, - "height": 6309, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 745, - "height": 1024 - }, - { - "width": 291, - "height": 400 - }, - { - "width": 146, - "height": 200 - }, - { - "width": 73, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/eb445252-3688-4a97-b4b3-ce82b8135ce8/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6309, + "width": 4590, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/eb445252-3688-4a97-b4b3-ce82b8135ce8", + "protocol": "http://iiif.io/api/image", + "width": 4590, + "height": 6309, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 745, + "height": 1024 + }, + { + "width": 291, + "height": 400 + }, + { + "width": 146, + "height": 200 + }, + { + "width": 73, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/eb445252-3688-4a97-b4b3-ce82b8135ce8/full/full/0/default.jpg", @@ -2775,12 +2658,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2a88ffd9-b62c-73cf-a062-ac288eea0c2e", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=480,41,270,372", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=480,41,270,372", + "type": "Canvas" + }, "summary": { "en": [ "The field of creativity studies was in some respect built on the foundation of a single brick. One of the most widely used tests was to have people list as many uses for a common brick as they could in a set amount of time. Though later studies showed little correspondence between such “divergent thinking” tests and extraordinary creative accomplishment later in life, they became a staple of creativity testing. " @@ -2797,134 +2678,130 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 2607, - "width": 3600, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19", - "protocol": "http://iiif.io/api/image", - "width": 3600, - "height": 2607, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 742 - }, - { - "width": 400, - "height": 290 - }, - { - "width": 200, - "height": 145 - }, - { - "width": 100, - "height": 72 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 2607, + "width": 3600, + "label": { + "en": [ + "-" ] - } - ], - "thumbnail": [ - { - "id": "https://dlc.services/thumbs/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19/full/full/0/default.jpg", - "type": "Image", - "service": { + }, + "service": [ + { "type": "ImageService2", - "id": "https://dlc.services/thumbs/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19", + "id": "https://dlc.services/iiif-img/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19", "protocol": "http://iiif.io/api/image", - "profile": [ - "http://iiif.io/api/image/2/level0.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "color" - ], - "supports": [ - "sizeByWhListed" + "width": 3600, + "height": 2607, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 ] } ], - "width": 1024, - "height": 742, "sizes": [ { - "width": 100, - "height": 72 - }, - { - "width": 200, - "height": 145 + "width": 1024, + "height": 742 }, { "width": 400, "height": 290 }, { - "width": 1024, - "height": 742 + "width": 200, + "height": 145 + }, + { + "width": 100, + "height": 72 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] } ] } - } - ], - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9cc3e632-8abf-f970-62fd-9ec3974d6ed4", - "target": [ + ] + }, + "thumbnail": [ { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=426,452,356,259", - "type": "Canvas" + "id": "https://dlc.services/thumbs/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/f9843507-b457-466b-99d2-4a0fe8f8ee19", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 742, + "sizes": [ + { + "width": 100, + "height": 72 + }, + { + "width": 200, + "height": 145 + }, + { + "width": 400, + "height": 290 + }, + { + "width": 1024, + "height": 742 + } + ] + } } ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9cc3e632-8abf-f970-62fd-9ec3974d6ed4", + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=426,452,356,259", + "type": "Canvas" + }, "summary": { "en": [ "One of the goals of early creativity researchers was to show that creative ability was distinct from general intelligence, at least as measured by standard IQ tests. If true, this would prove the practical importance for a new science of creativity. Here the authors compare test results of high-IQ students and ones that scored well on purported tests of creativity such as the one on the left." @@ -2941,84 +2818,82 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/cbcd6a7e-78d6-45a3-ba3b-23444cd1e9f5/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 6115, - "width": 9213, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/cbcd6a7e-78d6-45a3-ba3b-23444cd1e9f5", - "protocol": "http://iiif.io/api/image", - "width": 9213, - "height": 6115, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 680 - }, - { - "width": 400, - "height": 265 - }, - { - "width": 200, - "height": 133 - }, - { - "width": 100, - "height": 66 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/cbcd6a7e-78d6-45a3-ba3b-23444cd1e9f5/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6115, + "width": 9213, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/cbcd6a7e-78d6-45a3-ba3b-23444cd1e9f5", + "protocol": "http://iiif.io/api/image", + "width": 9213, + "height": 6115, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 680 + }, + { + "width": 400, + "height": 265 + }, + { + "width": 200, + "height": 133 + }, + { + "width": 100, + "height": 66 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/cbcd6a7e-78d6-45a3-ba3b-23444cd1e9f5/full/full/0/default.jpg", @@ -3065,12 +2940,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/b38edd9d-c00f-bd1e-4b6a-45538e91c1e3", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=429,744,333,222", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c#xywh=429,744,333,222", + "type": "Canvas" + }, "summary": { "en": [ "Postwar psychologists used a wide variety of methods to study creativity, from psychoanalysis and biographical studies to tests of “divergent thinking” that were partly inspired by brainstorming. The ultimate aim of many researchers was to devise a new test able to identify inventive people early in life, a particular wish of the massive government and private R&D apparatus that proliferated after WWII. In service of this aim, researchers collected large data sets and employed the most sophisticated statistical methods, even though many of the assessments could be extremely hard to quantify." @@ -3110,16 +2983,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/5284b26f-c526-71c3-90c7-4b35f3d6e5ed", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/5284b26f-c526-71c3-90c7-4b35f3d6e5ed", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations/30", @@ -3127,16 +2995,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e79b7757-d82d-aa69-b0cd-a88b581a63a2", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e79b7757-d82d-aa69-b0cd-a88b581a63a2", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations/31", @@ -3144,16 +3007,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2a88ffd9-b62c-73cf-a062-ac288eea0c2e", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/2a88ffd9-b62c-73cf-a062-ac288eea0c2e", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations/32", @@ -3161,16 +3019,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9cc3e632-8abf-f970-62fd-9ec3974d6ed4", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9cc3e632-8abf-f970-62fd-9ec3974d6ed4", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/f5694c4c-e71c-b700-ab31-6f8e1e15232c/annotations/33", @@ -3178,16 +3031,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/b38edd9d-c00f-bd1e-4b6a-45538e91c1e3", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/b38edd9d-c00f-bd1e-4b6a-45538e91c1e3", + "type": "Annotation", + "motivation": [] + } } ] } @@ -3206,83 +3054,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/942b1eda-584f-40ec-9097-05b55d85e51b/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 5417, - "width": 5417, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/942b1eda-584f-40ec-9097-05b55d85e51b", - "protocol": "http://iiif.io/api/image", - "width": 5417, - "height": 5417, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 1024 - }, - { - "width": 400, - "height": 400 - }, - { - "width": 200, - "height": 200 - }, - { - "width": 100, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/942b1eda-584f-40ec-9097-05b55d85e51b/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 5417, + "width": 5417, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/942b1eda-584f-40ec-9097-05b55d85e51b", + "protocol": "http://iiif.io/api/image", + "width": 5417, + "height": 5417, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/942b1eda-584f-40ec-9097-05b55d85e51b/full/full/0/default.jpg", @@ -3329,12 +3175,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/0ae6f467-bfde-6d8e-c26a-b24f7c453b6f", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/7f51e481-4d9c-acf3-7173-45c6ad9d9983#xywh=0,0,960,960", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/7f51e481-4d9c-acf3-7173-45c6ad9d9983#xywh=0,0,960,960", + "type": "Canvas" + }, "summary": { "en": [ "Many diagrams elaborated on the 4-stage model proposed by British socialist and scholar Graham Wallas in 1927: Preparation, Incubation, Illumination, and Verification. Since then, theorists have added, renamed, reshuffled, and looped these steps, as well as devised myriad other schemes, all to bring order to what some insist can never be truly orderly." @@ -3377,21 +3221,19 @@ "items": [ { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "value": "

Constructing the Creative Personality

\n\n

Some of the most highly publicized creativity studies were carried out at the Institute for Personality Assessment and Research (IPAR) at the University of California, Berkeley. There, famous writers, mathematicians, and architects like Truman Capote, Louis Kahn, and Eero Saarinnen underwent intensive scrutiny including Rorschach ink blots, drawing completion tests, and psycho­analysis.

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/textualbody/82ff28d9-5b54-ec09-d0c9-0ded31d7be4a/en" - } - ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834", - "type": "Canvas" - } - ], + "body": { + "type": "TextualBody", + "value": "

Constructing the Creative Personality

\n\n

Some of the most highly publicized creativity studies were carried out at the Institute for Personality Assessment and Research (IPAR) at the University of California, Berkeley. There, famous writers, mathematicians, and architects like Truman Capote, Louis Kahn, and Eero Saarinnen underwent intensive scrutiny including Rorschach ink blots, drawing completion tests, and psycho­analysis.

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/textualbody/82ff28d9-5b54-ec09-d0c9-0ded31d7be4a/en" + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834", + "type": "Canvas" + }, "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/36b024a6-f7a1-3099-9312-783ea3ed60b9", "motivation": [ "painting" @@ -3418,21 +3260,19 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834", - "type": "Canvas" - } - ], - "body": [ - { - "type": "TextualBody", - "value": "

Constructing the Creative Personality

\n\n

Some of the most highly publicized creativity studies were carried out at the Institute for Personality Assessment and Research (IPAR) at the University of California, Berkeley. There, famous writers, mathematicians, and architects like Truman Capote, Louis Kahn, and Eero Saarinnen underwent intensive scrutiny including Rorschach ink blots, drawing completion tests, and psycho­analysis.

\n\n

One finding revealed these creative subjects preferred abstract to representational art. The researchers interpreted this aesthetic preference, as well as characteristics like high “ego strength” and “femininity” in men, as the result of a naturally creative personality, but later critics pointed out they might also have had to do with education, socialization, and the expectation to be creative in the first place.

\n\n

Indeed, much creativity research has been based on individuals who society already considered creative, thus reinforcing notions of who was creative, particularly white, male professionals with high education and liberal cultural values. Many researchers today doubt that something like the “creative personality” really exists, instead seeing creativity as a complex social phenomenon.

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834/annotations/0/en" - } - ] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834", + "type": "Canvas" + }, + "body": { + "type": "TextualBody", + "value": "

Constructing the Creative Personality

\n\n

Some of the most highly publicized creativity studies were carried out at the Institute for Personality Assessment and Research (IPAR) at the University of California, Berkeley. There, famous writers, mathematicians, and architects like Truman Capote, Louis Kahn, and Eero Saarinnen underwent intensive scrutiny including Rorschach ink blots, drawing completion tests, and psycho­analysis.

\n\n

One finding revealed these creative subjects preferred abstract to representational art. The researchers interpreted this aesthetic preference, as well as characteristics like high “ego strength” and “femininity” in men, as the result of a naturally creative personality, but later critics pointed out they might also have had to do with education, socialization, and the expectation to be creative in the first place.

\n\n

Indeed, much creativity research has been based on individuals who society already considered creative, thus reinforcing notions of who was creative, particularly white, male professionals with high education and liberal cultural values. Many researchers today doubt that something like the “creative personality” really exists, instead seeing creativity as a complex social phenomenon.

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b09c7b78-dd2e-5cc1-f643-10e5af061834/annotations/0/en" + } } ] } @@ -3456,142 +3296,137 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/92fab8fb-2fff-9abe-f901-f07122318a1c/specificResource", - "type": "SpecificResource", - "source": { - "id": "https://dlc.services/iiif-img/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 6036, - "width": 8174, - "label": { - "en": [ - "-" - ] - }, - "service": { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270", - "protocol": "http://iiif.io/api/image", - "width": 8174, - "height": 6036, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 756 - }, - { - "width": 400, - "height": 295 - }, - { - "width": 200, - "height": 148 - }, - { - "width": 100, - "height": 74 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } - }, - "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "type": "iiif:ImageApiSelector", - "region": "4164,352,3702,5420" - } - } - ], - "thumbnail": [ - { - "id": "https://dlc.services/thumbs/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270/full/full/0/default.jpg", + "body": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/92fab8fb-2fff-9abe-f901-f07122318a1c/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270/full/full/0/default.jpg", "type": "Image", + "format": "image/jpeg", + "height": 6036, + "width": 8174, + "label": { + "en": [ + "-" + ] + }, "service": { "type": "ImageService2", - "id": "https://dlc.services/thumbs/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270", + "id": "https://dlc.services/iiif-img/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270", "protocol": "http://iiif.io/api/image", - "profile": [ - "http://iiif.io/api/image/2/level0.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "color" - ], - "supports": [ - "sizeByWhListed" + "width": 8174, + "height": 6036, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 ] } ], - "width": 1024, - "height": 756, "sizes": [ { - "width": 100, - "height": 74 - }, - { - "width": 200, - "height": 148 + "width": 1024, + "height": 756 }, { "width": 400, "height": 295 }, { - "width": 1024, - "height": 756 - } + "width": 200, + "height": 148 + }, + { + "width": 100, + "height": 74 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } ] } + }, + "selector": { + "type": "iiif:ImageApiSelector", + "region": "4164,352,3702,5420" } - ], - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/92fab8fb-2fff-9abe-f901-f07122318a1c", - "target": [ + }, + "thumbnail": [ { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=124,624,205,298", - "type": "Canvas" + "id": "https://dlc.services/thumbs/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/bdd5d699-94f9-465c-ae4a-d5d209f3c270", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 756, + "sizes": [ + { + "width": 100, + "height": 74 + }, + { + "width": 200, + "height": 148 + }, + { + "width": 400, + "height": 295 + }, + { + "width": 1024, + "height": 756 + } + ] + } } ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/92fab8fb-2fff-9abe-f901-f07122318a1c", + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=124,624,205,298", + "type": "Canvas" + }, "summary": { "en": [ "Researchers found that people they deemed creative preferred messy and asymmetrical figures, while randomly selected university students tended to prefer simple, linear, and sym­metrical figures. The psychologists concluded creative people had a higher “tolerance for ambiguity,” though the result might also have been because the creative group, which included successful architects and writers, was more likely to have a learned taste for modern art." @@ -3608,91 +3443,88 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/27efc122-6e41-0792-dcfe-aa001147d254/specificResource", - "type": "SpecificResource", - "source": { - "id": "https://dlc.services/iiif-img/7/21/9be87962-0977-4b05-9012-c3a0061ced9f/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 6237, - "width": 8713, - "label": { - "en": [ - "-" - ] - }, - "service": { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/9be87962-0977-4b05-9012-c3a0061ced9f", - "protocol": "http://iiif.io/api/image", - "width": 8713, - "height": 6237, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 733 - }, - { - "width": 400, - "height": 286 - }, - { - "width": 200, - "height": 143 - }, - { - "width": 100, - "height": 72 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/27efc122-6e41-0792-dcfe-aa001147d254/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/9be87962-0977-4b05-9012-c3a0061ced9f/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6237, + "width": 8713, + "label": { + "en": [ + "-" + ] }, - "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "type": "iiif:ImageApiSelector", - "region": "4415,422,3758,5440" + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/9be87962-0977-4b05-9012-c3a0061ced9f", + "protocol": "http://iiif.io/api/image", + "width": 8713, + "height": 6237, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 733 + }, + { + "width": 400, + "height": 286 + }, + { + "width": 200, + "height": 143 + }, + { + "width": 100, + "height": 72 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] } + }, + "selector": { + "type": "iiif:ImageApiSelector", + "region": "4415,422,3758,5440" } - ], + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/9be87962-0977-4b05-9012-c3a0061ced9f/full/full/0/default.jpg", @@ -3739,12 +3571,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/27efc122-6e41-0792-dcfe-aa001147d254", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=365,622,205,296", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=365,622,205,296", + "type": "Canvas" + }, "label": { "en": [ "Sidney J. Parnes and Harold F. Harding eds., The Sourcebook for Creative Thinking, 1962" @@ -3761,91 +3591,88 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3c6f823d-4999-2cd7-d7a8-3ff9209f6dee/specificResource", - "type": "SpecificResource", - "source": { - "id": "https://dlc.services/iiif-img/7/21/4ae24fbb-cc11-4dbd-ae68-2a2951380b04/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 6452, - "width": 8840, - "label": { - "en": [ - "-" - ] - }, - "service": { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/4ae24fbb-cc11-4dbd-ae68-2a2951380b04", - "protocol": "http://iiif.io/api/image", - "width": 8840, - "height": 6452, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 747 - }, - { - "width": 400, - "height": 292 - }, - { - "width": 200, - "height": 146 - }, - { - "width": 100, - "height": 73 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3c6f823d-4999-2cd7-d7a8-3ff9209f6dee/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/4ae24fbb-cc11-4dbd-ae68-2a2951380b04/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6452, + "width": 8840, + "label": { + "en": [ + "-" + ] }, - "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "type": "iiif:ImageApiSelector", - "region": "4479,548,3718,5404" + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/4ae24fbb-cc11-4dbd-ae68-2a2951380b04", + "protocol": "http://iiif.io/api/image", + "width": 8840, + "height": 6452, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 747 + }, + { + "width": 400, + "height": 292 + }, + { + "width": 200, + "height": 146 + }, + { + "width": 100, + "height": 73 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] } + }, + "selector": { + "type": "iiif:ImageApiSelector", + "region": "4479,548,3718,5404" } - ], + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/4ae24fbb-cc11-4dbd-ae68-2a2951380b04/full/full/0/default.jpg", @@ -3892,12 +3719,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3c6f823d-4999-2cd7-d7a8-3ff9209f6dee", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=603,622,203,293", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=603,622,203,293", + "type": "Canvas" + }, "label": { "en": [ "Sidney J. Parnes and Harold F. Harding eds., The Sourcebook for Creative Thinking, 1962" @@ -3914,84 +3739,82 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/00298292-8c7a-4939-b153-bef45c24160a/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 6423, - "width": 8722, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/00298292-8c7a-4939-b153-bef45c24160a", - "protocol": "http://iiif.io/api/image", - "width": 8722, - "height": 6423, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 754 - }, - { - "width": 400, - "height": 295 - }, - { - "width": 200, - "height": 147 - }, - { - "width": 100, - "height": 74 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/00298292-8c7a-4939-b153-bef45c24160a/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 6423, + "width": 8722, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/00298292-8c7a-4939-b153-bef45c24160a", + "protocol": "http://iiif.io/api/image", + "width": 8722, + "height": 6423, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 754 + }, + { + "width": 400, + "height": 295 + }, + { + "width": 200, + "height": 147 + }, + { + "width": 100, + "height": 74 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/00298292-8c7a-4939-b153-bef45c24160a/full/full/0/default.jpg", @@ -4038,12 +3861,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/742f09f4-1005-6fb1-0a56-7b2967a9c627", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=77,21,787,577", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59#xywh=77,21,787,577", + "type": "Canvas" + }, "summary": { "en": [ "Researchers at Berkeley’s IPAR asked subjects to create mosaics with colored tiles. The examples on the left were produced by the “non-creative” control group of randomly selected students, while those on the right were produced by prominent figures rated highly creative by their peers. The researchers concluded that creative people naturally prefer asymmetrical figures." @@ -4075,16 +3896,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/92fab8fb-2fff-9abe-f901-f07122318a1c", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/92fab8fb-2fff-9abe-f901-f07122318a1c", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59/annotations/36", @@ -4092,16 +3908,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/27efc122-6e41-0792-dcfe-aa001147d254", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/27efc122-6e41-0792-dcfe-aa001147d254", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59/annotations/37", @@ -4109,16 +3920,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3c6f823d-4999-2cd7-d7a8-3ff9209f6dee", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3c6f823d-4999-2cd7-d7a8-3ff9209f6dee", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/66dc7c31-e263-79bc-08a7-43a5f6e6ad59/annotations/38", @@ -4126,16 +3932,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/742f09f4-1005-6fb1-0a56-7b2967a9c627", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/742f09f4-1005-6fb1-0a56-7b2967a9c627", + "type": "Annotation", + "motivation": [] + } } ] } @@ -4154,100 +3955,97 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/948d003d-2eac-6916-95c5-b54bdfb17909/specificResource", - "type": "SpecificResource", - "source": { - "id": "https://dlc.services/iiif-img/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 10417, - "width": 10417, - "label": { - "en": [ - "-" - ] - }, - "service": { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba", - "protocol": "http://iiif.io/api/image", - "width": 10417, - "height": 10417, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 1024 - }, - { - "width": 400, - "height": 400 - }, - { - "width": 200, - "height": 200 - }, - { - "width": 100, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } - }, - "selector": { - "@context": "http://iiif.io/api/annex/openannotation/context.json", - "type": "iiif:ImageApiSelector", - "region": "0,0,10417,10417" - } - } - ], - "thumbnail": [ - { - "id": "https://dlc.services/thumbs/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba/full/full/0/default.jpg", + "body": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/948d003d-2eac-6916-95c5-b54bdfb17909/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba/full/full/0/default.jpg", "type": "Image", - "service": { - "type": "ImageService2", - "id": "https://dlc.services/thumbs/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba", - "protocol": "http://iiif.io/api/image", - "profile": [ + "format": "image/jpeg", + "height": 10417, + "width": 10417, + "label": { + "en": [ + "-" + ] + }, + "service": { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba", + "protocol": "http://iiif.io/api/image", + "width": 10417, + "height": 10417, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + }, + "selector": { + "type": "iiif:ImageApiSelector", + "region": "0,0,10417,10417" + } + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/509a91e3-20ff-4f69-bf6c-716b18b9d3ba", + "protocol": "http://iiif.io/api/image", + "profile": [ "http://iiif.io/api/image/2/level0.json", { "formats": [ @@ -4285,12 +4083,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/948d003d-2eac-6916-95c5-b54bdfb17909", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b8f3a066-c17b-e125-b3b8-5294155cb48e#xywh=-9418,-9418,10417,10417", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/b8f3a066-c17b-e125-b3b8-5294155cb48e#xywh=-9418,-9418,10417,10417", + "type": "Canvas" + }, "label": { "en": [ "Peter Max for Tin Lizzie Restaurant New York" @@ -4330,83 +4126,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/d9475790-9cb2-422b-9b91-68d2da7e5c2e/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3215, - "width": 5009, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/d9475790-9cb2-422b-9b91-68d2da7e5c2e", - "protocol": "http://iiif.io/api/image", - "width": 5009, - "height": 3215, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 657 - }, - { - "width": 400, - "height": 257 - }, - { - "width": 200, - "height": 128 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/d9475790-9cb2-422b-9b91-68d2da7e5c2e/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3215, + "width": 5009, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/d9475790-9cb2-422b-9b91-68d2da7e5c2e", + "protocol": "http://iiif.io/api/image", + "width": 5009, + "height": 3215, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 657 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/d9475790-9cb2-422b-9b91-68d2da7e5c2e/full/full/0/default.jpg", @@ -4453,12 +4247,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/31466717-e1ea-ecab-ddc8-ed55f334340a", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=18,42,229,146", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=18,42,229,146", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -4470,83 +4262,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/f1cfec20-4128-4796-b5b1-b800604687f3/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3230, - "width": 5040, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/f1cfec20-4128-4796-b5b1-b800604687f3", - "protocol": "http://iiif.io/api/image", - "width": 5040, - "height": 3230, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 656 - }, - { - "width": 400, - "height": 256 - }, - { - "width": 200, - "height": 128 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/f1cfec20-4128-4796-b5b1-b800604687f3/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3230, + "width": 5040, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/f1cfec20-4128-4796-b5b1-b800604687f3", + "protocol": "http://iiif.io/api/image", + "width": 5040, + "height": 3230, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 656 + }, + { + "width": 400, + "height": 256 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/f1cfec20-4128-4796-b5b1-b800604687f3/full/full/0/default.jpg", @@ -4593,12 +4383,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e2afad69-442c-82b6-259e-5b9c1efb38ab", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=263,48,230,147", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=263,48,230,147", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -4610,83 +4398,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/8326717e-381b-41d2-b019-e0d54e29b0dd/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3208, - "width": 5035, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/8326717e-381b-41d2-b019-e0d54e29b0dd", - "protocol": "http://iiif.io/api/image", - "width": 5035, - "height": 3208, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 652 - }, - { - "width": 400, - "height": 255 - }, - { - "width": 200, - "height": 127 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/8326717e-381b-41d2-b019-e0d54e29b0dd/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3208, + "width": 5035, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/8326717e-381b-41d2-b019-e0d54e29b0dd", + "protocol": "http://iiif.io/api/image", + "width": 5035, + "height": 3208, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 652 + }, + { + "width": 400, + "height": 255 + }, + { + "width": 200, + "height": 127 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/8326717e-381b-41d2-b019-e0d54e29b0dd/full/full/0/default.jpg", @@ -4733,12 +4519,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c24489ae-b4ed-0e1d-2cf0-b14649345be0", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=508,39,230,147", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=508,39,230,147", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -4750,114 +4534,112 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3219, - "width": 5011, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96", - "protocol": "http://iiif.io/api/image", - "width": 5011, - "height": 3219, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 658 - }, - { - "width": 400, - "height": 257 - }, - { - "width": 200, - "height": 128 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3219, + "width": 5011, + "label": { + "en": [ + "-" ] - } - ], - "thumbnail": [ - { - "id": "https://dlc.services/thumbs/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96/full/full/0/default.jpg", - "type": "Image", - "service": { + }, + "service": [ + { "type": "ImageService2", - "id": "https://dlc.services/thumbs/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96", + "id": "https://dlc.services/iiif-img/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96", "protocol": "http://iiif.io/api/image", - "profile": [ - "http://iiif.io/api/image/2/level0.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "color" - ], - "supports": [ - "sizeByWhListed" + "width": 5011, + "height": 3219, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 ] } ], - "width": 1024, - "height": 658, "sizes": [ { - "width": 100, - "height": 64 + "width": 1024, + "height": 658 }, { - "width": 200, + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96/full/full/0/default.jpg", + "type": "Image", + "service": { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/49a00da1-9667-4c2d-8dcf-aaa4dd537e96", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 658, + "sizes": [ + { + "width": 100, + "height": 64 + }, + { + "width": 200, "height": 128 }, { @@ -4873,12 +4655,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/13301733-9e5a-a1b7-c5aa-46e8c8da8454", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=750,33,233,149", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=750,33,233,149", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -4890,83 +4670,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/f001c9b4-c83c-4528-9076-d3c8f67c5f8b/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3219, - "width": 5002, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/f001c9b4-c83c-4528-9076-d3c8f67c5f8b", - "protocol": "http://iiif.io/api/image", - "width": 5002, - "height": 3219, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 659 - }, - { - "width": 400, - "height": 257 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/f001c9b4-c83c-4528-9076-d3c8f67c5f8b/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3219, + "width": 5002, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/f001c9b4-c83c-4528-9076-d3c8f67c5f8b", + "protocol": "http://iiif.io/api/image", + "width": 5002, + "height": 3219, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 659 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/f001c9b4-c83c-4528-9076-d3c8f67c5f8b/full/full/0/default.jpg", @@ -5013,12 +4791,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/36229569-3f9e-c11d-2f05-0016d089326f", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=20,226,232,148", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=20,226,232,148", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -5030,83 +4806,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/0c8b94c2-77ef-47c2-a2c9-87b6835a9a21/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3201, - "width": 5000, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/0c8b94c2-77ef-47c2-a2c9-87b6835a9a21", - "protocol": "http://iiif.io/api/image", - "width": 5000, - "height": 3201, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 656 - }, - { - "width": 400, - "height": 256 - }, - { - "width": 200, - "height": 128 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/0c8b94c2-77ef-47c2-a2c9-87b6835a9a21/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3201, + "width": 5000, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/0c8b94c2-77ef-47c2-a2c9-87b6835a9a21", + "protocol": "http://iiif.io/api/image", + "width": 5000, + "height": 3201, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 656 + }, + { + "width": 400, + "height": 256 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/0c8b94c2-77ef-47c2-a2c9-87b6835a9a21/full/full/0/default.jpg", @@ -5153,12 +4927,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/09640709-1b54-a90c-114c-394424c29238", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=266,228,222,141", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=266,228,222,141", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -5170,83 +4942,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/a39894a9-8cef-4b0b-a0e8-fa2a3ebdf504/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3229, - "width": 5037, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/a39894a9-8cef-4b0b-a0e8-fa2a3ebdf504", - "protocol": "http://iiif.io/api/image", - "width": 5037, - "height": 3229, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 656 - }, - { - "width": 400, - "height": 256 - }, - { - "width": 200, - "height": 128 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/a39894a9-8cef-4b0b-a0e8-fa2a3ebdf504/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3229, + "width": 5037, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/a39894a9-8cef-4b0b-a0e8-fa2a3ebdf504", + "protocol": "http://iiif.io/api/image", + "width": 5037, + "height": 3229, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 656 + }, + { + "width": 400, + "height": 256 + }, + { + "width": 200, + "height": 128 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/a39894a9-8cef-4b0b-a0e8-fa2a3ebdf504/full/full/0/default.jpg", @@ -5293,12 +5063,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/163af9c8-84b6-9d1b-99ef-9d77cb190345", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=510,221,232,148", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=510,221,232,148", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -5310,83 +5078,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/7d723b73-8509-40e3-8bb5-b66d00d52097/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3239, - "width": 5012, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/7d723b73-8509-40e3-8bb5-b66d00d52097", - "protocol": "http://iiif.io/api/image", - "width": 5012, - "height": 3239, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 662 - }, - { - "width": 400, - "height": 258 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 65 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/7d723b73-8509-40e3-8bb5-b66d00d52097/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3239, + "width": 5012, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7d723b73-8509-40e3-8bb5-b66d00d52097", + "protocol": "http://iiif.io/api/image", + "width": 5012, + "height": 3239, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 662 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/7d723b73-8509-40e3-8bb5-b66d00d52097/full/full/0/default.jpg", @@ -5433,12 +5199,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9a30bd2e-b202-adf9-0a44-2e5f650e3feb", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=764,234,223,144", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=764,234,223,144", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -5450,83 +5214,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/cf185286-36b1-4022-be37-2283ae8e4edb/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3226, - "width": 5003, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/cf185286-36b1-4022-be37-2283ae8e4edb", - "protocol": "http://iiif.io/api/image", - "width": 5003, - "height": 3226, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 660 - }, - { - "width": 400, - "height": 258 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/cf185286-36b1-4022-be37-2283ae8e4edb/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3226, + "width": 5003, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/cf185286-36b1-4022-be37-2283ae8e4edb", + "protocol": "http://iiif.io/api/image", + "width": 5003, + "height": 3226, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 660 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/cf185286-36b1-4022-be37-2283ae8e4edb/full/full/0/default.jpg", @@ -5573,12 +5335,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3bb8624e-c1dc-b07d-e301-a9cf7ef4e0c3", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=15,396,235,151", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=15,396,235,151", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -5590,83 +5350,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/66928523-34d6-4394-aafa-8c287a457dee/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3224, - "width": 4979, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/66928523-34d6-4394-aafa-8c287a457dee", - "protocol": "http://iiif.io/api/image", - "width": 4979, - "height": 3224, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 663 - }, - { - "width": 400, - "height": 259 - }, - { - "width": 200, - "height": 130 - }, - { - "width": 100, - "height": 65 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/66928523-34d6-4394-aafa-8c287a457dee/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3224, + "width": 4979, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/66928523-34d6-4394-aafa-8c287a457dee", + "protocol": "http://iiif.io/api/image", + "width": 4979, + "height": 3224, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 663 + }, + { + "width": 400, + "height": 259 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/66928523-34d6-4394-aafa-8c287a457dee/full/full/0/default.jpg", @@ -5713,12 +5471,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/8ad0d15b-2c27-e73e-47bb-f4199056c8cf", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=276,394,224,145", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=276,394,224,145", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -5730,83 +5486,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/c962c6a8-08a1-4288-8aa9-1bfa1fd13ffa/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3233, - "width": 4978, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/c962c6a8-08a1-4288-8aa9-1bfa1fd13ffa", - "protocol": "http://iiif.io/api/image", - "width": 4978, - "height": 3233, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 665 - }, - { - "width": 400, - "height": 260 - }, - { - "width": 200, - "height": 130 - }, - { - "width": 100, - "height": 65 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/c962c6a8-08a1-4288-8aa9-1bfa1fd13ffa/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3233, + "width": 4978, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/c962c6a8-08a1-4288-8aa9-1bfa1fd13ffa", + "protocol": "http://iiif.io/api/image", + "width": 4978, + "height": 3233, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 665 + }, + { + "width": 400, + "height": 260 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/c962c6a8-08a1-4288-8aa9-1bfa1fd13ffa/full/full/0/default.jpg", @@ -5849,16 +5603,14 @@ "height": 665 } ] - } - } - ], - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/513eb124-da3c-55ea-fb54-bc01a1dbbaff", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=518,404,218,141", - "type": "Canvas" + } } ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/513eb124-da3c-55ea-fb54-bc01a1dbbaff", + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=518,404,218,141", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -5870,83 +5622,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/563a73a1-8264-4a0d-a5a7-ad1517a7cc09/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3194, - "width": 4962, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/563a73a1-8264-4a0d-a5a7-ad1517a7cc09", - "protocol": "http://iiif.io/api/image", - "width": 4962, - "height": 3194, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 659 - }, - { - "width": 400, - "height": 257 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/563a73a1-8264-4a0d-a5a7-ad1517a7cc09/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3194, + "width": 4962, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/563a73a1-8264-4a0d-a5a7-ad1517a7cc09", + "protocol": "http://iiif.io/api/image", + "width": 4962, + "height": 3194, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 659 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/563a73a1-8264-4a0d-a5a7-ad1517a7cc09/full/full/0/default.jpg", @@ -5993,12 +5743,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/50fe8189-90f6-1e78-e8a6-16d9688dce7c", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=755,411,232,148", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=755,411,232,148", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -6010,83 +5758,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/d865a110-6ba9-42bb-9fce-b9574f1ed84e/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3226, - "width": 4982, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/d865a110-6ba9-42bb-9fce-b9574f1ed84e", - "protocol": "http://iiif.io/api/image", - "width": 4982, - "height": 3226, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 663 - }, - { - "width": 400, - "height": 259 - }, - { - "width": 200, - "height": 130 - }, - { - "width": 100, - "height": 65 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/d865a110-6ba9-42bb-9fce-b9574f1ed84e/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3226, + "width": 4982, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/d865a110-6ba9-42bb-9fce-b9574f1ed84e", + "protocol": "http://iiif.io/api/image", + "width": 4982, + "height": 3226, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 663 + }, + { + "width": 400, + "height": 259 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/d865a110-6ba9-42bb-9fce-b9574f1ed84e/full/full/0/default.jpg", @@ -6133,12 +5879,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c0913eac-9272-0b7e-f73d-79436a9e49f1", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=12,601,229,148", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=12,601,229,148", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -6150,83 +5894,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/9d2ab96c-4b3b-4015-ad9b-b6eebbfbd429/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3229, - "width": 4978, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/9d2ab96c-4b3b-4015-ad9b-b6eebbfbd429", - "protocol": "http://iiif.io/api/image", - "width": 4978, - "height": 3229, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 664 - }, - { - "width": 400, - "height": 259 - }, - { - "width": 200, - "height": 130 - }, - { - "width": 100, - "height": 65 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/9d2ab96c-4b3b-4015-ad9b-b6eebbfbd429/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3229, + "width": 4978, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/9d2ab96c-4b3b-4015-ad9b-b6eebbfbd429", + "protocol": "http://iiif.io/api/image", + "width": 4978, + "height": 3229, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 664 + }, + { + "width": 400, + "height": 259 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/9d2ab96c-4b3b-4015-ad9b-b6eebbfbd429/full/full/0/default.jpg", @@ -6273,12 +6015,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e6081f7c-7ba9-4f7b-990a-0e74cdabe78f", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=257,584,237,153", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=257,584,237,153", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -6290,83 +6030,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/1c9d5f72-3922-4ef5-9a2e-ccfbb29ad448/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3234, - "width": 5009, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/1c9d5f72-3922-4ef5-9a2e-ccfbb29ad448", - "protocol": "http://iiif.io/api/image", - "width": 5009, - "height": 3234, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 661 - }, - { - "width": 400, - "height": 258 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 65 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/1c9d5f72-3922-4ef5-9a2e-ccfbb29ad448/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3234, + "width": 5009, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/1c9d5f72-3922-4ef5-9a2e-ccfbb29ad448", + "protocol": "http://iiif.io/api/image", + "width": 5009, + "height": 3234, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 661 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/1c9d5f72-3922-4ef5-9a2e-ccfbb29ad448/full/full/0/default.jpg", @@ -6413,12 +6151,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/08997bad-bc2f-65d6-b918-480547ceecca", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=510,603,231,149", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=510,603,231,149", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -6430,83 +6166,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/25365eba-8584-4b92-8bdc-556c6423f02b/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3232, - "width": 5015, - "label": { - "en": [ - "-" + "body": { + "id": "https://dlc.services/iiif-img/7/21/25365eba-8584-4b92-8bdc-556c6423f02b/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3232, + "width": 5015, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/25365eba-8584-4b92-8bdc-556c6423f02b", + "protocol": "http://iiif.io/api/image", + "width": 5015, + "height": 3232, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 660 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/25365eba-8584-4b92-8bdc-556c6423f02b", - "protocol": "http://iiif.io/api/image", - "width": 5015, - "height": 3232, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 660 - }, - { - "width": 400, - "height": 258 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } - ] - } - ], + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/25365eba-8584-4b92-8bdc-556c6423f02b/full/full/0/default.jpg", @@ -6553,12 +6287,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/accc95b6-1120-fe01-e3b8-97cbc686506c", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=761,586,225,144", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=761,586,225,144", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -6570,83 +6302,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/d1be611f-3ed2-41e1-bf2c-b83543ce8a3c/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3226, - "width": 5007, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/d1be611f-3ed2-41e1-bf2c-b83543ce8a3c", - "protocol": "http://iiif.io/api/image", - "width": 5007, - "height": 3226, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 660 - }, - { - "width": 400, - "height": 258 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/d1be611f-3ed2-41e1-bf2c-b83543ce8a3c/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3226, + "width": 5007, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/d1be611f-3ed2-41e1-bf2c-b83543ce8a3c", + "protocol": "http://iiif.io/api/image", + "width": 5007, + "height": 3226, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 660 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/d1be611f-3ed2-41e1-bf2c-b83543ce8a3c/full/full/0/default.jpg", @@ -6693,12 +6423,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c32d124a-718d-8e23-a519-938b6f1f8e18", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=10,779,238,152", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=10,779,238,152", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -6710,83 +6438,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/f68d2c83-cb1b-4b7f-9a81-546c5a482982/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3233, - "width": 5012, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/f68d2c83-cb1b-4b7f-9a81-546c5a482982", - "protocol": "http://iiif.io/api/image", - "width": 5012, - "height": 3233, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 661 - }, - { - "width": 400, - "height": 258 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 65 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/f68d2c83-cb1b-4b7f-9a81-546c5a482982/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3233, + "width": 5012, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/f68d2c83-cb1b-4b7f-9a81-546c5a482982", + "protocol": "http://iiif.io/api/image", + "width": 5012, + "height": 3233, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 661 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/f68d2c83-cb1b-4b7f-9a81-546c5a482982/full/full/0/default.jpg", @@ -6833,12 +6559,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/836eef4d-1f08-4240-4577-10504228a3ad", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=263,789,237,152", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=263,789,237,152", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -6850,83 +6574,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/33597349-12ad-40fb-bde5-afd13649099e/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3228, - "width": 5020, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/33597349-12ad-40fb-bde5-afd13649099e", - "protocol": "http://iiif.io/api/image", - "width": 5020, - "height": 3228, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 658 - }, - { - "width": 400, - "height": 257 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 64 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/33597349-12ad-40fb-bde5-afd13649099e/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3228, + "width": 5020, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/33597349-12ad-40fb-bde5-afd13649099e", + "protocol": "http://iiif.io/api/image", + "width": 5020, + "height": 3228, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 658 + }, + { + "width": 400, + "height": 257 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 64 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/33597349-12ad-40fb-bde5-afd13649099e/full/full/0/default.jpg", @@ -6973,12 +6695,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/cfebe2ab-731f-400c-e336-e437f9a2ac3f", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=514,809,232,148", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=514,809,232,148", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -6990,83 +6710,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/18804aee-2b95-45b6-b82b-7437a311aabd/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3233, - "width": 5010, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/18804aee-2b95-45b6-b82b-7437a311aabd", - "protocol": "http://iiif.io/api/image", - "width": 5010, - "height": 3233, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 661 - }, - { - "width": 400, - "height": 258 - }, - { - "width": 200, - "height": 129 - }, - { - "width": 100, - "height": 65 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/18804aee-2b95-45b6-b82b-7437a311aabd/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3233, + "width": 5010, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/18804aee-2b95-45b6-b82b-7437a311aabd", + "protocol": "http://iiif.io/api/image", + "width": 5010, + "height": 3233, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 661 + }, + { + "width": 400, + "height": 258 + }, + { + "width": 200, + "height": 129 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/18804aee-2b95-45b6-b82b-7437a311aabd/full/full/0/default.jpg", @@ -7113,12 +6831,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/1918f1bd-46f3-bac6-8ffa-53ffa2efbbe1", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=754,797,235,150", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92#xywh=754,797,235,150", + "type": "Canvas" + }, "label": { "en": [ "Kaiser Aluminum News, “You and Creativity,” 1968" @@ -7152,16 +6868,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/31466717-e1ea-ecab-ddc8-ed55f334340a", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/31466717-e1ea-ecab-ddc8-ed55f334340a", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/41", @@ -7169,16 +6880,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e2afad69-442c-82b6-259e-5b9c1efb38ab", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e2afad69-442c-82b6-259e-5b9c1efb38ab", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/42", @@ -7186,16 +6892,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c24489ae-b4ed-0e1d-2cf0-b14649345be0", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c24489ae-b4ed-0e1d-2cf0-b14649345be0", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/43", @@ -7203,16 +6904,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/13301733-9e5a-a1b7-c5aa-46e8c8da8454", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/13301733-9e5a-a1b7-c5aa-46e8c8da8454", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/44", @@ -7220,16 +6916,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/36229569-3f9e-c11d-2f05-0016d089326f", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/36229569-3f9e-c11d-2f05-0016d089326f", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/45", @@ -7237,16 +6928,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/09640709-1b54-a90c-114c-394424c29238", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/09640709-1b54-a90c-114c-394424c29238", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/46", @@ -7254,16 +6940,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/163af9c8-84b6-9d1b-99ef-9d77cb190345", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/163af9c8-84b6-9d1b-99ef-9d77cb190345", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/47", @@ -7271,16 +6952,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9a30bd2e-b202-adf9-0a44-2e5f650e3feb", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/9a30bd2e-b202-adf9-0a44-2e5f650e3feb", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/48", @@ -7288,16 +6964,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3bb8624e-c1dc-b07d-e301-a9cf7ef4e0c3", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/3bb8624e-c1dc-b07d-e301-a9cf7ef4e0c3", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/49", @@ -7305,16 +6976,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/8ad0d15b-2c27-e73e-47bb-f4199056c8cf", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/8ad0d15b-2c27-e73e-47bb-f4199056c8cf", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/50", @@ -7322,16 +6988,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/513eb124-da3c-55ea-fb54-bc01a1dbbaff", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/513eb124-da3c-55ea-fb54-bc01a1dbbaff", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/51", @@ -7339,16 +7000,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/50fe8189-90f6-1e78-e8a6-16d9688dce7c", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/50fe8189-90f6-1e78-e8a6-16d9688dce7c", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/52", @@ -7356,16 +7012,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c0913eac-9272-0b7e-f73d-79436a9e49f1", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c0913eac-9272-0b7e-f73d-79436a9e49f1", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/53", @@ -7373,16 +7024,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e6081f7c-7ba9-4f7b-990a-0e74cdabe78f", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/e6081f7c-7ba9-4f7b-990a-0e74cdabe78f", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/54", @@ -7390,16 +7036,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/08997bad-bc2f-65d6-b918-480547ceecca", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/08997bad-bc2f-65d6-b918-480547ceecca", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/55", @@ -7407,16 +7048,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/accc95b6-1120-fe01-e3b8-97cbc686506c", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/accc95b6-1120-fe01-e3b8-97cbc686506c", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/56", @@ -7424,16 +7060,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c32d124a-718d-8e23-a519-938b6f1f8e18", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/c32d124a-718d-8e23-a519-938b6f1f8e18", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/57", @@ -7441,16 +7072,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/836eef4d-1f08-4240-4577-10504228a3ad", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/836eef4d-1f08-4240-4577-10504228a3ad", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/58", @@ -7458,16 +7084,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/cfebe2ab-731f-400c-e336-e437f9a2ac3f", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/cfebe2ab-731f-400c-e336-e437f9a2ac3f", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/d46faeda-cc65-9e66-5380-545bb93e4e92/annotations/59", @@ -7475,16 +7096,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/1918f1bd-46f3-bac6-8ffa-53ffa2efbbe1", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/1918f1bd-46f3-bac6-8ffa-53ffa2efbbe1", + "type": "Annotation", + "motivation": [] + } } ] } @@ -7508,84 +7124,82 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/7abc7471-4a24-4b61-a9ec-7bb9e5b588ef/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 8292, - "width": 5775, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/7abc7471-4a24-4b61-a9ec-7bb9e5b588ef", - "protocol": "http://iiif.io/api/image", - "width": 5775, - "height": 8292, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 713, - "height": 1024 - }, - { - "width": 279, - "height": 400 - }, - { - "width": 139, - "height": 200 - }, - { - "width": 70, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/7abc7471-4a24-4b61-a9ec-7bb9e5b588ef/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 8292, + "width": 5775, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7abc7471-4a24-4b61-a9ec-7bb9e5b588ef", + "protocol": "http://iiif.io/api/image", + "width": 5775, + "height": 8292, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 713, + "height": 1024 + }, + { + "width": 279, + "height": 400 + }, + { + "width": 139, + "height": 200 + }, + { + "width": 70, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/7abc7471-4a24-4b61-a9ec-7bb9e5b588ef/full/full/0/default.jpg", @@ -7632,12 +7246,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/cab264ad-d299-4774-ea0c-601181791fc9", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/820c7365-b5a4-3e07-da24-006bf156d258#xywh=0,0,696,1000", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/820c7365-b5a4-3e07-da24-006bf156d258#xywh=0,0,696,1000", + "type": "Canvas" + }, "label": { "en": [ "Scientific American, September 1958" @@ -7675,21 +7287,19 @@ "items": [ { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "value": "

Creativity Is Not About Art

\n\n

The British author Oscar Wilde once wrote, “all art is quite useless.” So why would people who write about creativity – which they say is the ability to come up with something new and useful – constantly urge people to unleash their inner artist?

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/textualbody/aa1400d1-970d-91ce-7dcc-9cc7ff001307/en" - } - ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08", - "type": "Canvas" - } - ], + "body": { + "type": "TextualBody", + "value": "

Creativity Is Not About Art

\n\n

The British author Oscar Wilde once wrote, “all art is quite useless.” So why would people who write about creativity – which they say is the ability to come up with something new and useful – constantly urge people to unleash their inner artist?

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/textualbody/aa1400d1-970d-91ce-7dcc-9cc7ff001307/en" + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08", + "type": "Canvas" + }, "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/96fa4c9b-b0ed-daa9-7986-8f1076442cfe", "motivation": [ "painting" @@ -7716,21 +7326,19 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08", - "type": "Canvas" - } - ], - "body": [ - { - "type": "TextualBody", - "value": "

Creativity is Not About Art

\n\n

The British author Oscar Wilde once wrote, “all art is quite useless.” So why would people who write about creativity – which they say is the ability to come up with something new and useful – constantly urge people to unleash their inner artist? In creativity literature the idealized figure of the romantic artist is a model for us to emulate, not for his or her ability to make art – reading books on creativity will not make us skilled painters – but rather for other attributes seen as desirable, such as flexibility, passion, playfulness, rebelliousness, and above all a purported penchant for novelty. Yet even as creativity experts embrace the figure of the artist, they are also quick to disown the reputation of the wild-eyed bohemian who is hostile to capitalism. Truly creative people, they say, can thrive even in the commercial or technical worlds. Creativity is like the essence of the artist, distilled and bottled for general use.

", - "format": "text/html", - "language": "en", - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08/annotations/0/en" - } - ] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08", + "type": "Canvas" + }, + "body": { + "type": "TextualBody", + "value": "

Creativity is Not About Art

\n\n

The British author Oscar Wilde once wrote, “all art is quite useless.” So why would people who write about creativity – which they say is the ability to come up with something new and useful – constantly urge people to unleash their inner artist? In creativity literature the idealized figure of the romantic artist is a model for us to emulate, not for his or her ability to make art – reading books on creativity will not make us skilled painters – but rather for other attributes seen as desirable, such as flexibility, passion, playfulness, rebelliousness, and above all a purported penchant for novelty. Yet even as creativity experts embrace the figure of the artist, they are also quick to disown the reputation of the wild-eyed bohemian who is hostile to capitalism. Truly creative people, they say, can thrive even in the commercial or technical worlds. Creativity is like the essence of the artist, distilled and bottled for general use.

", + "format": "text/html", + "language": [ + "en" + ], + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/e304ea99-4d7d-a4c7-9757-27913c617f08/annotations/0/en" + } } ] } @@ -7754,83 +7362,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/4d76fcca-3a39-43de-ba76-23ad0e000309/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3398, - "width": 5227, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/4d76fcca-3a39-43de-ba76-23ad0e000309", - "protocol": "http://iiif.io/api/image", - "width": 5227, - "height": 3398, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 666 - }, - { - "width": 400, - "height": 260 - }, - { - "width": 200, - "height": 130 - }, - { - "width": 100, - "height": 65 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/4d76fcca-3a39-43de-ba76-23ad0e000309/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3398, + "width": 5227, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/4d76fcca-3a39-43de-ba76-23ad0e000309", + "protocol": "http://iiif.io/api/image", + "width": 5227, + "height": 3398, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 666 + }, + { + "width": 400, + "height": 260 + }, + { + "width": 200, + "height": 130 + }, + { + "width": 100, + "height": 65 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/4d76fcca-3a39-43de-ba76-23ad0e000309/full/full/0/default.jpg", @@ -7877,12 +7483,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/45e9c6b5-1a69-6477-8bf0-5294a19b804b", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25#xywh=21,23,462,297", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25#xywh=21,23,462,297", + "type": "Canvas" + }, "summary": { "en": [ "In the brochure for his tape cassette course on creativity, famed consumer research guru turned creativity consultant Ernest Dichter assured potential clients that developing creativity via “Dr. Dichter’s 12 Steps to Creativity” would not lead to a life of self-absorbed poverty, but rather professional success. (Courtesy of Hagley Museum and Library)" @@ -7899,83 +7503,81 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/c856e755-513f-4f72-82f9-0135f7f30b78/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3210, - "width": 5181, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/c856e755-513f-4f72-82f9-0135f7f30b78", - "protocol": "http://iiif.io/api/image", - "width": 5181, - "height": 3210, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 634 - }, - { - "width": 400, - "height": 248 - }, - { - "width": 200, - "height": 124 - }, - { - "width": 100, - "height": 62 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/c856e755-513f-4f72-82f9-0135f7f30b78/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3210, + "width": 5181, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/c856e755-513f-4f72-82f9-0135f7f30b78", + "protocol": "http://iiif.io/api/image", + "width": 5181, + "height": 3210, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 634 + }, + { + "width": 400, + "height": 248 + }, + { + "width": 200, + "height": 124 + }, + { + "width": 100, + "height": 62 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/c856e755-513f-4f72-82f9-0135f7f30b78/full/full/0/default.jpg", @@ -8022,12 +7624,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/7abe4c4d-509e-5b62-4521-07e2758cb92f", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25#xywh=193,330,463,286", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25#xywh=193,330,463,286", + "type": "Canvas" + }, "label": { "en": [ "The artist in the business suit" @@ -8059,16 +7659,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/45e9c6b5-1a69-6477-8bf0-5294a19b804b", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/45e9c6b5-1a69-6477-8bf0-5294a19b804b", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/fc793715-1612-ba3c-2c39-eb201b814e25/annotations/62", @@ -8076,16 +7671,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/7abe4c4d-509e-5b62-4521-07e2758cb92f", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/7abe4c4d-509e-5b62-4521-07e2758cb92f", + "type": "Annotation", + "motivation": [] + } } ] } @@ -8109,82 +7699,80 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/7756ed2b-f072-4fef-b821-09ecf9ee9d3d/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 4079, - "width": 3234, - "label": { - "en": [ - "-" + "body": { + "id": "https://dlc.services/iiif-img/7/21/7756ed2b-f072-4fef-b821-09ecf9ee9d3d/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 4079, + "width": 3234, + "label": { + "en": [ + "-" + ] + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7756ed2b-f072-4fef-b821-09ecf9ee9d3d", + "protocol": "http://iiif.io/api/image", + "width": 3234, + "height": 4079, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 812, + "height": 1024 + }, + { + "width": 317, + "height": 400 + }, + { + "width": 159, + "height": 200 + }, + { + "width": 79, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/7756ed2b-f072-4fef-b821-09ecf9ee9d3d", - "protocol": "http://iiif.io/api/image", - "width": 3234, - "height": 4079, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16 - ] - } - ], - "sizes": [ - { - "width": 812, - "height": 1024 - }, - { - "width": 317, - "height": 400 - }, - { - "width": 159, - "height": 200 - }, - { - "width": 79, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } - ] - } - ], + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/7756ed2b-f072-4fef-b821-09ecf9ee9d3d/full/full/0/default.jpg", @@ -8231,12 +7819,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/annotation/39ee5c41-cd5f-2352-a90c-15af871be681", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5178cf84-8590-d231-e7e3-d09995b3ae1c#xywh=0,0,792,1000", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/inventing-creativity/canvas/5178cf84-8590-d231-e7e3-d09995b3ae1c#xywh=0,0,792,1000", + "type": "Canvas" + }, "label": { "en": [ "Action Office promotional photograph from the Herman Miller company, 1964" @@ -8279,84 +7865,82 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/7832f040-0f0e-4e41-8742-1cdb481e6b9c/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 11812, - "width": 11812, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/7832f040-0f0e-4e41-8742-1cdb481e6b9c", - "protocol": "http://iiif.io/api/image", - "width": 11812, - "height": 11812, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 1024 - }, - { - "width": 400, - "height": 400 - }, - { - "width": 200, - "height": 200 - }, - { - "width": 100, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/7832f040-0f0e-4e41-8742-1cdb481e6b9c/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 11812, + "width": 11812, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/7832f040-0f0e-4e41-8742-1cdb481e6b9c", + "protocol": "http://iiif.io/api/image", + "width": 11812, + "height": 11812, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/7832f040-0f0e-4e41-8742-1cdb481e6b9c/full/full/0/default.jpg", @@ -8403,12 +7987,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/6a579d95-9667-08b7-f19e-dc1749a21a74", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=0,0,500,500", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=0,0,500,500", + "type": "Canvas" + }, "label": { "en": [ "Creative work" @@ -8425,84 +8007,82 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/6187e854-138b-4d8e-b0b0-4bfdc398a077/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 11812, - "width": 11812, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/6187e854-138b-4d8e-b0b0-4bfdc398a077", - "protocol": "http://iiif.io/api/image", - "width": 11812, - "height": 11812, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 1024 - }, - { - "width": 400, - "height": 400 - }, - { - "width": 200, - "height": 200 - }, - { - "width": 100, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/6187e854-138b-4d8e-b0b0-4bfdc398a077/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 11812, + "width": 11812, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/6187e854-138b-4d8e-b0b0-4bfdc398a077", + "protocol": "http://iiif.io/api/image", + "width": 11812, + "height": 11812, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/6187e854-138b-4d8e-b0b0-4bfdc398a077/full/full/0/default.jpg", @@ -8549,12 +8129,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/c6e43b29-35e6-d10e-455e-6a07e2cd3a99", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=0,500,500,500", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=0,500,500,500", + "type": "Canvas" + }, "label": { "en": [ "Creative person" @@ -8571,84 +8149,82 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/f33d6ee8-ae0b-403e-861a-dc53962df4e5/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 11812, - "width": 11812, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/f33d6ee8-ae0b-403e-861a-dc53962df4e5", - "protocol": "http://iiif.io/api/image", - "width": 11812, - "height": 11812, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 1024 - }, - { - "width": 400, - "height": 400 - }, - { - "width": 200, - "height": 200 - }, - { - "width": 100, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/f33d6ee8-ae0b-403e-861a-dc53962df4e5/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 11812, + "width": 11812, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/f33d6ee8-ae0b-403e-861a-dc53962df4e5", + "protocol": "http://iiif.io/api/image", + "width": 11812, + "height": 11812, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/f33d6ee8-ae0b-403e-861a-dc53962df4e5/full/full/0/default.jpg", @@ -8695,12 +8271,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/f32da43f-0c40-36f1-49ab-355138d79cf2", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=500,0,500,500", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=500,0,500,500", + "type": "Canvas" + }, "label": { "en": [ "Creative workplace" @@ -8717,84 +8291,82 @@ "painting" ], "type": "Annotation", - "body": [ - { - "id": "https://dlc.services/iiif-img/7/21/2478f680-330d-4f5f-8d79-161b25b38063/full/full/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 11812, - "width": 11812, - "label": { - "en": [ - "-" - ] - }, - "service": [ - { - "type": "ImageService2", - "id": "https://dlc.services/iiif-img/7/21/2478f680-330d-4f5f-8d79-161b25b38063", - "protocol": "http://iiif.io/api/image", - "width": 11812, - "height": 11812, - "tiles": [ - { - "width": 256, - "height": 256, - "scaleFactors": [ - 1, - 2, - 4, - 8, - 16, - 32, - 64 - ] - } - ], - "sizes": [ - { - "width": 1024, - "height": 1024 - }, - { - "width": 400, - "height": 400 - }, - { - "width": 200, - "height": 200 - }, - { - "width": 100, - "height": 100 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level1.json", - { - "formats": [ - "jpg" - ], - "qualities": [ - "native", - "color", - "gray" - ], - "supports": [ - "regionByPct", - "sizeByForcedWh", - "sizeByWh", - "sizeAboveFull", - "rotationBy90s", - "mirroring", - "gray" - ] - } - ] - } + "body": { + "id": "https://dlc.services/iiif-img/7/21/2478f680-330d-4f5f-8d79-161b25b38063/full/full/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 11812, + "width": 11812, + "label": { + "en": [ + "-" ] - } - ], + }, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/2478f680-330d-4f5f-8d79-161b25b38063", + "protocol": "http://iiif.io/api/image", + "width": 11812, + "height": 11812, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32, + 64 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 1024 + }, + { + "width": 400, + "height": 400 + }, + { + "width": 200, + "height": 200 + }, + { + "width": 100, + "height": 100 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, "thumbnail": [ { "id": "https://dlc.services/thumbs/7/21/2478f680-330d-4f5f-8d79-161b25b38063/full/full/0/default.jpg", @@ -8841,12 +8413,10 @@ } ], "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/7775972e-5694-bc2c-5b48-9311bebd5f0f", - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=500,500,500,500", - "type": "Canvas" - } - ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7#xywh=500,500,500,500", + "type": "Canvas" + }, "label": { "en": [ "Creative session" @@ -8897,16 +8467,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/6a579d95-9667-08b7-f19e-dc1749a21a74", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/6a579d95-9667-08b7-f19e-dc1749a21a74", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7/annotations/65", @@ -8914,16 +8479,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/c6e43b29-35e6-d10e-455e-6a07e2cd3a99", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/c6e43b29-35e6-d10e-455e-6a07e2cd3a99", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7/annotations/66", @@ -8931,16 +8491,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/f32da43f-0c40-36f1-49ab-355138d79cf2", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/f32da43f-0c40-36f1-49ab-355138d79cf2", + "type": "Annotation", + "motivation": [] + } }, { "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/canvas/18c95c24-60c6-96d5-01b3-7ff60c0926b7/annotations/67", @@ -8948,16 +8503,11 @@ "motivation": [ "describing" ], - "target": [ - { - "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/7775972e-5694-bc2c-5b48-9311bebd5f0f", - "type": "Annotation", - "motivation": [], - "body": [], - "target": [] - } - ], - "body": [] + "target": { + "id": "https://heritage.tudelft.nl/iiif/67beaa88-13cc-52cd-6d9a-f7a7549448f8/annotation/7775972e-5694-bc2c-5b48-9311bebd5f0f", + "type": "Annotation", + "motivation": [] + } } ] } diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json b/fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json index ac9b7ea..886a1a4 100644 --- a/fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json +++ b/fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json @@ -29,228 +29,224 @@ "motivation": [ "painting" ], - "body": [ - { - "type": "Choice", - "items": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorB/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorB", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_ColorB" - ] + "body": { + "type": "Choice", + "items": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorB/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorB", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedA/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedA", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_ShadedA" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ColorB" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedA/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedA", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorA/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorA", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_ColorA" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ShadedA" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorA/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorA", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Soft/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Soft", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_Sketch01Soft" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ColorA" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Soft/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Soft", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedC/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedC", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_ShadedC" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_Sketch01Soft" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedC/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedC", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorD/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorD", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_ColorD" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ShadedC" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorD/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorD", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Color00/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Color00", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_Color00" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ColorD" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Color00/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Color00", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Hard/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Hard", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_Sketch01Hard" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_Color00" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Hard/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_Sketch01Hard", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorC/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorC", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_ColorC" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_Sketch01Hard" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorC/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ColorC", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedD/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedD", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_ShadedD" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ColorC" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedD/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedD", + "type": "ImageService2", + "profile": "level2" } - }, - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedB/full/full/0/default.jpg", - "type": "Image", - "height": 6270, - "width": 2551, - "service": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedB", - "type": "ImageService2", - "profile": "level2" - } - ], - "format": "image/jpeg", - "label": { - "en": [ - "cune-iiif-orm:testset:O.0219:O.0219_ShadedB" - ] + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ShadedD" + ] + } + }, + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedB/full/full/0/default.jpg", + "type": "Image", + "height": 6270, + "width": 2551, + "service": [ + { + "id": "https://iiif.ghentcdh.ugent.be/iiif/images/cune-iiif-orm:testset:O.0219:O.0219_ShadedB", + "type": "ImageService2", + "profile": "level2" } + ], + "format": "image/jpeg", + "label": { + "en": [ + "cune-iiif-orm:testset:O.0219:O.0219_ShadedB" + ] } - ] - } - ], - "target": [ - { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - } - ] + } + ] + }, + "target": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + } } ] } @@ -262,49 +258,50 @@ "items": [ { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "1(u)", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "1(u)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1" + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1" + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c426144a-b36b-4503-bcf6-7a0c36edd371", "motivation": [ "tagging" @@ -312,58 +309,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "1(asz)", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "1(asz)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2b053d88-5bce-49ff-aba9-104bd645b279", "motivation": [ "tagging" @@ -371,58 +369,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - }, - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "iku", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "iku", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0417f494-13e9-4e95-8fff-1040c5e1ce86", "motivation": [ "tagging" @@ -430,54 +429,55 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "a" - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e691a439-a30a-4d67-9828-f0718b07af62", "motivation": [ "tagging" @@ -485,58 +485,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "sza3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sza3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2b34febc-4ae0-4dd0-a7e6-d5e023d4bdb2", "motivation": [ "tagging" @@ -544,58 +545,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{gisz}", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "{gisz}", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#23e7b773-92e0-4bef-afdc-5a923dd68111", "motivation": [ "tagging" @@ -603,58 +605,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "kiri6", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "kiri6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0e968c19-e4a0-4120-a94c-8bcc867c99e3", "motivation": [ "tagging" @@ -662,58 +665,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "da", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "da", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#24ed6b89-1364-4ca6-b9d9-44b2572dd6b7", "motivation": [ "tagging" @@ -721,54 +725,55 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "a" - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9738e9ac-3873-4683-9210-c658ced8d0b1", "motivation": [ "tagging" @@ -776,58 +781,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "sza3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sza3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1d500524-b74c-4e07-89ba-5d3d90a3e3c3", "motivation": [ "tagging" @@ -835,58 +841,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "la", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6c455ecf-9d52-41b3-b010-d12b9aba3c5c", "motivation": [ "tagging" @@ -894,58 +901,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "la", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#38d7bccb-b518-4dd2-96cd-c2321bff1241", "motivation": [ "tagging" @@ -953,58 +961,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ti", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ti", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b6d7b7f5-16c5-4b2b-b65b-110522cd683e", "motivation": [ "tagging" @@ -1012,58 +1021,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ia", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ia", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#67ae185f-fb06-4d0b-bf59-41fc71c12f0f", "motivation": [ "tagging" @@ -1071,58 +1081,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "u3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "u3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6b290be0-3502-491a-adfe-efa45cef0dd8", "motivation": [ "tagging" @@ -1130,58 +1141,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "da", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "da", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#bdcd0efb-7ef4-4699-a5b2-7ea1cd373735", "motivation": [ "tagging" @@ -1189,58 +1201,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "na", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7319ccb1-d442-400f-bbdb-e70801de6852", "motivation": [ "tagging" @@ -1248,58 +1261,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ra", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ra", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2d4ba567-31dd-47fb-a3c4-f0d92f350456", "motivation": [ "tagging" @@ -1307,58 +1321,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "am", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "am", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4ba32aa7-c882-465a-b1e0-48a826717b29", "motivation": [ "tagging" @@ -1366,58 +1381,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "tum", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "tum", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7cb2d6e5-782d-4cfc-a33e-f47afb87da8a", "motivation": [ "tagging" @@ -1425,58 +1441,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "sag", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sag", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#80fc4205-8d91-49a6-ab75-a150e1f63e5f", "motivation": [ "tagging" @@ -1484,58 +1501,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "1(disz)", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "1(disz)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4d8d7312-874b-4183-80b4-5a910a1e2404", "motivation": [ "tagging" @@ -1543,58 +1561,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "kam", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "kam", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6a95d7c2-3e6c-493f-853c-b949eba94f83", "motivation": [ "tagging" @@ -1602,58 +1621,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "hu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "hu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#37d01b14-1bf6-4962-a21c-19936442c3c6", "motivation": [ "tagging" @@ -1661,58 +1681,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "nu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0dced633-9902-4d1e-8a5c-996b3befab70", "motivation": [ "tagging" @@ -1720,58 +1741,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - }, - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "nu", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#77b00339-3d34-437f-b161-d8a488ee6377", "motivation": [ "tagging" @@ -1779,58 +1801,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "um", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "um", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3a83bb45-e1da-407a-8125-09d5147d9cb1", "motivation": [ "tagging" @@ -1838,58 +1861,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "sag", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sag", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7e2f5d68-07c1-4f80-b29f-484fbee6171b", "motivation": [ "tagging" @@ -1897,54 +1921,55 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "2(disz)", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "2(disz)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5" + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5" + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#210e2dcd-3ca2-43dc-908d-48b379b89458", "motivation": [ "tagging" @@ -1952,58 +1977,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "kam", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "kam", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#5305137e-c099-4142-a7f7-cd99a4882ca6", "motivation": [ "tagging" @@ -2011,58 +2037,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "nu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2da3bd88-400e-4ddd-904c-3cc26c4101c9", "motivation": [ "tagging" @@ -2070,58 +2097,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ur2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#76a47021-848c-4475-8492-23504234b2b6", "motivation": [ "tagging" @@ -2129,58 +2157,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "be", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "be", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#32c11fd9-21ce-4a6b-9d46-a2e72b3026d2", "motivation": [ "tagging" @@ -2188,58 +2217,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "el", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "el", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#541f884b-aec8-4ae0-9d65-7779ba968178", "motivation": [ "tagging" @@ -2247,58 +2277,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ti", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ti", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#cc72ab91-ec7e-41cd-8850-96d861eaa620", "motivation": [ "tagging" @@ -2306,58 +2337,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ni", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6ca4fe58-710e-4a28-b844-a09626549a62", "motivation": [ "tagging" @@ -2365,58 +2397,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "szam2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szam2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3396511f-bb35-4331-af10-497bd56ec44f", "motivation": [ "tagging" @@ -2424,62 +2457,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "til", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "til", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3dbc632d-c1d8-4cce-9ccc-ea66a818ba35", "motivation": [ "tagging" @@ -2487,58 +2521,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "la", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#806a9bad-1f85-4c53-977c-445ac56d5d70", "motivation": [ "tagging" @@ -2546,58 +2581,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "bi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#bcf228f8-732f-4308-a548-970c0ccef28f", "motivation": [ "tagging" @@ -2605,58 +2641,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "sze3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sze3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f5c8881c-73d0-4e8d-b8fd-c0cb221a7237", "motivation": [ "tagging" @@ -2664,58 +2701,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "1(u)", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "1(u)", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2dfb00e8-e9c0-4dc3-be34-0ecc5f55760d", "motivation": [ "tagging" @@ -2723,58 +2761,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "gin2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "gin2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#8c6fc70e-d799-4517-9f12-d80f666b9e44", "motivation": [ "tagging" @@ -2782,58 +2821,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ku3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ku3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f87cc403-6b47-4bfe-8ebc-1f0e9e7ffa35", "motivation": [ "tagging" @@ -2841,58 +2881,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "babbar", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "babbar", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#bdea0ad3-1d2a-4ab4-897a-d8b743a784e6", "motivation": [ "tagging" @@ -2900,58 +2941,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "in", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "in", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0693f74e-4d6d-4500-8f87-be5ea22e2be6", "motivation": [ "tagging" @@ -2959,58 +3001,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "na", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f1838cc4-d0bf-413b-bed9-178cb0f0ef85", "motivation": [ "tagging" @@ -3018,58 +3061,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "la2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#05fb6483-1848-4e95-884d-90596ffa0727", "motivation": [ "tagging" @@ -3077,58 +3121,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ki", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ki", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#822f3bc4-5944-4486-8556-800f5b61ef17", "motivation": [ "tagging" @@ -3136,58 +3181,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ur", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d63ac510-62c7-440e-9e02-8a1187c9b2b4", "motivation": [ "tagging" @@ -3195,58 +3241,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "{gisz}", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{gisz}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d0674eb3-34a9-4708-b80e-3fed6582db6f", "motivation": [ "tagging" @@ -3254,58 +3301,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "gigir", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "gigir", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f5867d69-9282-43c5-afb9-5ce18a9d54bf", "motivation": [ "tagging" @@ -3313,58 +3361,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "la", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#30b10b87-2944-4e75-9999-b9c2fef8b1ac", "motivation": [ "tagging" @@ -3372,58 +3421,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "la", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2afa342c-7dbd-431b-ae11-740fecf3bb26", "motivation": [ "tagging" @@ -3431,58 +3481,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ti", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ti", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#07ab3be6-829b-4336-83d7-5d98cd36f336", "motivation": [ "tagging" @@ -3490,58 +3541,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ia", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ia", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#65b92dc8-0da0-4c13-bde5-1609c2c665c5", "motivation": [ "tagging" @@ -3549,58 +3601,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "in", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "in", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#cc0cc404-632f-4cec-b863-7b6653bb7548", "motivation": [ "tagging" @@ -3608,58 +3661,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "szi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1ba510b3-08b3-4d5d-b8ca-aa98959135a4", "motivation": [ "tagging" @@ -3667,58 +3721,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "sa10", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sa10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f190fcab-6b54-464b-94d2-98981b8cbf62", "motivation": [ "tagging" @@ -3726,58 +3781,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "u4", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "u4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#af084012-ad9e-4344-b57f-f3918dd7e962", "motivation": [ "tagging" @@ -3785,58 +3841,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "kur2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "kur2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b31d5f01-2ceb-460f-98fd-316c4daad229", "motivation": [ "tagging" @@ -3844,58 +3901,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "sze3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sze3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e3f038b1-3aa4-41b8-a7b6-01c02a7e7e57", "motivation": [ "tagging" @@ -3903,58 +3961,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "inim", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "inim", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6e18ed6b-b3c0-4d6e-aa56-aff45616515a", "motivation": [ "tagging" @@ -3962,58 +4021,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "nu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#a99766b2-be55-400b-97c0-72ba76c52973", "motivation": [ "tagging" @@ -4021,58 +4081,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ga2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ga2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6d0797c8-815f-45a7-a09a-c6569327fe56", "motivation": [ "tagging" @@ -4080,58 +4141,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ga2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ga2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#073006f2-c233-40e7-b4e6-8fb57bcb3879", "motivation": [ "tagging" @@ -4139,54 +4201,55 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "a" - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "front" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "front" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#876c9690-7aa9-4387-a05a-520bcd7dbeeb", "motivation": [ "tagging" @@ -4194,58 +4257,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ma", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ma", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#927ea45d-66d3-41cf-ba79-1def1221a11c", "motivation": [ "tagging" @@ -4253,58 +4317,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "{d}", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e6572b26-5574-4898-8f73-8bcba06dbf84", "motivation": [ "tagging" @@ -4312,58 +4377,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "lugal", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "lugal", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#5ee31f96-5896-47c9-985d-f5338cb52fd9", "motivation": [ "tagging" @@ -4371,58 +4437,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "mar2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "mar2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#10708a15-3b93-4e64-882d-6d3bfdcd8e90", "motivation": [ "tagging" @@ -4430,58 +4497,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "da", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "da", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6be60fef-ff06-4693-a71b-ee9e21bef8a5", "motivation": [ "tagging" @@ -4489,58 +4557,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "u3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "u3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d2fefdc4-c268-47b5-94c3-a7d0eb5760dc", "motivation": [ "tagging" @@ -4548,62 +4617,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "su", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "su", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c505c508-3977-42e2-a3cc-8cbb62a4a739", "motivation": [ "tagging" @@ -4611,58 +4681,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "mu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "mu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#81692287-3ebd-482a-b1de-36c492604d2a", "motivation": [ "tagging" @@ -4670,58 +4741,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "nu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#15e5f14a-3700-477a-b1db-2ffce10c34a0", "motivation": [ "tagging" @@ -4729,58 +4801,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "um", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "um", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0ce92c79-7e45-45a4-b6d7-cf877ea570a4", "motivation": [ "tagging" @@ -4788,58 +4861,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "hi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "hi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#af566a2c-85e8-43b3-9043-3ea118cf3dc0", "motivation": [ "tagging" @@ -4847,58 +4921,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "im", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "im", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9d380a28-0568-491d-acff-93a7ead798f5", "motivation": [ "tagging" @@ -4906,58 +4981,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "in", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "in", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9d3fcca5-75d4-4a7f-ad2b-8ab7e51cb7d7", "motivation": [ "tagging" @@ -4965,53 +5041,54 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d32f19ed-ab81-4813-9bb1-a89501b094ee", "motivation": [ "tagging" @@ -5019,58 +5096,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ru", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ru", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#50c50634-3f5e-4203-9867-1ab6f6a13819", "motivation": [ "tagging" @@ -5078,58 +5156,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "de3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "de3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#8d823b8e-9a7d-4f4e-ab3e-2babfcbf9b50", "motivation": [ "tagging" @@ -5137,58 +5216,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "esz", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "esz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#23fbfc92-a856-4e7b-a6ba-c2b8223809bc", "motivation": [ "tagging" @@ -5196,62 +5276,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#39d37237-4d50-47f9-9c50-4126720f175c", "motivation": [ "tagging" @@ -5259,58 +5340,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "sza", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sza", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e467dad2-23ad-4ca4-9e90-c3f41f1021e3", "motivation": [ "tagging" @@ -5318,58 +5400,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "bi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#07b7c131-b110-41d4-9bf1-cc940481df55", "motivation": [ "tagging" @@ -5377,58 +5460,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "gi4", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "gi4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6fa133b2-044e-4063-a3f4-0c782c31a502", "motivation": [ "tagging" @@ -5436,58 +5520,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ri", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ri", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#65815467-3fc8-4239-87fc-1d3bb8ba4e14", "motivation": [ "tagging" @@ -5495,58 +5580,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "is", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "is", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b9eeef4e-2030-478a-a40a-4979b1c35739", "motivation": [ "tagging" @@ -5554,58 +5640,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dumu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1fbdcad7-a202-4371-a75e-2a4ecb6053be", "motivation": [ "tagging" @@ -5613,58 +5700,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "mil", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "mil", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#74b5481c-25c5-430c-be1a-58cad8ac5528", "motivation": [ "tagging" @@ -5672,58 +5760,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "{d}", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9abac41e-6425-429d-bcd8-892b21327387", "motivation": [ "tagging" @@ -5731,58 +5820,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "en", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "en", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4c35868f-c81a-4753-944a-539feee43e63", "motivation": [ "tagging" @@ -5790,58 +5880,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "zu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#42461aee-9590-45b7-a1a7-855b74e63ba8", "motivation": [ "tagging" @@ -5849,58 +5940,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d346108a-c810-4b9b-823d-aecfcbe77727", "motivation": [ "tagging" @@ -5908,62 +6000,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "na", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b6a937a5-bdc9-4c1e-9984-c0d331439056", "motivation": [ "tagging" @@ -5971,58 +6064,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "bi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0e45fc02-5fbc-4be6-b690-51f3898ef060", "motivation": [ "tagging" @@ -6030,58 +6124,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "{d}", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f031b2a7-5b60-4863-b05a-9e1f7594bb52", "motivation": [ "tagging" @@ -6089,58 +6184,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "en", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "en", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6a0114f0-b36c-4d40-a81e-8ddbd89fe21c", "motivation": [ "tagging" @@ -6148,58 +6244,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "zu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e173ee15-1c11-40a3-9dd2-e6ef701b8947", "motivation": [ "tagging" @@ -6207,58 +6304,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dumu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#aee3ca12-8ec6-49d7-83d0-12a6e17285a1", "motivation": [ "tagging" @@ -6266,58 +6364,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "be", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "be", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1e84bb7d-aa50-4735-bfb1-b9f9c2bb5a3c", "motivation": [ "tagging" @@ -6325,58 +6424,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "la", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4d1bd19a-e978-4f89-baa6-e33b4d929835", "motivation": [ "tagging" @@ -6384,58 +6484,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "nu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#70abf5c6-7744-446a-97fd-d89b0719d94d", "motivation": [ "tagging" @@ -6443,58 +6544,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "um", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "um", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#64333bd0-a3eb-4e69-9005-974318dac169", "motivation": [ "tagging" @@ -6502,58 +6604,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3b1f5534-834b-4464-a0b4-5359ab2cddfb", "motivation": [ "tagging" @@ -6561,58 +6664,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ku3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ku3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#71b0179a-dd7a-4e60-af1a-0279413b0db7", "motivation": [ "tagging" @@ -6620,58 +6724,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "{d}", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1302ab52-cb83-4a75-bed1-5d4a99718ab9", "motivation": [ "tagging" @@ -6679,58 +6784,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "nin", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nin", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#a9f9b8e0-51db-4b1a-960b-d99f0e827279", "motivation": [ "tagging" @@ -6738,58 +6844,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "szubur", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szubur", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4a4f053d-9e76-48f7-b56f-9e5ff2df1c6c", "motivation": [ "tagging" @@ -6797,58 +6904,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dumu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#df6ded75-b0a5-4028-acb6-2a571bab5f6b", "motivation": [ "tagging" @@ -6856,62 +6964,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dingir§", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dingir§", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c09403f7-8b7b-4e1e-91ba-280c7a59abff", "motivation": [ "tagging" @@ -6919,58 +7028,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ba", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ba", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#97a9e37f-4b8a-4ccd-8c55-94f080089ca9", "motivation": [ "tagging" @@ -6978,58 +7088,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ni", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c6542cf0-1211-4d13-bcf2-3721b1276586", "motivation": [ "tagging" @@ -7037,58 +7148,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0c01b49e-9ebf-4099-ba4c-62e50487d501", "motivation": [ "tagging" @@ -7096,58 +7208,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "{d}", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f3d80430-4564-40aa-abf6-9fff6589b2e0", "motivation": [ "tagging" @@ -7155,58 +7268,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "en", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "en", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0b6e287a-d3d1-407a-9b31-930d422a709b", "motivation": [ "tagging" @@ -7214,58 +7328,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "zu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#317696fa-36a9-4563-8537-e2c8580f3d84", "motivation": [ "tagging" @@ -7273,58 +7388,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - }, - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "li", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + }, + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "li", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#835f3152-5f51-4e2f-aeac-88e23c7a6b2c", "motivation": [ "tagging" @@ -7332,58 +7448,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "di", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "di", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#aaeb970d-84f7-463b-af62-4869ee27efb5", "motivation": [ "tagging" @@ -7391,58 +7508,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "isz", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "isz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#af26748b-12dc-493f-a3a6-21b7fcd4600b", "motivation": [ "tagging" @@ -7450,58 +7568,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dumu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2ee73f5a-13db-4ab5-bd9b-628921c68da9", "motivation": [ "tagging" @@ -7509,58 +7628,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dingir", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dingir", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#0c80ce22-1942-4985-a46d-03e8d57f1b9a", "motivation": [ "tagging" @@ -7568,58 +7688,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ba", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ba", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6c62ae29-4532-454e-a00e-f7d932ccf114", "motivation": [ "tagging" @@ -7627,58 +7748,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ni", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#45c38035-5a82-4b8c-b166-b10b1bb57dd7", "motivation": [ "tagging" @@ -7686,58 +7808,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#fb94bb47-0e7b-4554-abb2-179895703fd1", "motivation": [ "tagging" @@ -7745,58 +7868,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "nu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#cf62d6db-166f-4958-be1f-fb948a5ee5da", "motivation": [ "tagging" @@ -7804,58 +7928,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ur2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9e5e25a0-cb01-40e4-be2a-3262bbbaa58a", "motivation": [ "tagging" @@ -7863,58 +7988,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "be", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "be", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f1b292ad-f85f-4291-a16c-2c8e77827521", "motivation": [ "tagging" @@ -7922,58 +8048,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "el", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "el", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6e6ddbb1-9428-4f9d-b2cf-923443711776", "motivation": [ "tagging" @@ -7981,58 +8108,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ti", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ti", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e1440654-a3ea-4153-acfe-1c5e5d635368", "motivation": [ "tagging" @@ -8040,58 +8168,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ni", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1f5487b6-3f53-4096-8327-d32adf2d4e83", "motivation": [ "tagging" @@ -8099,58 +8228,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "szesz", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szesz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9ccbe406-284d-4489-8f67-26f13fd6198a", "motivation": [ "tagging" @@ -8158,54 +8288,55 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "a" - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#63c34d01-57af-4a13-b46d-d22d801f165b", "motivation": [ "tagging" @@ -8213,58 +8344,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ni", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b984046e-66f3-4c31-88fd-bd1cb1a80f7e", "motivation": [ "tagging" @@ -8272,58 +8404,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ca06ec7e-f77c-4e28-9f2c-914bd6ea1950", "motivation": [ "tagging" @@ -8331,58 +8464,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ib", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ib", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#1e07d2a8-6fe5-42dd-ae70-80e543f0afea", "motivation": [ "tagging" @@ -8390,62 +8524,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ni", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ni", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#90dfa187-04fa-4367-a350-16ed7be05093", "motivation": [ "tagging" @@ -8453,58 +8588,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ir3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ir3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ba97ca65-b53f-472e-9f61-231aca8dfe5f", "motivation": [ "tagging" @@ -8512,58 +8648,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ra", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ra", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#29c3f876-ba2a-4013-bba2-8df180f48023", "motivation": [ "tagging" @@ -8571,58 +8708,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dumu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#25945214-963a-4d3a-8bc2-367b9f300da2", "motivation": [ "tagging" @@ -8630,58 +8768,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "i3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "i3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f7e6c92a-7cdc-4478-825b-922494b79b92", "motivation": [ "tagging" @@ -8689,58 +8828,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "li2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "li2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#5b5ed5e0-c085-4b46-bf08-12a92d6a446d", "motivation": [ "tagging" @@ -8748,63 +8888,64 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ba", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ba", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Wordindex", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Wordindex", - "value": "" + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f496d0ec-88dc-4b1c-9a2e-7ff53ea58741", "motivation": [ "tagging" @@ -8812,58 +8953,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "asz", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "asz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#b024d758-053e-463a-86e7-1d4a7751d4e2", "motivation": [ "tagging" @@ -8871,58 +9013,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ur", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#bf7632f3-9287-463e-b432-8154323976dc", "motivation": [ "tagging" @@ -8930,58 +9073,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "la", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ae689a4b-5837-4631-9058-17aeea33e53e", "motivation": [ "tagging" @@ -8989,58 +9133,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ku", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ku", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "13", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "13", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ecb18e32-0c93-4f79-a194-3ef77090ed9d", "motivation": [ "tagging" @@ -9048,58 +9193,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#aa2e9c9c-11ff-4ce3-ba90-abea327f5559", "motivation": [ "tagging" @@ -9107,54 +9253,55 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "a" - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c2f22535-26e9-4bd8-87ba-3a772b80c5cc", "motivation": [ "tagging" @@ -9162,58 +9309,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "hu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "hu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4210808b-82fe-4ac6-a981-c2aa927858c0", "motivation": [ "tagging" @@ -9221,58 +9369,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "szi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#70748999-5ec1-4827-8e81-8203d4c9569c", "motivation": [ "tagging" @@ -9280,62 +9429,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "na", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back", + "dimensions": { + "x": 2034, + "y": 5000 + } } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" + }, + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ad7b2655-b685-4571-be23-30126ab4c4c4", "motivation": [ "tagging" @@ -9343,58 +9493,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dumu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#2a942048-86a9-4781-9f68-f01bc0e04fe8", "motivation": [ "tagging" @@ -9402,58 +9553,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "{d}", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#575ce70e-b72d-4c62-aa38-ae8b4494a003", "motivation": [ "tagging" @@ -9461,58 +9613,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "en", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "en", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3f337d58-2622-43b2-a5b8-e53391eee97a", "motivation": [ "tagging" @@ -9520,58 +9673,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "zu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#4d069d60-2feb-4b04-9cc8-72c85a7d8a27", "motivation": [ "tagging" @@ -9579,58 +9733,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "gal", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "gal", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#72f18670-2f06-46ed-92f4-c4357ba70177", "motivation": [ "tagging" @@ -9638,58 +9793,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "zu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "zu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#03482e0c-9483-4a9e-bb97-a44504ec833b", "motivation": [ "tagging" @@ -9697,58 +9853,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3a73cf29-a306-4a3f-a7c5-04ae3f6c52c1", "motivation": [ "tagging" @@ -9756,58 +9913,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ar", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ar", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9e5207d6-020e-46ed-938f-333da54373fd", "motivation": [ "tagging" @@ -9815,58 +9973,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "wi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "wi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#e9e6ac96-efa5-478a-a72a-2c01779ecee1", "motivation": [ "tagging" @@ -9874,58 +10033,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "um", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "um", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#35b2366d-207f-4e2b-b21d-9b17c4d47f42", "motivation": [ "tagging" @@ -9933,62 +10093,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dub", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dub", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#fc9ac66f-885c-4ee3-a6db-f79e4478d1b7", "motivation": [ "tagging" @@ -9996,58 +10157,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "sar", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "sar", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#720dae2c-285b-4398-81ca-1142c5b672b0", "motivation": [ "tagging" @@ -10055,58 +10217,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "igi", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "igi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#d815aeb4-74a1-4fe9-9ac6-6c9f2e58e81a", "motivation": [ "tagging" @@ -10114,58 +10277,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "na", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#9bf50a63-990d-45e3-bb05-4685db321108", "motivation": [ "tagging" @@ -10173,58 +10337,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "bi", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bi", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c5d488d9-0a05-447f-bbc6-1fe7e781921b", "motivation": [ "tagging" @@ -10232,58 +10397,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "i3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "i3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#c34c61ca-b895-4d5e-8089-09c330b566dd", "motivation": [ "tagging" @@ -10291,58 +10457,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "li2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "li2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#be02179c-d033-407c-b191-75d03abd52f7", "motivation": [ "tagging" @@ -10350,58 +10517,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "szu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "szu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ec78d225-ddb9-4ea8-ad54-478cabddbc5f", "motivation": [ "tagging" @@ -10409,58 +10577,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dumu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dumu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#cd00e814-8bd3-4acd-9d19-bb60cf73f299", "motivation": [ "tagging" @@ -10468,58 +10637,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "i3", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "i3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "8", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#ecbcce6d-0230-4828-a8cc-112042775c84", "motivation": [ "tagging" @@ -10527,58 +10697,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "li2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "li2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#a3e0f777-5e22-4d02-810b-5ce99f44f220", "motivation": [ "tagging" @@ -10586,58 +10757,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ba", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ba", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "10", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "10", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7e2aa440-df60-453a-a483-91a793c93df1", "motivation": [ "tagging" @@ -10645,58 +10817,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "asz", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "asz", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "11", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "11", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#295c95ec-78bb-456e-995a-5bdb450f5efb", "motivation": [ "tagging" @@ -10704,58 +10877,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ur", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ur", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#55ea7e7a-f613-47f3-8cf0-f038b5a14ec7", "motivation": [ "tagging" @@ -10763,58 +10937,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "la", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "la", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "13", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "13", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#5e4c4209-9d11-41ad-91f9-be3bf1f856e0", "motivation": [ "tagging" @@ -10822,58 +10997,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "ku", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "12", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "ku", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "12", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "14", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "14", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#34510804-6274-4945-8031-9b45b7dc7125", "motivation": [ "tagging" @@ -10881,62 +11057,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "du8", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "13", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "du8", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "13", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#435c513d-49d8-4c48-a3a6-60b8844f062a", "motivation": [ "tagging" @@ -10944,49 +11121,50 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "a" - }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "back" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "13", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "a" + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "back" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "13", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "selector": { + "type": "SvgSelector", + "value": "" + }, + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#3592f0da-5e25-49b8-9093-d9a370c95159", "motivation": [ "tagging" @@ -10994,58 +11172,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "za", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "za", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "top" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#f3924d78-17c7-4199-b9ab-2e22e4a62463", "motivation": [ "tagging" @@ -11053,62 +11232,63 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "bara2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "bara2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "5", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top", + "dimensions": { + "x": 2034, + "y": 5000 + } } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "5", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "top", - "dimensions": { - "x": 2034, - "y": 5000 - } - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#788c96d3-8e31-4b7c-8283-b9a2b884e84f", "motivation": [ "tagging" @@ -11116,58 +11296,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "{d}", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "{d}", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "6", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "6", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "top" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6b3af227-90fd-4ceb-a837-edfb2efe549b", "motivation": [ "tagging" @@ -11175,58 +11356,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "nin", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "nin", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "7", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "7", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "top" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#72d14cca-2b9a-4399-8817-8b5c536dac3f", "motivation": [ "tagging" @@ -11234,58 +11416,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "mu", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "mu", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "top" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#7a77b427-fec8-4489-8edd-962d1271826e", "motivation": [ "tagging" @@ -11293,58 +11476,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "na", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "na", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "3", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "3", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "top" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#80957bda-f6a9-4267-96ee-2a175f3af61a", "motivation": [ "tagging" @@ -11352,58 +11536,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "dim2", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "2", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "dim2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "2", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "4", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "4", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "top" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#49bfcf04-50c4-4e87-a983-a6c922d3855e", "motivation": [ "tagging" @@ -11411,58 +11596,59 @@ }, { "type": "Annotation", - "body": [ - { - "type": "TextualBody", - "purpose": "Transliteration", - "value": "re", - "dimensions": { - "x": 2034, - "y": 5000 - } - }, - { - "type": "TextualBody", - "purpose": "Column", - "value": "" - }, - { - "type": "TextualBody", - "purpose": "Line", - "value": "1", - "dimensions": { - "x": 2034, - "y": 5000 + "body": { + "type": "List", + "items": [ + { + "type": "TextualBody", + "purpose": "Transliteration", + "value": "re", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Column", + "value": "" + }, + { + "type": "TextualBody", + "purpose": "Line", + "value": "1", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "Charindex", + "value": "9", + "dimensions": { + "x": 2034, + "y": 5000 + } + }, + { + "type": "TextualBody", + "purpose": "TabletSide", + "value": "top" } + ] + }, + "target": { + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas" }, - { - "type": "TextualBody", - "purpose": "Charindex", - "value": "9", - "dimensions": { - "x": 2034, - "y": 5000 - } + "selector": { + "type": "SvgSelector", + "value": "" }, - { - "type": "TextualBody", - "purpose": "TabletSide", - "value": "top" - } - ], - "target": [ - { - "source": { - "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", - "type": "Canvas" - }, - "selector": { - "type": "SvgSelector", - "value": "" - }, - "type": "SpecificResource" - } - ], + "type": "SpecificResource" + }, "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001/annotation/#6500d6b9-de49-4fdb-83a7-ccab7d0ef59a", "motivation": [ "tagging" diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--has-part.json b/fixtures/presentation-4/upgraded-from-p3/p3--has-part.json index 8ddf73c..96b2183 100644 --- a/fixtures/presentation-4/upgraded-from-p3/p3--has-part.json +++ b/fixtures/presentation-4/upgraded-from-p3/p3--has-part.json @@ -36,28 +36,24 @@ "motivation": [ "painting" ], - "body": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", - "type": "Image", - "format": "image/jpeg", - "height": 3024, - "width": 4032, - "service": [ - { - "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", - "profile": "level1", - "type": "ImageService3" - } - ] - } - ], - "target": [ - { - "id": "https://iiif.io/api/cookbook/recipe/0005-image-service/canvas/p1", - "type": "Canvas" - } - ] + "body": { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg", + "type": "Image", + "format": "image/jpeg", + "height": 3024, + "width": 4032, + "service": [ + { + "id": "https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen", + "profile": "level1", + "type": "ImageService3" + } + ] + }, + "target": { + "id": "https://iiif.io/api/cookbook/recipe/0005-image-service/canvas/p1", + "type": "Canvas" + } } ] } diff --git a/fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json b/fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json index 92d6420..306e377 100644 --- a/fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json +++ b/fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json @@ -259,8 +259,6 @@ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/annotation", "type": "AnnotationPage", - "height": 1000, - "width": 750, "items": [ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/annotation/image", @@ -268,26 +266,22 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1", - "type": "Canvas" - } - ], - "body": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/body", - "type": "Image", - "format": "image/jpeg", - "service": [ - { - "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.180", - "type": "ImageService3", - "profile": "level3" - } - ] - } - ] + "target": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1", + "type": "Canvas" + }, + "body": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.180", + "type": "ImageService3", + "profile": "level3" + } + ] + } } ] } @@ -307,8 +301,6 @@ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2/annotation", "type": "AnnotationPage", - "height": 1000, - "width": 750, "items": [ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2/annotation/image", @@ -316,26 +308,22 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2", - "type": "Canvas" - } - ], - "body": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2/body", - "type": "Image", - "format": "image/jpeg", - "service": [ - { - "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.178", - "type": "ImageService3", - "profile": "level3" - } - ] - } - ] + "target": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2", + "type": "Canvas" + }, + "body": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/2/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.178", + "type": "ImageService3", + "profile": "level3" + } + ] + } } ] } @@ -355,8 +343,6 @@ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3/annotation", "type": "AnnotationPage", - "height": 1000, - "width": 750, "items": [ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3/annotation/image", @@ -364,26 +350,22 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3", - "type": "Canvas" - } - ], - "body": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3/body", - "type": "Image", - "format": "image/jpeg", - "service": [ - { - "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.179", - "type": "ImageService3", - "profile": "level3" - } - ] - } - ] + "target": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3", + "type": "Canvas" + }, + "body": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/3/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.179", + "type": "ImageService3", + "profile": "level3" + } + ] + } } ] } @@ -403,8 +385,6 @@ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4/annotation", "type": "AnnotationPage", - "height": 1000, - "width": 750, "items": [ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4/annotation/image", @@ -412,26 +392,22 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4", - "type": "Canvas" - } - ], - "body": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4/body", - "type": "Image", - "format": "image/jpeg", - "service": [ - { - "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.15370", - "type": "ImageService3", - "profile": "level3" - } - ] - } - ] + "target": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4", + "type": "Canvas" + }, + "body": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/4/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.15370", + "type": "ImageService3", + "profile": "level3" + } + ] + } } ] } @@ -451,8 +427,6 @@ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5/annotation", "type": "AnnotationPage", - "height": 1000, - "width": 750, "items": [ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5/annotation/image", @@ -460,26 +434,22 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5", - "type": "Canvas" - } - ], - "body": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5/body", - "type": "Image", - "format": "image/jpeg", - "service": [ - { - "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.182", - "type": "ImageService3", - "profile": "level3" - } - ] - } - ] + "target": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5", + "type": "Canvas" + }, + "body": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/5/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.182", + "type": "ImageService3", + "profile": "level3" + } + ] + } } ] } @@ -499,8 +469,6 @@ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6/annotation", "type": "AnnotationPage", - "height": 1000, - "width": 750, "items": [ { "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6/annotation/image", @@ -508,26 +476,22 @@ "motivation": [ "painting" ], - "target": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6", - "type": "Canvas" - } - ], - "body": [ - { - "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6/body", - "type": "Image", - "format": "image/jpeg", - "service": [ - { - "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.183", - "type": "ImageService3", - "profile": "level3" - } - ] - } - ] + "target": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6", + "type": "Canvas" + }, + "body": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/6/body", + "type": "Image", + "format": "image/jpeg", + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.183", + "type": "ImageService3", + "profile": "level3" + } + ] + } } ] } From f01c8c3c27e0a1d38bc042bf3855012586420ba6 Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Thu, 19 Feb 2026 00:22:49 +0000 Subject: [PATCH 10/18] Updated paths --- __tests__/vault/vault-auto.test.ts | 2 +- __tests__/vault/vault-versions.test.ts | 5 +-- __tests__/vault/vault4-types.test.ts | 50 ++++++++++++++++++++------ 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/__tests__/vault/vault-auto.test.ts b/__tests__/vault/vault-auto.test.ts index be5f560..ce11353 100644 --- a/__tests__/vault/vault-auto.test.ts +++ b/__tests__/vault/vault-auto.test.ts @@ -5,7 +5,7 @@ import { describe, expect, test } from 'vitest'; import cssManifest from '../../fixtures/cookbook/css.json'; import p4SceneManifest from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; import p4UpgradedCssManifest from '../../fixtures/presentation-4/upgraded-from-p3/cookbook--css.json'; -import { VaultAuto } from '../../src/vault'; +import { VaultAuto } from '../../src/vault/vault-auto'; describe('VaultAuto', () => { test('starts in v3 mode by default', () => { diff --git a/__tests__/vault/vault-versions.test.ts b/__tests__/vault/vault-versions.test.ts index 828a66f..f8aece8 100644 --- a/__tests__/vault/vault-versions.test.ts +++ b/__tests__/vault/vault-versions.test.ts @@ -1,9 +1,10 @@ +import type { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import invariant from 'tiny-invariant'; import { describe, expect, test } from 'vitest'; -import type { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; import cssManifest from '../../fixtures/cookbook/css.json'; import p4SceneManifest from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; -import { Vault, Vault4 } from '../../src/vault'; +import { Vault } from '../../src/vault'; +import { Vault4 } from '../../src/vault/vault4'; describe('Vault versions', () => { test('Vault remains stable for v3 fixtures', () => { diff --git a/__tests__/vault/vault4-types.test.ts b/__tests__/vault/vault4-types.test.ts index 60561a9..6d6f49c 100644 --- a/__tests__/vault/vault4-types.test.ts +++ b/__tests__/vault/vault4-types.test.ts @@ -1,12 +1,12 @@ -import { describe, expectTypeOf, test } from 'vitest'; import type { CollectionNormalized, ManifestNormalized, SceneNormalized, } from '@iiif/parser/presentation-4-normalized/types'; +import { describe, expectTypeOf, test } from 'vitest'; import cssManifest from '../../fixtures/cookbook/css.json'; import p4SceneManifest from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; -import { Vault4 } from '../../src/vault'; +import { Vault4 } from '../../src/vault/vault4'; describe('Vault4 types', () => { test('core method signatures remain type-safe', () => { @@ -21,35 +21,62 @@ describe('Vault4 types', () => { const loadedManifestAsync = vault.load(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); expectTypeOf(loadedManifestAsync).toMatchTypeOf>(); - const scene = vault.get({ id: 'https://example.org/scene/1', type: 'Scene' }); + const scene = vault.get({ + id: 'https://example.org/scene/1', + type: 'Scene', + }); expectTypeOf(scene).toMatchTypeOf(); - const hydratedScene = vault.hydrate({ id: 'https://example.org/scene/1', type: 'Scene' }); + const hydratedScene = vault.hydrate({ + id: 'https://example.org/scene/1', + type: 'Scene', + }); expectTypeOf(hydratedScene).toMatchTypeOf(); - const manifestRef = vault.get({ id: 'https://example.org/manifest/1', type: 'Manifest' }); + const manifestRef = vault.get({ + id: 'https://example.org/manifest/1', + type: 'Manifest', + }); expectTypeOf(manifestRef).toMatchTypeOf(); - const collectionRef = vault.get({ id: 'https://example.org/collection/1', type: 'Collection' }); + const collectionRef = vault.get({ + id: 'https://example.org/collection/1', + type: 'Collection', + }); expectTypeOf(collectionRef).toMatchTypeOf(); const collection = vault.loadSync( 'https://example.org/collection/1', - JSON.parse(JSON.stringify({ id: 'https://example.org/collection/1', type: 'Collection', items: [] })) + JSON.parse( + JSON.stringify({ + id: 'https://example.org/collection/1', + type: 'Collection', + items: [], + }) + ) ); expectTypeOf(collection).toMatchTypeOf(); const collectionViaHelper = vault.loadCollection( 'https://example.org/collection/1', - JSON.parse(JSON.stringify({ id: 'https://example.org/collection/1', type: 'Collection', items: [] })) + JSON.parse( + JSON.stringify({ + id: 'https://example.org/collection/1', + type: 'Collection', + items: [], + }) + ) ); expectTypeOf(collectionViaHelper).toMatchTypeOf>(); const wrapped = vault.loadManifestObject(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); expectTypeOf(wrapped).toMatchTypeOf>(); - const sceneObject = vault.getObject({ id: 'https://example.org/scene/1', type: 'Scene' }); + const sceneObject = vault.getObject({ + id: 'https://example.org/scene/1', + type: 'Scene', + }); expectTypeOf(sceneObject).toMatchTypeOf(); }); @@ -57,7 +84,10 @@ describe('Vault4 types', () => { const vault = new Vault4(); vault.loadSync(p4SceneManifest.id, JSON.parse(JSON.stringify(p4SceneManifest))); - const scene = vault.get({ id: 'https://iiif.io/api/cookbook/recipe/0608-mvm-3d/scene/1', type: 'Scene' }); + const scene = vault.get({ + id: 'https://iiif.io/api/cookbook/recipe/0608-mvm-3d/scene/1', + type: 'Scene', + }); expectTypeOf(scene).toMatchTypeOf(); }); }); From b1018a9a25e823c2437eb6846e996a5ad26cfad9 Mon Sep 17 00:00:00 2001 From: Stephen Fraser Date: Thu, 19 Feb 2026 00:41:08 +0000 Subject: [PATCH 11/18] Updated helpers to be compatible with V4 --- src/annotation-targets/expand-target.ts | 71 +++++---- src/annotation-targets/parse-selector.ts | 20 ++- src/annotation-targets/selector-types.ts | 5 +- src/annotation-targets/target-types.ts | 16 +- src/content-state.ts | 8 +- src/events.ts | 13 +- src/i18n.ts | 45 +++++- .../get-custom-size-from-service.ts | 9 +- .../get-fixed-size-from-image.ts | 20 ++- .../get-fixed-sizes-from-service.ts | 9 +- .../get-image-candidates-from-service.ts | 9 +- src/image-service/get-image-candidates.ts | 30 ++-- .../get-image-from-tile-source.ts | 7 +- ...t-smallest-scale-factor-as-single-image.ts | 9 +- src/image-service/image-service-loader.ts | 47 ++++-- src/image-service/image-service-store.ts | 11 +- src/image-service/image-sizes-match.ts | 5 +- src/image-service/sampled-tiles-to-tiles.ts | 5 +- src/nav-date.ts | 36 ++++- src/painting-annotations/helper.ts | 37 ++++- .../parse-specific-resource.ts | 12 +- src/painting-annotations/types.ts | 21 ++- src/ranges.ts | 150 +++++++++++------- src/search1.ts | 32 ++-- src/sequences.ts | 42 +++-- src/shared-utilities.ts | 14 +- src/styles.ts | 10 +- src/thumbnail.ts | 84 +++++++--- src/transcriptions.ts | 83 +++++----- 29 files changed, 594 insertions(+), 266 deletions(-) diff --git a/src/annotation-targets/expand-target.ts b/src/annotation-targets/expand-target.ts index 05c05f2..9cab0d8 100644 --- a/src/annotation-targets/expand-target.ts +++ b/src/annotation-targets/expand-target.ts @@ -1,10 +1,21 @@ -import type { ExternalWebResource, W3CAnnotationTarget } from '@iiif/parser/presentation-3/types'; +import type { + ExternalWebResource as ExternalWebResourceV3, + W3CAnnotationTarget as W3CAnnotationTargetV3, +} from '@iiif/parser/presentation-3/types'; +import type { + Annotation as AnnotationV4, + ContentResourceLike as ContentResourceLikeV4, +} from '@iiif/parser/presentation-4/types'; import { parseSelector, splitCanvasFragment } from './parse-selector'; import type { ParsedSelector, SupportedSelector } from './selector-types'; import type { SupportedTarget } from './target-types'; +type AnnotationTargetV4 = Exclude; +type ExpandableTarget = W3CAnnotationTargetV3 | AnnotationTargetV4; +type ExternalWebResource = ExternalWebResourceV3 | ContentResourceLikeV4; + export function expandTarget( - target: W3CAnnotationTarget | W3CAnnotationTarget[], + target: ExpandableTarget | ExpandableTarget[], options: { typeMap?: Record; domParser?: DOMParser; @@ -48,38 +59,40 @@ export function expandTarget( ); } + const targetAny = target as any; + // @todo, how do we want to support choices for targets. if ( - target.type === 'Choice' || - target.type === 'List' || - target.type === 'Composite' || - target.type === 'Independents' + targetAny.type === 'Choice' || + targetAny.type === 'List' || + targetAny.type === 'Composite' || + targetAny.type === 'Independents' ) { // we also don't support these, just choose the first. - return expandTarget(target.items[0], options); + return expandTarget(targetAny.items[0], options); } - if (!target.type && 'source' in target) { - (target as any).type = 'SpecificResource'; + if (!targetAny.type && 'source' in targetAny) { + targetAny.type = 'SpecificResource'; } - if (target.type === 'SpecificResource') { - if (target.source.type === 'Canvas' && target.source.partOf && typeof target.source.partOf === 'string') { - target.source.partOf = [ + if (targetAny.type === 'SpecificResource') { + if (targetAny.source.type === 'Canvas' && targetAny.source.partOf && typeof targetAny.source.partOf === 'string') { + targetAny.source.partOf = [ { - id: target.source.partOf, + id: targetAny.source.partOf, type: 'Manifest', }, ]; } - const styleClass = target.styleClass || options.styleClass; + const styleClass = targetAny.styleClass || options.styleClass; let preParsedSelector = { selector: null, selectors: [] } as ParsedSelector; - if (typeof target.source === 'string') { - const [, sourceFragment] = splitCanvasFragment(target.source); + if (typeof targetAny.source === 'string') { + const [, sourceFragment] = splitCanvasFragment(targetAny.source); if (sourceFragment) { - const expandedAgain = expandTarget(target.source, { ...options, styleClass }); - target.source = expandedAgain.source; + const expandedAgain = expandTarget(targetAny.source, { ...options, styleClass }); + targetAny.source = expandedAgain.source; preParsedSelector = { selector: expandedAgain.selector, selectors: expandedAgain.selectors, @@ -87,35 +100,35 @@ export function expandTarget( } } - const { selector, selectors } = target.selector - ? parseSelector(target.selector, options, { styleClass }) + const { selector, selectors } = targetAny.selector + ? parseSelector(targetAny.selector, options, { styleClass }) : preParsedSelector; return { type: 'SpecificResource', - source: target.source, + source: targetAny.source, selector, selectors, }; } - if (target.id) { - if ((target as any).type === 'Canvas' && (target as any).partOf && typeof (target as any).partOf === 'string') { - (target as any).partOf = [ + if (targetAny.id) { + if (targetAny.type === 'Canvas' && targetAny.partOf && typeof targetAny.partOf === 'string') { + targetAny.partOf = [ { - id: (target as any).partOf, + id: targetAny.partOf, type: 'Manifest', }, ]; } - const [id, fragment] = splitCanvasFragment(target.id); + const [id, fragment] = splitCanvasFragment(targetAny.id); if (!fragment) { // This is an unknown selector. return { type: 'SpecificResource', source: { - ...(target as any), + ...targetAny, id, }, selector: null, @@ -127,7 +140,7 @@ export function expandTarget( { type: 'SpecificResource', source: { - ...(target as any), + ...targetAny, id, }, selector: { @@ -141,7 +154,7 @@ export function expandTarget( return { type: 'SpecificResource', - source: target as ExternalWebResource, + source: targetAny as ExternalWebResource, selector: null, selectors: [], }; diff --git a/src/annotation-targets/parse-selector.ts b/src/annotation-targets/parse-selector.ts index 9f3883d..c1b157e 100644 --- a/src/annotation-targets/parse-selector.ts +++ b/src/annotation-targets/parse-selector.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import type { ImageApiSelector, Selector } from '@iiif/parser/presentation-3/types'; +import type { ImageApiSelector as ImageApiSelectorV3, Selector as SelectorV3 } from '@iiif/parser/presentation-3/types'; +import type { ImageApiSelector as ImageApiSelectorV4, Selector as SelectorV4 } from '@iiif/parser/presentation-4/types'; import { flattenCubicBezier, flattenQuadraticBezier } from './bezier'; import { resolveSelectorStyle } from './css-selectors'; import { @@ -18,6 +19,9 @@ import { type TemporalSelector, } from './selector-types'; +type ImageApiSelector = ImageApiSelectorV3 | ImageApiSelectorV4; +type Selector = SelectorV3 | SelectorV4; + const BOX_SELECTOR = /&?(xywh=)?(pixel:|percent:|pct:)?([0-9]+(?:\.[0-9]+)?),([0-9]+(?:\.[0-9]+)?),([0-9]+(?:\.[0-9]+)?),([0-9]+(?:\.[0-9]+)?)/; @@ -105,6 +109,8 @@ export function parseSelector( }); } + const sourceAny = source as any; + if (typeof source === 'string') { const [id, fragment] = splitCanvasFragment(source); @@ -124,12 +130,12 @@ export function parseSelector( ); } - if (source.type) { - if (source.type === 'PointSelector' && (source.t || source.t === 0)) { + if (sourceAny.type) { + if (sourceAny.type === 'PointSelector' && (sourceAny.t || sourceAny.t === 0)) { const selector: TemporalSelector = { type: 'TemporalSelector', temporal: { - startTime: source.t, + startTime: sourceAny.t, }, }; @@ -140,12 +146,12 @@ export function parseSelector( }); } - if (source.type === 'PointSelector' && source.x && source.y) { + if (sourceAny.type === 'PointSelector' && sourceAny.x && sourceAny.y) { const selector: SupportedSelectors = { type: 'PointSelector', spatial: { - x: source.x, - y: source.y, + x: sourceAny.x, + y: sourceAny.y, }, }; diff --git a/src/annotation-targets/selector-types.ts b/src/annotation-targets/selector-types.ts index 6ee910d..4d5952c 100644 --- a/src/annotation-targets/selector-types.ts +++ b/src/annotation-targets/selector-types.ts @@ -1,4 +1,7 @@ -import type { ImageApiSelector } from '@iiif/parser/presentation-3/types'; +import type { ImageApiSelector as ImageApiSelectorV3 } from '@iiif/parser/presentation-3/types'; +import type { ImageApiSelector as ImageApiSelectorV4 } from '@iiif/parser/presentation-4/types'; + +type ImageApiSelector = ImageApiSelectorV3 | ImageApiSelectorV4; export type SvgShapeType = 'rect' | 'circle' | 'ellipse' | 'line' | 'polyline' | 'polygon' | 'path'; export interface SupportedSelector { diff --git a/src/annotation-targets/target-types.ts b/src/annotation-targets/target-types.ts index 981e8c2..bf5e00b 100644 --- a/src/annotation-targets/target-types.ts +++ b/src/annotation-targets/target-types.ts @@ -1,11 +1,21 @@ -import { ExternalWebResource } from '@iiif/parser/presentation-3/types'; -import { SupportedSelectors } from './selector-types'; +import type { ExternalWebResource as ExternalWebResourceV3 } from '@iiif/parser/presentation-3/types'; +import type { + ContentResourceLike as ContentResourceLikeV4, + ResourceReference as ResourceReferenceV4, +} from '@iiif/parser/presentation-4/types'; +import type { SupportedSelectors } from './selector-types'; + +type ExternalWebResource = ExternalWebResourceV3 | ContentResourceLikeV4 | ResourceReferenceV4; export type SupportedTarget = { type: 'SpecificResource'; source: | ExternalWebResource - | { id: string; type: 'Unknown' | 'Canvas' | 'Range' | 'Manifest'; partOf?: Array<{ id: string; type: string }> }; + | { + id: string; + type: 'Unknown' | 'Canvas' | 'Range' | 'Manifest'; + partOf?: Array<{ id: string; type: string }>; + }; purpose?: string; imageServiceHints?: { size?: string; diff --git a/src/content-state.ts b/src/content-state.ts index 113e14f..d8abf57 100644 --- a/src/content-state.ts +++ b/src/content-state.ts @@ -1,6 +1,10 @@ -import { Annotation, AnyMotivation } from '@iiif/parser/presentation-3/types'; +import type { Annotation as AnnotationV3, AnyMotivation as AnyMotivationV3 } from '@iiif/parser/presentation-3/types'; +import type { Annotation as AnnotationV4 } from '@iiif/parser/presentation-4/types'; import { expandTarget } from './annotation-targets/expand-target'; -import { SupportedTarget } from './annotation-targets/target-types'; +import type { SupportedTarget } from './annotation-targets/target-types'; + +type Annotation = AnnotationV3 | AnnotationV4; +type AnyMotivation = AnyMotivationV3 | (AnnotationV4['motivation'] extends Array ? T : never); export type ContentState = | string diff --git a/src/events.ts b/src/events.ts index 67acae0..f8b137d 100644 --- a/src/events.ts +++ b/src/events.ts @@ -1,10 +1,13 @@ -import type { Reference } from '@iiif/parser/presentation-3/types'; -import { compatVault, CompatVault } from './compat'; +import type { Reference as ReferenceV3 } from '@iiif/parser/presentation-3/types'; +import type { Reference as ReferenceV4 } from '@iiif/parser/presentation-4/types'; +import { type CompatVault, compatVault } from './compat'; + +type AnyReference = ReferenceV3 | ReferenceV4; export function createEventsHelper(vault: CompatVault = compatVault) { return { addEventListener( - resource: Reference, + resource: AnyReference, event: string, listener: (e: any, resource: T) => void, scope?: string[] @@ -30,7 +33,7 @@ export function createEventsHelper(vault: CompatVault = compatVault) { return listener; }, - removeEventListener(resource: Reference, event: string, listener: (e: any, resource: T) => void) { + removeEventListener(resource: AnyReference, event: string, listener: (e: any, resource: T) => void) { if (!resource) { return; } @@ -42,7 +45,7 @@ export function createEventsHelper(vault: CompatVault = compatVault) { ); }, - getListenersAsProps(resourceOrId: string | Reference, scope?: string[]) { + getListenersAsProps(resourceOrId: string | AnyReference, scope?: string[]) { const resource = typeof resourceOrId === 'string' ? { id: resourceOrId } : resourceOrId; if (!resource || !resource.id) { return {}; diff --git a/src/i18n.ts b/src/i18n.ts index 858b892..a673a19 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -1,5 +1,21 @@ import { Traverse } from '@iiif/parser'; -import { Canvas, Collection, InternationalString, Manifest } from '@iiif/parser/presentation-3/types'; +import type { + Canvas as CanvasV3, + Collection as CollectionV3, + InternationalString as InternationalStringV3, + Manifest as ManifestV3, + Range as RangeV3, +} from '@iiif/parser/presentation-3/types'; +import type { + Canvas as CanvasV4, + Collection as CollectionV4, + LanguageMap as InternationalStringV4, + Manifest as ManifestV4, + Range as RangeV4, +} from '@iiif/parser/presentation-4/types'; + +type InternationalString = InternationalStringV3 | InternationalStringV4; +type LanguageResource = CollectionV3 | ManifestV3 | CanvasV3 | RangeV3 | CollectionV4 | ManifestV4 | CanvasV4 | RangeV4; export function getClosestLanguage( i18nLanguage: string | undefined, @@ -132,7 +148,12 @@ export function buildLocaleString( export function getValue( inputText: string | InternationalString | null | undefined, - options: { language?: string; defaultText?: string; separator?: string; fallbackLanguages?: string[] } = {} + options: { + language?: string; + defaultText?: string; + separator?: string; + fallbackLanguages?: string[]; + } = {} ) { return buildLocaleString( inputText, @@ -148,7 +169,7 @@ function getLanguagesFromLanguageMap(languageMap: InternationalString) { return Object.keys(languageMap).filter((l) => l !== 'none'); } -export function getAvailableLanguagesFromResource(item: Collection | Manifest | Canvas | Range) { +export function getAvailableLanguagesFromResource(item: LanguageResource) { const foundLanguages = new Set(); const findLanguages = Traverse.all((resource: any) => { @@ -210,8 +231,18 @@ export function getAvailableLanguagesFromResource(item: Collection | Manifest | export const iiifString = createStringHelper(); -export function createStringHelper(options: { language?: string; defaultText?: string; separator?: string; fallbackLanguages?: string[] } = {}) { - return (template: TemplateStringsArray, ...params: Array) => { +export function createStringHelper( + options: { + language?: string; + defaultText?: string; + separator?: string; + fallbackLanguages?: string[]; + } = {} +) { + return ( + template: TemplateStringsArray, + ...params: Array + ) => { let result = ''; for (let i = 0; i < template.length; i++) { @@ -223,8 +254,6 @@ export function createStringHelper(options: { language?: string; defaultText?: s const param = params[i]; if (param === null || param === undefined) { - // Skip null or undefined params - continue; } else if (typeof param === 'string') { // Add string params directly result += param; @@ -237,5 +266,5 @@ export function createStringHelper(options: { language?: string; defaultText?: s } return result; - } + }; } diff --git a/src/image-service/get-custom-size-from-service.ts b/src/image-service/get-custom-size-from-service.ts index 41c29de..692e94d 100644 --- a/src/image-service/get-custom-size-from-service.ts +++ b/src/image-service/get-custom-size-from-service.ts @@ -1,7 +1,10 @@ -import { ImageCandidate } from './types'; +import { getId, getImageServiceLevel, supportsCustomSizes } from '@iiif/parser/image-3'; +import type { ImageService as ImageServiceV3 } from '@iiif/parser/presentation-3/types'; +import type { ImageService as ImageServiceV4 } from '@iiif/parser/presentation-4/types'; import { isImage3 } from './is-image-3'; -import { ImageService } from '@iiif/parser/presentation-3/types'; -import { getId, supportsCustomSizes, getImageServiceLevel } from '@iiif/parser/image-3'; +import type { ImageCandidate } from './types'; + +type ImageService = ImageServiceV3 | ImageServiceV4; /** * Get custom size from service diff --git a/src/image-service/get-fixed-size-from-image.ts b/src/image-service/get-fixed-size-from-image.ts index b2e0217..1d559ca 100644 --- a/src/image-service/get-fixed-size-from-image.ts +++ b/src/image-service/get-fixed-size-from-image.ts @@ -1,7 +1,17 @@ -import { ContentResource, IIIFExternalWebResource } from '@iiif/parser/presentation-3/types'; -import { ImageCandidate } from './types'; -import { inferImageSizeFromUrl } from './infer-size-from-url'; import { getId, getType } from '@iiif/parser/image-3'; +import type { + ContentResource as ContentResourceV3, + IIIFExternalWebResource as IIIFExternalWebResourceV3, +} from '@iiif/parser/presentation-3/types'; +import type { + ContentResource as ContentResourceV4, + ContentResourceLike as IIIFExternalWebResourceV4, +} from '@iiif/parser/presentation-4/types'; +import { inferImageSizeFromUrl } from './infer-size-from-url'; +import type { ImageCandidate } from './types'; + +type ContentResource = ContentResourceV3 | ContentResourceV4; +type IIIFExternalWebResource = IIIFExternalWebResourceV3 | IIIFExternalWebResourceV4; /** * Get fixed size from image @@ -36,8 +46,8 @@ export function getFixedSizeFromImage(contentResource: ContentResource | string) return { id: id, type: 'fixed', - width: image.width, - height: image.height, + width: Number(image.width), + height: Number(image.height), unsafe: true, }; } diff --git a/src/image-service/get-fixed-sizes-from-service.ts b/src/image-service/get-fixed-sizes-from-service.ts index c39b21d..0266dd1 100644 --- a/src/image-service/get-fixed-sizes-from-service.ts +++ b/src/image-service/get-fixed-sizes-from-service.ts @@ -1,7 +1,10 @@ -import { Service } from '@iiif/parser/presentation-3/types'; -import { FixedSizeImageService } from './types'; -import { getId, isImageService, getImageServiceLevel } from '@iiif/parser/image-3'; +import { getId, getImageServiceLevel, isImageService } from '@iiif/parser/image-3'; +import type { Service as ServiceV3 } from '@iiif/parser/presentation-3/types'; +import type { Service as ServiceV4 } from '@iiif/parser/presentation-4/types'; import { isImage3 } from './is-image-3'; +import type { FixedSizeImageService } from './types'; + +type Service = ServiceV3 | ServiceV4; /** * Get fixed sizes from service. diff --git a/src/image-service/get-image-candidates-from-service.ts b/src/image-service/get-image-candidates-from-service.ts index 48249e8..8282759 100644 --- a/src/image-service/get-image-candidates-from-service.ts +++ b/src/image-service/get-image-candidates-from-service.ts @@ -1,7 +1,10 @@ -import { ImageService } from '@iiif/parser/presentation-3/types'; -import { ImageCandidate } from './types'; -import { getFixedSizesFromService } from './get-fixed-sizes-from-service'; +import type { ImageService as ImageServiceV3 } from '@iiif/parser/presentation-3/types'; +import type { ImageService as ImageServiceV4 } from '@iiif/parser/presentation-4/types'; import { getCustomSizeFromService } from './get-custom-size-from-service'; +import { getFixedSizesFromService } from './get-fixed-sizes-from-service'; +import type { ImageCandidate } from './types'; + +type ImageService = ImageServiceV3 | ImageServiceV4; export function getImageCandidatesFromService(service: ImageService[]): ImageCandidate[] { const candidates: ImageCandidate[] = []; diff --git a/src/image-service/get-image-candidates.ts b/src/image-service/get-image-candidates.ts index 195c913..9c6c75c 100644 --- a/src/image-service/get-image-candidates.ts +++ b/src/image-service/get-image-candidates.ts @@ -1,9 +1,19 @@ -import { ContentResource, IIIFExternalWebResource } from '@iiif/parser/presentation-3/types'; -import { ImageServiceLoader, ImageServiceRequest } from './image-service-loader'; -import { ImageCandidate } from './types'; -import { getImageCandidatesFromService } from './get-image-candidates-from-service'; -import { getFixedSizeFromImage } from './get-fixed-size-from-image'; import { getId, getImageServices } from '@iiif/parser/image-3'; +import type { + ContentResource as ContentResourceV3, + IIIFExternalWebResource as IIIFExternalWebResourceV3, +} from '@iiif/parser/presentation-3/types'; +import type { + ContentResource as ContentResourceV4, + ContentResourceLike as IIIFExternalWebResourceV4, +} from '@iiif/parser/presentation-4/types'; +import { getFixedSizeFromImage } from './get-fixed-size-from-image'; +import { getImageCandidatesFromService } from './get-image-candidates-from-service'; +import type { ImageServiceLoader, ImageServiceRequest } from './image-service-loader'; +import type { ImageCandidate } from './types'; + +type ContentResource = ContentResourceV3 | ContentResourceV4; +type IIIFExternalWebResource = IIIFExternalWebResourceV3 | IIIFExternalWebResourceV4; /** * Get image candidates @@ -38,21 +48,21 @@ export function getImageCandidates( // We will try to dereference if available (cache or prediction). if (dereference && resource && resource.width && resource.height) { const refCandidates = []; - const imageServices = getImageServices(resource); + const imageServices = getImageServices(resource as any); for (const service of imageServices) { const request: ImageServiceRequest = { id: getId(service), - width: resource.width, - height: resource.height, + width: Number(resource.width), + height: Number(resource.height), }; if (loader.canLoadSync(request)) { const externalService = loader.loadServiceSync(request); if (externalService) { if (!externalService.height) { - externalService.height = resource.height; + externalService.height = Number(resource.height); } if (!externalService.width) { - externalService.width = resource.width; + externalService.width = Number(resource.width); } refCandidates.push(...getImageCandidatesFromService([externalService])); } diff --git a/src/image-service/get-image-from-tile-source.ts b/src/image-service/get-image-from-tile-source.ts index 5cbc086..52af74f 100644 --- a/src/image-service/get-image-from-tile-source.ts +++ b/src/image-service/get-image-from-tile-source.ts @@ -4,8 +4,11 @@ import { getId, imageServiceRequestToString, } from '@iiif/parser/image-3'; -import { FixedSizeImage, FixedSizeImageService } from './types'; -import { ImageProfile } from '@iiif/parser/presentation-3/types'; +import type { ImageProfile as ImageProfileV3 } from '@iiif/parser/presentation-3/types'; +import type { ImageProfile as ImageProfileV4 } from '@iiif/parser/presentation-4/types'; +import type { FixedSizeImage, FixedSizeImageService } from './types'; + +type ImageProfile = ImageProfileV3 | ImageProfileV4; export function getImageFromTileSource( image: FixedSizeImageService, diff --git a/src/image-service/get-smallest-scale-factor-as-single-image.ts b/src/image-service/get-smallest-scale-factor-as-single-image.ts index 92b6da1..7e802ae 100644 --- a/src/image-service/get-smallest-scale-factor-as-single-image.ts +++ b/src/image-service/get-smallest-scale-factor-as-single-image.ts @@ -1,7 +1,10 @@ -import { ImageService } from '@iiif/parser/presentation-3/types'; -import { isImage3 } from './is-image-3'; -import { FixedSizeImageService } from './types'; import { getId, getImageServiceLevel } from '@iiif/parser/image-3'; +import type { ImageService as ImageServiceV3 } from '@iiif/parser/presentation-3/types'; +import type { ImageService as ImageServiceV4 } from '@iiif/parser/presentation-4/types'; +import { isImage3 } from './is-image-3'; +import type { FixedSizeImageService } from './types'; + +type ImageService = ImageServiceV3 | ImageServiceV4; /** * Returns a fixed size image using the tile using the largest available size, diff --git a/src/image-service/image-service-loader.ts b/src/image-service/image-service-loader.ts index a620418..5d6058e 100644 --- a/src/image-service/image-service-loader.ts +++ b/src/image-service/image-service-loader.ts @@ -1,25 +1,40 @@ import { - isLevel0, - getId, canonicalServiceUrl, extractFixedSizeScales, fixedSizesFromScales, + getId, getImageServices, + isLevel0, } from '@iiif/parser/image-3'; -import { - ContentResource, - IIIFExternalWebResource, - ImageProfile, - ImageSize, - ImageTile, - ImageService, +import type { + ContentResource as ContentResourceV3, + IIIFExternalWebResource as IIIFExternalWebResourceV3, + ImageProfile as ImageProfileV3, + ImageService as ImageServiceV3, + ImageSize as ImageSizeV3, + ImageTile as ImageTileV3, } from '@iiif/parser/presentation-3/types'; -import { getImageServerFromId } from './get-image-server-from-id'; -import { sampledTilesToTiles } from './sampled-tiles-to-tiles'; -import { ImageCandidate, ImageCandidateRequest } from './types'; -import { pickBestFromCandidates } from './pick-best-from-candidates'; +import type { + ContentResource as ContentResourceV4, + ContentResourceLike as IIIFExternalWebResourceV4, + ImageProfile as ImageProfileV4, + ImageService as ImageServiceV4, + ImageSize as ImageSizeV4, + ImageTile as ImageTileV4, +} from '@iiif/parser/presentation-4/types'; import { getImageCandidates } from './get-image-candidates'; +import { getImageServerFromId } from './get-image-server-from-id'; import { imageSizesMatch } from './image-sizes-match'; +import { pickBestFromCandidates } from './pick-best-from-candidates'; +import { sampledTilesToTiles } from './sampled-tiles-to-tiles'; +import type { ImageCandidate, ImageCandidateRequest } from './types'; + +type ContentResource = ContentResourceV3 | ContentResourceV4; +type IIIFExternalWebResource = IIIFExternalWebResourceV3 | IIIFExternalWebResourceV4; +type ImageProfile = ImageProfileV3 | ImageProfileV4; +type ImageSize = ImageSizeV3 | ImageSizeV4; +type ImageTile = ImageTileV3 | ImageTileV4; +type ImageService = ImageServiceV3 | ImageServiceV4; export type ImageServer = { root: string; @@ -225,12 +240,12 @@ export class ImageServiceLoader { async getImageCandidates(unknownResource: ContentResource, dereference = true): Promise { const resource = unknownResource as IIIFExternalWebResource; if (dereference && resource && resource.height && resource.width) { - const imageServices = getImageServices(resource); + const imageServices = getImageServices(resource as any); for (const service of imageServices) { const request: ImageServiceRequest = { id: getId(service), - width: service.width ? service.width : resource.width, - height: service.height ? service.height : resource.height, + width: Number(service.width ? service.width : resource.width), + height: Number(service.height ? service.height : resource.height), source: service, }; await this.loadService(request); diff --git a/src/image-service/image-service-store.ts b/src/image-service/image-service-store.ts index c74db84..11bfb0f 100644 --- a/src/image-service/image-service-store.ts +++ b/src/image-service/image-service-store.ts @@ -1,8 +1,11 @@ -import { ImageServiceLoader } from './image-service-loader'; -import { createStore } from 'zustand/vanilla'; -import mitt, { Emitter, Handler } from 'mitt'; -import { ImageService } from '@iiif/parser/presentation-3/types'; import { getId } from '@iiif/parser/image-3'; +import type { ImageService as ImageServiceV3 } from '@iiif/parser/presentation-3/types'; +import type { ImageService as ImageServiceV4 } from '@iiif/parser/presentation-4/types'; +import mitt, { type Emitter, type Handler } from 'mitt'; +import { createStore } from 'zustand/vanilla'; +import { ImageServiceLoader } from './image-service-loader'; + +type ImageService = ImageServiceV3 | ImageServiceV4; export type LoadImageServiceDetail = { width: number; diff --git a/src/image-service/image-sizes-match.ts b/src/image-service/image-sizes-match.ts index 692c9b9..175a411 100644 --- a/src/image-service/image-sizes-match.ts +++ b/src/image-service/image-sizes-match.ts @@ -1,4 +1,7 @@ -import { ImageSize } from '@iiif/parser/presentation-3/types'; +import type { ImageSize as ImageSizeV3 } from '@iiif/parser/presentation-3/types'; +import type { ImageSize as ImageSizeV4 } from '@iiif/parser/presentation-4/types'; + +type ImageSize = ImageSizeV3 | ImageSizeV4; export function imageSizesMatch(sizesA: ImageSize[], sizesB: ImageSize[]): boolean { if (sizesA.length !== sizesB.length) { diff --git a/src/image-service/sampled-tiles-to-tiles.ts b/src/image-service/sampled-tiles-to-tiles.ts index 8cbc6b2..6d6f21d 100644 --- a/src/image-service/sampled-tiles-to-tiles.ts +++ b/src/image-service/sampled-tiles-to-tiles.ts @@ -1,4 +1,7 @@ -import { ImageTile } from '@iiif/parser/presentation-3/types'; +import type { ImageTile as ImageTileV3 } from '@iiif/parser/presentation-3/types'; +import type { ImageTile as ImageTileV4 } from '@iiif/parser/presentation-4/types'; + +type ImageTile = ImageTileV3 | ImageTileV4; export function sampledTilesToTiles(width: number, height: number, sampledTiles: ImageTile[]): ImageTile[] { const maxDim = width > height ? width : height; diff --git a/src/nav-date.ts b/src/nav-date.ts index 1da9d46..db6c97d 100644 --- a/src/nav-date.ts +++ b/src/nav-date.ts @@ -4,9 +4,37 @@ // "navDate": "1986-01-01T00:00:00+00:00" // "navDate": "1987-01-01T00:00:00+00:00" -import { Collection, InternationalString, Manifest } from '@iiif/parser/presentation-3/types'; -import { CompatVault } from './compat'; -import { CollectionNormalized, ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import type { + Collection as CollectionV3, + InternationalString as InternationalStringV3, + Manifest as ManifestV3, +} from '@iiif/parser/presentation-3/types'; +import type { + CollectionNormalized as CollectionNormalizedV3, + ManifestNormalized as ManifestNormalizedV3, +} from '@iiif/parser/presentation-3-normalized/types'; +import type { + Collection as CollectionV4, + LanguageMap as InternationalStringV4, + Manifest as ManifestV4, +} from '@iiif/parser/presentation-4/types'; +import type { + CollectionNormalized as CollectionNormalizedV4, + ManifestNormalized as ManifestNormalizedV4, +} from '@iiif/parser/presentation-4-normalized/types'; +import type { CompatVault } from './compat'; + +type InternationalString = InternationalStringV3 | InternationalStringV4; +type DateNavigationInput = + | ManifestV3 + | CollectionV3 + | ManifestNormalizedV3 + | CollectionNormalizedV3 + | ManifestV4 + | CollectionV4 + | ManifestNormalizedV4 + | CollectionNormalizedV4 + | string; export interface DateNavigationResource { id: string; @@ -71,7 +99,7 @@ export type DateNavigationTypes = export function createDateNavigation( vault: CompatVault, - manifestOrCollection: Manifest | Collection | ManifestNormalized | CollectionNormalized | string, + manifestOrCollection: DateNavigationInput, inputType?: Type ) { const type = inputType || 'century'; diff --git a/src/painting-annotations/helper.ts b/src/painting-annotations/helper.ts index 46cc9dd..96a56b4 100644 --- a/src/painting-annotations/helper.ts +++ b/src/painting-annotations/helper.ts @@ -1,8 +1,27 @@ -import { ContentResource, IIIFExternalWebResource } from '@iiif/parser/presentation-3/types'; -import { AnnotationNormalized, CanvasNormalized } from '@iiif/parser/presentation-3-normalized/types'; -import { ComplexChoice, Paintables } from './types'; +import type { + ContentResource as ContentResourceV3, + IIIFExternalWebResource as IIIFExternalWebResourceV3, +} from '@iiif/parser/presentation-3/types'; +import type { + AnnotationNormalized as AnnotationNormalizedV3, + CanvasNormalized as CanvasNormalizedV3, +} from '@iiif/parser/presentation-3-normalized/types'; +import type { + ContentResource as ContentResourceV4, + ContentResourceLike as IIIFExternalWebResourceV4, +} from '@iiif/parser/presentation-4/types'; +import type { + AnnotationNormalized as AnnotationNormalizedV4, + CanvasNormalized as CanvasNormalizedV4, +} from '@iiif/parser/presentation-4-normalized/types'; +import { type CompatVault, compatVault } from '../compat'; import { parseSpecificResource } from './parse-specific-resource'; -import { compatVault, CompatVault } from '../compat'; +import type { ComplexChoice, Paintables } from './types'; + +type CanvasNormalized = CanvasNormalizedV3 | CanvasNormalizedV4; +type AnnotationNormalized = AnnotationNormalizedV3 | AnnotationNormalizedV4; +type ContentResource = ContentResourceV3 | ContentResourceV4; +type IIIFExternalWebResource = IIIFExternalWebResourceV3 | IIIFExternalWebResourceV4; export function createPaintingAnnotationsHelper(vault: CompatVault = compatVault) { function getAllPaintingAnnotations(canvasOrId: string | CanvasNormalized | undefined | null) { @@ -15,10 +34,10 @@ export function createPaintingAnnotationsHelper(vault: CompatVault = compatVault if (!canvas) { return []; } - const annotationPages = vault.get(canvas.items, { parent: canvas }); + const annotationPages = vault.get(canvas.items as any, { parent: canvas }) as any[]; const flatAnnotations: AnnotationNormalized[] = []; for (const page of annotationPages) { - flatAnnotations.push(...vault.get(page.items, { parent: page })); + flatAnnotations.push(...(vault.get(page.items as any, { parent: page }) as any[])); } return flatAnnotations; } @@ -32,7 +51,7 @@ export function createPaintingAnnotationsHelper(vault: CompatVault = compatVault : getAllPaintingAnnotations(paintingAnnotationsOrCanvas); const types: string[] = []; - let choices: ComplexChoice = { + const choices: ComplexChoice = { items: [], type: 'complex-choice', }; @@ -51,7 +70,9 @@ export function createPaintingAnnotationsHelper(vault: CompatVault = compatVault // Choice if (type === 'choice') { - const nestedBodies = vault.get((body as any).items, { parent: (body as any).id }) as ContentResource[]; + const nestedBodies = vault.get((body as any).items, { + parent: (body as any).id, + }) as ContentResource[]; // Which are active? By default, the first, but we could push multiple here. const selected = enabledChoices.length ? enabledChoices.map((cid) => nestedBodies.find((b) => b.id === cid)).filter(Boolean) diff --git a/src/painting-annotations/parse-specific-resource.ts b/src/painting-annotations/parse-specific-resource.ts index 935b0f3..a749653 100644 --- a/src/painting-annotations/parse-specific-resource.ts +++ b/src/painting-annotations/parse-specific-resource.ts @@ -1,4 +1,14 @@ -import { ChoiceBody, ContentResource } from "@iiif/parser/presentation-3/types"; +import type { + ChoiceBody as ChoiceBodyV3, + ContentResource as ContentResourceV3, +} from '@iiif/parser/presentation-3/types'; +import type { + ChoiceResource as ChoiceBodyV4, + ContentResource as ContentResourceV4, +} from '@iiif/parser/presentation-4/types'; + +type ChoiceBody = ChoiceBodyV3 | ChoiceBodyV4; +type ContentResource = ContentResourceV3 | ContentResourceV4; export function parseSpecificResource(resource: ContentResource): [ContentResource | ChoiceBody, { selector?: any }] { if (resource.type === 'SpecificResource') { diff --git a/src/painting-annotations/types.ts b/src/painting-annotations/types.ts index dcc8fba..224e103 100644 --- a/src/painting-annotations/types.ts +++ b/src/painting-annotations/types.ts @@ -1,6 +1,19 @@ -import { IIIFExternalWebResource, SpecificResource } from '@iiif/parser/presentation-3/types'; -import { InternationalString } from '@iiif/parser/presentation-3/types'; -import { AnnotationNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import type { + IIIFExternalWebResource as IIIFExternalWebResourceV3, + InternationalString as InternationalStringV3, + SpecificResource as SpecificResourceV3, +} from '@iiif/parser/presentation-3/types'; +import type { AnnotationNormalized as AnnotationNormalizedV3 } from '@iiif/parser/presentation-3-normalized/types'; +import type { + ContentResourceLike as ContentResourceLikeV4, + LanguageMap as InternationalStringV4, + SpecificResource as SpecificResourceV4, +} from '@iiif/parser/presentation-4/types'; +import type { AnnotationNormalized as AnnotationNormalizedV4 } from '@iiif/parser/presentation-4-normalized/types'; + +type InternationalString = InternationalStringV3 | InternationalStringV4; +type PaintableResource = IIIFExternalWebResourceV3 | SpecificResourceV3 | ContentResourceLikeV4 | SpecificResourceV4; +type AnnotationNormalized = AnnotationNormalizedV3 | AnnotationNormalizedV4; export interface SingleChoice { type: 'single-choice'; @@ -25,7 +38,7 @@ export interface Paintables { types: string[]; items: Array<{ type: string; - resource: IIIFExternalWebResource | SpecificResource; + resource: PaintableResource; annotationId: string; annotation: AnnotationNormalized; target: any; diff --git a/src/ranges.ts b/src/ranges.ts index 9ad690e..4cc29d1 100644 --- a/src/ranges.ts +++ b/src/ranges.ts @@ -1,49 +1,85 @@ import { compressSpecificResource } from '@iiif/parser'; -import type { Canvas, InternationalString, Manifest, Range, Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; -import type { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import type { + Canvas as CanvasV3, + InternationalString as InternationalStringV3, + Manifest as ManifestV3, + Range as RangeV3, + Reference as ReferenceV3, + SpecificResource as SpecificResourceV3, +} from '@iiif/parser/presentation-3/types'; +import type { + CanvasNormalized as CanvasNormalizedV3, + ManifestNormalized as ManifestNormalizedV3, + RangeNormalized as RangeNormalizedV3, +} from '@iiif/parser/presentation-3-normalized/types'; +import type { + Canvas as CanvasV4, + LanguageMap as InternationalStringV4, + Manifest as ManifestV4, + Range as RangeV4, + Reference as ReferenceV4, + SpecificResource as SpecificResourceV4, +} from '@iiif/parser/presentation-4/types'; +import type { + CanvasNormalized as CanvasNormalizedV4, + ManifestNormalized as ManifestNormalizedV4, + RangeNormalized as RangeNormalizedV4, +} from '@iiif/parser/presentation-4-normalized/types'; import { splitCanvasFragment } from './annotation-targets'; import { type CompatVault, compatVault } from './compat'; import { hash } from './shared-utilities'; +type Reference = ReferenceV3 | ReferenceV4; +type RangeLike = RangeV3 | RangeV4 | RangeNormalizedV3 | RangeNormalizedV4 | Reference<'Range'>; +type CanvasLike = CanvasV3 | CanvasV4 | CanvasNormalizedV3 | CanvasNormalizedV4 | Reference<'Canvas'>; +type InternationalString = InternationalStringV3 | InternationalStringV4; +type AnySpecificResource = SpecificResourceV3 | SpecificResourceV4; +type SpecificCanvasResource = SpecificResourceV3> | SpecificResourceV4; + export function createRangeHelper(vault: CompatVault = compatVault) { return { - findFirstCanvasFromRange: (range: RangeNormalized) => findFirstCanvasFromRange(vault, range), - findAllCanvasesInRange: (range: RangeNormalized) => findAllCanvasesInRange(vault, range), - findManifestSelectedRange: (manifest: ManifestNormalized, canvasId: string) => + findFirstCanvasFromRange: (range: RangeNormalizedV3 | RangeNormalizedV4) => findFirstCanvasFromRange(vault, range), + findAllCanvasesInRange: (range: RangeNormalizedV3 | RangeNormalizedV4) => findAllCanvasesInRange(vault, range), + findManifestSelectedRange: (manifest: ManifestNormalizedV3 | ManifestNormalizedV4, canvasId: string) => findManifestSelectedRange(vault, manifest, canvasId), - findSelectedRange: (range: RangeNormalized, canvasId: string) => findSelectedRange(vault, range, canvasId), + findSelectedRange: (range: RangeNormalizedV3 | RangeNormalizedV4, canvasId: string) => + findSelectedRange(vault, range, canvasId), rangesToTableOfContentsTree: ( - rangeRefs: RangeNormalized[], + rangeRefs: Array, label?: InternationalString | null, options: { showNoNav?: boolean } = {} ) => rangesToTableOfContentsTree(vault, rangeRefs, label, options), rangeToTableOfContentsTree: ( - rangeRef: RangeNormalized | Reference<'Range'>, + rangeRef: RangeNormalizedV3 | RangeNormalizedV4 | Reference<'Range'>, options: { showNoNav?: boolean } = {} ) => rangeToTableOfContentsTree(vault, rangeRef, [], options), isContiguous: ( - rangeRef: RangeNormalized | Reference<'Range'>, - canvasesRef: Canvas[] | CanvasNormalized[] | Reference<'Canvas'>[], + rangeRef: RangeNormalizedV3 | RangeNormalizedV4 | Reference<'Range'>, + canvasesRef: Array>, options: Partial<{ allowGaps: boolean; allowSubset: boolean; detail?: boolean }> = {} ) => isRangeContiguous(vault, rangeRef, canvasesRef, options), }; } -export function findFirstCanvasFromRange(vault: CompatVault, range: RangeNormalized): null | Reference<'Canvas'> { +export function findFirstCanvasFromRange( + vault: CompatVault, + range: RangeNormalizedV3 | RangeNormalizedV4 +): null | Reference<'Canvas'> { for (const inner of range.items) { + const innerAny = inner as any; if (typeof inner === 'string') { return { id: inner, type: 'Canvas' }; } - if ((inner as any).type === 'Canvas') { + if (innerAny.type === 'Canvas') { return inner as any as Reference<'Canvas'>; } - if (inner.type === 'SpecificResource') { - if (inner.source?.type === 'Canvas') { - return inner.source as Reference<'Canvas'>; + if (innerAny.type === 'SpecificResource') { + if (innerAny.source?.type === 'Canvas') { + return innerAny.source as Reference<'Canvas'>; } } - if (inner.type === 'Range') { - const found = findFirstCanvasFromRange(vault, vault.get(inner)); + if (innerAny.type === 'Range') { + const found = findFirstCanvasFromRange(vault, vault.get(inner as any) as any); if (found) { return found; } @@ -54,28 +90,29 @@ export function findFirstCanvasFromRange(vault: CompatVault, range: RangeNormali export function findFirstCanvasFromRangeWithSelector( vault: CompatVault, - range: RangeNormalized -): null | SpecificResource> { + range: RangeNormalizedV3 | RangeNormalizedV4 +): null | SpecificCanvasResource { for (const inner of range.items) { + const innerAny = inner as any; if (typeof inner === 'string') { return { type: 'SpecificResource', source: { id: inner, type: 'Canvas' } as Reference<'Canvas'>, }; } - if ((inner as any).type === 'Canvas') { + if (innerAny.type === 'Canvas') { return { type: 'SpecificResource', source: inner as any as Reference<'Canvas'>, }; } - if (inner.type === 'SpecificResource') { - if (inner.source?.type === 'Canvas') { - return inner as SpecificResource>; + if (innerAny.type === 'SpecificResource') { + if (innerAny.source?.type === 'Canvas') { + return inner as SpecificCanvasResource; } } - if (inner.type === 'Range') { - const found = findFirstCanvasFromRangeWithSelector(vault, vault.get(inner)); + if (innerAny.type === 'Range') { + const found = findFirstCanvasFromRangeWithSelector(vault, vault.get(inner as any) as any); if (found) { return found; } @@ -84,22 +121,26 @@ export function findFirstCanvasFromRangeWithSelector( return null; } -export function findAllCanvasesInRange(vault: CompatVault, range: RangeNormalized): Array> { +export function findAllCanvasesInRange( + vault: CompatVault, + range: RangeNormalizedV3 | RangeNormalizedV4 +): Array> { const found: Reference<'Canvas'>[] = []; for (const inner of range.items) { - if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas') { - const [url, fragment] = splitCanvasFragment(inner.source.id || ''); + const innerAny = inner as any; + if (innerAny.type === 'SpecificResource' && innerAny.source?.type === 'Canvas') { + const [url, fragment] = splitCanvasFragment(innerAny.source.id || ''); if (fragment) { found.push({ id: url, type: 'Canvas' }); } else { - found.push(inner.source as Reference<'Canvas'>); + found.push(innerAny.source as Reference<'Canvas'>); } } - if (inner.type === 'Range') { - found.push(...findAllCanvasesInRange(vault, vault.get(inner))); + if (innerAny.type === 'Range') { + found.push(...findAllCanvasesInRange(vault, vault.get(inner as any) as any)); } - if ((inner as any).type === 'SpecificResource') { - const sourceId = typeof (inner as any).source === 'string' ? (inner as any).source : (inner as any).source.id; + if (innerAny.type === 'SpecificResource') { + const sourceId = typeof innerAny.source === 'string' ? innerAny.source : innerAny.source.id; found.push({ id: sourceId, type: 'Canvas' }); } } @@ -108,9 +149,9 @@ export function findAllCanvasesInRange(vault: CompatVault, range: RangeNormalize export function findManifestSelectedRange( vault: CompatVault, - manifest: ManifestNormalized, + manifest: ManifestNormalizedV3 | ManifestNormalizedV4, canvasId: string -): null | RangeNormalized { +): null | RangeNormalizedV3 | RangeNormalizedV4 { for (const range of manifest.structures) { const found = findSelectedRange(vault, vault.get(range), canvasId); if (found) { @@ -123,19 +164,20 @@ export function findManifestSelectedRange( export function findSelectedRange( vault: CompatVault, - range: RangeNormalized, + range: RangeNormalizedV3 | RangeNormalizedV4, canvasId: string -): null | RangeNormalized { +): null | RangeNormalizedV3 | RangeNormalizedV4 { for (const inner of range.items) { + const innerAny = inner as any; const parsedId = (inner as any)?.source?.id?.split('#')[0]; - if ((inner as any).type === 'SpecificResource' && (inner as any).source === canvasId) { + if (innerAny.type === 'SpecificResource' && innerAny.source === canvasId) { return range; } - if (inner.type === 'SpecificResource' && inner.source?.type === 'Canvas' && canvasId === parsedId) { + if (innerAny.type === 'SpecificResource' && innerAny.source?.type === 'Canvas' && canvasId === parsedId) { return range; } - if (inner.type === 'Range') { - const found = findSelectedRange(vault, vault.get(inner), canvasId); + if (innerAny.type === 'Range') { + const found = findSelectedRange(vault, vault.get(inner as any) as any, canvasId); if (found) { return found; } @@ -148,20 +190,20 @@ export interface RangeTableOfContentsNode { id: string; type: 'Canvas' | 'Range'; label: InternationalString | null; - resource?: SpecificResource; + resource?: AnySpecificResource; untitled?: boolean; isCanvasLeaf: boolean; isRangeLeaf: boolean; isVirtual?: boolean; isNoNav?: boolean; - firstCanvas?: SpecificResource> | null; + firstCanvas?: SpecificCanvasResource | null; items?: Array; parent?: { id: string; type: 'Range' }; } export function rangesToTableOfContentsTree( vault: CompatVault, - rangeRefs: RangeNormalized[] | Range[] | Reference<'Range'>[], + rangeRefs: Array>, label?: InternationalString | null, options: { showNoNav?: boolean } = {} ): RangeTableOfContentsNode | null { @@ -175,7 +217,7 @@ export function rangesToTableOfContentsTree( return rangeToTableOfContentsTree(vault, ranges[0] as any, [], options); } - const virtualRoot: Range = { + const virtualRoot: RangeV3 = { id: `vault://virtual-root/${hash(ranges)}`, type: 'Range', label: label || { en: ['Table of Contents'] }, @@ -187,7 +229,7 @@ export function rangesToTableOfContentsTree( export function rangeToTableOfContentsTree( vault: CompatVault, - rangeRef: undefined | null | Range | RangeNormalized | Reference<'Range'>, + rangeRef: undefined | null | RangeLike, seenIds: string[] = [], options: { showNoNav?: boolean; parentRange?: { id: string; type: 'Range' } } = {} ): RangeTableOfContentsNode | null { @@ -318,11 +360,11 @@ export function rangeToTableOfContentsTree( function getCanvasesFromRange( vault: CompatVault, - rangeRef: Range | RangeNormalized | Reference<'Range'>, + rangeRef: RangeLike, path: string[] = [] -): Array<{ canvas: Canvas; path: string[] }> { +): Array<{ canvas: CanvasLike; path: string[] }> { const range = vault.get(rangeRef); - const canvases: Array<{ canvas: Canvas; path: string[] }> = []; + const canvases: Array<{ canvas: CanvasLike; path: string[] }> = []; const currentPath = range.id ? [...path, range.id] : path; if (!range.items) { @@ -335,15 +377,15 @@ function getCanvasesFromRange( } else if (item.type === 'SpecificResource') { const canvas = item.source; if (canvas?.type === 'Canvas') { - canvases.push({ canvas: canvas as Canvas, path: currentPath }); + canvases.push({ canvas: canvas as CanvasLike, path: currentPath }); } else { // Unknown resource type. } } else if (item.type === 'Range') { - canvases.push(...getCanvasesFromRange(vault, item as Range, currentPath)); + canvases.push(...getCanvasesFromRange(vault, item as RangeLike, currentPath)); } else if ((item as any).type === 'Canvas' || (item as any).type === 'Timeline' || (item as any).type === 'Scene') { // P4 normalization stores container references directly (not wrapped in SpecificResource) - canvases.push({ canvas: item as unknown as Canvas, path: currentPath }); + canvases.push({ canvas: item as unknown as CanvasLike, path: currentPath }); } } return canvases; @@ -365,8 +407,8 @@ type IsRangeContiguousDetail = { export function isRangeContiguous( vault: CompatVault, - rangeRef: Range | RangeNormalized | Reference<'Range'>, - canvasesRef: Canvas[] | CanvasNormalized[] | Reference<'Canvas'>[], + rangeRef: RangeLike, + canvasesRef: Array>, options: Partial<{ allowGaps: boolean; allowSubset: boolean; detail?: boolean }> = {} ): [boolean, IsRangeContiguousDetail | null] { const canvases = canvasesRef.map((c) => vault.get(c, { skipSelfReturn: false })); diff --git a/src/search1.ts b/src/search1.ts index cc91810..3ff0c08 100644 --- a/src/search1.ts +++ b/src/search1.ts @@ -1,18 +1,22 @@ -import { +import type { SearchService as _SearchService, - SearchServiceAutocomplete, IdOrAtId, + Manifest as ManifestV3, + SearchServiceAutocomplete, SearchServiceAutocompleteQueryParams, SearchServiceAutocompleteResponse, - SearchServiceSearchResponse, - SearchServiceQueryParams, - Manifest, SearchServiceCommonHitSelectors, + SearchServiceQueryParams, + SearchServiceSearchResponse, } from '@iiif/parser/presentation-3/types'; -import { ManifestNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import type { ManifestNormalized as ManifestNormalizedV3 } from '@iiif/parser/presentation-3-normalized/types'; +import type { Manifest as ManifestV4 } from '@iiif/parser/presentation-4/types'; +import type { ManifestNormalized as ManifestNormalizedV4 } from '@iiif/parser/presentation-4-normalized/types'; import { g } from 'vitest/dist/suite-a18diDsI.js'; import { createStore } from 'zustand/vanilla'; +type SearchManifest = ManifestNormalizedV3 | ManifestNormalizedV4 | ManifestV3 | ManifestV4; + export type Search1Service = _SearchService & { service?: SearchServiceAutocomplete | SearchServiceAutocomplete[] | undefined; }; @@ -32,11 +36,16 @@ export interface Search1AutocompleteStore { clearSearch: () => void; search: ( query: string, - options?: { motivation?: string; date?: string; user?: string; headers?: HeadersInit } + options?: { + motivation?: string; + date?: string; + user?: string; + headers?: HeadersInit; + } ) => void | Promise; } -export function findSearch1Service(manifest: ManifestNormalized | Manifest): Search1Service | null { +export function findSearch1Service(manifest: SearchManifest): Search1Service | null { if (!manifest || !manifest.service) { return null; } @@ -101,7 +110,12 @@ export const createSearch1AutocompleteStore = ( async search( query: string, - options: { motivation?: string; date?: string; user?: string; headers?: HeadersInit } = {} + options: { + motivation?: string; + date?: string; + user?: string; + headers?: HeadersInit; + } = {} ) { const endpoint = get().endpoint; if (get().hasAutocomplete === false) { diff --git a/src/sequences.ts b/src/sequences.ts index dc875bd..b3677ec 100644 --- a/src/sequences.ts +++ b/src/sequences.ts @@ -1,17 +1,28 @@ -import { Reference } from '@iiif/parser/presentation-3/types'; -import { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/parser/presentation-3-normalized/types'; +import type { Reference as ReferenceV3 } from '@iiif/parser/presentation-3/types'; +import type { + CanvasNormalized as CanvasNormalizedV3, + ManifestNormalized as ManifestNormalizedV3, + RangeNormalized as RangeNormalizedV3, +} from '@iiif/parser/presentation-3-normalized/types'; +import type { Reference as ReferenceV4 } from '@iiif/parser/presentation-4/types'; +import type { + CanvasNormalized as CanvasNormalizedV4, + ManifestNormalized as ManifestNormalizedV4, + RangeNormalized as RangeNormalizedV4, +} from '@iiif/parser/presentation-4-normalized/types'; +import { type CompatVault, compatVault } from './compat'; import { findAllCanvasesInRange } from './ranges'; -import { compatVault, CompatVault } from './compat'; + +type Reference = ReferenceV3 | ReferenceV4; +type ManifestOrRange = ManifestNormalizedV3 | RangeNormalizedV3 | ManifestNormalizedV4 | RangeNormalizedV4; +type CanvasNormalized = CanvasNormalizedV3 | CanvasNormalizedV4; export function createSequenceHelper(vault: CompatVault = compatVault) { return { - getVisibleCanvasesFromCanvasId: ( - manifestOrRange: ManifestNormalized | RangeNormalized, - canvasId: string | null, - preventPaged = false - ) => getVisibleCanvasesFromCanvasId(vault, manifestOrRange, canvasId, preventPaged), + getVisibleCanvasesFromCanvasId: (manifestOrRange: ManifestOrRange, canvasId: string | null, preventPaged = false) => + getVisibleCanvasesFromCanvasId(vault, manifestOrRange, canvasId, preventPaged), getManifestSequence: ( - manifestOrRange: ManifestNormalized | RangeNormalized, + manifestOrRange: ManifestOrRange, options: { disablePaging?: boolean; skipNonPaged?: boolean } = {} ) => getManifestSequence(vault, manifestOrRange, options), }; @@ -50,7 +61,7 @@ export function createSequenceHelper(vault: CompatVault = compatVault) { */ export function getVisibleCanvasesFromCanvasId( vault: CompatVault = compatVault, - manifestOrRange: ManifestNormalized | RangeNormalized, + manifestOrRange: ManifestOrRange, canvasId: string | null, preventPaged = false ): Reference<'Canvas'>[] { @@ -95,15 +106,18 @@ export function getVisibleCanvasesFromCanvasId( export function getManifestSequence( vault: CompatVault = compatVault, - manifestOrRange: ManifestNormalized | RangeNormalized, + manifestOrRange: ManifestOrRange, { disablePaging, skipNonPaged }: { disablePaging?: boolean; skipNonPaged?: boolean } = {} ): [Reference<'Canvas'>[], number[][]] { const behavior = manifestOrRange.behavior || []; const isPaged = behavior.includes('paged'); const isContinuous = isPaged ? false : behavior.includes('continuous'); const isIndividuals = isPaged || isContinuous ? false : behavior.includes('individuals'); - const manifestItems = - manifestOrRange.type === 'Manifest' ? manifestOrRange.items : findAllCanvasesInRange(vault, manifestOrRange); + const manifestItems = ( + manifestOrRange.type === 'Manifest' + ? [...(manifestOrRange.items as any[])] + : findAllCanvasesInRange(vault, manifestOrRange) + ) as Reference<'Canvas'>[]; // Continuous should just return all items together. if (isContinuous) { @@ -129,7 +143,7 @@ export function getManifestSequence( let offset = 0; let flushNextPaged = false; for (let i = 0; i < manifestItems.length; i++) { - const canvas = vault.get(manifestItems[i]); + const canvas = vault.get(manifestItems[i] as any); const canvasBehavior = canvas.behavior || []; if (canvasBehavior.includes('non-paged')) { if (i === offset) { diff --git a/src/shared-utilities.ts b/src/shared-utilities.ts index 9de4461..f960ba7 100644 --- a/src/shared-utilities.ts +++ b/src/shared-utilities.ts @@ -1,5 +1,15 @@ import { isSpecificResource } from '@iiif/parser'; -import type { Reference, SpecificResource } from '@iiif/parser/presentation-3/types'; +import type { + Reference as ReferenceV3, + SpecificResource as SpecificResourceV3, +} from '@iiif/parser/presentation-3/types'; +import type { + Reference as ReferenceV4, + SpecificResource as SpecificResourceV4, +} from '@iiif/parser/presentation-4/types'; + +type AnyReference = ReferenceV3 | ReferenceV4; +type AnySpecificResource = SpecificResourceV3 | SpecificResourceV4; /** * A string hashing function based on Daniel J. Bernstein's popular 'times 33' hash algorithm. @@ -24,7 +34,7 @@ export function hash(object: any): string { return hexString; } -export function changeRefIdentifier(item: Reference | SpecificResource, newIdentifier: string) { +export function changeRefIdentifier(item: AnyReference | AnySpecificResource, newIdentifier: string) { if (isSpecificResource(item)) { if (typeof item.source === 'string') { return { diff --git a/src/styles.ts b/src/styles.ts index dc28527..58f528d 100644 --- a/src/styles.ts +++ b/src/styles.ts @@ -1,7 +1,9 @@ -import { Reference } from '@iiif/parser/presentation-3/types'; -import { compatVault, CompatVault } from './compat'; +import type { Reference as ReferenceV3 } from '@iiif/parser/presentation-3/types'; +import type { Reference as ReferenceV4 } from '@iiif/parser/presentation-4/types'; +import { type CompatVault, compatVault } from './compat'; export type StyleDefinition = Record; +type AnyReference = ReferenceV3 | ReferenceV4; export type StyledHelper = { applyStyles