Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recipe #103 -- Annotating a Poetry Reading #130

Open
wants to merge 36 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
23c0443
initial directory & readme for poetry annotations
saracarl Sep 17, 2019
2224c3b
initial manifest
saracarl Sep 19, 2019
971336a
manifest with working @id
saracarl Sep 19, 2019
9f6b638
@id with a .json
saracarl Sep 19, 2019
16771c0
missed comma
saracarl Sep 19, 2019
5e35f81
@id with a .json
saracarl Sep 19, 2019
88cb0f2
added annotation
saracarl Sep 19, 2019
53da3af
added homepage link to manifest
saracarl Sep 20, 2019
53c8b36
aded a RangeSelector annotation
saracarl Oct 10, 2019
1ab053f
edits to show both embedded annotations and annotations in a separate…
saracarl Oct 28, 2019
b593f6a
Update recipe/0103-poetry-reading-annotations/index.md
saracarl Nov 5, 2019
1440f36
updates per the Ann Arbor working meeting review
saracarl Nov 11, 2019
d7b1ec7
better IDs/URIs for all the things
saracarl Nov 12, 2019
fae0bea
fixed double frontmatter
saracarl Nov 12, 2019
dc834e4
Merge remote-tracking branch 'sara/master' into 0103-poetry
glenrobson Nov 20, 2019
6a5f995
Importing from Sara's branch and updating Jekyll variables
glenrobson Nov 20, 2019
039e394
Merge branch 'master' into 0103-poetry
glenrobson Nov 20, 2019
3e1ea5d
Merge branch 'master' into 0103-poetry
glenrobson Nov 23, 2019
e3e42c7
fixes per TRC review
saracarl Dec 11, 2019
107ecab
removed annotation context
saracarl Dec 12, 2019
e2a9aaf
changed range selectors
saracarl Dec 13, 2019
4b07354
fixed formatting for better tabs.
saracarl Dec 13, 2019
96efd52
fixed more json problems. changed indentation to 2 space indentation.
saracarl Dec 17, 2019
0b947c7
Fixing numbered list
glenrobson Dec 19, 2019
c316a21
changes
saracarl Dec 19, 2019
13d0482
Merge branch '0103-poetry' of https://github.com/IIIF/cookbook-recipe…
saracarl Dec 19, 2019
d7056dd
more stuff
saracarl Dec 19, 2019
f4451e2
fixed the reference to the annotation description, since we don't hav…
saracarl Dec 19, 2019
68829eb
made single motivations scalar
saracarl Jan 17, 2020
52c6cdf
explanation for commenting not supplementing
saracarl Jan 17, 2020
43a91b2
Update index.md
saracarl Jul 24, 2020
9983b3f
Remove reference to embedded annotations.
saracarl Jul 24, 2020
618b172
Delete manifest containing embedded annotations.
saracarl Jul 24, 2020
d6bde57
Merge branch 'master' into 0103-poetry
saracarl Jul 24, 2020
e8593eb
Merge branch 'master' into 0103-poetry
saracarl Jan 28, 2025
437e0ad
updated per checklist, plus new audio file for simplifying rights
saracarl Jan 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions recipe/0103-poetry-reading-annotations/annotations.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"@context": "http://iiif.io/api/presentation/3/context.json",
"id": "{{ id.url }}",
"type": "AnnotationPage",
"items":
[
{
"@context":"http://www.w3.org/ns/anno.jsonld",
glenrobson marked this conversation as resolved.
Show resolved Hide resolved
"id":"{{ id.path }}/canvas/annotation1",
"type":"Annotation",
"motivation":"commenting",
"body":{
"type":"TextualBody",
"value":"breath",
"format":"text/plain"
},
"target":{
"source":"{{ id.path }}/canvas/1",
"selector":{
"type":"PointSelector",
"t":"27.660653"
}
}
},
{
"@context": "http://www.w3.org/ns/anno.jsonld",
glenrobson marked this conversation as resolved.
Show resolved Hide resolved
"id": "{{ id.path }}/canvas/segment1/annotation/4",
"type": "Annotation",
"motivation": "commenting",
"body": {
"type": "TextualBody",
"value": "her kind",
"format": "text/plain"
},
"target": {
"source": "{{ id.path }}/canvas/1",
"selector": {
"type": "RangeSelector",
"t": "46.734653,47.875068"
glenrobson marked this conversation as resolved.
Show resolved Hide resolved
}
}
}
]
}
84 changes: 84 additions & 0 deletions recipe/0103-poetry-reading-annotations/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
title: Annotating a Poetry Reading
id: 103
layout: recipe
tags: [audio, presentation, annotation]
summary: "Use annotations to indicate aspects of the performance of a particular poem."
---


## Use Case

While an audio file of a poetry performance may be divided into a track for each poem, scholars may wish to use annotations to indicate aspects of the performance of a particular poem.

A researcher might want to annotate the following types of information:
* structural information (introduction, title, stanzas)
* points where the performer takes a breath
* repeated phrases

Since annotations could be available at the same time the manifest is generated, or might be a separate process that references the item manifest, both scenarios are shown.

There is a third use case where manifests are unaware of annotations on them, but the systems that display the item are aware of the annotations and pull them in, using the target block in the annotation.

## Implementation notes

1. This implementation builds off of the [audio example][0002], but adds Web Annotations.

2. This recipe shows two variations of referencing annotations from within a manifest. The first has the annotations embedded within the manifest file. The second has a reference to annotations in a separate file.

3. Where we use "RangeSelector" for the annotation target, we could instead use a Media Fragment like "#t=1.23,2.23" appended to the canvas URL. Instead of "source" you'd condense it into the "target" field. For example:

```
"target": {
"source": "http://localhost:4000/recipe/0103-poetry-reading-annotations/manifest1.json/canvas/segment1/canvas/segment1",
"selector": {
"type": "RangeSelector",
"t": "46.734653,47.875068"
glenrobson marked this conversation as resolved.
Show resolved Hide resolved
}
```

Could become

```
"target": "http://localhost:4000/recipe/0103-poetry-reading-annotations/manifest1.json/canvas/segment1/canvas/segment1#t=46.734653,47.875068"
```

Both are correct.

4. While the IIIF Specification requires arrays for most values, the W3C Web Annotation Specification does not require arrays, so the following line:

`"motivation": "commenting",`

is correct, but unusual for a IIIF resource. It could also be expressed (and must be if there is more than one motivation) as follows:

`"motivation": ["commenting"],`

## Example

A manifest for the poem "Her Kind" read by Anne Sexton in 1974. The recording is 107 seconds long. Annotations are included in the manifest and show both a point annotation (at a particular time) and a range annotation (covering a time range). (For more on these annotations, see the [annotation.json file description.](#annotations))

{: .line-numbers data-src="manifest1.json" }
```json
```

The same manifest, but with a reference to annotations in a separate file. The annotation file is included below the manifest.

{: .line-numbers data-src="manifest2.json" }
```json
```

<a name="annotations"></a>Annotation examples, both a point annotation (at a particular time) and a range annotation (covering a time range). We use the "supplementing" motivation because these annotations are derived from the audio file on the canvas and the "commenting" motivation because the annotations are a comment about the canvas. Annotations must have "supplementing" as a motivation for any annotations derived from the items on the canvas.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Related to the other changes but Rob's comments:

"The text and example do not line up -- The text says the final example has both supplementing and commenting, whereas it only has commenting. As below, I think it should be only supplementing."


{: .line-numbers data-src="annotations.json" }
```json
```

# Related recipes

* [Simple Manifest - Audio][0002]
* [Transformation - WebVTT or OHMS XML to Annotations][0079]


{% include acronyms.md %}
{% include links.md %}

96 changes: 96 additions & 0 deletions recipe/0103-poetry-reading-annotations/manifest1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
{
"@context":"http://iiif.io/api/presentation/3/context.json",
"id":"{{ id.url }}",
"type":"Manifest",
"label":{
"en":[
"Anne Sexton, Poetry Reading, 1974 -- Her Kind"
]
},
"items":[
{
"id":"{{ id.path }}/canvas/1",
"type":"Canvas",
"duration":107,
"items":[
{
"id":"{{ id.path }}/canvas/1/paintings",
"type":"AnnotationPage",
"items":[
{
"id":"{{ id.path }}/canvas/1/painting/1",
"type":"Annotation",
"motivation":"painting",
"body":{
"id":"https://library.harvard.edu/poetry/audio/listeningbooth//PS3537E915A6x1974/Her_Kind.mp3",
"type":"Sound",
"format":"audio/mp3",
"duration":107
},
"target":"{{ id.path }}/canvas/1"
}
],
"annotations":[
saracarl marked this conversation as resolved.
Show resolved Hide resolved
{
"id":"{{ id.path }}/annotations.json",
"type":"AnnotationPage",
"items":[
{
"@context":"http://www.w3.org/ns/anno.jsonld",
glenrobson marked this conversation as resolved.
Show resolved Hide resolved
"id":"{{ id.path }}/canvas/1/annotation/1",
"type":"Annotation",
"motivation":"commenting",
"body":{
"type":"TextualBody",
"value":"breath",
"format":"text/plain"
},
"target":{
"source":"{{ id.path }}/canvas/1",
"selector":{
"type":"PointSelector",
"t":"27.660653"
glenrobson marked this conversation as resolved.
Show resolved Hide resolved
}
}
},
{
"@context":"http://www.w3.org/ns/anno.jsonld",
glenrobson marked this conversation as resolved.
Show resolved Hide resolved
"id":"{{ id.path }}/canvas/1/annotation/2",
"type":"Annotation",
"motivation":"commenting",
"body":{
"type":"TextualBody",
"value":"her kind",
"format":"text/plain"
},
"target":{
"source":"{{ id.path }}/canvas/1",
"selector":{
"type":"RangeSelector",
"t":"46.734653,47.875068"
glenrobson marked this conversation as resolved.
Show resolved Hide resolved
}
}
}
]
}
]
}
]
}
],
"homepage":[
{
"id":"https://library.harvard.edu/poetry/listeningbooth/poets/sexton.html",
"type":"Text",
"label":{
"en":[
"Anne Sexton at the Woodberry Poetry Room"
]
},
"format":"text/html",
"language":[
"en"
]
}
]
}
48 changes: 48 additions & 0 deletions recipe/0103-poetry-reading-annotations/manifest2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"@context": "http://iiif.io/api/presentation/3/context.json",
"id": "{{ id.url }}",
"type": "Manifest",
"label": { "en": [ "Anne Sexton, Poetry Reading, 1974 -- Her Kind" ] },
"items": [
{
"id": "{{ id.path }}/canvas/1",
"type": "Canvas",
"duration": 107,
"items": [
{
"id": "{{ id.path }}/canvas/1/paintings",
"type": "AnnotationPage",
"items": [
{
"id": "{{ id.path }}/canvas/1/painting/1",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://library.harvard.edu/poetry/audio/listeningbooth//PS3537E915A6x1974/Her_Kind.mp3",
glenrobson marked this conversation as resolved.
Show resolved Hide resolved
"type": "Sound",
"format": "audio/mp3",
"duration": 107
},
"target": "{{ id.path }}/canvas/1"
}
]
}
]
}
],
"annotations": [
{
"id": "{{ id.path }}/annotations.json",
"type": "AnnotationPage"
}
],
"homepage": [
{
"id": "https://library.harvard.edu/poetry/listeningbooth/poets/sexton.html",
"type": "Text",
"label": { "en": [ "Anne Sexton at the Woodberry Poetry Room" ] },
"format": "text/html",
"language": [ "en" ]
}
]
}