First pass of a v4 cookbook#598
Conversation
|
Example v3 and v4 recipe: https://preview.iiif.io/cookbook/v4/recipe/0001-mvm-image/ |
|
|
||
| This illustrates the mandatory structure and properties of a manifest, with the simplest possible content. | ||
|
|
||
| The JSON-LD opens with the `@context` declaration, which identifies the terms used in the document as belonging to the IIIF specification. The `id` property identifies this manifest with the URL at which it is available online. The `type` property must be `Manifest`. The `label` property is mandatory, and the language of its value must be given (or the special value `none`), using a [language map][prezi3-languages]. Here the language of the label is English and its value is "Single Image Example". The manifest's `items` property is a list of canvases. In this example there is only one canvas, with a `height` of 1800 and a `width` of 1200. These units have no dimension: they establish a coordinate space that in this case the single image will fill. The canvas's `id` property is used later as the `target` of the annotation that links to the single image. |
There was a problem hiding this comment.
Point to version 4 of the spec: [language map][prezi3-languages]
Initial commit to version control ⚡️
Ensured all removed entries had issues created for them
I'm surely overthinking this, but I don't want readers to skip these annotations as if they are _only_ building blocks
| "id": "{{ id.path }}/annotation/p0001-image", | ||
| "type": "Annotation", | ||
| "motivation": "painting", | ||
| "body": { |
There was a problem hiding this comment.
The value must be an array of JSON objects.
https://preview.iiif.io/api/prezi-4/presentation/4.0/model/#body
| "id": "{{ id.path }}/timeline/page/annotation", | ||
| "type": "Annotation", | ||
| "motivation": "painting", | ||
| "body": { |
There was a problem hiding this comment.
The value must be an array of JSON objects.
https://preview.iiif.io/api/prezi-4/presentation/4.0/model/#body
| "id": "{{ id.path }}/canvas/page/annotation", | ||
| "type": "Annotation", | ||
| "motivation": "painting", | ||
| "body": { |
There was a problem hiding this comment.
The value must be an array of JSON objects.
https://preview.iiif.io/api/prezi-4/presentation/4.0/model/#body
| "format": "audio/mp4", | ||
| "duration": 1985.024 | ||
| }, | ||
| "target": "{{ id.path }}/timeline" |
There was a problem hiding this comment.
The value must be an array of JSON objects.
https://preview.iiif.io/api/prezi-4/presentation/4.0/model/#target
| "target": "{{ id.path }}/timeline" | |
| "target": [{"id": "{{ id.path }}/timeline", "type": "Timeline"}] |
There was a problem hiding this comment.
As with body, the current RC has target as a singular JSON object. https://iiif.io/api/presentation/4.0/model/#target
| "duration": 572.034, | ||
| "format": "video/mp4" | ||
| }, | ||
| "target": "{{ id.path }}/canvas" |
There was a problem hiding this comment.
The value must be an array of JSON objects.
https://preview.iiif.io/api/prezi-4/presentation/4.0/model/#target
| "target": "{{ id.path }}/canvas" | |
| "target": [{"id": "{{ id.path }}/canvas", "type": "Canvas"}] |
There was a problem hiding this comment.
Current RC has target as a singular JSON object. https://iiif.io/api/presentation/4.0/model/#target
| "type": "Model", | ||
| "format": "model/gltf-binary" | ||
| }, | ||
| "target": "{{ id.path }}/scene/1/annotationPage/1" |
There was a problem hiding this comment.
The value must be an array of JSON objects.
https://preview.iiif.io/api/prezi-4/presentation/4.0/model/#target
| "target": "{{ id.path }}/scene/1/annotationPage/1" | |
| "target": [{"id":"{{ id.path }}/scene/1", "type": "Scene"}] |
There was a problem hiding this comment.
Also it targets the AnnotationPage instead of the Scene. (updated the suggestion)
There was a problem hiding this comment.
Fixed the referenced part, but left the syntax as current RC says "a JSON object"
| "body": { | ||
| "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", | ||
| "type": "Model", | ||
| "format": "model/gltf-binary" | ||
| }, |
There was a problem hiding this comment.
The value must be an array of JSON objects.
https://preview.iiif.io/api/prezi-4/presentation/4.0/model/#body
| "body": { | |
| "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", | |
| "type": "Model", | |
| "format": "model/gltf-binary" | |
| }, | |
| "body": [{ | |
| "id": "https://raw.githubusercontent.com/IIIF/3d/main/assets/astronaut/astronaut.glb", | |
| "type": "Model", | |
| "format": "model/gltf-binary" | |
| }], |
There was a problem hiding this comment.
The current API RC describes body as being a (singular) JSON object, if I'm reading correctly.
These edits both bring the 4 minimum viable manifest recipes more in line with each other and also highlight differences better. With v4, there are more significant differences, so for instance the audio recipe needs to spell out more what it shares with the other kind of manifests.
Steps for adding a v4 recipe for example
0001-mvm-image:0001-mvm-imagecalledv4.0001-mvm-imageto recipe.md0001-mvm-imageto v4v4to make it work for v4Notes:
v4-viewersto list v4 supporting recipes