From 142be20f6d8d03d5761cbb11037c9f7772bd82ec Mon Sep 17 00:00:00 2001 From: Rob Sanderson Date: Wed, 20 May 2026 17:09:21 -0400 Subject: [PATCH 1/9] 4.0 context --- source/presentation/4/context.json | 512 ++++++++++++++++++++++++++++- 1 file changed, 511 insertions(+), 1 deletion(-) diff --git a/source/presentation/4/context.json b/source/presentation/4/context.json index 9e26dfeeb..a82bbb26f 100644 --- a/source/presentation/4/context.json +++ b/source/presentation/4/context.json @@ -1 +1,511 @@ -{} \ No newline at end of file +{ + "@context": { + "@version": 1.1, + + "iiif_prezi": "http://iiif.io/api/presentation/3#", + "iiif_image": "http://iiif.io/api/image/3#", + "exif": "http://www.w3.org/2003/12/exif/ns#", + "oa": "http://www.w3.org/ns/oa#", + "dc": "http://purl.org/dc/elements/1.1/", + "dcterms": "http://purl.org/dc/terms/", + "dctypes": "http://purl.org/dc/dcmitype/", + "foaf": "http://xmlns.com/foaf/0.1/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "as": "http://www.w3.org/ns/activitystreams#", + "ebu": "http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#", + "schema": "https://schema.org/", + "crm": "http://www.cidoc-crm.org/cidoc-crm/", + + "id": "@id", + "type": "@type", + + "Collection": { + "@id": "iiif_prezi:Collection", + "@context": { + "partOf": { + "@id": "dcterms:isPartOf", + "@type": "@id", + "@container": "@set" + } + } + }, + "CollectionPage": { + "@id": "iiif_prezi:CollectionPage", + "@context": { + "partOf": { + "@id": "dcterms:isPartOf", + "@type": "@id", + "@container": "@set" + } + } + }, + + "Manifest": { + "@id": "iiif_prezi:Manifest", + "@context": { + "partOf": { + "@id": "dcterms:isPartOf", + "@type": "@id", + "@container": "@set" + } + } + }, + + "Canvas": { + "@id": "iiif_prezi:Canvas", + "@context": { + "partOf": { + "@id": "dcterms:isPartOf", + "@type": "@id", + "@container": "@set" + } + } + }, + "Timeline": { + "@id": "iiif_prezi:Timeline", + "@context": { + "partOf": { + "@id": "dcterms:isPartOf", + "@type": "@id", + "@container": "@set" + } + } + }, + "Scene": { + "@id": "iiif_prezi:Scene", + "@context": { + "partOf": { + "@id": "dcterms:isPartOf", + "@type": "@id", + "@container": "@set" + } + } + }, + + "Range": { + "@id": "iiif_prezi:Range", + "@context": { + "partOf": { + "@id": "dcterms:isPartOf", + "@type": "@id", + "@container": "@set" + } + } + }, + + "AnnotationCollection": { + "@id": "as:OrderedCollection", + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + "http://iiif.io/api/presentation/4/overrides.json", + { + "partOf": { + "@id": "dcterms:isPartOf", + "@type": "@id", + "@container": "@set" + } + } + ] + }, + "AnnotationPage": { + "@id": "as:OrderedCollectionPage", + "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + }, + + "Annotation": { + "@id": "oa:Annotation", + "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + }, + + "SpecificResource": { + "@id": "oa:SpecificResource", + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + "http://iiif.io/api/presentation/4/overrides.json", + { + "transform": { + "@id": "iiif_prezi:transform", + "@type": "@id", + "@container": "@list" + } + } + ] + }, + + "Composite": { + "@id": "oa:Composite", + "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + }, + "List": { + "@id": "oa:List", + "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + }, + "Independents": { + "@id": "oa:Independents", + "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + }, + + "PointSelector": "iiif_prezi:PointSelector", + "WktSelector": "iiif_prezi:WktSelector", + "AudioContentSelector": "iiif_prezi:AudioContentSelector", + "VisualContentSelector": "iiif_prezi:VisualContentSelector", + "AnimationSelector": "iiif_prezi:AnimationSelector", + + "ImageApiSelector": { + "@id": "iiif_image:ImageApiSelector", + "@context": { + "region": "iiif_image:region", + "size": "iiif_image:size", + "rotation": "iiif_image:rotation", + "quality": "iiif_image:quality", + "format": "iiif_image:format", + "version": "iiif_image:version" + } + }, + + "OrthographicCamera": { + "@id": "iiif_prezi:OrthographicCamera" + }, + "PerspectiveCamera": { + "@id": "iiif_prezi:PerspectiveCamera" + }, + + "AmbientLight": { + "@id": "iiif_prezi:AmbientLight" + }, + "DirectionalLight": { + "@id": "iiif_prezi:DirectionalLight" + }, + "ImageBasedLight": { + "@id": "iiif_prezi:ImageBasedLight" + }, + "PointLight": { + "@id": "iiif_prezi:PointLight" + }, + "SpotLight": { + "@id": "iiif_prezi:SpotLight" + }, + + "AmbientAudio": { + "@id": "iiif_prezi:AmbientAudio" + }, + "PointAudio": { + "@id": "iiif_prezi:PointAudio" + }, + "SpotAudio": { + "@id": "iiif_prezi:SpotAudio" + }, + + "RotateTransform": { + "@id": "iiif_prezi:RotateTransform" + }, + "ScaleTransform": { + "@id": "iiif_prezi:RotateTransform" + }, + "TranslateTransform": { + "@id": "iiif_prezi:RotateTransform" + }, + + "Dataset": "dctypes:Dataset", + "Image": "dctypes:StillImage", + "Video": "dctypes:MovingImage", + "Audio": "dctypes:Sound", + "Sound": "dctypes:Sound", + "Text": "dctypes:Text", + "Service": "schema:WebAPI", + "Agent": "dcterms:Agent", + "Model": "schema:3DModel", + + "Quantity": "crm:E54_Dimension", + + "label": { + "@id": "rdfs:label", + "@container": ["@language", "@set"], + "@context": { + "none": "@none" + } + }, + "value": { + "@id": "rdf:value", + "@container": ["@language", "@set"], + "@context": { + "none": "@none" + } + }, + "metadata": { + "@type": "@id", + "@id": "iiif_prezi:metadataEntries", + "@container": "@list" + }, + "summary": { + "@id": "as:summary", + "@container": ["@language", "@set"], + "@context": { + "none": "@none" + } + }, + "requiredStatement": { + "@id": "iiif_prezi:requiredStatement", + "@type": "@id" + }, + "rights": { + "@type": "@id", + "@id": "dcterms:rights" + }, + "provider": { + "@type": "@id", + "@id": "schema:provider", + "@container": "@set" + }, + "logo": { + "@type": "@id", + "@id": "foaf:logo", + "@container": "@set" + }, + "thumbnail": { + "@type": "@id", + "@id": "iiif_prezi:thumbnail", + "@container": "@set" + }, + "navDate": { + "@id": "iiif_prezi:navigationDate" + }, + + "backgroundColor": { + "@id": "iiif_prezi:backgroundColor" + }, + + "accompanyingContainer": { + "@type": "@id", + "@id": "iiif_prezi:accompanyingContainer" + }, + "placeholderContainer": { + "@type": "@id", + "@id": "iiif_prezi:placeholderContainer" + }, + + "format": { + "@id": "dc:format" + }, + "language": { + "@id": "dc:language", + "@container": "@set" + }, + "profile": { + "@type": "@vocab", + "@id": "dcterms:conformsTo" + }, + "height": { + "@id": "exif:height", + "@type": "xsd:integer" + }, + "width": { + "@id": "exif:width", + "@type": "xsd:integer" + }, + "angle": { + "@id": "iiif_prezi:angle", + "@type": "xsd:double" + }, + + "duration": { + "@id": "ebu:duration" + }, + "viewingDirection": { + "@id": "iiif_prezi:viewingDirection", + "@type": "@vocab", + "@container": "@set", + "@context": { + "left-to-right": "iiif_prezi:leftToRightDirection", + "right-to-left": "iiif_prezi:rightToLeftDirection", + "top-to-bottom": "iiif_prezi:topToBottomDirection", + "bottom-to-top": "iiif_prezi:bottomToTopDirection" + } + }, + + "action": { + "@id": "iiif_prezi:action", + "@type": "@vocab", + "@container": "@set", + "@context": { + "enable": "iiif_prezi:enable", + "disable": "iiif_prezi:disable", + "show": "iiif_prezi:show", + "hide": "iiif_prezi:hide", + "reset": "iiif_prezi:reset", + "start": "iiif_prezi:start", + "stop": "iiif_prezi:stop", + "select": "iiif_prezi:select" + } + }, + + "behavior": { + "@id": "iiif_prezi:behavior", + "@type": "@vocab", + "@container": "@set", + "@context": { + "auto-advance": "iiif_prezi:autoAdvanceHint", + "no-auto-advance": "iiif_prezi:noAutoAdvanceHint", + "repeat": "iiif_prezi:repeatHint", + "no-repeat": "iiif_prezi:noRepeatHint", + "unordered": "iiif_prezi:unordered", + "individuals": "iiif_prezi:individualsHint", + "continuous": "iiif_prezi:continuousHint", + "paged": "iiif_prezi:pagedHint", + "facing-pages": "iiif_prezi:facingPagesHint", + "non-paged": "iiif_prezi:nonPagedHint", + "multi-part": "iiif_prezi:multiPartHint", + "together": "iiif_prezi:togetherHint", + "sequence": "iiif_prezi:sequenceHint", + "thumbnail-nav": "iiif_prezi:thumbnailNavHint", + "no-nav": "iiif_prezi:noNavHint", + "hidden": "iiif_prezi:noneHint" + } + }, + + "timeMode": { + "@id": "iiif_prezi:timeMode", + "@type": "@vocab", + "@context": { + "trim": "iiif_prezi:trimMode", + "scale": "iiif_prezi:scaleMode", + "loop": "iiif_prezi:loopMode" + } + }, + + "homepage": { + "@type": "@id", + "@id": "foaf:homepage", + "@container": "@set" + }, + "rendering": { + "@id": "dcterms:hasFormat", + "@type": "@id", + "@container": "@set" + }, + "service": { + "@type": "@id", + "@id": "schema:potentialAction", + "@container": "@set", + "@context": { + "ImageService1": { + "@id": "http://iiif.io/api/image/1#ImageService", + "@context": [ + "http://iiif.io/api/image/1/context.json", + { + "id": null, + "type": null + } + ] + }, + "ImageService2": { + "@id": "http://iiif.io/api/image/2#ImageService", + "@context": [ + "http://iiif.io/api/image/2/context.json", + { + "id": null, + "type": null + } + ] + }, + "ImageService3": { + "@id": "http://iiif.io/api/image/3#ImageService", + "@context": "http://iiif.io/api/image/3/context.json" + }, + "SearchService1": { + "@id": "http://iiif.io/api/search/1#SearchService", + "@context": [ + "http://iiif.io/api/search/1/context.json", + { + "id": null, + "type": null + } + ] + }, + "AutoCompleteService1": { + "@id": "http://iiif.io/api/search/1#AutoCompleteService", + "@context": [ + "http://iiif.io/api/search/1/context.json", + { + "id": null, + "type": null + } + ] + }, + "AuthCookieService1": { + "@id": "http://iiif.io/api/auth/1#CookieService", + "@context": [ + "http://iiif.io/api/auth/1/context.json", + { + "id": null, + "type": null + } + ] + }, + "AuthTokenService1": { + "@id": "http://iiif.io/api/auth/1#TokenService", + "@context": [ + "http://iiif.io/api/auth/1/context.json", + { + "id": null, + "type": null + } + ] + }, + "AuthLogoutService1": { + "@id": "http://iiif.io/api/auth/1#LogoutService", + "@context": [ + "http://iiif.io/api/auth/1/context.json", + { + "id": null, + "type": null + } + ] + } + } + }, + + "seeAlso": { + "@type": "@id", + "@id": "rdfs:seeAlso", + "@container": "@set" + }, + + "selector": { + "@type": "@id", + "@id": "oa:selector", + "@container": "@set", + "@context": ["https://iiif.io/api/registry/selectors/context.json", "http://www.w3.org/ns/anno.jsonld"] + }, + + "start": { + "@type": "@id", + "@id": "iiif_prezi:start" + }, + "supplementary": { + "@type": "@id", + "@id": "iiif_prezi:supplementary" + }, + + "items": { + "@type": "@id", + "@id": "as:items", + "@container": "@list" + }, + "structures": { + "@type": "@id", + "@id": "iiif_prezi:structures", + "@container": "@list" + }, + "annotations": { + "@type": "@id", + "@id": "iiif_prezi:annotations", + "@container": "@list" + }, + + "painting": "iiif_prezi:painting", + "supplementing": "iiif_prezi:supplementing" + } +} From edf7d38b424b52c1f44d073d71802619e64f56af Mon Sep 17 00:00:00 2001 From: Rob Sanderson Date: Wed, 20 May 2026 17:12:12 -0400 Subject: [PATCH 2/9] add overrides --- source/presentation/4/overrides.json | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 source/presentation/4/overrides.json diff --git a/source/presentation/4/overrides.json b/source/presentation/4/overrides.json new file mode 100644 index 000000000..2e814befe --- /dev/null +++ b/source/presentation/4/overrides.json @@ -0,0 +1,32 @@ +{ + "@context": { + "@version": 1.1, + "iiif_prezi": "http://iiif.io/api/presentation/3#", + "iiif_image": "http://iiif.io/api/image/3#", + "exif": "http://www.w3.org/2003/12/exif/ns#", + "oa": "http://www.w3.org/ns/oa#", + "dc": "http://purl.org/dc/elements/1.1/", + "dcterms": "http://purl.org/dc/terms/", + "dctypes": "http://purl.org/dc/dcmitype/", + "foaf": "http://xmlns.com/foaf/0.1/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "as": "http://www.w3.org/ns/activitystreams#", + "ebu": "http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#", + "schema": "https://schema.org/", + + "label": { + "@id": "rdfs:label", + "@container": ["@language", "@set"], + "@context": { + "none": "@none" + } + }, + "homepage": { + "@type": "@id", + "@id": "foaf:homepage", + "@container": "@set" + } + } +} From 235644e433243aa6f584ca0fbcff9cfb185014f0 Mon Sep 17 00:00:00 2001 From: Rob Sanderson Date: Tue, 2 Jun 2026 16:16:51 +0200 Subject: [PATCH 3/9] updates --- source/presentation/4/context.json | 264 ++++++++++++++++++----------- 1 file changed, 163 insertions(+), 101 deletions(-) diff --git a/source/presentation/4/context.json b/source/presentation/4/context.json index a82bbb26f..04d628b73 100644 --- a/source/presentation/4/context.json +++ b/source/presentation/4/context.json @@ -17,6 +17,7 @@ "ebu": "http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#", "schema": "https://schema.org/", "crm": "http://www.cidoc-crm.org/cidoc-crm/", + "geojson": "https://purl.org/geojson/vocab#", "id": "@id", "type": "@type", @@ -41,7 +42,6 @@ } } }, - "Manifest": { "@id": "iiif_prezi:Manifest", "@context": { @@ -52,7 +52,6 @@ } } }, - "Canvas": { "@id": "iiif_prezi:Canvas", "@context": { @@ -83,7 +82,6 @@ } } }, - "Range": { "@id": "iiif_prezi:Range", "@context": { @@ -94,7 +92,6 @@ } } }, - "AnnotationCollection": { "@id": "as:OrderedCollection", "@context": [ @@ -111,14 +108,18 @@ }, "AnnotationPage": { "@id": "as:OrderedCollectionPage", - "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + "http://iiif.io/api/presentation/4/overrides.json" + ] }, - "Annotation": { "@id": "oa:Annotation", - "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + "http://iiif.io/api/presentation/4/overrides.json" + ] }, - "SpecificResource": { "@id": "oa:SpecificResource", "@context": [ @@ -133,26 +134,32 @@ } ] }, - "Composite": { "@id": "oa:Composite", - "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + "http://iiif.io/api/presentation/4/overrides.json" + ] }, "List": { "@id": "oa:List", - "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + "http://iiif.io/api/presentation/4/overrides.json" + ] }, "Independents": { "@id": "oa:Independents", - "@context": ["http://www.w3.org/ns/anno.jsonld", "http://iiif.io/api/presentation/4/overrides.json"] + "@context": [ + "http://www.w3.org/ns/anno.jsonld", + "http://iiif.io/api/presentation/4/overrides.json" + ] }, - "PointSelector": "iiif_prezi:PointSelector", "WktSelector": "iiif_prezi:WktSelector", "AudioContentSelector": "iiif_prezi:AudioContentSelector", "VisualContentSelector": "iiif_prezi:VisualContentSelector", "AnimationSelector": "iiif_prezi:AnimationSelector", - "ImageApiSelector": { "@id": "iiif_image:ImageApiSelector", "@context": { @@ -164,14 +171,23 @@ "version": "iiif_image:version" } }, - + "FragmentSelector": { + "@id": "oa:FragmentSelector", + "@context": [ + { + "conformsTo": { + "@type": "@vocab", + "@id": "dcterms:conformsTo" + } + } + ] + }, "OrthographicCamera": { "@id": "iiif_prezi:OrthographicCamera" }, "PerspectiveCamera": { "@id": "iiif_prezi:PerspectiveCamera" }, - "AmbientLight": { "@id": "iiif_prezi:AmbientLight" }, @@ -187,7 +203,6 @@ "SpotLight": { "@id": "iiif_prezi:SpotLight" }, - "AmbientAudio": { "@id": "iiif_prezi:AmbientAudio" }, @@ -197,7 +212,6 @@ "SpotAudio": { "@id": "iiif_prezi:SpotAudio" }, - "RotateTransform": { "@id": "iiif_prezi:RotateTransform" }, @@ -207,7 +221,6 @@ "TranslateTransform": { "@id": "iiif_prezi:RotateTransform" }, - "Dataset": "dctypes:Dataset", "Image": "dctypes:StillImage", "Video": "dctypes:MovingImage", @@ -217,8 +230,124 @@ "Service": "schema:WebAPI", "Agent": "dcterms:Agent", "Model": "schema:3DModel", - "Quantity": "crm:E54_Dimension", + "FeatureCollection": { + "@id": "geojson:FeatureCollection", + "@context": [ + "https://geojson.org/geojson-ld/geojson-context.jsonld", + { + "iiif_georef": "http://iiif.io/api/extension/georef/vocab/georef-terms/#", + "transformation": { + "@id": "iiif_georef:transformation" + } + } + ] + }, + + "accompanyingContainer": { + "@type": "@id", + "@id": "iiif_prezi:accompanyingContainer" + }, + + "action": { + "@id": "iiif_prezi:action", + "@type": "@vocab", + "@container": "@set", + "@context": { + "enable": "iiif_prezi:enable", + "disable": "iiif_prezi:disable", + "show": "iiif_prezi:show", + "hide": "iiif_prezi:hide", + "reset": "iiif_prezi:reset", + "start": "iiif_prezi:start", + "stop": "iiif_prezi:stop", + "select": "iiif_prezi:select" + } + }, + + "angle": { + "@id": "iiif_prezi:angle", + "@type": "xsd:double" + }, + + "annotations": { + "@type": "@id", + "@id": "iiif_prezi:annotations", + "@container": "@list" + }, + + "backgroundColor": { + "@id": "iiif_prezi:backgroundColor" + }, + + "behavior": { + "@id": "iiif_prezi:behavior", + "@type": "@vocab", + "@container": "@set", + "@context": { + "auto-advance": "iiif_prezi:autoAdvanceHint", + "no-auto-advance": "iiif_prezi:noAutoAdvanceHint", + "repeat": "iiif_prezi:repeatHint", + "no-repeat": "iiif_prezi:noRepeatHint", + "unordered": "iiif_prezi:unordered", + "individuals": "iiif_prezi:individualsHint", + "continuous": "iiif_prezi:continuousHint", + "paged": "iiif_prezi:pagedHint", + "facing-pages": "iiif_prezi:facingPagesHint", + "non-paged": "iiif_prezi:nonPagedHint", + "multi-part": "iiif_prezi:multiPartHint", + "together": "iiif_prezi:togetherHint", + "sequence": "iiif_prezi:sequenceHint", + "thumbnail-nav": "iiif_prezi:thumbnailNavHint", + "no-nav": "iiif_prezi:noNavHint", + "hidden": "iiif_prezi:noneHint" + } + }, + + "body": { + "@id": "oa:hasBody", + "@type": "@id" + }, + + "canonical": { + "@type": "@id", + "@id": "oa:canonical" + }, + + "color": "iiif_prezi:color", + + "duration": { + "@id": "ebu:duration" + }, + + "environmentMap": { + "@id": "iiif_prezi:environmentMap", + "@type": "@id" + }, + + "exclude": { + "@id": "iiif_prezi:exclude", + "@type": "@vocab", + "@context": { + "audio": "iiif_prezi:audioExclusion", + "animations": "iiif_prezi:animationsExclusion", + "cameras": "iiif_prezi:camerasExclusion", + "lights": "iiif_prezi:lightsExclusion" + } + }, + + "far": "iiif_prezi:far", + "fieldOfView": "iiif_prezi:fieldOfView", + "fileSize": "iiif_prezi:fileSize", + "first": { "@id": "as:first", "@type": "@id" }, + "format": "dc:format", + "height": "exif:height", + + "homepage": { + "@type": "@id", + "@id": "foaf:homepage", + "@container": "@set" + }, "label": { "@id": "rdfs:label", @@ -227,6 +356,16 @@ "none": "@none" } }, + + "language": { + "@id": "dc:language", + "@container": "@set" + }, + "profile": { + "@type": "@vocab", + "@id": "dcterms:conformsTo" + }, + "value": { "@id": "rdf:value", "@container": ["@language", "@set"], @@ -273,46 +412,16 @@ "@id": "iiif_prezi:navigationDate" }, - "backgroundColor": { - "@id": "iiif_prezi:backgroundColor" - }, - - "accompanyingContainer": { - "@type": "@id", - "@id": "iiif_prezi:accompanyingContainer" - }, "placeholderContainer": { "@type": "@id", "@id": "iiif_prezi:placeholderContainer" }, - "format": { - "@id": "dc:format" - }, - "language": { - "@id": "dc:language", - "@container": "@set" - }, - "profile": { - "@type": "@vocab", - "@id": "dcterms:conformsTo" - }, - "height": { - "@id": "exif:height", - "@type": "xsd:integer" - }, "width": { "@id": "exif:width", "@type": "xsd:integer" }, - "angle": { - "@id": "iiif_prezi:angle", - "@type": "xsd:double" - }, - "duration": { - "@id": "ebu:duration" - }, "viewingDirection": { "@id": "iiif_prezi:viewingDirection", "@type": "@vocab", @@ -325,46 +434,6 @@ } }, - "action": { - "@id": "iiif_prezi:action", - "@type": "@vocab", - "@container": "@set", - "@context": { - "enable": "iiif_prezi:enable", - "disable": "iiif_prezi:disable", - "show": "iiif_prezi:show", - "hide": "iiif_prezi:hide", - "reset": "iiif_prezi:reset", - "start": "iiif_prezi:start", - "stop": "iiif_prezi:stop", - "select": "iiif_prezi:select" - } - }, - - "behavior": { - "@id": "iiif_prezi:behavior", - "@type": "@vocab", - "@container": "@set", - "@context": { - "auto-advance": "iiif_prezi:autoAdvanceHint", - "no-auto-advance": "iiif_prezi:noAutoAdvanceHint", - "repeat": "iiif_prezi:repeatHint", - "no-repeat": "iiif_prezi:noRepeatHint", - "unordered": "iiif_prezi:unordered", - "individuals": "iiif_prezi:individualsHint", - "continuous": "iiif_prezi:continuousHint", - "paged": "iiif_prezi:pagedHint", - "facing-pages": "iiif_prezi:facingPagesHint", - "non-paged": "iiif_prezi:nonPagedHint", - "multi-part": "iiif_prezi:multiPartHint", - "together": "iiif_prezi:togetherHint", - "sequence": "iiif_prezi:sequenceHint", - "thumbnail-nav": "iiif_prezi:thumbnailNavHint", - "no-nav": "iiif_prezi:noNavHint", - "hidden": "iiif_prezi:noneHint" - } - }, - "timeMode": { "@id": "iiif_prezi:timeMode", "@type": "@vocab", @@ -375,11 +444,6 @@ } }, - "homepage": { - "@type": "@id", - "@id": "foaf:homepage", - "@container": "@set" - }, "rendering": { "@id": "dcterms:hasFormat", "@type": "@id", @@ -477,7 +541,10 @@ "@type": "@id", "@id": "oa:selector", "@container": "@set", - "@context": ["https://iiif.io/api/registry/selectors/context.json", "http://www.w3.org/ns/anno.jsonld"] + "@context": [ + "https://iiif.io/api/registry/selectors/context.json", + "http://www.w3.org/ns/anno.jsonld" + ] }, "start": { @@ -499,11 +566,6 @@ "@id": "iiif_prezi:structures", "@container": "@list" }, - "annotations": { - "@type": "@id", - "@id": "iiif_prezi:annotations", - "@container": "@list" - }, "painting": "iiif_prezi:painting", "supplementing": "iiif_prezi:supplementing" From b7bad364ea3059ed37d86d6b2b1d8b0dc8bc90bb Mon Sep 17 00:00:00 2001 From: Rob Sanderson Date: Sat, 6 Jun 2026 14:28:04 +0200 Subject: [PATCH 4/9] first draft --- source/presentation/4/context.json | 320 +++++++++++++++++++++++------ 1 file changed, 252 insertions(+), 68 deletions(-) diff --git a/source/presentation/4/context.json b/source/presentation/4/context.json index 04d628b73..711f9f475 100644 --- a/source/presentation/4/context.json +++ b/source/presentation/4/context.json @@ -349,6 +349,31 @@ "@container": "@set" }, + "instant": "iiif_prezi:instant", + "intensity": { + "@id": "iiif_prezi:intensity", + "@type": "@id" + }, + + "interactionMode": { + "@id": "iiif_prezi:interactionMode", + "@container": "@set", + "@type": "@vocab", + "@context": { + "locked": "iiif_prezi:lockedMode", + "orbit": "iiif_prezi:orbitMode", + "hemisphere-orbit": "iiif_prezi:hemisphereOrbitMode", + "free": "iiif_prezi:freeMode", + "free-direction": "iiif_prezi:freeDirectionMode" + } + }, + + "items": { + "@type": "@id", + "@id": "as:items", + "@container": "@list" + }, + "label": { "@id": "rdfs:label", "@container": ["@language", "@set"], @@ -361,94 +386,167 @@ "@id": "dc:language", "@container": "@set" }, - "profile": { - "@type": "@vocab", - "@id": "dcterms:conformsTo" + + "last": { + "@id": "as:last", + "@type": "@id" }, - "value": { - "@id": "rdf:value", - "@container": ["@language", "@set"], - "@context": { - "none": "@none" - } + "logo": { + "@type": "@id", + "@id": "foaf:logo", + "@container": "@set" + }, + + "lookAt": { + "@id": "iiif_prezi:lookAt", + "@type": "@id" }, + "metadata": { "@type": "@id", "@id": "iiif_prezi:metadataEntries", "@container": "@list" }, - "summary": { - "@id": "as:summary", - "@container": ["@language", "@set"], + + "motivation": { + "@id": "oa:motivatedBy", + "@type": "@vocab", + "@container": "@set", "@context": { - "none": "@none" + "bookmarking": "oa:bookmarking", + "classifying": "oa:classifying", + "commenting": "oa:commenting", + "describing": "oa:describing", + "editing": "oa:editing", + "highlighting": "oa:highlighting", + "identifying": "oa:identifying", + "linking": "oa:linking", + "moderating": "oa:moderating", + "questioning": "oa:questioning", + "replying": "oa:replying", + "reviewing": "oa:reviewing", + "assessing": "oa:assessing", + "tagging": "oa:tagging", + "painting": "iiif_prezi:painting", + "supplementing": "iiif_prezi:supplementing" } }, - "requiredStatement": { - "@id": "iiif_prezi:requiredStatement", - "@type": "@id" - }, - "rights": { - "@type": "@id", - "@id": "dcterms:rights" + + "navDate": { + "@id": "iiif_prezi:navigationDate" }, - "provider": { + + "navPlace": { + "@id": "iiif_prezi:navigationPlace", "@type": "@id", - "@id": "schema:provider", - "@container": "@set" + "@context": ["https://geojson.org/geojson-ld/geojson-context.jsonld"] }, - "logo": { - "@type": "@id", - "@id": "foaf:logo", - "@container": "@set" + + "near": "iiif_prezi:near", + + "next": { + "@id": "oa:next", + "@type": "@id" }, - "thumbnail": { + + "partOf": { + "@id": "as:partOf", "@type": "@id", - "@id": "iiif_prezi:thumbnail", "@container": "@set" }, - "navDate": { - "@id": "iiif_prezi:navigationDate" - }, "placeholderContainer": { "@type": "@id", "@id": "iiif_prezi:placeholderContainer" }, - "width": { - "@id": "exif:width", - "@type": "xsd:integer" + "position": { + "@id": "iiif_prezi:position", + "@type": "@id" }, - "viewingDirection": { - "@id": "iiif_prezi:viewingDirection", + "prev": { + "@id": "as:prev", + "@type": "@id" + }, + + "profile": { "@type": "@vocab", - "@container": "@set", - "@context": { - "left-to-right": "iiif_prezi:leftToRightDirection", - "right-to-left": "iiif_prezi:rightToLeftDirection", - "top-to-bottom": "iiif_prezi:topToBottomDirection", - "bottom-to-top": "iiif_prezi:bottomToTopDirection" - } + "@id": "dcterms:conformsTo" }, - "timeMode": { - "@id": "iiif_prezi:timeMode", + "provider": { + "@type": "@id", + "@id": "schema:provider", + "@container": "@set" + }, + + "provides": { + "@id": "iiif_prezi:provides", "@type": "@vocab", + "@container": "@set", "@context": { - "trim": "iiif_prezi:trimMode", - "scale": "iiif_prezi:scaleMode", - "loop": "iiif_prezi:loopMode" + "closedCaptions": "closedCaptions", + "alternativeText": "", + "longDescription": "", + "highContrastAudio": "", + "highContrastDisplay": "", + "transcript": "", + "translation": "" } }, + "quality": "iiif_prezi:quality", + "quantityValue": "crm:P90_has_value", + + "refinedBy": { + "@id": "oa:refinedBy", + "@type": "@id" + }, + + "region": "iiif_prezi:region", + "rendering": { "@id": "dcterms:hasFormat", "@type": "@id", "@container": "@set" }, + + "requiredStatement": { + "@id": "iiif_prezi:requiredStatement", + "@type": "@id" + }, + + "rights": { + "@type": "@id", + "@id": "dcterms:rights" + }, + + "rotation": "iiif_prezi:rotation", + + "scope": { + "@id": "oa:hasScope", + "@type": "@id", + "@container": "@set" + }, + + "seeAlso": { + "@type": "@id", + "@id": "rdfs:seeAlso", + "@container": "@set" + }, + + "selector": { + "@type": "@id", + "@id": "oa:selector", + "@container": "@set", + "@context": [ + "https://iiif.io/api/registry/selectors/context.json", + "http://www.w3.org/ns/anno.jsonld" + ] + }, + "service": { "@type": "@id", "@id": "schema:potentialAction", @@ -531,43 +629,129 @@ } }, - "seeAlso": { + "services": { + "@id": "iiif_prezi:services", "@type": "@id", - "@id": "rdfs:seeAlso", "@container": "@set" }, - "selector": { - "@type": "@id", - "@id": "oa:selector", - "@container": "@set", - "@context": [ - "https://iiif.io/api/registry/selectors/context.json", - "http://www.w3.org/ns/anno.jsonld" - ] + "size": "iiif_image:size", + + "source": { + "@id": "oa:hasSource", + "@type": "@id" }, + "spatialScale": "iiif_prezi:spatialScale", + "start": { "@type": "@id", "@id": "iiif_prezi:start" }, + + "structures": { + "@type": "@id", + "@id": "iiif_prezi:structures", + "@container": "@list" + }, + + "styleClass": "oa:styleClass", + "stylesheet": { + "@id": "oa:styledBy", + "@type": "@id" + }, + + "summary": { + "@id": "as:summary", + "@container": ["@language", "@set"], + "@context": { + "none": "@none" + } + }, + "supplementary": { "@type": "@id", "@id": "iiif_prezi:supplementary" }, - "items": { - "@type": "@id", - "@id": "as:items", - "@container": "@list" + "target": { + "@id": "oa:hasTarget", + "@type": "@id" }, - "structures": { + + "temporalScale": "iiif_prezi:temporalScale", + + "thumbnail": { "@type": "@id", - "@id": "iiif_prezi:structures", - "@container": "@list" + "@id": "iiif_prezi:thumbnail", + "@container": "@set" + }, + + "timeMode": { + "@id": "iiif_prezi:timeMode", + "@type": "@vocab", + "@context": { + "trim": "iiif_prezi:trimMode", + "scale": "iiif_prezi:scaleMode", + "loop": "iiif_prezi:loopMode" + } + }, + + "total": { + "@id": "as:totalItems", + "@type": "xsd:nonNegativeInteger" + }, + "totalItems": { + "@id": "as:totalItems", + "@type": "xsd:nonNegativeInteger" + }, + "transform": { + "@id": "iiif_prezi:transform", + "@container": "@list", + "@type": "@id" + }, + + "unit": "crm:P91_has_unit", + + "value": { + "@id": "rdf:value", + "@container": ["@language", "@set"], + "@context": { + "none": "@none" + } + }, + + "version": "iiif_image:version", + "via": { + "@id": "oa:via", + "@type": "@id" + }, + + "viewHeight": "iiif_prezi:viewHeight", + + "viewingDirection": { + "@id": "iiif_prezi:viewingDirection", + "@type": "@vocab", + "@container": "@set", + "@context": { + "left-to-right": "iiif_prezi:leftToRightDirection", + "right-to-left": "iiif_prezi:rightToLeftDirection", + "top-to-bottom": "iiif_prezi:topToBottomDirection", + "bottom-to-top": "iiif_prezi:bottomToTopDirection" + } + }, + + "volume": { + "@id": "iiif_prezi:volume" + }, + + "width": { + "@id": "exif:width", + "@type": "xsd:integer" }, - "painting": "iiif_prezi:painting", - "supplementing": "iiif_prezi:supplementing" + "x": "iiif_prezi:x", + "y": "iiif_prezi:y", + "z": "iiif_prezi:z" } } From fe5b069d5693e8e848a0ed90f9499256e6b0158f Mon Sep 17 00:00:00 2001 From: Rob Sanderson Date: Sat, 6 Jun 2026 14:42:38 +0200 Subject: [PATCH 5/9] updates --- source/presentation/4.0/model.md | 7 +++- source/presentation/4/context.json | 58 +++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/source/presentation/4.0/model.md b/source/presentation/4.0/model.md index 17853064a..94eb7f15b 100644 --- a/source/presentation/4.0/model.md +++ b/source/presentation/4.0/model.md @@ -2644,7 +2644,12 @@ The value _MUST_ be a JSON Object with the `id` and `type` properties. The value {% include api/code_header.html %} ``` json-doc -{ "source": "https://example.org/museum/images/1" } +{ + "source": { + "@id": "https://example.org/museum/images/1", + "@type": "Image" + } +} ``` diff --git a/source/presentation/4/context.json b/source/presentation/4/context.json index 711f9f475..a616969a3 100644 --- a/source/presentation/4/context.json +++ b/source/presentation/4/context.json @@ -406,7 +406,16 @@ "metadata": { "@type": "@id", "@id": "iiif_prezi:metadataEntries", - "@container": "@list" + "@container": "@list", + "@context": { + "value": { + "@id": "rdf:value", + "@container": ["@language", "@set"], + "@context": { + "none": "@none" + } + } + } }, "motivation": { @@ -498,7 +507,11 @@ }, "quality": "iiif_prezi:quality", - "quantityValue": "crm:P90_has_value", + + "quantityValue": { + "@id": "crm:P90_has_value", + "type": "xsd:double" + }, "refinedBy": { "@id": "oa:refinedBy", @@ -515,7 +528,16 @@ "requiredStatement": { "@id": "iiif_prezi:requiredStatement", - "@type": "@id" + "@type": "@id", + "@context": { + "value": { + "@id": "rdf:value", + "@container": ["@language", "@set"], + "@context": { + "none": "@none" + } + } + } }, "rights": { @@ -714,17 +736,15 @@ "unit": "crm:P91_has_unit", "value": { - "@id": "rdf:value", - "@container": ["@language", "@set"], - "@context": { - "none": "@none" - } + "@id": "rdf:value" }, "version": "iiif_image:version", + "via": { "@id": "oa:via", - "@type": "@id" + "@type": "@id", + "@container": "@list" }, "viewHeight": "iiif_prezi:viewHeight", @@ -742,7 +762,10 @@ }, "volume": { - "@id": "iiif_prezi:volume" + "@id": { + "@id": "iiif_prezi:volume", + "type": "xsd:double" + } }, "width": { @@ -750,8 +773,17 @@ "@type": "xsd:integer" }, - "x": "iiif_prezi:x", - "y": "iiif_prezi:y", - "z": "iiif_prezi:z" + "x": { + "@id": "iiif_prezi:x", + "type": "xsd:double" + }, + "y": { + "@id": "iiif_prezi:y", + "type": "xsd:double" + }, + "z": { + "@id": "iiif_prezi:z", + "type": "xsd:double" + } } } From b69390038c915c84ae78edc2bb7fb30e763607e9 Mon Sep 17 00:00:00 2001 From: Rob Sanderson Date: Sat, 6 Jun 2026 14:50:11 +0200 Subject: [PATCH 6/9] Make model easier to find --- source/_includes/links.md | 2 +- source/index.md | 2 +- source/presentation/4.0/index.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_includes/links.md b/source/_includes/links.md index 1ab6c5b62..666bca345 100644 --- a/source/_includes/links.md +++ b/source/_includes/links.md @@ -322,7 +322,7 @@ [prezi40-ldce]: {{ site.api_url | absolute_url }}/presentation/4.{{ site.data.apis.presentation.latest.minor }}/#json-ld-and-extensions "Linked Data Context and Extensions" [prezi40-context-collisions]: {{ site.api_url | absolute_url }}/presentation/4.{{ site.data.apis.presentation.latest.minor }}/#term-collisions-between-contexts - +[prezi-40-model]: {{ site.api_url | absolute_url }}/presentation/4.0/model/ [prezi-40-model-Agent]: {{ site.api_url | absolute_url }}/presentation/4.0/model/#Agent [prezi-40-model-AmbientAudio]: {{ site.api_url | absolute_url }}/presentation/4.0/model/#AmbientAudio [prezi-40-model-AmbientLight]: {{ site.api_url | absolute_url }}/presentation/4.0/model/#AmbientLight diff --git a/source/index.md b/source/index.md index 5e231aea2..36d7fc8a0 100644 --- a/source/index.md +++ b/source/index.md @@ -26,7 +26,7 @@ api_current_table: | API | Draft Version (Status) | | -------------------- | ---------------------- | -| Presentation API | [4.0.0][prezi40] (Release candidate) | +| Presentation API | [4.0.0 Base][prezi40] and [4.0.0 Model][prezi40-model] (Release candidate) | {: .api-table} ### Feedback requested diff --git a/source/presentation/4.0/index.md b/source/presentation/4.0/index.md index b2567ab82..b9e52c1e3 100644 --- a/source/presentation/4.0/index.md +++ b/source/presentation/4.0/index.md @@ -141,7 +141,7 @@ The purpose of the IIIF Presentation API specification is to provide a [model](m The IIIF Presentation API is concerned with enabling user experiences---providing enough information to present objects in compatible software, and leaving the meaning of the objects to external descriptive metadata standards. -This document acts as an introduction to the specification through a set of typical (but non-exhaustive) use cases. The [Presentation API 4.0 Data Model](model) document provides the formal specification of the model and terms used in this introduction. +This document acts as an introduction to the specification through a set of typical (but non-exhaustive) use cases. **The [Presentation API 4.0 Data Model](model) document provides the formal specification of the model and terms used in this introduction.** ## IIIF Use cases From 6cbdfb3f85716b55fde52fd5520963414b024ed9 Mon Sep 17 00:00:00 2001 From: Rob Sanderson Date: Sat, 6 Jun 2026 14:56:40 +0200 Subject: [PATCH 7/9] Allow non 3d Transforms --- source/presentation/4.0/model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentation/4.0/model.md b/source/presentation/4.0/model.md index 94eb7f15b..47014684a 100644 --- a/source/presentation/4.0/model.md +++ b/source/presentation/4.0/model.md @@ -2964,7 +2964,7 @@ The value of this property _MUST_ be a non-negative integer. ### transform {: #transform} -An ordered list of 3D transform operations (translation, rotation, and scale) to be performed on a resource prior to painting that resource into a Scene. Transforms _MUST_ be applied to the resource in the order given. The resulting state of the resource after applying a transform _MUST_ be the input state for the subsequent transform in the ordered list. Therefore, transforms are not independent, and different orders of the same set of transforms can produce different results. The list of transforms _MAY_ include multiple transforms of the same type, e.g., multiple rotation operations. +An ordered list of transformation operations (Transform instances) to be performed on a resource prior to painting that resource into a Container. The Transforms _MUST_ be applied to the resource in the order given. The resulting state of the resource after applying a transform _MUST_ be the input state for the subsequent transform in the ordered list. Therefore, transforms are not independent, and different orders of the same set of transforms can produce different results. The list of transforms _MAY_ include multiple transforms of the same type, e.g., multiple rotation operations. The value of this property _MUST_ be array of JSON objects, each of which _MUST_ be a Transform. From dfdf4ce6afe409e92024e4f6f5c87aa171eb7235 Mon Sep 17 00:00:00 2001 From: Rob Sanderson Date: Sat, 6 Jun 2026 14:59:26 +0200 Subject: [PATCH 8/9] Fix accessibility key points formatting --- source/presentation/4.0/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/source/presentation/4.0/index.md b/source/presentation/4.0/index.md index b9e52c1e3..b7ca8596a 100644 --- a/source/presentation/4.0/index.md +++ b/source/presentation/4.0/index.md @@ -1109,6 +1109,7 @@ The value of [`provides`][prezi-40-model-provides] is an array of strings, taken ] ``` +> **Key Points** * The `provides` property is placed on the annotation and not on the target of the annotation. * The property is primarily used to define accessibility features, but can be used to define other types of functionality, such as `transcript`. From a94ebda77aebe5d99700b8343adcb23fe6e65273 Mon Sep 17 00:00:00 2001 From: Rob Sanderson Date: Sat, 6 Jun 2026 15:10:30 +0200 Subject: [PATCH 9/9] Fix bad link from merge conflict --- source/_includes/links.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/_includes/links.md b/source/_includes/links.md index 91f4a44e0..b324eb7ac 100644 --- a/source/_includes/links.md +++ b/source/_includes/links.md @@ -318,8 +318,7 @@ [prezi40]: {{ site.api_url | absolute_url }}/presentation/4.0/ [prezi40-terminology]: {{ site.api_url | absolute_url }}/presentation/4.0/model/#terminology - -[prezi-40-model]: {{ site.api_url | absolute_url }}/presentation/4.0/model/ +[prezi40-model]: {{ site.api_url | absolute_url }}/presentation/4.0/model/ [prezi40-ldce]: {{ site.api_url | absolute_url }}/presentation/4.{{ site.data.apis.presentation.latest.minor }}/#json-ld-and-extensions "Linked Data Context and Extensions"