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..35ec07b 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: ['20', '22'] + node: ['22'] name: Node ${{ matrix.node }} build steps: @@ -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__/activations-helper.tests.ts b/__tests__/activations-helper.tests.ts new file mode 100644 index 0000000..a886f25 --- /dev/null +++ b/__tests__/activations-helper.tests.ts @@ -0,0 +1,34 @@ +import { describe, expect, test } from 'vitest'; +import { createActivationsHelper } from '../src/activations'; +import { compatVault } from '../src/compat'; +import type { SceneAnnotation } from '../src/scenes/types'; + +describe('activations helper', () => { + test('Parsing an activating annotation into an ordered transaction', () => { + const helper = createActivationsHelper(compatVault); + + const activating: SceneAnnotation = { + id: 'https://example.org/anno/1', + type: 'Annotation', + motivation: ['activating'], + body: { + type: 'SpecificResource', + source: { id: 'https://example.org/model/1', type: 'Model' }, + selector: [{ type: 'AnimationSelector', value: 'open' }], + transform: [{ type: 'RotateTransform', y: 90 }], + action: ['play'], + }, + target: { id: 'https://example.org/scene/1', type: 'Scene' }, + }; + + const parsed = helper.parseActivatingAnnotation(activating); + if (!parsed) { + throw new Error('Expected parsed activation transaction'); + } + expect(parsed?.annotationId).toBe('https://example.org/anno/1'); + expect(parsed?.steps).toHaveLength(1); + expect(parsed?.steps[0].source?.type).toBe('Model'); + expect(parsed?.steps[0].transform).toEqual([{ type: 'RotateTransform', y: 90 }]); + expect(parsed?.steps[0].actions).toEqual(['play']); + }); +}); diff --git a/__tests__/helpers.ts b/__tests__/helpers.ts index 04b0460..3dcc088 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. @@ -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__/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__/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__/parse-selector.tests.ts b/__tests__/parse-selector.tests.ts index 074e00f..febb752 100644 --- a/__tests__/parse-selector.tests.ts +++ b/__tests__/parse-selector.tests.ts @@ -1,4 +1,5 @@ -import type { Selector } from '@iiif/presentation-3'; +import type { Selector } from '@iiif/parser/presentation-3/types'; +import type { Selector as SelectorV4 } from '@iiif/parser/presentation-4/types'; import { JSDOM } from 'jsdom'; import { describe, expect, test } from 'vitest'; import ghentChoices from '../fixtures/presentation-3/ghent-choices.json'; @@ -6,6 +7,128 @@ import { expandTarget } from '../src'; import { parseSelector } from '../src/annotation-targets/parse-selector'; describe('parse selector', () => { + test('Parsing a 3D PointSelector (including zeros + z)', () => { + expect( + parseSelector({ + type: 'PointSelector', + x: 0, + y: 0, + z: 0, + } as SelectorV4) + ).toMatchInlineSnapshot(` + { + "selector": { + "spatial": { + "x": 0, + "y": 0, + "z": 0, + }, + "type": "PointSelector", + }, + "selectors": [ + { + "spatial": { + "x": 0, + "y": 0, + "z": 0, + }, + "type": "PointSelector", + }, + ], + } + `); + }); + + test('Parsing a PolygonZSelector WKT', () => { + expect( + parseSelector({ + type: 'PolygonZSelector', + value: 'POLYGONZ((-1.0843 2.8273 -2, 1.0843 2.8273 -2, 1.0843 0 -2, -1.0843 0 -2, -1.0843 2.8273 -2))', + } as SelectorV4) + ).toMatchInlineSnapshot(` + { + "selector": { + "points3d": [ + [ + -1.0843, + 2.8273, + -2, + ], + [ + 1.0843, + 2.8273, + -2, + ], + [ + 1.0843, + 0, + -2, + ], + [ + -1.0843, + 0, + -2, + ], + [ + -1.0843, + 2.8273, + -2, + ], + ], + "spatial": { + "height": 2.8273, + "unit": "pixel", + "width": 2.1686, + "x": -1.0843, + "y": 0, + }, + "type": "PolygonZSelector", + "value": "POLYGONZ((-1.0843 2.8273 -2, 1.0843 2.8273 -2, 1.0843 0 -2, -1.0843 0 -2, -1.0843 2.8273 -2))", + }, + "selectors": [ + { + "points3d": [ + [ + -1.0843, + 2.8273, + -2, + ], + [ + 1.0843, + 2.8273, + -2, + ], + [ + 1.0843, + 0, + -2, + ], + [ + -1.0843, + 0, + -2, + ], + [ + -1.0843, + 2.8273, + -2, + ], + ], + "spatial": { + "height": 2.8273, + "unit": "pixel", + "width": 2.1686, + "x": -1.0843, + "y": 0, + }, + "type": "PolygonZSelector", + "value": "POLYGONZ((-1.0843 2.8273 -2, 1.0843 2.8273 -2, 1.0843 0 -2, -1.0843 0 -2, -1.0843 2.8273 -2))", + }, + ], + } + `); + }); + describe('SVG Selectors', () => { test('Parsing a rectangle selector', () => { expect( 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__/scene-helper.tests.ts b/__tests__/scene-helper.tests.ts new file mode 100644 index 0000000..8fa7bc9 --- /dev/null +++ b/__tests__/scene-helper.tests.ts @@ -0,0 +1,109 @@ +import type { SceneNormalized } from '@iiif/parser/presentation-4-normalized/types'; +import { describe, expect, test } from 'vitest'; +import modelInScene from '../fixtures/presentation-4/scenes/01-model-in-scene.json'; +import rotatedModel from '../fixtures/presentation-4/scenes/14-rotated-model.json'; +import { createSceneHelper, KNOWN_SCENE_PAINTABLE_TYPES } from '../src/scenes'; +import { VaultAuto } from '../src/vault/vault-auto'; + +describe('scene helper', () => { + test('Extracting model paintables from a Scene', () => { + const vault = new VaultAuto({ enablePresentation4: true }); + vault.loadManifestSync(modelInScene.id, modelInScene); + + const manifest = vault.get<{ type?: string; items: Array<{ id: string }> }>(modelInScene.id); + if (!manifest) { + throw new Error('Manifest was not loaded'); + } + const sceneId = manifest.items[0].id; + + const helper = createSceneHelper(vault); + const paintables = helper.getPaintables(sceneId); + + expect(paintables.items).toHaveLength(1); + expect(paintables.items[0].type).toBe('model'); + expect(paintables.items[0].resource.id).toBe( + 'https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb' + ); + expect(paintables.items[0].target?.source?.type).toBe('Scene'); + }); + + test('Extracting transforms and 3D target PointSelector', () => { + const vault = new VaultAuto({ enablePresentation4: true }); + vault.loadManifestSync(rotatedModel.id, rotatedModel); + + const manifest = vault.get<{ type?: string; items: Array<{ id: string }> }>(rotatedModel.id); + if (!manifest) { + throw new Error('Manifest was not loaded'); + } + const sceneId = manifest.items[0].id; + const scene = vault.get(sceneId); + if (!scene) { + throw new Error('Scene was not loaded'); + } + + const helper = createSceneHelper(vault); + const paintables = helper.getPaintables(sceneId); + + expect(paintables.items).toHaveLength(1); + expect(paintables.items[0].type).toBe('model'); + expect(paintables.items[0].bodyTransform).toEqual([ + { + type: 'RotateTransform', + x: 0, + y: 180, + z: 0, + }, + ]); + + const target = paintables.items[0].target; + if (!target?.selector || target.selector.type !== 'PointSelector') { + throw new Error('Expected PointSelector target'); + } + expect(target.selector.type).toBe('PointSelector'); + expect(target.selector.spatial).toEqual({ x: 0, y: 0, z: 0 }); + }); + + test('Includes available paintable type catalog and marks unknown resource types', () => { + const manifest = { + id: 'https://example.org/manifest', + type: 'Manifest', + items: [ + { + id: 'https://example.org/scene/1', + type: 'Scene', + items: [ + { + id: 'https://example.org/scene/1/page/1', + type: 'AnnotationPage', + items: [ + { + id: 'https://example.org/scene/1/anno/1', + type: 'Annotation', + motivation: ['painting'], + body: { + id: 'https://example.org/resource/custom', + type: 'CustomMesh', + }, + target: { id: 'https://example.org/scene/1', type: 'Scene' }, + }, + ], + }, + ], + }, + ], + }; + + const vault = new VaultAuto({ enablePresentation4: true }); + vault.loadManifestSync(manifest.id, manifest); + + const helper = createSceneHelper(vault); + const paintables = helper.getPaintables('https://example.org/scene/1'); + + expect(paintables.availableTypes).toEqual(KNOWN_SCENE_PAINTABLE_TYPES); + expect(paintables.items).toHaveLength(1); + expect(paintables.items[0].type).toBe('unknown'); + expect(paintables.items[0].rawType).toBe('CustomMesh'); + expect(paintables.types).toEqual(['unknown']); + expect(paintables.rawTypes).toEqual(['CustomMesh']); + }); +}); diff --git a/__tests__/thumbnail-helper.tests.ts b/__tests__/thumbnail-helper.tests.ts index 677adac..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 { ManifestNormalized } from '@iiif/presentation-3-normalized'; +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/__tests__/v4-helpers/__snapshots__/range.tests.ts.snap b/__tests__/v4-helpers/__snapshots__/range.tests.ts.snap new file mode 100644 index 0000000..e7bc1ce --- /dev/null +++ b/__tests__/v4-helpers/__snapshots__/range.tests.ts.snap @@ -0,0 +1,117 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`range helper > it can parse bodleian ranges 2`] = ` +[ + { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [ + "top", + ], + "homepage": [], + "id": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0000", + "items": [ + { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0001", + "type": "Range", + }, + { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0011", + "type": "Range", + }, + { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0186", + "type": "Range", + }, + { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0321", + "type": "Range", + }, + { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0454", + "type": "Range", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/ec199b13", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/2b1326ef", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/c5793193", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/e82c63de", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/b846e166", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/72ae7e5b", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/84dd4556", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/9bcbca5d", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/cdb2bb92", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/e6c5a616", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/e5d1c1d9", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/ff8f5831", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/7f68ab7e", + "type": "ContentResource", + }, + { + "id": "vault://iiif-parser/v4/SpecificResource/1603c8c3", + "type": "ContentResource", + }, + ], + "label": { + "none": [ + "Arch. G c.7", + ], + }, + "metadata": [], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/canvas/57e041f5-8945-44b6-918d-b949e5c97ba1.json", + "type": "Canvas", + }, + "summary": null, + "supplementary": [], + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + }, +] +`; diff --git a/__tests__/v4-helpers/content-state.tests.ts b/__tests__/v4-helpers/content-state.tests.ts new file mode 100644 index 0000000..fec16fa --- /dev/null +++ b/__tests__/v4-helpers/content-state.tests.ts @@ -0,0 +1,578 @@ +// @ts-nocheck +import { normaliseContentState, parseContentState, serialiseContentState } from '../../src/content-state'; + +const fixture1 = + 'JTdCJTIyaWQlMjIlM0ElMjJodHRwcyUzQSUyRiUyRmV4YW1wbGUub3JnJTJGb2JqZWN0MSUyRmNhbnZhczclMjN4eXdoJTNEMTAwMCUyQzIwMDAlMkMxMDAwJTJDMjAwMCUyMiUyQyUyMnR5cGUlMjIlM0ElMjJDYW52YXMlMjIlMkMlMjJwYXJ0T2YlMjIlM0ElNUIlN0IlMjJpZCUyMiUzQSUyMmh0dHBzJTNBJTJGJTJGZXhhbXBsZS5vcmclMkZvYmplY3QxJTJGbWFuaWZlc3QlMjIlMkMlMjJ0eXBlJTIyJTNBJTIyTWFuaWZlc3QlMjIlN0QlNUQlN0Q'; + +describe('content state (presentation 4)', () => { + test('Encoding example from specification', () => { + expect( + serialiseContentState({ + id: 'https://example.org/object1/canvas7#xywh=1000,2000,1000,2000', + type: 'Canvas', + partOf: [{ id: 'https://example.org/object1/manifest', type: 'Manifest' }], + }) + ).toEqual(fixture1); + }); + + test('Parse example from specification', () => { + expect(parseContentState(fixture1)).toEqual({ + id: 'https://example.org/object1/canvas7#xywh=1000,2000,1000,2000', + type: 'Canvas', + partOf: [{ id: 'https://example.org/object1/manifest', type: 'Manifest' }], + }); + }); + + test('Normalisation', () => { + const parsed = parseContentState(fixture1); + const normalised = normaliseContentState(parsed); + + expect(normalised).toMatchInlineSnapshot( + { id: expect.any(String) }, + ` + { + "extensions": {}, + "id": Any, + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": { + "boxStyle": {}, + "spatial": { + "height": 2000, + "unit": "pixel", + "width": 1000, + "x": 1000, + "y": 2000, + }, + "type": "BoxSelector", + }, + "selectors": [ + { + "boxStyle": {}, + "spatial": { + "height": 2000, + "unit": "pixel", + "width": 1000, + "x": 1000, + "y": 2000, + }, + "type": "BoxSelector", + }, + ], + "source": { + "id": "https://example.org/object1/canvas7", + "partOf": [ + { + "id": "https://example.org/object1/manifest", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + ` + ); + }); + + describe('Normalisation variations', () => { + test('2.2.3. Target Body', () => { + expect(normaliseContentState({ id: 'https://example.org/manifest-1', type: 'Manifest' })).toMatchInlineSnapshot( + { id: expect.any(String) }, + ` + { + "extensions": {}, + "id": Any, + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": null, + "selectors": [], + "source": { + "id": "https://example.org/manifest-1", + "type": "Manifest", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + ` + ); + }); + test('Simple canvas', () => { + expect( + normaliseContentState({ + id: 'https://example.org/canvas-1', + type: 'Canvas', + partOf: 'https://example.org/manifest-1', + }) + ).toMatchInlineSnapshot( + { id: expect.any(String) }, + ` + { + "extensions": {}, + "id": Any, + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": null, + "selectors": [], + "source": { + "id": "https://example.org/canvas-1", + "partOf": [ + { + "id": "https://example.org/manifest-1", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + ` + ); + }); + + test('2.2.1 Full annotation', () => { + expect( + normaliseContentState({ + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/Annotation-server/bookmarks/b1', + type: 'Annotation', + motivation: ['contentState'], + target: { + id: 'https://example.org/iiif/item1/manifest', + type: 'Manifest', + }, + } as any) + ).toMatchInlineSnapshot(` + { + "extensions": {}, + "id": "https://example.org/Annotation-server/bookmarks/b1", + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": null, + "selectors": [], + "source": { + "id": "https://example.org/iiif/item1/manifest", + "type": "Manifest", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + `); + }); + + test('2.2.5 Limitations', () => { + expect( + normaliseContentState({ + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/import/1', + type: 'Annotation', + motivation: ['contentState'], + target: { + id: 'https://example.org/object1/canvas7#xywh=1000,2000,1000,2000', + type: 'Canvas', + partOf: [ + { + id: 'https://example.org/object1/manifest', + type: 'Manifest', + }, + ], + }, + } as any) + ).toMatchInlineSnapshot(` + { + "extensions": {}, + "id": "https://example.org/import/1", + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": { + "boxStyle": {}, + "spatial": { + "height": 2000, + "unit": "pixel", + "width": 1000, + "x": 1000, + "y": 2000, + }, + "type": "BoxSelector", + }, + "selectors": [ + { + "boxStyle": {}, + "spatial": { + "height": 2000, + "unit": "pixel", + "width": 1000, + "x": 1000, + "y": 2000, + }, + "type": "BoxSelector", + }, + ], + "source": { + "id": "https://example.org/object1/canvas7", + "partOf": [ + { + "id": "https://example.org/object1/manifest", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + `); + }); + + test('2.2.5.1 Reduced', () => { + expect( + normaliseContentState({ + id: 'https://example.org/object1/canvas7#xywh=1000,2000,1000,2000', + type: 'Canvas', + partOf: [ + { + id: 'https://example.org/object1/manifest', + type: 'Manifest', + }, + ], + }) + ).toMatchInlineSnapshot( + { id: expect.any(String) }, + ` + { + "extensions": {}, + "id": Any, + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": { + "boxStyle": {}, + "spatial": { + "height": 2000, + "unit": "pixel", + "width": 1000, + "x": 1000, + "y": 2000, + }, + "type": "BoxSelector", + }, + "selectors": [ + { + "boxStyle": {}, + "spatial": { + "height": 2000, + "unit": "pixel", + "width": 1000, + "x": 1000, + "y": 2000, + }, + "type": "BoxSelector", + }, + ], + "source": { + "id": "https://example.org/object1/canvas7", + "partOf": [ + { + "id": "https://example.org/object1/manifest", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + ` + ); + }); + + test('3.1 linking', () => { + expect( + normaliseContentState({ + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/content-states/1', + type: 'Annotation', + motivation: ['contentState'], + target: { + id: 'http://dams.llgc.org.uk/iiif/2.0/4389767/canvas/4389772.json', + type: 'Canvas', + partOf: [ + { + id: 'http://dams.llgc.org.uk/iiif/2.0/4389767/manifest.json', + type: 'Manifest', + }, + ], + }, + } as any) + ).toMatchInlineSnapshot(` + { + "extensions": {}, + "id": "https://example.org/content-states/1", + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": null, + "selectors": [], + "source": { + "id": "http://dams.llgc.org.uk/iiif/2.0/4389767/canvas/4389772.json", + "partOf": [ + { + "id": "http://dams.llgc.org.uk/iiif/2.0/4389767/manifest.json", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + `); + }); + + test('5.1 A region of a Canvas in a Manifest', () => { + expect( + normaliseContentState({ + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/import/1', + type: 'Annotation', + motivation: ['contentState'], + target: { + id: 'https://example.org/object1/canvas7#xywh=1000,2000,1000,2000', + type: 'Canvas', + partOf: [ + { + id: 'https://example.org/object1/manifest', + type: 'Manifest', + }, + ], + }, + } as any) + ).toMatchInlineSnapshot(` + { + "extensions": {}, + "id": "https://example.org/import/1", + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": { + "boxStyle": {}, + "spatial": { + "height": 2000, + "unit": "pixel", + "width": 1000, + "x": 1000, + "y": 2000, + }, + "type": "BoxSelector", + }, + "selectors": [ + { + "boxStyle": {}, + "spatial": { + "height": 2000, + "unit": "pixel", + "width": 1000, + "x": 1000, + "y": 2000, + }, + "type": "BoxSelector", + }, + ], + "source": { + "id": "https://example.org/object1/canvas7", + "partOf": [ + { + "id": "https://example.org/object1/manifest", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + `); + }); + + test('5.2. Start Playing at a Point in a Recording', () => { + expect( + normaliseContentState({ + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/import/2', + type: 'Annotation', + motivation: ['contentState'], + target: { + type: 'SpecificResource', + source: { + id: 'https://example.org/iiif/id1/canvas1', + type: 'Canvas', + partOf: [ + { + id: 'https://example.org/iiif/id1/manifest', + type: 'Manifest', + }, + ], + }, + + selector: { + type: 'PointSelector', + t: 14.5, + }, + }, + } as any) + ).toMatchInlineSnapshot(` + { + "extensions": {}, + "id": "https://example.org/import/2", + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": { + "temporal": { + "startTime": 14.5, + }, + "type": "TemporalSelector", + }, + "selectors": [ + { + "temporal": { + "startTime": 14.5, + }, + "type": "TemporalSelector", + }, + ], + "source": { + "id": "https://example.org/iiif/id1/canvas1", + "partOf": [ + { + "id": "https://example.org/iiif/id1/manifest", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + `); + }); + + test('5.3 multiple targets', () => { + expect( + normaliseContentState({ + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/import/3', + type: 'Annotation', + motivation: 'contentState', + target: [ + { + id: 'https://example.org/iiif/item1/canvas37', + type: 'Canvas', + partOf: [ + { + id: 'https://example.org/iiif/item1/manifest', + type: 'Manifest', + }, + ], + }, + + { + id: 'https://example.org/iiif/item2/canvas99', + type: 'Canvas', + partOf: [ + { + id: 'https://example.org/iiif/item2/manifest', + type: 'Manifest', + }, + ], + }, + ], + } as any) + ).toMatchInlineSnapshot(` + { + "extensions": {}, + "id": "https://example.org/import/3", + "motivation": [ + "contentState", + ], + "target": [ + { + "selector": null, + "selectors": [], + "source": { + "id": "https://example.org/iiif/item1/canvas37", + "partOf": [ + { + "id": "https://example.org/iiif/item1/manifest", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + { + "selector": null, + "selectors": [], + "source": { + "id": "https://example.org/iiif/item2/canvas99", + "partOf": [ + { + "id": "https://example.org/iiif/item2/manifest", + "type": "Manifest", + }, + ], + "type": "Canvas", + }, + "type": "SpecificResource", + }, + ], + "type": "Annotation", + } + `); + }); + }); +}); diff --git a/__tests__/v4-helpers/exhibition-helpers.tests.ts b/__tests__/v4-helpers/exhibition-helpers.tests.ts new file mode 100644 index 0000000..50f0ed7 --- /dev/null +++ b/__tests__/v4-helpers/exhibition-helpers.tests.ts @@ -0,0 +1,32 @@ +// @ts-nocheck +import invariant from 'tiny-invariant'; +import novieten from '../../fixtures/presentation-4/upgraded-from-p3/exhibitions--novieten.json'; +import { expandTarget } from '../../src'; +import { createPaintingAnnotationsHelper } from '../../src/painting-annotations'; +import { Vault4 } from '../../src/vault/vault4'; + +describe('Exhibition helpers', () => { + test('parsing exhibition', async () => { + const vault = new Vault4(); + const manifest = await vault.loadManifest(novieten.id, novieten); + + expect(manifest).to.exist; + invariant(manifest); + + const canvases = vault.get(manifest.items); + const painting = createPaintingAnnotationsHelper(vault); + + const paintables = painting.getPaintables(canvases[0]); + expect(paintables.items).toHaveLength(1); + + const expandedSelector = expandTarget({ + type: 'SpecificResource', + source: paintables.items[0].resource, + selector: paintables.items[0].selector, + }); + expect(expandedSelector.selector).toMatchInlineSnapshot(`null`); + + const expandedTarget = expandTarget(paintables.items[0].target); + expect(expandedTarget.selector).toMatchInlineSnapshot(`null`); + }); +}); diff --git a/__tests__/v4-helpers/helpers.ts b/__tests__/v4-helpers/helpers.ts new file mode 100644 index 0000000..f64cebb --- /dev/null +++ b/__tests__/v4-helpers/helpers.ts @@ -0,0 +1,99 @@ +// @ts-nocheck +// Test utility. + +import { emptyManifest } from '@iiif/parser'; +import type { Manifest, Range, RangeItems } from '@iiif/parser/presentation-4/types'; +import { getValue, type RangeTableOfContentsNode } from '../../src'; + +// Render range in ascii with children + indentation. +const treeChars = { + vertical: '│', + horizontal: '─', + corner: '└', + tee: '├', + space: ' ', +}; + +export const copy = (obj: any) => JSON.parse(JSON.stringify(obj)); + +export type RangeMakerHelper = { + range: (id: string, items: any[]) => Range; + canvas: (id: string) => RangeItems; + gap: (id: string) => RangeItems; +}; + +export function rangeMaker(fn: (r: RangeMakerHelper) => Range): [ + Range, + { + canvasIds: string[]; + getManifest(): Manifest; + canvases: Array<{ id: string; type: 'Canvas' }>; + }, +] { + const canvasIds: string[] = []; + const ctx = { + range: (id: string, items: any[]) => { + return { + id, + type: 'Range', + items: items.filter((t) => t !== null), + } as Range; + }, + gap: (id: string) => { + canvasIds.push(id); + return null; + }, + canvas: (id: string) => { + canvasIds.push(id); + return { + id, + type: 'Canvas', + } as RangeItems; + }, + }; + const response = fn(ctx as any); + return [ + response as Range, + { + canvasIds, + getManifest(): Manifest { + return { + ...(emptyManifest as any), + id: 'https://example.org/manifest', + label: { en: ['Manifest'] }, + items: canvasIds.map((c, idx) => ({ + id: c, + type: 'Canvas' as const, + width: 1000, + height: 1000, + label: { en: [`Canvas ${idx}`] }, + })), + structures: [response], + }; + }, + canvases: canvasIds.map((c) => ({ id: c, type: 'Canvas' as const })), + }, + ] as const; +} + +export function renderRange(range: RangeTableOfContentsNode | null, skipCanvases = false, indent = 0) { + if (!range) { + return ''; + } + const spaces = treeChars.space.repeat(indent); + let str = `${getValue(range.label)}\n`; + const itemsCount = range.items ? range.items.length : 0; + range.items?.forEach((item, index) => { + const isLastItem = index === itemsCount - 1; + if (item.isCanvasLeaf && skipCanvases) return; + const nn = item.isNoNav ? ' [no-nav]' : ''; + + if (typeof item === 'string') { + str += `${spaces}${isLastItem ? treeChars.corner : treeChars.tee}${treeChars.horizontal}${treeChars.horizontal} ${item}${nn}\n`; + } else { + str += `${spaces}${isLastItem ? treeChars.corner : treeChars.tee}${treeChars.horizontal}${treeChars.horizontal}${nn} ${renderRange(item, skipCanvases, indent + 2)}`; + } + }); + // Keep snapshots stable by stripping trailing spaces before line breaks. + return str.replace(/[ \t]+\n/g, '\n'); +} diff --git a/__tests__/v4-helpers/i18n.tests.ts b/__tests__/v4-helpers/i18n.tests.ts new file mode 100644 index 0000000..b8c5756 --- /dev/null +++ b/__tests__/v4-helpers/i18n.tests.ts @@ -0,0 +1,154 @@ +// @ts-nocheck +/** + * @jest-environment node + */ + +import type { LanguageMap as InternationalString } from '@iiif/parser/presentation-4/types'; +import { describe, expect, test } from 'vitest'; +import compositeTest from '../../fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json'; +import delftExample from '../../fixtures/presentation-4/upgraded-from-p3/exhibitions--novieten.json'; +import { buildLocaleString, getAvailableLanguagesFromResource, getValue, iiifString } from '../../src/i18n'; + +describe('i18n helper', () => { + describe('buildLocaleString()', () => { + test('get value works on node', () => { + expect(getValue({ en: ['Testing a value'] })).toEqual('Testing a value'); + expect(getValue({ none: ['Testing a value'] })).toEqual('Testing a value'); + expect(getValue({ es: ['Testing a value'] })).toEqual('Testing a value'); + expect(getValue({ en: ['This value instead'], es: ['Testing a value'] })).toEqual('This value instead'); + expect(getValue({ es: ['Testing a value'], en: ['This value instead'] })).toEqual('This value instead'); + expect(getValue({ en: [''], nl: ['Testing a value'] })).toEqual('Testing a value'); + }); + + test('it can empty values', () => { + expect(buildLocaleString(null, 'none')).toEqual(''); + expect(buildLocaleString(undefined, 'none')).toEqual(''); + expect(buildLocaleString({}, 'none')).toEqual(''); + expect(buildLocaleString('', 'none')).toEqual(''); + }); + + test('it can match exact languages', () => { + expect(buildLocaleString({ none: ['A'] }, 'none')).toEqual('A'); + expect(buildLocaleString({ en: ['A'] }, 'en')).toEqual('A'); + expect(buildLocaleString({ 'en-GB': ['A'] }, 'en-GB')).toEqual('A'); + expect(buildLocaleString({ DIFF: ['_'], none: ['A'] }, 'none')).toEqual('A'); + expect(buildLocaleString({ en: ['A'], DIFF: ['_'] }, 'en')).toEqual('A'); + expect(buildLocaleString({ DIFF: ['_'], 'en-GB': ['A'] }, 'en-GB')).toEqual('A'); + }); + + test('it can match partial languages', () => { + expect(buildLocaleString({ en: ['A'], none: ['_'] }, 'en-GB')).toEqual('A'); + expect(buildLocaleString({ en: ['A'], none: ['_'] }, 'en-US')).toEqual('A'); + expect(buildLocaleString({ 'en-GB': ['A'], none: ['_'] }, 'en')).toEqual('A'); + expect(buildLocaleString({ 'en-US': ['A'], none: ['_'] }, 'en')).toEqual('A'); + }); + + test('wont match partial, if strict', () => { + expect( + buildLocaleString({ 'en-GB': ['A'], none: ['A'] }, 'en', { + strictFallback: true, + }) + ).toEqual('A'); + expect( + buildLocaleString({ 'en-US': ['A'], none: ['A'] }, 'en', { + strictFallback: true, + }) + ).toEqual('A'); + }); + + test('it can match fallback languages', () => { + expect( + buildLocaleString({ en: ['A'], none: ['_'] }, 'cy-GB', { + fallbackLanguages: ['en-GB'], + }) + ).toEqual('A'); + expect( + buildLocaleString({ en: ['_'], none: ['A'] }, 'cy-GB', { + fallbackLanguages: [], + }) + ).toEqual('A'); + expect( + buildLocaleString({ en: ['_'], none: ['A'], '@none': ['_'] }, 'cy-GB', { + fallbackLanguages: [], + }) + ).toEqual('A'); + expect( + buildLocaleString({ en: ['_'], '@none': ['A'] }, 'cy-GB', { + fallbackLanguages: [], + }) + ).toEqual('A'); + }); + + test('multiple values with separators', () => { + expect(buildLocaleString({ none: ['A', 'B'] }, 'none')).toEqual('A\nB'); + expect(buildLocaleString({ none: ['A', 'B'] }, 'none', { separator: '' })).toEqual('AB'); + expect(buildLocaleString({ none: ['A', 'B'] }, 'none', { separator: '
' })).toEqual('A
B'); + expect( + buildLocaleString({ none: ['A', 'B', 'C', 'D', 'E'] }, 'none', { + separator: ' ', + }) + ).toEqual('A B C D E'); + }); + }); + + describe('getAvailableLanguagesFromResource()', () => { + test('it can get languages from a resource', () => { + const found = getAvailableLanguagesFromResource({ + id: 'http://example.com/iiif/book1/canvas/p1', + type: 'Canvas', + label: { en: ['p. 1'], fr: ['p. 1'] }, + height: 1000, + width: 750, + }); + expect(found).toHaveLength(2); + expect(found).toContain('en'); + expect(found).toContain('fr'); + }); + + test('it can get languages from a resource with nested values', () => { + const found = getAvailableLanguagesFromResource(delftExample as any); + expect(found).toHaveLength(2); + expect(found).toContain('en'); + expect(found).toContain('nl'); + }); + + test('it will skip none languages', () => { + const found = getAvailableLanguagesFromResource({ + id: 'http://example.com/iiif/book1/canvas/p1', + type: 'Canvas', + label: { none: ['p. 1'], fr: ['p. 1'] }, + height: 1000, + width: 750, + }); + + expect(found).toHaveLength(1); + expect(found).not.toContain('none'); + expect(found).toContain('fr'); + }); + + test('it can get languages from a composite resource', () => { + const found = getAvailableLanguagesFromResource(compositeTest as any); + + expect(found).toHaveLength(2); + expect(found).toContain('en'); + expect(found).toContain('fr'); + }); + }); + + describe('String concat', () => { + test('Simple case with single language', () => { + const label = { en: ['An english label'] }; + const summary = { en: ['An english summary'] }; + + expect(iiifString`Label: ${label}, Summary: ${summary}`).toEqual( + 'Label: An english label, Summary: An english summary' + ); + }); + + test('Simple case with preferred language', () => { + const label: InternationalString = { fr: ['A French label'] }; + + expect(iiifString`Label: ${label.en || label}`).toEqual('Label: A French label'); + }); + }); +}); diff --git a/__tests__/v4-helpers/nav-date.tests.ts b/__tests__/v4-helpers/nav-date.tests.ts new file mode 100644 index 0000000..9221447 --- /dev/null +++ b/__tests__/v4-helpers/nav-date.tests.ts @@ -0,0 +1,300 @@ +// @ts-nocheck +import type { Collection } from '@iiif/parser/presentation-4/types'; +import { createDateNavigation } from '../../src/nav-date'; +import { Vault4 } from '../../src/vault/vault4'; + +function renderTreeAsAscii(navDates: any[]) { + const lines: string[] = []; + for (const century of navDates) { + lines.push(`${century.label.en[0]}`); + if (!century.items) { + lines.push(` ${century.label.en[0]}`); + continue; + } + for (const decade of century.items) { + if (!decade.items) { + lines.push(` ${decade.label.en[0]}`); + continue; + } + lines.push(` ${decade.label.en[0]}`); + for (const year of decade.items) { + if (!year.items) { + lines.push(` ${year.label.en[0]}`); + continue; + } + lines.push(` ${year.label.en[0]}`); + for (const month of year.items) { + if (!month.items) { + lines.push(` ${month.label.en[0]}`); + continue; + } + lines.push(` ${month.label.en[0]}`); + for (const day of month.items) { + if (!day.items) { + lines.push(` ${day.label.en[0]}`); + continue; + } + lines.push(` ${day.label.en[0]}`); + for (const item of day.items) { + if (!item.label) continue; + lines.push(` ${item.label.en[0]} (${item.navDate})`); + } + } + } + } + } + } + return lines.join('\n'); +} + +describe('nav-date helper', () => { + describe('createDateNavigation', () => { + test('should create a navigation tree', () => { + const collection: Collection = { + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: 'https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json', + type: 'Collection', + label: { + en: ['Chesapeake and Ohio Canal map and guide pamphlets'], + }, + thumbnail: [ + { + id: 'https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg', + type: 'Image', + format: 'image/jpeg', + height: 300, + width: 221, + service: [ + { + id: 'https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674', + profile: 'level1', + type: 'ImageService3', + }, + ], + }, + ], + items: [ + { + id: 'https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json', + type: 'Manifest', + label: { + en: ['1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide'], + }, + navDate: '1986-01-01T00:00:00+00:00', + }, + { + id: 'https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json', + type: 'Manifest', + label: { + en: ['1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide'], + }, + navDate: '1987-01-01T00:00:00+00:00', + }, + ], + } as any; + const vault = new Vault4(); + const col = vault.loadSync(collection.id, collection); + + const auto = createDateNavigation(vault, col as any); + expect(renderTreeAsAscii(auto)).toMatchInlineSnapshot(` + "1986 + January + Wed Jan 01 1986 + 1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide + 1987 + January + Thu Jan 01 1987 + 1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide" + `); + + const byCentury = createDateNavigation(vault, col as any, 'century'); + expect(renderTreeAsAscii(byCentury)).toMatchInlineSnapshot(` + "1900 - 1999 + 1980 - 1989 + 1986 + January + Wed Jan 01 1986 + 1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide (1986-01-01T00:00:00+00:00) + 1987 + January + Thu Jan 01 1987 + 1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide (1987-01-01T00:00:00+00:00)" + `); + + const byDecade = createDateNavigation(vault, col as any, 'decade'); + expect(renderTreeAsAscii(byDecade)).toMatchInlineSnapshot(` + "1980 - 1989 + 1986 + January + Wed Jan 01 1986 + 1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide + 1987 + January + Thu Jan 01 1987 + 1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide" + `); + + const byYear = createDateNavigation(vault, col as any, 'year'); + expect(renderTreeAsAscii(byYear)).toMatchInlineSnapshot(` + "1986 + January + Wed Jan 01 1986 + 1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide + 1987 + January + Thu Jan 01 1987 + 1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide" + `); + + const byMonth = createDateNavigation(vault, col as any, 'month'); + expect(renderTreeAsAscii(byMonth)).toMatchInlineSnapshot(` + "January 1986 + Wed Jan 01 1986 + 1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide + January 1987 + Thu Jan 01 1987 + 1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide" + `); + + const byDay = createDateNavigation(vault, col as any, 'day'); + expect(renderTreeAsAscii(byDay)).toMatchInlineSnapshot(` + "Wed Jan 01 1986 + 1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide + Thu Jan 01 1987 + 1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide" + `); + + // Final of the full count + expect(byCentury).toMatchInlineSnapshot(` + [ + { + "count": 2, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json/century/1900", + "items": [ + { + "count": 2, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json/decade/1980", + "items": [ + { + "count": 1, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json/year/1986", + "items": [ + { + "count": 1, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json/month/1986/1", + "items": [ + { + "count": 1, + "day": 1, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json/day/1986/1/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json", + "label": { + "en": [ + "1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + ], + }, + "navDate": "1986-01-01T00:00:00+00:00", + "type": "Manifest", + }, + ], + "label": { + "en": [ + "Wed Jan 01 1986", + ], + }, + "type": "day", + }, + ], + "label": { + "en": [ + "January", + ], + }, + "month": 0, + "type": "month", + }, + ], + "label": { + "en": [ + "1986", + ], + }, + "type": "year", + "year": 1986, + }, + { + "count": 1, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json/year/1987", + "items": [ + { + "count": 1, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json/month/1987/1", + "items": [ + { + "count": 1, + "day": 1, + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json/day/1987/1/1", + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json", + "label": { + "en": [ + "1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide", + ], + }, + "navDate": "1987-01-01T00:00:00+00:00", + "type": "Manifest", + }, + ], + "label": { + "en": [ + "Thu Jan 01 1987", + ], + }, + "type": "day", + }, + ], + "label": { + "en": [ + "January", + ], + }, + "month": 0, + "type": "month", + }, + ], + "label": { + "en": [ + "1987", + ], + }, + "type": "year", + "year": 1987, + }, + ], + "label": { + "en": [ + "1980 - 1989", + ], + }, + "type": "decade", + "yearEnd": 1989, + "yearStart": 1980, + }, + ], + "label": { + "en": [ + "1900 - 1999", + ], + }, + "type": "century", + "yearEnd": 1999, + "yearStart": 1900, + }, + ] + `); + }); + }); +}); diff --git a/__tests__/v4-helpers/paged-collections.tests.ts b/__tests__/v4-helpers/paged-collections.tests.ts new file mode 100644 index 0000000..fca47fd --- /dev/null +++ b/__tests__/v4-helpers/paged-collections.tests.ts @@ -0,0 +1,325 @@ +// @ts-nocheck +import { describe, expect, test } from 'vitest'; +import { Vault4 } from '../../src/vault/vault4'; + +describe('Paged collections', () => { + test('Single page of collections', async () => { + const collection = { + '@context': 'https://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/collection', + type: 'Collection', + label: { en: ['Example Collection'] }, + first: { + id: 'https://example.org/collection?page=1', + type: 'Collection', + }, + total: 3, + }; + + const collectionPage1 = { + '@context': 'https://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/collection', + type: 'Collection', + label: { en: ['Example Collection Page 1'] }, + next: { id: 'https://example.org/collection?page=2', type: 'Collection' }, + items: [ + { + '@context': 'https://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/collection/item1', + type: 'Manifest', + label: { en: ['Example Manifest 1'] }, + thumbnail: 'https://example.org/collection/item1/thumbnail', + }, + { + '@context': 'https://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/collection/item2', + type: 'Manifest', + label: { en: ['Example Manifest 2'] }, + thumbnail: 'https://example.org/collection/item2/thumbnail', + }, + ], + }; + + const collectionPage2 = { + '@context': 'https://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/collection', + type: 'Collection', + label: { en: ['Example Collection Page 2'] }, + prev: { id: 'https://example.org/collection?page=1', type: 'Collection' }, + items: [ + { + '@context': 'https://iiif.io/api/presentation/4/context.json', + id: 'https://example.org/collection/item3', + type: 'Manifest', + label: { en: ['Example Manifest 3'] }, + thumbnail: 'https://example.org/collection/item3/thumbnail', + }, + ], + }; + + const vault = new Vault4(); + + // 1. Load collection + vault.loadCollectionSync('https://example.org/collection', collection); + + const fullCollection = vault.get('https://example.org/collection'); + expect(fullCollection.first).toEqual({ + id: 'https://example.org/collection?page=1', + type: 'Collection', + }); + + // 2. We check if its a paginated collection + // + const pagination = vault.getPaginationState({ + id: 'https://example.org/collection', + type: 'Collection', + }); + + expect(pagination).toMatchInlineSnapshot(` + { + "currentLength": 0, + "currentPage": null, + "currentPageIndex": null, + "isFetching": false, + "isFullyLoaded": false, + "next": { + "id": "https://example.org/collection?page=1", + "type": "Collection", + }, + "page": 1, + "pages": [], + "previous": null, + "totalItems": 3, + } + `); + const hasNextPage = pagination?.isFullyLoaded === false; + + expect(hasNextPage).toBe(true); + // + // 3. Load the next page. + // + const [state1, page1] = await vault.loadNextPage( + { id: 'https://example.org/collection', type: 'Collection' }, + collectionPage1 + ); + // ^ single page returned + + expect(state1).toMatchInlineSnapshot(` + { + "currentLength": 2, + "currentPage": "https://example.org/collection?page=1", + "currentPageIndex": 0, + "error": null, + "isFetching": false, + "isFullyLoaded": false, + "next": "https://example.org/collection?page=2", + "page": 1, + "pages": [ + { + "id": "https://example.org/collection?page=1", + "order": 0, + "pageLength": 2, + "startIndex": 0, + "type": "Collection", + }, + ], + "previous": null, + "totalItems": 3, + } + `); + + expect(page1).toMatchInlineSnapshot(` + { + "@context": "http://iiif.io/api/presentation/4/context.json", + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://example.org/collection?page=1", + "iiif-parser:hasPart": [ + { + "id": "https://example.org/collection?page=1", + "iiif-parser:partOf": "https://example.org/collection?page=1", + "type": "Collection", + }, + ], + "items": [ + { + "id": "https://example.org/collection/item1", + "type": "Manifest", + }, + { + "id": "https://example.org/collection/item2", + "type": "Manifest", + }, + ], + "label": { + "en": [ + "Example Collection Page 1", + ], + }, + "metadata": [], + "next": { + "id": "https://example.org/collection?page=2", + "type": "Collection", + }, + "partOf": [], + "provider": [], + "rendering": [], + "seeAlso": [], + "service": [], + "services": [], + "summary": null, + "thumbnail": [], + "type": "Collection", + } + `); + + const fullCollectionWithPage1 = vault.get({ + id: 'https://example.org/collection', + type: 'Collection', + }); + // ^ collection pages are appended to the original collection + + expect(fullCollectionWithPage1.items).toHaveLength(2); + + // 4. Load next page. + const [state2, page2] = await vault.loadNextPage( + { id: 'https://example.org/collection', type: 'Collection' }, + collectionPage2 + ); + + expect(state2).toMatchInlineSnapshot(` + { + "currentLength": 3, + "currentPage": "https://example.org/collection?page=2", + "currentPageIndex": 1, + "error": null, + "isFetching": false, + "isFullyLoaded": true, + "next": null, + "page": 2, + "pages": [ + { + "id": "https://example.org/collection?page=1", + "order": 0, + "pageLength": 2, + "startIndex": 0, + "type": "Collection", + }, + { + "id": "https://example.org/collection?page=2", + "order": 1, + "pageLength": 1, + "startIndex": 2, + "type": "Collection", + }, + ], + "previous": "https://example.org/collection?page=1", + "totalItems": 3, + } + `); + + // 5. Check the full collection length again. + const fullCollectionWithPage2 = vault.get({ + id: 'https://example.org/collection', + type: 'Collection', + }); + expect(fullCollectionWithPage2.items).toHaveLength(3); + + // 4. Get all loaded pages. + // + const paginationFinal = vault.getPaginationState({ + id: 'https://example.org/collection', + type: 'Collection', + })!; + const allPages = vault.get(paginationFinal.pages); + // ^ Array of collections. + + expect(allPages).toMatchInlineSnapshot(` + [ + { + "@context": "http://iiif.io/api/presentation/4/context.json", + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://example.org/collection?page=1", + "iiif-parser:hasPart": [ + { + "id": "https://example.org/collection?page=1", + "iiif-parser:partOf": "https://example.org/collection?page=1", + "type": "Collection", + }, + ], + "items": [ + { + "id": "https://example.org/collection/item1", + "type": "Manifest", + }, + { + "id": "https://example.org/collection/item2", + "type": "Manifest", + }, + ], + "label": { + "en": [ + "Example Collection Page 1", + ], + }, + "metadata": [], + "next": { + "id": "https://example.org/collection?page=2", + "type": "Collection", + }, + "partOf": [], + "provider": [], + "rendering": [], + "seeAlso": [], + "service": [], + "services": [], + "summary": null, + "thumbnail": [], + "type": "Collection", + }, + { + "@context": "http://iiif.io/api/presentation/4/context.json", + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://example.org/collection?page=2", + "iiif-parser:hasPart": [ + { + "id": "https://example.org/collection?page=2", + "iiif-parser:partOf": "https://example.org/collection?page=2", + "type": "Collection", + }, + ], + "items": [ + { + "id": "https://example.org/collection/item3", + "type": "Manifest", + }, + ], + "label": { + "en": [ + "Example Collection Page 2", + ], + }, + "metadata": [], + "partOf": [], + "prev": { + "id": "https://example.org/collection?page=1", + "type": "Collection", + }, + "provider": [], + "rendering": [], + "seeAlso": [], + "service": [], + "services": [], + "summary": null, + "thumbnail": [], + "type": "Collection", + }, + ] + `); + }); +}); diff --git a/__tests__/v4-helpers/paintable-helper.tests.ts b/__tests__/v4-helpers/paintable-helper.tests.ts new file mode 100644 index 0000000..c00e3a6 --- /dev/null +++ b/__tests__/v4-helpers/paintable-helper.tests.ts @@ -0,0 +1,165 @@ +// @ts-nocheck +import invariant from 'tiny-invariant'; +import { describe, expect, test } from 'vitest'; +import choice from '../../fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json'; +import composite from '../../fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json'; +import multimedia from '../../fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json'; +import ldmax from '../../fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json'; +import { createPaintingAnnotationsHelper } from '../../src/painting-annotations'; +import { Vault4 } from '../../src/vault/vault4'; + +describe('getPaintables', () => { + test('extracting composite images', async () => { + const vault = new Vault4(); + const manifest = await vault.loadManifest(choice.id, choice); + + expect(manifest).to.exist; + invariant(manifest); + }); + + test('extracting choice', async () => { + const vault = new Vault4(); + const manifest = await vault.loadManifest(composite.id, composite); + + expect(manifest).to.exist; + invariant(manifest); + + const canvases = vault.get(manifest.items); + const painting = createPaintingAnnotationsHelper(vault); + const paintables = painting.getPaintables(canvases[0]); + + expect(paintables.items).toHaveLength(2); + expect(paintables.items[0].resource.id).toEqual( + 'https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux/full/max/0/default.jpg' + ); + expect(paintables.items[1].resource.id).toEqual( + 'https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux_miniature/full/max/0/native.jpg' + ); + }); + + test('multimedia', async () => { + const vault = new Vault4(); + const manifest = await vault.loadManifest(multimedia.id, multimedia); + + expect(manifest).to.exist; + invariant(manifest); + + const canvases = vault.get(manifest.items); + const painting = createPaintingAnnotationsHelper(vault); + const paintables = painting.getPaintables(canvases[0]); + + expect(paintables.items).toHaveLength(2); + expect(paintables.items[0].resource.id).toMatchInlineSnapshot( + `"https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/max/0/default.jpg"` + ); + expect(paintables.items[1].resource.id).toMatchInlineSnapshot( + `"https://fixtures.iiif.io/video/indiana/donizetti-elixir/vae0637_accessH264_low_act_1.mp4"` + ); + }); + + test('ldmax', async () => { + const vault = new Vault4(); + const manifest = await vault.loadManifest(ldmax.id, ldmax); + + expect(manifest).to.exist; + invariant(manifest); + + const canvases = vault.get(manifest.items); + const painting = createPaintingAnnotationsHelper(vault); + const paintables = painting.getPaintables(canvases[0]); + + expect(paintables).toMatchInlineSnapshot(` + { + "allChoices": null, + "choice": null, + "items": [ + { + "annotation": { + "annotations": [], + "behavior": [], + "body": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/body", + "type": "ContentResource", + }, + "homepage": [], + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/annotation/image", + "iiif-parser:hasPart": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/annotation/image", + "iiif-parser:partOf": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/annotation", + "type": "Annotation", + }, + ], + "label": null, + "metadata": [], + "motivation": [ + "painting", + ], + "partOf": [], + "provider": [], + "rendering": [], + "seeAlso": [], + "service": [], + "services": [], + "summary": null, + "target": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1", + "type": "Canvas", + }, + "thumbnail": [], + "type": "Annotation", + }, + "annotationId": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/annotation/image", + "resource": { + "action": [], + "annotations": [], + "behavior": [], + "format": "image/jpeg", + "homepage": [], + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/body", + "iiif-parser:hasPart": [ + { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/body", + "iiif-parser:partOf": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1/annotation/image", + "type": "Image", + }, + ], + "items": [], + "label": null, + "language": [], + "metadata": [], + "partOf": [], + "provider": [], + "provides": [], + "rendering": [], + "seeAlso": [], + "selector": [], + "service": [ + { + "id": "https://ndeiiif.adlibhosting.com/iiif/3/Q4350196.180", + "profile": "level3", + "type": "ImageService3", + }, + ], + "services": [], + "summary": null, + "thumbnail": [], + "transform": [], + "type": "Image", + "value": null, + }, + "selector": null, + "target": { + "id": "https://n2t.net/ark:/67039/a5b1a9b3dad04c24b01bc7415beb8b71/iiif.json#/canvas/1", + "type": "Canvas", + }, + "type": "image", + }, + ], + "types": [ + "image", + ], + } + `); + }); +}); diff --git a/__tests__/v4-helpers/parse-selector.tests.ts b/__tests__/v4-helpers/parse-selector.tests.ts new file mode 100644 index 0000000..813828b --- /dev/null +++ b/__tests__/v4-helpers/parse-selector.tests.ts @@ -0,0 +1,2796 @@ +// @ts-nocheck +import type { Selector } from '@iiif/parser/presentation-4/types'; +import { JSDOM } from 'jsdom'; +import { describe, expect, test } from 'vitest'; +import ghentChoices from '../../fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json'; +import { expandTarget } from '../../src'; +import { parseSelector } from '../../src/annotation-targets/parse-selector'; + +describe('parse selector', () => { + describe('SVG Selectors', () => { + test('Parsing a rectangle selector', () => { + expect( + parseSelector({ + type: 'SvgSelector', + value: + '', + }) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 100, + 100, + ], + [ + 400, + 100, + ], + [ + 400, + 400, + ], + [ + 100, + 400, + ], + [ + 100, + 100, + ], + ], + "spatial": { + "height": 300, + "unit": "pixel", + "width": 300, + "x": 100, + "y": 100, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "rect", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 100, + 100, + ], + [ + 400, + 100, + ], + [ + 400, + 400, + ], + [ + 100, + 400, + ], + [ + 100, + 100, + ], + ], + "spatial": { + "height": 300, + "unit": "pixel", + "width": 300, + "x": 100, + "y": 100, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "rect", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing svg with temporal element', () => { + expect( + parseSelector([ + { + type: 'SvgSelector', + value: + '', + }, + { + type: 'FragmentSelector', + conformsTo: 'http://www.w3.org/TR/media-frags/', + value: 't=10.46,10.46', + }, + ]) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": {}, + "points": [ + [ + 3069, + 1586, + ], + [ + 3069, + 1616, + ], + [ + 3100, + 1586, + ], + [ + 3100, + 1616, + ], + [ + 3069, + 1586, + ], + ], + "spatial": { + "height": 30, + "unit": "pixel", + "width": 31, + "x": 3069, + "y": 1586, + }, + "style": undefined, + "svg": "", + "svgShape": "polygon", + "temporal": { + "endTime": 10.46, + "startTime": 10.46, + }, + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": {}, + "points": [ + [ + 3069, + 1586, + ], + [ + 3069, + 1616, + ], + [ + 3100, + 1586, + ], + [ + 3100, + 1616, + ], + [ + 3069, + 1586, + ], + ], + "spatial": { + "height": 30, + "unit": "pixel", + "width": 31, + "x": 3069, + "y": 1586, + }, + "style": undefined, + "svg": "", + "svgShape": "polygon", + "temporal": { + "endTime": 10.46, + "startTime": 10.46, + }, + "type": "SvgSelector", + }, + { + "temporal": { + "endTime": 10.46, + "startTime": 10.46, + }, + "type": "TemporalSelector", + }, + ], + } + `); + }); + + test('Parsing svg without size', () => { + expect( + parseSelector({ + type: 'SvgSelector', + value: + '', + }) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#FF0055", + "borderColor": "#FF0055", + "borderWidth": "1", + }, + "points": [ + [ + 2596, + 6948, + ], + [ + 2571, + 6952, + ], + [ + 2597, + 6959, + ], + [ + 2616, + 6953, + ], + [ + 2596, + 6948, + ], + [ + 2596, + 6948, + ], + ], + "spatial": { + "height": 11, + "unit": "pixel", + "width": 45, + "x": 2571, + "y": 6948, + }, + "style": { + "fill": "#FF0055", + "fillOpacity": 0.1, + "stroke": "#FF0055", + "strokeWidth": "1", + }, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#FF0055", + "borderColor": "#FF0055", + "borderWidth": "1", + }, + "points": [ + [ + 2596, + 6948, + ], + [ + 2571, + 6952, + ], + [ + 2597, + 6959, + ], + [ + 2616, + 6953, + ], + [ + 2596, + 6948, + ], + [ + 2596, + 6948, + ], + ], + "spatial": { + "height": 11, + "unit": "pixel", + "width": 45, + "x": 2571, + "y": 6948, + }, + "style": { + "fill": "#FF0055", + "fillOpacity": 0.1, + "stroke": "#FF0055", + "strokeWidth": "1", + }, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing a circle selector', () => { + expect( + parseSelector({ + type: 'SvgSelector', + value: + '', + }) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 373, + 199.83333, + ], + [ + 369.77677110823635, + 230.50030439561948, + ], + [ + 360.2479550022836, + 259.82698485368053, + ], + [ + 344.8300066703048, + 286.5316547131398, + ], + [ + 324.1967644379316, + 309.4471917579157, + ], + [ + 299.25, + 327.5720770582047, + ], + [ + 271.0800066703047, + 340.11416615353517, + ], + [ + 240.9179483319789, + 346.5253095668203, + ], + [ + 210.08205166802114, + 346.5253095668203, + ], + [ + 179.91999332969527, + 340.11416615353517, + ], + [ + 151.75000000000003, + 327.5720770582047, + ], + [ + 126.80323556206841, + 309.4471917579157, + ], + [ + 106.16999332969527, + 286.5316547131398, + ], + [ + 90.75204499771638, + 259.82698485368053, + ], + [ + 81.22322889176365, + 230.50030439561948, + ], + [ + 78, + 199.83333000000002, + ], + [ + 81.22322889176365, + 169.16635560438053, + ], + [ + 90.75204499771633, + 139.8396751463195, + ], + [ + 106.16999332969525, + 113.13500528686022, + ], + [ + 126.80323556206838, + 90.21946824208437, + ], + [ + 151.74999999999994, + 72.09458294179531, + ], + [ + 179.91999332969525, + 59.55249384646484, + ], + [ + 210.08205166802114, + 53.14135043317967, + ], + [ + 240.9179483319788, + 53.14135043317967, + ], + [ + 271.0800066703047, + 59.55249384646481, + ], + [ + 299.25, + 72.0945829417953, + ], + [ + 324.1967644379315, + 90.21946824208429, + ], + [ + 344.8300066703047, + 113.13500528686016, + ], + [ + 360.2479550022837, + 139.83967514631945, + ], + [ + 369.7767711082363, + 169.1663556043804, + ], + [ + 373, + 199.83332999999996, + ], + ], + "spatial": { + "height": 293.3839591336406, + "unit": "pixel", + "width": 295, + "x": 78, + "y": 53.14135043317967, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "circle", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 373, + 199.83333, + ], + [ + 369.77677110823635, + 230.50030439561948, + ], + [ + 360.2479550022836, + 259.82698485368053, + ], + [ + 344.8300066703048, + 286.5316547131398, + ], + [ + 324.1967644379316, + 309.4471917579157, + ], + [ + 299.25, + 327.5720770582047, + ], + [ + 271.0800066703047, + 340.11416615353517, + ], + [ + 240.9179483319789, + 346.5253095668203, + ], + [ + 210.08205166802114, + 346.5253095668203, + ], + [ + 179.91999332969527, + 340.11416615353517, + ], + [ + 151.75000000000003, + 327.5720770582047, + ], + [ + 126.80323556206841, + 309.4471917579157, + ], + [ + 106.16999332969527, + 286.5316547131398, + ], + [ + 90.75204499771638, + 259.82698485368053, + ], + [ + 81.22322889176365, + 230.50030439561948, + ], + [ + 78, + 199.83333000000002, + ], + [ + 81.22322889176365, + 169.16635560438053, + ], + [ + 90.75204499771633, + 139.8396751463195, + ], + [ + 106.16999332969525, + 113.13500528686022, + ], + [ + 126.80323556206838, + 90.21946824208437, + ], + [ + 151.74999999999994, + 72.09458294179531, + ], + [ + 179.91999332969525, + 59.55249384646484, + ], + [ + 210.08205166802114, + 53.14135043317967, + ], + [ + 240.9179483319788, + 53.14135043317967, + ], + [ + 271.0800066703047, + 59.55249384646481, + ], + [ + 299.25, + 72.0945829417953, + ], + [ + 324.1967644379315, + 90.21946824208429, + ], + [ + 344.8300066703047, + 113.13500528686016, + ], + [ + 360.2479550022837, + 139.83967514631945, + ], + [ + 369.7767711082363, + 169.1663556043804, + ], + [ + 373, + 199.83332999999996, + ], + ], + "spatial": { + "height": 293.3839591336406, + "unit": "pixel", + "width": 295, + "x": 78, + "y": 53.14135043317967, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "circle", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing an ellipse selector', () => { + expect( + parseSelector({ + type: 'SvgSelector', + value: + '', + }) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 746, + 77.83333, + ], + [ + 738.4281436542635, + 84.38254826075942, + ], + [ + 716.0435010731612, + 90.64553425688771, + ], + [ + 679.8243885509194, + 96.3485654472129, + ], + [ + 631.3537551033444, + 101.24239200253791, + ], + [ + 572.75, + 105.11313021920982, + ], + [ + 506.5743885509193, + 107.79161026329734, + ], + [ + 435.71911252224197, + 109.16076970410062, + ], + [ + 363.2808874777581, + 109.1607697041006, + ], + [ + 292.42561144908075, + 107.79161026329734, + ], + [ + 226.25000000000006, + 105.11313021920982, + ], + [ + 167.6462448966557, + 101.24239200253793, + ], + [ + 119.17561144908075, + 96.3485654472129, + ], + [ + 82.95649892683878, + 90.6455342568877, + ], + [ + 60.57185634573631, + 84.38254826075942, + ], + [ + 53, + 77.83333, + ], + [ + 60.57185634573631, + 71.28411173924059, + ], + [ + 82.95649892683872, + 65.02112574311231, + ], + [ + 119.17561144908069, + 59.3180945527871, + ], + [ + 167.64624489665556, + 54.424267997462096, + ], + [ + 226.24999999999983, + 50.5535297807902, + ], + [ + 292.42561144908063, + 47.875049736702664, + ], + [ + 363.28088747775786, + 46.5058902958994, + ], + [ + 435.7191125222421, + 46.50589029589939, + ], + [ + 506.57438855091925, + 47.875049736702664, + ], + [ + 572.75, + 50.553529780790186, + ], + [ + 631.3537551033445, + 54.424267997462096, + ], + [ + 679.8243885509191, + 59.318094552787095, + ], + [ + 716.0435010731612, + 65.0211257431123, + ], + [ + 738.4281436542635, + 71.28411173924057, + ], + [ + 746, + 77.83332999999999, + ], + ], + "spatial": { + "height": 62.654879408201225, + "unit": "pixel", + "width": 693, + "x": 53, + "y": 46.50589029589939, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "ellipse", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 746, + 77.83333, + ], + [ + 738.4281436542635, + 84.38254826075942, + ], + [ + 716.0435010731612, + 90.64553425688771, + ], + [ + 679.8243885509194, + 96.3485654472129, + ], + [ + 631.3537551033444, + 101.24239200253791, + ], + [ + 572.75, + 105.11313021920982, + ], + [ + 506.5743885509193, + 107.79161026329734, + ], + [ + 435.71911252224197, + 109.16076970410062, + ], + [ + 363.2808874777581, + 109.1607697041006, + ], + [ + 292.42561144908075, + 107.79161026329734, + ], + [ + 226.25000000000006, + 105.11313021920982, + ], + [ + 167.6462448966557, + 101.24239200253793, + ], + [ + 119.17561144908075, + 96.3485654472129, + ], + [ + 82.95649892683878, + 90.6455342568877, + ], + [ + 60.57185634573631, + 84.38254826075942, + ], + [ + 53, + 77.83333, + ], + [ + 60.57185634573631, + 71.28411173924059, + ], + [ + 82.95649892683872, + 65.02112574311231, + ], + [ + 119.17561144908069, + 59.3180945527871, + ], + [ + 167.64624489665556, + 54.424267997462096, + ], + [ + 226.24999999999983, + 50.5535297807902, + ], + [ + 292.42561144908063, + 47.875049736702664, + ], + [ + 363.28088747775786, + 46.5058902958994, + ], + [ + 435.7191125222421, + 46.50589029589939, + ], + [ + 506.57438855091925, + 47.875049736702664, + ], + [ + 572.75, + 50.553529780790186, + ], + [ + 631.3537551033445, + 54.424267997462096, + ], + [ + 679.8243885509191, + 59.318094552787095, + ], + [ + 716.0435010731612, + 65.0211257431123, + ], + [ + 738.4281436542635, + 71.28411173924057, + ], + [ + 746, + 77.83332999999999, + ], + ], + "spatial": { + "height": 62.654879408201225, + "unit": "pixel", + "width": 693, + "x": 53, + "y": 46.50589029589939, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "ellipse", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing a cubic bézier selector', () => { + expect( + parseSelector({ + type: 'SvgSelector', + value: + '', + }) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 200.00001, + 83.33333, + ], + [ + 189.0497197575205, + 92.24393388115851, + ], + [ + 178.805670397455, + 100.43438771718232, + ], + [ + 169.23560567208767, + 107.94149345372949, + ], + [ + 160.30805901686495, + 114.80115206593804, + ], + [ + 151.99235355030802, + 121.0483635582994, + ], + [ + 144.25860207390545, + 126.71722696450647, + ], + [ + 137.07770707198566, + 131.84094034726937, + ], + [ + 130.4213607115608, + 136.45180079809205, + ], + [ + 123.61277681832797, + 141.00964477236283, + ], + [ + 113.97516170198546, + 147.21988073927787, + ], + [ + 105.3319030967066, + 152.52755936098924, + ], + [ + 97.61454532645207, + 157.00342065751718, + ], + [ + 90.75699356146032, + 160.71576500806725, + ], + [ + 84.69551381892782, + 163.7304531473643, + ], + [ + 79.36873296390102, + 166.11090616086344, + ], + [ + 71.80644334525853, + 168.98320166402587, + ], + [ + 64.26398773055817, + 171.19491342158602, + ], + [ + 58.37447362500575, + 172.16184015700756, + ], + [ + 53.9520687744154, + 172.04690989659434, + ], + [ + 47.30957775492126, + 168.43492134596588, + ], + [ + 46.3386630179506, + 160.54259107232966, + ], + [ + 49.202844446593296, + 153.2402160926003, + ], + [ + 53.180748764448865, + 147.44703936037027, + ], + [ + 54.9495899559282, + 145.39344791460775, + ], + [ + 56.8774788252341, + 143.41892437969898, + ], + [ + 58.97158482533759, + 141.53028695153603, + ], + [ + 61.23921332869881, + 139.73448309529437, + ], + [ + 63.68780562697626, + 138.0385895443266, + ], + [ + 66.32493893077297, + 136.44981229919782, + ], + [ + 69.1535844240032, + 134.9907736654309, + ], + [ + 72.10941134425099, + 133.8117524942583, + ], + [ + 75.17451320029508, + 132.9671061358115, + ], + [ + 78.35180398922122, + 132.47987074174844, + ], + [ + 81.64425923662893, + 132.3735689136763, + ], + [ + 85.0549159970002, + 132.6722097014267, + ], + [ + 88.84621539639582, + 133.4959058421928, + ], + [ + 93.13397532372831, + 135.35476109533968, + ], + [ + 97.37963547338721, + 138.3262959001408, + ], + [ + 101.57393111066656, + 142.48205447480854, + ], + [ + 105.70739342857802, + 147.895156883028, + ], + [ + 111.09015634579525, + 157.925328682147, + ], + [ + 115.93172618217102, + 172.10486670209932, + ], + [ + 119.94023, + 190.33333, + ], + ], + "spatial": { + "height": 106.99999999999999, + "unit": "pixel", + "width": 153.6613469820494, + "x": 46.3386630179506, + "y": 83.33333, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "path", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 200.00001, + 83.33333, + ], + [ + 189.0497197575205, + 92.24393388115851, + ], + [ + 178.805670397455, + 100.43438771718232, + ], + [ + 169.23560567208767, + 107.94149345372949, + ], + [ + 160.30805901686495, + 114.80115206593804, + ], + [ + 151.99235355030802, + 121.0483635582994, + ], + [ + 144.25860207390545, + 126.71722696450647, + ], + [ + 137.07770707198566, + 131.84094034726937, + ], + [ + 130.4213607115608, + 136.45180079809205, + ], + [ + 123.61277681832797, + 141.00964477236283, + ], + [ + 113.97516170198546, + 147.21988073927787, + ], + [ + 105.3319030967066, + 152.52755936098924, + ], + [ + 97.61454532645207, + 157.00342065751718, + ], + [ + 90.75699356146032, + 160.71576500806725, + ], + [ + 84.69551381892782, + 163.7304531473643, + ], + [ + 79.36873296390102, + 166.11090616086344, + ], + [ + 71.80644334525853, + 168.98320166402587, + ], + [ + 64.26398773055817, + 171.19491342158602, + ], + [ + 58.37447362500575, + 172.16184015700756, + ], + [ + 53.9520687744154, + 172.04690989659434, + ], + [ + 47.30957775492126, + 168.43492134596588, + ], + [ + 46.3386630179506, + 160.54259107232966, + ], + [ + 49.202844446593296, + 153.2402160926003, + ], + [ + 53.180748764448865, + 147.44703936037027, + ], + [ + 54.9495899559282, + 145.39344791460775, + ], + [ + 56.8774788252341, + 143.41892437969898, + ], + [ + 58.97158482533759, + 141.53028695153603, + ], + [ + 61.23921332869881, + 139.73448309529437, + ], + [ + 63.68780562697626, + 138.0385895443266, + ], + [ + 66.32493893077297, + 136.44981229919782, + ], + [ + 69.1535844240032, + 134.9907736654309, + ], + [ + 72.10941134425099, + 133.8117524942583, + ], + [ + 75.17451320029508, + 132.9671061358115, + ], + [ + 78.35180398922122, + 132.47987074174844, + ], + [ + 81.64425923662893, + 132.3735689136763, + ], + [ + 85.0549159970002, + 132.6722097014267, + ], + [ + 88.84621539639582, + 133.4959058421928, + ], + [ + 93.13397532372831, + 135.35476109533968, + ], + [ + 97.37963547338721, + 138.3262959001408, + ], + [ + 101.57393111066656, + 142.48205447480854, + ], + [ + 105.70739342857802, + 147.895156883028, + ], + [ + 111.09015634579525, + 157.925328682147, + ], + [ + 115.93172618217102, + 172.10486670209932, + ], + [ + 119.94023, + 190.33333, + ], + ], + "spatial": { + "height": 106.99999999999999, + "unit": "pixel", + "width": 153.6613469820494, + "x": 46.3386630179506, + "y": 83.33333, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "path", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing a quadratic bézier selector', () => { + expect( + parseSelector({ + type: 'SvgSelector', + value: + '', + }) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 200.00001, + 83.33333, + ], + [ + 162.4534128906872, + 113.44052265292322, + ], + [ + 130.23963379446013, + 137.53241475664169, + ], + [ + 103.07514493892985, + 155.9444151903508, + ], + [ + 80.6823522931036, + 169.00491330697372, + ], + [ + 62.78959556984875, + 177.0352789297825, + ], + [ + 49.13114822877719, + 180.3498623484449, + ], + [ + 39.44721747962866, + 179.25599431438627, + ], + [ + 33.48394428625797, + 174.0539860353251, + ], + [ + 30.99340337134864, + 165.03712916881153, + ], + [ + 31.733603222011542, + 152.49169581455482, + ], + [ + 35.46848609646122, + 136.69693850527307, + ], + [ + 41.96792803201417, + 117.9250901957326, + ], + [ + 51.00773885471672, + 96.44136424955366, + ], + [ + 62.36966219099256, + 72.50395442325019, + ], + [ + 75.84137548180844, + 46.36403484681894, + ], + [ + 91.21649000000001, + 18.26576, + ], + ], + "spatial": { + "height": 162.0841023484449, + "unit": "pixel", + "width": 169.00660662865135, + "x": 30.99340337134864, + "y": 18.26576, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "path", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 200.00001, + 83.33333, + ], + [ + 162.4534128906872, + 113.44052265292322, + ], + [ + 130.23963379446013, + 137.53241475664169, + ], + [ + 103.07514493892985, + 155.9444151903508, + ], + [ + 80.6823522931036, + 169.00491330697372, + ], + [ + 62.78959556984875, + 177.0352789297825, + ], + [ + 49.13114822877719, + 180.3498623484449, + ], + [ + 39.44721747962866, + 179.25599431438627, + ], + [ + 33.48394428625797, + 174.0539860353251, + ], + [ + 30.99340337134864, + 165.03712916881153, + ], + [ + 31.733603222011542, + 152.49169581455482, + ], + [ + 35.46848609646122, + 136.69693850527307, + ], + [ + 41.96792803201417, + 117.9250901957326, + ], + [ + 51.00773885471672, + 96.44136424955366, + ], + [ + 62.36966219099256, + 72.50395442325019, + ], + [ + 75.84137548180844, + 46.36403484681894, + ], + [ + 91.21649000000001, + 18.26576, + ], + ], + "spatial": { + "height": 162.0841023484449, + "unit": "pixel", + "width": 169.00660662865135, + "x": 30.99340337134864, + "y": 18.26576, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "path", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing a polygon selector', () => { + expect( + parseSelector({ + type: 'SvgSelector', + value: + '', + }) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 100, + 100, + ], + [ + 150, + 25, + ], + [ + 150, + 75, + ], + [ + 200, + 0, + ], + [ + 100, + 100, + ], + ], + "spatial": { + "height": 100, + "unit": "pixel", + "width": 100, + "x": 100, + "y": 0, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 100, + 100, + ], + [ + 150, + 25, + ], + [ + 150, + 75, + ], + [ + 200, + 0, + ], + [ + 100, + 100, + ], + ], + "spatial": { + "height": 100, + "unit": "pixel", + "width": 100, + "x": 100, + "y": 0, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing a polyline selector', () => { + expect( + parseSelector({ + type: 'SvgSelector', + value: + '', + }) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 100, + 100, + ], + [ + 150, + 25, + ], + [ + 150, + 75, + ], + [ + 200, + 0, + ], + ], + "spatial": { + "height": 100, + "unit": "pixel", + "width": 100, + "x": 100, + "y": 0, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "polyline", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 100, + 100, + ], + [ + 150, + 25, + ], + [ + 150, + 75, + ], + [ + 200, + 0, + ], + ], + "spatial": { + "height": 100, + "unit": "pixel", + "width": 100, + "x": 100, + "y": 0, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "polyline", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing the cookbook polygon selector', () => { + expect( + parseSelector({ + type: 'SvgSelector', + value: + "", + }) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": {}, + "points": [ + [ + 270, + 1900, + ], + [ + 1530, + 1900, + ], + [ + 1530, + 1610, + ], + [ + 1315, + 1300, + ], + [ + 1200, + 986, + ], + [ + 904, + 661, + ], + [ + 600, + 986, + ], + [ + 500, + 1300, + ], + [ + 270, + 1630, + ], + [ + 270, + 1900, + ], + ], + "spatial": { + "height": 1239, + "unit": "pixel", + "width": 1260, + "x": 270, + "y": 661, + }, + "style": undefined, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": {}, + "points": [ + [ + 270, + 1900, + ], + [ + 1530, + 1900, + ], + [ + 1530, + 1610, + ], + [ + 1315, + 1300, + ], + [ + 1200, + 986, + ], + [ + 904, + 661, + ], + [ + 600, + 986, + ], + [ + 500, + 1300, + ], + [ + 270, + 1630, + ], + [ + 270, + 1900, + ], + ], + "spatial": { + "height": 1239, + "unit": "pixel", + "width": 1260, + "x": 270, + "y": 661, + }, + "style": undefined, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing a cubic bézier selector with jsdom', () => { + expect( + parseSelector( + { + type: 'SvgSelector', + value: + '', + }, + { domParser: new new JSDOM().window.DOMParser() } + ) + ).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 200.00001, + 83.33333, + ], + [ + 189.0497197575205, + 92.24393388115851, + ], + [ + 178.805670397455, + 100.43438771718232, + ], + [ + 169.23560567208767, + 107.94149345372949, + ], + [ + 160.30805901686495, + 114.80115206593804, + ], + [ + 151.99235355030802, + 121.0483635582994, + ], + [ + 144.25860207390545, + 126.71722696450647, + ], + [ + 137.07770707198566, + 131.84094034726937, + ], + [ + 130.4213607115608, + 136.45180079809205, + ], + [ + 123.61277681832797, + 141.00964477236283, + ], + [ + 113.97516170198546, + 147.21988073927787, + ], + [ + 105.3319030967066, + 152.52755936098924, + ], + [ + 97.61454532645207, + 157.00342065751718, + ], + [ + 90.75699356146032, + 160.71576500806725, + ], + [ + 84.69551381892782, + 163.7304531473643, + ], + [ + 79.36873296390102, + 166.11090616086344, + ], + [ + 71.80644334525853, + 168.98320166402587, + ], + [ + 64.26398773055817, + 171.19491342158602, + ], + [ + 58.37447362500575, + 172.16184015700756, + ], + [ + 53.9520687744154, + 172.04690989659434, + ], + [ + 47.30957775492126, + 168.43492134596588, + ], + [ + 46.3386630179506, + 160.54259107232966, + ], + [ + 49.202844446593296, + 153.2402160926003, + ], + [ + 53.180748764448865, + 147.44703936037027, + ], + [ + 54.9495899559282, + 145.39344791460775, + ], + [ + 56.8774788252341, + 143.41892437969898, + ], + [ + 58.97158482533759, + 141.53028695153603, + ], + [ + 61.23921332869881, + 139.73448309529437, + ], + [ + 63.68780562697626, + 138.0385895443266, + ], + [ + 66.32493893077297, + 136.44981229919782, + ], + [ + 69.1535844240032, + 134.9907736654309, + ], + [ + 72.10941134425099, + 133.8117524942583, + ], + [ + 75.17451320029508, + 132.9671061358115, + ], + [ + 78.35180398922122, + 132.47987074174844, + ], + [ + 81.64425923662893, + 132.3735689136763, + ], + [ + 85.0549159970002, + 132.6722097014267, + ], + [ + 88.84621539639582, + 133.4959058421928, + ], + [ + 93.13397532372831, + 135.35476109533968, + ], + [ + 97.37963547338721, + 138.3262959001408, + ], + [ + 101.57393111066656, + 142.48205447480854, + ], + [ + 105.70739342857802, + 147.895156883028, + ], + [ + 111.09015634579525, + 157.925328682147, + ], + [ + 115.93172618217102, + 172.10486670209932, + ], + [ + 119.94023, + 190.33333, + ], + ], + "spatial": { + "height": 106.99999999999999, + "unit": "pixel", + "width": 153.6613469820494, + "x": 46.3386630179506, + "y": 83.33333, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "path", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#000", + }, + "points": [ + [ + 200.00001, + 83.33333, + ], + [ + 189.0497197575205, + 92.24393388115851, + ], + [ + 178.805670397455, + 100.43438771718232, + ], + [ + 169.23560567208767, + 107.94149345372949, + ], + [ + 160.30805901686495, + 114.80115206593804, + ], + [ + 151.99235355030802, + 121.0483635582994, + ], + [ + 144.25860207390545, + 126.71722696450647, + ], + [ + 137.07770707198566, + 131.84094034726937, + ], + [ + 130.4213607115608, + 136.45180079809205, + ], + [ + 123.61277681832797, + 141.00964477236283, + ], + [ + 113.97516170198546, + 147.21988073927787, + ], + [ + 105.3319030967066, + 152.52755936098924, + ], + [ + 97.61454532645207, + 157.00342065751718, + ], + [ + 90.75699356146032, + 160.71576500806725, + ], + [ + 84.69551381892782, + 163.7304531473643, + ], + [ + 79.36873296390102, + 166.11090616086344, + ], + [ + 71.80644334525853, + 168.98320166402587, + ], + [ + 64.26398773055817, + 171.19491342158602, + ], + [ + 58.37447362500575, + 172.16184015700756, + ], + [ + 53.9520687744154, + 172.04690989659434, + ], + [ + 47.30957775492126, + 168.43492134596588, + ], + [ + 46.3386630179506, + 160.54259107232966, + ], + [ + 49.202844446593296, + 153.2402160926003, + ], + [ + 53.180748764448865, + 147.44703936037027, + ], + [ + 54.9495899559282, + 145.39344791460775, + ], + [ + 56.8774788252341, + 143.41892437969898, + ], + [ + 58.97158482533759, + 141.53028695153603, + ], + [ + 61.23921332869881, + 139.73448309529437, + ], + [ + 63.68780562697626, + 138.0385895443266, + ], + [ + 66.32493893077297, + 136.44981229919782, + ], + [ + 69.1535844240032, + 134.9907736654309, + ], + [ + 72.10941134425099, + 133.8117524942583, + ], + [ + 75.17451320029508, + 132.9671061358115, + ], + [ + 78.35180398922122, + 132.47987074174844, + ], + [ + 81.64425923662893, + 132.3735689136763, + ], + [ + 85.0549159970002, + 132.6722097014267, + ], + [ + 88.84621539639582, + 133.4959058421928, + ], + [ + 93.13397532372831, + 135.35476109533968, + ], + [ + 97.37963547338721, + 138.3262959001408, + ], + [ + 101.57393111066656, + 142.48205447480854, + ], + [ + 105.70739342857802, + 147.895156883028, + ], + [ + 111.09015634579525, + 157.925328682147, + ], + [ + 115.93172618217102, + 172.10486670209932, + ], + [ + 119.94023, + 190.33333, + ], + ], + "spatial": { + "height": 106.99999999999999, + "unit": "pixel", + "width": 153.6613469820494, + "x": 46.3386630179506, + "y": 83.33333, + }, + "style": { + "fill": "#fff", + "stroke": "#000", + }, + "svg": "", + "svgShape": "path", + "type": "SvgSelector", + }, + ], + } + `); + }); + + test('Parsing a real world example selector', () => { + const annotations: any[] = ghentChoices.items[0]!.annotations[0].items; + + const firstTarget = annotations[0].target; + + expect(expandTarget(firstTarget)).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": {}, + "points": [ + [ + 905.7663277587891, + 824.1576701660156, + ], + [ + 891.7238851318359, + 878.9430197753907, + ], + [ + 890.8197407226562, + 905.6661394042969, + ], + [ + 825.7214197998047, + 905.6661394042969, + ], + [ + 798.2355216064453, + 852.1408363037109, + ], + [ + 827.1680661621094, + 820.3150755615235, + ], + [ + 883.5865854492188, + 801.5089024658204, + ], + [ + 905.7663277587891, + 824.1576701660156, + ], + ], + "spatial": { + "height": 104.15723693847656, + "unit": "pixel", + "width": 107.53080615234376, + "x": 798.2355216064453, + "y": 801.5089024658204, + }, + "style": undefined, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": {}, + "points": [ + [ + 905.7663277587891, + 824.1576701660156, + ], + [ + 891.7238851318359, + 878.9430197753907, + ], + [ + 890.8197407226562, + 905.6661394042969, + ], + [ + 825.7214197998047, + 905.6661394042969, + ], + [ + 798.2355216064453, + 852.1408363037109, + ], + [ + 827.1680661621094, + 820.3150755615235, + ], + [ + 883.5865854492188, + 801.5089024658204, + ], + [ + 905.7663277587891, + 824.1576701660156, + ], + ], + "spatial": { + "height": 104.15723693847656, + "unit": "pixel", + "width": 107.53080615234376, + "x": 798.2355216064453, + "y": 801.5089024658204, + }, + "style": undefined, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + ], + "source": { + "id": "https://iiif.ghentcdh.ugent.be/iiif/manifests/cune-iiif-orm:sde:O.0219/canvas/0001", + "type": "Canvas", + }, + "type": "SpecificResource", + } + `); + }); + + test('Parsing svg target', () => { + const target = { + source: 'https://data.globalise.huygens.knaw.nl/manifests/maps/4.VEL/B/B.3/B.3.3/229.json/canvas/p1', + selector: { + type: 'SvgSelector', + value: + '', + }, + }; + + expect(expandTarget(target as any)).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#FF0055", + "borderColor": "#FF0055", + "borderWidth": "1", + }, + "points": [ + [ + 29234, + 89, + ], + [ + 29234, + 89, + ], + ], + "spatial": { + "height": 0, + "unit": "pixel", + "width": 0, + "x": 29234, + "y": 89, + }, + "style": { + "fill": "#FF0055", + "fillOpacity": 0.1, + "stroke": "#FF0055", + "strokeWidth": "1", + }, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#FF0055", + "borderColor": "#FF0055", + "borderWidth": "1", + }, + "points": [ + [ + 29234, + 89, + ], + [ + 29234, + 89, + ], + ], + "spatial": { + "height": 0, + "unit": "pixel", + "width": 0, + "x": 29234, + "y": 89, + }, + "style": { + "fill": "#FF0055", + "fillOpacity": 0.1, + "stroke": "#FF0055", + "strokeWidth": "1", + }, + "svg": "", + "svgShape": "polygon", + "type": "SvgSelector", + }, + ], + "source": "https://data.globalise.huygens.knaw.nl/manifests/maps/4.VEL/B/B.3/B.3.3/229.json/canvas/p1", + "type": "SpecificResource", + } + `); + }); + }); + + describe('temporal selectors', () => { + test('temporal with start only', () => { + const selector: Selector = { + type: 'FragmentSelector', + value: 't=10.5', + }; + + expect(parseSelector(selector)).toMatchInlineSnapshot(` + { + "selector": { + "temporal": { + "endTime": undefined, + "startTime": 10.5, + }, + "type": "TemporalSelector", + }, + "selectors": [ + { + "temporal": { + "endTime": undefined, + "startTime": 10.5, + }, + "type": "TemporalSelector", + }, + ], + } + `); + }); + test('temporal with start and end', () => { + const selector: Selector = { + type: 'FragmentSelector', + value: 't=10.5,20.5', + }; + + expect(parseSelector(selector)).toMatchInlineSnapshot(` + { + "selector": { + "temporal": { + "endTime": 20.5, + "startTime": 10.5, + }, + "type": "TemporalSelector", + }, + "selectors": [ + { + "temporal": { + "endTime": 20.5, + "startTime": 10.5, + }, + "type": "TemporalSelector", + }, + ], + } + `); + }); + + test('temporal with start offset', () => { + const selector: Selector = { + type: 'FragmentSelector', + value: 't=302.05,3971.24', + }; + + expect(parseSelector(selector)).toMatchInlineSnapshot(` + { + "selector": { + "temporal": { + "endTime": 3971.24, + "startTime": 302.05, + }, + "type": "TemporalSelector", + }, + "selectors": [ + { + "temporal": { + "endTime": 3971.24, + "startTime": 302.05, + }, + "type": "TemporalSelector", + }, + ], + } + `); + }); + + test('temporal with start and end decimals', () => { + const selector: Selector = { + type: 'FragmentSelector', + value: 't=0.1,302.05', + }; + + expect(parseSelector(selector)).toMatchInlineSnapshot(` + { + "selector": { + "temporal": { + "endTime": 302.05, + "startTime": 0.1, + }, + "type": "TemporalSelector", + }, + "selectors": [ + { + "temporal": { + "endTime": 302.05, + "startTime": 0.1, + }, + "type": "TemporalSelector", + }, + ], + } + `); + }); + }); + + describe('temporal box selector', () => { + test('temporal box selector', () => { + const target = + 'https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/canvas#xywh=200,200,480,360&t=27,57'; + + const expanded = expandTarget(target); + + expect(expanded).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": {}, + "spatial": { + "height": 360, + "unit": "pixel", + "width": 480, + "x": 200, + "y": 200, + }, + "temporal": { + "endTime": 57, + "startTime": 27, + }, + "type": "TemporalBoxSelector", + }, + "selectors": [ + { + "boxStyle": {}, + "spatial": { + "height": 360, + "unit": "pixel", + "width": 480, + "x": 200, + "y": 200, + }, + "temporal": { + "endTime": 57, + "startTime": 27, + }, + "type": "TemporalBoxSelector", + }, + ], + "source": { + "id": "https://preview.iiif.io/cookbook/0489-multimedia-canvas/recipe/0489-multimedia-canvas/canvas", + "type": "Canvas", + }, + "type": "SpecificResource", + } + `); + }); + }); + + describe('point selector', () => { + test('point selector', () => { + const examplePointSelector: Selector = { + type: 'PointSelector', + x: 3385, + y: 1464, + }; + + expect(parseSelector(examplePointSelector)).toMatchInlineSnapshot(` + { + "selector": { + "spatial": { + "x": 3385, + "y": 1464, + }, + "type": "PointSelector", + }, + "selectors": [ + { + "spatial": { + "x": 3385, + "y": 1464, + }, + "type": "PointSelector", + }, + ], + } + `); + }); + }); + + describe('parse selector with stylesheet', () => { + test('box selector with css', () => { + const exampleSelector: Selector = { + type: 'FragmentSelector', + value: 'xywh=100,140,480,360', + }; + + const parsed = parseSelector( + exampleSelector, + { + loadedStylesheets: { 'https://example.org/styles': '.test { background: red }' }, + }, + { + styleClass: 'test', + } + ); + + expect(parsed).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "background": "red", + }, + "spatial": { + "height": 360, + "unit": "pixel", + "width": 480, + "x": 100, + "y": 140, + }, + "type": "BoxSelector", + }, + "selectors": [ + { + "boxStyle": { + "background": "red", + }, + "spatial": { + "height": 360, + "unit": "pixel", + "width": 480, + "x": 100, + "y": 140, + }, + "type": "BoxSelector", + }, + ], + } + `); + }); + + test('expandTarget with CSS', () => { + const expanded = expandTarget( + { + type: 'SpecificResource', + source: 'https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1#xywh=170,160,2200,1000', + styleClass: 'author2', + }, + { + loadedStylesheets: { + 'https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/style.css': ` + .author1 { + color: #f00; + background-color: #fff; + border-color: #f00; + } + + .author2 { + color: #1a1; + background-color: #fff; + border-color: #0f0; + }`, + }, + } + ); + + expect(expanded).toMatchInlineSnapshot(` + { + "selector": { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#0f0", + }, + "spatial": { + "height": 1000, + "unit": "pixel", + "width": 2200, + "x": 170, + "y": 160, + }, + "type": "BoxSelector", + }, + "selectors": [ + { + "boxStyle": { + "backgroundColor": "#fff", + "borderColor": "#0f0", + }, + "spatial": { + "height": 1000, + "unit": "pixel", + "width": 2200, + "x": 170, + "y": 160, + }, + "type": "BoxSelector", + }, + ], + "source": { + "id": "https://preview.iiif.io/cookbook/0045-css/recipe/0045-css/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", + } + `); + }); + }); +}); diff --git a/__tests__/v4-helpers/range.tests.ts b/__tests__/v4-helpers/range.tests.ts new file mode 100644 index 0000000..abf1df6 --- /dev/null +++ b/__tests__/v4-helpers/range.tests.ts @@ -0,0 +1,1546 @@ +// @ts-nocheck +import type { Range, RangeItems } from '@iiif/parser/presentation-4/types'; +import type { ManifestNormalized } from '@iiif/parser/presentation-4-normalized/types'; +import invariant from 'tiny-invariant'; +import bodleian from '../../fixtures/presentation-2/bodleian.json'; +import wellcomeRange from '../../fixtures/presentation-2/wellcome-range.json'; +import tableOfContentManifests from '../../fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json'; +import tableOfContentsAvManifest from '../../fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json'; +import blManifest from '../../fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json'; +import { isRangeContiguous, rangesToTableOfContentsTree, rangeToTableOfContentsTree } from '../../src'; +import { Vault4 } from '../../src/vault/vault4'; +import { copy, rangeMaker, renderRange } from './helpers'; + +describe('range helper', () => { + describe('rangeToTableOfContentsTree', () => { + test('it can make a table of contents tree', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(tableOfContentManifests.id, copy(tableOfContentManifests)); + + invariant(manifest); + + const tree = rangeToTableOfContentsTree(vault, manifest.structures[0] as any); + + expect(renderRange(tree)).toMatchInlineSnapshot(` + "Table of Contents + ├── Tabiba Tabiban [ጠቢበ ጠቢባን] + ├── + └── + └── Arede'et [አርድዕት] + ├── Monday + ├── + └── + └── Tuesday + ├── + └── + " + `); + //todo + expect(tree).toMatchInlineSnapshot(` + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", + "isCanvasLeaf": false, + "isRangeLeaf": false, + "isVirtual": false, + "items": [ + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "isCanvasLeaf": false, + "isRangeLeaf": true, + "isVirtual": false, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "isCanvasLeaf": true, + "isRangeLeaf": false, + "label": undefined, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "type": "Range", + }, + "resource": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p1", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", + "isCanvasLeaf": true, + "isRangeLeaf": false, + "label": undefined, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "type": "Range", + }, + "resource": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Canvas", + }, + ], + "label": { + "gez": [ + "Tabiba Tabiban [ጠቢበ ጠቢባን]", + ], + }, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", + "type": "Range", + }, + "type": "Range", + "untitled": false, + }, + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", + "isCanvasLeaf": false, + "isRangeLeaf": false, + "isVirtual": false, + "items": [ + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "isCanvasLeaf": false, + "isRangeLeaf": true, + "isVirtual": false, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "isCanvasLeaf": true, + "isRangeLeaf": false, + "label": undefined, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "type": "Range", + }, + "resource": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p3", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "isCanvasLeaf": true, + "isRangeLeaf": false, + "label": undefined, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "type": "Range", + }, + "resource": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Canvas", + }, + ], + "label": { + "en": [ + "Monday", + ], + }, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", + "type": "Range", + }, + "type": "Range", + "untitled": false, + }, + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "isCanvasLeaf": false, + "isRangeLeaf": true, + "isVirtual": false, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "isCanvasLeaf": true, + "isRangeLeaf": false, + "label": undefined, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "type": "Range", + }, + "resource": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Canvas", + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "isCanvasLeaf": true, + "isRangeLeaf": false, + "label": undefined, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "type": "Range", + }, + "resource": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Canvas", + }, + ], + "label": { + "en": [ + "Tuesday", + ], + }, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2", + "type": "Range", + }, + "type": "Range", + "untitled": false, + }, + ], + "label": { + "gez": [ + "Arede'et [አርድዕት]", + ], + }, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r0", + "type": "Range", + }, + "type": "Range", + "untitled": false, + }, + ], + "label": { + "en": [ + "Table of Contents", + ], + }, + "parent": undefined, + "type": "Range", + "untitled": false, + } + `); + }); + + test('it can make a table of contents tree', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(tableOfContentManifests.id, tableOfContentsAvManifest); + + invariant(manifest); + + const tree = rangeToTableOfContentsTree(vault, manifest.structures[0] as any); + + expect(renderRange(tree, true)).toMatchInlineSnapshot(` + "Gaetano Donizetti, L'Elisir D'Amore + ├── Atto Primo + ├── Preludio e Coro d'introduzione – Bel conforto al mietitore + └── Remainder of Atto Primo + └── Atto Secondo + " + `); + + expect(tree).toMatchInlineSnapshot(` + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=0,302.05", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/1", + "isCanvasLeaf": false, + "isRangeLeaf": false, + "isVirtual": false, + "items": [ + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=0,302.05", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/2", + "isCanvasLeaf": false, + "isRangeLeaf": false, + "isVirtual": false, + "items": [ + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=0,302.05", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/3", + "isCanvasLeaf": false, + "isRangeLeaf": true, + "isVirtual": false, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=0,302.05", + "isCanvasLeaf": true, + "isRangeLeaf": false, + "label": undefined, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/3", + "type": "Range", + }, + "resource": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=0,302.05", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Canvas", + }, + ], + "label": { + "it": [ + "Preludio e Coro d'introduzione – Bel conforto al mietitore", + ], + }, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/2", + "type": "Range", + }, + "type": "Range", + "untitled": false, + }, + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=302.05,3971.24", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/4", + "isCanvasLeaf": false, + "isRangeLeaf": true, + "isVirtual": false, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=302.05,3971.24", + "isCanvasLeaf": true, + "isRangeLeaf": false, + "label": undefined, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/4", + "type": "Range", + }, + "resource": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=302.05,3971.24", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Canvas", + }, + ], + "label": { + "en": [ + "Remainder of Atto Primo", + ], + }, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/2", + "type": "Range", + }, + "type": "Range", + "untitled": false, + }, + ], + "label": { + "it": [ + "Atto Primo", + ], + }, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/1", + "type": "Range", + }, + "type": "Range", + "untitled": false, + }, + { + "firstCanvas": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=3971.24", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/5", + "isCanvasLeaf": false, + "isRangeLeaf": true, + "isVirtual": false, + "items": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=3971.24", + "isCanvasLeaf": true, + "isRangeLeaf": false, + "label": undefined, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/5", + "type": "Range", + }, + "resource": { + "source": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/canvas/1#t=3971.24", + "type": "Canvas", + }, + "type": "SpecificResource", + }, + "type": "Canvas", + }, + ], + "label": { + "it": [ + "Atto Secondo", + ], + }, + "parent": { + "id": "https://iiif.io/api/cookbook/recipe/0026-toc-opera/range/1", + "type": "Range", + }, + "type": "Range", + "untitled": false, + }, + ], + "label": { + "it": [ + "Gaetano Donizetti, L'Elisir D'Amore", + ], + }, + "parent": undefined, + "type": "Range", + "untitled": false, + } + `); + }); + + test('it can make a table of contents tree', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(wellcomeRange['@id'], wellcomeRange); + + invariant(manifest); + + const tree = rangesToTableOfContentsTree(vault, manifest.structures); + + expect(renderRange(tree, true)).toMatchInlineSnapshot(` + "Table of Contents + ├── Cover + ├── 'Precatio terrae matris,' abbreviated and corrupted + ├── 'Precatio omnium herbarum,' abbreviated and corrupted + ├── Antonius Musa, 'De herba vettonica' + ├── Pseudo-Apuleius, 'Herbarius' + ├── Anonymous, 'De taxone' + ├── Sextus Placitus, 'De medicina ex animalibus,' (continues at f.76r) + ├── 'Curae herbarum,' interpolated within the Sextus Placitus herbal + ├── Receipts, interpolated within the Sextus Placitus herbal + ├── Illustration + ├── Sextus Placitus, 'De medicina ex animalibus,' (continued from f.46v) + ├── Relation of a cure of a friend of the scribe + ├── Tables of Roman and Arabic numerals from 1 to 1,000,000 + └── Cover + " + `); + }); + + test('it can parse BL manifest', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(blManifest.id, JSON.parse(JSON.stringify(blManifest))); + + invariant(manifest); + + const tree = rangesToTableOfContentsTree(vault, manifest.structures); + + expect(renderRange(tree, true)).toMatchInlineSnapshot(` + "Wiltshire and Dorset, dub of disks / Fanny Rumble, A. Collins, Perrier (01:07:55) + ├── The turmut hoeing (02:29) + ├── 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) + ├── Introductory talk: 'The young sailor cut down in his prime' (01:25) + └── The young sailor cut down in his prime (02:49) + └── Fanny Rumble / Albert Collins / Fred Perrier (25:17) + ├── O what shall I wear to the wedding, John? (03:57) + ├── O what shall I wear to the wedding, John? (02:47) + ├── The vly on the turmut (03:10) + ├── The vly on the turmut (01:37) + ├── Twas on a Monday morning (02:04) + ├── Twas on a Monday morning (02:22) + ├── Dumble dum dollicky (04:23) + └── Talk about herself (01:53) + " + `); + }); + + test('it can parse BL manifest (showNoNav=true)', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(blManifest.id, JSON.parse(JSON.stringify(blManifest))); + + invariant(manifest); + + const tree = rangesToTableOfContentsTree(vault, manifest.structures, undefined, { showNoNav: true }); + + 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] + ├── 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] + ├── Introductory talk: 'The young sailor cut down in his prime' (01:25) + ├── [no-nav] + ├── The young sailor cut down in his prime (02:49) + └── [no-nav] + ├── Fanny Rumble / Albert Collins / Fred Perrier (25:17) + ├── [no-nav] + ├── O what shall I wear to the wedding, John? (03:57) + ├── [no-nav] + ├── O what shall I wear to the wedding, John? (02:47) + ├── [no-nav] + ├── The vly on the turmut (03:10) + ├── [no-nav] + ├── The vly on the turmut (01:37) + ├── [no-nav] + ├── Twas on a Monday morning (02:04) + ├── [no-nav] + ├── Twas on a Monday morning (02:22) + ├── Dumble dum dollicky (04:23) + ├── [no-nav] + └── Talk about herself (01:53) + └── [no-nav] + " + `); + }); + + test('very basic range', () => { + const vault = new Vault4(); + + const [range, { getManifest }] = rangeMaker((c) => + c.range('https://example.org/range1', [ + c.canvas('https://example.org/canvas1'), + c.canvas('https://example.org/canvas2'), + c.canvas('https://example.org/canvas3'), + c.canvas('https://example.org/canvas4'), + c.canvas('https://example.org/canvas5'), + c.canvas('https://example.org/canvas6'), + ]) + ); + + const manifest = getManifest(); + vault.loadSync(manifest.id, manifest); + + const toc = rangeToTableOfContentsTree(vault, range); + + expect(toc?.items?.length).toEqual(6); + }); + }); + + describe('isRangeContiguous', () => { + test('simple contiguous range', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(tableOfContentManifests.id, copy(tableOfContentManifests)); + + const firstRange = manifest?.structures[0]!; + const canvases = manifest?.items!; + + const [isContiguous, details] = isRangeContiguous(vault, firstRange, canvases, { detail: true }); + + expect(isContiguous).toBe(true); + expect(details).toMatchInlineSnapshot(` + { + "endIndex": 5, + "gaps": [], + "invalidCanvases": [], + "invalidRanges": [], + "isContiguous": true, + "reason": null, + "startIndex": 0, + } + `); + }); + + test('simple non-contiguous range with missing canvases', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(tableOfContentManifests.id, copy(tableOfContentManifests)); + + const firstRange = manifest?.structures[0]!; + const allCanvases = manifest?.items!; + + const canvases = [allCanvases[0], allCanvases[2], allCanvases[4]]; + + const [isContiguous, details] = isRangeContiguous(vault, firstRange, canvases, { detail: true }); + + expect(isContiguous).toBe(false); + expect(details).toMatchInlineSnapshot(` + { + "endIndex": 2, + "gaps": [], + "invalidCanvases": [ + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p2", + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p4", + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + ], + "invalidRanges": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r1", + "reasons": [ + "Canvas not found", + ], + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/1", + "reasons": [ + "Canvas not found", + ], + }, + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "reasons": [ + "Canvas not found", + ], + }, + ], + "isContiguous": false, + "reason": null, + "startIndex": 0, + } + `); + }); + + test('crafted range', () => { + const vault = new Vault4(); + + const [range, { canvases }] = rangeMaker((c) => + c.range('https://example.org/range1', [ + c.canvas('https://example.org/canvas1'), + c.canvas('https://example.org/canvas2'), + c.canvas('https://example.org/canvas3'), + c.canvas('https://example.org/canvas4'), + c.canvas('https://example.org/canvas5'), + c.canvas('https://example.org/canvas6'), + ]) + ); + + vault.loadSync(range.id, range); + + const [isContiguous, detail] = isRangeContiguous(vault, range, canvases, { + detail: true, + }); + + expect(isContiguous).toBe(true); + + expect(detail).toMatchInlineSnapshot(` + { + "endIndex": 5, + "gaps": [], + "invalidCanvases": [], + "invalidRanges": [], + "isContiguous": true, + "reason": null, + "startIndex": 0, + } + `); + }); + + test('crafted range with gap', () => { + const vault = new Vault4(); + + const [range, { canvases }] = rangeMaker((c) => + c.range('https://example.org/range1', [ + c.canvas('https://example.org/canvas1'), + c.canvas('https://example.org/canvas2'), + c.canvas('https://example.org/canvas3'), + c.canvas('https://example.org/canvas4'), + c.gap('https://example.org/canvas5'), + c.canvas('https://example.org/canvas6'), + ]) + ); + + vault.loadSync(range.id, range); + + const [isContiguous, detail] = isRangeContiguous(vault, range, canvases, { + detail: true, + }); + + expect(isContiguous).toBe(false); + + expect(detail).toMatchInlineSnapshot(` + { + "endIndex": 5, + "gaps": [ + { + "canvasIds": [ + "https://example.org/canvas5", + ], + "endIndex": 5, + "startIndex": 3, + }, + ], + "invalidCanvases": [], + "invalidRanges": [], + "isContiguous": false, + "reason": null, + "startIndex": 0, + } + `); + }); + + test('crafted range with gap (length=2)', () => { + const vault = new Vault4(); + + const [range, { canvases }] = rangeMaker((c) => + c.range('https://example.org/range1', [ + c.canvas('https://example.org/canvas1'), + c.canvas('https://example.org/canvas2'), + c.canvas('https://example.org/canvas3'), + c.gap('https://example.org/canvas4'), + c.gap('https://example.org/canvas5'), + c.canvas('https://example.org/canvas6'), + ]) + ); + + vault.loadSync(range.id, range); + + const [isContiguous, detail] = isRangeContiguous(vault, range, canvases, { + detail: true, + }); + + expect(isContiguous).toBe(false); + + expect(detail).toMatchInlineSnapshot(` + { + "endIndex": 5, + "gaps": [ + { + "canvasIds": [ + "https://example.org/canvas4", + "https://example.org/canvas5", + ], + "endIndex": 5, + "startIndex": 2, + }, + ], + "invalidCanvases": [], + "invalidRanges": [], + "isContiguous": false, + "reason": null, + "startIndex": 0, + } + `); + }); + + test('crafted range with gap (allowed)', () => { + const vault = new Vault4(); + + const [range, { canvases }] = rangeMaker((c) => + c.range('https://example.org/range1', [ + c.canvas('https://example.org/canvas1'), + c.canvas('https://example.org/canvas2'), + c.canvas('https://example.org/canvas3'), + c.gap('https://example.org/canvas4'), + c.gap('https://example.org/canvas5'), + c.canvas('https://example.org/canvas6'), + ]) + ); + + vault.loadSync(range.id, range); + + const [isContiguous, detail] = isRangeContiguous(vault, range, canvases, { + allowSubset: true, + allowGaps: true, + detail: true, + }); + + expect(isContiguous).toBe(true); + + expect(detail).toMatchInlineSnapshot(` + { + "endIndex": 5, + "gaps": [ + { + "canvasIds": [ + "https://example.org/canvas4", + "https://example.org/canvas5", + ], + "endIndex": 5, + "startIndex": 2, + }, + ], + "invalidCanvases": [], + "invalidRanges": [], + "isContiguous": true, + "reason": null, + "startIndex": 0, + } + `); + }); + + test('crafted range out of order', () => { + const vault = new Vault4(); + + const [range] = rangeMaker((c) => + c.range('https://example.org/range1', [ + c.canvas('https://example.org/canvas1'), + c.canvas('https://example.org/canvas2'), + c.canvas('https://example.org/canvas3'), + c.canvas('https://example.org/canvas5'), // <-- + c.canvas('https://example.org/canvas4'), // <-- + c.canvas('https://example.org/canvas6'), + ]) + ); + + const canvases = [ + { id: 'https://example.org/canvas1', type: 'Canvas' as const }, + { id: 'https://example.org/canvas2', type: 'Canvas' as const }, + { id: 'https://example.org/canvas3', type: 'Canvas' as const }, + { id: 'https://example.org/canvas4', type: 'Canvas' as const }, + { id: 'https://example.org/canvas5', type: 'Canvas' as const }, + { id: 'https://example.org/canvas6', type: 'Canvas' as const }, + ]; + + vault.loadSync(range.id, range); + + const [isContiguous, detail] = isRangeContiguous(vault, range, canvases, { + allowSubset: true, + allowGaps: true, + detail: true, + }); + + expect(isContiguous).toBe(false); + + expect(detail).toMatchInlineSnapshot(` + { + "endIndex": 5, + "gaps": [ + { + "canvasIds": [ + "https://example.org/canvas4", + ], + "endIndex": 4, + "startIndex": 2, + }, + ], + "invalidCanvases": [], + "invalidRanges": [ + { + "id": "https://example.org/range1", + "reasons": [ + "Canvas out of order", + ], + }, + ], + "isContiguous": false, + "reason": null, + "startIndex": 0, + } + `); + }); + + test('simple non-contiguous range with valid canvases but out of order', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(tableOfContentManifests.id, copy(tableOfContentManifests)); + + const firstRange = manifest?.structures[0]!; + const allCanvases = manifest?.items!; + + const canvases = [ + // + allCanvases[0], + allCanvases[1], + allCanvases[2], + allCanvases[3], + allCanvases[5], + allCanvases[4], + ]; + + const [isContiguous, details] = isRangeContiguous(vault, firstRange, canvases, { detail: true }); + + expect(isContiguous).toBe(false); + expect(details).toMatchInlineSnapshot(` + { + "endIndex": 4, + "gaps": [ + { + "canvasIds": [ + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p6", + ], + "endIndex": 5, + "startIndex": 3, + }, + ], + "invalidCanvases": [], + "invalidRanges": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "reasons": [ + "Canvas out of order", + ], + }, + ], + "isContiguous": false, + "reason": null, + "startIndex": 0, + } + `); + }); + + test('simple non-contiguous range with valid canvases but out of order - different ranges', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(tableOfContentManifests.id, copy(tableOfContentManifests)); + + const firstRange = manifest?.structures[0]!; + const allCanvases = manifest?.items!; + + const canvases = [ + // + allCanvases[0], + allCanvases[1], + allCanvases[2], + allCanvases[4], + allCanvases[3], + allCanvases[5], + ]; + + const [isContiguous, details] = isRangeContiguous(vault, firstRange, canvases, { detail: true }); + + expect(isContiguous).toBe(false); + expect(details).toMatchInlineSnapshot(` + { + "endIndex": 5, + "gaps": [ + { + "canvasIds": [ + "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/canvas/p5", + ], + "endIndex": 4, + "startIndex": 2, + }, + ], + "invalidCanvases": [], + "invalidRanges": [ + { + "id": "https://iiif.io/api/cookbook/recipe/0024-book-4-toc/range/r2/2", + "reasons": [ + "Canvas out of order", + ], + }, + ], + "isContiguous": false, + "reason": null, + "startIndex": 0, + } + `); + }); + }); + + test('it can parse bodleian ranges', () => { + const vault = new Vault4(); + const manifest = vault.loadSync(bodleian['@id'], bodleian); + + invariant(manifest); + + expect(vault.get('https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0281')) + .toMatchInlineSnapshot(` + { + "accompanyingCanvas": null, + "annotations": [], + "behavior": [], + "homepage": [], + "id": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0281", + "iiif-parser:hasPart": [ + { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0281", + "iiif-parser:partOf": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0186", + "type": "Range", + }, + ], + "items": [ + { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/range/390fd0e8-9eae-475d-9564-ed916ab9035c/LOG_0282", + "type": "Range", + }, + ], + "label": { + "none": [ + "The third Part of Henry the Sixt, with the death of the Duke of Yorke.", + ], + }, + "metadata": [ + { + "label": { + "none": [ + "Titles", + ], + }, + "value": { + "none": [ + "The third Part of Henry the Sixt, with the death of the Duke of Yorke.", + ], + }, + }, + { + "label": { + "none": [ + "Image Range", + ], + }, + "value": { + "none": [ + "fol. o4r–fol. q4v", + ], + }, + }, + ], + "navDate": null, + "partOf": [], + "placeholderCanvas": null, + "provider": [], + "rendering": [], + "requiredStatement": null, + "rights": null, + "seeAlso": [], + "service": [], + "start": { + "id": "https://iiif.bodleian.ox.ac.uk/iiif/canvas/45778a2f-6cc6-4bfd-815e-4aeb3ddee222.json", + "type": "Canvas", + }, + "summary": null, + "supplementary": [], + "thumbnail": [], + "type": "Range", + "viewingDirection": "left-to-right", + } + `); + + expect(vault.get(manifest.structures)).toMatchSnapshot(); + + const tree = rangesToTableOfContentsTree(vault, manifest.structures); + expect(renderRange(tree, true)).toMatchInlineSnapshot(` + "Arch. G c.7 + ├── [Front matter] + ├── [Frontispiece] + ├── [Title page] + └── [Preliminaries] + ├── [Epistle Dedicatory] + ├── To the great Variety of Readers. + ├── To the memory of my beloued, The Avthor Mr. William Shakespeare: And what he hath left vs. + ├── To the Memorie of the deceaſed Authour Maiſter W. Shakespeare. + ├── [Works and Names of Actors] + └── Vpon the Lines and Life of the Famous Scenicke Poet, Maſter William Shakespeare. + ├── [Comedies] + ├── The Tempest. + ├── Actus primus, Scena prima. + ├── [Act 1] Scena Sec[unda]. + ├── Actus Secundus. Scœna Prima. + ├── [Act 2] Scœna Secunda. + ├── Actus Tertius. Scœna Prima. + ├── [Act 3] Scœna Secunda. + ├── [Act 3] Scena Tertia. + ├── Actus Quartus. Scena Prima. + ├── Actus quintus: Scœna Prima. + └── Epilogve + ├── The Two Gentlemen of Verona. + ├── Actus primus, Scena prima. + ├── [Act 1] Scœna Secunda. + ├── [Act 1] Scœna Tertia. + ├── Actus ſecundus: Scœna Prima. + ├── [Act 2] Scœna ſecunda. + ├── [Act 2] Scœna Tertia. + ├── [Act 2] Scena Quarta. + ├── [Act 2] Scena Quinta. + ├── [Act 2] Scœna Sexta. + ├── [Act 2] Scœna ſeptima. + ├── Actus Tertius, Scena Prima. + ├── [Act 3] Scena Secunda. + ├── Actus Quartus. Scœna Prima. + ├── [Act 4] Scœna Secunda. + ├── [Act 4] Scœna Tertia. + ├── [Act 4] Scena Quarta. + ├── Actus Quintus. Scœna Prima. + ├── [Act 5] Scœna Secunda. + ├── [Act 5] Scena Tertia. + ├── [Act 5] Scœna Quarta. + └── The names of all the Actors. + ├── The Merry Wiues of Windſor. + ├── Actus primus, Scena prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scena Tertia. + ├── [Act 1] Scœna Quarta. + ├── Actus Secundus, Scœna Prima. + ├── [Act 2] Scœna Secunda. + ├── [Act 2] Scena Tertia. + ├── Actus Tertius. Scœna Prima. + ├── [Act 3] Scena Secunda. + ├── [Act 3] Scena Tertia. + ├── [Act 3] Scœna Quarta. + ├── [Act 3] Scena Quinta. + ├── Actus Quartus, Scœna Prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scena Tertia. + ├── [Act 4] Scena Quarta. + ├── [Act 4] Scena Quinta. + ├── [Act 4] Scena Sexta. + ├── Actus Quintus. Scœna Prima. + ├── [Act 5] Scena Secunda. + ├── [Act 5] Scena Tertia. + ├── [Act 5] Scena Quarta. + └── [Act 5] Scena Quinta. + ├── Measvre, For Measure. + ├── Actus primus, Scena prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scena Tertia. + ├── [Act 1] Scena Quarta. + ├── [Act 1] Scena Quinta. + ├── Actus Secundus. Scœna Prima. + ├── [Act 2] Scena Secunda. + ├── [Act 2] Scena Tertia. + ├── [Act 2] Scena Quarta. + ├── Actus Tertius. Scena Prima. + ├── Actus Quartus. Scœna Prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scena Tertia. + ├── [Act 4] Scena Quarta. + ├── [Act 4] Scena Quinta. + ├── [Act 4] Scena Sexta. + ├── Actus Quintus. Scœna Prima. + └── The names of all the Actors. + ├── The Comedie of Errors. + ├── Actus primus, Scena prima. + ├── Actus Secundus. + ├── Actus Tertius. Scena Prima. + ├── Actus Quartus. Scœna Prima. + └── Actus Quintus. Scœna Prima. + ├── Much adoe about Nothing. + ├── Actus primus, Scena prima. + ├── Actus Secundus. + ├── Actus Tertius. + ├── Actus Quartus. + └── Actus Quintus. + ├── Loues Labour's loſt. + ├── Actus primus. + ├── Actus Secunda. + ├── Actus Tertius. + ├── Actus Quartus. + └── Actus Quartus. + ├── A Midsommer Nights Dreame. + ├── Actus primus. + ├── Actus Secundus. + ├── Actus Tertius. + ├── Actus Quartus. + └── Actus Quintus. + ├── The Merchant of Venice. + ├── Actus primus. + ├── Actus Secundus. + ├── Actus Tertius. + ├── Actus Quartus. + └── Actus Quintus. + ├── As you Like it. + ├── Actus primus. Scœna Prima. + ├── [Act 1] Scœna Secunda. + ├── [Act 1] Scena Tertius. + ├── Actus Secundus. Scœna Pr[ima.] + ├── [Act 2] Scena Secunda. + ├── [Act 2] Scena Tertia. + ├── [Act 2] Scena Quarta. + ├── [Act 2] Scena Sexta. + ├── [Act 2] Scena Septima. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scena Secunda. + ├── [Act 3] Scœna Tertia. + ├── [Act 3] Scœna Quarta. + ├── [Act 3] Scena Quinta. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scœna Tertia. + ├── Actus Quintus. Scena Prima. + ├── [Act 5] Scœna Secunda. + ├── [Act 5] Scœna Tertia. + ├── [Act 5] Scena Quarta. + └── [Act 2] Scena Quinta. + ├── The Taming of the Shrew. + ├── Actus primus. Scœna Prima. + ├── Actus Tertia. + ├── Actus Quartus. Scena Prima. + └── Actus Quintus. + ├── All's Well, that Ends Well. + ├── Actus primus. Scœna Prima. + ├── Actus Secundus. + ├── Actus Tertius. + ├── Actus Quartus. + └── Actus Quintus. + ├── Twelfe Night, Or what you will. + ├── Actus Primus, Scæna Prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scæna Tertia. + ├── [Act 1] Scena Quarta. + ├── [Act 1] Scena Quinta. + ├── Actus Secundus, Scæna prima. + ├── [Act 2] Scæna Secunda. + ├── [Act 2] Scœna Tertia. + ├── [Act 2] Scena Quarta. + ├── [Act 2] Scena Quinta. + ├── Actus Tertius, Scæna prima. + ├── [Act 3] Scœna Secunda. + ├── [Act 3] Scæna Tertia. + ├── [Act 3] Scœna Quarta. + ├── Actus Quartus, Scæna prima. + ├── [Act 4] Scœna Secunda. + ├── [Act 4] Scæna Tertia. + └── Actus Quintus. Scena Prima. + └── The Winters Tale + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scœna Secunda. + ├── Actus Secundus. Scena Prima. + ├── [Act 2] Scena Secunda. + ├── [Act 2] Scæna Tertia. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scœna Secunda. + ├── [Act 3] Scæna Tertia. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scena Tertia. + ├── [Act 4] Scena Quarta. + ├── Actus Quintus. Scena Prima. + ├── [Act 5] Scœna Secunda. + └── The Names of the Actors. + ├── Histories + ├── The life and death of King Iohn. + ├── Actus Primus, Scæna Prima. + ├── [Act 1] Scæna Secunda. + ├── Actus Secundus + ├── Actus Tertius, Scæna prima. + ├── [Act 3] Scœna Secunda. + ├── [Act 3] Scæna Tertia. + ├── Actus Quartus, Scæna prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scœna Tertia. + ├── Actus Quartus, Scæna prima. + ├── [Act 5] Scœna Secunda. + ├── [Act 5] Scæna Tertia. + ├── [Act 5] Scena Quarta. + ├── [Act 5] Scena Quinta. + ├── [Act 5] Scena Sexta. + └── [Act 5] Scena Septima. + ├── The life and death of King Richard the Second. + ├── Actus Primus, Scæna Prima. + ├── [Act 1] Scæna Secunda. + ├── [Act 1] Scena Tertia. + ├── [Act 1] Scœna Quarta. + ├── Actus Secundus. Scena Prima. + ├── [Act 2] Scena Secunda. + ├── [Act 2] Scæna Tertia. + ├── [Act 2] Scœna Quarta. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scena Secunda. + ├── [Act 3] Scæna Tertia. + ├── [Act 3] Scena Quarta. + ├── Actus Quartus. Scœna Prima. + ├── Actus Quintus. Scena Prima. + ├── [Act 5] Scœna Secunda. + ├── [Act 5] Scœna Tertia. + ├── [Act 5] Scæna Quarta. + └── [Act 5] Scœna Quinta. + ├── The Firſt Part of Henry the Fourth, with the Life and Death of Henry Sirnamed Hot-Spvrre. + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scæna Secunda. + ├── [Act 1] Scœna Tertia. + ├── Actus Secundus. Scena Prima. + ├── [Act 2] Scæna Secunda. + ├── [Act 2] Scœna Tertia. + ├── [Act 2] Scena Quarta. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scæna Secunda. + ├── [Act 3] Scena Tertia. + ├── Actus Quartus. Scœna Prima. + ├── [Act 4] Scæna Secunda. + ├── [Act 4] Scœna Tertia. + ├── [Act 4] Scena Quarta. + ├── Actus Quintus. Scena Prima. + ├── [Act 5] Scena Secunda. + └── [Act 5] Scena Tertia. + ├── The Second Part of Henry the Fourth, Containing his Death : and the Coronation of King Henry the Fift. + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scena Tertia. + ├── [Act 1] Scena Quarta. + ├── Actus Secundus. Scœna Prima. + ├── [Act 2] Scena Secunda. + ├── [Act 2] Scena Tertia. + ├── [Act 2] Scæna Quarta. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scena Secunda. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena Secunda. + ├── Actus Quintus. Scœna Prima. + ├── [Act 5] Scena Secunda. + ├── [Act 5] Scena Tertia. + ├── [Act 5] Scena Quarta. + ├── [Act 5] Scena Quinta. + ├── Epilogue. + └── The Actors Names. + ├── The Life of Henry the Fift. + ├── Prologue. + ├── Actus Primus. Scœna Prima. + ├── Actus Secundus. + ├── Actus Tertius. + ├── Actus Quartus. + └── Actus Quintus. + ├── The firſt Part of Henry the Sixt. + ├── Actus Primus. Scœna Prima. + ├── Actus Secundus. Scena Prima. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scœna Secunda. + ├── [Act 3] Scæna Tertia. + ├── [Act 3] Scœna Quarta. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena ſecunda. + ├── [Act 4] Scœna Tertia. + └── Actus Quintus. + ├── The ſecond Part of Henry the Sixt, with the death of the Good Duke Hvmfrey. + └── Actus Primus. Scœna Prima. + ├── The third Part of Henry the Sixt, with the death of the Duke of Yorke. + └── Actus Primus. Scœna Prima. + ├── The Tragedy of Richard the Third : with the Landing of Earle Richmond, and the Battell at Boſworth Field. + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scena Tertia. + ├── [Act 1] Scena Quarta. + ├── Actus Secundus. Scœna Prima. + ├── [Act 2] Scena Secunda. + ├── [Act 2] Scena Tertia. + ├── [Act 2] Scena Quarta. + ├── Actus Tertius. Scœna Prima. + ├── [Act 3] Scena Secunda. + ├── [Act 3] Scena Tertia. + ├── [Act 3] Scæna Quarta. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scena Tertia. + ├── [Act 4] Scena Quarta. + ├── Actus Quintus. Scena Prima. + └── [Act 5] Scena Secunda. + └── The Famous Hiſtory of the Life of King Henry the Eight. + ├── The Prologue. + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scæna Tertia. + ├── [Act 1] Scena Quarta. + ├── Actus Secundus. Scena Prima. + ├── [Act 2] Scena Secunda. + ├── [Act 2] Scena Tertia. + ├── [Act 2] Scena Quarta. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scena Secunda. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena Secunda. + ├── Actus Quintus. Scena Prima. + ├── [Act 5] Scena Secunda. + ├── [Act 5] Scena Tertia. + ├── [Act 5] Scena Quarta. + └── The Epilogue. + ├── Tragedies + ├── The Tragedie of Troylus and Creſsida. + ├── The Prologue. + └── Actus Primus. Scœna Prima. + ├── The Tragedy of Coriolanus. + ├── Actus Primus. Scœna Prima. + ├── Actus Secundus. + ├── Actus Tertius. + ├── Actus Quartus. + └── Actus Quintus. + ├── The Lamentable Tragedy of Titus Andronicus. + ├── Actus Primus. Scœna Prima. + ├── Actus Secunda. + ├── Actus Tertius. + ├── Actus Quartus. + └── Actus Quintus. + ├── The Tragedie of Romeo and Ivliet. + └── Actus Primus. Scœna Prima. + ├── The Life of Tymon of Athens. + ├── Actus Primus. Scœna Prima. + └── The Actors Names. + ├── The Tragedie of Ivlivs Cæsar. + ├── Actus Primus. Scœna Prima. + ├── Actus Secundus. + ├── Actus Tertius. + ├── Actus Quartus. + └── Actus Quintus. + ├── The Tragedie of Macbeth. + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scena Tertia. + ├── [Act 1] Scena Quarta. + ├── [Act 1] Scena Quinta. + ├── [Act 1] Scena Sexta. + ├── [Act 1] Scena Septima. + ├── Actus Secundus. Scena Prima. + ├── [Act 2] Scena Secunda. + ├── [Act 2] Scena Tertia. + ├── [Act 2] Scena Quarta. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scena Secunda. + ├── [Act 3] Scena Tertia. + ├── [Act 3] Scæna Quarta. + ├── [Act 3] Scena Quinta. + ├── [Act 3] Scæna Sexta. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scæna Tertia. + ├── Actus Quintus. Scena Prima. + ├── [Act 5] Scena Secunda. + ├── [Act 5] Scæna Tertia. + ├── [Act 5] Scena Quarta. + ├── [Act 5] Scena Quinta. + ├── [Act 5] Scena Sexta. + └── [Act 5] Scena Septima. + ├── The Tragedie of Hamlet, Prince of Denmarke. + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scena Tertia. + ├── Actus Secundus. + └── [Act 2] Scena Secunda. + ├── The Tragedie of King Lear. + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scena Tertia. + ├── [Act 1] Scena Quarta. + ├── [Act 1] Scena Quinta. + ├── Actus Secundus. Scena Prima. + ├── [Act 2] Scena Secunda. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scena Secunda. + ├── [Act 3] Scæna Tertia. + ├── [Act 3] Scena Quarta. + ├── [Act 3] Scena Quinta. + ├── [Act 3] Scena Sexta. + ├── [Act 3] Scena Septima. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scena Tertia. + ├── [Act 4] Scena Quarta. + ├── [Act 4] Scena Quinta. + ├── [Act 4] Scæna Septima. + ├── Actus Quintus. Scena Prima. + ├── [Act 5] Scena Secunda. + └── [Act 5] Scena Tertia. + ├── The Tragedie of Othello, the Moore of Venice. + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scæna Tertia. + ├── Actus Secundus. Scena Prima. + ├── [Act 2] Scena Secunda. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scœna Secunda. + ├── [Act 3] Scœna Tertia. + ├── [Act 3] Scæna Quarta. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scena Tertia. + ├── Actus Quintus. Scena Prima. + ├── [Act 5] Scæna Secunda. + └── The Names of the Actors. + ├── The Tragedie of Anthonie, and Cleopatra. + └── Actus Primus. Scœna Prima. + └── The Tragedie of Cymbeline. + ├── Actus Primus. Scœna Prima. + ├── [Act 1] Scena Secunda. + ├── [Act 1] Scena Tertia. + ├── [Act 1] Scena Quarta. + ├── [Act 1] Scena Quinta. + ├── [Act 1] Scena Sexta. + ├── [Act 1] Scena Septima. + ├── Actus Secundus. Scena Prima. + ├── [Act 2] Scena Secunda. + ├── [Act 2] Scena Tertia. + ├── [Act 2] Scena Quarta. + ├── Actus Tertius. Scena Prima. + ├── [Act 3] Scena Secunda. + ├── [Act 3] Scena Tertia. + ├── [Act 3] Scena Quarta. + ├── [Act 3] Scena Quinta. + ├── [Act 3] Scena Sexta. + ├── [Act 3] Scena Septima. + ├── [Act 3] Scena Octaua. + ├── Actus Quartus. Scena Prima. + ├── [Act 4] Scena Secunda. + ├── [Act 4] Scena Tertia. + ├── [Act 4] Scena Quarta. + ├── Actus Quintus. Scena Prima. + ├── [Act 5] Scena Secunda. + ├── [Act 5] Scena Tertia. + ├── [Act 5] Scena Quarta. + └── [Act 5] Scena Quinta. + └── [Colophon] + " + `); + }); +}); diff --git a/__tests__/v4-helpers/style.tests.ts b/__tests__/v4-helpers/style.tests.ts new file mode 100644 index 0000000..3b41846 --- /dev/null +++ b/__tests__/v4-helpers/style.tests.ts @@ -0,0 +1,88 @@ +// @ts-nocheck +import { describe, expect, test } from 'vitest'; +import { createStylesHelper } from '../../src/styles'; +import { Vault4 } from '../../src/vault/vault4'; + +describe('style helper', () => { + test('setting styles', () => { + const vault = new Vault4(); + const helper = createStylesHelper(vault); + let times = 0; + vault.subscribe( + (s) => s, + () => { + times++; + }, + true + ); + + helper.applyStyles({ id: 'https://example.org/manifest-1' }, 'scope-1', { + background: 'red', + }); + helper.applyStyles({ id: 'https://example.org/manifest-1' }, 'scope-2', { + background: 'green', + }); + helper.applyStyles({ id: 'https://example.org/manifest-2' }, 'scope-1', { + background: 'blue', + }); + + expect(times).toEqual(3); + expect(helper.getAppliedStyles({ id: 'https://example.org/manifest-1' })).toMatchInlineSnapshot(` + { + "scope-1": { + "background": "red", + }, + "scope-2": { + "background": "green", + }, + } + `); + expect(helper.getAppliedStyles({ id: 'https://example.org/manifest-2' })).toMatchInlineSnapshot(` + { + "scope-1": { + "background": "blue", + }, + } + `); + }); + + test('works with batching', () => { + const vault = new Vault4(); + const helper = createStylesHelper(vault); + let times = 0; + vault.subscribe(() => { + times++; + }, true); + + vault.batch((v) => { + helper.applyStyles({ id: 'https://example.org/manifest-1' }, 'scope-1', { + background: 'red', + }); + helper.applyStyles({ id: 'https://example.org/manifest-1' }, 'scope-2', { + background: 'green', + }); + helper.applyStyles({ id: 'https://example.org/manifest-2' }, 'scope-1', { + background: 'blue', + }); + }); + + expect(times).toEqual(1); + expect(helper.getAppliedStyles({ id: 'https://example.org/manifest-1' })).toMatchInlineSnapshot(` + { + "scope-1": { + "background": "red", + }, + "scope-2": { + "background": "green", + }, + } + `); + expect(helper.getAppliedStyles({ id: 'https://example.org/manifest-2' })).toMatchInlineSnapshot(` + { + "scope-1": { + "background": "blue", + }, + } + `); + }); +}); diff --git a/__tests__/vault/store.test.ts b/__tests__/vault/store.test.ts index 2ba33f6..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/presentation-3'; -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-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..d298cf0 --- /dev/null +++ b/__tests__/vault/vault-auto.test.ts @@ -0,0 +1,186 @@ +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, vi } 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/vault-auto'; + +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({ + 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([]); + }); + + test('uses default fetcher after switching to v4 when no custom fetcher is provided', async () => { + const remoteManifestId = 'https://example.org/remote-manifest-v4'; + const remoteManifest = { + '@context': 'http://iiif.io/api/presentation/4/context.json', + id: remoteManifestId, + type: 'Manifest', + label: { en: ['Remote manifest'] }, + items: [], + }; + + const fetchSpy = vi.spyOn(globalThis, 'fetch').mockResolvedValue({ + status: 200, + json: async () => remoteManifest, + } as any); + + try { + const vault = new VaultAuto({ enablePresentation4: true }); + + // Switch to v4 first so VaultAuto delegates remote load to Vault4. + vault.loadSync(p4SceneManifest.id, JSON.parse(JSON.stringify(p4SceneManifest))); + expect(vault.getVersion()).toBe(4); + + const loaded = await vault.load(remoteManifestId); + expect(fetchSpy).toHaveBeenCalledWith(remoteManifestId); + expect(loaded?.id).toBe(remoteManifestId); + } finally { + fetchSpy.mockRestore(); + } + }); +}); 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..bd2a2d1 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'; diff --git a/__tests__/vault/vault-versions.test.ts b/__tests__/vault/vault-versions.test.ts new file mode 100644 index 0000000..f8aece8 --- /dev/null +++ b/__tests__/vault/vault-versions.test.ts @@ -0,0 +1,49 @@ +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'; +import p4SceneManifest from '../../fixtures/presentation-4/cookbook/0608-mvm-3d.json'; +import { Vault } from '../../src/vault'; +import { Vault4 } from '../../src/vault/vault4'; + +describe('Vault versions', () => { + test('Vault remains stable for v3 fixtures', () => { + const vaultA = new Vault(); + const vaultB = new Vault(); + + const manifestA = vaultA.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + const manifestB = vaultB.loadSync(cssManifest.id, JSON.parse(JSON.stringify(cssManifest))); + + invariant(manifestA); + invariant(manifestB); + + 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.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..6d6f49c --- /dev/null +++ b/__tests__/vault/vault4-types.test.ts @@ -0,0 +1,93 @@ +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/vault4'; + +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/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..9893547 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--choice.json @@ -0,0 +1,80 @@ +{ + "@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..569b8b7 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--composite.json @@ -0,0 +1,86 @@ +{ + "@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..3808c12 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--css.json @@ -0,0 +1,122 @@ +{ + "@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..2059c91 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--multimedia.json @@ -0,0 +1,71 @@ +{ + "@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..f484465 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc-av.json @@ -0,0 +1,118 @@ +{ + "@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..123d262 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/cookbook--toc.json @@ -0,0 +1,357 @@ +{ + "@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/exhibitions--novieten.json b/fixtures/presentation-4/upgraded-from-p3/exhibitions--novieten.json new file mode 100644 index 0000000..9526a7f --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/exhibitions--novieten.json @@ -0,0 +1,4343 @@ +{ + "@context": "http://iiif.io/api/presentation/4/context.json", + "id": "https://heritage.tudelft.nl/iiif/novieten/manifest", + "type": "Manifest", + "label": { + "nl": [ + "Novieten" + ], + "en": [ + "Novices" + ] + }, + "homepage": [ + { + "id": "https://heritage.tudelft.nl/nl/exhibitions/novieten", + "type": "Text", + "format": "text/html", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/en/exhibitions/novieten", + "type": "Text", + "format": "text/html", + "language": "en" + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/2e68af88-2b63-6c45-f4e3-6e2d3fdfa35d", + "type": "Canvas", + "label": { + "nl": [ + "De enige vrouw in de collegezaal" + ], + "en": [ + "The only woman in the lecture hal" + ] + }, + "behavior": [ + "w-8", + "h-8" + ], + "height": 2749, + "width": 2666, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/2e68af88-2b63-6c45-f4e3-6e2d3fdfa35d/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/2e68af88-2b63-6c45-f4e3-6e2d3fdfa35d/annotations/97", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/1a5e682f-f7fc-f089-a448-91cd572b7a77", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/2e68af88-2b63-6c45-f4e3-6e2d3fdfa35d/annotations/98", + "type": "Annotation", + "motivation": [ + "describing" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/79fec593-1bc9-3275-8b53-7fce7790ee8b/desc/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

De enige vrouw in de collegezaal (Introductieweek 1965)

\n\n

TU Delft Library, Bijzondere Collecties

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/79fec593-1bc9-3275-8b53-7fce7790ee8b/desc/en", + "type": "TextualBody", + "format": "text/html", + "value": "

The only woman in the lecture hal (Orientation Week 1965)

\n\n

TU Delft Library, Special Collections

", + "language": "en" + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/2e68af88-2b63-6c45-f4e3-6e2d3fdfa35d", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=2194,860,400,400" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/2e68af88-2b63-6c45-f4e3-6e2d3fdfa35d/annotations/98", + "id": "vault://iiif-parser/v4/SpecificResource/3cb323af", + "type": "SpecificResource" + } + ] + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/705cb49b-41f4-492b-8a4c-0347efc4ba0d", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/1a5e682f-f7fc-f089-a448-91cd572b7a77", + "type": "Annotation", + "label": { + "nl": [ + "De enige vrouw in de collegezaal (Introductieweek 1965)" + ], + "en": [ + "The only woman in the lecture hal (Orientation Week 1965)" + ] + }, + "summary": { + "nl": [ + "TU Delft Library, Bijzondere Collecties" + ], + "en": [ + "TU Delft Library, Special Collections" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/e16c7a6b-9672-d551-70d7-08c88609efb1/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/e16c7a6b-9672-d551-70d7-08c88609efb1", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 774, + "sizes": [ + { + "width": 100, + "height": 76 + }, + { + "width": 200, + "height": 151 + }, + { + "width": 400, + "height": 302 + }, + { + "width": 1024, + "height": 774 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/1a5e682f-f7fc-f089-a448-91cd572b7a77/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/21/e16c7a6b-9672-d551-70d7-08c88609efb1/full/full/0/default.jpg", + "type": "ContentResource" + }, + "selector": [ + { + "type": "iiif:ImageApiSelector", + "region": "559,0,2666,2749" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/1a5e682f-f7fc-f089-a448-91cd572b7a77", + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/1a5e682f-f7fc-f089-a448-91cd572b7a77/specificResource", + "type": "SpecificResource" + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/2e68af88-2b63-6c45-f4e3-6e2d3fdfa35d", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=0,0,2666,2749" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/1a5e682f-f7fc-f089-a448-91cd572b7a77", + "id": "vault://iiif-parser/v4/SpecificResource/864556c0", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/d5040e5c-1e59-1da8-058d-aad3bb7e0e49", + "type": "Canvas", + "behavior": [ + "info", + "w-4", + "h-4" + ], + "height": 1000, + "width": 1000, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/d5040e5c-1e59-1da8-058d-aad3bb7e0e49/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/d5040e5c-1e59-1da8-058d-aad3bb7e0e49/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/d5040e5c-1e59-1da8-058d-aad3bb7e0e49/annotations/0/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

Novieten

\n\n

Nieuwe leden van de Delftste Vrouwelijke Studentenvereniging (DVSV) werden in het verleden ‘novieten’ genoemd, tegenover de gebruikelijke term ‘feuten’ voor mannen. Maar anders dan hun mannelijke medestudenten, die na het eerste jaar werden opgenomen in een robuuste mannengemeenschap, werden de vrouwen ‘beleefd genegeerd’ en geacht zich eerst maar eens te bewijzen.

Ondanks dat in 2018 – het laatste jaar waarover de TU Delft statistische data heeft gepubliceerd – de studentenpopulaties van de studies Bouwkunde en Industrieel Ontwerpen uit een gelijk aandeel mannen en vrouwen bestaan, is het percentage vrouwelijke eerstejaars studenten aan de TU Delft over het geheel genomen nog altijd niet hoger dan 30%. Hoe heeft dit zich in de loop der tijd ontwikkeld en hoe zijn vrouwen in het verleden omgegaan met hun minderheidsrol?

Deze digitale tentoonstelling begint met een nieuwe grafiek die een overzicht geeft van het aantal en het percentage vrouwelijke eerstejaars in de periode 1905-2018. Als startdatum is 1905 gekozen omdat in dat jaar de Polytechnische School werd omgevormd tot Technische Hogeschool, waarmee vrouwen voltijds in Delft konden gaan studeren. De grafiek laat geen lineair proces zien, maar een dynamisch proces met pieken en dalen. Aan de hand van de grafiek ontvouwen zich een aantal verhalen.

Allereerst over de DVSV, opgericht in 1904, waarin vrouwelijke studenten zich verenigden en ontplooiden, grotendeels zonder een overkoepelend emancipatorisch programma. De speeches van presidentes aan de novieten laten zien hoe ‘meisjes-studenten’ zich geacht werden te gedragen binnen de universitaire gemeenschap: \"val vooral niet te veel op,\" was het voornaamste devies vóór de Tweede Wereldoorlog.

Van het relatief hoge aandeel vrouwen in de vooroorlogse jaren, wordt Antonia Korvezee uitgelicht, die in 1954 werd aangesteld als eerste vrouwelijke hoogleraar van de Technische Hogeschool. Korvezee, in Delft opgeleid en in Delft gepromoveerd, werkte begin jaren dertig enige jaren in Parijs bij madame Curie aan het toen nieuwe specialisme van radioactiviteit. Deze kennis gebruikte ze later als hoogleraar om het vakgebied in Nederland op de kaart te zetten.

Het verhaal over de DVSV loopt door na de Tweede Wereldoorlog: Marian Geense schreef een boek over de levensloop van de vrouwen uit haar jaarclub uit 1956. Deze tentoonstelling bevat een voorpublicatie. Ook wordt een recente publicatie uitgelicht over een nog steeds bestaand vrouwenhuis in de Delftse binnenstad: de Boterbrug, opgericht in 1969. Een interview met één van de oprichtsters van het huis is hier opnieuw gepubliceerd.

Tevens uit de jaren zestig stamt de fictieve documentaire ‘Mejuffrouw, Mijne Heren’ van Mart van de Busken. De glorieuze film geeft een geweldig tijdsbeeld van de TH. De verteller is een van de 'zeldzame, tot idool verheven' vrouwelijke studentes, die als enige 'mejuffrouw' plaatsneemt tussen de mannen in de collegezaal.

Vanaf de jaren zeventig loopt zowel het absolute aantal als het relatieve percentage vrouwen op. Hiermee dient zich een nieuw tijdperk aan waarin vrouwenemancipatie een centrale rol inneemt. Voor de tentoonstelling heeft de recent afgestudeerde Noortje Weenink een interview afgenomen met Anna Vos, de oprichtster van het vak Vrouwenstudies aan de Faculteit Bouwkunde. Het gesprek laat zien hoe vrouwelijke studenten allerlei normen aan de kaak stelden die de basis vormden van hun eigen vakgebied.

Anna Vos studeerde af bij Franziska Bollerey die in 1979 werd aangesteld als tweede vrouwelijke hoogleraar aan de TH Delft, 25 jaar na Korvezee. In de jaren tachtig speelde zij in een toneelstuk tijdens een van de meisjesinformatiedagen, bedoeld om meer vrouwelijke studenten aan te trekken voor technische studies.

De tentoonstelling sluit af met het boek Technische Universiteit, een mannenwereld, uitgegeven door Studium Generale in 1989. In het boek is de blik omgedraaid en wordt prikkelend onderzocht wat het betekent om een mannengemeenschap te zijn – en wat ervoor nodig is om deze te veranderen.

Ondanks het toenemende aantal 'novieten' en de lange geschiedenis van vrouwelijke studenten en onderzoekers in Delft, staat de universiteit tegenwoordig nog steeds te boek als een mannengemeenschap. De thema's diversiteit en inclusiviteit staan hoog op de agenda, waarbij het al lang niet meer gaat om enkel het binaire onderscheid tussen mannen en vrouwen. De eerdere ervaringen van vrouwen die in deze tentoonstelling aan bod komen, kunnen desalniettemin handvaten aanbieden voor nieuwe generaties zodat zij (in de woorden van Anna Vos) niet telkens het wiel opnieuw hoeven uit te vinden maar kunnen voortbouwen op het werk van hun voorgangers.

Samengesteld door Sarah Edrisy, Jules Schoonman en Abel Streefland (Academisch Erfgoed team, TU Delft Library). Opmaak grafiek door Studio Mellegers van Dam.

Met dank aan:

  • Ted Barendse (Education & Student Affairs)
  • Margreet de Boer
  • Marjan van den Bos
  • Mart van den Busken
  • Marian Geense
  • Marcel Janssen
  • Frida de Jong
  • Elizabeth Poot
  • Roland van Roijen (NewMedia Centre)
  • Anna Vos
  • Noortje Weenink
  • Charlotte van Wijk (Faculteit Bouwkunde)
  • Koninklijke Bibliotheek
  • Atria, kennisinstituut voor emancipatie en vrouwengeschiedenis
", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/d5040e5c-1e59-1da8-058d-aad3bb7e0e49/annotations/0/en", + "type": "TextualBody", + "format": "text/html", + "value": "

Novices

\n\n

In the past, new members of the Delftste Vrouwelijke Studentenvereniging (DVSV – Delft student society for women) were called ‘novieten’ (‘novices’) as opposed to ‘feuten’ (with the connotation of ‘foetuses’), the term used for their male counterparts. After the first year, male students were welcomed into a robust community of men. Women, on the other hand, were a minority group. They were ‘politely ignored’ and expected to first prove themselves worthy.

The last year about which TU Delft published statistical data was 2018. Even though in that year an equal number of men and women were studying Architecture and Industrial Design, overall, the percentage of female first-year students at TU Delft remained below 30%. How did this develop over time and, in the past, how did women deal with their role as a minority group?

This digital exhibition starts with a graph that gives an overview of the number and percentage of female first-year students from 1905 to 2018. The year 1905 was chosen as the starting date because that was when the Polytechnic School became the 'Technische Hogeschool' (Institute of Technology) and women were able to study in Delft on a full-time basis. The graph does not show a linear progression, but rather a dynamic process with peaks and troughs. Using the graph, we can see several stories unfolding.

The first involves the DVSV, established in 1904. Female students came together and were active in this society, largely without an overarching emancipation programme. The speeches given to novices by presidents demonstrate how ‘girl students’ were expected to behave within the university community: ‘Above all, don’t stand out too much,’ was the main motto prior to WWII.

Out of a relatively high number of women in the pre-war years, the spotlight is turned on Antonia Korvezee who, in 1954, became the first female professor appointed at the Institute of Technology. Korvezee, who trained at the institute and obtained a PhD there, had worked at the famous lab of Marie Curie for some time in the early 1930s, focusing on the then new specialism of radioactivity. Later, as a professor, she used this knowledge to focus attention on that field in the Netherlands.

The story of the DVSV continues after WWII: Marian Geense wrote a book on the lives of the women who had been DVSV freshers with her in 1956. This exhibition contains a preprint version of the book. Another recent publication is featured. It tells the story of a still existing girls house in the heart of Delft: the Boterbrug, established in 1969. An interview with one of the founders of the house is reprinted here.

Mart van de Busken’s 'Mejuffrouw, Mijne Heren' (Miss and Gentlemen) also dates back to the 1960s. This wonderful film provides a fascinating portrait of the institute at that time. The narrator is one of the ‘rare female students elevated to an icon’, the only ‘miss’ seated among all the ‘gentlemen’ in the lecture hall.

In the 1970s, both the absolute number and relative percentage of women started to increase. This marked the beginning of a new era in which women’s emancipation played a central role. For the exhibition, recent graduate Noortje Weenink interviewed Anna Vos, the founder of the Women’s Studies discipline within the Architecture Faculty. The interview reveals how female students challenged all kinds of norms that constituted the basis of their own field of study.

Anna Vos graduated under Franziska Bollerey who, in 1979, was the second female professor appointed at the Institute of Technology, 25 years after Korvezee. In the 1980s, Vos acted in a play during an information day for female students. The aim was to attract more women to enrol in technical studies.

The exhibition ends with the book 'Technische Universiteit, een mannenwereld' (University of Technology, a Man’s World) published by Studium Generale in 1989. In this book, the perspective is reversed, and what it means to be a community of men is provocatively examined alongside what it would take to bring about change.

Despite the increasing number of 'novices' and the long tradition of female students and researchers at Delft, the university is still identified as a community of men. Diversity and inclusion are given high priority and it’s no longer just about the binary distinction between men and women. Nonetheless, the past experiences of women that are dealt with in this exhibition can serve as reference points for new generations so that – to paraphrase Anna Vos – they don’t have to keep rediscovering the wheel, but can build on the work of their predecessors.

Curated by Sarah Edrisy, Jules Schoonman and Abel Streefland (Academisch Erfgoed team, TU Delft Library). Graph design by Studio Mellegers van Dam.

With thanks to:

  • Ted Barendse (Education & Student Affairs)
  • Margreet de Boer
  • Marjan van den Bos
  • Mart van den Busken
  • Marian Geense
  • Marcel Janssen
  • Frida de Jong
  • Elizabeth Poot
  • Roland van Roijen (NewMedia Centre)
  • Anna Vos
  • Noortje Weenink
  • Charlotte van Wijk (Faculty of Architecture and the Built Environment)
  • Royal Library of the Netherlands
  • Atria, institute on gender equality and women's history
", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/d5040e5c-1e59-1da8-058d-aad3bb7e0e49", + "type": "Canvas" + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/8bfe4657-bfc5-26ba-ae16-c349fc9266eb", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/497d8d8c-f07e-dd1c-8655-d3fe783c2b31", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/ab31e034-8bb1-12bf-1c7b-2f9272ddddc2/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

Introductie

\n\n

Nieuwe leden van de Delftste Vrouwelijke Studentenvereniging (DVSV) werden in het verleden ‘novieten’ genoemd, tegenover de gebruikelijke term ‘feuten’ voor mannen. Maar anders dan hun mannelijke medestudenten, die na het eerste jaar werden opgenomen in een robuuste mannengemeenschap, werden de vrouwen als minderheid ‘beleefd genegeerd’ en geacht zich eerst maar eens te bewijzen. Hoe zijn vrouwen in het verleden omgegaan met hun minderheidsrol?

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/ab31e034-8bb1-12bf-1c7b-2f9272ddddc2/en", + "type": "TextualBody", + "format": "text/html", + "value": "

Introduction

\n\n

In the past, new members of the 'Delftste Vrouwelijke Studentenvereniging' (DVSV – Delft student society for women) were called ‘novieten’ (‘novices’) as opposed to ‘feuten’ (with the connotation of ‘foetuses’), the term used for their male counterparts. After the first year, male students were welcomed into a robust community of men. Women, on the other hand, were a minority group. They were ‘politely ignored’ and expected to first prove themselves worthy. In the past, how did women deal with their role as a minority group?

", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/d5040e5c-1e59-1da8-058d-aad3bb7e0e49", + "type": "Canvas" + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/193095ba-8eeb-9716-8f29-881b3d1ac982", + "type": "Canvas", + "label": { + "nl": [ + "Eerstejaarsstudenten van de TH en TU Delft in de periode 1905-2018" + ], + "en": [ + "First-year students at the Delft Institute of Technology and TU Delft in the period 1905-2018" + ] + }, + "summary": { + "nl": [ + "Deze grafiek toont het absolute aantal eerstejaars studenten, de verdeling tussen man en vrouw en het percentage vrouwen. Pas vanaf 1905 is het voor vrouwen mogelijk om in Delft een volledige technische studie te volgen.", + "Opvallend aan de grafiek is dat het percentage vrouwen vóór de Tweede Wereldoorlog hoger is dan in de periode erna. Pas in 1983 stijgt het percentage weer uit boven de 11%, het maximum uit de vooroorlogse jaren.", + "In de loop der tijd is de definitie van eerstejaars studenten veranderd. Tot 1982 wordt er in de statistieken geen onderscheid gemaakt tussen verschillende soorten eerstejaars. Vanaf 1982 zijn de aantallen eerstejaars gebruikt inclusief 'interne omzwaaiers' (studenten die van studie wisselen), omdat deze het best overeenkwamen met de eerdere gegevens. Ook de invoering van de bachelor-masterstructuur in 2002 heeft impact gehad op de wijze van tellen, wat waarschijnlijk de 'dip' in de grafiek verklaart rond dat jaar." + ], + "en": [ + "This graph shows the absolute number of first-year students, the distribution of men and women, and the percentage of women. It was only possible for women to follow a full-time technical study at Delft from 1905.", + "A striking aspect of the graph is that the percentage of women before WWII was higher than in the period that followed. The percentage only increases to more than 11% – the highest pre-war percentage – in 1983.", + "Over the course of time, the definition of first-year students changed. Up until 1982, no statistical distinction was made between different types of first-year students. From 1982, the numbers given for first-year students include 'internal switchers' (students who changed to a different study) because these figures were best in line with earlier data. The introduction of the bachelor’s-master’s system in 2002 also had an impact on the calculation method which probably explains the ‘dip' the graph shows in that year." + ] + }, + "requiredStatement": { + "value": { + "nl": [ + "Bronnen: Jaarboeken en -verslagen TH Delft, Statistisch jaarboeken TU Delft en OSIRIS" + ], + "en": [ + "Sources: Delft Institute of Technology Yearbooks and reports, TU Delft Statistical Yearbooks and OSIRIS" + ] + } + }, + "behavior": [ + "right", + "w-12", + "h-8" + ], + "height": 991, + "width": 992, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/193095ba-8eeb-9716-8f29-881b3d1ac982/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/193095ba-8eeb-9716-8f29-881b3d1ac982/annotations/99", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/e74ff4bb-9529-2b0a-b384-9b0b6880139c", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/193095ba-8eeb-9716-8f29-881b3d1ac982/annotations/100", + "type": "Annotation", + "motivation": [ + "describing" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/197b9cf0-b289-f8ac-606b-20730774a7a0/desc/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

Voor de Tweede Wereldoorlog

\n\n

Opvallend aan de grafiek is dat het percentage vrouwen vóór de Tweede Wereldoorlog hoger is dan in de periode erna. Pas in 1983 stijgt het percentage weer uit boven de 11%, het maximum uit de vooroorlogse jaren.

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/197b9cf0-b289-f8ac-606b-20730774a7a0/desc/en", + "type": "TextualBody", + "format": "text/html", + "value": "

Before the Second World War

\n\n

A striking aspect of the graph is that the percentage of women before WWII was higher than in the period that followed. The percentage only increases to more than 11% – the highest pre-war percentage – in 1983.

", + "language": "en" + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/193095ba-8eeb-9716-8f29-881b3d1ac982", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=49,567,327,330" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/193095ba-8eeb-9716-8f29-881b3d1ac982/annotations/100", + "id": "vault://iiif-parser/v4/SpecificResource/f85e9dee", + "type": "SpecificResource" + } + ] + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/fa80903b-fa14-3037-1730-81258e1a8a62", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/e74ff4bb-9529-2b0a-b384-9b0b6880139c", + "type": "Annotation", + "label": { + "nl": [ + "Eerstejaarsstudenten van de TH en TU Delft in de periode 1905-2018" + ], + "en": [ + "First-year students at the Delft Institute of Technology and TU Delft in the period 1905-2018" + ] + }, + "summary": { + "nl": [ + "Bronnen: Jaarboeken en -verslagen TH Delft, Statistisch jaarboeken TU Delft en OSIRIS" + ], + "en": [ + "Sources: Delft Institute of Technology Yearbooks and reports, TU Delft Statistical Yearbooks and OSIRIS" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/4d8776d3-31a9-bf36-22ad-536c39f6ba5d/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/4d8776d3-31a9-bf36-22ad-536c39f6ba5d", + "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 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/21/4d8776d3-31a9-bf36-22ad-536c39f6ba5d/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 7087, + "width": 7088, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/4d8776d3-31a9-bf36-22ad-536c39f6ba5d", + "protocol": "http://iiif.io/api/image", + "width": 7088, + "height": 7087, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/193095ba-8eeb-9716-8f29-881b3d1ac982", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=0,0,992,991" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/e74ff4bb-9529-2b0a-b384-9b0b6880139c", + "id": "vault://iiif-parser/v4/SpecificResource/b5e390e1", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426", + "type": "Canvas", + "label": { + "nl": [ + "'Weest geen preutsch juffertje'" + ], + "en": [ + "'Don’t be a prudish little miss'" + ] + }, + "summary": { + "nl": [ + "De Delftse Vrouwelijke Studentenvereniging (DVSV), opgericht in 1904, was een gezelligheidsvereniging voor vrouwelijke studenten aan de TH. Tot 1970 werden vrijwel alle vrouwelijke studenten lid. De vereniging telde in de jaren twintig ongeveer 100 leden.", + "In redes voor eerstejaars, afgedrukt in de almanakken, gaven de achtereenvolgende presidentes instructies aan de nieuwe leden. Tot 1940 is het belangrijkste devies: val niet op als vrouw en wees dankbaar voor de kans om in Delft te studeren. Een openlijke feministische opstelling werd afgekeurd. Pas na de Tweede Wereldoorlog zou dit geleidelijk gaan veranderen." + ], + "en": [ + "The DVSV (Delft student society for women), established in 1904, was a social club for female students at the Institute of Technology. Up until 1970, virtually all female students were members. In the 1920s, its membership was around 100 students.", + "Successive society presidents gave speeches to first-year students which included instructions. These speeches were printed in yearbooks. Up until 1940, the most important motto was: don’t stand out as a woman and be grateful for the opportunity to study in Delft. Any openly feminist attitude was rejected. This would only begin to change after WWII. You can read here the speeches given in 1930 and 1931." + ] + }, + "requiredStatement": { + "label": { + "nl": [ + "" + ] + }, + "value": { + "nl": [ + "Lees hier de redes uit 1930 en 1931. Klik op 'Start tour' en vervolgens op 'Bekijk object' om de volledige almanakken te bekijken." + ], + "en": [ + "Click ‘Start tour' and then 'View object' to view the complete yearbooks." + ] + } + }, + "behavior": [ + "left", + "w-12", + "h-6" + ], + "height": 762, + "width": 999, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426/annotations/101", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/0a21149f-4dc2-c711-2072-5de2f0cd68e4", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426/annotations/102", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/cbd6e9a7-f9e1-d4bd-a301-25101d08431b", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426/annotations/103", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/d61be51e-edb9-fc8e-fcb7-dc1c54eb3361", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426/annotations/104", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/63ba0257-0b2a-2bc7-154d-b1fc1a926cde", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426/annotations/105", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/32b1ce1c-1454-fd44-88a4-8faa1a1d5842", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426/annotations/106", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/24e929ee-9902-e397-88f2-400352c29689", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426/annotations/107", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/37a0537b-5074-55a2-a5df-a5f8a013a602", + "type": "Annotation" + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/957f3cb9-c955-0561-e37e-aa31d182c402", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/0a21149f-4dc2-c711-2072-5de2f0cd68e4", + "type": "Annotation", + "label": { + "nl": [ + "Toespraak tot de nieuwe leden in 1930" + ], + "en": [ + "Speech to the new members in 1930" + ] + }, + "summary": { + "nl": [ + "1/2" + ], + "en": [ + "1/2" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/6/26266921-71ad-4692-aa85-3257b2d5d036/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/6/26266921-71ad-4692-aa85-3257b2d5d036", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 730, + "height": 1024, + "sizes": [ + { + "width": 71, + "height": 100 + }, + { + "width": 143, + "height": 200 + }, + { + "width": 285, + "height": 400 + }, + { + "width": 730, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/6/26266921-71ad-4692-aa85-3257b2d5d036/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 2301, + "width": 1640, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/6/26266921-71ad-4692-aa85-3257b2d5d036", + "protocol": "http://iiif.io/api/image", + "width": 1640, + "height": 2301, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 730, + "height": 1024 + }, + { + "width": 285, + "height": 400 + }, + { + "width": 143, + "height": 200 + }, + { + "width": 71, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=67,80,220,307" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/0a21149f-4dc2-c711-2072-5de2f0cd68e4", + "id": "vault://iiif-parser/v4/SpecificResource/09f9e76e", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/cbd6e9a7-f9e1-d4bd-a301-25101d08431b", + "type": "Annotation", + "label": { + "nl": [ + "Toespraak tot de nieuwe leden 1930" + ], + "en": [ + "Speech to the new members in 1930" + ] + }, + "summary": { + "nl": [ + "2/2" + ], + "en": [ + "2/2" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/6/1ada59a2-03da-42b6-a6aa-9f96e677b463/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/6/1ada59a2-03da-42b6-a6aa-9f96e677b463", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 739, + "height": 1024, + "sizes": [ + { + "width": 72, + "height": 100 + }, + { + "width": 144, + "height": 200 + }, + { + "width": 289, + "height": 400 + }, + { + "width": 739, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/6/1ada59a2-03da-42b6-a6aa-9f96e677b463/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 2304, + "width": 1662, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/6/1ada59a2-03da-42b6-a6aa-9f96e677b463", + "protocol": "http://iiif.io/api/image", + "width": 1662, + "height": 2304, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 739, + "height": 1024 + }, + { + "width": 289, + "height": 400 + }, + { + "width": 144, + "height": 200 + }, + { + "width": 72, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=259,58,217,299" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/cbd6e9a7-f9e1-d4bd-a301-25101d08431b", + "id": "vault://iiif-parser/v4/SpecificResource/6e047077", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/d61be51e-edb9-fc8e-fcb7-dc1c54eb3361", + "type": "Annotation", + "label": { + "nl": [ + "Bestuur der D.V.S.V. 1928-1929" + ], + "en": [ + "Board of D.V.S.V. 1928-1929" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/6/acd52dad-b8b1-4afa-9ddf-77ee85397003/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/6/acd52dad-b8b1-4afa-9ddf-77ee85397003", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 728, + "height": 1024, + "sizes": [ + { + "width": 71, + "height": 100 + }, + { + "width": 142, + "height": 200 + }, + { + "width": 284, + "height": 400 + }, + { + "width": 728, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/d61be51e-edb9-fc8e-fcb7-dc1c54eb3361/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/6/acd52dad-b8b1-4afa-9ddf-77ee85397003/full/full/0/default.jpg", + "type": "ContentResource" + }, + "selector": [ + { + "type": "iiif:ImageApiSelector", + "region": "376,407,1042,758" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/d61be51e-edb9-fc8e-fcb7-dc1c54eb3361", + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/d61be51e-edb9-fc8e-fcb7-dc1c54eb3361/specificResource", + "type": "SpecificResource" + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=466,93,342,245" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/d61be51e-edb9-fc8e-fcb7-dc1c54eb3361", + "id": "vault://iiif-parser/v4/SpecificResource/cfa0a899", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/63ba0257-0b2a-2bc7-154d-b1fc1a926cde", + "type": "Annotation", + "label": { + "nl": [ + "Toespraak tot de nieuwe leden in 1931" + ], + "en": [ + "Speech to the new members in 1931" + ] + }, + "summary": { + "nl": [ + "1/3" + ], + "en": [ + "1/3" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/6/f778d6f7-4ff1-467f-a81c-a2b77ece034c/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/6/f778d6f7-4ff1-467f-a81c-a2b77ece034c", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 728, + "height": 1024, + "sizes": [ + { + "width": 71, + "height": 100 + }, + { + "width": 142, + "height": 200 + }, + { + "width": 284, + "height": 400 + }, + { + "width": 728, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/6/f778d6f7-4ff1-467f-a81c-a2b77ece034c/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 2363, + "width": 1680, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/6/f778d6f7-4ff1-467f-a81c-a2b77ece034c", + "protocol": "http://iiif.io/api/image", + "width": 1680, + "height": 2363, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 728, + "height": 1024 + }, + { + "width": 284, + "height": 400 + }, + { + "width": 142, + "height": 200 + }, + { + "width": 71, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=332,386,211,294" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/63ba0257-0b2a-2bc7-154d-b1fc1a926cde", + "id": "vault://iiif-parser/v4/SpecificResource/95fc7f42", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/32b1ce1c-1454-fd44-88a4-8faa1a1d5842", + "type": "Annotation", + "label": { + "nl": [ + "Toespraak tot de nieuwe leden in 1931" + ], + "en": [ + "Speech to the new members in 1931" + ] + }, + "summary": { + "nl": [ + "2/3" + ], + "en": [ + "2/3" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/6/c28b095c-91d1-4c47-b0eb-5dfe97f5b8ea/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/6/c28b095c-91d1-4c47-b0eb-5dfe97f5b8ea", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 716, + "height": 1024, + "sizes": [ + { + "width": 70, + "height": 100 + }, + { + "width": 140, + "height": 200 + }, + { + "width": 280, + "height": 400 + }, + { + "width": 716, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/6/c28b095c-91d1-4c47-b0eb-5dfe97f5b8ea/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 2358, + "width": 1648, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/6/c28b095c-91d1-4c47-b0eb-5dfe97f5b8ea", + "protocol": "http://iiif.io/api/image", + "width": 1648, + "height": 2358, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 716, + "height": 1024 + }, + { + "width": 280, + "height": 400 + }, + { + "width": 140, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=524,416,214,303" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/32b1ce1c-1454-fd44-88a4-8faa1a1d5842", + "id": "vault://iiif-parser/v4/SpecificResource/79656d80", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/24e929ee-9902-e397-88f2-400352c29689", + "type": "Annotation", + "label": { + "nl": [ + "Toespraak tot de nieuwe leden in 1931" + ], + "en": [ + "Speech to the new members in 1931" + ] + }, + "summary": { + "nl": [ + "3/3" + ], + "en": [ + "3/3" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/6/49a2d230-4508-4020-ba89-2f216cc6f6a9/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/6/49a2d230-4508-4020-ba89-2f216cc6f6a9", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 730, + "height": 1024, + "sizes": [ + { + "width": 71, + "height": 100 + }, + { + "width": 143, + "height": 200 + }, + { + "width": 285, + "height": 400 + }, + { + "width": 730, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/6/49a2d230-4508-4020-ba89-2f216cc6f6a9/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 2365, + "width": 1686, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/6/49a2d230-4508-4020-ba89-2f216cc6f6a9", + "protocol": "http://iiif.io/api/image", + "width": 1686, + "height": 2365, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 730, + "height": 1024 + }, + { + "width": 285, + "height": 400 + }, + { + "width": 143, + "height": 200 + }, + { + "width": 71, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=719,396,211,294" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/24e929ee-9902-e397-88f2-400352c29689", + "id": "vault://iiif-parser/v4/SpecificResource/4875ffa8", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/37a0537b-5074-55a2-a5df-a5f8a013a602", + "type": "Annotation", + "label": { + "nl": [ + "Bestuur der D.V.S.V. 1929-1930" + ], + "en": [ + "Board of D.V.S.V. 1929-1930" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/6/c9f44cc6-2d5f-484f-98f1-491b030d755d/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/6/c9f44cc6-2d5f-484f-98f1-491b030d755d", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 730, + "height": 1024, + "sizes": [ + { + "width": 71, + "height": 100 + }, + { + "width": 143, + "height": 200 + }, + { + "width": 285, + "height": 400 + }, + { + "width": 730, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/37a0537b-5074-55a2-a5df-a5f8a013a602/specificResource", + "type": "SpecificResource", + "source": { + "id": "https://dlc.services/iiif-img/7/6/c9f44cc6-2d5f-484f-98f1-491b030d755d/full/full/0/default.jpg", + "type": "ContentResource" + }, + "selector": [ + { + "type": "iiif:ImageApiSelector", + "region": "377,522,1040,591" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/37a0537b-5074-55a2-a5df-a5f8a013a602", + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/37a0537b-5074-55a2-a5df-a5f8a013a602/specificResource", + "type": "SpecificResource" + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/0a168bd3-4104-9dfa-2c47-ac7d53506426", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=48,481,299,165" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/37a0537b-5074-55a2-a5df-a5f8a013a602", + "id": "vault://iiif-parser/v4/SpecificResource/a20f87b4", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f087a33b-cf1f-923f-407d-87e99fe269a1", + "type": "Canvas", + "label": { + "nl": [ + "Koker met promotiebul van Antonia Korvezee" + ], + "en": [ + "Tube with the PhD award certificate of Antonia Korvezee" + ] + }, + "behavior": [ + "w-8", + "h-6" + ], + "height": 906, + "width": 1000, + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/d81f2d55-8e04-1dba-e1f8-9fe503dbfff3", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/f47fbd93-77ad-37fc-c6ac-a1a1dbe2bdaa", + "type": "Annotation", + "label": { + "nl": [ + "Koker met promotiebul van Antonia Korvezee" + ], + "en": [ + "Tube with the PhD award certificate of Antonia Korvezee" + ] + }, + "summary": { + "nl": [ + "TU Delft Library, Bijzondere Collecties, 2016.0290.LIB" + ], + "en": [ + "TU Delft Library, Special Collections, 2016.0290.LIB" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/18/e76ce7df-b9c6-47d4-b5e0-8f1dc8fd1d51/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/18/e76ce7df-b9c6-47d4-b5e0-8f1dc8fd1d51", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 928, + "sizes": [ + { + "width": 100, + "height": 91 + }, + { + "width": 200, + "height": 181 + }, + { + "width": 400, + "height": 363 + }, + { + "width": 1024, + "height": 928 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/18/e76ce7df-b9c6-47d4-b5e0-8f1dc8fd1d51/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 1970, + "width": 2173, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/18/e76ce7df-b9c6-47d4-b5e0-8f1dc8fd1d51", + "protocol": "http://iiif.io/api/image", + "width": 2173, + "height": 1970, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 928 + }, + { + "width": 400, + "height": 363 + }, + { + "width": 200, + "height": 181 + }, + { + "width": 100, + "height": 91 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f087a33b-cf1f-923f-407d-87e99fe269a1", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=0,0,1000,906" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/f47fbd93-77ad-37fc-c6ac-a1a1dbe2bdaa", + "id": "vault://iiif-parser/v4/SpecificResource/30ffd0d9", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/ac93661b-0f24-170f-c8ed-e158250d2bbf", + "type": "Canvas", + "behavior": [ + "info", + "w-4", + "h-6" + ], + "height": 1000, + "width": 1000, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/ac93661b-0f24-170f-c8ed-e158250d2bbf/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/ac93661b-0f24-170f-c8ed-e158250d2bbf/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/ac93661b-0f24-170f-c8ed-e158250d2bbf/annotations/0/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

Prof. Dr. Ir. Antonia Korvezee (1899-1978)

\n\n

Antonia (Toos) Korvezee werd in 1954 de eerste vrouwelijke hoogleraar aan de Technische Hogeschool in Delft. Ze werd geboren in Friesland maar groeide op in Den Haag, waar ze de ‘HBS voor jongens’ doorliep. Vanwege haar aanleg voor wiskunde besloot ze in Delft te gaan studeren. In 1922 studeerde ze cum laude af in de scheikundige technologie en werd ze voor twee jaar assistente bij analytische scheikunde. Ze vervolgde haar opleiding in Delft door bij professor Scheffer een promotieonderzoek te doen. In 1930 promoveerde ze met lof op een onderwerp over koperchloride als katalysator. Van de 26 dissertaties die binnen het lab van professor Scheffer werden geschreven waren er 5 van de hand van vrouwen - voor die tijd een hoog percentage.

Begin jaren dertig werkte Korvezee met een toelage van het Delfts Hogeschoolfonds enige semesters in Parijs bij Irène Curie aan het toen nieuwe specialisme van radioactiviteit. Terug in Delft werd ze in 1935 privaatdocente in dit vakgebied. In status stelde dit niet veel voor, maar vaak kon dit dienen als een opstap naar een nieuw te creëren leerstoel.

Door tussenkomst van de Tweede Wereldoorlog liep het voor Korvezee echter anders. Ze vertrok uit Delft en werkte bij een bedrijf in Venlo. Na de oorlog keerde ze terug naar Delft, waar inmiddels een andere wind woei: de laboratoriumsfeer had plaatsgemaakt voor de ingenieursaanpak van de wederopbouw en het industrialisatiestreven volgens Amerikaans model. Nieuwe speerpunten waren procesindustrie, petrochemische industrie en kernenergie.

Op dat laatst gebied was Korvezee deskundige, zodat ze in 1948 werd benoemd tot lector. Bij de opvolging in 1953 van haar leermeester Scheffer werd ze echter gepasseerd en bij de voorbereiding om te komen tot een prestigieus instituut voor kernenergie-onderwijs werd ze niet betrokken. Haar taken verschoven in de richting van het onderwijs. Ze begeleide vijf promovendi, maar vestigde geen eigen school. In 1954 werd ze alsnog benoemd tot buitengewoon hoogleraar in de theoretische scheikunde. Vanaf 1959 voelde ze zich ziek en klaagde ze over ‘een alles overheersende vermoeidheid’. Haar ziekzijn noopte haar om ontslag te vragen. Haar afscheid gebeurde met stille trom. Ze overleed in Den Haag in 1978.

Opvolgsters heeft Korvezee niet gekend. Na de oorlog waren er aan de TH enkel bij de afdeling Technische Natuurkunde en bij de vakgroep Vezeltechniek nog enkel vrouwelijke collega’s werkzaam. Ondanks de grote uitbreiding van het aantal leerstoelen in de jaren vijftig en zestig duurde het 25 jaar voordat er weer een vrouw tot hoogleraar werd benoemd: Franziska Bollerey, die in 1979 hoogleraar in de architectuur- en stedenbouwgeschiedenis werd bij de afdeling Bouwkunde. In 1989 werd aan de TU een jaarlijkse emancipatieprijs ingesteld, de Antonia Korvezeeprijs, maar deze werd na enige jaren weer opgeheven.

Meer lezen: Frida de Jong, Standhouden in Delft, Gewina 20 (1997), pp. 227-243.

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/ac93661b-0f24-170f-c8ed-e158250d2bbf/annotations/0/en", + "type": "TextualBody", + "format": "text/html", + "value": "

Prof. Antonia Korvezee (1899-1978)

\n\n

In 1954, Antonia (Toos) Korvezee (1899-1978) became the first female professor at the Institute of Technology in Delft. Although born in Friesland she grew up in The Hague, where she attended the ‘HBS (former Dutch pre-university secondary school) for boys’. Based on her aptitude for maths, she decided to study in Delft. In 1922, she graduated cum laude in chemical technology and worked for two years as an analytical chemistry assistant. She continued her studies at Delft by performing PhD research under Professor Scheffer. In 1930, she was awarded a PhD cum laude for her research into copper chloride as a catalyst. Of the 26 dissertations written in Professor Scheffer’s lab, 5 were by women – a high percentage at the time.

In the early 1930s, Korvezee received a grant from the Delft Institute of Technology Fund allowing her to work for several semesters in Paris with Irene Curie on the then new specialism of radioactivity. On her return to Delft, she became a privaatdocente (lecturer in a new discipline that has no professorial chair) in that discipline. Such positions had little status but often served as the first step towards the creation of a new professorial chair.

The outbreak of WWII meant that things turned out differently for Korvezee. She left Delft and went to work for a company in Venlo. She returned to Delft after the war and found a changed landscape: the laboratory approach had made way for the engineering approach of post-war reconstruction and industrialisation ambitions in line with the American model. The new focus areas included the petrochemical industry, process manufacturing and nuclear energy.

Korvezee was an expert in the latter field and was appointed a lecturer in 1948. However, she was passed over as the successor to her mentor Scheffer and she was left out of the preparations to establish a prestigious institute for nuclear energy studies. Korvezee’s duties shifted towards teaching. She supervised 5 PhD candidates, but did not establish her own school. In 1954, she became a professor by special appointment in the field of Theoretical Chemistry. She began to feel unwell in 1959 and complained about ‘an overwhelming tiredness’. Her illness forced her to submit her resignation. No ceremony marked Korvezee’s departure. She died in The Hague in 1978.

There were no successors to Korvezee. After the war, there were just a few women in the Engineering Physics and Fibre Technology departments. Despite a significant increase in the number of professorial chairs in the 1950s and ‘60s, it took 25 years for another woman to become a professor: Franziska Bollerey who, in 1979, was appointed professor of the History of Architecture and Urban Planning at the Architecture Faculty. In 1989, an annual emancipation award was introduced at TU Delft: the Antonia Korvezee Prize, but it was abandoned several years later.

Further reading: Frida de Jong, Standhouden in Delft, Gewina 20 (1997), pp. 227-243.

", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/ac93661b-0f24-170f-c8ed-e158250d2bbf", + "type": "Canvas" + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/26cadd49-5c6a-be88-fe55-14449a9cb4a3", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/990d9f5f-71ef-28b4-46af-e9e9e28c17e4", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/c407534f-2a77-6c10-e703-841561cbc665/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

Prof. Dr. Ir. Antonia Korvezee

\n\n

Antonia Korvezee (1899-1978) werd in 1954 de eerste vrouwelijke hoogleraar aan de Technische Hogeschool in Delft. Ze werd geboren in Friesland maar groeide op in Den Haag, waar ze de ‘HBS voor jongens’ doorliep.

\n\n

Vanwege haar aanleg voor wiskunde besloot ze in Delft te gaan studeren. In 1922 studeerde ze cum laude af in de scheikundige technologie en werd ze voor twee jaar assistente bij analytische scheikunde. Ze vervolgde haar opleiding in Delft door bij professor Scheffer een promotieonderzoek te doen. In 1930 promoveerde ze met lof op een onderwerp over koperchloride als katalysator.

\n\n

Van de 26 dissertaties die binnen het lab van professor Scheffer werden geschreven waren er 5 van de hand van vrouwen - voor die tijd een hoog percentage.

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/c407534f-2a77-6c10-e703-841561cbc665/en", + "type": "TextualBody", + "format": "text/html", + "value": "

Prof. Antonia Korvezee

\n\n

In 1954, Antonia Korvezee (1899-1978) became the first female professor at the Institute of Technology in Delft. Although born in Friesland she grew up in The Hague, where she attended the ´HBS for boys´ (former Dutch pre-university secondary school).

\n\n

Based on her aptitude for maths, she decided to study in Delft. In 1922, she graduated cum laude in Chemical Technology and worked for two years as an analytical chemistry assistant. She continued her studies in Delft by performing PhD research under Professor Scheffer. In 1930, she was awarded a PhD cum laude for her research into copper chloride as a catalyst.

\n\n

Of the 26 dissertations written in Professor Scheffer’s lab, 5 were by women – a high percentage at the time.

", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/ac93661b-0f24-170f-c8ed-e158250d2bbf", + "type": "Canvas" + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/77947f0a-e920-99ab-8616-11f978be7778", + "type": "Canvas", + "behavior": [ + "info", + "w-4", + "h-5" + ], + "height": 1000, + "width": 1000, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/77947f0a-e920-99ab-8616-11f978be7778/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/77947f0a-e920-99ab-8616-11f978be7778/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/77947f0a-e920-99ab-8616-11f978be7778/annotations/0/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

Acht Vrouwen in een Mannenwereld: Van Delftsche Novieten tot Ingenieurs

\n\n

Een voorpublicatie op basis van acht citaten. Bezoek de website van Marian Geense voor meer informatie over het boek.

1. 'Ik wil ontwerpen, een stadsplan ontwikkelen dat ook daadwerkelijk gerealiseerd wordt'

‘Ambities? Wat ben je van plan, het bevalt je toch goed als universitair docent op de TUD?’

‘Jawel.’ Hennie laat een stilte vallen om de spanning op te voeren. ‘Best leuk, hoor, dat lesgeven en projecten begeleiden, maar na een tijdje begint dat ook te vervelen. Ik ben niet voor niets stedenbouwer, ik wil de praktijk in, ik wil ontwerpen, een stadsplan ontwikkelen dat ook daadwerkelijk gerealiseerd wordt. Dus heb ik gesolliciteerd op een baan bij een stedenbouwkundig bureau.’

‘Goh, goed van je!’

‘Voor mijn veertigste, voor 1979 dus, wil ik bij een stedenbouwkundig bureau werken,’ zegt Hennie vastberaden.

2. ‘Van een vrouw wordt verwacht dat ze haar idealen opgeeft en haar man volgt tot in de woestijn'

Siu Ling staat op, schenkt zich koffie in. Wrevelige rimpels op haar voorhoofd. Het is toch idioot, denkt ze, dat in onze cultuur, in onze maatschappij, een man wel al zijn talenten kan ontwikkelen, zijn eerzucht kan volgen, over de hele wereld werk kan zoeken. Maar van een vrouw wordt verwacht dat ze haar idealen opgeeft en haar man volgt tot in de woestijn van een onderontwikkeld gebied. Als een vrouw kiest voor haar ambitie en haar werk wordt er schande van gesproken. Waarom zou een vrouw al haar dromen op moeten geven en mag een man de richting kiezen die hij zelf wil? Hier ben ik gelukkig, laat Folkert mij maar volgen en hier een baan zoeken.

3. Het zal wel even wennen zijn, maar ingenieur Eygelaar is een vrouw'

De telefoon op haar bureau rinkelt dringend.

‘Goedemorgen,’ zegt ze opgewekt. ‘Met Tineke Eygelaar.’

‘Hallo,’ klinkt het aan de andere kant van de lijn. ’Mag ik ingenieur Eygelaar van u?’’

‘Daar spreekt u mee,’ zegt ze.

‘Verbind u mij door met de ingenieur,’ klinkt het ongeduldig.

‘U bent al doorverbonden,’ zegt ze.

‘Moet u luisteren, juffrouw. Ik heb een dringende boodschap voor de ingenieur en u moet mij nu met hem doorverbinden.’

‘Daar spreekt u mee,’ herhaalt ze.

De man verliest nu echt zijn geduld.

‘Hoor eens even hier, juffrouw, ik ben niet in voor grapjes. Ik heb ingenieur Eygelaar nodig en wel nú!’

‘Ach heden.’ Ze kan haar lachen niet meer inhouden. ‘Het zal wel even wennen zijn, maar ingenieur Eygelaar is een vrouw.’

4. 'Zo worden dictatoriale regiems gemaakt'

De novieten leren dat er clubleden zijn en novieten, de nieuwkomers dus. De vele corveediensten zijn uiteraard voor de novieten.

‘Wat kom je hier doen?’ vraagt een clublid aan Dorothee.

‘Ik wil studeren en lid worden van de DVSV.’

‘Waarom de DVSV?’

‘Mijn moeder zei dat ik me …’

‘Moederskindjes kunnen we hier niet accepteren. Je kunt gaan.’

‘De DVSV,’ hakkelt ze, ‘is de beste studentenvereniging die er is, waardig en intellectueel en ik wil niets liever dan alles doen …’

Zo worden dictatoriale regiems gemaakt, denkt Dorothee. Maar ze schikt en plooit zich om maar in de gunst te komen, want weggestuurd worden is geen optie.

5. ‘Meisjes hoefden niet te studeren, die kregen later toch een man'

Maja beleeft die eerste dag van de ontgroening op OD26 op haar eigen manier. Ze denkt terug hoe de dag begon, hoe ze die ochtend werd uitgezwaaid door haar moeder, en ze realiseert zich hoe bijzonder dat is. Dat doet haar moeder anders nooit. Kennelijk vindt ze het belangrijk dat haar dochter in Delft gaat studeren.

Vanmorgen zei mama dat ze graag zag dat haar kind een carrière zou opbouwen.

‘Daar heb ik je voor grootgebracht,’ zei ze. Zij heeft zelf niet gestudeerd. Meisjes hoefden niet te studeren, die kregen later toch een man. En haar man heeft haar ook niet gestimuleerd om te studeren. Hij is immers uitvinder en hoogleraar en dat is genoeg. Mama beschouwt dat als de weeffout van haar leven.

6. Ik ben een bèta, niks vage alfastudies'

Ik ben een bèta, niks vage alfastudies, ik wil naar Delft, dacht Femke. Dus moet ik dat slim aanpakken als ik naar Delft wil.

En dat heeft ze doorgezet. Toen het nakomertje, haar broertje Hans, geboren werd heeft ze haar wil doorgedreven. Dit is mijn kans, dacht ze. Iedereen had het druk met dat kind en toen ze even niet opletten, is ze afgereisd naar Delft om zich in te schrijven.

‘Waar ga je naartoe?’ riep oma nog.

‘Even naar mijn vriendin, ik ben met het avondeten weer terug.’

Weg was ze.

Die ambtenaar van de Technische Hogeschool vroeg nog om een handtekening van haar vader of wettelijke vertegenwoordiger, maar dat probleem was snel opgelost. Even een straatje om, op een bankje een valse handtekening zetten en de zaak was voor elkaar. Weet die ambtenaar veel en tegen de tijd dat de rekening van het collegegeld in de brievenbus valt, ziet ze wel weer.

7. ‘Ik begon mijn carrière met een verontrustend artikel over een dorp in Japan waar mensen ernstig ziek werden door verontreinigingen'

'Wat wij doen is technologische kennis en hulpmiddelen introduceren in de gezondheidszorg,’ vertelt Tineke. Zij heeft zich in een ruime fauteuil genesteld en serveert thee met een koekje. ‘Wij gaan uit van de vraagstelling in de zorgsector. Voor technologische oplossingen is veel belangstelling. Verschillende buitenlandse onderzoekers komen tijdelijk bij onze vakgroep werken.’

‘Lijkt me interessant om een medisch vraagstuk te vertalen naar een elektrotechnisch probleem,’ meent Marian. Ze zit in een luie stoel naast een rommelig bijzettafeltje, waar naast krant en bril van Tineke nog een schaal met koekjes prijkt.

‘Dat is wat het boeiend maakt. Je moet buiten de grenzen van je eigen vakgebied kunnen kijken en de problemen die daar spelen vertalen naar een elektrotechnische opgaaf en daarna terugvertalen naar de medische wereld.’

‘Dat is nog eens wat anders dan een haven.’ Marian pakt een koekje en vervolgt: ‘Ik begon mijn carrière met een verontrustend artikel over een dorp in Japan waar mensen ernstig ziek werden door verontreinigingen. Sindsdien worden er steeds meer eisen gesteld om het milieu te beschermen. Als we een nieuwe haven baggeren in een natuurgebied moeten we elders nieuwe natuur creëren.’

8. ‘Mijn man is geen architect. Dat architectenbureau is van mij'

‘Dat zal ik u precies vertellen,’ zegt de docent. De mondhoeken van zijn pruimenmondje zakken misprijzend omlaag. ‘Als een kind thuiskomt, dan hoort daar de moeder te zijn, die haar ondersteunt en vragen kan beantwoorden en helpt bij huiswerk en problemen met vriendjes en zo. Maar Barbara heeft me verteld dat u geen van beiden thuis bent als zij uit school komt. Het is niet goed voor een kind om in een leeg huis te komen.’ Hij kijkt hen verwijtend aan, haalt zijn bril van zijn neus en begint die te poetsen om zijn woorden goed tot hen door te laten dringen.

Hetty voelt zich geroepen om ook wat te zeggen.

‘Ja, dat is het probleem met een eigen bedrijf,’ zegt ze. ‘Dan wordt er veel meer een beroep gedaan op de zelfredzaamheid van de kinderen. Maar het voordeel is wel dat kinderen hierdoor sneller onafhankelijk en zelfstandig worden.’

‘U ziet dat helemaal verkeerd.’ De docent snuift luidruchtig. ‘Ik heb uitgebreid met Barbara gesproken. Het is een bijzonder lief meisje. Ze wilde u eerst niets verwijten, maar toen kwam het hoge woord eruit. Zij verwijt u dat u nooit thuis bent en haar verwaarloost. En ik vind het mijn plicht, als klassendocent van uw dochter, om u, mevrouw, hierover aan te spreken.’ Zijn ogen priemen als een geslepen potlood in haar richting.

‘U bedoelt?’ zegt Hetty.

‘Ik bedoel dat een vrouw haar kinderen moet begeleiden en haar man moet ondersteunen. Het is de taak van een vrouw om thuis te zijn voor man en kinderen, zodat u ze goede raad kunt geven en met uw wijze woorden kunt ondersteunen. Een vrouw waakt over haar huishouding, nietsdoen is haar onbekend.’ Zelfvoldaan staart hij haar aan.

‘En wat is de taak van een man?’ vraagt Hetty, lichtelijk aangeslagen.

‘Uw man is een belangrijk architect. Hij heeft een eigen architectenbureau. Dat is een drukke en verantwoordelijke baan en hij heeft daarom geen tijd om de kinderen te begeleiden. Dat is de taak van de vrouw, van u, mevrouw.’

Er balt zich iets in Hetty samen.

‘Bedoelt u architectenbureau LG102?’ zegt ze. ‘Mijn man is geen architect. Dat architectenbureau is van mij.’

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/77947f0a-e920-99ab-8616-11f978be7778/annotations/0/en", + "type": "TextualBody", + "format": "text/html", + "value": "

Eight Women in a Man’s World: From Delft Novices to Engineers

\n\n

A preprint version based on eight quotations. Visit Marian Geense's website for more information about the book.

1. 'I want to design, develop an urban plan that will actually be built.'

‘Ambitions? What do you intend to do, you like being a senior lecturer at TU Delft, don’t you?’

‘Yes.’ Hennie pauses and remains silent to let the tension rise. ‘It’s enjoyable, teaching and supervising projects. But after a while it also becomes boring. I became an urban planner for a reason – I want to practise my profession, I want to design, develop an urban plan that will actually be built. So, I’ve applied for a job at an urban planning firm.’

‘Wow, good for you!’

‘Before I turn forty, so before 1979, I want to be working for an urban planning firm,’ says Hennie, with determination.

2. ‘A woman is expected to give up her dreams and follow her husband all the way into the desert.'

Siu Ling stands up, pours a cup of coffee, her forehead wrinkled in irritation. It’s absurd, she thinks, that in our culture, in our society, a man can develop all his talents, pursue his ambitions, seek work anywhere in the world. But a woman is expected to give up her dreams and follow her husband all the way into the desert of a developing region. If a woman chooses to pursue her ambitions, it’s considered scandalous. Why does a woman have to give up all her dreams while a man can choose any path he likes? I’m happy here, let Folkert follow me instead and look for a job here.

3. ‘It might take some getting used to, but engineer Eygelaar is a woman.'

The telephone on her desk is ringing loudly.

‘Good morning,’ she says, cheerfully. ‘Tineke Eygelaar speaking.’

‘Hello,’ says the voice at the other end of the line. ’Can you connect me to engineer Eygelaar?’

‘Speaking,’ she says.

‘Connect me to the engineer,’ the voice sounds impatient.

‘You are connected,’ she says.

‘Listen, miss. I have an urgent message for the engineer and you have to connect me with him.’

‘You’re speaking to the engineer,’ she repeats.

The man has had enough.

‘You listen to me, miss, enough of your jokes. I need engineer Eygelaar and right now!’

‘Oh, dear me.’ She struggles to stifle her laughter. ‘It might take some getting used to, but engineer Eygelaar is a woman.’

4. 'This is how dictatorships are created.'

The novices learn that there are society members and novices, the newcomers. Of course, the many tedious chores were for the novices.

‘Why did you come here?’ a society member asks Dorothee.

‘I want to study and become a DVSV member.’

‘Why the DVSV?’

‘My mother said that…’

‘We don’t accept mummy’s girls here. You can leave.’

‘The DVSV,’ she stammers,‘is the best student society there is, decent and intellectual – and I want nothing more than to do everything…’

This is how dictatorships are created, Dorothee thinks. But she adjusts and plays along to gain favour because being sent away isn’t an option.

5. ‘Girls didn’t have to study, after all they’d find a husband later.'

Maja experienced the first day of initiation in her own way at Oude Delft 26. She thinks back to how the day started, how her mother waved her goodbye. She realises how special that was. Her mother never did that. Apparently, her mother felt it was important that her daughter was going to study in Delft.

That morning, mummy said that she’d like to see her child build a career.

‘That’s what I raised you to do,’ she says. She herself never studied. Girls didn’t have to study, after all they’d find a husband later. And her husband didn’t encourage her to study. After all, he’s an inventor and a professor and that’s more than enough. Mummy considered that to be a structural flaw in the fabric of her life.

6. ´I’m a sciences person, I don’t care about vague humanities fields.'

I’m a sciences person, I don’t care about vague humanities fields. I want to go to Delft, thought Femke. And that means I have to approach things in a clever way.

And she did just that. When a late addition to the family arrived, her baby brother Hans, she seized the opportunity. This is my chance, she thought. Everyone was busy with the baby and while they were distracted for a moment, she set off for Delft to enrol.

‘Where are you going?’ grandma calls out.

‘Just to see a friend, I’ll be back in time for dinner.’

And she was gone.

The official at the Institute of Technology asked for the signature of her father’s or legal representative, but that was soon fixed. A quick walk around the corner, find a bench, forge a signature and… problem solved. How could the official know? Femke would worry about the bill for tuition fees arriving when the time came.

7. ‘My career began when I read an alarming article about a village in Japan where people were becoming seriously ill due to pollution.'

'We introduce technological knowledge and tools into the healthcare sector,’ explains Tineke, nestled in a large armchair, serving tea biscuits. ‘Our starting point is the context of the healthcare sector. There is a lot of interest in technological solutions. Various researchers from other countries come to our department to work for a time.’

‘It strikes me as interesting to translate a medical issue into an electrical engineering problem,’ says Marian. She’s sitting in an easy chair next to a cluttered side table where a plate of biscuits sits alongside a newspaper and Tineke’s glasses.

‘That’s what makes it exciting. You have to go beyond the boundaries of your own discipline and translate the problems you find there into a well-reasoned electrical engineering solution, and then translate it back into the medical situation.’

‘That’s something quite different to a port.’ Marian takes a biscuit and continues, ‘My career began when I read an alarming article about a village in Japan where people were becoming seriously ill due to pollution. Since then, increasingly more requirements are being set with the aim of protecting the environment. When we dredge a new port in a wildlife area, we have to create just such an area somewhere else.’

8. ‘My husband is not an architect – the architecture firm is mine.'

‘I’ll explain it to you in full,’ says the teacher, the corners of his small prim mouth turned down disdainfully. ‘A mother should be at home when her child comes home from school. A mother provides support, answers questions, helps with homework and any problems with friends and the like. But Barbara tells me that neither one of you is home when she gets back from school. It’s not good for a child to return to an empty house.’ He stares at them accusingly, removes his glasses and starts to polish the lenses to let his words have their full impact.

Hetty feels obliged to respond.

‘Yes, that’s the problem with running your own business,’ she says. ‘You have to call on the self-reliance of children much more. But the upside is that as a result, children become independent more quickly.’

‘You’re looking at it in completely the wrong way.’ The teacher sniffs loudly. ‘I have spoken extensively with Barbara. She is a particularly sweet girl. She didn’t want to blame you at first, but then the truth came out. She blames you for never being home and for neglecting her. And it’s my duty as your daughter’s class teacher to address this matter with you, madam.’ His piercing eyes focus on her like sharpened pencils.

‘What do you mean?’ asks Hetty.

‘I mean that a woman is meant to take care of her children and support her husband. A woman’s duty is to stay at home for her husband and children so that she can give sound advice and support her family with wise words. A woman protects her household. She doesn’t know what doing nothing means.’ He glares at her, brimming with self-satisfaction.

‘And what is a husband’s duty?’ asks Hetty, somewhat distraught.

‘Your husband is a major architect. He has his own architecture firm. That is a high-pressure job with a lot of responsibility and that’s why he has no time to take care of the children. That duty is yours, madam, as his wife.’

Something is going on inside Hetty.

‘You’re talking about the architecture firm LG102?’ she asks. ‘My husband is not an architect – the architecture firm is mine.’

", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/77947f0a-e920-99ab-8616-11f978be7778", + "type": "Canvas" + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/98ae9103-91bc-83c7-733b-e28219dcd2ec", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/6b870481-dfa5-46b4-598b-9f6783efd563", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/cc4be6d0-482b-e2b3-2090-4ada2c8622c2/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

'Mijn man is geen architect; dat architectenbureau is van mij'

\n\n

In 1956 werd de zogenoemde handelingsonbekwaamheid voor vrouwen in Nederland afgeschaft. Dit had als gevolg dat gehuwde vrouwelijke ingenieurs ook daadwerkelijk hun beroep konden gaan uitoefenen.

\n\n

In het te verschijnen boek 'Acht Vrouwen in een Mannenwereld: Van Delftsche Novieten tot Ingenieurs' beschrijft Marian Geense de levensloop van haar jaarclub van de DVSV uit 1956, en de vooroordelen waarmee de vrouwen te maken krijgen in hun werkende leven. Lees hier een voorpublicatie van het boek op basis van acht citaten.

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/cc4be6d0-482b-e2b3-2090-4ada2c8622c2/en", + "type": "TextualBody", + "format": "text/html", + "value": "

‘My husband is not an architect – The architecture firm is mine'

\n\n

The legal 'incapacity of women' was abolished in the Netherlands in 1956. As a result, married female engineers could actually start to practise their profession.

\n\n

In the soon to be published book 'Acht Vrouwen in een Mannenwereld: Van Delftsche Novieten tot Ingenieurs' (Eight Women in a Man’s World: From Delft Novices to Engineers) Marian Geense describes the lives of her 1956 DVSV fellow freshers, and the prejudices women had to deal with in their profession. Here you can read a preprint version of the book based on 8 quotations.

", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/77947f0a-e920-99ab-8616-11f978be7778", + "type": "Canvas" + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/6118e9ac-0aff-f5cb-47dd-5b9a2f8715ac", + "type": "Canvas", + "label": { + "nl": [ + "De Club van de DVSV" + ], + "en": [ + "The DVSV Club (circa 1956)" + ] + }, + "behavior": [ + "left", + "w-8", + "h-5" + ], + "height": 656, + "width": 1000, + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/106f7d77-fa57-f509-b2ec-df6624c49528", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/bd1cee2a-2711-286e-85c0-e59fba3b4487", + "type": "Annotation", + "label": { + "nl": [ + "De Club van de DVSV (Rond 1956)" + ], + "en": [ + "The DVSV Club (circa 1956)" + ] + }, + "summary": { + "nl": [ + "Eerstejaars Bouwkunde-studenten brengen het hout voor de open haard naar de opslag in de kelder. De Club bevond zich op de Oude Delft 26; links op de foto de beheerder van het pand." + ], + "en": [ + "First-year Architecture students carrying wood for the fireplace to the storage area in the cellar. The Club is on Oude Delft 26; the manager of the building is on the left of the photo." + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/59cbd665-a7b3-5f8a-2c16-f406ca74f5fb/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/59cbd665-a7b3-5f8a-2c16-f406ca74f5fb", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 672, + "sizes": [ + { + "width": 100, + "height": 66 + }, + { + "width": 200, + "height": 131 + }, + { + "width": 400, + "height": 263 + }, + { + "width": 1024, + "height": 672 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/21/59cbd665-a7b3-5f8a-2c16-f406ca74f5fb/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 2950, + "width": 4492, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/59cbd665-a7b3-5f8a-2c16-f406ca74f5fb", + "protocol": "http://iiif.io/api/image", + "width": 4492, + "height": 2950, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 672 + }, + { + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/6118e9ac-0aff-f5cb-47dd-5b9a2f8715ac", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=0,0,1000,656" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/bd1cee2a-2711-286e-85c0-e59fba3b4487", + "id": "vault://iiif-parser/v4/SpecificResource/d9b42157", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/2a2810e5-ad56-fac9-029a-d0c9fc038c1c", + "type": "Canvas", + "label": { + "nl": [ + "Mejuffrouw, Mijne Heren (1964)" + ], + "en": [ + "Mejuffrouw, Mijne Heren (Miss and Gentlemen, 1964)" + ] + }, + "behavior": [ + "w-12", + "h-9" + ], + "height": 1440, + "width": 1903, + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/ad7c99c7-3b50-0c0a-e914-ea90750043db", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/6179e7da-69e0-00bb-f87d-14d8c9790be1", + "type": "Annotation", + "label": { + "nl": [ + "Mejuffrouw, Mijne Heren (1964)" + ], + "en": [ + "Mejuffrouw, Mijne Heren (Miss and Gentlemen, 1964)" + ] + }, + "summary": { + "nl": [ + "Fictieve documentaire van Mart van den Busken over het Delftse studentenleven in de jaren zestig. Verhaald door een van de weinige vrouwelijke studenten." + ], + "en": [ + "Mart van den Busken’s film about student life in Delft in the 1960s. Narrated by one of the few female students." + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/5ee8ead6-8cdb-5062-b9b4-dd9f0c2dc956/full/full/0/default.jpg", + "type": "ContentResource" + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://www.youtube.com/watch?v=popa6e9Sv5E", + "type": "Video", + "service": [ + { + "profile": "http://digirati.com/objectifier", + "params": { + "data": "https://www.youtube.com/embed/popa6e9Sv5E?start=89" + } + }, + { + "id": "https://www.youtube.com/watch?v=popa6e9Sv5E", + "profile": "https://www.youtube.com", + "start": 89 + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/2a2810e5-ad56-fac9-029a-d0c9fc038c1c", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=0,0,1903,1440" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/6179e7da-69e0-00bb-f87d-14d8c9790be1", + "id": "vault://iiif-parser/v4/SpecificResource/f53c7eac", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/c7f195ab-93ef-5bad-d356-a8a84acf4667", + "type": "Canvas", + "behavior": [ + "info", + "w-6", + "h-4" + ], + "height": 1000, + "width": 1000, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/c7f195ab-93ef-5bad-d356-a8a84acf4667/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/c7f195ab-93ef-5bad-d356-a8a84acf4667/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/c7f195ab-93ef-5bad-d356-a8a84acf4667/annotations/0/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

In gesprek met Margreet de Boer

\n\n

Interview door Sacha Klinkhamer. Uit: Marjan van den Bos en Bab Rentjes (red.) De Boterbabes (2019). Uitgegeven in eigen beheer.

Samen met Babs Rentjes stond Margreet als oprichter aan de wieg van de Boterbrug. Ze hebben, om zo te zeggen, samen ruim 70 kinderen gekregen. Tijd voor een terugblik. Als de voordeur opengaat van haar pied-a-terre in Den Haag, sta je meteen in een wervelwind van kleuren. Op de muren, de meubels, op de vloer. Gelukkig is Margreet een heel rustige vrouw, en door haar lage stem klinkt alles wat ze zegt kalm en zelfverzekerd. Maar zo zelfverzekerd blijkt ze niet te zijn. Haar leven is haar overkomen, bewuste keuzes waren het vaak niet. Wel had ze van huis meegekregen dat vrouwen vanzelfsprekend werkten, want haar vader en moeder waren samen de oprichters van een tuinbouwschool voor biologische landbouw. In 1946! Later ontwierp zij zowel architectuur als landschap en tuininrichting. Nee, geen plantjes, Margreet is van de structuur. Ook gaf ze, als het zo uitkwam, cursussen aan huisvrouwen in vrouwenadviescommissies, dames die moesten leren tekeningen lezen, maar wél al heel goed wisten dat er in elke woning een flink verhuisraam moet zitten. Ze had altijd wel werk, dat moest ook wel na haar scheiding en met drie kinderen. Nu is ze voor de derde keer getrouwd, met een Tsjechisch architect en professor. Ze kijkt tevreden terug op het huislustrum in 2019. God schiep de wereld. Babs en Margreet schiepen de Boterbrugster. Naar hun gelijkenis.

'Ik haatte meisjeshuizen, ik had al vijf jaar alleen gewoond. De club (OD26) vond ik vreselijk, de meisjes van de Paardenmarkt waren trutten en OD 128 waren oude dames. Babs en ik zochten zes leuke meisjes die bij ons pasten. We moesten ons bij elkaar ons gemak voelen. Ik denk dat we geen serieuze criteria hadden, we vonden gewoon dat je een soort familietje moest zijn. Diversiteit was daarbij geen doel. Het plan was om uit elk jaar iemand te hebben. Dat is compleet mislukt, de meisjes waren op één na allemaal derdejaars. We hebben een keer iemand moeten zeggen dat ze werd afgewezen. Die was psychisch niet in orde, ik vond het vreselijk. Maar uitstemmen, dat deden we niet, er kwam altijd iemand bij die paste. We waren vrij serieus, we wilden ook serieus contact en een goed gesprek hebben. Ik zat soms met de eerstejaars een hele nacht op de trap levensraadselen op te lossen. Met een fles vierkant, dat wel. De jongste en de oudste.

'Over seks werd in huis echt niet gesproken. We kregen op de DVSV wel seksuele voorlichting, toen hoorde ik voor het eerst over lesbische vrouwen. Eigenlijk is dat logisch in een vrouwenvereniging, en het werd ook best feitelijk gebracht, maar mij was het een onbekend fenomeen. Ik had vrij snel een vriend die bij mij sliep, maar we zorgden er wel voor dat we geen burengerucht veroorzaakten. We hadden eigenlijk nooit last van de vriendjes. Ze aten ook niet mee.

'Ons bijbaantje was bij het eenmansbureau van Koumans. Hij koos mij uit om zijn telefoon op te nemen en met hem te lunchen, met veel franse kaas en wijn. Ik kreeg gewoon maandgeld, vierhonderd gulden, denk ik, en aan het eind van de maand stond ik nooit rood. Ik at gewoon veel minder. Mijn vriendin was een dochter van Jamin, die at biefstuk. Ik niet. Ik kookte voor Babs en mij, we kookten om de beurt ons potje en schoven bij elkaar aan, aan de tafel in de keuken.

'Iedereen kon zichzelf zijn. Je liet elkaar vrij, er waren geen regeltjes. We hadden wel afspraken. Opruimen als je gekookt hebt. Afspreken en aanspreken, dat wel. Je hielp elkaar ook als je vastliep met het ontwerpen. Maar er was niemand die commentaar had toen ik naast Joop nog verliefd werd op een ander. Iedereen wist het, maar ze zeiden niets, heel tolerant.

'Vorige week waren we met mijn huisgenoten en wat jongere Boterbrugsters bij elkaar voor een etentje en een strandwandeling. Toen hadden we met z'n achten een avond heel openhartige, ontroerende gesprekken. Hier kan je alles zeggen wat je beweegt, hier wordt er echt naar je geluisterd en de manier waarop iemand een vraag stelde opende steeds een volgend luikje. Die openheid hadden we ook bij de Boterbrug reünies, vooral bij de speeches aan tafel. We hebben een familiegevoel, we zijn vertrouwd met elkaar. Je hoeft niet op te scheppen. Of die openheid door de jaren heen nu begon bij de eerste lustrumspeeches van Babs en mij, dat weet ik niet, het kan. In ieder geval is er nu, als we bij elkaar zijn, altijd een echt gesprek en ook heel veel emotie. Over dilemma's met je ouders, en over borstkanker. Het was echt heel bijzonder. Bij de antroposofen zeggen ze wel dat kinderen hun ouders uitzoeken en bij ons huis is dat misschien ook wel zo. Alsof het op een ander niveau is voorgekookt, dat je bij elkaar past. Het is niet expliciet, misschien is er al een band vóórdat je elkaar leert kennen, en dan herken je elkaar als je met elkaar in gesprek bent. Het is niet je huisgenoten uitkiezen, het is herkennen.

'Ook bij de jongste huisgenoten denk ik meteen: “Oooo wat heerlijk, wat leuk! We kennen elkaar!” Iemand die dertig jaar jonger was heeft mij een keer op een lustrum mee naar huis genomen toen ik teveel gedronken had. Lief, hè? We zijn pretentieloos, hoeven niet mooi te zijn of een stand op te houden, we zijn kameraden en we zijn lief voor de buren. Het zijn nu toch ook allemaal schatjes!'

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/c7f195ab-93ef-5bad-d356-a8a84acf4667/annotations/0/en", + "type": "TextualBody", + "format": "text/html", + "value": "

An interview with Margreet de Boer

\n\n

Interview by Sacha Klinkhamer. Source: Marjan van den Bos and Bab Rentjes (eds.) De Boterbabes (2019). Self-published.

As a co-founder, together with Babs Rentjes, Margreet was part of the Boterbrug from the outset. You could say that the two women gave birth to over 70 children. Time to look back. When the front door of her pied-à-terre in The Hague opens, you’re immediately met by a whirlwind of colours. On the walls, the floor and the furniture. Luckily, Margreet is a quiet woman and her low voice makes everything she says sound calm and self-assured. But she turns out not to be all that self-confident. Her life was something that happened, conscious choices were absent. She was, however, raised with the premise that it was natural for women to work because her parents had together established a horticultural school for organic agriculture – in 1946! Later, Margreet designed buildings as well as landscapes and gardens, but no plants. Margreet is all about structure. When possible, she also gave courses for housewives on women’s advisory committees, ladies who had to learn how to read drawings, but who already knew that every house had to have a large casement window. Margreet always worked – she had to, being divorced with three children. She is now married to her third husband, a Czech architect and professor. She looks back with satisfaction on the Boterbrug’s 50th anniversary in 2019. God created the world. Babs and Margreet created the Boterbrug residents. In their own image.

'I hated women’s housing, I’d already lived on my own for five years. I thought the club (Oude Delft 26) was awful, the Paardenmarkt girls were cows and the Oude Delft 128 ones were like old ladies. Babs and I sought out six pleasant girls we could get along with. We had to feel comfortable with each other. I don’t think we had any serious criteria, we just thought we should be like a kind of small family. Diversity wasn’t the aim. The plan was to have someone from each year. We failed completely – all but one of the girls were in the third year. One time, we had to tell someone that she had been rejected. She was not entirely mentally stable, I felt terrible. But we never voted anyone out, the people who joined always fitted in. We were quite serious, we also wanted serious interactions and to have good discussions. Sometimes, I would sit all night on the stairs with first-year students solving life’s problems. Needless to say, accompanied by Dutch gin. The youngest and the eldest.'

'Sex wasn’t talked about in the house. The DVSV, however, provided sex education and that was where I first heard about lesbian women. It’s actually logical at a women’s society, and it was presented in a factual manner. But for me, it was an unknown phenomenon. I had quite quickly found a boyfriend who slept over. We did, however, make sure we weren’t the subject of gossip among the neighbours. Actually, boyfriends were never a problem. What’s more, they didn’t eat with us.'

'My part-time job was at the sole proprietorship Koumans. He hired me to answer the phone and have lunch with him, with a lot of French cheese and wine. I was paid monthly, four hundred guilders, I think it was. I was never in the red at the end of the month – I was simply eating a lot less. My friend from a monied family ate steak. I didn’t. I cooked for myself and Babs. We took turns cooking and ate together at the table in the kitchen.'

'Everyone could be themselves. You let each other be, there were no rules, but we did make agreements. Like tidy up after cooking. And the agreements were binding. We helped each other if we got stuck with a design. But no one said anything when I fell in love with someone else while I was still with Joop. Everyone knew, but they kept quiet, very tolerant.'

'Last week, my housemates and I and a few younger Boterbrug residents got together for a meal and a walk along the beach. On that evening, the eight of us had really open, moving talks. Here, you can talk about anything that moves you, you’re listened to here, and the way people ask questions always opens up a new topic. This openness was also present at Boterbrug reunions, especially in the speeches at the table. We feel like a family, we trust one another. You don’t need to brag. I don’t know if this continuing openness began with the first anniversary speeches Babs and I gave, it may have. In any case, when we get together now, we always have real talks with a lot of emotion. Talks about problems with your parents and about breast cancer. It’s really exceptional. Anthroposophists say that children find their parents, and maybe that’s true of our house. As if it’s always been there on some level, that you fit well together. It’s not explicit, maybe there’s a bond before you get to know each other, and then you recognise one another when you start talking. It’s recognising your housemates, not choosing them.'

'Even with the youngest housemates I immediately think “Oh, how wonderful, what fun! We know each other!” One time, at an anniversary, someone who was thirty years younger than me brought me home because I’d had too much to drink. Sweet, isn’t it? We have no pretentions, we don’t have to be beautiful or keep up a façade, we are comrades and we are kind to our neighbours. After all, they’re all sweethearts!'

", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/c7f195ab-93ef-5bad-d356-a8a84acf4667", + "type": "Canvas" + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/27b7bb54-08f4-c26a-0a79-8f16276466a0", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/39fdfd31-1d8f-78ff-fc4f-8052be27ca4e", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/7750930a-6f66-dabb-1c69-0522476183d7/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

'Over seks werd niet gesproken'

\n\n

In 1969 werd Boterbrug 5 opgericht, een meisjeshuis van de DVSV. 10 jaar later verhuisden de bewoners naar de Oude Delft 100, maar bleef de naam Boterbrug behouden. Na de fusie van de DVSV met het Delftsch Studenten Corps in 1976 en de recente aankoop van het pand op de Oude Delft, is de Boterburg tegenwoordig een 'Corpshuis' voor vrouwen.

\n\n

Ter gelegenheid van het 50-jarig bestaan van de Boterbrug in 2019 is een jubileumboek gemaakt met daarin interviews met álle 75 bewoners, van 1969 tot nu. Lees hier een interview met Margreet de Boer, één van de oprichters van het huis.

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/7750930a-6f66-dabb-1c69-0522476183d7/en", + "type": "TextualBody", + "format": "text/html", + "value": "

'Sex wasn’t talked about'

\n\n

Boterbrug 5, one of DVSV’s girls houses, was established in 1969. 10 years later, the residents relocated to Oude Delft 100, but they kept the name Boterbrug. Following the merger of the DVSV and the Delftsch Studenten Corps (student society for male students) in 1976 and the recent purchase of the building on Oude Delft, today, the Boterburg is a 'Corpshuis' for women.

\n\n

In 2019, on the occasion of the 50th anniversary of the Boterbrug, a book was produced containing interviews with all 75 residents, from 1969 to today. Here, you can read an interview with Margreet de Boer, one of the founders of the house.

", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/c7f195ab-93ef-5bad-d356-a8a84acf4667", + "type": "Canvas" + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/7f3fc73e-4abd-5cac-3817-435788b762a0", + "type": "Canvas", + "label": { + "nl": [ + "Meisjeshuis Boterbrug 5" + ], + "en": [ + "Boterbrug 5 Girls House" + ] + }, + "behavior": [ + "w-6", + "h-4" + ], + "height": 679, + "width": 1000, + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/b141b9a2-86b4-4623-2ca1-2ae1ef52a895", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/98fe5ec2-587f-74aa-2177-608e700c7e26", + "type": "Annotation", + "label": { + "nl": [ + "Meisjeshuis Boterbrug 5" + ], + "en": [ + "Boterbrug 5 Girls House" + ] + }, + "summary": { + "nl": [ + "Afkomstig uit de almanak van de DVSV voor het jaar 1970 (Persoonlijk archief Marjan van den Bos)" + ], + "en": [ + "From the 1970 DVSV Yearbook (Personal archives of Marjan van den Bos)." + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/187c91d0-9d6d-79ab-01f5-8f2d4757e71b/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/187c91d0-9d6d-79ab-01f5-8f2d4757e71b", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 1024, + "height": 695, + "sizes": [ + { + "width": 100, + "height": 68 + }, + { + "width": 200, + "height": 136 + }, + { + "width": 400, + "height": 272 + }, + { + "width": 1024, + "height": 695 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/21/187c91d0-9d6d-79ab-01f5-8f2d4757e71b/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 2216, + "width": 3263, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/187c91d0-9d6d-79ab-01f5-8f2d4757e71b", + "protocol": "http://iiif.io/api/image", + "width": 3263, + "height": 2216, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 1024, + "height": 695 + }, + { + "width": 400, + "height": 272 + }, + { + "width": 200, + "height": 136 + }, + { + "width": 100, + "height": 68 + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "native", + "color", + "gray" + ], + "supports": [ + "regionByPct", + "sizeByForcedWh", + "sizeByWh", + "sizeAboveFull", + "rotationBy90s", + "mirroring", + "gray" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/7f3fc73e-4abd-5cac-3817-435788b762a0", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=0,0,1000,679" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/98fe5ec2-587f-74aa-2177-608e700c7e26", + "id": "vault://iiif-parser/v4/SpecificResource/90d75fa7", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/6ac3a85d-0ee8-0c03-ca04-d62796417372", + "type": "Canvas", + "label": { + "nl": [ + "Vrouwenstudies" + ], + "en": [ + "Women’s Studies" + ] + }, + "summary": { + "nl": [ + "Vanaf het midden van de jaren '70 stijgen zowel het aantal als het percentage eerstejaars vrouwelijke studenten gestaag. Onder invloed van de tweede feministische golf, ontstaan nieuwe initiatieven om de bestaande academische cultuur te bevragen en te veranderen. Dit vond zijn weerklank in het onderwijs.", + "Tijdens haar studie Bouwkunde zet Anna Vos een nieuw vak op om bestaande normen binnen het vakgebied te bevragen. Waarom worden studenten bijvoorbeeld alleen onderwezen over familiehuisvesting? In hoeverre bevestigen woningplattegronden traditionele rolverdelingen binnen het huishouden?" + ], + "en": [ + "From the mid-seventies, both the absolute number and the relative percentage of first-year female students gradually rose. Impacted by second-wave feminism, new initiatives emerged aimed at questioning and changing the prevailing academic culture. This was echoed in education.", + "While studying Architecture, Anna Vos established a new discipline aimed at questioning existing norms in that field of study. For example, why were students only taught about family housing? To what extent did housing floorplans reaffirm conventional gender roles within the household?" + ] + }, + "requiredStatement": { + "value": { + "nl": [ + "Bekijk hier een gesprek tussen Noortje Weenink, recent afgestudeerd aan dezelfde faculteit, en Anna Vos. Samen duiken ze het archief in." + ], + "en": [ + "Here, you can watch Noortje Weenink, a recent graduate of this faculty, interviewing Anna Vos. Together, they examine the archives." + ] + } + }, + "behavior": [ + "right", + "w-12", + "h-5" + ], + "height": 1440, + "width": 2560, + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/3dbc24c5-c24f-4cb1-66f3-fc3cbbde7cf6", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/69e1c967-a73c-8e76-9b89-fce50e2d5996", + "type": "Annotation", + "label": { + "nl": [ + "Noortje Weenink in gesprek met Anna Vos, initiatiefnemer van het vak Vrouwenstudies in 1979" + ], + "en": [ + "Noortje Weenink interviews Anna Vos who founded Women’s Studies in 1979" + ] + }, + "summary": { + "nl": [ + "Geproduceerd in samenwerking met het NewMedia Centre" + ], + "en": [ + "Produced in collaboration with the NewMedia Centre" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/9c17b8ea-9bfb-3069-1c75-2cd0c5bf93db/full/full/0/default.jpg", + "type": "ContentResource" + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://www.youtube.com/watch?v=9fKQ1eXX-QI", + "type": "Video", + "service": [ + { + "profile": "http://digirati.com/objectifier", + "params": { + "data": "https://www.youtube.com/embed/9fKQ1eXX-QI" + } + }, + { + "id": "https://www.youtube.com/watch?v=9fKQ1eXX-QI", + "profile": "https://www.youtube.com" + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/6ac3a85d-0ee8-0c03-ca04-d62796417372", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=0,0,2560,1440" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/69e1c967-a73c-8e76-9b89-fce50e2d5996", + "id": "vault://iiif-parser/v4/SpecificResource/02bcd9fb", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/554a23c9-aa7e-158e-184c-44d0cc8cb2ac", + "type": "Canvas", + "label": { + "nl": [ + "Vakomschrijving van Vrouwenstudies (1979)" + ], + "en": [ + "Description of Womens’s Studies (1979)" + ] + }, + "behavior": [ + "w-5", + "h-7" + ], + "height": 1000, + "width": 762, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/554a23c9-aa7e-158e-184c-44d0cc8cb2ac/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/554a23c9-aa7e-158e-184c-44d0cc8cb2ac/annotations/113", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/753a302f-6d50-d88e-9cd6-a92c33fa1cf9", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/554a23c9-aa7e-158e-184c-44d0cc8cb2ac/annotations/114", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/bee8a9bd-3f4f-9800-c79f-350ef8297c92", + "type": "Annotation" + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/6d5f6e82-db78-847c-c0ad-f44426cb9c15", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/753a302f-6d50-d88e-9cd6-a92c33fa1cf9", + "type": "Annotation", + "label": { + "nl": [ + "Vakomschrijving van Vrouwenstudies (1979)" + ], + "en": [ + "Description of Womens’s Studies (1979)" + ] + }, + "summary": { + "nl": [ + "Archief Vrouwenstudies" + ], + "en": [ + "Women’s Studies Archives" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/fa878eb3-9ac0-6223-79ee-488d0ed70f72/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/fa878eb3-9ac0-6223-79ee-488d0ed70f72", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 727, + "height": 1024, + "sizes": [ + { + "width": 71, + "height": 100 + }, + { + "width": 142, + "height": 200 + }, + { + "width": 284, + "height": 400 + }, + { + "width": 727, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/21/fa878eb3-9ac0-6223-79ee-488d0ed70f72/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 3490, + "width": 2477, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/fa878eb3-9ac0-6223-79ee-488d0ed70f72", + "protocol": "http://iiif.io/api/image", + "width": 2477, + "height": 3490, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 727, + "height": 1024 + }, + { + "width": 284, + "height": 400 + }, + { + "width": 142, + "height": 200 + }, + { + "width": 71, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/554a23c9-aa7e-158e-184c-44d0cc8cb2ac", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=46,77,384,540" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/753a302f-6d50-d88e-9cd6-a92c33fa1cf9", + "id": "vault://iiif-parser/v4/SpecificResource/b6ea7cdf", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/bee8a9bd-3f4f-9800-c79f-350ef8297c92", + "type": "Annotation", + "label": { + "nl": [ + "Vakomschrijving van Vrouwenstudies (1979)" + ], + "en": [ + "Description of Womens’s Studies (1979)" + ] + }, + "summary": { + "nl": [ + "Archief Vrouwenstudies" + ], + "en": [ + "Women’s Studies Archives" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/ff7a4955-4c38-93db-8878-b8c3a4bcf97d/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/21/ff7a4955-4c38-93db-8878-b8c3a4bcf97d", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 725, + "height": 1024, + "sizes": [ + { + "width": 71, + "height": 100 + }, + { + "width": 142, + "height": 200 + }, + { + "width": 283, + "height": 400 + }, + { + "width": 725, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/21/ff7a4955-4c38-93db-8878-b8c3a4bcf97d/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 3495, + "width": 2475, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/21/ff7a4955-4c38-93db-8878-b8c3a4bcf97d", + "protocol": "http://iiif.io/api/image", + "width": 2475, + "height": 3495, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 725, + "height": 1024 + }, + { + "width": 283, + "height": 400 + }, + { + "width": 142, + "height": 200 + }, + { + "width": 71, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/554a23c9-aa7e-158e-184c-44d0cc8cb2ac", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=384,412,336,474" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/bee8a9bd-3f4f-9800-c79f-350ef8297c92", + "id": "vault://iiif-parser/v4/SpecificResource/7c0f86fb", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/92868b52-421e-69ab-70f5-ef5c60017ccb", + "type": "Canvas", + "label": { + "nl": [ + "'Je kunt zelfs hoogleraar worden'" + ], + "en": [ + "'You can even become a professor'" + ] + }, + "summary": { + "nl": [ + "Verslag van het NOS Journaal van de meisjesinformatiedagen in 1984. Franziska Bollerey, in 1979 aangesteld als hoogleraar bij de Faculteit Bouwkunde, figureert in een toneelstuk getiteld 'Je kunt zelfs hoogleraar worden'. 25 jaar na Korvezee was zij de tweede vrouw met deze titel aan de TH." + ], + "en": [ + "News report by the Dutch public broadcasting service NOS on the orientation days for female students in 1984. Franziska Bollerey, who was appointed professor at the Architecture Faculty in 1979, is featured in a play titled ‘You Can Even Become a Professor'. Twenty-five years after Korvezee, Bollerey became the second woman at the Institute of Technology to hold this title." + ] + }, + "behavior": [ + "bottom", + "w-7", + "h-7" + ], + "height": 2778, + "width": 3735, + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/6578b812-1fed-a9bc-fbad-0c351c74c921", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/36fba69e-160b-18d1-e24e-97c2b52f2a68", + "type": "Annotation", + "label": { + "nl": [ + "'Je kunt zelfs hoogleraar worden'" + ], + "en": [ + "'You can even become a professor'" + ] + }, + "summary": { + "nl": [ + "Verslag van het NOS Journaal van de meisjesinformatiedagen in 1984." + ], + "en": [ + "News report by the Dutch public broadcasting service NOS on the orientation days for female students in 1984. " + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/21/c6284fdb-d7f5-0616-471e-5217f8f1033d/full/full/0/default.jpg", + "type": "ContentResource" + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://www.youtube.com/watch?v=muPRP5lOWOg", + "type": "Video", + "service": [ + { + "profile": "http://digirati.com/objectifier", + "params": { + "data": "https://www.youtube.com/embed/muPRP5lOWOg" + } + }, + { + "id": "https://www.youtube.com/watch?v=muPRP5lOWOg", + "profile": "https://www.youtube.com" + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/92868b52-421e-69ab-70f5-ef5c60017ccb", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=0,0,3735,2778" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/36fba69e-160b-18d1-e24e-97c2b52f2a68", + "id": "vault://iiif-parser/v4/SpecificResource/2168b729", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/ae31c498-5cb8-247c-5cb3-d58bce409e52", + "type": "Canvas", + "label": { + "en": [ + "Cracks in the bulwarks?" + ], + "nl": [ + "Barsten in het bolwerk?" + ] + }, + "summary": { + "nl": [ + "Ondanks het groeide aandeel vrouwen en de invloed van de tweede feministische golf, blijft de TH, sinds 1986 TU Delft genaamd, een mannenbolwerk. In het project 'De technische universiteit, een mannenwereld' uit 1989 benadert Studium Generale het probleem vanaf de andere kant: de mannen. \"...als er geen barsten in dit bolwerk ontstaan en de mannen niet óók een verandering willen, zal deze er ook niet komen,\" aldus het voorwoord.", + "Maar wat is een mannengemeenschap? Wat zijn de stereotype rollenpatronen die doorbroken moeten worden? En welke blokkades werpen deze op voor het gelijkwaardig functioneren van vrouwen? In een publicatie wordt gezocht naar antwoorden op deze vragen, die tegenwoordig nog steeds relevant zijn.", + "" + ], + "en": [ + "Despite the rising percentage of female students and the impact of second-wave feminism, the Institute of Technology (renamed TU Delft in 1986) remains a men’s stronghold. In the 1989 project ‘De technische universiteit, een mannenwereld' (The University of Technology: A Man’s World) Studium Generale approaches the problem from the other side: the men’s side. ‘(...) if no cracks appear in the bulwarks and the men also remain resistant to change, there will be no change’ the foreword reads.", + "But what is a community of men? What are the gender role stereotypes that must be broken? And what obstacles do they present to women’s equality in the workplace and beyond? In the publication, answers are sought to these questions – questions that remain relevant today." + ] + }, + "requiredStatement": { + "value": { + "nl": [ + "Bekijk het volledige boek door te klikken op het beeld en vervolgens op 'Bekijk object'." + ], + "en": [ + "View the complete book by clicking the image and then 'View object'." + ] + } + }, + "behavior": [ + "left", + "w-12", + "h-6" + ], + "height": 1000, + "width": 690, + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/aade2f8c-6a49-9ea2-dd68-2f5f56d57da8", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/6ee30385-10b4-7c8d-1065-24d43e845f69", + "type": "Annotation", + "label": { + "nl": [ + "De TU Delft, een mannenwereld (1989)" + ], + "en": [ + "The University of Technology: A Man’s World (1989)" + ] + }, + "summary": { + "nl": [ + "Atria, kennisinstituut voor emancipatie en vrouwengeschiedenis " + ], + "en": [ + "Atria, institute on gender equality and women's history" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/23/39ba4c46-5c12-4d32-9f71-ad60a2795a0e/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/23/39ba4c46-5c12-4d32-9f71-ad60a2795a0e", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 707, + "height": 1024, + "sizes": [ + { + "width": 69, + "height": 100 + }, + { + "width": 138, + "height": 200 + }, + { + "width": 276, + "height": 400 + }, + { + "width": 707, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/23/39ba4c46-5c12-4d32-9f71-ad60a2795a0e/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 3746, + "width": 2585, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/23/39ba4c46-5c12-4d32-9f71-ad60a2795a0e", + "protocol": "http://iiif.io/api/image", + "width": 2585, + "height": 3746, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 707, + "height": 1024 + }, + { + "width": 276, + "height": 400 + }, + { + "width": 138, + "height": 200 + }, + { + "width": 69, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/ae31c498-5cb8-247c-5cb3-d58bce409e52", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=0,0,690,1000" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/6ee30385-10b4-7c8d-1065-24d43e845f69", + "id": "vault://iiif-parser/v4/SpecificResource/25b79c36", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736", + "type": "Canvas", + "label": { + "nl": [ + "Verder lezen?" + ], + "en": [ + "Like to read more?" + ] + }, + "behavior": [ + "w-8", + "h-6" + ], + "height": 679, + "width": 1000, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736/annotations/117", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/8523fe29-cb1a-7a51-be0b-22415ba86745", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736/annotations/118", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/06031e13-e770-9dc7-7649-40f3c7b2ad7e", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736/annotations/119", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/306ca6cd-a840-a917-3bbd-29232ed0e5e6", + "type": "Annotation" + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736/annotations/120", + "type": "Annotation", + "motivation": [ + "describing" + ], + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/7a84546b-2cf9-6293-9fc4-e50220bf0101", + "type": "Annotation" + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/116f4b96-eb56-8d81-81dc-3441c7b9db99", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/8523fe29-cb1a-7a51-be0b-22415ba86745", + "type": "Annotation", + "label": { + "nl": [ + "Almanak van de Delftsche Vrouwelijke Studenten Vereeniging (1994)" + ], + "en": [ + "Almanak van de Delftsche Vrouwelijke Studenten Vereeniging (1994)" + ] + }, + "summary": { + "nl": [ + "TU Delft Library" + ], + "en": [ + "TU Delft Library" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/6/1641f326-5ebb-4b55-839d-b6e7dd748683/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/6/1641f326-5ebb-4b55-839d-b6e7dd748683", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 729, + "height": 1024, + "sizes": [ + { + "width": 71, + "height": 100 + }, + { + "width": 142, + "height": 200 + }, + { + "width": 285, + "height": 400 + }, + { + "width": 729, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/6/1641f326-5ebb-4b55-839d-b6e7dd748683/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 4672, + "width": 3328, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/6/1641f326-5ebb-4b55-839d-b6e7dd748683", + "protocol": "http://iiif.io/api/image", + "width": 3328, + "height": 4672, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 729, + "height": 1024 + }, + { + "width": 285, + "height": 400 + }, + { + "width": 142, + "height": 200 + }, + { + "width": 71, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=21,21,338,473" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/8523fe29-cb1a-7a51-be0b-22415ba86745", + "id": "vault://iiif-parser/v4/SpecificResource/46953aa7", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/06031e13-e770-9dc7-7649-40f3c7b2ad7e", + "type": "Annotation", + "label": { + "nl": [ + "Vrouwen in techniek: 90 jaar Delftse vrouwelijke ingenieurs (1995)" + ], + "en": [ + "Vrouwen in techniek: 90 jaar Delftse vrouwelijke ingenieurs (1995)" + ] + }, + "summary": { + "nl": [ + "TU Delft Library" + ], + "en": [ + "TU Delft Library" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/6/69f7f9b7-03fe-4b30-8038-7a63c8cbfa23/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/6/69f7f9b7-03fe-4b30-8038-7a63c8cbfa23", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 861, + "height": 1024, + "sizes": [ + { + "width": 84, + "height": 100 + }, + { + "width": 168, + "height": 200 + }, + { + "width": 336, + "height": 400 + }, + { + "width": 861, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/6/69f7f9b7-03fe-4b30-8038-7a63c8cbfa23/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 3808, + "width": 3200, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/6/69f7f9b7-03fe-4b30-8038-7a63c8cbfa23", + "protocol": "http://iiif.io/api/image", + "width": 3200, + "height": 3808, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 861, + "height": 1024 + }, + { + "width": 336, + "height": 400 + }, + { + "width": 168, + "height": 200 + }, + { + "width": 84, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=266,238,348,413" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/06031e13-e770-9dc7-7649-40f3c7b2ad7e", + "id": "vault://iiif-parser/v4/SpecificResource/2c3a674c", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/306ca6cd-a840-a917-3bbd-29232ed0e5e6", + "type": "Annotation", + "label": { + "nl": [ + "Vrouwen die techniek studeren... hoe apart (1984)" + ], + "en": [ + "Vrouwen die techniek studeren... hoe apart (1984)" + ] + }, + "summary": { + "nl": [ + "Atria, kennisinstituut voor emancipatie en vrouwengeschiedenis" + ], + "en": [ + "Atria, institute on gender equality and women's history" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/23/d232fb19-02b2-46c0-a6ec-91b502bd667c/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/23/d232fb19-02b2-46c0-a6ec-91b502bd667c", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 702, + "height": 1024, + "sizes": [ + { + "width": 69, + "height": 100 + }, + { + "width": 137, + "height": 200 + }, + { + "width": 274, + "height": 400 + }, + { + "width": 702, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/23/d232fb19-02b2-46c0-a6ec-91b502bd667c/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 4646, + "width": 3184, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/23/d232fb19-02b2-46c0-a6ec-91b502bd667c", + "protocol": "http://iiif.io/api/image", + "width": 3184, + "height": 4646, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16, + 32 + ] + } + ], + "sizes": [ + { + "width": 702, + "height": 1024 + }, + { + "width": 274, + "height": 400 + }, + { + "width": 137, + "height": 200 + }, + { + "width": 69, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=504,21,284,413" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/306ca6cd-a840-a917-3bbd-29232ed0e5e6", + "id": "vault://iiif-parser/v4/SpecificResource/4c3498d7", + "type": "SpecificResource" + } + ] + } + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/7a84546b-2cf9-6293-9fc4-e50220bf0101", + "type": "Annotation", + "label": { + "nl": [ + "THD-vrouwendag 1985 : lezingen - vraagstelling - forum" + ], + "en": [ + "THD-vrouwendag 1985 : lezingen - vraagstelling - forum" + ] + }, + "summary": { + "nl": [ + "Atria, kennisinstituut voor emancipatie en vrouwengeschiedenis" + ], + "en": [ + "Atria, institute on gender equality and women's history" + ] + }, + "thumbnail": [ + { + "id": "https://dlc.services/thumbs/7/23/c7f16b95-d4dd-4596-875b-12a2652d7670/full/full/0/default.jpg", + "type": "Image", + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/thumbs/7/23/c7f16b95-d4dd-4596-875b-12a2652d7670", + "protocol": "http://iiif.io/api/image", + "profile": [ + "http://iiif.io/api/image/2/level0.json", + { + "formats": [ + "jpg" + ], + "qualities": [ + "color" + ], + "supports": [ + "sizeByWhListed" + ] + } + ], + "width": 731, + "height": 1024, + "sizes": [ + { + "width": 71, + "height": 100 + }, + { + "width": 143, + "height": 200 + }, + { + "width": 286, + "height": 400 + }, + { + "width": 731, + "height": 1024 + } + ] + } + ] + } + ], + "motivation": [ + "painting" + ], + "body": { + "id": "https://dlc.services/iiif-img/7/23/c7f16b95-d4dd-4596-875b-12a2652d7670/full/full/0/default.jpg", + "type": "Image", + "label": { + "nl": [ + "-" + ] + }, + "format": "image/jpeg", + "height": 3270, + "width": 2334, + "service": [ + { + "type": "ImageService2", + "id": "https://dlc.services/iiif-img/7/23/c7f16b95-d4dd-4596-875b-12a2652d7670", + "protocol": "http://iiif.io/api/image", + "width": 2334, + "height": 3270, + "tiles": [ + { + "width": 256, + "height": 256, + "scaleFactors": [ + 1, + 2, + 4, + 8, + 16 + ] + } + ], + "sizes": [ + { + "width": 731, + "height": 1024 + }, + { + "width": 286, + "height": 400 + }, + { + "width": 143, + "height": 200 + }, + { + "width": 71, + "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" + ] + } + ] + } + ] + }, + "target": { + "type": "SpecificResource", + "source": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/f4519824-8482-4d56-18cb-03ff6aad2736", + "type": "Canvas" + }, + "selector": [ + { + "type": "FragmentSelector", + "value": "xywh=696,250,277,387" + } + ], + "language": [], + "iiif-parser:hasPart": [ + { + "iiif-parser:partOf": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/7a84546b-2cf9-6293-9fc4-e50220bf0101", + "id": "vault://iiif-parser/v4/SpecificResource/e1b4e56c", + "type": "SpecificResource" + } + ] + } + } + ] + } + ] + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/46ce51f6-f3be-7ac8-6e54-48d3b5dffc4e", + "type": "Canvas", + "behavior": [ + "info", + "w-4", + "h-6" + ], + "height": 1000, + "width": 1000, + "annotations": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/46ce51f6-f3be-7ac8-6e54-48d3b5dffc4e/annotations", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/46ce51f6-f3be-7ac8-6e54-48d3b5dffc4e/annotations/0", + "type": "Annotation", + "motivation": [ + "describing" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/46ce51f6-f3be-7ac8-6e54-48d3b5dffc4e/annotations/0/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

Bibliografie

\n\n

Algemeen

  • Damme-van Weele, Marina van; Jacobien Ressing-Wolfert (1995) Vrouwen in techniek: 90 jaar Delftse vrouwelijke ingenieurs, Delft: Deltech uitgevers. Digitaal. Bij het Stadsarchief Delft is een archief beschikbaar van het werkmateriaal voor deze uitgave.
  • Giezen , R. (1985) THD-vrouwendag 1985 : lezingen - vraagstelling - forum, Delft: Technische Hogeschool Delft. Digitaal
  • Gillissen, Nannie; Anneke Lissenberg (1984) Vrouwen in een mannenbolwerk: een vergelijkend onderzoek naar de ervaringen van vrouwelijke studenten in de jaren vijftig en zeventig aan de Technische Hogeschool Delft, Amsterdam: Sociologisch Instituut (doctoraalscriptie sociologie), Universiteit van Amsterdam. Digitaal
  • Haas, W. de (1963) “Onze eerste vrouwelijke studenten” in T.H. Mededelingen, jaargang 10, nummer 9, mei 1963.
  • Jong, Frida de (1984) Vrouwen die techniek studeren... hoe apart, Delft: Technische Hogeschool Delft. Digitaal
  • Jong, Frida de (1997), “Standhouden in Delft” in Gewina, 20, 227-242. Digitaal, zie ook de introductie van dit nummer (\"Zy is toch wel zeer begaafd’. Historische bijdragen over vrouwen in de bètawetenschappen\").
  • Knippenberg, W.J.M. (1994) Vrouwen in de Techniek, opening academisch jaar 1994, Delft: TH Delft, september 1994. Digitaal
  • Lieshout, René van; Lex Veldhoen; Johan den Hartog (1989) De Technische Universiteit, een mannenwereld, Delft: Studium Generale TU Delft. Digitaal
  • Wijk, Charlotte van (2018) “Women’s Studies at the Architecture Department” in MoMoWo, Women’s Creativity since the Modern Movement: Toward a New Perception and Reception. Digitaal

Statistieken

Statistieken over de periode 2002-2018 zijn beschikbaar op de website van de TU Delft.

De jaarboeken van de Technische Hoogeschool Delft (1917-1969) bevatten statistieken over de eerst ingeschreven studenten, het totale aantal studenten en het aantal geslaagde studenten. De jaarboeken van de periode 1916-1951 zijn gedigitaliseerd. Het eerste jaarboek uit 1916 bevat gegevens over de periode 1905-1915. De jaarboeken gaan over in het Verslag over de Technische Hogeschool te Delft. Vanaf de jaren tachtig is het uitgebreidere Statistisch jaarboek beschikbaar (periode 1982-1986, periode 1987-2002).

Voor deze tentoonstelling zijn geen statistieken geraadpleegd voor de periode van de Koninklijke Academie (1842-1864) of Polytechnische school (1864-1905) omdat vrouwelijke studenten toen niet de mogelijkheid hadden om voltijds te studeren.

Delftsche Vrouwelijke Studentenvereniging

De almanakken van de DVSV van de periode 1914-49 zijn gedigitaliseerd en te raadplegen op Delpher. De almanakken uit 1930 en 1931 zijn ook te vinden op deze website samen met een jubileumuitgave uit 1994, 100 jaar na de oprichting van de vereniging. Het archief van de DVSV bevindt zich in het Stadsarchief Delft.

Archief Vrouwenstudies

Het archief van Vrouwenstudies is door Anna Vos geschonken aan de Faculteit Bouwkunde. Momenteel wordt er gezocht naar een permanente bewaarplek. Contactpersonen voor inzage in het archief zijn Charlotte van Wijk (Faculteit Bouwkunde) en Jules Schoonman (TU Delft Library).

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/46ce51f6-f3be-7ac8-6e54-48d3b5dffc4e/annotations/0/en", + "type": "TextualBody", + "format": "text/html", + "value": "

Bibliography

\n\n

Only available in Dutch

Algemeen

  • Damme-van Weele, Marina van; Jacobien Ressing-Wolfert (1995) Vrouwen in techniek: 90 jaar Delftse vrouwelijke ingenieurs, Delft: Deltech uitgevers. Digitaal. Bij het Stadsarchief Delft is een archief beschikbaar van het werkmateriaal voor deze uitgave.
  • Giezen , R. (1985) THD-vrouwendag 1985 : lezingen - vraagstelling - forum, Delft: Technische Hogeschool Delft. Digitaal
  • Gillissen, Nannie; Anneke Lissenberg (1984) Vrouwen in een mannenbolwerk: een vergelijkend onderzoek naar de ervaringen van vrouwelijke studenten in de jaren vijftig en zeventig aan de Technische Hogeschool Delft, Amsterdam: Sociologisch Instituut (doctoraalscriptie sociologie), Universiteit van Amsterdam. Digitaal
  • Haas, W. de (1963) “Onze eerste vrouwelijke studenten” in T.H. Mededelingen, jaargang 10, nummer 9, mei 1963.
  • Jong, Frida de (1984) Vrouwen die techniek studeren... hoe apart, Delft: Technische Hogeschool Delft. Digitaal
  • Jong, Frida de (1997), “Standhouden in Delft” in Gewina, 20, 227-242. Digitaal, zie ook de introductie van dit nummer (\"Zy is toch wel zeer begaafd’. Historische bijdragen over vrouwen in de bètawetenschappen\").
  • Knippenberg, W.J.M. (1994) Vrouwen in de Techniek, opening academisch jaar 1994, Delft: TH Delft, september 1994. Digitaal
  • Lieshout, René van; Lex Veldhoen; Johan den Hartog (1989) De Technische Universiteit, een mannenwereld, Delft: Studium Generale TU Delft. Digitaal
  • Wijk, Charlotte van (2018) “Women’s Studies at the Architecture Department” in MoMoWo, Women’s Creativity since the Modern Movement: Toward a New Perception and Reception. Digitaal

Statistieken

Statistieken over de periode 2002-2018 zijn beschikbaar op de website van de TU Delft.

De jaarboeken van de Technische Hoogeschool Delft (1917-1969) bevatten statistieken over de eerst ingeschreven studenten, het totale aantal studenten en het aantal geslaagde studenten. De jaarboeken van de periode 1916-1951 zijn gedigitaliseerd. Het eerste jaarboek uit 1916 bevat gegevens over de periode 1905-1915. De jaarboeken gaan over in het Verslag over de Technische Hogeschool te Delft. Vanaf de jaren tachtig is het uitgebreidere Statistisch jaarboek beschikbaar (periode 1982-1986, periode 1987-2002).

Voor deze tentoonstelling zijn geen statistieken geraadpleegd voor de periode van de Koninklijke Academie (1842-1864) of Polytechnische school (1864-1905) omdat vrouwelijke studenten toen niet de mogelijkheid hadden om voltijds te studeren.

Delftsche Vrouwelijke Studentenvereniging

De almanakken van de DVSV van de periode 1914-49 zijn gedigitaliseerd en te raadplegen op Delpher. De almanakken uit 1930 en 1931 zijn ook te vinden op deze website samen met een jubileumuitgave uit 1994, 100 jaar na de oprichting van de vereniging. Het archief van de DVSV bevindt zich in het Stadsarchief Delft.

Archief Vrouwenstudies

Het archief van Vrouwenstudies is door Anna Vos geschonken aan de Faculteit Bouwkunde. Momenteel wordt er gezocht naar een permanente bewaarplek. Contactpersonen voor inzage in het archief zijn Charlotte van Wijk (Faculteit Bouwkunde) en Jules Schoonman (TU Delft Library).

", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/46ce51f6-f3be-7ac8-6e54-48d3b5dffc4e", + "type": "Canvas" + } + } + ] + } + ], + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/list/9a9737d8-2e14-c013-b115-384f35b50665", + "type": "AnnotationPage", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/annotation/9b64ade1-3240-2a6c-c8fb-7aec6cd30b1a", + "type": "Annotation", + "motivation": [ + "painting" + ], + "body": { + "type": "List", + "items": [ + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/ab68dad5-fe33-1835-dd6c-5cf0adcffef1/nl", + "type": "TextualBody", + "format": "text/html", + "value": "

Bibliografie

\n\n

Verschillende bronnen zijn gedigitaliseerd in het kader van deze tentoonstelling. Klik hieronder op 'Verder lezen' voor een uitgebreidere bibliografie.

", + "language": "nl" + }, + { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/textualbody/ab68dad5-fe33-1835-dd6c-5cf0adcffef1/en", + "type": "TextualBody", + "format": "text/html", + "value": "

Bibliography

\n\n

Several source texts have been digitised for this exhibition. Click 'Read More' for a more extensive bibliography.

", + "language": "en" + } + ] + }, + "target": { + "id": "https://heritage.tudelft.nl/iiif/62d39710-83ec-5064-a890-2bb3845cb67d/canvas/46ce51f6-f3be-7ac8-6e54-48d3b5dffc4e", + "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..185cde9 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--bl-av-manifest.json @@ -0,0 +1,4843 @@ +{ + "@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": "Timeline", + "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": "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", + "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": "Timeline", + "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": "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", + "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": "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", + "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": "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", + "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..42ce491 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--exhibit-2.json @@ -0,0 +1,8536 @@ +{ + "@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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + } + ] + } + ] + }, + { + "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": { + "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": { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + } + ] + } + ] + }, + { + "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": { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + } + ] + } + ] + }, + { + "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": { + "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": { + "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": { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + } + ] + } + ] + }, + { + "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": { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + } + ] + } + ] + }, + { + "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": [] + } + }, + { + "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": [] + } + } + ] + } + ] + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + }, + { + "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": [] + } + } + ] + } + ] + } + ], + "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..886a1a4 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--ghent-choices.json @@ -0,0 +1,11662 @@ +{ + "@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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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": "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" + }, + "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..96b2183 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--has-part.json @@ -0,0 +1,63 @@ +{ + "@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..306e377 --- /dev/null +++ b/fixtures/presentation-4/upgraded-from-p3/p3--ldmax.json @@ -0,0 +1,501 @@ +{ + "@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", + "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", + "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", + "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", + "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", + "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", + "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..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", @@ -238,15 +258,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,30 +267,25 @@ "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?cache=5" }, "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 a3fa2f6..9134f53 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?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 @@ -39,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 @@ -60,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 @@ -357,19 +344,10 @@ 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?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==} @@ -426,6 +404,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==} @@ -774,15 +756,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} @@ -909,9 +885,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} @@ -931,10 +904,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'} @@ -965,16 +934,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==} @@ -1049,10 +1008,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==} @@ -1074,19 +1029,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} @@ -1097,9 +1039,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'} @@ -1108,6 +1047,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==} @@ -1160,9 +1102,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: @@ -1495,9 +1437,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'} @@ -1550,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': {} @@ -1776,24 +1715,9 @@ 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': + '@iiif/parser@https://pkg.pr.new/IIIF-Commons/parser/@iiif/parser@60?cache=5': dependencies: - '@types/geojson': 7946.0.13 + picocolors: 1.1.1 '@jest/schemas@29.6.3': dependencies: @@ -1854,6 +1778,8 @@ snapshots: '@oxc-project/types@0.98.0': {} + '@publint/pack@0.1.4': {} + '@quansync/fs@0.1.5': dependencies: quansync: 0.2.11 @@ -2111,14 +2037,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 @@ -2254,8 +2174,6 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -2269,14 +2187,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: @@ -2315,17 +2225,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: {} @@ -2407,10 +2306,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: @@ -2428,19 +2323,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 @@ -2449,10 +2331,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 @@ -2461,6 +2339,8 @@ snapshots: dependencies: yocto-queue: 1.0.0 + package-manager-detector@1.6.0: {} + parse-svg-path@0.1.2: optional: true @@ -2506,10 +2386,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: {} @@ -2683,7 +2564,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 @@ -2701,7 +2582,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' @@ -2836,8 +2717,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/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/activations.ts b/src/activations.ts new file mode 100644 index 0000000..6c959fb --- /dev/null +++ b/src/activations.ts @@ -0,0 +1,2 @@ +export * from './activations/helper'; +export * from './activations/types'; diff --git a/src/activations/helper.ts b/src/activations/helper.ts new file mode 100644 index 0000000..68786a2 --- /dev/null +++ b/src/activations/helper.ts @@ -0,0 +1,107 @@ +import { type CompatVault, compatVault } from '../compat'; +import { parseSceneSpecificResource } from '../scenes/parse-specific-resource'; +import type { SceneAnnotation, SceneResource } from '../scenes/types'; +import type { ActivationTransaction } from './types'; + +function asArray(value: T | T[] | null | undefined): T[] { + if (value == null) return []; + return Array.isArray(value) ? value : [value]; +} + +type ActivationAnnotation = SceneAnnotation; +type AnnotationPageLike = { id: string; type?: string; items?: unknown }; +type ParentRef = { id: string; type: string }; + +function unwrapBodyList(body: unknown): unknown[] { + if (!body) return []; + if (Array.isArray(body)) return body; + if (typeof body === 'object' && body !== null) { + const typed = body as { type?: string; items?: unknown }; + if (typed.type === 'List' && Array.isArray(typed.items)) { + return [...typed.items]; + } + } + return [body]; +} + +function getParentRef(resource: { id: string; type?: string }): ParentRef { + return { id: resource.id, type: resource.type || 'Annotation' }; +} + +function getMotivations(annotation: ActivationAnnotation): string[] { + const m = annotation?.motivation; + return Array.isArray(m) ? [...m] : []; +} + +export function createActivationsHelper(vault: CompatVault = compatVault) { + function getAllActivatingAnnotations( + containerOrId: string | { id: string; type?: string; items?: unknown; annotations?: unknown } + ): ActivationAnnotation[] { + const container = + typeof containerOrId === 'string' + ? vault.get<{ id: string; type?: string; items?: unknown; annotations?: unknown }>(containerOrId) + : containerOrId; + if (!container || typeof container !== 'object') return []; + + const containerParent = getParentRef(container); + const pages: AnnotationPageLike[] = []; + if (container.items) { + pages.push(...asArray(vault.get(container.items as never, { parent: containerParent }))); + } + if (container.annotations) { + pages.push( + ...asArray(vault.get(container.annotations as never, { parent: containerParent })) + ); + } + + const flat: ActivationAnnotation[] = []; + for (const page of pages) { + if (!page) continue; + const items = asArray( + vault.get(page.items as never, { + parent: getParentRef({ id: page.id, type: page.type || 'AnnotationPage' }), + }) + ); + flat.push(...items); + } + + return flat.filter((anno) => getMotivations(anno).includes('activating')); + } + + function parseActivatingAnnotation(annotationOrId: string | ActivationAnnotation): ActivationTransaction | null { + const annotation = + typeof annotationOrId === 'string' ? vault.get(annotationOrId) : annotationOrId; + if (!annotation || typeof annotation !== 'object') return null; + if (!getMotivations(annotation).includes('activating')) return null; + + const parent = getParentRef(annotation as { id: string; type?: string }); + const bodies = unwrapBodyList(annotation.body); + const steps: ActivationTransaction['steps'] = []; + + for (const bodyEntry of bodies) { + const parsed = parseSceneSpecificResource(bodyEntry); + const sources = asArray(parsed.source); + for (const source of sources) { + const resolved = vault.get(source as never, { parent }); + steps.push({ + source: resolved, + sourceRef: source, + selector: parsed.selector, + transform: parsed.transform, + actions: parsed.action, + }); + } + } + + return { + annotationId: annotation.id, + annotation, + steps, + }; + } + + return { + getAllActivatingAnnotations, + parseActivatingAnnotation, + }; +} diff --git a/src/activations/types.ts b/src/activations/types.ts new file mode 100644 index 0000000..4995952 --- /dev/null +++ b/src/activations/types.ts @@ -0,0 +1,16 @@ +import type { Selector, Transform } from '@iiif/parser/presentation-4/types'; +import type { SceneAnnotation, SceneResource } from '../scenes/types'; + +export type ActivationStep = { + source: SceneResource | null; + sourceRef: unknown; + selector: Selector | Selector[] | null; + transform: Transform[]; + actions: unknown[]; +}; + +export type ActivationTransaction = { + annotationId: string; + annotation: SceneAnnotation; + steps: ActivationStep[]; +}; diff --git a/src/annotation-targets.ts b/src/annotation-targets.ts index a75729e..0e6f2a8 100644 --- a/src/annotation-targets.ts +++ b/src/annotation-targets.ts @@ -2,3 +2,4 @@ export * from './annotation-targets/expand-target'; export * from './annotation-targets/parse-selector'; export * from './annotation-targets/selector-types'; export * from './annotation-targets/target-types'; +export * from './annotation-targets/wkt'; diff --git a/src/annotation-targets/expand-target.ts b/src/annotation-targets/expand-target.ts index 0b576a2..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/presentation-3'; +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 d9b6084..4d62eda 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/presentation-3'; +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 { @@ -8,15 +9,18 @@ import { type NormalizedSvgPathCommandType, parseAndNormalizeSvgPath, } from './normalize-svg'; -import { - type ParsedSelector, - type SelectorStyle, - type SupportedSelectors, - type SvgSelector, - type SvgShapeType, - TemporalBoxSelector, - type TemporalSelector, +import type { + ParsedSelector, + SelectorStyle, + SupportedSelectors, + SvgSelector, + SvgShapeType, + TemporalSelector, } from './selector-types'; +import { parseWkt } from './wkt'; + +type Selector = SelectorV3 | SelectorV4; +type ImageApiSelector = ImageApiSelectorV3 | ImageApiSelectorV4; 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,15 @@ export function parseSelector( ); } - if (source.type) { - if (source.type === 'PointSelector' && (source.t || source.t === 0)) { + if (sourceAny.type) { + if ( + sourceAny.type === 'PointSelector' && + (typeof sourceAny.instant === 'number' || typeof sourceAny.t === 'number') + ) { const selector: TemporalSelector = { type: 'TemporalSelector', temporal: { - startTime: source.t, + startTime: typeof sourceAny.instant === 'number' ? sourceAny.instant : sourceAny.t, }, }; @@ -140,13 +149,18 @@ export function parseSelector( }); } - if (source.type === 'PointSelector' && source.x && source.y) { + if (sourceAny.type === 'PointSelector' && typeof sourceAny.x === 'number' && typeof sourceAny.y === 'number') { + const spatial: any = { + x: sourceAny.x, + y: sourceAny.y, + }; + if (typeof sourceAny.z === 'number') { + spatial.z = sourceAny.z; + } + const selector: SupportedSelectors = { type: 'PointSelector', - spatial: { - x: source.x, - y: source.y, - }, + spatial, }; return resolveHints({ @@ -155,6 +169,63 @@ export function parseSelector( iiifRenderingHints, }); } + + if ( + (sourceAny.type === 'WktSelector' || sourceAny.type === 'WKTSelector' || sourceAny.type === 'PolygonZSelector') && + typeof sourceAny.value === 'string' + ) { + const geometry = parseWkt(sourceAny.value); + const selector: SupportedSelectors = { + type: sourceAny.type, + value: sourceAny.value, + } as any; + + if (geometry?.type === 'Point') { + const [x, y, z] = geometry.coordinates; + selector.points3d = [[x, y, typeof z === 'number' ? z : 0]]; + const spatial: any = { unit: 'pixel', x, y }; + if (typeof z === 'number') { + spatial.z = z; + } + selector.spatial = spatial; + } + + if (geometry?.type === 'Polygon') { + selector.points3d = geometry.coordinates.map(([x, y, z]) => [x, y, typeof z === 'number' ? z : 0]); + const xs = geometry.coordinates.map(([x]) => x); + const ys = geometry.coordinates.map(([, y]) => y); + const minX = Math.min(...xs); + const minY = Math.min(...ys); + const maxX = Math.max(...xs); + const maxY = Math.max(...ys); + selector.spatial = { + unit: 'pixel', + x: minX, + y: minY, + width: maxX - minX, + height: maxY - minY, + }; + } + + return resolveHints({ + selector, + selectors: [selector], + iiifRenderingHints, + }); + } + + if (sourceAny.type === 'AnimationSelector' && typeof sourceAny.value === 'string') { + const selector: SupportedSelectors = { + type: 'AnimationSelector', + value: sourceAny.value, + } as any; + + return resolveHints({ + selector, + selectors: [selector], + iiifRenderingHints, + }); + } } if (isImageApiSelector(source)) { diff --git a/src/annotation-targets/selector-types.ts b/src/annotation-targets/selector-types.ts index 52979ec..4778965 100644 --- a/src/annotation-targets/selector-types.ts +++ b/src/annotation-targets/selector-types.ts @@ -1,4 +1,7 @@ -import type { ImageApiSelector } from '@iiif/presentation-3'; +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 { @@ -11,11 +14,13 @@ export interface SupportedSelector { unit?: 'percent' | 'pixel'; x: number; y: number; + z?: number; width?: number; height?: number; }; rotation?: number; points?: [number, number][]; + points3d?: [number, number, number][]; svg?: string; svgShape?: SvgShapeType; style?: SelectorStyle; @@ -69,10 +74,26 @@ export interface PointSelector extends SupportedSelector { spatial: { x: number; y: number; + z?: number; }; rotation?: number; } +export interface WktSelector extends SupportedSelector { + type: 'WktSelector' | 'WKTSelector'; + value: string; +} + +export interface PolygonZSelector extends SupportedSelector { + type: 'PolygonZSelector'; + value: string; +} + +export interface AnimationSelector extends SupportedSelector { + type: 'AnimationSelector'; + value: string; +} + export interface SvgSelector extends SupportedSelector { type: 'SvgSelector'; svg: string; @@ -122,6 +143,9 @@ export type SupportedSelectors = | BoxSelector | TemporalBoxSelector | PointSelector + | WktSelector + | PolygonZSelector + | AnimationSelector | SvgSelector | RotationSelector; diff --git a/src/annotation-targets/target-types.ts b/src/annotation-targets/target-types.ts index f400598..bf5e00b 100644 --- a/src/annotation-targets/target-types.ts +++ b/src/annotation-targets/target-types.ts @@ -1,11 +1,21 @@ -import { ExternalWebResource } from '@iiif/presentation-3'; -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/annotation-targets/wkt.ts b/src/annotation-targets/wkt.ts new file mode 100644 index 0000000..c9919b3 --- /dev/null +++ b/src/annotation-targets/wkt.ts @@ -0,0 +1,72 @@ +export type WktPoint = { + type: 'Point'; + coordinates: [number, number, number?]; +}; + +export type WktPolygon = { + type: 'Polygon'; + // Single ring for now: [[x,y,z?], ...] + coordinates: Array<[number, number, number?]>; +}; + +export type WktGeometry = WktPoint | WktPolygon; + +function parseNumberTuple(tuple: string): [number, number, number?] | null { + const parts = tuple + .trim() + .split(/\s+/g) + .filter(Boolean) + .map((v) => Number.parseFloat(v)); + + if (parts.length < 2 || parts.some((n) => Number.isNaN(n))) { + return null; + } + + return parts.length >= 3 ? [parts[0], parts[1], parts[2]] : [parts[0], parts[1]]; +} + +export function parseWkt(value: string): WktGeometry | null { + if (!value || typeof value !== 'string') { + return null; + } + + const input = value.trim(); + const upper = input.toUpperCase(); + + // POINT / POINTZ variants. + // Examples: + // - POINT(1 2) + // - POINTZ(1 2 3) + // - POINT Z (1 2 3) + const pointMatch = /POINT\s*Z?\s*\(\s*([^)]+)\s*\)/i.exec(input); + if (pointMatch) { + const coords = parseNumberTuple(pointMatch[1]); + if (!coords) return null; + return { type: 'Point', coordinates: coords }; + } + + // POLYGON / POLYGONZ variants (single ring only). + // Examples: + // - POLYGON((x y, ...)) + // - POLYGONZ((x y z, ...)) + // - POLYGON Z ((x y z, ...)) + const polyMatch = /POLYGON\s*Z?\s*\(\(\s*([^)]+?)\s*\)\)/i.exec(input); + if (polyMatch) { + const tuples = polyMatch[1].split(',').map((s) => s.trim()); + const coords: Array<[number, number, number?]> = []; + for (const t of tuples) { + const parsed = parseNumberTuple(t); + if (!parsed) return null; + coords.push(parsed); + } + return { type: 'Polygon', coordinates: coords }; + } + + // POLYGONZ without spaces is common in fixtures; normalize via upper check too. + if (upper.startsWith('POLYGONZ') || upper.startsWith('POLYGON')) { + // If we got here, it is some other POLYGON form we don't yet parse. + return null; + } + + return null; +} diff --git a/src/annotations.ts b/src/annotations.ts index 8a003ad..c2619e1 100644 --- a/src/annotations.ts +++ b/src/annotations.ts @@ -1,6 +1,6 @@ -import { ChoiceBody, ImageService, InternationalString } from '@iiif/presentation-3'; +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/content-state.ts b/src/content-state.ts index d362aab..d8abf57 100644 --- a/src/content-state.ts +++ b/src/content-state.ts @@ -1,6 +1,10 @@ -import { Annotation, AnyMotivation } from '@iiif/presentation-3'; +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 78004e7..f8b137d 100644 --- a/src/events.ts +++ b/src/events.ts @@ -1,10 +1,13 @@ -import type { Reference } from '@iiif/presentation-3'; -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/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..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/presentation-3'; +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 4dcb120..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/presentation-3'; -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 6bb9170..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/presentation-3'; -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 f9ce74e..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/presentation-3'; -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 efda42d..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/presentation-3'; -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 65eb84c..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/presentation-3'; -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 1d5ce6b..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/presentation-3'; +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 c0ec7be..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/presentation-3'; -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 c9a3ded..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, -} from '@iiif/presentation-3'; -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 ContentResourceV3, + IIIFExternalWebResource as IIIFExternalWebResourceV3, + ImageProfile as ImageProfileV3, + ImageService as ImageServiceV3, + ImageSize as ImageSizeV3, + ImageTile as ImageTileV3, +} from '@iiif/parser/presentation-3/types'; +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 e647a52..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/presentation-3'; 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 2364eb5..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/presentation-3'; +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 d7ef750..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/presentation-3'; +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/index.ts b/src/index.ts index d32505e..ee3f673 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,14 +1,16 @@ +export * from './activations'; +export * from './annotation-targets'; +export * from './content-state'; export * from './events'; -export * from './styles'; -export * from './thumbnail'; +export * from './fetch'; export * from './i18n'; -export * from './content-state'; -export * from './annotation-targets'; +export * from './image-service'; +export * from './nav-date'; export * from './painting-annotations'; export * from './ranges'; +export * from './scenes'; +export * from './search1'; export * from './sequences'; +export * from './styles'; +export * from './thumbnail'; export * from './vault'; -export * from './fetch'; -export * from './search1'; -export * from './nav-date'; -export * from './image-service'; diff --git a/src/nav-date.ts b/src/nav-date.ts index af4536b..cc39721 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/presentation-3'; -import { CompatVault } from './compat'; -import { CollectionNormalized, ManifestNormalized } from '@iiif/presentation-3-normalized'; +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'; @@ -94,7 +122,9 @@ export function createDateNavigation(itemRef) as typeof itemRef | undefined) || itemRef; + if (item.navDate) { const d = new Date(item.navDate); const year = d.getFullYear(); diff --git a/src/painting-annotations/helper.ts b/src/painting-annotations/helper.ts index 453e6fc..96a56b4 100644 --- a/src/painting-annotations/helper.ts +++ b/src/painting-annotations/helper.ts @@ -1,8 +1,27 @@ -import { ContentResource, IIIFExternalWebResource } from '@iiif/presentation-3'; -import { AnnotationNormalized, CanvasNormalized } from '@iiif/presentation-3-normalized'; -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 c82879a..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/presentation-3"; +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 e2ca8fd..224e103 100644 --- a/src/painting-annotations/types.ts +++ b/src/painting-annotations/types.ts @@ -1,6 +1,19 @@ -import { IIIFExternalWebResource, SpecificResource } from '@iiif/presentation-3'; -import { InternationalString } from '@iiif/presentation-3'; -import { AnnotationNormalized } from '@iiif/presentation-3-normalized'; +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 aad9c2a..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/presentation-3'; -import type { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized'; +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,12 +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 CanvasLike, path: currentPath }); } } return canvases; @@ -362,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/scenes.ts b/src/scenes.ts new file mode 100644 index 0000000..54e6918 --- /dev/null +++ b/src/scenes.ts @@ -0,0 +1,3 @@ +export * from "./scenes/helper"; +export * from "./scenes/parse-specific-resource"; +export * from "./scenes/types"; diff --git a/src/scenes/helper.ts b/src/scenes/helper.ts new file mode 100644 index 0000000..1f6db40 --- /dev/null +++ b/src/scenes/helper.ts @@ -0,0 +1,244 @@ +import type { InternationalString } from '@iiif/parser/presentation-3/types'; +import type { ChoiceResource } from '@iiif/parser/presentation-4/types'; +import type { SceneNormalized } from '@iiif/parser/presentation-4-normalized/types'; +import { expandTarget } from '../annotation-targets/expand-target'; +import { type CompatVault, compatVault } from '../compat'; +import type { ComplexChoice } from '../painting-annotations/types'; +import { parseSceneSpecificResource } from './parse-specific-resource'; +import { + KNOWN_SCENE_PAINTABLE_TYPES, + normalizeScenePaintableType, + type SceneAnnotation, + type ScenePaintables, + type SceneResource, +} from './types'; + +type SceneLike = SceneNormalized & { + annotations?: ReadonlyArray<{ id: string; type: string }>; +}; +type AnnotationPageLike = { + id: string; + type?: string; + items?: unknown; +}; +type ParentRef = { + id: string; + type: string; +}; + +function asArray(value: T | T[] | null | undefined): T[] { + if (value == null) return []; + return Array.isArray(value) ? value : [value]; +} + +function isDefined(value: T | undefined | null): value is T { + return value !== undefined && value !== null; +} + +function getMotivations(annotation: SceneAnnotation): string[] { + const m = annotation?.motivation; + return Array.isArray(m) ? [...m] : []; +} + +function unwrapBodyList(body: unknown): unknown[] { + if (!body) return []; + if (Array.isArray(body)) return body; + if (typeof body === 'object' && body !== null) { + const typed = body as { type?: string; items?: unknown }; + if (typed.type === 'List' && Array.isArray(typed.items)) return [...typed.items]; + } + return [body]; +} + +function getParentRef(resource: { id: string; type?: string }): ParentRef { + return { + id: resource.id, + type: resource.type || 'Annotation', + }; +} + +function isSceneResource(value: unknown): value is SceneResource { + return !!value && typeof value === 'object'; +} + +function toLanguageMap(value: unknown): InternationalString | undefined { + if (!value || typeof value !== 'object' || Array.isArray(value)) { + return undefined; + } + return value as InternationalString; +} + +function isChoiceResource(resource: unknown): resource is ChoiceResource { + if (!resource || typeof resource !== 'object') { + return false; + } + const choice = resource as Partial; + return choice.type === 'Choice' && Array.isArray(choice.items); +} + +export function createSceneHelper(vault: CompatVault = compatVault) { + function getScene(sceneOrId: string | SceneNormalized | undefined | null): SceneLike | null { + if (!sceneOrId) return null; + if (typeof sceneOrId === 'string') { + return vault.get(sceneOrId) ?? null; + } + return sceneOrId; + } + + function getPageItems(page: AnnotationPageLike): SceneAnnotation[] { + if (!page.items) { + return []; + } + const parent = getParentRef({ id: page.id, type: page.type || 'AnnotationPage' }); + return asArray(vault.get(page.items as never, { parent })); + } + + function getAllPaintingAnnotations(sceneOrId: string | SceneNormalized | undefined | null): SceneAnnotation[] { + const scene = getScene(sceneOrId); + if (!scene) return []; + + const pages = asArray(vault.get(scene.items as never, { parent: getParentRef(scene) })); + const flat: SceneAnnotation[] = []; + for (const page of pages) { + for (const anno of getPageItems(page)) { + if (anno) flat.push(anno); + } + } + + return flat.filter((anno) => getMotivations(anno).includes('painting')); + } + + function getAllAnnotationPages(sceneOrId: string | SceneNormalized | undefined | null): AnnotationPageLike[] { + const scene = getScene(sceneOrId); + if (!scene) return []; + if (!scene.annotations?.length) { + return []; + } + return asArray(vault.get(scene.annotations as never, { parent: getParentRef(scene) })); + } + + function getAllAnnotations(sceneOrId: string | SceneNormalized | undefined | null): SceneAnnotation[] { + const scene = getScene(sceneOrId); + if (!scene) return []; + + const pages = [ + ...asArray(vault.get(scene.items as never, { parent: getParentRef(scene) })), + ...getAllAnnotationPages(scene), + ]; + const flat: SceneAnnotation[] = []; + for (const page of pages) { + flat.push(...getPageItems(page)); + } + return flat; + } + + function getPaintables(sceneOrId: string | SceneNormalized, enabledChoices: string[] = []): ScenePaintables { + const scene = getScene(sceneOrId); + if (!scene) { + throw new Error('getPaintables() requires a Scene'); + } + + const paintingAnnotations = getAllPaintingAnnotations(scene); + const types: ScenePaintables['types'] = []; + const rawTypes: string[] = []; + const choices: ComplexChoice = { type: 'complex-choice', items: [] }; + const items: ScenePaintables['items'] = []; + + for (const annotation of paintingAnnotations) { + const parent = getParentRef(annotation as { id: string; type?: string }); + const bodies = unwrapBodyList(annotation.body); + + for (const bodyEntry of bodies) { + const hydratedBodyEntry = vault.get(bodyEntry as never, { parent, skipSelfReturn: false }); + const parsed = parseSceneSpecificResource(hydratedBodyEntry ?? bodyEntry); + const maybeChoice = vault.get(parsed.source as never, { parent, skipSelfReturn: false }); + + if (isChoiceResource(maybeChoice)) { + const nestedBodies = asArray( + vault.get(maybeChoice.items as never, { + parent: { id: maybeChoice.id || '', type: 'Choice' }, + }) + ).filter(isSceneResource); + const selected = enabledChoices.length + ? enabledChoices.map((cid) => nestedBodies.find((b) => b?.id === cid)).filter(isDefined) + : [maybeChoice.default ? vault.get(maybeChoice.default as never) : nestedBodies[0]].filter( + isDefined + ); + + if (selected.length === 0 && nestedBodies[0]) { + selected.push(nestedBodies[0]); + } + if (selected.length === 0) { + continue; + } + + choices.items.push({ + type: 'single-choice', + items: nestedBodies.map((b) => ({ + id: b.id || '', + label: toLanguageMap(b.label), + selected: selected.indexOf(b) !== -1 ? true : undefined, + })), + label: toLanguageMap(maybeChoice.label), + }); + + bodies.push(...selected); + continue; + } + + const sources = asArray(parsed.source); + for (const source of sources) { + const resolved = vault.get(source as never, { parent, skipSelfReturn: false }); + if (!resolved) { + continue; + } + const { type, rawType } = normalizeScenePaintableType(resolved.type); + const hydratedTarget = annotation.target + ? vault.get(annotation.target as never, { + parent, + skipSelfReturn: false, + preserveSpecificResources: true, + }) + : null; + + if (!types.includes(type)) { + types.push(type); + } + if (!rawTypes.includes(rawType)) { + rawTypes.push(rawType); + } + + items.push({ + type, + rawType, + annotationId: annotation.id, + annotation, + resource: resolved, + target: hydratedTarget + ? expandTarget(hydratedTarget as Parameters[0], { defaultType: 'Scene' }) + : null, + bodySelector: parsed.selector, + bodyTransform: parsed.transform, + bodyAction: parsed.action, + }); + } + } + } + + return { + scene, + types, + rawTypes, + availableTypes: KNOWN_SCENE_PAINTABLE_TYPES, + items, + choice: choices.items.length < 2 ? choices.items[0] || null : choices, + allChoices: choices.items.length ? choices : null, + }; + } + + return { + getAllPaintingAnnotations, + getAllAnnotations, + getPaintables, + }; +} diff --git a/src/scenes/parse-specific-resource.ts b/src/scenes/parse-specific-resource.ts new file mode 100644 index 0000000..5fb320c --- /dev/null +++ b/src/scenes/parse-specific-resource.ts @@ -0,0 +1,44 @@ +import type { + ContentResource as ContentResourceV4, + Selector, + SpecificResource, + Transform, +} from '@iiif/parser/presentation-4/types'; + +export type ParsedSpecificResource = { + source: unknown; + selector: Selector | Selector[] | null; + transform: Transform[]; + action: unknown[]; + raw: unknown; +}; + +function isSpecificResourceCandidate( + resource: unknown +): resource is Partial & { type: 'SpecificResource' } { + return !!resource && typeof resource === 'object' && (resource as { type?: string }).type === 'SpecificResource'; +} + +export function parseSceneSpecificResource(resource: unknown): ParsedSpecificResource { + if (isSpecificResourceCandidate(resource)) { + const selector = resource.selector ?? null; + const transform = resource.transform; + const action = resource.action; + return { + source: resource.source, + selector, + transform: Array.isArray(transform) ? transform : transform ? [transform] : [], + action: Array.isArray(action) ? action : action ? [action] : [], + raw: resource, + }; + } + + // Not a SpecificResource; treat it as a direct source reference. + return { + source: resource as ContentResourceV4, + selector: null, + transform: [], + action: [], + raw: resource, + }; +} diff --git a/src/scenes/types.ts b/src/scenes/types.ts new file mode 100644 index 0000000..1d70bb6 --- /dev/null +++ b/src/scenes/types.ts @@ -0,0 +1,81 @@ +import type { InternationalString } from '@iiif/parser/presentation-3/types'; +import type { Selector, Transform } from '@iiif/parser/presentation-4/types'; +import type { SceneNormalized } from '@iiif/parser/presentation-4-normalized/types'; +import type { SupportedTarget } from '../annotation-targets/target-types'; +import type { ChoiceDescription, ComplexChoice } from '../painting-annotations/types'; + +export const KNOWN_SCENE_PAINTABLE_TYPES = [ + 'model', + 'canvas', + 'ambientlight', + 'pointlight', + 'directionallight', + 'spotlight', + 'perspectivecamera', + 'orthographiccamera', +] as const; + +export type KnownScenePaintableType = (typeof KNOWN_SCENE_PAINTABLE_TYPES)[number]; +export type ScenePaintableType = KnownScenePaintableType | 'unknown'; + +const knownScenePaintableTypeSet: ReadonlySet = new Set(KNOWN_SCENE_PAINTABLE_TYPES); + +export function isKnownScenePaintableType(type: string): type is KnownScenePaintableType { + return knownScenePaintableTypeSet.has(type); +} + +export function normalizeScenePaintableType(type: unknown): { type: ScenePaintableType; rawType: string } { + if (typeof type !== 'string' || type.length === 0) { + return { type: 'unknown', rawType: 'Unknown' }; + } + + const normalized = type.toLowerCase(); + if (isKnownScenePaintableType(normalized)) { + return { type: normalized, rawType: type }; + } + + return { type: 'unknown', rawType: type }; +} + +export type SceneAnnotation = { + id: string; + type: string; + motivation?: readonly string[] | string[]; + body?: unknown; + target?: unknown; + label?: InternationalString | null; + bodyValue?: string; + [key: string]: unknown; +}; +export type SceneResource = { + id?: string; + type?: string; + label?: unknown; + color?: string; + intensity?: { value?: number } | number; + angle?: number; + fieldOfView?: number; + [key: string]: unknown; +}; + +export type ScenePaintable = { + type: ScenePaintableType; + rawType: string; + annotationId: string; + annotation: SceneAnnotation; + resource: SceneResource; + target: SupportedTarget | null; + bodySelector: Selector | Selector[] | null; + bodyTransform: Transform[]; + bodyAction: unknown[]; +}; + +export type ScenePaintables = { + scene: SceneNormalized; + types: ScenePaintableType[]; + rawTypes: string[]; + availableTypes: readonly KnownScenePaintableType[]; + items: ScenePaintable[]; + choice: ChoiceDescription | null; + allChoices: ComplexChoice | null; +}; diff --git a/src/search1.ts b/src/search1.ts index b535ab5..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, -} from '@iiif/presentation-3'; -import { ManifestNormalized } from '@iiif/presentation-3-normalized'; + SearchServiceQueryParams, + SearchServiceSearchResponse, +} from '@iiif/parser/presentation-3/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 a9daf20..b3677ec 100644 --- a/src/sequences.ts +++ b/src/sequences.ts @@ -1,17 +1,28 @@ -import { Reference } from '@iiif/presentation-3'; -import { CanvasNormalized, ManifestNormalized, RangeNormalized } from '@iiif/presentation-3-normalized'; +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 64b8039..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/presentation-3'; +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 09914cb..58f528d 100644 --- a/src/styles.ts +++ b/src/styles.ts @@ -1,7 +1,9 @@ -import { Reference } from '@iiif/presentation-3'; -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