diff --git a/README.md b/README.md
index 509aed3e..b661343a 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,6 @@
# Training
-Documentation and workshop materials for IIIF training
+Documentation and workshop materials for IIIF training. You can see the published versions of these training sessions at the following URL:
-## Current training
+[https://training.iiif.io](https://training.iiif.io)
-* [IIIF Online workshop](iiif-online-workshop/index.html) - This online workshops covers working with the Image and Presentation APIs and annotating images. It is designed to be followed as a self-paced open access learning tool, though we also offer regular expert-led trainings using a combination of asynchronous learning, Zoom meetings, 1-on-1 help sesions, and a dedicated Slack channel that remains active following the course. This course is updated regularly.
-
-* [Annotating Cultural Heritage via IIIF](annotations/index.html) - a 1.5 hour session run on the 9th of November 2021
-
-* [European Time machine Training](time_machine/index.html) - a 2 hour session run on the 7th of October 2021
-
-## Older training
-
-* [Europeana IIIF Working Group - Presentation API](presentation-api/index.html) - a hour long intro into the Presentation API given as part of the IIIF Europeana Working Meeting in September 2020
-
-* [5 day workshop](iiif-5-day-workshop/index.html) - ran at the 2019 DHSI Conference
-
-* [1 day workshop](iiif-1-day-workshop/index.html) - ran in 2019 in South Africa
-
-* [Introduction to IIIF Guidebook](intro-to-iiif/index.html) - for Workshop run in 2017
+Each directory is a separate Gitbook instance.
\ No newline at end of file
diff --git a/australia/README.md b/australia/README.md
new file mode 100644
index 00000000..7a8a249c
--- /dev/null
+++ b/australia/README.md
@@ -0,0 +1,33 @@
+# IIIF Australia Training
+
+This training is part of the [IIIF events](https://iiif.io/event/2024/canberra/) around Fantastic Futures conference in Australia.
+
+## About the workshop
+Access to image-based resources is fundamental to research, scholarship and the transmission of cultural knowledge. Digital images are a container for much of the information content in the Web-based delivery of images, books, newspapers, manuscripts, maps, scrolls, single sheet collections, and archival materials. Yet much of the Internet's image-based resources are locked up in silos, with access restricted to bespoke, locally built applications. A large community of the world's leading research libraries and image repositories have embarked on an effort to collaboratively produce an interoperable technology and community framework for image delivery.
+
+This workshop will introduce the basics of the International Image Interoperability Framework (IIIF) starting with demonstrating the use cases it supports; including side by side comparison, annotations and layering of images. It will then go on to look into the Image API and provide a method for participants to upload their own images to the Internet Archive so they can access the IIIF Image support the IA provides.
+
+The second part of the workshop will focus on linking multiple IIIF images together with metadata to provide a IIIF Presentation API manifest and look at the different tools that are available to work with these manifests. Participants will create their own manifests and look to create an exhibit showing off their work.
+
+## Speaker Bio:
+Glen Robson works as the IIIF Technical Coordinator and runs a monthly 5 day online training course along with designing custom training for different institutions on IIIF and AV and reusing IIIF resources in various research systems like Omeka, Zooniverse and other annotation systems. Glen has been involved in the IIIF community since 2014 and previously worked at the National Library of Wales and worked on their IIIF implementation to support various crowdsourcing, maps and Newspaper projects.
+
+## Plan:
+
+### Part 1:
+9:00am - 11:00am
+ * Introductions and intro to IIIF - 30 mins
+ * Introduce exercise on taking a manifest from an institution and opening it in a viewer
+ * Exercise time - 10mins
+ * Looking at the image API - 1 hour
+ * Introduce exercise on uploading image to the internet archive and leave as home work - 10mins
+
+### Part 2:
+11:00am - 12:00pm
+ * Presentation API - 30mins
+ * Introduce exercise on using the Manifest Editor
+ * Exercise time - 15 mins
+ * Extras - 10mins
+ * Things to do with Manifests
+ * Create an Exhibit
+ * Project demos and summary - 5 mins
diff --git a/australia/SUMMARY.md b/australia/SUMMARY.md
new file mode 100644
index 00000000..54d0df66
--- /dev/null
+++ b/australia/SUMMARY.md
@@ -0,0 +1,30 @@
+# Summary
+
+- [Overview](README.md)
+- [What is IIIF](day-one/whatisiiif.md)
+ - [Exercise](day-one/guides.md)
+
+## Image API
+- [Image API](day-two/image-api.md)
+ - [Identifier](day-two/image-api/identifier.md)
+ - [Region](day-two/image-api/region.md)
+ - [Size](day-two/image-api/size.md)
+ - [Rotation](day-two/image-api/rotation.md)
+ - [Quality](day-two/image-api/quality.md)
+ - [Format](day-two/image-api/format.md)
+- [File formats](day-two/fileformats.md)
+- [Uses](day-two/uses.md)
+- [Getting started](day-two/image-servers/README.md)
+ - [Hosted - Internet Archive](day-two/image-servers/iiif-hosting-ia.md)
+ - [Static Images - Workbench](day-two/image-servers/level0-workbench.md)
+ - [Cantaloupe (Advanced)](day-two/image-servers/setting-up-cantaloupe.md)
+- [Scaling IIIF Images](day-two/scaling.md)
+
+## Presentation API
+- [Presentation API](day-three/prezi-intro.md)
+- [How do people create Manifests?](day-three/prezi-how.md)
+- [Create a Manifest](day-three/digirati-editor/standalone.md)
+ - [Create a AV Manifest](day-three/digirati-editor/Add_video_manifest.md)
+- [Things to do with Manifests](manifests.md)
+- [Create an Exhibit](exhibit/exhibit.md)
+- [Project demos and summary](demos.md)
diff --git a/australia/annotation-use-cases b/australia/annotation-use-cases
new file mode 120000
index 00000000..d88a93ab
--- /dev/null
+++ b/australia/annotation-use-cases
@@ -0,0 +1 @@
+../annotations/use_cases
\ No newline at end of file
diff --git a/australia/book.json b/australia/book.json
new file mode 100644
index 00000000..9b16a0d6
--- /dev/null
+++ b/australia/book.json
@@ -0,0 +1,26 @@
+{
+ "title": "IIIF Australia Workshop - October 16th 2024",
+ "plugins": [
+ "include",
+ "theme-default",
+ "toggle-chapters",
+ "git-author",
+ "-highlight",
+ "toggle-chapters"
+ ],
+ "gitbook": "3.2.3",
+ "styles": {
+ "website": "styles/website.css"
+ },
+ "pluginsConfig": {
+ "theme-default": {
+ "showLevel": true
+ },
+ "git-author": {
+ "position": "bottom",
+ "modifyTpl": "Last modified by {user} {timeStamp}",
+ "createTpl": "Created by {user} {timeStamp}",
+ "timeStampFormat": "YYYY-MM-DD HH:mm:ss"
+ }
+ }
+}
diff --git a/australia/day-four b/australia/day-four
new file mode 120000
index 00000000..32eca9a6
--- /dev/null
+++ b/australia/day-four
@@ -0,0 +1 @@
+../iiif-online-workshop/day-four
\ No newline at end of file
diff --git a/australia/day-one b/australia/day-one
new file mode 120000
index 00000000..e18512dd
--- /dev/null
+++ b/australia/day-one
@@ -0,0 +1 @@
+../iiif-online-workshop/day-one
\ No newline at end of file
diff --git a/australia/day-three b/australia/day-three
new file mode 120000
index 00000000..2e56e7db
--- /dev/null
+++ b/australia/day-three
@@ -0,0 +1 @@
+../iiif-online-workshop/day-three
\ No newline at end of file
diff --git a/australia/day-two b/australia/day-two
new file mode 120000
index 00000000..39ae73b2
--- /dev/null
+++ b/australia/day-two
@@ -0,0 +1 @@
+../iiif-online-workshop/day-two
\ No newline at end of file
diff --git a/australia/demos.md b/australia/demos.md
new file mode 100644
index 00000000..4fd379b9
--- /dev/null
+++ b/australia/demos.md
@@ -0,0 +1,44 @@
+# Project demos
+
+We've now completed the course and would be interested in seeing the demos you've been working on.
+
+Examples from the first workshop can be found at:
+
+https://docs.google.com/document/d/1W6sBXJEt3Ou2zIPRQxgDQtJtaHZ7qYvCYtixTcSO1Ro/edit?usp=sharing
+
+
+## Slack channels
+
+Join the [IIIF slack](http://bit.ly/iiif-slack):
+
+ * general - general discussion and announcements
+ * beginner - beginner questions lots of people to help
+ * iiif-in-the-classroom - ideas for IIIF in the classroom
+ * curators_of_awesome - become a curator of awesome by helping to curate: https://github.com/IIIF/awesome-iiif
+ * mirador - ask questions and see the latest developments with Mirador
+ * technical - ask difficult technical questions :-)
+
+## Zoom calls
+Community Calls https://iiif.io/community/call/
+
+## Community groups
+See all IIIF calls on the IIIF Calendar: https://iiif.io/community/
+
+Community groups:
+ * [3D](https://iiif.io/community/groups/3d)
+ * [A/V](https://iiif.io/community/groups/av)
+ * [Design](https://iiif.io/community/groups/D4H)
+ * [Maps](https://iiif.io/community/groups/maps)
+ * [Museums](https://iiif.io/community/groups/museums)
+ * [Outreach](https://iiif.io/community/groups/outreach)
+
+Technical Groups
+ * [3D](https://iiif.io/community/groups/3d/tsg/)
+ * [Authentication](https://iiif.io/community/groups/auth-tsg)
+ * [Content Search](https://iiif.io/community/groups/content-search-tsg)
+
+
+## Stay informed
+
+ * Join the [monthly newsletter](https://iiif.io/newsletter/)
+ * Join the IIIF Discuss [email list](https://groups.google.com/forum/#!forum/iiif-discuss)
diff --git a/australia/exhibit b/australia/exhibit
new file mode 120000
index 00000000..eff5668b
--- /dev/null
+++ b/australia/exhibit
@@ -0,0 +1 @@
+../europeana/exhibit
\ No newline at end of file
diff --git a/australia/manifests.md b/australia/manifests.md
new file mode 100644
index 00000000..a57ff32b
--- /dev/null
+++ b/australia/manifests.md
@@ -0,0 +1,8 @@
+# Things to do with Manifests
+
+Once you have a IIIF manifest hosted publicly on the web you are ready to use most IIIF tools. The following pages provide a few highlights and there are also extras in the following online training:
+
+ * [Exhibiting content with Omeka-s](https://training.iiif.io/advanced_iiif/modules/omeka/)
+ * [Crowdsourcing with Zooniverse](https://training.iiif.io/advanced_iiif/modules/zooniverse/)
+ * [Georeferencing with allmaps](https://allmaps.org/)
+ * [See more tools on awesome-iiif](https://github.com/IIIF/awesome-iiif)
\ No newline at end of file
diff --git a/australia/styles b/australia/styles
new file mode 120000
index 00000000..6692a04a
--- /dev/null
+++ b/australia/styles
@@ -0,0 +1 @@
+../iiif-online-workshop/styles
\ No newline at end of file
diff --git a/dcmi-workshop/README.md b/dcmi-workshop/README.md
new file mode 100644
index 00000000..0b5d9bf3
--- /dev/null
+++ b/dcmi-workshop/README.md
@@ -0,0 +1,37 @@
+# DCMI 2023 IIIF Workshop
+
+This is part the [DCMI 2023](https://www.dublincore.org/conferences/2023/) IIIF Workshop.
+
+## About the workshop
+
+Access to image-based resources is fundamental to research, scholarship and the transmission of cultural knowledge. Digital images are a container for much of the information content in the Web-based delivery of images, books, newspapers, manuscripts, maps, scrolls, single sheet collections, and archival materials. Yet much of the Internet's image-based resources are locked up in silos, with access restricted to bespoke, locally built applications. A large community of the world's leading research libraries and image repositories have embarked on an effort to collaboratively produce an interoperable technology and community framework for image delivery.
+
+This workshop will introduce the basics of the International Image Interoperability Framework (IIIF) starting with demonstrating the use cases it supports; including side by side comparison, annotations and layering of images. It will then go on to look into the Image API and provide a method for participants to upload their own images to the Internet Archive so they can access the IIIF Image support the IA provides.
+
+The second part of the workshop will focus on linking multiple IIIF images together with metadata to provide a IIIF Presentation API manifest and look at the different tools that are available to work with these manifests. Participants will create their own manifests and look to create an exhibit showing off their work.
+
+## Speaker Bios:
+
+Tom Cramer is the Chief Technology Strategist, Associate University Librarian & Director of Digital Library Systems & Services for the Stanford University Libraries. He directs the technical development and delivery of Stanford’s digital library services, including digitization, management, preservation and access of digital resources that support teaching, learning and research. He is the founder of the International Image Interoperability Framework (IIIF), a founder of the Samvera Community, the first adopter and an active contributor to Blacklight, and a member of the FOLIO Community Council. He is the President of the Open Library Foundation and co-chair of the CLOCKSS Board of Directors. He has served as a co-PI for the suite of LD4L and LD4P grants from their inception to present day.
+
+Simeon Warner is Associate University Librarian for IT and Open Scholarship at Cornell University Library. His responsibilities include oversight of IT operations, user experience, web programming, digital preservation, and open scholarly publishing. I have particular interest in interoperability between information systems and the development of standards and collaborations to facilitate that. Current work includes digital preservation (OCFL), evolution of the FOLIO library services platform, use of linked open data for description and discovery of library resources (LD4L/LD4P), image and A/V interoperability (IIIF), and repositories for open-access scholarly publishing (including work with Samvera and ORCID). Past projects include technical direction of the arXiv e-print archive and development of the OAI-PMH and ResourceSync standards.
+
+## Contributor Bio:
+
+Glen Robson works as the IIIF Technical Coordinator and runs a monthly 5 day online training course along with designing custom training for different institutions on IIIF and AV and reusing IIIF resources in various research systems like Omeka, Zooniverse and other annotation systems. Glen has been involved in the IIIF community since 2014 and previously worked at the National Library of Wales and worked on their IIIF implementation to support various crowdsourcing, maps and Newspaper projects.
+
+## Plan:
+
+ * 2:00 - Introductions, current knowledge, hopes and computer set-up
+ * 2:10 - [Introduction to IIIF](part1/whatisiiif.md)
+ * [Exercise: Finding IIIF Manifests](part1/guides.md) and loading into Mirador and UV
+ * 2:45 - [Image API](part2/image-api.md)
+ * [Exercise: Cropping images](part2/crop-exercise.md)
+ * 3:30 - Break
+ * 4:00 - [Presentation API](part3/prezi-intro.md)
+ * [Exercise: Create a Manifest](part3/digirati-editor/standalone.md) with the Digirati Manifest Editor
+ * 4:45 - Wrap-up
+ * [Things to do with Manifests](manifests.md)
+ * [Setting up IIIF Image Servers for your institution](part2/image-servers/README.md)
+ * [Image Server Scalability](part2/scaling.md)
+ * [Project demos and summary](demos.md)
diff --git a/dcmi-workshop/SUMMARY.md b/dcmi-workshop/SUMMARY.md
new file mode 100644
index 00000000..0cfeb9d4
--- /dev/null
+++ b/dcmi-workshop/SUMMARY.md
@@ -0,0 +1,32 @@
+# Summary
+
+- [Overview](README.md)
+- [What is IIIF](part1/whatisiiif.md)
+- [Exercise: Finding IIIF Manifests](part1/guides.md)
+
+## Image API
+- [Image API](part2/image-api.md)
+ - [Identifier](part2/image-api/identifier.md)
+ - [Region](part2/image-api/region.md)
+ - [Size](part2/image-api/size.md)
+ - [Rotation](part2/image-api/rotation.md)
+ - [Quality](part2/image-api/quality.md)
+ - [Format](part2/image-api/format.md)
+- [File formats](part2/fileformats.md)
+- [Uses](part2/uses.md)
+- [Exercise: Cropping images](part2/crop-exercise.md)
+
+## Presentation API
+- [Presentation API](part3/prezi-intro.md)
+- [How do people create Manifests?](part3/prezi-how.md)
+- [Exercise: Create a Manifest](part3/digirati-editor/standalone.md)
+ - [Extra: Create a Video Manifest](part3/digirati-editor/Add_video_manifest.md)
+
+## Wrap-up
+- [Exercise: Things to do with Manifests](manifests.md)
+ - [Annotation Exercise with Mirador](part4/annotations-exercises.md)
+ - [Annotation Stores](part4/annotations-stores.md)
+ - [Create an Exhibit](exhibit/exhibit.md)
+- [Setting up IIIF Image Servers for your institution](part2/image-servers/README.md)
+ - [Image Server Scalability](part2/scaling.md)
+- [Project demos and summary](demos.md)
diff --git a/dcmi-workshop/annotation-use-cases/AV.md b/dcmi-workshop/annotation-use-cases/AV.md
new file mode 100644
index 00000000..84fc3d0d
--- /dev/null
+++ b/dcmi-workshop/annotation-use-cases/AV.md
@@ -0,0 +1,39 @@
+# Audio and Visual Annotations
+
+In the last few years there have been a number of tools developed to support Audio and Visual annotations. A/V was added in IIIF version 3 so it is a relatively recent addition and the tool support is rapidly improving.
+
+## Timeliner
+
+Timeliner is an annotation tool for music education. It allows students and educators to describe the structure of a piece of music (or any audio), creating a hierarchy of parts and visualising the parts as nested bubbles.
+
+https://cultural-heritage.digirati.com/our-work/timeliner/
+
+
+
+## Europeana Video Editor
+
+Another powerful annotation tool for AV is the Europeana Video Player/Editor. As well as playing IIIF AV resources the EU Player also has annotation functionality that allows you to create general annotations and also video subtitles.
+
+https://video-editor.eu/
+
+### Annotations
+
+![EU Player annotations](eu_player_annotations.png)
+
+
+### Subtitle editing
+
+![EU Player subtitles](eu_player_subtitles.png)
+
+
+## AudiAnnotate
+
+AudiAnnotate is a publication platform for audio transcriptions created by various existing audio tools like [Sonic Visualiser](https://www.sonicvisualiser.org/). The idea is that you can use your existing tool workflow to create a transcription then upload it to AudiAnnotate. AudiAnnotate will then convert the transcription into IIIF annotations and use a IIIF viewer to displayer the results. You can see a list of projects here:
+
+http://audiannotate.brumfieldlabs.com/
+
+and one project example here:
+
+https://tanyaclement.github.io/sexton_sweetbriar_1966/pages/anne-sexton-class-visit-at-sweetbriar-college-1966.html#?c=&m=&s=&cv=
+
+AudiAnnotate uses GitHub for storage so it can be run as a free service.
diff --git a/dcmi-workshop/annotation-use-cases/FromThePage.md b/dcmi-workshop/annotation-use-cases/FromThePage.md
new file mode 100644
index 00000000..39aa148d
--- /dev/null
+++ b/dcmi-workshop/annotation-use-cases/FromThePage.md
@@ -0,0 +1,29 @@
+# Transcription for Pedagogy
+
+See [this article](https://content.fromthepage.com/transcription-for-pedagogy/) on using an annotation system called FromThePage for teaching. FromThePage is a transcription tool that provides a wiki like interface for transcribing IIIF Manifests. You can see a full list of features on the [about FromThePage](https://content.fromthepage.com/about/) site. It is open source but also offers a hosted transcription interface.
+
+For a more in depth workshop including and how to sign up for a trial membership and annotate your own manifests please see the [FromThePage guest presentation](https://training.iiif.io/iiif-online-workshop/GuestPresentations.html#crowdsourced-transcription-using-fromthepage--iiif) which is part of the 5 day IIIF online training.
+
+![Screenshot of FromThePage](FromThePage.png)
+
+The pedagogy use case mentioned in the article has the following stages:
+
+## Step 1: Find the Archival Collection
+
+In this case this is a physical challenge where students are tasked with going to the archive to find a set of letters. You could imagine this would also work in a digital only session where students are tasked with finding items in an online catalogue.
+
+## Step 2: Transcribe
+
+Once the Students have found the material the course tutor sends round a link to the students so they can start transcribing the letters.
+
+## Step 3: Review and Edit
+
+Once the students have finished their assigned transcriptions the course tutor is able to review and edit the transcriptions to provide the students with feedback.
+
+## Step 4: Write a Paper.
+
+Finally using the archival material they are now familiar with they are asked to write a report using the letters as historical sources.
+
+# Review
+
+This is a use case which could be used in a wide variety of situations particularly with the wealth of IIIF material available. With FromThePage being hosted you don't need any infrastructure to support the project as long as the material you are working with is available as IIIF.
diff --git a/dcmi-workshop/annotation-use-cases/FromThePage.png b/dcmi-workshop/annotation-use-cases/FromThePage.png
new file mode 100644
index 00000000..c9288999
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/FromThePage.png differ
diff --git a/dcmi-workshop/annotation-use-cases/all_maps_demo.png b/dcmi-workshop/annotation-use-cases/all_maps_demo.png
new file mode 100644
index 00000000..ddfa4c10
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/all_maps_demo.png differ
diff --git a/dcmi-workshop/annotation-use-cases/all_maps_georeferencing.png b/dcmi-workshop/annotation-use-cases/all_maps_georeferencing.png
new file mode 100644
index 00000000..2c4f6122
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/all_maps_georeferencing.png differ
diff --git a/dcmi-workshop/annotation-use-cases/all_maps_masking.png b/dcmi-workshop/annotation-use-cases/all_maps_masking.png
new file mode 100644
index 00000000..f9c822fe
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/all_maps_masking.png differ
diff --git a/dcmi-workshop/annotation-use-cases/all_maps_menu.png b/dcmi-workshop/annotation-use-cases/all_maps_menu.png
new file mode 100644
index 00000000..f5739155
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/all_maps_menu.png differ
diff --git a/dcmi-workshop/annotation-use-cases/all_maps_start.png b/dcmi-workshop/annotation-use-cases/all_maps_start.png
new file mode 100644
index 00000000..b013a5b8
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/all_maps_start.png differ
diff --git a/dcmi-workshop/annotation-use-cases/allmaps.md b/dcmi-workshop/annotation-use-cases/allmaps.md
new file mode 100644
index 00000000..d6f7a8bc
--- /dev/null
+++ b/dcmi-workshop/annotation-use-cases/allmaps.md
@@ -0,0 +1,41 @@
+# Annotations and Maps
+
+One of the nice things about IIIF is that it is constantly evolving. By allowing a standard interface to access Cultural Heritage objects it allows new tools to be developed and one of these is [AllMaps.org](https://allmaps.org/). This tool allows you to Geo-reference a IIIF Map so it can be overlaid onto a modern map.
+
+It starts the same way as many of the solutions discussed earlier with a IIIF Manifest. For this example I am going to use a map of Washington D.C. from the Library of Congress:
+
+ * [https://www.loc.gov/resource/g3850.cw0678500/?r=-0.34,0,1.679,0.982,0](https://www.loc.gov/resource/g3850.cw0678500/?r=-0.34,0,1.679,0.982,0)
+ * [Manifest](https://www.loc.gov/item/88694013/manifest.json)
+
+The first stage is to navigate to [https://editor.allmaps.org](https://editor.allmaps.org) and enter the Manifest URL:
+
+![Enter IIIF Manifest URL into Allmaps](all_maps_start.png)
+
+The second stage is to navigate to Mask to start geo-referencing.
+
+![Select Mask on allmaps Menu](all_maps_menu.png)
+
+The first process of geo-referencing is to cut out the parts of the image that contain the map. This is called Masking. In this example part of the Map contains the title so is cut out of the Map that needs geo-referencing.
+
+![Masking with allmaps](all_maps_masking.png)
+
+Now the real geo-referencing can start. Select a point on the modern map and then select the corresponding location on the IIIF map. Once you have added enough points allmaps will be able to warp and fit the historical map on top of the modern map.
+
+![geo-referencing](all_maps_georeferencing.png)
+
+You can then view the resulting transformation by clicking the modern map.
+
+![visualising the geo-referencing with allmaps](all_maps_demo.png)
+
+This type of geo-referencing can be very useful if you are trying to co-locate different data for example maps from different periods or annotations from related documents.
+
+For example there is this [Cynefin project](https://www.library.wales/digitisation-projects/places-of-wales/about-places-of-wales) from the National Library of Wales which shows the 1800s Tithe maps of Wales linked to apportionments which detail land use at the time the maps were created:
+
+https://places.library.wales/browse/52.415/-4.084
+
+This was a crowdsourcing project which used a similar Geo-referencing tool called [Georeferencer](https://georeferencer.com/).
+
+![cynefin.png](cynefin.png)
+
+
+
diff --git a/dcmi-workshop/annotation-use-cases/annotations.json b/dcmi-workshop/annotation-use-cases/annotations.json
new file mode 100644
index 00000000..3b5278dc
--- /dev/null
+++ b/dcmi-workshop/annotation-use-cases/annotations.json
@@ -0,0 +1 @@
+{"@context":"http://iiif.io/api/presentation/2/context.json","@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line.json","@type":"sc:AnnotationList","@label":"OCR text granularity of line","resources":[{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/914,669,616,79","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"rDie ,qfiifian-flme"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=914,669,616,79"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1294,617,257,8","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"\\ ."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1294,617,257,8"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1533,670,1676,74","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"rican ‘Voice 0f9\\£ortfi Carofina State ‘élniversity"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1533,670,1676,74"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/590,1075,378,107","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Special"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=590,1075,378,107"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/535,1209,491,84","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Edition In"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=535,1209,491,84"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/467,1343,627,84","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Honor of Dr."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=467,1343,627,84"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/528,1477,505,105","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Augustus"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=528,1477,505,105"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/613,1609,343,84","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Mclver"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=613,1609,343,84"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/444,1726,669,122","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=444,1726,669,122"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/506,2565,301,94","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"News"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=506,2565,301,94"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/529,2720,598,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"--The Legacy of Dr. Augustus"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=529,2720,598,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/478,2787,415,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Mclver Witherspoon"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=478,2787,415,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/529,2921,597,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"—-Dr. Grant Remembers Dr."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=529,2921,597,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/478,2987,650,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon: A Profound"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=478,2987,650,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/479,3054,351,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Warrior to Us All"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=479,3054,351,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/857,3187,272,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"«Cover Story"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=857,3187,272,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/530,3319,488,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"--The Afrikan-American"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=530,3319,488,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/479,3385,585,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Cultural Center: A Center of"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=479,3385,585,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/480,3451,516,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Awareness and Education"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=480,3451,516,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/968,3584,161,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"--page 2"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=968,3584,161,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/531,3717,532,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"--Recapturing the Life of a"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=531,3717,532,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/479,3783,454,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Warrior: A Time Line"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=479,3783,454,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/480,3850,582,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Reflection Representing Dr."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=480,3850,582,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/480,3917,388,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon’s Life"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=480,3917,388,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/531,4051,445,45","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"--Chancellor Larry K.."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=531,4051,445,45"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/481,4116,592,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Monteith Shares With Us the"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=481,4116,592,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/482,4183,641,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Impact Dr. Witherspoon Had on"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=482,4183,641,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/482,4250,87,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Him"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=482,4250,87,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/970,4384,160,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"«page 3"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=970,4384,160,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/533,4517,563,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Stephanie Cogdell Tells of"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=533,4517,563,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/482,4584,610,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"the Experiences She Had With"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=482,4584,610,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/482,4651,334,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Dr. Witherspoon"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=482,4651,334,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/533,4784,542,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"--Dawn F. Gordon Reflects"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=533,4784,542,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/482,4850,497,42","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"on the Good Times , The"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=482,4850,497,42"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/483,4916,628,42","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Remembrances, and the Effects"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=483,4916,628,42"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/483,4983,532,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"of Dr. Witherspoon Had at"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=483,4983,532,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/483,5050,132,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"NCSU"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=483,5050,132,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/534,5183,556,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"--Chris Smith Tells Of Why"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=534,5183,556,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/483,5250,599,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Dr. Witherspoon Will Always"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=483,5250,599,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/484,5317,595,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Be Remembered in the Minds"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=484,5317,595,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/484,5383,649,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"and Hearts of Everyone He Ever"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=484,5383,649,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/484,5449,446,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Came in Contact With"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=484,5449,446,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/973,5584,162,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"«page 4"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=973,5584,162,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1242,1053,3152,228","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"The Legacy of Dr. Augustus"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1242,1053,3152,228"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1695,1340,2252,222","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Mclver Witherspoon"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1695,1340,2252,222"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1301,1641,568,51","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"b LaTon a Dunn"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1301,1641,568,51"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1473,1720,272,39","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"News Writer"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1473,1720,272,39"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1298,1920,679,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"On Saturday, April 1, the former-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1298,1920,679,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1237,1986,741,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"ly named Student Center Annex will"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1237,1986,741,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1236,2053,743,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"be renamed the Augustus Mclver"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1236,2053,743,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1237,2119,592,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon Student Center."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1237,2119,592,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1305,2185,673,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"The dedication ceremony will"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1305,2185,673,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1236,2252,743,49","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"begin at 3 pm. and will include a"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1236,2252,743,49"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1237,2320,741,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"performance by the Youth"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1237,2320,741,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1238,2387,741,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Community Choir from St. Luke’s"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1238,2387,741,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1237,2453,742,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Afrikan Methodist Episcopal Church"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1237,2453,742,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1239,2520,740,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"where Witherspoon preached. The"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1239,2520,740,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1238,2586,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"keynote speaker will be Dr. Brenda"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1238,2586,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1239,2651,738,43","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Allen, coordinator of Afrikan-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1239,2651,738,43"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1239,2710,739,45","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"American Student Services at the"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1239,2710,739,45"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1239,2785,392,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"College of Textiles."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1239,2785,392,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1300,2852,679,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Dr. Witherspoon dedicated most"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1300,2852,679,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1239,2919,758,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"of his life to educating future leaders ."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1239,2919,758,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1240,2986,740,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"of America. After obtaining a bach-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1240,2986,740,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1239,3053,741,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"elor’s degree from Claflin College in"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1239,3053,741,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1241,3119,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Orangeburg, South Carolina,"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1241,3119,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1240,3185,766,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon taught high school sci- -"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1240,3185,766,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1241,3252,741,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"ence in Lumberton and Rocky"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1241,3252,741,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1241,3317,541,43","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Mount, from 1953 to 1966."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1241,3317,541,43"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1321,3384,691,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"He came to NCSU as a graduate ~"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1321,3384,691,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1242,3450,772,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"student and received a master’s"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1242,3450,772,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1241,3517,741,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"degree in 1968. While helping to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1241,3517,741,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1241,3583,741,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"establish an Afrikan-American"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1241,3583,741,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1241,3649,740,43","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Cultural Center, he received his doc-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1241,3649,740,43"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1241,3716,741,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"torate in 1971. Witherspoon then"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1241,3716,741,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1241,3783,740,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"went from a graduate teaching assis-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1241,3783,740,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1240,3841,741,56","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"tant to a professor, Assistant Dean to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1240,3841,741,56"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2263,3711,746,75","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Dr. Augustus Mclver"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2263,3711,746,75"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2397,3804,470,75","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2397,3804,470,75"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3241,1651,356,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Associate Dean"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3241,1651,356,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3241,1718,356,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"and Associate"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3241,1718,356,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3241,1785,356,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Provost of the"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3241,1785,356,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3241,1851,343,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Graduate School."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3241,1851,343,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3215,1983,382,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":":Witherspoon"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3215,1983,382,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3241,2049,356,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"received several"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3241,2049,356,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3213,2115,383,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"‘ awards for out—"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3213,2115,383,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3242,2168,355,61","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"standing teaching"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3242,2168,355,61"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3242,2250,356,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"and research. In"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3242,2250,356,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3246,2317,352,41","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"1992, he received"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3246,2317,352,41"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3242,2450,356,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"appreciation from"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3242,2450,356,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3240,2582,357,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Trustees for lead-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3240,2582,357,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3241,2649,355,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"ership, research,"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3241,2649,355,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3242,2715,354,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"and education."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3242,2715,354,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3172,2782,426,49","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"j 1' He was also"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3172,2782,426,49"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3181,2848,417,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"3 named to the"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3181,2848,417,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3243,2916,356,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Order of The"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3243,2916,356,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3242,2983,358,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Long Leaf Pine"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3242,2983,358,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3242,3050,359,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"by Governor"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3242,3050,359,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3241,3110,359,43","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"James B. Hunt"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3241,3110,359,43"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3244,3183,357,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"for his service to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3244,3183,357,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3244,3249,357,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"the state of North"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3244,3249,357,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3243,3315,183,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Carolina."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3243,3315,183,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3293,3381,309,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Chancellor"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3293,3381,309,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3244,3447,354,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Larry K."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3244,3447,354,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3243,3514,355,41","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Monteith stated,"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3243,3514,355,41"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3244,3581,355,35","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"“ G u s"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3244,3581,355,35"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3226,3647,373,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon was"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3226,3647,373,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3227,3713,372,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"a trailblazer. In"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3227,3713,372,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3226,3780,372,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"renaming this cen-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3226,3780,372,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3227,3854,371,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"ter, we commem-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3227,3854,371,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2968,3606,246,41","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Staff Photo"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2968,3606,246,41"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3242,2383,359,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"a citation of"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3242,2383,359,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3241,2516,360,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"the Board of"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3241,2516,360,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,1650,740,45","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"orate a man who was a leader among"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,1650,740,45"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,1709,740,55","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"faculty, a role model to students, and"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,1709,740,55"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,1783,740,42","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"above all else, an educator who"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,1783,740,42"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3665,1849,741,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"refused to settle for less than the best"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3665,1849,741,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,1916,376,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"from his students.”"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,1916,376,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3753,1981,653,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Chancellor Monteith and his"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3753,1981,653,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,2047,737,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"wife will unveil a portrait of Dr."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,2047,737,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,2114,741,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon that will hang in the"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,2114,741,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,2179,742,49","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon Student Center after"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,2179,742,49"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3667,2248,499,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"the dedication ceremony."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3667,2248,499,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3728,2315,679,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Dr. Witherspoon is the first"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3728,2315,679,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,2382,740,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Afrikan-American to have a building"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,2382,740,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3667,2448,742,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"named after him on the campus of"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3667,2448,742,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,2515,740,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"North Carolina State University. He"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,2515,740,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3667,2581,740,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"was the second Afrikan-American to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3667,2581,740,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,2646,740,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"earn a doctoral degree from the uni—"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,2646,740,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3667,2714,737,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"versity. Dr. Augustus M."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3667,2714,737,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3666,2780,745,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Witherspoon touched the lives of"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3666,2780,745,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3668,2848,740,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"many students and will continue to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3668,2848,740,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3669,2915,739,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"serve as a living legend on the cam-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3669,2915,739,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3668,2981,740,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"pus of North Carolina State"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3668,2981,740,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3669,3049,219,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"University."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3669,3049,219,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3722,3177,689,41","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"*A Preacher and Teacher to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3722,3177,689,41"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3670,3243,741,42","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Us Al‘. The Words of Dr. Martin"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3670,3243,741,42"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3669,3310,338,51","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Luther King Jr."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3669,3310,338,51"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1703,3931,2342,160","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"A Profound Warrior For"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1703,3931,2342,160"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2429,4187,670,158","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"' Us All"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2429,4187,670,158"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1294,4445,638,52","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"b Rochelle Carlton"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1294,4445,638,52"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1490,4525,249,40","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Staff Writer"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1490,4525,249,40"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1294,4717,690,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Dr. Augustus M. Witherspoon"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1294,4717,690,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1243,4783,742,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"began his affiliation with NCSU as a"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1243,4783,742,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1243,4849,741,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"graduate student. As he progressed"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1243,4849,741,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1244,4915,740,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"from student, to professor, to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1244,4915,740,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1244,4982,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Associate Dean, and finally"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1244,4982,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1244,5049,742,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Associate Provost and Coordinator"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1244,5049,742,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1244,5115,741,43","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"of Afrikan-American Affairs, he left"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1244,5115,741,43"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1244,5183,741,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"behind a legacy that will continue to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1244,5183,741,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1245,5250,740,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"impact the Afrikan—American stu-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1245,5250,740,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1245,5317,743,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"dents at NC. State University for"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1245,5317,743,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1245,5390,287,40","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"years to come."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1245,5390,287,40"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1306,5450,679,42","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Provost William Grant, who has"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1306,5450,679,42"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1246,5516,740,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"accepted the challenge of following"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1246,5516,740,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1246,5583,740,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"in the footsteps of Dr. Witherspoon,"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1246,5583,740,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1247,5650,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"spoke at great length on the pro-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1247,5650,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1247,5717,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"found changes Dr. Witherspoon has"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1247,5717,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1246,5783,745,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"brought about on the campus of"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1246,5783,745,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1247,5851,141,36","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"NCSU."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1247,5851,141,36"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/1311,5917,676,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Dr. Witherspoon began, and con—"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=1311,5917,676,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2051,4449,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"tinued throughout his career, the"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2051,4449,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2052,4516,738,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"long and complex process of trans-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2052,4516,738,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2052,4583,739,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"forming what was once a segregated"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2052,4583,739,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2052,4649,740,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"institution into a place that could"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2052,4649,740,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2052,4715,737,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"meet the needs of its Afrikan-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2052,4715,737,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2053,4782,431,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"American population."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2053,4782,431,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2114,4848,678,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"One of Dr. Witherspoon’s first"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2114,4848,678,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2053,4915,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"major undertakings was the creation"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2053,4915,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2053,4981,737,43","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"of a task force, the Afrikan-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2053,4981,737,43"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2053,5048,739,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Amen’can Advisory Council, during"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2053,5048,739,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2052,5114,740,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"the early 1970’s to determine why"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2052,5114,740,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2054,5181,738,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Afrikan-American enrollment at"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2054,5181,738,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2053,5249,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"NCSU was so low. In examining"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2053,5249,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2053,5316,740,42","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"this issue, the Council asked"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2053,5316,740,42"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2054,5382,738,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Afrikan-American faculty, staff,"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2054,5382,738,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2054,5449,740,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"employees, and former students to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2054,5449,740,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2055,5515,738,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"describe their experiences at the uni-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2055,5515,738,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2055,5582,145,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"versity."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2055,5582,145,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2104,5649,689,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"They also interviewed area high-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2104,5649,689,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2056,5715,738,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"school students and asked them"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2056,5715,738,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2056,5782,737,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"about their impressions of the"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2056,5782,737,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2057,5849,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"school. As anyone who has ever"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2057,5849,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2056,5917,739,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"tried to bring about change may"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2056,5917,739,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2859,4447,742,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"know, often the first step in finding"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2859,4447,742,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2860,4515,741,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"solutions to a problem is proving to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2860,4515,741,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2860,4582,741,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"“the powers that be” that the prob-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2860,4582,741,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2860,4648,442,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"lem does indeed exist."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2860,4648,442,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2920,4714,681,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"To convey the severity of the sit-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2920,4714,681,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2860,4781,742,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"uation, a videotape was presented to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2860,4781,742,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2860,4847,742,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"the administration so that they could"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2860,4847,742,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2860,4913,746,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"hear firsthand the students’ and staff"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2860,4913,746,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2861,4980,741,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"members’ description of a campus"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2861,4980,741,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2860,5047,743,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"environment that was hostile to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2860,5047,743,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2860,5113,742,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Afrikan-American high school stu—"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2860,5113,742,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2861,5180,551,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"dents had of this university."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2861,5180,551,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2922,5247,680,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"The Afrikan-American Advisory"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2922,5247,680,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2861,5314,742,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Council then drew up a list of rec-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2861,5314,742,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2862,5381,742,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"ommendations outlining how to"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2862,5381,742,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2862,5447,742,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"resolve the problem, some of which"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2862,5447,742,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2863,5513,741,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"led to the establishment of Afrikan-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2863,5513,741,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2863,5580,741,37","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"American Coordinators in each col-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2863,5580,741,37"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2863,5647,742,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"lege, and the enlargement of the"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2863,5647,742,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2863,5713,740,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"almost nonexistent Afrikan-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2863,5713,740,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2863,5781,358,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"American faculty."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2863,5781,358,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2923,5847,682,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Dr. Witherspoon was committed"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2923,5847,682,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/2863,5913,742,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"to ensuring that NCSU offered an"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=2863,5913,742,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3670,4445,737,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"environment in which Afrikan-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3670,4445,737,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3670,4512,739,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"American students could excel. In"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3670,4512,739,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3671,4579,737,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"order to provide Afrikan—American"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3671,4579,737,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3671,4646,737,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"students with the opportunity to net-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3671,4646,737,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3671,4712,738,43","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"work, interact with one another, and"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3671,4712,738,43"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3670,4778,738,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"become acquainted with Afrikan-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3670,4778,738,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3671,4845,738,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"American faculty and staff, he sup-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3671,4845,738,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3671,4911,738,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"plemented the regular orientation"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3671,4911,738,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3670,4977,738,49","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"process to include an Afrikan—"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3670,4977,738,49"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3671,5046,456,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"American Symposium."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3671,5046,456,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3732,5111,679,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"When it became apparent that"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3732,5111,679,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3671,5178,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"there was an alarmingly large dis-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3671,5178,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3671,5245,744,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"crepancy between the number of"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3671,5245,744,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3672,5312,738,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"Afrikan-American students entering"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3672,5312,738,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3673,5379,738,45","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"as freshman, and those actually eam-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3673,5379,738,45"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3673,5445,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"ing a degree, even for those students"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3673,5445,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3673,5512,739,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"whose performance was above aver-"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3673,5512,739,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3673,5578,740,48","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"age in high-school, Dr. Witherspoon"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3673,5578,740,48"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3673,5645,740,46","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"introduced the idea of adding a new"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3673,5645,740,46"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3673,5711,741,38","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"course to the curriculum that would"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3673,5711,741,38"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3673,5779,586,47","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"help rectify this discrepancy."},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3673,5779,586,47"},{"@id":"https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001-annotation-list-line/3768,5852,552,64","@type":"oa:Annotation","motivation":"sc:painting","resource":{"@type":"cnt:ContentAsText","format":"text/plain","chars":"see Grant, page 3"},"on":"https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001#xywh=3768,5852,552,64"}]}
diff --git a/dcmi-workshop/annotation-use-cases/cynefin.png b/dcmi-workshop/annotation-use-cases/cynefin.png
new file mode 100644
index 00000000..8bb62a50
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/cynefin.png differ
diff --git a/dcmi-workshop/annotation-use-cases/eu_player_annotations.png b/dcmi-workshop/annotation-use-cases/eu_player_annotations.png
new file mode 100644
index 00000000..15d6052a
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/eu_player_annotations.png differ
diff --git a/dcmi-workshop/annotation-use-cases/eu_player_subtitles.png b/dcmi-workshop/annotation-use-cases/eu_player_subtitles.png
new file mode 100644
index 00000000..4e6f7285
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/eu_player_subtitles.png differ
diff --git a/dcmi-workshop/annotation-use-cases/exemptions.png b/dcmi-workshop/annotation-use-cases/exemptions.png
new file mode 100644
index 00000000..8de45dc0
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/exemptions.png differ
diff --git a/dcmi-workshop/annotation-use-cases/ida.md b/dcmi-workshop/annotation-use-cases/ida.md
new file mode 100644
index 00000000..3332b6c1
--- /dev/null
+++ b/dcmi-workshop/annotation-use-cases/ida.md
@@ -0,0 +1,15 @@
+# The Indigenous Digital Archive
+
+This project is an important demonstration of a community reclaiming ownership of their records and re-contextualizing them to make sure the story is heard. The first part of the project was to make available 78 linear feet of microfilmed government records from the National Archives relating to the Indian boarding schools in New Mexico.
+
+"The era of government-run Indian boarding schools is a controversial and sometimes shameful
+chapter in American history. Many children were sent away for years at a time, forced to wear
+European clothes and forbidden from speaking their Native languages. They dressed in military-
+style uniforms, marched to meals and were sent out to work during school vacations, a practice
+called “outing.”
+
+The schools were designed to disperse and mix students to separate them from their culture."
+
+From an article in the *[Santa Fe New Mexican](https://perma.cc/7G2P-V934)*.
+
+Once the material was available as IIIF they could use various automated tools to extract the names of schools and tribes to make the content discoverable. They thought very carefully about what items to make available and enlisted fellows from the indigenous community to vet content and also add annotations using Madoc to re-interpret some of the content in the Archive. For more information on this process see the [Respectful Online Access](https://omeka.dlcs-ida.org/s/ida/page/respect) statement on the project website.
diff --git a/dcmi-workshop/annotation-use-cases/madoc_wikidata.png b/dcmi-workshop/annotation-use-cases/madoc_wikidata.png
new file mode 100644
index 00000000..25ac8700
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/madoc_wikidata.png differ
diff --git a/dcmi-workshop/annotation-use-cases/nubian.json b/dcmi-workshop/annotation-use-cases/nubian.json
new file mode 100644
index 00000000..30a91be5
--- /dev/null
+++ b/dcmi-workshop/annotation-use-cases/nubian.json
@@ -0,0 +1,311 @@
+{
+ "@context": "http://iiif.io/api/presentation/2/context.json",
+ "@id": "https://d.lib.ncsu.edu/collections/catalog/nubian-message-1995-04-01/manifest",
+ "@type": "sc:Manifest",
+ "attribution": "The Nubian Message (LH1 .H6 N83), Special Collections Research Center at NC State University Libraries",
+ "dcterms:created": "2016-02-23T21:02:56.000Z",
+ "dcterms:modified": "2021-02-03T08:43:04.000Z",
+ "label": "Nubian Message, April 1, 1995",
+ "license": [
+ "https://d.lib.ncsu.edu/collections/about#rights_and_use"
+ ],
+ "logo": {
+ "@id": "https://d.lib.ncsu.edu/collections/assets/ncsu-libraries-white-logo-placement-0ac6d32dfc3427d3325882e6a32c81be.jpg"
+ },
+ "metadata": [
+ {
+ "label": "title",
+ "value": "Nubian Message, April 1, 1995"
+ },
+ {
+ "label": "Creator",
+ "value": "Nubian Message (Raleigh, N.C.) (Publisher)"
+ },
+ {
+ "label": "Created Date",
+ "value": "1995-04-01"
+ },
+ {
+ "label": "URL",
+ "value": "https://d.lib.ncsu.edu/collections/catalog/nubian-message-1995-04-01"
+ },
+ {
+ "label": "",
+ "value": "IIIF drag & drop (About IIIF)"
+ }
+ ],
+ "related": {
+ "@id": "https://d.lib.ncsu.edu/collections/catalog/nubian-message-1995-04-01",
+ "dcterms:modified": "2021-02-03T08:43:04.92Z",
+ "format": "text/html",
+ "label": "HTML page for the resource"
+ },
+ "seeAlso": [
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/catalog/oai?identifier=ncsul%2Fnubian-message-1995-04-01&metadataPrefix=oai_dc&verb=GetRecord",
+ "format": "text/xml",
+ "label": "Dublin Core XML via OAI-PMH"
+ },
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/catalog/nubian-message-1995-04-01/schemaorg.json",
+ "format": "application/ld+json",
+ "label": "Schema.org metadata as JSON-LD",
+ "profile": "https://schema.org"
+ }
+ ],
+ "sequences": [
+ {
+ "@type": "sc:Sequence",
+ "canvases": [
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001",
+ "@type": "sc:Canvas",
+ "height": 6559,
+ "images": [
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001/image",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "on": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0001",
+ "resource": {
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01_0001/full/1170,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "height": 6559,
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01_0001",
+ "profile": "http://iiif.io/api/image/2/level2.json"
+ },
+ "width": 4724
+ }
+ }
+ ],
+ "label": "[1]",
+ "otherContent":
+ {
+ "@id": "https://training.iiif.io/annotations/use_cases/annotations.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (line level)"
+ }
+ ,
+ "seeAlso": [
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001.hocr",
+ "format": "text/vnd.hocr+html",
+ "label": "hOCR",
+ "profile": "https://github.com/kba/hocr-spec/blob/master/hocr-spec.md"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0001/nubian-message-1995-04-01_0001.txt",
+ "format": "text/plain",
+ "label": "plain text OCR"
+ }
+ ],
+ "width": 4724
+ },
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0002",
+ "@type": "sc:Canvas",
+ "height": 6547,
+ "images": [
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0002/image",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "on": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0002",
+ "resource": {
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01_0002/full/1170,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "height": 6547,
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01_0002",
+ "profile": "http://iiif.io/api/image/2/level2.json"
+ },
+ "width": 4768
+ }
+ }
+ ],
+ "label": "[2]",
+ "otherContent": [
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0002/nubian-message-1995-04-01_0002-annotation-list-word.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (word level)"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0002/nubian-message-1995-04-01_0002-annotation-list-line.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (line level)"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0002/nubian-message-1995-04-01_0002-annotation-list-paragraph.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (paragraph level)"
+ }
+ ],
+ "seeAlso": [
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0002/nubian-message-1995-04-01_0002.hocr",
+ "format": "text/vnd.hocr+html",
+ "label": "hOCR",
+ "profile": "https://github.com/kba/hocr-spec/blob/master/hocr-spec.md"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0002/nubian-message-1995-04-01_0002.txt",
+ "format": "text/plain",
+ "label": "plain text OCR"
+ }
+ ],
+ "width": 4768
+ },
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0003",
+ "@type": "sc:Canvas",
+ "height": 6548,
+ "images": [
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0003/image",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "on": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0003",
+ "resource": {
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01_0003/full/1170,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "height": 6548,
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01_0003",
+ "profile": "http://iiif.io/api/image/2/level2.json"
+ },
+ "width": 4660
+ }
+ }
+ ],
+ "label": "[3]",
+ "otherContent": [
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0003/nubian-message-1995-04-01_0003-annotation-list-word.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (word level)"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0003/nubian-message-1995-04-01_0003-annotation-list-line.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (line level)"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0003/nubian-message-1995-04-01_0003-annotation-list-paragraph.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (paragraph level)"
+ }
+ ],
+ "seeAlso": [
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0003/nubian-message-1995-04-01_0003.hocr",
+ "format": "text/vnd.hocr+html",
+ "label": "hOCR",
+ "profile": "https://github.com/kba/hocr-spec/blob/master/hocr-spec.md"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0003/nubian-message-1995-04-01_0003.txt",
+ "format": "text/plain",
+ "label": "plain text OCR"
+ }
+ ],
+ "width": 4660
+ },
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0004",
+ "@type": "sc:Canvas",
+ "height": 6548,
+ "images": [
+ {
+ "@id": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0004/image",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "on": "https://d.lib.ncsu.edu/collections/canvas/nubian-message-1995-04-01_0004",
+ "resource": {
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01_0004/full/1170,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "height": 6548,
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01_0004",
+ "profile": "http://iiif.io/api/image/2/level2.json"
+ },
+ "width": 4715
+ }
+ }
+ ],
+ "label": "[4]",
+ "otherContent": [
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0004/nubian-message-1995-04-01_0004-annotation-list-word.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (word level)"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0004/nubian-message-1995-04-01_0004-annotation-list-line.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (line level)"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0004/nubian-message-1995-04-01_0004-annotation-list-paragraph.json",
+ "@type": "sc:AnnotationList",
+ "label": "Text of this page (paragraph level)"
+ }
+ ],
+ "seeAlso": [
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0004/nubian-message-1995-04-01_0004.hocr",
+ "format": "text/vnd.hocr+html",
+ "label": "hOCR",
+ "profile": "https://github.com/kba/hocr-spec/blob/master/hocr-spec.md"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01_0004/nubian-message-1995-04-01_0004.txt",
+ "format": "text/plain",
+ "label": "plain text OCR"
+ }
+ ],
+ "width": 4715
+ }
+ ],
+ "rendering": [
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01/nubian-message-1995-04-01.pdf",
+ "format": "application/pdf",
+ "label": "Download as PDF, 1.98 MB"
+ },
+ {
+ "@id": "https://ocr.lib.ncsu.edu/ocr/nu/nubian-message-1995-04-01/nubian-message-1995-04-01.txt",
+ "format": "plain/text",
+ "label": "Download OCR Text"
+ }
+ ],
+ "viewingHint": "paged"
+ }
+ ],
+ "service": [
+ {
+ "@context": "http://iiif.io/api/search/0/context.json",
+ "@id": "https://ocr.lib.ncsu.edu/search/nubian-message-1995-04-01",
+ "label": "Search within this thing",
+ "profile": "http://iiif.io/api/search/0/search",
+ "service": {
+ "@id": "https://ocr.lib.ncsu.edu/suggest/nubian-message-1995-04-01",
+ "label": "Get suggested words",
+ "profile": "http://iiif.io/api/search/0/autocomplete"
+ }
+ }
+ ],
+ "thumbnail": {
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01/full/150,/0/default.jpg",
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "https://iiif.lib.ncsu.edu/iiif/nubian-message-1995-04-01",
+ "profile": "http://iiif.io/api/image/2/level2.json"
+ }
+ }
+}
diff --git a/dcmi-workshop/annotation-use-cases/printed_material.md b/dcmi-workshop/annotation-use-cases/printed_material.md
new file mode 100644
index 00000000..04a2c414
--- /dev/null
+++ b/dcmi-workshop/annotation-use-cases/printed_material.md
@@ -0,0 +1,27 @@
+# Printed Material
+
+So far we have covered annotations generated by crowdsourcing or academic projects but another popular use case is working with auto generated annotations for printed material. You can generate annotations from OCR files like ALTO using a [XSLT here](https://glenrobson.github.io/iiif_stuff/alto2annotations/). Once you have done the conversion you can link the annotations to the manifest and also implement the search API. Below is an example from North Carolina State University (NCSU) showing a Newspaper which has the search API in the Universal Viewer:
+
+
+
+It is also possible to view the linked annotations in Mirador:
+
+
+
+
+
+
+And you can imagine importing these annotations to an annotation store and setting up a project to correct OCR.
+
+[Import into SAS](https://dev.gdmrdigital.com/view.xhtml?manifest=https://d.lib.ncsu.edu/collections/catalog/nubian-message-1995-04-01/manifest)
diff --git a/dcmi-workshop/annotation-use-cases/tribunal.png b/dcmi-workshop/annotation-use-cases/tribunal.png
new file mode 100644
index 00000000..370a9761
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/tribunal.png differ
diff --git a/dcmi-workshop/annotation-use-cases/tribunal_search.png b/dcmi-workshop/annotation-use-cases/tribunal_search.png
new file mode 100644
index 00000000..68388ee1
Binary files /dev/null and b/dcmi-workshop/annotation-use-cases/tribunal_search.png differ
diff --git a/dcmi-workshop/annotation-use-cases/wikidata.md b/dcmi-workshop/annotation-use-cases/wikidata.md
new file mode 100644
index 00000000..e2d18413
--- /dev/null
+++ b/dcmi-workshop/annotation-use-cases/wikidata.md
@@ -0,0 +1,42 @@
+# Pandemic Crowdsourcing with Wikidata
+
+During the COVID Pandemic I saw this tweet from an old colleague at the National Library of Wales.
+
+
+
+This is another great idea for allowing volunteer engagement without having to setup a large amount of infrastructure. Jason made use of a tool called [Wikidata Image Positions](https://wd-image-positions.toolforge.org/) which allows users to tag different regions of an image with an entity from Wikidata. This could be generic tags like farm, windmill, cattle or horse but can also be specific tags like Aberystwyth or the particular Church depicted in a painting.
+
+Jason was able to manage the project using a spreadsheet which contains links into the tool like this one:
+
+[https://wd-image-positions.toolforge.org/item/Q21614047](https://wd-image-positions.toolforge.org/item/Q21614047)
+
+which opens up one of the images ready for volunteers to start annotating. All the volunteers needs is a Wikipedia login.
+
+The Wikidata Image Positions tool also creates a IIIF Manifest which can be used in a normal IIIF Viewer. See [this example manifest](https://wd-image-positions.toolforge.org/iiif/Q21614047/P18/manifest.json) and the [Manifest in Mirador 3](https://projectmirador.org/embed/?iiif-content=https://wd-image-positions.toolforge.org/iiif/Q21614047/P18/manifest.json).
+
+For this project the images need to be on Wikimedia so will work with any type of Image. If you already have IIIF Images then these would also need to be uploaded to Wikimedia but through the use of a [IIIF Manifest property](https://www.wikidata.org/wiki/Property:P6108) it should be possible to map the annotations back to the original IIIF images.
+
+# The Madoc Crowdsourcing System
+
+Extending this project further the National Library of Wales also embedded this feature into a more classic crowdsourcing application called [Madoc](https://github.com/digirati-co-uk/madoc-platform). This allows a more controlled volunteer process and links the Wikidata entries to the original IIIF Image.
+
+![Screenshot of wikidata and Madoc](madoc_wikidata.png)
+
+The National Library of Wales have also used this Crowdsourcing system to get volunteers to transcribe other material including a 15,000 pages of a collection of WW1 Welsh Tribunal Records. These are the applications made by people in Ceredigion, a county in Wales for exemption to national service. You can see below that Madoc can be configured to customise the data captured.
+
+![Screenshot of Tribunal Record](tribunal.png)
+
+The volunteers completed the transcription in about 6 months and the data is made available in a similar way to the Book of Remembrance. The annotations are searchable using the Universal Viewer on the [project webpage](https://www.library.wales/discover/digital-gallery/archives/cardiganshire-great-war-tribunal-appeals-records#?c=&m=&s=&cv=&xywh=-1229%2C-1%2C6135%2C5714):
+
+![Screenshot of searching the Tribunal Records](tribunal_search.png)
+
+The NLW have also made the source annotations available for research:
+
+[https://github.com/NLW-paulm/Welsh-Tribunal-annotations](https://github.com/NLW-paulm/Welsh-Tribunal-annotations)
+
+and similarly it is possible to create various visualisations of the data including looking at the reasons for exemption:
+
+![Graph showing exemptions over time](exemptions.png)
+
+A full write up of this investigation is available [here](https://iiif.gdmrdigital.com/ww1-tribunal/index.html).
+
diff --git a/dcmi-workshop/book.json b/dcmi-workshop/book.json
new file mode 100644
index 00000000..ec8e41eb
--- /dev/null
+++ b/dcmi-workshop/book.json
@@ -0,0 +1,26 @@
+{
+ "title": "DCMI 2023 IIIF Workshop",
+ "plugins": [
+ "include",
+ "theme-default",
+ "toggle-chapters",
+ "git-author",
+ "-highlight",
+ "toggle-chapters"
+ ],
+ "gitbook": "3.2.3",
+ "styles": {
+ "website": "styles/website.css"
+ },
+ "pluginsConfig": {
+ "theme-default": {
+ "showLevel": true
+ },
+ "git-author": {
+ "position": "bottom",
+ "modifyTpl": "Last modified by {user} {timeStamp}",
+ "createTpl": "Created by {user} {timeStamp}",
+ "timeStampFormat": "YYYY-MM-DD HH:mm:ss"
+ }
+ }
+}
diff --git a/dcmi-workshop/demos.md b/dcmi-workshop/demos.md
new file mode 100644
index 00000000..9e4a2417
--- /dev/null
+++ b/dcmi-workshop/demos.md
@@ -0,0 +1,39 @@
+# Project demos
+
+We've now completed the course and would be interested in seeing the demos you've been working on.
+
+## Slack channels
+
+Join the [IIIF slack](http://bit.ly/iiif-slack):
+
+ * general - general discussion and announcements
+ * beginner - beginner questions lots of people to help
+ * iiif-in-the-classroom - ideas for IIIF in the classroom
+ * curators_of_awesome - become a curator of awesome by helping to curate: https://github.com/IIIF/awesome-iiif
+ * mirador - ask questions and see the latest developments with Mirador
+ * technical - ask difficult technical questions :-)
+
+## Zoom calls
+Community Calls https://iiif.io/community/call/
+
+## Community groups
+See all IIIF calls on the IIIF Calendar: https://iiif.io/community/
+
+Community groups:
+ * [3D](https://iiif.io/community/groups/3d)
+ * [A/V](https://iiif.io/community/groups/av)
+ * [Design](https://iiif.io/community/groups/D4H)
+ * [Maps](https://iiif.io/community/groups/maps)
+ * [Museums](https://iiif.io/community/groups/museums)
+ * [Outreach](https://iiif.io/community/groups/outreach)
+
+Technical Groups
+ * [3D](https://iiif.io/community/groups/3d/tsg/)
+ * [Authentication](https://iiif.io/community/groups/auth-tsg)
+ * [Content Search](https://iiif.io/community/groups/content-search-tsg)
+
+
+## Stay informed
+
+ * Join the [monthly newsletter](https://iiif.io/newsletter/)
+ * Join the IIIF Discuss [email list](https://groups.google.com/forum/#!forum/iiif-discuss)
diff --git a/dcmi-workshop/exhibit/exhibit.md b/dcmi-workshop/exhibit/exhibit.md
new file mode 100644
index 00000000..7f2dcf1d
--- /dev/null
+++ b/dcmi-workshop/exhibit/exhibit.md
@@ -0,0 +1,66 @@
+# Create an Exhibit (extra)
+
+
+
+If you have successfully uploaded your Manifest to the Workbench you may want to create an exhibit using a IIIF compatible tool. An example of an exhibit I created is here:
+
+
+
+This tells the story of a ship called the Canganian and brings together IIIF resources from Newspapers to Manuscripts to make the presentation.
+
+## Step 1: Create an Exhibit
+
+Navigate to:
+
+[https://www.exhibit.so/](https://www.exhibit.so/)
+
+Scroll to the bottom until you see the 'Create an Exhibit' button. Click this and you will be taken to the following screen:
+
+![Create Exhibit screen](img/create.png)
+
+On this screen you can choose the following type of presentation:
+
+ * Kiosk - this will auto play the slides and is useful for a public display terminal
+ * Scroll - 'slides' will be presented in a single long web page and uses will scroll down to read the story
+ * Slides - the default and allows uses to press right or left to navigate the different parts of the story.
+ * Quiz - Similar to the Slides option buy you can ask your viewers to answer a questions
+
+For this tutorial we will focus on the slides option. Fill in a Title, Author and Description for your exhibit and agree to the Terms and Conditions and tick the I am not a robot button. Then click "Create Exhibit".
+
+You will then be presented with the following screen:
+
+![Exhibition start screen](img/start.png)
+
+The first thing to do is to add your Manifest. If you switch back to the workbench ([https://workbench.gdmrdigital.com/](https://workbench.gdmrdigital.com/index.xhtml)) in another browser tab. Navigate to your Manifest and right click the IIIF icon and select "Copy link":
+
+![Workbench copy manifest link](img/workbench.png)
+
+Now switch back to the Exhibit tool and click the Add Item button and it will show this dialog:
+
+![Add Manifest URL](img/add_item.png)
+
+Paste the Manifest URL into the text box and click import. You should see the manifest load in the background and the manifest title in the Items dialog:
+
+![List items dialog](img/list_items.png)
+
+Click the cross to close this dialog.
+
+Now we have the manifest loaded we want to create a 'slide'. Click the + on the left hand side of the screen underneath the Title and description:
+
+![add slide button](img/add_anno.png)
+
+Enter a description of what you would like to show and then zoom the right hand image into an area of the image you would like to highlight.
+
+![add description and zoom](img/zoom.png)
+
+Once you are happy with the description and zoom click the tick symbol to save the annotation.
+
+You can now add a number of different slides to tell your story. You can also add different Manifests using the Add Item button.
+
+Once you are happy click the Preview button which will show you what your presentation looks like:
+
+
+
+You can find Manifests from various institutions by going to the IIIF Guides website:
+
+[https://guides.iiif.io/finding_resources/](https://guides.iiif.io/finding_resources/)
diff --git a/dcmi-workshop/exhibit/img/add_anno.png b/dcmi-workshop/exhibit/img/add_anno.png
new file mode 100644
index 00000000..9cf0eff7
Binary files /dev/null and b/dcmi-workshop/exhibit/img/add_anno.png differ
diff --git a/dcmi-workshop/exhibit/img/add_item.png b/dcmi-workshop/exhibit/img/add_item.png
new file mode 100644
index 00000000..8f268599
Binary files /dev/null and b/dcmi-workshop/exhibit/img/add_item.png differ
diff --git a/dcmi-workshop/exhibit/img/create.png b/dcmi-workshop/exhibit/img/create.png
new file mode 100644
index 00000000..aff55d35
Binary files /dev/null and b/dcmi-workshop/exhibit/img/create.png differ
diff --git a/dcmi-workshop/exhibit/img/list_items.png b/dcmi-workshop/exhibit/img/list_items.png
new file mode 100644
index 00000000..d9652e88
Binary files /dev/null and b/dcmi-workshop/exhibit/img/list_items.png differ
diff --git a/dcmi-workshop/exhibit/img/start.png b/dcmi-workshop/exhibit/img/start.png
new file mode 100644
index 00000000..ed9a87cc
Binary files /dev/null and b/dcmi-workshop/exhibit/img/start.png differ
diff --git a/dcmi-workshop/exhibit/img/workbench.png b/dcmi-workshop/exhibit/img/workbench.png
new file mode 100644
index 00000000..a8eba808
Binary files /dev/null and b/dcmi-workshop/exhibit/img/workbench.png differ
diff --git a/dcmi-workshop/exhibit/img/zoom.png b/dcmi-workshop/exhibit/img/zoom.png
new file mode 100644
index 00000000..f4e7b015
Binary files /dev/null and b/dcmi-workshop/exhibit/img/zoom.png differ
diff --git a/dcmi-workshop/manifests.md b/dcmi-workshop/manifests.md
new file mode 100644
index 00000000..fa566e8b
--- /dev/null
+++ b/dcmi-workshop/manifests.md
@@ -0,0 +1,11 @@
+# Things to do with Manifests
+
+Once you have a IIIF manifest hosted publicly on the web you are ready to use most IIIF tools. The next part of this tutorial is an exercise to [Create annotations with Mirador](part4/annotations-stores.md).
+
+The following pages provide a few highlights and there are also extras in the following online training:
+
+ * [Transcription for Pedagogy](annotation-use-cases/FromThePage.md)
+ * [Pandemic Crowdsourcing with Wikidata](annotation-use-cases/wikidata.md)
+ * [Exhibiting content with Omeka-s](https://training.iiif.io/advanced_iiif/modules/omeka/)
+ * [Crowdsourcing with Zooniverse](https://training.iiif.io/advanced_iiif/modules/zooniverse/)
+ * [See more tools on awesome-iiif](https://github.com/IIIF/awesome-iiif)
diff --git a/dcmi-workshop/part1/README.md b/dcmi-workshop/part1/README.md
new file mode 100644
index 00000000..56343e8f
--- /dev/null
+++ b/dcmi-workshop/part1/README.md
@@ -0,0 +1,4 @@
+# Day 1 - Introductions and IIIF Basics
+## Monday
+
+The first day of the workshop is focused on getting to know each other and to learn the basics of IIIF before diving into the different API specifications on day two and three. There is a short introduction to IIIF followed by a basic exercise to View a IIIF object in a IIIF Viewer.
diff --git a/dcmi-workshop/part1/guides.md b/dcmi-workshop/part1/guides.md
new file mode 100644
index 00000000..da198003
--- /dev/null
+++ b/dcmi-workshop/part1/guides.md
@@ -0,0 +1,45 @@
+# Finding IIIF Manifests
+
+One of the issues facing the IIIF Community is how to find IIIF resources. One method that the community is using to solve this problem is to create a list of guides showing how to access IIIF manifest for various institutions.
+
+![Screenshot of the Guides Website](img/guides.png)
+
+This is available on the IIIF website at the following location:
+
+[https://iiif.io/guides/finding_resources/](https://iiif.io/guides/finding_resources/)
+
+This is a community effort and if your institution isn't listed then please feel free to add it to the [Github Repository](https://github.com/IIIF/guides) or fill in the following [Google form](https://forms.gle/S6LLjBy2o4iEBR8C9).
+
+If you look through the different collections listed you will notice there are many ways to get the link to a Manifest and this is also something the community is looking to standardise.
+
+# Task 1: Find a Manifest
+
+Using the [finding resources guides site](https://iiif.io/guides/finding_resources/), find an interesting item and its Manifest. Copy the Manifest URL.
+
+Next we'll use the Manifest URL open the item in Mirador and the Universal Viewer (UV). Opening Manifests in the UV and Mirador is something that we will do a lot of during this workshop.
+
+# Task 2: Open the Manifest in Mirador 3
+
+Navigate to [https://projectmirador.org/](https://projectmirador.org/) and click the __Try a Live Demo__ button. Once Mirador opens close the two demo objects by clicking the two crosses highlighted in the screen shot below:
+
+![Mirador close window screenshot](img/mirador_close.png)
+
+Then click the Start here button on the top left.
+
+![Mirador start screenshot](img/mirador-start.png)
+
+Then click the add resource button at the bottom right:
+
+![Mirador add Manifest button](img/mirador-add-resource.png)
+
+Finally you can paste your URL to your manifest and click Add and Mirador should open your Manifest.
+
+![Mirador add Manifest](img/mirador-add-manifest.png)
+
+# Task 3: Open the Manifest in the Universal Viewer
+
+Navigate to [http://universalviewer.io/](http://universalviewer.io/). Scroll down to where you see the __View a IIIF Manifest__ heading and enter in your Manifest URL and click View.
+
+![UV enter manifest screenshot](img/uv_manifest.png)
+
+If you want to switch to a new manifest then scroll to the bottom of the UV page and enter it in the __Set IIIF Manifest Id__ box and click the button next to it.
diff --git a/dcmi-workshop/part1/img b/dcmi-workshop/part1/img
new file mode 120000
index 00000000..0d0c3d87
--- /dev/null
+++ b/dcmi-workshop/part1/img
@@ -0,0 +1 @@
+../../iiif-online-workshop/day-one/img
\ No newline at end of file
diff --git a/dcmi-workshop/part1/whatisiiif.md b/dcmi-workshop/part1/whatisiiif.md
new file mode 100644
index 00000000..b0237d0e
--- /dev/null
+++ b/dcmi-workshop/part1/whatisiiif.md
@@ -0,0 +1,150 @@
+# What is IIIF?
+
+IIIF stands for the International Image Interoperability Framework and is best described by looking at the acronym. Broadly it is two things:
+
+
IIIF is a globally-adopted open source standardized model for delivering many types of image-based resources on the web in many different formats so that audiences can interact with them. It provides a lot of benefits to the institutions that use it, and when implemented across many institutions provides additional benefits across institutional boundaries.
+
+
But, IIIF is more than a standard: it is also an open, global community of software developers, librarians, researchers, educators, museums, universities, creative agencies, and more that work together to develop open APIs, implement them in software, and expose images and A/V files. It’s a grassroots effort between many different institutions to solve their shared problems with delivering, managing, sharing, and working with their resources."
+
+## International
+
+IIIF has been implemented internationally and is not based in one country. It has been implemented by places like:
+
+ * National Institutions:
+ * Österreichische Nationalbibliothek (Austrian National Library),
+ * [BnF](https://guides.iiif.io/guides/gallica.bnf.fr/),
+ * [Library of Congress](https://guides.iiif.io/guides/loc.gov/) and
+ * the British library.
+ * Aggregators:
+ * Artstore,
+ * ContentDM,
+ * Internet Archive and
+ * Europeana
+ * Universities & Research Institutions:
+ * [Göttingen University Collections](https://guides.iiif.io/guides/gdz.sub.uni-goettingen.de/),
+ * [Leiden University](https://guides.iiif.io/guides/universiteitleiden.nl/) and
+ * [Stanford University](https://guides.iiif.io/guides/searchworks.stanford.edu/)
+ * Museums & Galleries:
+ * British Museum,
+ * [National Gallery of Art (US)](https://guides.iiif.io/guides/nga.gov/) and
+ * [J. Paul Getty Trust](https://guides.iiif.io/guides/search.getty.edu/),
+
+For a fuller list of institutions who advertise their IIIF resources please see the [IIIF guides](https://guides.iiif.io/) site.
+
+
+
+## Image*
+
+First and foremost IIIF started with the problem of making large images available on the Web. This means allowing users to zoom into large images in way that is scaleable and allows quick zooming on large images.
+
+One of the examples of this is with the Japanese Tax Map below. In the image Wayne Vanderkuil, the Stanford lead photographer is shown next to the map for a sense of scale. Wayne is 6' 4" (1.93m) tall. The map is so big that it had to be photographed in separate sections and stitched together using Photoshop. If you click on the image below you will be taken to the IIIF image which allows you to zoom around this massive map.
+
+
+
+For details on how this map was scanned, there is a blog post [here](https://web.archive.org/web/20230527005027/https://library.stanford.edu/blogs/digital-library-blog/2015/11/adventures-oversized-imaging-digitizing-omi-kuni-ezu-jin-jiang).
+
+* the star next to the image is because IIIF now also supports Audio Visual resources but it was too late to change the name... There is also current work towards a specification for 3d objects.
+
+Here is an example of a video with table of contents shown in the [Universal Viewer](https://uv-v3.netlify.app/#?c=&m=&s=&cv=&manifest=https%3A%2F%2Fiiif.io%2Fapi%2Fcookbook%2Frecipe%2F0003-mvm-video%2Fmanifest.json)
+
+## Interoperability
+
+Interoperability, the ability for different systems and data sources to work together, can be thought of in different ways and there are a few examples below on how IIIF achieves interoperability.
+
+### Interoperable Viewers
+
+First, because IIIF provides a standard way of exposing images and metadata it is possible to switch viewers to view the same content. Users might want to do this for a number of reasons:
+
+ * A Library provides content in a general purpose Viewer like the UniversalViewer
+ * A user might want to take that manuscript and annotate using the features of the Mirador viewer
+ * A user might want to run some AI tools using the Curation IIIF image viewer
+
+![Same IIIF manifest in UV and Mirador](img/viewers.png)
+
+ * [Manuscript in NLW using the UniversalViewer](http://hdl.handle.net/10107/4574752)
+ * [Same Manuscript in Mirador 3](https://projectmirador.org/embed/?iiif-content=https://damsssl.llgc.org.uk/iiif/2.0/4574752/manifest.json)
+ * [Tify](https://demo.tify.rocks/demo.html?manifest=https://damsssl.llgc.org.uk/iiif/2.0/4574752/manifest.json)
+ * [IIIF Curation Viewer](http://codh.rois.ac.jp/software/iiif-curation-viewer/demo/?manifest=https://damsssl.llgc.org.uk/iiif/2.0/4574752/manifest.json)
+
+For instructions on how to take content from one viewer to another there is this [medium post](https://iiif-io.medium.com/how-to-use-iiif-resources-and-image-viewers-bd378a68b013).
+
+### Interoperable Images
+
+The second way IIIF supports interoperability is by allowing images from different locations to be used together. For example, to be reunited distributed images in new digital editions. The manuscript below is one that was owned by the infamous biblioclast (someone who destroys books) [Otto Ege](https://en.wikipedia.org/wiki/Otto_Ege). In the early 20th century he split the manuscript and sold individual pages to institutions across the US. Using IIIF these images have been reconstructed in the following way:
+
+![Image showing how the manuscript was constructed with remote images](img/otto_ege.png)
+
+See [the full manuscript in Mirador](https://projectmirador.org/embed/?iiif-content=https://dms-data.stanford.edu/data/manifests/Stanford/ege1/manifest.json).
+
+Another example of a reconstructed manuscript is the one below from the BnF, where illustrations are held by one institution and the rest of the manuscript by another. With IIIF illustrations can be overlaid onto the manuscript pages from which they were cut.
+
+
+
+The full demo of this manuscript can be found on the [Biblissima website](https://demos.biblissima.fr/chateauroux/demo/).
+
+There is also a IIIF Cookbook [recipe](https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/) for this example which supports version 3.
+
+
+### Interoperable Collections
+
+As well as brining distributed images together it is also possible to compare different collections in a single viewer. The Mirador viewer allows side by side comparison and using the techniques discussed earlier its possible for users to collect manifests from different locations and then compare them. The example here is from a [blog by Ben Albritton of Stanford University](https://blalbrit.github.io/2015/07/14/fellow-travelers-the-canterbury-tales-and-iiif). It shows two copies of Chaucer's Canterbury Tales, one from the National Library of Wales in the UK and one from the Huntington Library in Los Angeles.
+
+
+
+
+
+
+
+
+
+
+## Framework
+
+The last part of the acronym is Framework and this is for the different standards that IIIF provides to ensure viewers and publishers all agree on sharing compatible data. These standards are known as [APIs](https://en.wikipedia.org/wiki/API) and the two main APIs are:
+
+![Image and Presentation APIs](img/apis.png)
+
+These two APIs will be covered in detail in the rest of the workshop. As well as these APIs there are a number of other APIs defined by IIIF including:
+
+ * [Content Search API](https://iiif.io/api/search/) - to search annotations, a bit like a searching within a PDF file
+ * [Content State API](https://iiif.io/api/content-state/) - to improve the method of taking content from one viewer to another
+ * [Authorization Flow API](https://iiif.io/api/auth/) - describes services that allow the client to guide users through existing access control systems, including mechanisms that might offer different content to users with different credential
+ * [Change Discovery API](https://iiif.io/api/discovery/) - for Aggregators like Europeana to efficiently harvest IIIF data and keep track of updates
+ * [Maps Extension](https://iiif.io/api/extension/navplace/) - to link a Geographical place to a IIIF object. This API can be used to Georeference a map or photograph
diff --git a/dcmi-workshop/part2/README.md b/dcmi-workshop/part2/README.md
new file mode 100644
index 00000000..8081f3dc
--- /dev/null
+++ b/dcmi-workshop/part2/README.md
@@ -0,0 +1,13 @@
+# Day 2 - Image API
+## Tuesday
+
+The second day of the workshop will focus on the IIIF Image API. Participants may find it helpful to have the video open at the same time as the workshop webpages as the video takes you through these pages.
+
+### Image API session - 1 hour
+Glen Robson the IIIF Technical Coordinator will introduce you to the IIIF Image API starting with the background before going into showing examples of how it works.
+
+During the call participants will be given a guided hands on task to create their own IIIF images. At a minimum by the end of this topic participants should have their own images available through the Internet Archive. These images will then be used in the next stage with the Presentation API.
+
+
+
+This video is also available on [YouTube](https://www.youtube.com/watch?v=1-8hT9YARiY)
diff --git a/dcmi-workshop/part2/canvas_finder.js b/dcmi-workshop/part2/canvas_finder.js
new file mode 100644
index 00000000..f50e950a
--- /dev/null
+++ b/dcmi-workshop/part2/canvas_finder.js
@@ -0,0 +1,371 @@
+
+function loadManifest(event) {
+ event.preventDefault();
+ let manifest_uri = document.getElementById('manifest_uri').value;
+
+ let target_div = document.getElementById('manifest_content');
+
+ if (manifestOK(manifest_uri, target_div)) {
+ fetch(manifest_uri)
+ .then(response => {
+ if (!response.ok) {
+ throw new Error(response.statusText);
+ }
+ return response.json();
+ })
+ .then(data => {
+ if ("@type" in data) {
+ if (data["@type"] != 'sc:Manifest') {
+ showMessage(target_div, 'Manifest Format Error', 'The JSON for this Manifest doesnt look like a Manifest. It should have either a @type of sc:Manifest but has a type of: ' + data["@type"]);
+ } else {
+ loadv2(data, target_div);
+ }
+ } else if ("type" in data) {
+ if (data["type"] != 'Manifest') {
+ showMessage(target_div, 'Manifest Format Error', 'The JSON for this Manifest doesnt look like a Manifest. It should have either a type of Manifest but has a type of: ' + data["type"]);
+ } else {
+ loadv3(data, target_div);
+ }
+ } else {
+ showMessage(target_div, 'Manifest Format Error', 'The JSON for this Manifest doesnt look like a Manifest. It should have either a @type or type value of Manifest');
+ }
+ })
+ .catch(error => {
+ showMessage(target_div, 'Manifest retrieval error', 'I was unable to get the Manifest you supplied due to: ' + error);
+ });
+
+ }
+}
+
+function clearManifest(event) {
+ event.preventDefault();
+ let target_div = document.getElementById('manifest_content');
+ target_div.innerHTML = '';
+}
+
+function isObject(variable) {
+ return typeof variable === 'object' && !Array.isArray(variable) && variable !== null
+}
+
+function filter(event) {
+ var source = event.target || event.srcElement;
+ console.log(source.value);
+ let canvases = document.getElementsByClassName("canvasDiv");
+ for (const canvas of canvases) {
+ if (source.value == null || source.value.length === 0 || canvas.dataset.label.toLowerCase().includes(source.value.toLowerCase())) {
+ canvas.style.display = "flex";
+ } else {
+ canvas.style.display = "none";
+ }
+ }
+}
+
+function fallbackCopyTextToClipboard(text) {
+ var textArea = document.createElement("textarea");
+ textArea.value = text;
+
+ // Avoid scrolling to bottom
+ textArea.style.top = "0";
+ textArea.style.left = "0";
+ textArea.style.position = "fixed";
+
+ document.body.appendChild(textArea);
+ textArea.focus();
+ textArea.select();
+
+ try {
+ var successful = document.execCommand('copy');
+ var msg = successful ? 'successful' : 'unsuccessful';
+ console.log('Fallback: Copying text command was ' + msg);
+ } catch (err) {
+ console.error('Fallback: Oops, unable to copy', err);
+ }
+
+ document.body.removeChild(textArea);
+}
+function copyTextToClipboard(text, success) {
+ if (!navigator.clipboard) {
+ fallbackCopyTextToClipboard(text);
+ return;
+ }
+ navigator.clipboard.writeText(text).then(success, function(err) {
+ console.error('Async: Could not copy text: ', err);
+ });
+}
+
+function copyURL(event) {
+ event.preventDefault();
+ var source = event.target || event.srcElement;
+ copyTextToClipboard(source.dataset.link, function () {
+ source.innerHTML = ' Copied!';
+ setTimeout(function () {
+ source.innerHTML = ' Copy Image URL';
+ }, 1000)
+ });
+}
+
+function loadv2(manifest, target_div) {
+ if ('sequences' in manifest) {
+ let sequences = manifest.sequences;
+ if (isObject(sequences)) {
+ sequences = [ sequences ];
+ }
+ let foundCanvas = false;
+ let filterDiv = document.createElement('div');
+ filterDiv.style="display: flex; justify-content: flex-end; padding-top: 5px; padding-bottom: 5px;"
+ filterDiv.innerHTML = '';
+
+ let textBox = document.createElement('input');
+ textBox.style = "margin-left:10px;";
+ textBox.id = 'filter';
+ textBox.type="text";
+ textBox.placeholder="Filter canvas label";
+ textBox.addEventListener('input',filter);
+ filterDiv.appendChild(textBox);
+ target_div.appendChild(filterDiv);
+
+ for (const sequence of sequences) {
+ if ('canvases' in sequence) {
+ foundCanvas = true;
+ for (const canvas of sequence.canvases) {
+ let canvasDiv = document.createElement('div');
+ canvasDiv.style = "border: 1px black solid; padding: 5px;margin-top: 5px;";
+ canvasDiv.className = 'canvasDiv';
+ canvasDiv.dataset.label = canvas.label;
+
+ let thumbnail = document.createElement('img');
+ thumbnail.src = getCanvasThumbnail(canvas, 150,150);
+ thumbnail.className = 'thumbnail';
+ let thumbDiv = document.createElement('div');
+ thumbDiv.style="display: inline-block;";
+ thumbDiv.appendChild(thumbnail);
+
+ let contentDiv = document.createElement('div');
+ contentDiv.style="width: 70%; display: inline-block;position: relative; padding-left: 20px;"
+ let label = document.createElement('p');
+ label.innerHTML = 'Page Label: ' + canvas.label;
+
+ var iiifURL = canvas.images[0].resource.service["@id"];
+
+ let link = document.createElement('a');
+ link.href = iiifURL;
+ link.innerHTML = iiifURL;
+
+ let pLink = document.createElement('p');
+ pLink.innerHTML = 'IIIF Image URL: ';
+ pLink.appendChild(link);
+
+ let button = document.createElement('button');
+ button.style = "cursor: pointer; background-color: #0069d9; color: #fff; border-color: #0062cc; font-weight: 400; text-align: center; vertical-align: middle; user-select: none; border: 1px solid transparent; padding: .375rem .75rem; line-height: 1.5; border-radius: .25rem; transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; -webkit-appearance: button;text-transform: none; overflow: visible; margin: 0; font-family: inherit;box-sizing: border-box; ";
+ button.innerHTML = ' Copy Image URL';
+ button.addEventListener('click', copyURL);
+ button.dataset.link = link;
+
+ contentDiv.appendChild(label);
+ contentDiv.appendChild(pLink);
+ contentDiv.appendChild(button);
+ canvasDiv.appendChild(thumbDiv);
+ canvasDiv.appendChild(contentDiv);
+
+ target_div.appendChild(canvasDiv);
+ }
+ } else {
+ if (!foundCanvas) {
+ showMessage(target_div, 'Manifest Error', 'The manifest you supplied contains no canvases so there are no images to show.');
+ }
+ }
+ }
+ } else {
+ showMessage(target_div, 'Manifest Error', 'The manifest you supplied contains no sequence so there are no images to show.');
+ }
+}
+
+function loadv3(manifest, target_div) {
+ if ('items' in manifest) {
+ let canvases = manifest.items;
+ let foundCanvas = false;
+ let filterDiv = document.createElement('div');
+ filterDiv.style="display: flex; justify-content: flex-end; padding-top: 5px; padding-bottom: 5px;"
+ filterDiv.innerHTML = '';
+
+ let textBox = document.createElement('input');
+ textBox.style = "margin-left:10px;";
+ textBox.id = 'filter';
+ textBox.type="text";
+ textBox.placeholder="Filter canvas label";
+ textBox.addEventListener('input',filter);
+ filterDiv.appendChild(textBox);
+ target_div.appendChild(filterDiv);
+
+ let canvasLabel = "";
+ foundCanvas = true;
+ for (const canvas of canvases) {
+ let canvasDiv = document.createElement('div');
+ canvasDiv.style = "border: 1px black solid; padding: 5px;margin-top: 5px;";
+ canvasDiv.className = 'canvasDiv';
+ canvasLabel = getLangString(canvas.label);
+ canvasDiv.dataset.label = canvasLabel;
+
+ let thumbnail = document.createElement('img');
+ thumbnail.src = getCanvasThumbnail(canvas, 150,150);
+ thumbnail.className = 'thumbnail';
+ let thumbDiv = document.createElement('div');
+ thumbDiv.style="display: inline-block;";
+ thumbDiv.appendChild(thumbnail);
+
+ let contentDiv = document.createElement('div');
+ contentDiv.style="width: 70%; display: inline-block;position: relative; padding-left: 20px;"
+ let label = document.createElement('p');
+ label.innerHTML = 'Page Label: ' + canvasLabel;
+
+ var iiifURL = canvas.items[0].items[0].body.service[0]["@id"];
+
+ let link = document.createElement('a');
+ link.href = iiifURL;
+ link.innerHTML = iiifURL;
+
+ let pLink = document.createElement('p');
+ pLink.innerHTML = 'IIIF Image URL: ';
+ pLink.appendChild(link);
+
+ let button = document.createElement('button');
+ button.style = "cursor: pointer; background-color: #0069d9; color: #fff; border-color: #0062cc; font-weight: 400; text-align: center; vertical-align: middle; user-select: none; border: 1px solid transparent; padding: .375rem .75rem; line-height: 1.5; border-radius: .25rem; transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; -webkit-appearance: button;text-transform: none; overflow: visible; margin: 0; font-family: inherit;box-sizing: border-box; ";
+ button.innerHTML = ' Copy Image URL';
+ button.addEventListener('click', copyURL);
+ button.dataset.link = link;
+
+ contentDiv.appendChild(label);
+ contentDiv.appendChild(pLink);
+ contentDiv.appendChild(button);
+ canvasDiv.appendChild(thumbDiv);
+ canvasDiv.appendChild(contentDiv);
+
+ target_div.appendChild(canvasDiv);
+ }
+ } else {
+ showMessage(target_div, 'Manifest Error', 'The manifest you supplied contains no sequence so there are no images to show.');
+ }
+
+}
+
+function manifestOK(manifest_uri, target_div) {
+ if (manifest_uri.startsWith('http://')) {
+ showMessage(target_div, 'http/https issue', 'The manifest link you supplied is a http link. To use this tool you need to supply a link that starts with https. This is a common problem you come across with IIIF. If the webpage you are using is https then the Manifest link must also start with https. The training site and most modern websites uses https which is a secure way of accessing the web.');
+
+ return false;
+ }
+ return true;
+}
+
+/*
+ * Get thumbnail URL from canvas with canvas_id
+ * canvas_id can contain a fragement
+ * image returned will be the same size as desired_width and height or bigger
+ * zero means discount axis.
+ */
+function getCanvasThumbnail(canvas, desired_width, desired_height) {
+ // First try canvas thumbnail
+ if ('thumbnail' in canvas && (isObject(canvas.thumbnail) || Array.isArray(canvas.thumbnail))) {
+ let thumbnail = canvas.thumbnail;
+ if (Array.isArray(thumbnail)) {
+ thumbnail = thumbnail[0];
+ }
+ if ('width' in thumbnail && 'height' in thumbnail) {
+ if (thumbnail.width > desired_width && thumbnail.height > desired_height) {
+ if ("@id" in thumbnail) {
+ return thumbnail["@id"];
+ } else {
+ return thumbnail.id;
+ }
+ }
+ }
+ }
+
+ // Next try first image
+ if ('images' in canvas && Array.isArray(canvas.images)
+ && 'resource' in canvas.images[0] && typeof canvas.images[0].resource === 'object') {
+ if ('service' in canvas.images[0].resource && typeof canvas.images[0].resource.service === 'object'
+ && '@id' in canvas.images[0].resource.service && typeof canvas.images[0].resource.service["@id"] === 'string') {
+
+ let imageService = canvas.images[0].resource.service;
+ let isLevel0 = false;
+ if ('profile' in imageService) {
+ if (Array.isArray(imageService.profile)) {
+ imageService.profile.forEach(function(value) {
+ if (typeof key === 'string' && key === "http://iiif.io/api/image/2/level0.json") {
+ isLevel0 = true;
+ }
+ });
+ } else if (typeof imageService.profile === 'string' && imageService.profile === "http://iiif.io/api/image/2/level0.json") {
+ isLevel0 = true;
+ }
+ }
+
+ let imageId = imageService["@id"];
+
+ var region = "full";
+
+ let size = "";
+ if (!isLevel0) {
+ let widthStr = "";
+ let heightStr = "";
+ if (desired_width != 0) {
+ widthStr = "" + desired_width;
+ }
+ if (desired_height != 0) {
+ heightStr = "" + desired_height;
+ }
+ size = widthStr + "," + heightStr;
+ } else {
+ // Find size that is bigger than the one we want.
+ if ('sizes' in imageService && Array.isArray(imageService.sizes)) {
+ smallest_width = imageService.width;
+ smallest_height = imageService.height;
+
+ imageService.sizes.foreach(function(sizeOption) {
+ if ('width' in sizeOption && 'height' in sizeOption) {
+ if (sizeOption.width < smallest_width && sizeOption.height < smallest_height) {
+ smallest_width = sizeOption.width;
+ smallest_height = sizeOption.height;
+ }
+ }
+ });
+
+ size = "" + smallest_width + "," + smallest_height;
+ } else {
+ // At this point we should go and get the info.json
+ // No sizes so just have to use full
+ size = "full";
+ }
+ }
+
+ return imageId + '/' + region + '/' + size + '/0/default.jpg';
+ } else {
+ // No image service so just return image. Really this should have a thumbnail
+ return canvas.images[0].resource["@id"];
+ }
+ }
+}
+
+function getLangString(label) {
+ if ('en' in label) {
+ return label.en;
+ } else if ('none' in label) {
+ return label.none;
+ } else {
+ return label;
+ }
+}
+
+function showMessage(div, title, message) {
+ div.innerHTML = '';
+
+ let h3 = document.createElement('h3');
+ h3.innerHTML = title;
+ div.appendChild(h3);
+
+ let p = document.createElement('p');
+ p.innerHTML = message
+ div.appendChild(p);
+
+}
diff --git a/dcmi-workshop/part2/crop-exercise.md b/dcmi-workshop/part2/crop-exercise.md
new file mode 100644
index 00000000..e98dc332
--- /dev/null
+++ b/dcmi-workshop/part2/crop-exercise.md
@@ -0,0 +1,22 @@
+## Exercise: Cropping Images
+
+In this exercise we will use the [UCD Image Cropping tool](https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://ids.lib.harvard.edu/ids/iiif/25286607) to select a region of a IIIF image (and optionally adjust other parameters), and see that the region can be be reused via its URI.
+
+### Step 1: Start the Cropping Tool with an image
+
+You can start the tool with any IIIF Image by appending the image identifier to the URL base `https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=`
+
+Examples include:
+* A [Map of Seoul](https://collections.si.edu/search/detail/edanmdm:nmnhanthropology_8480110) in the [cropping tool](https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://ids.si.edu/ids/iiif/NMNH-81-10767) (from Smithsonian)
+* An [Emroidered Screen with 10 panels](https://collections.si.edu/search/detail/edanmdm:nmnhanthropology_8337004?q=korea+art&iiif.enabled=true&record=8&hlterm=korea%2Bart&inline=true) in the [cropping tool](https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://ids.si.edu/ids/iiif/NMNH-NHB2017-00559-000003)
+
+### Step 2: Explore selection of a region
+
+Use the graphic region selection tool and experiment with the other parameters.
+
+### Step 3: Use the cropped image
+
+Look at item 4 within the cropping tool:
+1. Preview the cropped image
+2. Download the cropped image
+3. Copy the cropped image URI into another browser tab to see how it could be reused by reference on any web page
diff --git a/dcmi-workshop/part2/fileformats.md b/dcmi-workshop/part2/fileformats.md
new file mode 100644
index 00000000..1363f509
--- /dev/null
+++ b/dcmi-workshop/part2/fileformats.md
@@ -0,0 +1,18 @@
+# File formats
+
+The IIIF specification makes no mention of the source format of an image and the type of image you can use is driven by the IIIF Image Server you choose. Most support the common file formats like jpeg, png, tiff or gif. To get the fastest experience it is advised to use a special kind of image format that supports tilling. Examples of these include JPEG2000 and special types of Tiff files called Pyramid Tiffs.
+
+The reason for this can be demonstrated in the following diagram:
+
+![Pyramid Image](imgs/JPEG2000_format.png)
+
+When you zoom into a image the viewer only shows you the tiles that are in your view. The view is shown in the red box. This means a very large image can be viewed but the viewer never downloads all of the images. Only the ones that are required. The JPEG2000 and Pyramid Tiff format have these tiles and levels pre-generated into the file format. A Image server just needs to read and extract the correct tiles. This makes them much faster particularly for larger images. Of course if a custom region is requested then the Image server would need to stitch the images together.
+
+The are various methods (or recipes) to create JPEG2000 and Pyramid Tiffs but to give a few examples the Bodleian method for creating JPEG2000s is detailed here:
+
+https://image-processing.readthedocs.io/en/latest/jp2_profile.html
+
+and a method for creating Pyramid Tiffs is detailed on the Serverless IIIF image server:
+
+https://github.com/nulib/serverless-iiif#creating-tiled-tiffs
+
diff --git a/dcmi-workshop/part2/image-api.md b/dcmi-workshop/part2/image-api.md
new file mode 100644
index 00000000..2850a433
--- /dev/null
+++ b/dcmi-workshop/part2/image-api.md
@@ -0,0 +1,93 @@
+# Image API
+
+
+
+
+## Learning objectives
+ * Understand what the Image API provides
+ * Be able to change an Image API URL to get access to different parts of an image
+ * Understand the different types of Image API implementations (level0, level1 etc)
+ * Know the tools that work with the Image API so you can test your Image API server
+
+## Introduction
+
+ * What is the Image API? A contract between the server and a viewing client
+ * It was the first of the IIIF APIs and provides for rich image viewing experience
+ * It is easy to implement because others have written servers you can install which provide the service
+
+## Terminology
+ * __API__ - Application Programming Interface. In this case an agreed standard between the Image API Server and the Image API Client.
+ * __Client__- The software which allows you to view a IIIF Image. As Web Browsers don't support the Image API Natively there are many Javascript viewers that live on webpages that can allow you to view IIIF Images. Examples include OpenSeaDragon, Mirador and Universal Viewer.
+ * __Viewer__ - also known as a IIIF Viewer. This is the same as a Client and lets you view IIIF Images. Examples include OpenSeaDragon, Mirador and Universal Viewer.
+ * __Server__ - Software that runs on a machine at all times and is assessable over the Web. For this workshop I will mostly be referring to Image API Servers but there are other types of servers including Web servers or Email servers. Sometimes they are also know as Services e.g. Image API service, Web Service or Mail Service.
+ * __Image API__ - the agreed standard and specification which forms the contract between Client and Server
+ * __Image API Server__ - the running software that provides access to images using the Image API. Sometimes shortened in this context to Image Servers.
+ * __IIIF Image__ - an Image that is made available through a IIIF Image API Server.
+
+## History
+
+IIIF started out to better support the study of Medieval Manuscripts and to overcome difficulties using digitised versions. Ben Albritton has written a great blog on the difficulties of working with images at that time and the promise IIIF gives in [Fellow Travelers: The Canterbury Tales and IIIF](https://blalbrit.github.io/2015/07/14/fellow-travelers-the-canterbury-tales-and-iiif).
+
+Here we look at Glen Robson's experience at the National Library of Wales where manuscripts were digitized and three images were created per page:
+
+1. A thumbnail:
+
+ ![Example thumbnail](https://damsssl.llgc.org.uk/iiif/2.0/image/4628571/full/90,/0/default.jpg)
+
+2. A Web or reference sized image:
+
+ ![Example web copy of image](https://damsssl.llgc.org.uk/iiif/2.0/image/4628571/full/300,/0/default.jpg)
+
+3. and a high quality archival Tiff that was only available on request.
+
+These were made available through a viewer allowing you to browse around the Manuscript and switch between Thumbnail and Web view:
+
+![Image of a historical digital viewer](imgs/Chaucer_viewer.png)
+
+As screens got bigger and the internet got faster the limited size of the Web images became a real barrier to use. Although the Archival Tiff was too big to put on the web, they needed some way to allow access to large images and support new methods of access like mobile browsers and the new uses scholars were making of the collection. The solution many institutions moved to, was to create Zooming viewers like [Zoomify](http://www.zoomify.com/) and [Microsoft's DZI](https://en.wikipedia.org/wiki/Deep_Zoom). These viewers tended to use Flash which was unsupported on Mobile and required proprietary file formats to support. Around this time the JPEG2000 file format started to gain traction as an open file format that could support Zoomable viewers.
+
+Enter:
+
+![IIIF Logo](imgs/logo.png)
+
+Provides:
+ * A standard URL structure for accessing images (easy to support)
+ * Enough information to drive a zoom viewer
+ * Human hackable URLs
+ * Cacheable and Scalable URLs
+
+
+
+## Example:
+
+
+
+
diff --git a/dcmi-workshop/part2/image-api/format.md b/dcmi-workshop/part2/image-api/format.md
new file mode 100644
index 00000000..62a56c1b
--- /dev/null
+++ b/dcmi-workshop/part2/image-api/format.md
@@ -0,0 +1,45 @@
+## Format
+
+
+
+
+The format parameter specifies the format of the image returned, for example `jpg` or `png`. The list of images supported by the image server is again listed in the `info.json`.
+
+
+
+
diff --git a/dcmi-workshop/part2/image-api/identifier.md b/dcmi-workshop/part2/image-api/identifier.md
new file mode 100644
index 00000000..82e1759a
--- /dev/null
+++ b/dcmi-workshop/part2/image-api/identifier.md
@@ -0,0 +1,86 @@
+## Identifier
+
+
+
+The identifier is highlighted below. Everything to the right of the identifier is controlled by the Image API and is predictable. In the viewer below a full IIIF image URL is shown. One thing to watch out for with a image URL is that it uses _https_ rather than _http_. With _http_ URLs you will not be able to open the image in a _https_ hosted viewer.
+
+You can see some different image examples by changing the identifier.
+
+
+
+
+## Info.json
+
+As well as images there is special file accessible from the Identifier and this is the `info.json`:
+
+[https://ids.si.edu/ids/iiif/CHSDM-317E001E9E352-000001/info.json](https://ids.si.edu/ids/iiif/CHSDM-317E001E9E352-000001/info.json)
+
+This is a small JSON file that gives information to a viewer on the makeup of the image and what the server supports. For example the `info.json` gives the full width and height of the source image. A simple example `info.json` is below:
+
+```
+{
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "https://ids.si.edu/ids/iiif/CHSDM-317E001E9E352-000001",
+ "protocol": "http://iiif.io/api/image",
+ "width": 5471,
+ "height": 3757,
+ "tiles": [
+ {
+ "width": 512,
+ "scaleFactors": [
+ 1,
+ 2,
+ 4,
+ 8
+ ]
+ }
+ ],
+ "profile": [
+ "http://iiif.io/api/image/2/level2.json",
+ {
+ "formats": [
+ "jpg"
+ ],
+ "supports": [
+ "sizeByH",
+ "sizeByW",
+ "sizeByForcedWh"
+ ]
+ }
+ ]
+}
+```
+
+The `profile` element advertises what the image server supports. In this example it only supports the `jpg` image format and a few features. These features are defined in the [Image API specification](https://iiif.io/api/image/2.1/compliance/).
diff --git a/dcmi-workshop/part2/image-api/quality.md b/dcmi-workshop/part2/image-api/quality.md
new file mode 100644
index 00000000..df919ffc
--- /dev/null
+++ b/dcmi-workshop/part2/image-api/quality.md
@@ -0,0 +1,75 @@
+## Quality
+
+
+
+The quality parameter defines whether the image should be delivered as:
+
+| Name | Definition |
+| --- | --- |
+| Default | Using source color palette/style |
+| Gray | Grayscale |
+| Bitonal | Each pixel is black or white |
+| Color | The color image. This could be a colorized version of a black and white source image |
+
+This can be useful for some image processing tools like OCR generation. To see what types a image server supports you can look into the `info.json` profile section:
+
+[https://ids.lib.harvard.edu/ids/iiif/25286607/info.json](https://ids.lib.harvard.edu/ids/iiif/25286607/info.json)
+
+```
+profile": [
+
+ "http://iiif.io/api/image/2/level2.json",
+ {
+ "supports": [
+ "canonicalLinkHeader",
+ "profileLinkHeader",
+ "mirroring",
+ "rotationArbitrary",
+ "regionSquare",
+ "sizeAboveFull"
+ ],
+ "qualities": [
+ "default",
+ "bitonal",
+ "gray",
+ "color"
+ ],
+ "formats": [
+ "jpg",
+ "tif",
+ "png",
+ "gif",
+ "webp"
+ ]
+ }
+
+],
+```
+
+See the example below:
+
+
+
+
diff --git a/dcmi-workshop/part2/image-api/region.md b/dcmi-workshop/part2/image-api/region.md
new file mode 100644
index 00000000..44b29c96
--- /dev/null
+++ b/dcmi-workshop/part2/image-api/region.md
@@ -0,0 +1,58 @@
+## Region
+
+
+
+
+The region portion of the URL allows you to extract a portion of an image. The format is `/x,y,width,height/` with the origin of the image being the top left. See this simplified version below:
+
+![region example](https://iiif.io/api/image/2.1/img/region_px.png)
+
+This region would be noted as `/125,15,120,140/` which is:
+ * x = 125 pixels from the left
+ * y = 15 pixels from the top
+ * width = 120 pixels
+ * heigh = 140 pixels
+
+The pixel dimensions are relative to the full width and height of the image. This generally makes the regions fiddly to work out by hand and there are many cropping tools available which will give you a region, for example:
+
+ * [Jack Reed's Cropping tool](https://bl.ocks.org/mejackreed/6936585f435b60aa9451ae2bc1c199f2)
+ * [UCD Image Cropping tool](https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://ids.lib.harvard.edu/ids/iiif/25286607)
+
+As well as specifying the exact pixel dimensions there are a couple of short cuts:
+
+ * `full` the full image.
+ * `square` a region where the width and height are equal. The region is positioned by the server. This can be useful for square thumbnails.
+
+Use the region drop down to select different regions of the image:
+
+
+
+
diff --git a/dcmi-workshop/part2/image-api/rotation.md b/dcmi-workshop/part2/image-api/rotation.md
new file mode 100644
index 00000000..7c350d95
--- /dev/null
+++ b/dcmi-workshop/part2/image-api/rotation.md
@@ -0,0 +1,54 @@
+## Rotation
+
+
+
+
+The rotation portion of the URL allows the image to be rotated up to 360 degrees. You can also use the `!n` form to mirror and rotate the image. Note not all image servers support rotation and there are the following levels of support, known as [compliance levels](https://iiif.io/api/image/2.1/compliance/):
+
+| Feature | Level |
+| --- | --- |
+| No rotation supported | Level 0 |
+| Only 90 degree rotation supported | Optional in Level 1 mandatory in level 2 |
+| Arbitrary rotation | Optional at all levels |
+| Mirroring | Optional at all levels |
+
+The Harvard image service supports all rotation parameters and is known as a Level 2 implementation.
+
+
+
+
diff --git a/dcmi-workshop/part2/image-api/size.md b/dcmi-workshop/part2/image-api/size.md
new file mode 100644
index 00000000..e482b6a4
--- /dev/null
+++ b/dcmi-workshop/part2/image-api/size.md
@@ -0,0 +1,54 @@
+## Size
+
+
+
+
+The size portion of the URL governs the size of the output image, possibly scaling the selected region. A full list of options is available in the [Image API specification](https://iiif.io/api/image/2.1/#size). Some of the more common ones:
+
+| Form | Description |
+| -- | -- |
+| full | The full image (this is renamed `max` in 3.0) |
+| w, | Only the width is specified and the server works out the correct height to keep the aspect ratio. Example `500,`|
+| ,h | The alternative only specifying the height. Example `,250`|
+| w,h | Explicit width and height. Note this will distort the image. Example: `250,250` |
+| !w,h | Fit in a box width by height but don't distort the image. Example `!250,250` |
+
+See the examples below:
+
+
+
+
diff --git a/iiif-5-day-workshop/images/4_Quadrants.jpg b/dcmi-workshop/part2/image-servers/4_Quadrants.jpg
similarity index 100%
rename from iiif-5-day-workshop/images/4_Quadrants.jpg
rename to dcmi-workshop/part2/image-servers/4_Quadrants.jpg
diff --git a/dcmi-workshop/part2/image-servers/README.md b/dcmi-workshop/part2/image-servers/README.md
new file mode 100644
index 00000000..c9255be0
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/README.md
@@ -0,0 +1,75 @@
+# Getting started with the Image API
+
+There are many ways to make a IIIF Image available which is both a big advantage but also can add complexity. The decision on which option to go for depends on your institution or personal use case. IIIF can be used by single researchers up to national institutions, and there are setups to handle ethis range of case. Below we list some options noting benefits and considerations.
+
+In a 2018 survey we asked what people were using to provide the Image API and these were the results:
+
+
+
+Respondents were mostly from within the IIIF community and there is a weighting to larger institutions. Most respondents had installed one of the Image Servers but others are using hosted and DAMS solutions.
+
+For the purposes of this workshop we will ask you to use the Internet Archive hosted option. You are welcome to follow the guides on installing Cantaloupe and a level0 image server but these are optional extensions.
+
+## Vendor / DAMS
+
+For an institution, the best solution is probably to use existing software that you already have. If you have a DAMS system or repository this may already implement IIIF and if it doesn't the best solution maybe to talk them into implementing. This reduces the duplication of images between your image management system and your IIIF Image Server. This solution may not be suitable to individual researchers or institutions who don't have these kind of systems.
+
+ * Where are your images stored now?
+ * Examples of IIIF supporting Vendors include:
+ * [OCLC ContentDM](https://www.oclc.org/en/contentdm/iiif.html),
+ * [GallerySystems](https://www.gallerysystems.com/iiif-what-is-it-and-what-does-it-do/),
+ * [NetX](https://www.netx.net/blog/iiif_museums_dams),
+ * [ResourceSpace](https://www.resourcespace.com/knowledge-base/api/iiif)
+ * [Rosetta](https://knowledge.exlibrisgroup.com/Rosetta/Training/What%27s_New_Videos/Rosetta_5-3/IIIF_Image_Viewing)
+ * [Veridian](https://veridiansoftware.com/news/veridian-joins-iiif-community/) and many others.
+
+We have a [page on the IIIF website that lists](https://iiif.io/get-started/vendors/) some of the major digital asset management (DAMs), collections management, and repository tools that support IIIF.
+
+## Hosted
+
+Hosting allows you to upload your images to a service that provides a IIIF Image API. These hosting providers run the IIIF Image Servers mentioned below for you and provide interfaces for uploading and managing images. These are good solutions for individual researchers who want to make a few images available and for the commercial providers they also provide a good solution for mid to large sized institutions. For the commercial providers there are costs involved and you will have to weigh up the costs against the costs of running and supporting the Open Source Image servers in the next section.
+
+ * Free hosting from the Internet Archive - [Guide](https://training.iiif.io/iiif-online-workshop/day-two/image-servers/iiif-hosting-ia.html)
+
+ * Commercial hosting:
+ * [Klokan iiifhosting.com](https://www.iiifhosting.com/) - ([Guide from another workshop](https://training.iiif.io/iiif-1-day-workshop/image-api/iiif-hosting-saas.html)) if its of interest.
+ * [Digirati DCLS platform](https://dlcs.info/)
+
+## Run a IIIF Image server
+
+There are many Open Source IIIF Image servers available. These are free to use but require infrastructure and staff time to setup and maintain. Four popular options are listed below. They can be setup to serve a few images or many millions of images. For the individual researcher or small institution the overhead with installing and maintaining these services may be too much.
+
+ * https://github.com/IIIF/awesome-iiif#image-servers
+ * Main ones:
+ * [IIP Image](https://iipimage.sourceforge.io/) - written in C
+ * [Loris](https://github.com/loris-imageserver/loris) - python
+ * [Cantaloupe](https://cantaloupe-project.github.io/) - Java
+ * [Serverless IIIF](https://github.com/samvera/serverless-iiif) - an AWS serverless application in JavaScript
+
+## Static tiles
+
+The final option is to use a feature of the Image API where all of the derivative images can be extracted and made available without an image server. There are many ways to get access to free or cheap web hosting. This solution has many steps but can provide a very low cost option for providing access to IIIF Images for researchers and smaller institutions. One thing it doesn't support is custom regions so for example the following level0 image:
+
+ [https://glenrobson.github.io/iiif/welsh_book/page002/full/212,/0/default.jpg](https://glenrobson.github.io/iiif/welsh_book/page002/full/212,/0/default.jpg)
+
+ ![Level0 image example](https://glenrobson.github.io/iiif/welsh_book/page002/full/212,/0/default.jpg)
+
+Only has a limited number of sizes and regions defined. Enough to work in a zoomable viewer but it won't work with things like the UCD Image Cropper which can select any region.
+
+
+
+You can see the [generated files on github](https://github.com/glenrobson/glenrobson.github.io/tree/master/iiif/welsh_book/page002/). There is also a blog on how to use IIIF level 0 images. [IIIF from Scratch](https://glenrobson.github.io/iiif/2018/01/12/iiif-from-scrtach.html).
+
+You can optionally follow this guide to create your own level 0 images. [Workshop Guide](https://training.iiif.io/iiif-online-workshop/day-two/image-servers/level0-workbench.html)
+
+Once you have created your level 0 images you can make them available with the following example services:
+
+Free:
+ * [GitHub Pages](https://pages.github.com/) - ([Workbench Guide](https://training.iiif.io/iiif-online-workshop/day-two/image-servers/level0-workbench.html))
+
+Paid for:
+ * [Amazon s3 web hosting](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)
+
+For an idea of costs, the Amazon S3 costs are available [here](https://aws.amazon.com/s3/pricing/). For a ball park figure 2,000 images would cost around a $1 a month.
+
+Once the images are generated there is little maintenance required and the solution scales to millions of users.
diff --git a/dcmi-workshop/part2/image-servers/bl_images.md b/dcmi-workshop/part2/image-servers/bl_images.md
new file mode 100644
index 00000000..d696a1e3
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/bl_images.md
@@ -0,0 +1,73 @@
+
+
+# Finding British Library IIIF Images
+
+For this exercise we are going to find a couple of British Library IIIF Images that we can use tomorrow in the IIIF Presentation API session. This exercise will show you how to find a single IIIF image within a digital object and then how you can manipulate this image so you can use it to tweet or embed in a blog or publication.
+
+## Stage 1: Find a BL digital item
+
+Using the [BL collection guide](https://www.bl.uk/collection-guides/iiif) find a digital object and open it up in the Viewer. Once you have found your item it should look as follows:
+
+![BL digital item in the UV](imgs/uv_bl.png)
+
+Now we have found the item we want to get the 'IIIF Manifest' for this item. We will go into more details about IIIF Manifests on Wednesday but a Manifest is a JSON document that contains links to all of the images and metadata that goes into a digital item. We are going to find the link to the IIIF Manifest and past this into a tool below which will allow us to find the IIIF Image URL to the image we want.
+
+To find the manifest click the 'share' link at the bottom of the viewer and then right click on the IIIF icon and select 'Copy link' or 'Copy Link Address' in Chrome:
+
+***Note:*** some collections like the Google printed books collection do not currently allow sharing so the share button will not be present.
+
+![BL digital item with manifest link open](imgs/uv_bl_share.png)
+
+
+You can see the copy link from Firefox in this image:
+
+![Copy link for IIIF Manifest](imgs/uv_bl_copy_link.png)
+
+The copied link should look something like:
+
+```
+https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100104060212.0x000001/manifest.json?manifest=https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100104060212.0x000001/manifest.json
+```
+
+You can see the link to the manifest is created twice in this link so it can be cleaned up by removing everything after the `?` to leave:
+
+```
+https://api.bl.uk/metadata/iiif/ark:/81055/vdc_100104060212.0x000001/manifest.json
+```
+
+Some IIIF viewers and tools will be able to cope with the manifest being repeated but if possible its best to remove everything after the `?`.
+
+## Stage 2: Find IIIF Image URL
+
+Now we have got our Manifest we need to find the URL (or link) for image we want. We could do this by looking through the JSON and we can have a look at doing this after the Presentation API session on Wednesday but for now I have created the following tool that will take a link to a manifest and allow you to choose the image you want. Paste your manifest into the box below and click Load.
+
+
+
+
+
+
+
+
+
+
+## Stage 3: Experiment
+
+Now you have a IIIF Image URL you can plug it into the following IIIF Tools:
+
+Check it works with a zooming viewer like OpenSeaDragon:
+
+ [https://iiif.gdmrdigital.com/openseadragon/index.html?image=https://iiif.qdl.qa/iiif/images/81055/vdc_100000000884.0x0001e3/IOR_L_PS_20_C260_0049.jp2/info.json](https://iiif.gdmrdigital.com/openseadragon/index.html?image=https://iiif.qdl.qa/iiif/images/81055/vdc_100000000884.0x0001e3/IOR_L_PS_20_C260_0049.jp2/info.json)
+
+![Open seadragon](imgs/bl_osd-qa.png)
+
+Pull out regions using the UCD selector tool:
+
+ [https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://iiif.qdl.qa/iiif/images/81055/vdc_100000000884.0x0001e3/IOR_L_PS_20_C260_0049.jp2](https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://iiif.qdl.qa/iiif/images/81055/vdc_100000000884.0x0001e3/IOR_L_PS_20_C260_0049.jp2)
+
+![TCD Image cropper](imgs/bl_image_cropping-qa.png)
diff --git a/dcmi-workshop/part2/image-servers/cantaloupe b/dcmi-workshop/part2/image-servers/cantaloupe
new file mode 120000
index 00000000..6ec91717
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/cantaloupe
@@ -0,0 +1 @@
+../../../iiif-online-workshop/day-two/image-servers/cantaloupe
\ No newline at end of file
diff --git a/dcmi-workshop/part2/image-servers/chrome b/dcmi-workshop/part2/image-servers/chrome
new file mode 120000
index 00000000..c5edf6e8
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/chrome
@@ -0,0 +1 @@
+../../../iiif-online-workshop/day-two/image-servers/chrome
\ No newline at end of file
diff --git a/dcmi-workshop/part2/image-servers/github b/dcmi-workshop/part2/image-servers/github
new file mode 120000
index 00000000..8ad95350
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/github
@@ -0,0 +1 @@
+../../../iiif-online-workshop/day-two/image-servers/github
\ No newline at end of file
diff --git a/dcmi-workshop/part2/image-servers/ia b/dcmi-workshop/part2/image-servers/ia
new file mode 120000
index 00000000..27398ef7
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/ia
@@ -0,0 +1 @@
+../../../iiif-online-workshop/day-two/image-servers/ia
\ No newline at end of file
diff --git a/dcmi-workshop/part2/image-servers/iiif-hosting-ia.md b/dcmi-workshop/part2/image-servers/iiif-hosting-ia.md
new file mode 100644
index 00000000..4862a839
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/iiif-hosting-ia.md
@@ -0,0 +1,145 @@
+# Using the Internet Archive
+
+The Internet Archive allows you to upload images and then provides a IIIF Image API service. Helpfully they also have a function to delete your images after 30 days if you are using this as a test. The overall process is as follows:
+
+__Note__: some people have had some issues getting their images to show when uploading to the Internet Archive. To avoid these issues:
+
+ * Ensure you only upload 1 image ( if you want multiple images you will need to create multiple items)
+ * Ensure the collection is 'Community Image' collection. The `Community Texts` collection seems to break the image viewing currently
+ * Some of the IIIF images appear very small even if you uploaded a large image. See the note below on adding the filename to the URL to get the original image available as IIIF.
+
+1. Register for a user account at [archive.org](https://archive.org)
+2. Upload your image
+ * __Ensure you only upload a single image__
+ * __Ensure you select the 'Community Image' collection__
+3. On the details page get the identifier for the image. For example if the details page link is:
+
+ https://archive.org/details/img-8664_202009
+
+ the identifier would be `img-8664_202009`
+4. Use the Internet Archive image service with this identifier:
+
+ https://iiif.archivelab.org/iiif/img-8664_202009/info.json
+
+5. You should then be able to use this image:
+
+ Create an image link:
+
+ [https://iiif.archivelab.org/iiif/img-8664_202009/full/512,/0/default.jpg](https://iiif.archivelab.org/iiif/img-8664_202009/full/512,/0/default.jpg)
+
+ Check it works with a zooming viewer like OpenSeaDragon:
+
+ [https://iiif.gdmrdigital.com/openseadragon/index.html?image=https://iiif.archivelab.org/iiif/img-8664_202009/info.json](https://iiif.gdmrdigital.com/openseadragon/index.html?image=https://iiif.archivelab.org/iiif/img-8664_202009/info.json)
+
+ Pull out regions using the UCD selector tool:
+
+ [https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://iiif.archivelab.org/iiif/img-8664_202009](https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://iiif.archivelab.org/iiif/img-8664_202009)
+
+ **Note:** the UCD selector tool requires the Image link without the `info.json` at the end of the URL.
+
+### Small images workaround
+
+Some images are appearing small, to get round this issue you will need to add the filename to the URL. In the following example:
+
+https://archive.org/details/img-8664_202009
+
+you would normally create the following URL:
+
+https://iiif.archivelab.org/iiif/img-8664_202009/info.json
+
+but to make the image larger you need to add the filename (`$IMG_8664.jpg`) so it looks like:
+
+https://iiif.archivelab.org/iiif/img-8664_202009$IMG_8664.jpg/info.json
+
+To find the image navigate to the details page:
+
+https://archive.org/details/img-8664_202009
+
+and click on the main image. This will show the image full screen and if you look in the address bar you will be able to see the filename. The reason this happens is due to a bug in the Internet Archive IIIF implementation and I have submitted a [Bug](https://github.com/ArchiveLabs/iiif.archivelab.org/issues/44) and a fix on their github.
+
+## Step by step guide
+
+A step by step guide with screen shots for the above steps is below:
+
+1. Register for a user account at [archive.org](https://archive.org)
+
+ Click signup or login if you already have an account:
+
+
+
+ Then create your user:
+
+
+
+ They will then ask you to verify your email address:
+
+
+
+ You will then see an email like the following:
+
+
+
+ Click on the link on the email and you will get the following screen:
+
+
+
+2. Upload your image
+
+ Select upload on the Archive Welcome screen:
+
+
+
+ You will then see the following screen. Select the green Upload Files button:
+
+
+
+ Then click on the 'choose files to upload' button and select the image to upload:
+
+
+
+ Add metadata. The Title, URL, Description tags are mandatory. I left it in the Community Image collection. Usefully you can also say if its a test item which can be deleted after 30 days.
+
+ __Update__: ensure collection is `Community Image Collection` otherwise the image won't work as IIIF.
+
+
+
+ Then click 'Upload and Create Your Item'. This took at least 5 minutes and after the bar has completed you have to wait longer presumably so it can setup the derivative images.
+
+
+
+ If all has gone well you should see the item page:
+
+
+
+3. On the details page get the identifier for the image. For example if the details page link is:
+
+ https://archive.org/details/img-8664_202009
+
+ the identifier would be `img-8664_202009`
+
+
+
+4. Use the Internet Archive image service with this identifier:
+
+ [https://iiif.archivelab.org/iiif/img-8664_202009/full/full/0/default.jpg](https://iiif.archivelab.org/iiif/img-8664_202009/full/full/0/default.jpg)
+
+
+
+5. You should then be able to use this image:
+
+ Create an image link:
+
+ [https://iiif.archivelab.org/iiif/img-8664_202009/full/512,/0/default.jpg](https://iiif.archivelab.org/iiif/img-8664_202009/full/512,/0/default.jpg)
+
+ Check it works with a zooming viewer like OpenSeaDragon:
+
+ [https://iiif.gdmrdigital.com/openseadragon/index.html?image=https://iiif.archivelab.org/iiif/img-8664_202009/info.json](https://iiif.gdmrdigital.com/openseadragon/index.html?image=https://iiif.archivelab.org/iiif/img-8664_202009/info.json)
+
+
+
+ Pull out regions using the UCD selector tool:
+
+ [https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://iiif.archivelab.org/iiif/img-8664_202009](https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://iiif.archivelab.org/iiif/img-8664_202009)
+
+
+
diff --git a/dcmi-workshop/part2/image-servers/images_in_manifest.md b/dcmi-workshop/part2/image-servers/images_in_manifest.md
new file mode 100644
index 00000000..c6f8b08d
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/images_in_manifest.md
@@ -0,0 +1,42 @@
+
+
+# Finding images in Manifests
+
+Some IIIF tools work with IIIF Image URLs rather than manifests. This is less common than it used to be but for tools like Omeka and basic region image generators getting the URL for the image you want is useful.
+
+Once you have a Manifest URL you can use the tool below to extract the Image URL. We could do this by looking through the Manifest JSON but this requires a deeper dive in to the Presentation API.
+
+## Stage 1: Find IIIF Image URL
+
+If you paste your Manifest URL in the box below and click Load it should show all of the images which are part of your Manifest. You can use the filter to search for a page label and then click `Copy Image URL` to copy the link to the IIIF Image.
+
+
+
+
+
+
+
+
+
+
+## Stage 2: Experiment
+
+Now you have a IIIF Image URL you can plug it into the following IIIF Tools:
+
+Check it works with a zooming viewer like OpenSeaDragon:
+
+ [https://iiif.gdmrdigital.com/openseadragon/index.html?image=https://api.bl.uk/image/iiif/ark:/81055/vdc_100104087143.0x000011/info.json](https://iiif.gdmrdigital.com/openseadragon/index.html?image=https://api.bl.uk/image/iiif/ark:/81055/vdc_100104087143.0x000011/info.json)
+
+![Open seadragon](imgs/bl_osd.png)
+
+Pull out regions using the UCD selector tool:
+
+ [https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://api.bl.uk/image/iiif/ark:/81055/vdc_100104087143.0x000011](https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://api.bl.uk/image/iiif/ark:/81055/vdc_100104087143.0x000011)
+
+![TCD Image cropper](imgs/bl_image_cropping.png)
diff --git a/dcmi-workshop/part2/image-servers/imgs b/dcmi-workshop/part2/image-servers/imgs
new file mode 120000
index 00000000..f88047d4
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/imgs
@@ -0,0 +1 @@
+../../../iiif-online-workshop/day-two/image-servers/imgs
\ No newline at end of file
diff --git a/dcmi-workshop/part2/image-servers/level0-github-hosting.md b/dcmi-workshop/part2/image-servers/level0-github-hosting.md
new file mode 100644
index 00000000..a8089ed3
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/level0-github-hosting.md
@@ -0,0 +1,101 @@
+# Level 0 hosting with GitHub Pages
+
+Once you have created your level 0 image we need to make it available to the public.
+
+One way to get access to free web hosting is to use GitHub pages. GitHub is a software and web application created to manage projects with multiple developers and manages the source code to ensure people's changes don't get overwritten. One feature of Github is GitHub Pages which allows you to create a Web page about your project. We are going to use this functionality to host a IIIF Image. This is a relatively convoluted process but once setup it will give you a free way to publish IIIF Images.
+
+## Step 1: Sign up to GitHub
+Created an account by going to [Github](https://github.com/) and clicking signup.
+
+ * Create Username, password, email
+
+![image](github/level0-github-signup.png)
+
+ * Complete verify puzzle
+
+![image](github/level0-verifygithub.png)
+
+ * Choose free option
+
+![image](github/level0-github-account-type.png)
+
+ * Customise experience (skip this step)
+
+![image](github/level0-github-customise.png)
+
+ * Verify email address
+
+![image](github/level0-github-email-verify.png)
+
+ * Success!!
+
+![image](github/level0-github-success.png)
+
+## Step 2: Get Read/write access to repo
+ * Add username to: https://github.com/dhsi-iiif/dhsi-iiif.github.io/issues/1
+ * You will get an invitation through the email you registered with in GitHub
+
+![image](github/level0-github-invitation.png)
+
+ * Accept invitation
+
+![image](github/level0-github-invitation-accept.png)
+
+## Step 3: Check out repo
+The GitHub desktop application manages the upload of your data to GitHub. It is possible to do this through the Git command line but for this part of the workshop it is suggested to use the Desktop version.
+
+ * Download and install Github desktop https://desktop.github.com/
+ * Login
+ * Click login through website
+
+![image](github/level0-github-desktop-login.png)
+
+ * Configure name and email
+
+![image](github/level0-github-desktop-nameemail.png)
+
+ * Download the GitHub dhsi 2019 repository to your local machine in the dhsi2019/dhsi-iiif.github.io. GitHub calls download a repository 'cloning'. So select the dhsi-iiif.github.io repository and click clone.
+
+![image](github/level0-github-clone.png)
+
+ * Selecting where to download the repo to.
+
+![image](github/level0-github-clone-2.png)
+
+ * Click open in Finder or similar for Windows
+
+![image](github/level0-github-desktop-open.png)
+
+ * Make a directory inside the 2019 directory for your examples:
+
+ ```
+ dhsi-iiif.github.io/2019/
+```
+## Step 4: Upload level 0 image
+Now move the directory you created in the previous step (Step 3 from [static-tiles](static-tiles.md)) into the following:
+
+ ```
+ dhsi-iiif.github.io/2019/
+ ```
+
+Now go to Github Desktop
+
+![image](github/level0-github-commit.png)
+
+ * Add a commit message on the left hand side. Fill in the Summary and a short description.
+ * Click commit to master
+ * You now need to send your local changes to GitHub. To do this click the Push Origin button. Note if others in the class are also on this step they may have made changes to GitHub and the GitHub desktop application will not let you send your changes until you have the latest copy from GitHub. If this is the case it may ask you to Pull from origin. If this is the case Pull the latest changes before pushing your changes.
+
+![image](github/level0-github-pushpull.png)
+
+ * In your local copy of `2019///info.json`, open it up in an editor and edit the `@id` with: `https://dhsi-iiif.github.io/2019//`
+ * As you did earlier add a Commit summary and description then commit and Push changes
+ * Wait 2mins
+ * Go to: `https://dhsi-iiif.github.io/2019///info.json`
+ * and you should see your info.json!
+
+## Step 5: View image:
+ * Leaflet: http://mejackreed.github.io/Leaflet-IIIF/examples/?url=https://dhsi-iiif.github.io/2019/glenrobson/page001/info.json
+ * Openseadragon: http://iiif.gdmrdigital.com/openseadragon/index.html?image=https://dhsi-iiif.github.io/2019/glenrobson/page001/info.json
+ * Note not all software works with level 0 images.
+
diff --git a/dcmi-workshop/part2/image-servers/level0-workbench.md b/dcmi-workshop/part2/image-servers/level0-workbench.md
new file mode 100644
index 00000000..5179b4d2
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/level0-workbench.md
@@ -0,0 +1,148 @@
+# Training Workbench
+
+This option takes advantage of a Website called [GitHub](https://github.com/) which provides among other things a small amount of free Web Space called [GitHub Pages](https://pages.github.com/). This process is similar to the one mentioned in the [Static tiles](static-tiles.html) task but instead of having to install and run the software locally this is provided as a cloud service for the training.
+
+As mentioned in the previous chapter, the IIIF Image API defines the following structure:
+
+`http://host:port/identifier/region/size/rotation/quality.format`
+
+and it is possible to generate images that fit this URL structure and conform to the IIIF Image API using a tile generator. This will generate the minimum required amount of files to implement the IIIF Image API. It does have some limitations, the main one being it is not possible to request images of a size that haven't been pre-generated. This type of pre-generated IIIF Image is known as a `Level 0` implementation.
+
+The workbench will generate these tiles and upload them to your own GitHub account and has a number of advantages over the Internet Archive option:
+
+ * Images are owned by you on GitHub
+ * Support for IIIF version 3
+ * Faster access to images
+
+The main disadvantage of this route is the one mentioned above in that it uses static images so you can not request custom sizes or regions, only the ones that have been pre-generated. This option will still allow you to use these images in Manifests and will perform the same for most annotation use cases.
+
+This solutions is suitable for those that want to use IIIF images but don't have the organisational support or funding to run an image server. The main stages for this process are as follows:
+
+1. Register for a GitHub account
+2. Login to the Workbench
+3. Create your project
+4. Upload your images
+5. View your image
+
+These steps are detailed below with screen shots.
+
+## Stage 1: Register for a GitHub account
+
+Create an account by going to [Github](https://github.com/) and clicking signup.
+
+ * Create Username, password, email
+
+![image](github/level0-github-signup.png)
+
+ * Complete verify puzzle
+
+![image](github/level0-verifygithub.png)
+
+ * Choose free option
+
+![image](github/level0-github-account-type.png)
+
+ * Customise experience (skip this step)
+
+![image](github/level0-github-customise.png)
+
+ * Verify email address
+
+![image](github/level0-github-email-verify.png)
+
+ * Success!!
+
+![image](github/level0-github-success.png)
+
+## Stage 2: Login to Workbench
+In this stage we will go to the workbench and login using the GitHub account we just created. By using the GitHub account to login it allows the Workbench to create a Repository where it can store your uploaded images. If you ever lose access to the Workbench software the files will be safe and accessible on your GitHub account.
+
+Navigate to the Workbench: [https://workbench.gdmrdigital.com/](https://workbench.gdmrdigital.com/)
+
+You should see the following screen:
+
+![image](workbench/login.png)
+
+Click the Login with GitHub button.
+
+This will either ask you to login as shown in the following screen shot or if you are already logged in take you straight to the permissions page.
+
+![image](workbench/github_login.png)
+
+Next you will see the following permissions page. This is asking you if you are happy for the Workbench to write to your GitHub account. Click Authorize.
+
+![image](workbench/authorize.png)
+
+You should now be taken to the projects page:
+
+![image](workbench/no_project.png)
+
+You have now successfully logged into the Workbench using your GitHub username and password. Once you have been through the Authorisation step once your browser and GitHub will remember that you have given permission and it should log you straight in. The next stage is to create your project.
+
+## Stage 3. Create your project
+
+A project is a place to store the images and manifests you are working on. You can have multiple projects for every GitHub account but note each project is limited to 1GB in size. In the GitHub terminology a project in this case is equivalent to a GitHub Repository.
+
+To start click the Create Project button:
+
+![image](workbench/no_project.png)
+
+and enter a name for your project. Note the name can only contain letters, numbers or the following symbols `-` and `_` so don't add any spaces.
+
+![image](workbench/create_project.png)
+
+Click create. This will take a few seconds but will setup an empty project on GitHub and then forward you onto the images part of the Workbench.
+
+![image](workbench/no_images.png)
+
+You are now ready to upload your images.
+
+## Stage 4. Upload your images
+
+This stage will allow you to upload an image from your computer to the workbench which will convert it into IIIF tiles and store them on GitHub. To start click the upload button and you will see the following screen:
+
+![image](workbench/upload_image1.png)
+
+Click the Browse button and select an image on your computer. Once you have an image a `Name` box will appear which allows you to choose the name for your IIIF image. This will appear in the ID of the IIIF image so can't contain spaces and other characters.
+
+Next select the IIIF Image version either version 2 or 3. For this guides please select version 2 so they can be used in a version 2 manifest.
+
+![image](workbench/upload_image2.png)
+
+Then click upload. This will upload the image to Github, create the Image tiles and upload the files to GitHub. This can take a couple of minutes and you will see the following screen while the image is processing:
+
+![image](workbench/upload_image3.png)
+
+Once it has finished processing you should see a thumbnail of your image.
+
+![image](workbench/upload_image4.png)
+
+You have now uploaded an image and the next stage is to see if it has worked.
+
+## Stage 5. Viewing your images
+
+Underneath each of your images you should see two links. One to the `info.json` which we will use later and one to the full image. If you click the Full image link:
+
+![image](workbench/full_image.png)
+
+This will open the largest size of your image and the URL will look something like:
+
+https://iiif-test.github.io/test2/images/IMG_8711/full/full/0/default.jpg
+
+And note the end of the URL is a IIIF url asking for the `full` region, `full` size, `0` degrees rotation, `default` quality and a `jpg` file format.
+
+To view this in a zoomable viewer we need to copy the URL to the `info.json`. If you right click on the `info.json` link and select copy link. This should copy a URL similar to the following to your clipboard:
+
+https://iiif-test.github.io/test2/images/IMG_8711/info.json
+
+This is called a link to your Info.json and you should be able to open your images in the following two zoomable viewers by appending the link to your info.json to the end:
+
+ * [Leaflet: http://mejackreed.github.io/Leaflet-IIIF/examples/?url=](http://mejackreed.github.io/Leaflet-IIIF/examples/?url=https://iiif-test.github.io/test2/images/IMG_8711/info.json)
+ * [Openseadragon: http://iiif.gdmrdigital.com/openseadragon/index.html?image=](http://iiif.gdmrdigital.com/openseadragon/index.html?image=https://iiif-test.github.io/test2/images/IMG_8711/info.json)
+ * Note not all software works with level 0 images.
+
+If you want to see the tiles that have been generated click the GitHub symbol on the top left:
+
+![image](workbench/github_link.png)
+
+this will open GitHub and show the files that it has generated.
diff --git a/dcmi-workshop/part2/image-servers/static-tiles.md b/dcmi-workshop/part2/image-servers/static-tiles.md
new file mode 100644
index 00000000..3814cd6c
--- /dev/null
+++ b/dcmi-workshop/part2/image-servers/static-tiles.md
@@ -0,0 +1,113 @@
+# Generating static tiles
+
+As mentioned in the previous chapter, the IIIF Image API defines the following structure:
+
+`http://host:port/identifier/region/size/rotation/quality.format`
+
+It is possible to generate images that fit this URL structure and conform to the IIIF Image API using a tile generator. This will generate the minimum required amount of files to implement the IIIF Image API. It does have some limitations, the main one being it is not possible to request images of a size that haven't been pre-generated. This type of pre-generated IIIF Image is known as a `Level 0` implementation.
+
+To generate these IIIF images we are going to use a IIIF tilling program which is available on Github. This workshop is useful for those that are looking for a cheap method of making a small amount of images available although there are instances where this method can be scaled to support hundreds of thousands of images. See this article for a method of making level 0 images scalable: [The Code4Lib Journal – Scaling IIIF Image Tiling in the Cloud](https://journal.code4lib.org/articles/14933).
+
+# Prerequisites
+
+### Java
+
+In this workshop we will install and run a IIIF Image server and for this you will need Java 11 installed.
+
+ - [Downloading Java 11](https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html)
+
+To verify you have the correct package installed, you can run the following command from a terminal or command prompt:
+
+```sh
+$ java -version
+# java version "1.11.0_102"
+```
+
+You should see version `1.11.x`. For more information on the install options see:
+
+ - [Java install options](https://java.com/en/download/help/download_options.xml)
+
+## Step 1: Download the IIIF Tiler
+
+ * Navigate to the release page: https://github.com/glenrobson/iiif-tiler/releases/tag/0.9.1
+ * Click the `assets` drop down
+ * Download [iiif-tiler.jar](https://github.com/glenrobson/iiif-tiler/releases/download/0.9.1/iiif-tiler.jar)
+ * Store this jar file in your `~/iiif-workshop` directory
+
+## Step 2: Prepare your image files
+ * Move the image files you want to work with into your `~/iiif-workshop` directory
+
+## Step 3: Generate the IIIF Image tiles
+
+Now either:
+ * Double click on the `iiif-tiler.jar` file in Finder or Windows.
+
+or
+
+ * from the command line run:
+
+```sh
+cd ~/iiif-workshop
+java -jar iiif-tiler.jar
+```
+ * This will generate the IIIF image tiles in a `iiif` directory for every image it finds in the same directory as the iiif-tiler.jar.
+
+### Common issues:
+
+If you see the following error:
+
+```
+Exception in thread "main" java.lang.IllegalArgumentException: Failed to find combination under 100 files
+```
+
+Try running the following command:
+
+```
+java -jar iiif-tiler.jar image_filename 5
+```
+
+Where `image_filename` is the filename of your image e.g. `image.jpg`
+
+## Step 4: Point the Chrome webserver to your `iiif-workshop` directory
+We will cover the Chrome WebServer in more detail in the Presentation API session but this plugin makes your laptop work like an image server.
+
+ * Open Chrome
+ * Click the Apps button on the top left
+
+![image](chrome/chrome_apps.png)
+
+ * Click on the `Web Server` (if this is not listed ensure you have installed the [prerequisites](../prerequisites.md)).
+ * You should see the following:
+
+![image](chrome/chrome_web_server.png)
+
+ * Click `choose folder` and select your `iiif-workshop` folder
+ * Where it says `Enter port` change it to 8887
+ * Click `Show Advanced Settings`
+ * Ensure `Set CORS headers` has a tick next to it.
+
+## Step 5: Serve your IIIF Image through a http server
+
+ * Open a browser and navigate to [http://127.0.0.1:8887/](http://127.0.0.1:8887/)
+ * You should see a `iiif` directory and if you click that you should see your image file.
+ * Click this directory then click on the `info.json`.
+ * If your image was called `image.jpg` the URL should be.
+
+`http://127.0.0.1:8887/iiif/image/info.json`
+
+ * If you see the info.json you are now ready to view your image in a IIIF Image viewer.
+
+## Step 6: Show your image in a IIIF Viewer
+
+You can now load your image to a IIIF image viewer. The main image viewer is OpenseaDragon. This takes the URL of the info.json. So if your info.json URL is:
+
+```http://127.0.0.1:8887/iiif/image/info.json```
+
+Open it with OpenseaDragon:
+
+[http://iiif.gdmrdigital.com/openseadragon/index.html?image=http://127.0.0.1:8887/iiif/image/info.json](http://iiif.gdmrdigital.com/openseadragon/index.html?image=http://127.0.0.1:8887/iiif/image/info.json)
+
+## Step 7: Hosting your image publicly
+
+You now have a working level 0 implementation. As you are using the Chrome plugin the images are only accessible on your machine. You can't share your images with other people. To be able to share your images you need to copy them to a public Web Server. As mentioned there are paid for services but you can also access free Web Hosting through GitHub which we will do next.
+
diff --git a/dcmi-workshop/part2/imgs b/dcmi-workshop/part2/imgs
new file mode 120000
index 00000000..b0c40c45
--- /dev/null
+++ b/dcmi-workshop/part2/imgs
@@ -0,0 +1 @@
+../../iiif-online-workshop/day-two/imgs
\ No newline at end of file
diff --git a/dcmi-workshop/part2/question.md b/dcmi-workshop/part2/question.md
new file mode 100644
index 00000000..32f22627
--- /dev/null
+++ b/dcmi-workshop/part2/question.md
@@ -0,0 +1,18 @@
+# Question
+
+
+Given this image:
+
+ [https://iiif.lib.ncsu.edu/iiif/mc00198-008-ff0051-000-001_0001/full/512,/0/default.jpg](https://iiif.lib.ncsu.edu/iiif/mc00198-008-ff0051-000-001_0001/full/512,/0/default.jpg)
+
+ ![Example image](https://iiif.lib.ncsu.edu/iiif/mc00198-008-ff0051-000-001_0001/full/512,/0/default.jpg)
+
+How could we construct a URL that:
+
+ * Shows the full image
+ * is 512px wide
+ * is upside down
+ * gray scale
+ * has a format of png
+
+
diff --git a/dcmi-workshop/part2/scaling.md b/dcmi-workshop/part2/scaling.md
new file mode 100644
index 00000000..82365750
--- /dev/null
+++ b/dcmi-workshop/part2/scaling.md
@@ -0,0 +1,17 @@
+# Image Server Scalability
+
+
+
+Horizontal scaling:
+
+![Diagram showing Horizontal Scaling](imgs/horizontal.jpg)
+
+Content Delivery Network
+
+![CDN](imgs/cdn.jpg)
+
+Further reading:
+ * [Getty Common Image Service](https://drive.google.com/file/d/1pB2eqlSlC4Ua5ZrEEEdJTbofl0wdDApg/view?usp%3Dsharing) - a useful comparison of Image API Servers
+ * [IIIF by the Numbers](https://journal.code4lib.org/articles/15217) - the UCLA image API setup and experiments
+ * [Evaluating HTJ2K as a Drop-In Replacement for JPEG2000 with IIIF](https://journal.code4lib.org/articles/17596)
+
diff --git a/dcmi-workshop/part2/uses.md b/dcmi-workshop/part2/uses.md
new file mode 100644
index 00000000..c36a76fb
--- /dev/null
+++ b/dcmi-workshop/part2/uses.md
@@ -0,0 +1,29 @@
+## Uses of the Image API
+
+The Image URL can be used in the same way as a normal image and has lots of practical uses.
+
+Embedding on web pages:
+
+![example iiif image](https://ids.lib.harvard.edu/ids/iiif/25286607/full/,250/0/default.jpg)
+
+A home teaching background for a menu:
+
+![menu example](./imgs/menu.jpg)
+
+[Smithsonian Record](https://collections.si.edu/search/detail/edanmdm:chndm_1980-32-1810-11?q=menu&iiif.enabled=true&record=116&hlterm=menu)
+
+## Zoom Viewer:
+The most common use case is to show the image in a viewer like OpenSeaDragon:
+
+
+
+
+## National Museum of Sweden
+
+Some places embed a IIIF Image into their content management system and it means they don't need to use the Presentation API. For example:
+
+[Magistrate Heurlin's Residence Truveholm in Västergötland](http://emp-web-84.zetcom.ch/eMP/eMuseumPlus?service=ExternalInterface&module=collection&objectId=26240&viewType=detailView)
+
+## Geo-referencing:
+
+The [georefrencer.com](https://www.georeferencer.com/) tool is another example which works just with the Image API.
diff --git a/dcmi-workshop/part2/viewer.html b/dcmi-workshop/part2/viewer.html
new file mode 100644
index 00000000..7fe5047b
--- /dev/null
+++ b/dcmi-workshop/part2/viewer.html
@@ -0,0 +1,29 @@
+
+
+ George and Glen's Teaching Viewer
+
+
+
+
+
+
+
+
+
+
diff --git a/dcmi-workshop/part2/viewer.js b/dcmi-workshop/part2/viewer.js
new file mode 100644
index 00000000..a268bcbc
--- /dev/null
+++ b/dcmi-workshop/part2/viewer.js
@@ -0,0 +1,591 @@
+infoJsons = {};
+
+/*
+ * Config:
+ * {
+ * # identifer for div
+ * div: "div_id",
+ * # IIIF Images to use
+ * images: [
+ * 'http://example.com/image1'
+ * ],
+ * # Optional regions to use
+ * regions: [
+ 'full',
+ 'square'
+ * ],
+ # Optional sizes
+ sizes: [
+ '500,'
+ ],
+ # Optional rotations
+ rotations: [
+ '45',
+ '90'
+ ],
+ # Optional qualities
+ qualities: [
+ 'default',
+ 'gray'
+ ]
+ * }
+ */
+function addViewer(config) {
+ let iiifContent = getURLParameter("iiif-content");
+ if (iiifContent != null) {
+ config.images.unshift(iiifContent);
+ }
+ if (typeof addExtraImages == 'function') {
+ addExtraImages(config);
+ }
+ Promise.all(config.images.map(url => fetch(url + "/info.json").then(resp => cacheInfoJson(config, url, resp)))).then(addParams(config));
+}
+
+async function addParams(config) {
+ console.log('Running addParams')
+ let foundAll = false;
+ let maxCount = 1000;
+ let count = 0;
+ while (!foundAll) {
+ foundAll = true;
+ for (var i = 0; i < config.images.length; i++) {
+ if (config.images[i] in infoJsons) {
+ console.log('Awaiting ' + config.images[i]);
+ await infoJsons[config.images[i]];
+ } else {
+ console.log('Not found: ' + config.images[i]);
+ foundAll = false;
+ }
+ }
+ if (count++ > maxCount) {
+ console.log('Failed to load images');
+ return;
+ }
+ await new Promise(r => setTimeout(r, 1000));
+ }
+ var div = document.getElementById(config.div);
+
+ var ul = createElementStyle('ul', 'demo');
+ div.appendChild(ul)
+
+ addIdentifiers(ul, config);
+ addRegion(ul, config);
+ addSizes(ul, config);
+ addRotation(ul, config);
+ addQuality(ul, config);
+ addFormats(ul, config);
+
+ var linkDiv = document.createElement('div');
+ linkDiv.setAttribute('style', 'margin-bottom:20px');
+ div.appendChild(linkDiv);
+
+ var aLink = createElementStyle('a', 'centre');
+ aLink.id = "link";
+ aLink.setAttribute('target', '_blank');
+ aLink.setAttribute('rel', 'noopener noreferrer');
+ linkDiv.appendChild(aLink);
+
+ var imgDiv = createElementStyle('div', 'iiif-image-api text-center');
+ div.appendChild(imgDiv);
+
+ var img = createElementStyle('img', 'centre');
+ img.id = config.div + '_iiif-image-api-img';
+ imgDiv.appendChild(img);
+ showImage(config.div,null);
+}
+
+function cacheInfoJson(config, identifier, response) {
+ console.log('Running cache info json', identifier);
+ if (!(identifier in infoJsons)) {
+ if (!response.ok) {
+ console.error("Error: (" + response.status + ") " + response.statusText);
+
+ console.log('Removing: ', identifier);
+ config.images.splice(config.images.indexOf(identifier), 1);
+ }
+ response.json().then((data) => {
+ infoJsons[identifier] = data;
+ });
+ }
+}
+
+function addIdentifiers(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('identifier')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Identifier'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','identifier');
+ select.id = 'identifier_' + config.div;
+ select.onchange = function(){ showImage(config.div,'identifier'); };
+ div.appendChild(select);
+
+ addOptions('identifier_' + config.div, config.images, '', '');
+}
+
+function addRegion(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('region')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Region'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','region');
+ select.id = 'region_' + config.div;
+ select.onchange = function(){ showImage(config.div,'region'); };
+ div.appendChild(select);
+
+ var regions = null;
+ if ('regions' in config) {
+ // Use supplied regions
+ regions = config.regions;
+ }
+ updateRegion(config.div, regions);
+}
+
+function clearSelect(select) {
+ var i, L = select.options.length - 1;
+ for(i = L; i >= 0; i--) {
+ select.remove(i);
+ }
+}
+
+function updateRegion(uuid, suppliedRegions) {
+ if (suppliedRegions) {
+ var regions = suppliedRegions;
+ } else {
+ var regions = ['full'];
+ if (supports(getCurrentImage(uuid), 'regionSquare')) {
+ regions.push('square');
+ }
+ var infoJson = infoJsons[getCurrentImage(uuid)];
+ if (infoJson.width > 1500 && infoJson.height > 1500) {
+ centerX = Math.floor(infoJson.width / 2);
+ centerY = Math.floor(infoJson.height / 2);
+ regions.push((centerX - 500) + "," + (centerY - 500) + ",1000,1000");
+ }
+
+ }
+ addOptions('region_' + uuid, regions, '', '');
+}
+function addSizes(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('size')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Size'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','size');
+ select.id = 'size_' + config.div;
+ select.onchange = function(){ showImage(config.div,'size'); };
+ div.appendChild(select);
+
+ if ('sizes' in config) {
+ // Use supplied sizes
+ var sizes = config.sizes;
+ } else {
+ var sizes = ['250,', '500,', '1000,'];
+ if (serviceVersion(getCurrentImage(config.div)) == '2') {
+ sizes.push('full');
+ } else {
+ sizes.push('max');
+ }
+ }
+
+ addOptions('size_' + config.div, sizes, '', '');
+}
+
+function addRotation(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('rotation')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Rotation'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','rotation');
+ select.id = 'rotation_' + config.div;
+ select.onchange = function(){ showImage(config.div,'rotation'); };
+ div.appendChild(select);
+
+ var rotations = null;
+ if ('rotations' in config) {
+ // Use supplied rotations
+ rotations = config.rotations;
+ }
+ updateRotation(config.div, rotations);
+}
+
+function updateRotation(uuid, suppliedRotations) {
+ if (suppliedRotations) {
+ var rotations = suppliedRotations;
+ } else {
+ var rotations = ['0'];
+ if (supports(getCurrentImage(uuid), 'rotationBy90s')) {
+ rotations.push('90');
+ rotations.push('180');
+ rotations.push('270');
+ }
+ if (supports(getCurrentImage(uuid), 'rotationArbitrary')) {
+ rotations.push('45');
+ rotations.push('135');
+ }
+ if (supports(getCurrentImage(uuid), 'mirroring')) {
+ rotations.push('!0');
+ rotations.push('!180');
+ }
+ }
+ addOptions('rotation_' + uuid, rotations, '', '');
+}
+
+function addOptions(identifier, options, prepend, append, selected=null) {
+ var select = document.getElementById(identifier);
+ clearSelect(select);
+ for (var i = 0; i < options.length; i++) {
+ var optionValue = options[i];
+ option = document.createElement('option');
+ option.text = prepend + optionValue + append;
+ option.value = optionValue;
+
+ select.appendChild(option);
+ }
+ if (selected != null) {
+ select.value = prepend + selected + append;
+ }
+}
+
+function addQuality(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('quality')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Quality'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','quality');
+ select.id = 'quality_' + config.div;
+ select.onchange = function(){ showImage(config.div,'quality'); };
+ div.appendChild(select);
+
+ var qualities = null;
+ if ('qualities' in config) {
+ // Use supplied qualities
+ qualities = config.qualities;
+ }
+ updateQuality(config.div, qualities);
+}
+
+function updateQuality(uuid, suppliedQualities) {
+ var select = document.getElementById('quality_' + uuid);
+ clearSelect(select);
+ if (suppliedQualities) {
+ var qualities = suppliedQualities;
+ } else {
+ var qualities = getImageQualities(uuid);
+ }
+ addOptions('quality_' + uuid, qualities, '', '', 'default');
+}
+
+function addFormats(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('format')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Format'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','format');
+ select.id = 'format_' + config.div;
+ select.onchange = function(){ showImage(config.div,'format'); };
+ div.appendChild(select);
+
+ var formats = null;
+ if ('formats' in config) {
+ // Use supplied formats
+ formats = config.formats;
+ }
+ updateFormats(config.div, formats);
+}
+
+function updateFormats(uuid, suppliedFormats) {
+ var select = document.getElementById('format_' + uuid);
+ clearSelect(select);
+ if (suppliedFormats) {
+ var formats = suppliedFormats;
+ } else {
+ var formats = getImageFormats(uuid);
+ }
+ addOptions('format_' + uuid, formats, '.', '');
+}
+
+function serviceVersion(image) {
+ var version = '2';
+ if (image in infoJsons) {
+ var infoJson = infoJsons[image];
+ if ('type' in infoJson && infoJson['type'] == "ImageService3") {
+ version = '3';
+ }
+ }
+ return version;
+}
+
+function getImageFormats(uuid) {
+ var image = getCurrentImage(uuid);
+ var infoJson = infoJsons[image];
+
+ var version = serviceVersion(image);
+ var formats = ['jpg'];
+ if (version == '2') {
+ if ('profile' in infoJson) {
+ for (i = 0; i < infoJson.profile.length; i++) {
+ if (typeof infoJson.profile[i] === 'object') {
+ if ('formats' in infoJson.profile[i]) {
+ for (var j = 0; j < infoJson.profile[i]['formats'].length; j++) {
+ if (!formats.includes(infoJson.profile[i]['formats'][j])) {
+ formats.push(infoJson.profile[i]['formats'][j]);
+ }
+ }
+ }
+ } else {
+ if (infoJson.profile[i] == "http://iiif.io/api/image/2/level2.json" && !(formats.includes('png'))) {
+ formats.push('png');
+ }
+ }
+ }
+ }
+ } else {
+ if (infoJson['profile'] == 'level2') {
+ formats.push('png');
+ }
+ if ('extraFormats' in infoJson) {
+ for (var i = 0; i < infoJson['extraFormats']; i++) {
+ if (!formats.includes(infoJson['extraFormats'][i])) {
+ formats.push(infoJson['extraFormats'][i]);
+ }
+ }
+ }
+ }
+ return formats;
+}
+
+function getImageQualities(uuid) {
+ var image = getCurrentImage(uuid);
+ var infoJson = infoJsons[image];
+
+ var version = serviceVersion(image);
+ if (version == '2') {
+ if ('profile' in infoJson) {
+ for (i = 0; i < infoJson.profile.length; i++) {
+ if (typeof infoJson.profile[i] === 'object' && 'qualities' in infoJson.profile[i]) {
+ let qualities = infoJson.profile[i]['qualities'];
+ if (!qualities.includes("default")) {
+ qualities.unshift("default");
+ }
+ return qualities;
+ }
+ }
+ }
+ return ['default'];
+ } else {
+ if ('extraQualities' in infoJson) {
+ return infoJson['extraQualities']
+ } else {
+ return ['default'];
+ }
+ }
+}
+
+function supports(image, feature) {
+ var infoJson = infoJsons[image];
+ var version = serviceVersion(image);
+ if (version == '2') {
+ if ('profile' in infoJson) {
+ for (i = 0; i < infoJson.profile.length; i++) {
+ if (typeof infoJson.profile[i] === 'object' && 'supports' in infoJson.profile[i]) {
+ return infoJson.profile[i]['supports'].includes(feature);
+ }
+ }
+ }
+ return false;
+ } else {
+ if ('extraFeatures' in infoJson) {
+ return infoJson['extraFeatures'].includes(feature);
+ }
+ return false;
+ }
+}
+
+function getCurrentImage(ident) {
+ var select = document.getElementById('identifier_' + ident);
+ return select.options[select.selectedIndex].value;
+}
+
+function createDescription(text) {
+ var div = document.createElement('div');
+ div.setAttribute('class', 'attr');
+ div.innerHTML = text;
+
+ return div;
+}
+
+function createElementStyle(element, style) {
+ var el = document.createElement(element);
+ el.setAttribute('class', style);
+
+ return el;
+}
+
+ /*
*/
+
+
+
+function showImage(uuid, source) {
+ if (source == 'identifier') {
+ updateRegion(uuid, null);
+ updateRotation(uuid, null);
+ updateQuality(uuid, null);
+ updateFormats(uuid, null);
+ }
+ var identifier = getSelected(uuid, 'identifier');
+ var region = getSelected(uuid, 'region');
+ var size = getSelected(uuid, 'size');
+ var rotation = getSelected(uuid, 'rotation');
+ var quality = getSelected(uuid, 'quality');
+ var format = getSelected(uuid, 'format');
+
+ var url = identifier + "/" + region + "/" + size + "/" + rotation + "/" + quality + "." + format;
+
+ var link = document.getElementById('link');
+ link.href = url
+ link.innerHTML = url
+
+ //var img = document.getElementById('iiif-image-api-div');
+ //img.style.backgroundImage = "url(" + identifier + "/full/" + size + "/0/" + quality + format + ")";
+
+ /*var highlight = document.getElementById('highlight');
+ if (region.indexOf(',') != -1) {
+ coords = region.split(',');
+ highlight.style.top = coords[0] + "px";
+ highlight.style.left = coords[1] + "px";
+ highlight.style.width = coords[2] + "px";
+ highlight.style.height = coords[3] + "px";
+ } else if (region == "full") {
+ highlight.style.top = "0px";
+ highlight.style.left = "0px";
+ highlight.style.width = img.offsetWidth;
+ highlight.style.height = img.offsetHeight;
+ }*/
+
+ var img = document.getElementById(uuid + '_iiif-image-api-img');
+ img.src = url;
+}
+
+function getSelected(uuid, ident) {
+ var select = document.getElementById(ident + '_' + uuid);
+ return select.options[select.selectedIndex].value;
+}
+
+function getURLParameter(param) {
+ if(typeof(param) == "string" && param.length > 0) {
+ if(typeof(window.location.search) == "string" && window.location.search.length > 0) {
+ var _results = new RegExp(param + "=([^&]*)", "i").exec(window.location.search);
+ if(typeof(_results) == "object" && _results !== null && typeof(_results.length) == "number" && _results.length > 0 && _results[1]) {
+ if(typeof(_results[1]) == "string" && _results[1].length > 0) {
+ return unescape(_results[1]);
+ }
+ }
+ }
+ }
+ return null;
+}
diff --git a/dcmi-workshop/part3/BL-Audio b/dcmi-workshop/part3/BL-Audio
new file mode 120000
index 00000000..ae6ea7ab
--- /dev/null
+++ b/dcmi-workshop/part3/BL-Audio
@@ -0,0 +1 @@
+../../iiif-online-workshop/day-three/BL-Audio
\ No newline at end of file
diff --git a/dcmi-workshop/part3/README.md b/dcmi-workshop/part3/README.md
new file mode 100644
index 00000000..26aa8363
--- /dev/null
+++ b/dcmi-workshop/part3/README.md
@@ -0,0 +1,17 @@
+# Day Three - IIIF Presentation API
+## Wednesday
+
+### Presentation API
+
+This day will focus on the IIIF Presentation API. This session will focus on [version 2.1](https://iiif.io/api/presentation/2.1/) of API and core concepts of IIIF Presentation for 2D images. The session for today is split into two videos. The first one gives a background to the IIIF Presentation API and the second one is a practical hands on session taking you through creating your first manifest.
+
+Prerequisite video:
+
+
+This video is also available on [YouTube](https://www.youtube.com/watch?v=98z9YNFiUqU)
+
+Main video:
+
+
+
+This video is also available on [YouTube](https://www.youtube.com/watch?v=u63jHDH3pDM)
diff --git a/dcmi-workshop/part3/bodleian-editor b/dcmi-workshop/part3/bodleian-editor
new file mode 120000
index 00000000..d23a0b88
--- /dev/null
+++ b/dcmi-workshop/part3/bodleian-editor
@@ -0,0 +1 @@
+../../iiif-online-workshop/day-three/bodleian-editor
\ No newline at end of file
diff --git a/dcmi-workshop/part3/chrome-web-server b/dcmi-workshop/part3/chrome-web-server
new file mode 120000
index 00000000..650f1a16
--- /dev/null
+++ b/dcmi-workshop/part3/chrome-web-server
@@ -0,0 +1 @@
+../../iiif-online-workshop/day-three/chrome-web-server
\ No newline at end of file
diff --git a/dcmi-workshop/part3/digirati-editor b/dcmi-workshop/part3/digirati-editor
new file mode 120000
index 00000000..51dcab17
--- /dev/null
+++ b/dcmi-workshop/part3/digirati-editor
@@ -0,0 +1 @@
+../../iiif-online-workshop/day-three/digirati-editor
\ No newline at end of file
diff --git a/dcmi-workshop/part3/edit-a-manifest/README.md b/dcmi-workshop/part3/edit-a-manifest/README.md
new file mode 100644
index 00000000..7669b8af
--- /dev/null
+++ b/dcmi-workshop/part3/edit-a-manifest/README.md
@@ -0,0 +1,82 @@
+# Manually Editing a Manifest
+The concepts of the Presentation API can be difficult to grasp until we actually start building a manifest.
+
+Learning by doing: In production systems (such as a digital library's image collection), manifests can get very big and are usually machine generated, but for getting the basic concepts down, there's no substitute for editing a manifest "by hand."
+
+## Save a Copy
+Save a copy of the Manifest you created in the last lesson as `manifest2.json`. Edit `manifest2.json` for this section.
+
+That way you'll be sure to have a working version that you can fall back on.
+
+To do this in VS Code, if you right click on `manifest.json` in the Explorer window and select copy and then right click again below the `manifest.json` file and click paste it will create a copy called `manifest copy.json`. Rename this (by right clicking on the file and selecting Rename) to manifest2.json.
+
+## View the Manifest Copy
+Load the Manifest in the [Universal Viewer](http://universalviewer.io). The URL of the copied Manifest for this section should be http://127.0.0.1:5500/manifest2.json
+
+## Edit Your Manifest
+There are some important elements of the Manifest that we did not add or edit using the online editor. The goal of this exercise will be to edit or add them manually. Each task is linked to the specification for the property that you will need to edit or add to the Manifest.
+
+1. Provide a short [description](https://iiif.io/api/presentation/2.1/#description) of this manifest -- the content is up to you.
+1. Modify the [attribution](https://iiif.io/api/presentation/2.1/#attribution) to the manifest that names the source of the images
+1. Add the [viewingHint](https://iiif.io/api/presentation/2.1/#viewinghint) to indicate that the item is paged (i.e., should display in two-up book reader mode).
+
+***Note:*** the Universal Viewer at http://universalviewer.io has a bug which means it doesn't respect the viewingHint and will always show the manifest as `paged`. To test the viewingHint use this development version of the UniversalViewer that has the fix: https://www.universalviewer.dev/
+
+1. Assert a Creative Commons 4.0 by-nc-sa [license](https://iiif.io/api/presentation/2.1/#license).
+1. Add properties to the [metadata](https://iiif.io/api/presentation/2.1/#metadata) following the pattern described in [Language of Property Values](https://iiif.io/api/presentation/2.1/#language-of-property-values).
+
+Hints:
+ - After each step, reload the Manifest in the [Universal Viewer](http://universalviewer.io) and confirm that the changes appear. Remember that the URL of the Manifest for this section is http://127.0.0.1:5500/manifest2.json because you are editing the copy.
+ - Consult the [sample Manifest](https://iiif.io/api/presentation/2.1/#c-example-manifest-response) in the specification to find examples of these properties.
+ - If your Manifest doesn't load, first check for missing quotes or commas.
+
+
+## A short introduction to JSON
+
+JSON is a structured language related to HTML and XML and defines a method of separating and structuring data that is designed for a computer to read. It is possible to edit JSON by hand but care must be taken to ensure you adhere to the rules set out in the JSON standard.
+
+The basic structure of a JSON object is as follows:
+
+```
+{
+ "key":"value",
+ "name":"Glen",
+ "location":"Aberystwyth"
+}
+```
+
+In this example JSON each of the rows is called a key value pair where the key is on the left and the value is on the right. For example the key 'name' has the value 'Glen'. Note that each key value pair has a `,` at the end apart from the last key value pair which doesn't. The `{}` brackets means this is a JSON Object with keys and values.
+
+The following example denoted by `[]` (Square brackets) is for a list of items:
+
+```
+[
+ "apple",
+ "pear",
+ "orange"
+]
+```
+
+Note again every item in the list has a `,` at the end apart from the last one.
+
+JSON objects and lists can be embedded which creates nested structures and this is where matching brackets becomes important so the Computer can understand which keys are part of which object.
+
+```
+{
+ "person": {
+ "name":"Glen",
+ "location":"Aberystwyth"
+ "eats": [
+ "apple",
+ "pear",
+ "orange"
+ ]
+ }
+}
+```
+
+The indentation is not important for the computer in processing JSON but is important for humans so its possible to see where the brackets matchup.
+
+Below there is a screen shot of the same JSON in VS Code and it draws vertical lines between the brackets so you can tell which brackets match.
+
+![VS code JSON handling](imgs/vs_code_json.png)
\ No newline at end of file
diff --git a/dcmi-workshop/part3/edit-a-manifest/imgs/vs_code_json.png b/dcmi-workshop/part3/edit-a-manifest/imgs/vs_code_json.png
new file mode 100644
index 00000000..d79f2bd4
Binary files /dev/null and b/dcmi-workshop/part3/edit-a-manifest/imgs/vs_code_json.png differ
diff --git a/dcmi-workshop/part3/prezi-how.md b/dcmi-workshop/part3/prezi-how.md
new file mode 100644
index 00000000..6556db64
--- /dev/null
+++ b/dcmi-workshop/part3/prezi-how.md
@@ -0,0 +1,55 @@
+# How do people create Manifests?
+
+
+
+In this workshop we are going to take you through creating a Manifest using a Manifest Editor. This works well for a small number of manifests and to give you an idea of what a Manifest contains. If you are going to create thousands or millions of manifests then you would need to look at automating this process.
+
+Generally the data required to create a manifest generator are as follows:
+
+ * Accessible IIIF Images
+ * Structural data on how the images relate to each other. For example the order of the pages in a manuscript
+ * Descriptive metadata for example:
+ * Title - Name of the item this is called a `label` in IIIF
+ * Description (optional)
+ * Rights or licensing (optional)
+ * Metadata useful for discovery (optional) - this will be explained later
+
+Generally the format of the incoming metadata means that often these manifest generation tools are custom to each institution although there are the following libraries that can assist in the process:
+
+ * [biiif](https://github.com/edsilv/biiif/) Organise your files according to a simple naming convention to generate IIIF v3 manifests.
+ * [demetsiiify](https://github.com/jbaiter/demetsiiify) - Web service for creating IIIF manifests from METS/MODS documents.
+
+## Presentation API Libraries
+ * [IIIF Manifest Generator](https://github.com/yale-web-technologies/IIIF-Manifest-Generator) - PHP library for generating IIIF manifests.
+ * [iiif-apis](https://github.com/dbmdz/iiif-apis) - Java IIIF API libraries.
+ * [iiif-prezi](https://github.com/IIIF/iiif-prezi) - Python library providing a reference implementation.
+ * [O'Sullivan](https://github.com/IIIF/osullivan) - Ruby API for creating IIIF manifests.
+ * [Swiiift](https://github.com/mejackreed/Swiiift) - IIIF presentation API library for Swift.
+ * [tabula-rasa](https://www.npmjs.com/package/tabula-rasa) - npm module for creating and manipulating IIIF manifests.
+ * [ViewDir](https://iiif-commons.github.io/) - Documentation on IIIF-related libraries and components.
+
+Once the Manifests are generated they can be stored on any Web Server and don't need a specific server like the Image API.
+
+## Important Considerations
+
+When publishing manifests there are a couple of considerations you need to take in account.
+
+### Use https not http
+
+Most of the web has moved to secure data transfer: `https` (http over TLS/SSL) and not `http`. If you publish your manifests as `http` it means they will not work in most online viewers and tools because browsers enforce rule forbidding mixing secure and insecure access. Using `http` will work only in unusual and restricted circumstances.
+
+### CORS headers are required for reuse
+
+Another requirement for IIIF interoperability is to enable CORS headers. CORS headers tell the browser that its OK to open this JSON on a website which doesn't match the location of your Manifest. For example it says `projectmirador.org` can open a manifest from the Library of Congress (domain `loc.gov`). Without CORS headers being set then you will only be able to open your Manifest on your website. For more details see:
+
+https://enable-cors.org/
+
+### JSON validity
+
+Finally, if you are hand editing JSON documents it is very easy to miss required commas and brackets so the following tool is useful to validate your JSON:
+
+ * [JSONLint](https://jsonlint.com/)
+
+If your Manifest is valid JSON but its not working in a viewer there is a IIIF Validator which will let you know if the JSON has fields that are not part of the IIIF specifications:
+
+ * [IIIF Presentation Validator](https://iiif.io/api/presentation/validator/service/)
diff --git a/europeana/prezi-intro.md b/dcmi-workshop/part3/prezi-intro.md
similarity index 100%
rename from europeana/prezi-intro.md
rename to dcmi-workshop/part3/prezi-intro.md
diff --git a/dcmi-workshop/part3/ranges b/dcmi-workshop/part3/ranges
new file mode 120000
index 00000000..f75ac63b
--- /dev/null
+++ b/dcmi-workshop/part3/ranges
@@ -0,0 +1 @@
+../../iiif-online-workshop/day-three/ranges
\ No newline at end of file
diff --git a/iiif-5-day-workshop/gitbook/gitbook-plugin-toggle-chapters/toggle.css b/dcmi-workshop/part3/v3-changes/README.md
similarity index 100%
rename from iiif-5-day-workshop/gitbook/gitbook-plugin-toggle-chapters/toggle.css
rename to dcmi-workshop/part3/v3-changes/README.md
diff --git a/dcmi-workshop/part3/workbench/README.md b/dcmi-workshop/part3/workbench/README.md
new file mode 100644
index 00000000..01818f9a
--- /dev/null
+++ b/dcmi-workshop/part3/workbench/README.md
@@ -0,0 +1,74 @@
+# Publishing your Manifest
+
+In the previous sections we have asked you to use the Chrome web server to make your manifests available. This works well for trying out your manifest but it does limit some of the tools you can use. The main issue is to do with the Chrome web server making your manifests available as http. In the last few years most web sites have moved over to https which encrypts the traffic and increases privacy. One of the restrictions of https is that it limits access to http resources which can cause problems with some IIIF tools.
+
+The solution to this is to use a service which will host your manifest using https and for the purposes of this course we are going to use the Workbench introduced in the [Static Images - Workbench](../../part2/image-servers/level0-workbench.md) section. This encompasses the following stages:
+
+1. Logon to Workbench and navigate to the Manifests section
+2. Upload your Manifest
+3. View your Manifest in compatible IIIF tools.
+4. Making changes to your manifest
+
+Further details on these stages are below with screen shots:
+
+# Stage 1. Logon to Workbench and navigate to the Manifests section
+
+Navigate to the training workbench:
+
+[https://workbench.gdmrdigital.com/](https://workbench.gdmrdigital.com/index.xhtml)
+
+Select the project you are working on and then select the Manifests heading at the top of the page.
+
+![image](images/start.png)
+
+# Stage 2. Upload your Manifest
+
+Now you can upload your manifest. Click the upload button and choose the manifest you want to upload.
+
+![image](images/upload.png)
+
+You can change the name of the manifest before uploading. You may want to do this if you already have a manifest with the same name that you've uploaded previously. Ensure that the filename doesn't have any spaces or characters that aren't `.`,`-` or `_`.
+
+![image](images/change_name.png)
+
+Then click upload. The upload happens in two stages. The first is uploading the manifest to GitHub which happens quite quickly. The second stage is GitHub updating the website which can take a couple of minutes. While the website is updating you may see the following which will wait to show the Mirador and UV links until the Manifest is available on the website.
+
+![image](images/loading.png)
+
+Once you see the IIIF image and other logos it is safe to start using your manifest in other tools.
+
+# Stage 3. View your Manifest in compatible IIIF tools.
+
+Now you have a public https manifest you can start using it! There are a number of buttons underneath your manifest which is a good place to get started.
+
+![image](images/buttons.png)
+
+The buttons from left to right are as follows:
+
+ * IIIF Logo - if you click this, it will open your manifest in a new window and show you the JSON. If you right click on the image and select `Copy link`, this is the link to your manifest which you can use in other tools.
+ * Edit icon - click this if you want to make small edits to your manifest. This feature is discussed further in stage 4.
+ * Delete icon - This will delete the manifest from your project.
+ * Github icon - This will take you to the GitHub location of your manifest.
+ * Mirador icon - click this to see your manifest in the latest version of Mirador.
+ * UV icon - click this to see your manifest in the public UV version.
+
+As well as the tools above there are also a number of other tools that work with IIIF manifests. For these you will need to copy the Manifest URL in the IIIF logo. Some other tools to try are:
+
+ * [A guide to IIIF viewers](https://iiif-io.medium.com/how-to-use-iiif-resources-and-image-viewers-bd378a68b013) - try your manifest in Mirador 2, Tify, IIIF Curation Viewer and Diva.js
+ * [exhibit.so](https://exhibit.so/) a tool for creating Exhibits or presentations of your manifests. See the [Guest Videos](../../GuestPresentations.md) for more details.
+ * [FromThePage](https://www.fromthepage.com/) a transcription tool. Also see the video in the [Guest Videos](../../GuestPresentations.md).
+ * [Recogito](https://recogito.pelagios.org/) a hosted free transcription and teaching tool.
+
+# Stage 4. Making changes to your manifest
+
+If after trying out some of the tools above you want to make some changes to your manifest. There are two ways to do it. The first is to delete the manifest from your project and upload it again.
+
+The second way is to click the Edit icon. This will take you into GitHub and will look something like this:
+
+![image](images/github_edit.png)
+
+You can make changes to the manifest here but be careful as the GitHub interface doesn't provide any validation for the JSON so its easy to miss a `,` or brackets. Once you have made your changes scroll to the bottom of the page where you should see:
+
+![image](images/github_commit.png)
+
+Click the commit button to save the changes to your manifest. Note although your changes will be saved straight away it will take a couple of minutes for them to be reflected in the website version of the manifest.
diff --git a/dcmi-workshop/part3/workbench/images b/dcmi-workshop/part3/workbench/images
new file mode 120000
index 00000000..2a9789a5
--- /dev/null
+++ b/dcmi-workshop/part3/workbench/images
@@ -0,0 +1 @@
+../../../iiif-online-workshop/day-three/workbench/images
\ No newline at end of file
diff --git a/dcmi-workshop/part3/workbench/short.md b/dcmi-workshop/part3/workbench/short.md
new file mode 100644
index 00000000..4e52beb2
--- /dev/null
+++ b/dcmi-workshop/part3/workbench/short.md
@@ -0,0 +1,98 @@
+# Publishing your Manifest
+
+
+
+Now we have downloaded the Manifest we can use a tool developed for the training called the Workbench. This will publish your manifest using GitHub and make it available on the Web. This encompasses the following stages:
+
+1. Logon to Workbench and navigate to the Manifests section
+2. Upload your Manifest
+3. View your Manifest in compatible IIIF tools.
+4. Making changes to your manifest
+
+Further details on these stages are below with screen shots:
+
+# Stage 0. Register for a GitHub account if you don't have one.
+
+If you don't have a GitHub account register for one on the [Github](https://github.com/) webpage.
+
+# Stage 1. Logon to Workbench
+
+Then Navigate to the training workbench:
+
+[https://workbench.gdmrdigital.com/](https://workbench.gdmrdigital.com/index.xhtml)
+
+You should see the following screen:
+
+![image](../../part2/image-servers/workbench/login.png)
+
+Click the Login with GitHub button.
+
+This will either ask you to login as shown in the following screen shot or if you are already logged in take you straight to the permissions page.
+
+![image](../../part2/image-servers/workbench/github_login.png)
+
+Next you will see the following permissions page. This is asking you if you are happy for the Workbench to write to your GitHub account. Click Authorize.
+
+![image](../../part2/image-servers/workbench/authorize.png)
+
+You should now be taken to the projects page:
+
+![image](../../part2/image-servers/workbench/no_project.png)
+
+You have now successfully logged into the Workbench using your GitHub username and password. Once you have been through the Authorisation step once your browser and GitHub will remember that you have given permission and it should log you straight in. The next stage is to create your project.
+
+## Stage 2. Create your project
+
+A project is a place to store the images and manifests you are working on. You can have multiple projects for every GitHub account but note each project is limited to 1GB in size. In the GitHub terminology a project in this case is equivalent to a GitHub Repository.
+
+To start click the Create Project button:
+
+![image](../../part2/image-servers/workbench/no_project.png)
+
+and enter a name for your project. Note the name can only contain letters, numbers or the following symbols `-` and `_` so don't add any spaces.
+
+![image](../../part2/image-servers/workbench/create_project.png)
+
+Click create. This will take a few seconds but will setup an empty project on GitHub and then forward you onto the images part of the Workbench.
+
+![image](../../part2/image-servers/workbench/no_images.png)
+
+You are now ready to upload your Manifest.
+
+# Stage 3. Upload your Manifest
+
+Now you can upload your manifest. Click the upload button and choose the manifest you want to upload.
+
+![image](images/upload.png)
+
+You can change the name of the manifest before uploading. You may want to do this if you already have a manifest with the same name that you've uploaded previously. Ensure that the filename doesn't have any spaces or characters that aren't `.`,`-` or `_`.
+
+![image](images/change_name.png)
+
+Then click upload. The upload happens in two stages. The first is uploading the manifest to GitHub which happens quite quickly. The second stage is GitHub updating the website which can take a couple of minutes. While the website is updating you may see the following which will wait to show the Mirador and UV links until the Manifest is available on the website.
+
+![image](images/loading.png)
+
+Once you see the IIIF image and other logos it is safe to start using your manifest in other tools.
+
+# Stage 4. View your Manifest in compatible IIIF tools.
+
+Now you have a public https manifest you can start using it! There are a number of buttons underneath your manifest which is a good place to get started.
+
+![image](images/buttons.png)
+
+The buttons from left to right are as follows:
+
+ * IIIF Logo - if you click this, it will open your manifest in a new window and show you the JSON. If you right click on the image and select `Copy link`, this is the link to your manifest which you can use in other tools.
+ * Edit icon - click this if you want to make small edits to your manifest. This feature is discussed further in stage 4.
+ * Delete icon - This will delete the manifest from your project.
+ * Github icon - This will take you to the GitHub location of your manifest.
+ * Mirador icon - click this to see your manifest in the latest version of Mirador.
+ * UV icon - click this to see your manifest in the public UV version.
+
+As well as the tools above there are also a number of other tools that work with IIIF manifests. For these you will need to copy the Manifest URL in the IIIF logo. Some other tools to try are:
+
+ * [A guide to IIIF viewers](https://iiif-io.medium.com/how-to-use-iiif-resources-and-image-viewers-bd378a68b013) - try your manifest in Mirador 2, Tify, IIIF Curation Viewer and Diva.js
+ * [exhibit.so](https://exhibit.so/) a tool for creating Exhibits or presentations of your manifests. See the [Guest Videos](https://training.iiif.io/iiif-online-workshop/GuestPresentations.html#exhibit) for more details.
+ * [FromThePage](https://www.fromthepage.com/) a transcription tool. Also see the video in the [Guest Videos](https://training.iiif.io/iiif-online-workshop/GuestPresentations.html#crowdsourced-transcription-using-fromthepage--iiif).
+ * [Recogito](https://recogito.pelagios.org/) a hosted free transcription and teaching tool.
diff --git a/dcmi-workshop/part4/README.md b/dcmi-workshop/part4/README.md
new file mode 100644
index 00000000..4beb67c9
--- /dev/null
+++ b/dcmi-workshop/part4/README.md
@@ -0,0 +1,12 @@
+# Day 4 - Annotations
+## Thursday
+
+The fourth day of the workshop will focus on the annotations. Participants may find it helpful to open the video in a separate window so they can follow the workshop web pages at the same time.
+
+### IIIF and Annotations - 1 hour
+
+Glen Robson the IIIF Technical Coordinator introduces annotations and IIIF by using an annotation server and looking into the IIIF Search API.
+
+
+
+This video is also available on [YouTube](https://youtu.be/y0I5_BW1OLQ)
diff --git a/dcmi-workshop/part4/advanced-annotations.md b/dcmi-workshop/part4/advanced-annotations.md
new file mode 100644
index 00000000..0f191d96
--- /dev/null
+++ b/dcmi-workshop/part4/advanced-annotations.md
@@ -0,0 +1,19 @@
+# Advanced Annotations
+
+There is unlikely to be time to cover this in the session but if your interested in other ways of doing annotation there is this [google slides](https://docs.google.com/presentation/d/1StVt_Eixt9wmFXoyPRjjlq-J1VevR7b4qvVmVs7yBWg/edit?usp=sharing) presentation. The links for the different examples are available below:
+
+ * [Georeferencer for maps](https://www.georeferencer.com/)
+ * [Stanford Georeference example](https://www.davidrumsey.com/view/georeferencer)
+ * [Final site for the Cynefin data](https://places.library.wales/)
+ * [Visualisation of the Shipping records data](https://medium.com/@404mike/shipping-records-73e3fd48a16e#.aqxgfeogl)
+ * Tribunal data
+ * Graphs: https://iiif.gdmrdigital.com/ww1-tribunal/index.html
+ * Data: https://github.com/NLW-paulm/Welsh-Tribunal-annotations
+ * [Video on how to configure the crowdsourcing system](https://www.youtube.com/playlist?list=PLMd2mmRYjSJlKs829X0z_kYueQemSfwDd)
+ * [Recogito](https://recogito.pelagios.org/)
+ * [From the Page](https://fromthepage.com/)
+ * [Indigenous Digital Archive](https://omeka.dlcs-ida.org/s/ida/page/home)
+ * [LibCrowds from the BL](https://www.libcrowds.com/collection/playbills)
+
+One of the real promises of IIIF is that once you have interoperable Images and presentation packages (Manifests) it should be easy to then take these and use them in these advanced tools. In practice once you have IIIF Images and Manifests you should be able to take them and run a crowdsourcing project using one of the tools above.
+
diff --git a/dcmi-workshop/part4/annotating.md b/dcmi-workshop/part4/annotating.md
new file mode 100644
index 00000000..1c437d50
--- /dev/null
+++ b/dcmi-workshop/part4/annotating.md
@@ -0,0 +1,34 @@
+# Creating and downloading Annotations
+
+In this tutorial we are going to annotate an image from your own manifest using a very recently released version of the SimpleAnnotationStore. Once we have finished annotating we are going to test viewing and searching your annotations with a public viewer.
+
+## Step 1 find a Manifest
+
+If you haven't already go back to the [Finding Manifests](basics/guides.md) guide and find a Manifest from one of the public collections. My personal favourite is:
+
+https://damsssl.llgc.org.uk/iiif/2.0/4389767/manifest.json
+
+## Step 2 Login to SAS
+ * Navigate to https://dev.gdmrdigital.com/ and click the Log in / Sign Up link.
+ * This will take you to the following screen where you can choose to either login using your Google or Github accounts
+
+![image](images/sas/login.png)
+
+The GitHub/Google methods are purely used to provide authentication to SAS with all of the data being stored on the SAS server.
+
+## Step 3 Load your manifest into SAS:
+Once you have logged in you will be presented with the following collection screen:
+
+![image](images/sas/empty_collection.png)
+
+ * Now click the Add IIIF manifest (URL) link and enter the URL to your manifest as below.
+
+![image](images/sas/add_manifest.png)
+
+ * Then click Add. Depending on how many pages the Manifest has, this might take a minute or two to index.
+ * Once your manifest is loaded you should see it appear in your default Collection:
+
+![image](images/sas/manifest.png)
+
+Once you have finished annotating click the Home link at the top to get back to your collections.
+
diff --git a/dcmi-workshop/part4/annotation-linking.md b/dcmi-workshop/part4/annotation-linking.md
new file mode 100644
index 00000000..ed82cb2a
--- /dev/null
+++ b/dcmi-workshop/part4/annotation-linking.md
@@ -0,0 +1,153 @@
+# Downloading and linking your annotations
+
+In the last section we created a SimpleAnnotationServer (SAS) version of your manifest but now we are going to download the annotations from SAS and link them to your Workbench manifest. This is useful to create a read only copy of your annotations and you will also be able to view them using a feature of the Workbench and a tool called Annona. You will also see how annotations are connected to a manifest and how a viewer follows these links in your manifest to show annotations.
+
+Note from this step forward the activities get more difficult and will involve editing your Manifest. These stages are optional and will give you a complete workflow for annotating and publishing your annotations. The overall process is as follows:
+
+ * Step 1: Setup your environment
+ * Step 2: Download your annotations from SAS
+ * Step 3: Upload your annotations to Workbench
+ * Step 4: Link your manifest to the annotations
+ * Step 5: Exhibit your annotations with Annona
+
+
+### Step 1: Setup your environment
+
+Through various iterations of this workshop we have found it easiest to save a copy of your manifest from Workbench to you computer. Make your edits to your local copy, test to make sure its working and then finally replace the Manifest on Workbench when you are happy with all of your changes. To get a copy of your Workbench manifest ready for editing:
+
+ * Navigate to your manifest in your workbench
+ * Right click on the IIIF logo and select `Save Link As`
+ * Save it in the `iiif-workshop` directory you created as part of the Presentation API section and call it `manifest2.json`. If you already have a file called manifest2.json you can replace it.
+ * Ensure the VS Code live server is running. This should be running on port `5500` and the manifest should be available at http://127.0.0.1:5500/manifest2.json
+ * Open the downloaded manifest in VS Code ready for editing.
+
+## Step 2: Download your annotations from SAS
+
+Now you have finished annotating you need to download the annotations before uploading it to the Workbench. To do this you will download 1 annotation list per page or canvas.
+
+ * Navigate back to the collections page by either clicking the Home menu item or following this link: https://dev.gdmrdigital.com/collections.xhtml
+ * Now click the grey "Browse Annotations" button
+
+![image](images/sas/browse_annos.png)
+
+ * You should now see the canvases which have annotations.
+ * Click the "Download Annotations" link.
+
+![image](images/sas/browse_manifest.png)
+
+If you download this annotation file to your workshop directory. The name of the file isn't important as long as it ends in .json.
+
+### Step 3: Upload your annotations to Workbench
+
+In a new Browser tab navigate to your Workbench by going to https://workbench.gdmrdigital.com/login.xhtml and logging in. Select the project you are working on and click the Annotations section.
+
+![image](images/noannos.png)
+
+Now upload the annotations you downloaded from SAS:
+
+![image](images/upload_anno.png)
+
+Once you have uploaded your annotations you should see the screen below.
+
+![image](images/annos_workbench.png)
+
+It takes about 10mins for the Workbench to publish the annotation list to your Website but we can still copy the URL to the annotations list to move on to the next stage. To do this right click on the IIIF logo and select "Copy Link" to copy the URL of your annotations. This is what we will add to your manifest.
+
+![image](images/copy_annos_url.png)
+
+## Step 4: Link your manifest to the annotations
+
+To get the annotations to display you need to link them into the manifest. Open up your manifest (manifest2.json) in the `iiif-workshop` directory in VS Code.
+
+Then find the canvas your annotations point to then add the following:
+
+```json
+"otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+]
+```
+
+after the images array. Replace the URL after the `@id` with the URL you copied from Workbench. A full canvas example is below:
+
+```json
+{
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json",
+ "@type": "sc:Canvas",
+ "label": "1r",
+ "height": 5584,
+ "width": 3744,
+ "images": [
+ {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/annotation/4004563.json",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "resource": {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563/full/1024,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "format": "image/jpeg",
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563",
+ "profile": "http://iiif.io/api/image/2/level1.json"
+ },
+ "height": 5584,
+ "width": 3744
+ },
+ "on": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json"
+ }
+ ],
+ "otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+ ]
+},
+
+```
+
+Save the manifest. Watch out for JSON typing errors. Common JSON issues include:
+
+ * Make sure that all the brackets match up
+ * Lines that are not the last line in a list or array must have a `,` at the end of the line.
+
+To make this easier you may want to use a JSON aware editor like VS Code which will tell you if you are missing brackets or commas. You can also copy and paste your JSON to:
+
+https://jsonlint.com/
+
+which will tell you if the JSON is valid and if not where the error is.
+
+Now test your edited manifest in the browser to check it looks OK. If you are using `manifest2.json` then the link will be:
+
+http://127.0.0.1:5500/manifest2.json
+
+If you click on your manifest you should see the JSON. If you copy the URL in the browser address bar you will have the Manifest URL for your edited manifest.
+
+## Step 5: Test to see if your annotations are working
+
+ * Go to http://iiif.gdmrdigital.com/mirador/index.html.
+ * Load the manifest using Add new object from URL (using the manifest hosted in the VS Code web server)
+ * Click on one of the images to view the manifest
+ * Click on the speech bubble to show the annotations.
+
+![image](images/annos_download_show.png)
+
+ * and if it all worked OK you should see your annotation.
+
+![image](images/annos_download_success.png)
+
+
+Another method to see your annotations is with a tool using the [Annona Storyboard viewer](https://ncsu-libraries.github.io/annona/) by Niqui O'Neill from NC State University Libraries. This will demonstrate the interoperability of these annotations and also provide an option for the end of week projects. Annona is a powerful tool to create stories from annotations and supports a wide variety of use cases. The most important one for this lesson is to support annotations created by the SimpleAnnotationServer (SAS).
+
+If you navigate to your Workbench and click the Annotations tab you should see an `Annona` button next to your annotation list:
+
+![image](images/sas/workbench-annoa.png)
+
+If you click this Annona will open in a new window. Use the arrow buttons to navigate through your annotations:
+
+![image](images/sas/workbench-annoa-demo.png)
diff --git a/dcmi-workshop/part4/annotation-store-download-sas1.md b/dcmi-workshop/part4/annotation-store-download-sas1.md
new file mode 100644
index 00000000..aab28088
--- /dev/null
+++ b/dcmi-workshop/part4/annotation-store-download-sas1.md
@@ -0,0 +1,163 @@
+# Creating and downloading Annotations
+
+In this tutorial we are going to annotate an image from your own manifest using the hosted SimpleAnnotationStore. Once we have finished annotating we are going to download the annotations created in an Annotation list and link them to the Manifest. This is a way of permanently attaching annotations to a manifest.
+
+Note from this step forward the activities get more difficult and will involve editing your Manifest. These stages are optional and will give you a complete workflow for annotating and publishing your annotations. There are three options for getting a Manifest to Annotate.
+
+### Option 1 use the Workbench
+
+This is the preferred option as it will save some steps later on. This option uses a combination of annotating the version of the manifest from your Workbench (see step [Publishing your Manifest](../part3/workbench/)) and creating a copy that you can edit and test using the Chrome Web Server. For this option you need to do the following two things:
+
+1. Download your manifest for editing
+
+ * Navigate to the manifest in your workbench
+ * Right click on the IIIF logo and select `Save Link As`
+ * Save it in the Chrome Web Server directory
+ * Ensure your Chrome Web server is running. This should be running on port `8887`
+ * Open the downloaded manifest in [Atom](https://atom.io/) ready for editing.
+
+2. Copy the Manifest URL
+
+Now go back to your manifest in the Workbench and right click on the IIIF logo again but this time select `copy link`. This will copy the Manifest URL to your clipboard.
+
+### Option 2 Use manifest2.json in your Chrome Web Server
+
+As part of the Presentation API stage you created a file called `manifest2.json` in your Chrome Web Server directory. You can use this file and the URL: `http://localhost:8887/manifest2.json` for the annotations but note there are some extra steps you will need in the next section on presenting your annotations.
+
+
+### Option 3 Use any public IIIF manifest
+
+If you didn't manage to get a manifest in the previous step you can use any IIIF Manifest. My personal favourite is:
+
+https://damsssl.llgc.org.uk/iiif/2.0/4389767/manifest.json
+
+## Step 1 Load your manifest into the hosted Mirador:
+ * Go to http://sas.gdmrdigital.com
+ * Add your manifest to the addNewObject field and click load:
+ * If you are using the Workbench use the URL copied from the IIIF logo.
+ * If you are using the Chrome web server the URL is: http://localhost:8887/manifest2.json
+
+![image](images/annos_download_annotating.png)
+
+## Step 2: annotate manifest
+
+ * Start annotating your manifest
+
+![image](images/annos_download_success.png)
+
+## Step 3: Download annotations
+
+Now you have finished annotating you need to download the annotations and link them to canvases in your manifest. To do this you will download 1 annotation list per page/canvas.
+
+ * Navigate to http://sas.gdmrdigital.com/manifests.xhtml
+
+You will see a list of manifests that have been annotated by the class and previous classes. You will need to search for your manifest by getting the `@id` from your manifest. For example if my manifest started with:
+
+```
+{
+ "@context": "http://iiif.io/api/presentation/2/context.json",
+ "@id": "http://d937e822-64cd-4815-a6da-bc6a79f11619",
+ "@type": "sc:Manifest",
+ "label": "Test Manifest",
+ "metadata": [],
+```
+
+I would look for `http://d937e822-64cd-4815-a6da-bc6a79f11619` in the list of Annotated Manifests. Once you have found your manifest click the link and you should see a page similar to the following:
+
+![image](images/anno_download_canvas.png)
+
+The links at the bottom of the page are annotations for each canvas (page) you have annotated. For each canvas Right click and do save as. Save the annotations to your Google Chrome Web server folder with the name `annotations1.json`, `annotations2.json` etc... Do this step for both the Workbench and `manifest2.json` options.
+
+![image](images/anno_download_saveas.png)
+
+## Step 4: Link annotations to Manifest
+To get the annotations to display you need to link them into the manifest. Open up your manifest in your Chrome Web Server directory in [Atom](https://atom.io/).
+
+Then find the canvas your annotations point to then add the following:
+
+```json
+"otherContent": [
+ {
+ "@id": "http://localhost:8887/annotations1.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+]
+```
+
+after the images array. A full canvas example is below:
+
+```json
+{
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json",
+ "@type": "sc:Canvas",
+ "label": "1r",
+ "height": 5584,
+ "width": 3744,
+ "images": [
+ {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/annotation/4004563.json",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "resource": {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563/full/1024,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "format": "image/jpeg",
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563",
+ "profile": "http://iiif.io/api/image/2/level1.json"
+ },
+ "height": 5584,
+ "width": 3744
+ },
+ "on": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json"
+ }
+ ],
+ "otherContent": [
+ {
+ "@id": "http://localhost:8887/annotations1.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+ ]
+},
+
+```
+
+Save the manifest. Watch out for JSON typing errors. Common JSON issues include:
+
+ * Make sure that all the brackets match up
+ * Lines that are not the last line in a list or array must have a `,` at the end of the line.
+
+To make this easier you may want to use a JSON aware editor like [ATOM](https://atom.io/) which will tell you if you are missing brackets or commas. You can also copy and paste your JSON to:
+
+https://jsonlint.com/
+
+which will tell you if the JSON is valid and if not where the error is.
+
+Now test your edited manifest in the browser to check it looks OK. If you are using `manifest2.json` then the link will be:
+
+http://localhost:8887/manifest2.json
+
+If you are using the workbench then the link will be similar but the name might be different to `mainfest2.json`. If you go to:
+
+http://localhost:8887/
+
+You should be able to see your manifest. If you click on your manifest you should see the JSON. If you copy the URL in the browser address bar you will have the Manifest URL for your edited manifest.
+
+## Step 5: check the annotations are showing
+
+ * Go to http://iiif.gdmrdigital.com/mirador/index.html.
+ * Load the manifest using Add new object from URL (using the manifest hosted in the Chrome Web Server)
+ * Click on one of the images to view the manifest
+ * Click on the speech bubble to show the annotations.
+
+![image](images/annos_download_show.png)
+
+ * and if it all worked OK you should see your annotation.
+
+![image](images/annos_download_success.png)
+
+
+It is also possible to do the above with a locally running SimpleAnnotationServer just follow the [Annotating Stores - Do it yourself](annotations-stores-install.md) part of the course.
diff --git a/dcmi-workshop/part4/annotation-store-download.md b/dcmi-workshop/part4/annotation-store-download.md
new file mode 100644
index 00000000..38c5561b
--- /dev/null
+++ b/dcmi-workshop/part4/annotation-store-download.md
@@ -0,0 +1,202 @@
+# Creating and downloading Annotations
+
+In this tutorial we are going to annotate an image from your own manifest using a recently released version of the SimpleAnnotationStore. Once we have finished annotating we are going to link the annotations to your Manifest. This is a way of permanently attaching annotations to a manifest.
+
+The major difference with this new version of the SimpleAnnotationServer is that you are asked to login and you will have a collection of Manifests that you have annotated. The previous version only had a single user so everyone could see and edit all of the annotations. In this version only you can see your annotations until you publish them. The high level process is as follows:
+
+ * Step 1: Create your annotations
+ * Step 2: Upload your annotations to Workbench
+ * Step 3: Link your manifest to the annotations
+ * Step 4: Test to see if your annotations are working
+
+Note from this step forward the activities get more difficult and will involve editing your Manifest. These stages are optional and will give you a complete workflow for annotating and publishing your annotations. There are two options for getting a Manifest to Annotate.
+
+### Option 1 use the Workbench
+
+This option uses a combination of annotating the version of the manifest from your Workbench (see step [Publishing your Manifest](../part3/workbench/)) and creating a copy that you can edit and test using the Chrome Web Server. For this option you need to do the following two things:
+
+1. Download your manifest for editing
+
+ * Navigate to your manifest in your workbench
+ * Right click on the IIIF logo and select `Save Link As`
+ * Save it in the Chrome Web Server directory and call it `manifest3.json`
+ * Ensure your Chrome Web server is running. This should be running on port `8887` and the manifest should be available at http://localhost:8887/manifest3.json
+ * Open the downloaded manifest in [Atom](https://atom.io/) ready for editing.
+
+2. Copy the Manifest URL
+
+Now go back to your manifest in the Workbench and right click on the IIIF logo again but this time select `copy link`. This will copy the Manifest URL to your clipboard.
+
+### Option 2 Use any public IIIF manifest
+
+If you didn't manage to get a manifest in the previous session you can use any IIIF Manifest. My personal favourite is:
+
+https://damsssl.llgc.org.uk/iiif/2.0/4389767/manifest.json
+
+## Step 1: Create your annotations
+
+### Login to SAS
+ * Navigate to https://dev.gdmrdigital.com/ and click the Log in / Sign Up link.
+ * This will take you to the following screen where you can choose to either login using your Google or Github accounts
+
+![image](images/sas/login.png)
+
+Unlike the workbench SAS doesn't write to your Google drive or GitHub account. The GitHub/Google methods are purely used to provide authentication to SAS with all of the data being stored on the SAS server.
+
+### Load your manifest into SAS:
+Once you have logged in you will be presented with the following collection screen:
+
+![image](images/sas/empty_collection.png)
+
+ * Now click the Add IIIF manifest (URL) link and enter the URL to your manifest as below.
+ * If you are using the Workbench use the URL copied from the IIIF logo.
+ * If you are using the Chrome web server the URL is: http://localhost:8887/manifest2.json
+
+![image](images/sas/add_manifest.png)
+
+ * Then click Add. Depending on how many pages the manifest takes this might take a minute or two to index.
+ * Once your manifest is loaded you should see it appear in your default Collection:
+
+![image](images/sas/manifest.png)
+
+### Annotate manifest
+
+ * Now we have the manifest loaded into your SAS account we can start annotating.
+ * Click the blue "Annotate in Mirador" button.
+ * This should open up your manifest in Mirador
+ * Navigate to a page you want to annotate then click the speech bubbles at the top right to start annotating.
+
+![image](images/sas/annotate.png)
+
+## Step 2: Upload your annotations to Workbench
+
+### Download annotations from SAS
+
+Now you have finished annotating you need to download the annotations before uploading it to the Workbench. To do this you will download 1 annotation list per page or canvas.
+
+ * Navigate back to the collections page by either clicking the Home menu item or following this link: https://dev.gdmrdigital.com/collections.xhtml
+ * Now click the grey "Browse Annotations" button
+
+![image](images/sas/browse_annos.png)
+
+ * You should now see the canvases which have annotations.
+ * Click the "Download Annotations" link.
+
+![image](images/sas/browse_manifest.png)
+
+If you download this annotation file to your workshop directory. The name of the file isn't important as long as it ends in .json.
+
+### Upload annotations to Workbench
+
+In a new Browser tab navigate to your Workbench by going to https://workbench.gdmrdigital.com/login.xhtml and logging in. Select the project you are working on and click the Annotations section.
+
+![image](images/noannos.png)
+
+Now upload the annotations you downloaded from SAS:
+
+![image](images/upload_anno.png)
+
+Once you have uploaded your annotations you should see the screen below.
+
+![image](images/annos_workbench.png)
+
+It takes about 10mins for the Workbench to publish the annotation list to your Website but we can still copy the URL to the annotations list to move on to the next stage. To do this right click on the IIIF logo and select "Copy Link" to copy the URL of your annotations. This is what we will add to your manifest.
+
+![image](images/copy_annos_url.png)
+
+## Step 3: Link your manifest to the annotations
+
+To get the annotations to display you need to link them into the manifest. Open up your manifest in your Chrome Web Server directory in [Atom](https://atom.io/).
+
+Then find the canvas your annotations point to then add the following:
+
+```json
+"otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+]
+```
+
+after the images array. Replace the URL after the `@id` with the URL you copied from Workbench. A full canvas example is below:
+
+```json
+{
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json",
+ "@type": "sc:Canvas",
+ "label": "1r",
+ "height": 5584,
+ "width": 3744,
+ "images": [
+ {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/annotation/4004563.json",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "resource": {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563/full/1024,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "format": "image/jpeg",
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563",
+ "profile": "http://iiif.io/api/image/2/level1.json"
+ },
+ "height": 5584,
+ "width": 3744
+ },
+ "on": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json"
+ }
+ ],
+ "otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+ ]
+},
+
+```
+
+Save the manifest. Watch out for JSON typing errors. Common JSON issues include:
+
+ * Make sure that all the brackets match up
+ * Lines that are not the last line in a list or array must have a `,` at the end of the line.
+
+To make this easier you may want to use a JSON aware editor like [ATOM](https://atom.io/) which will tell you if you are missing brackets or commas. You can also copy and paste your JSON to:
+
+https://jsonlint.com/
+
+which will tell you if the JSON is valid and if not where the error is.
+
+Now test your edited manifest in the browser to check it looks OK. If you are using `manifest3.json` then the link will be:
+
+http://localhost:8887/manifest3.json
+
+If you are using the workbench then the link will be similar but the name might be different to `mainfest2.json`. If you go to:
+
+http://localhost:8887/
+
+You should be able to see your manifest. If you click on your manifest you should see the JSON. If you copy the URL in the browser address bar you will have the Manifest URL for your edited manifest.
+
+## Step 4: Test to see if your annotations are working
+
+ * Go to http://iiif.gdmrdigital.com/mirador/index.html.
+ * Load the manifest using Add new object from URL (using the manifest hosted in the Chrome Web Server)
+ * Click on one of the images to view the manifest
+ * Click on the speech bubble to show the annotations.
+
+![image](images/annos_download_show.png)
+
+ * and if it all worked OK you should see your annotation.
+
+![image](images/annos_download_success.png)
+
+
+Another method to see your annotations is with a tool using the [Annona Storyboard viewer](https://ncsu-libraries.github.io/annona/) by Niqui O'Neill from NC State University Libraries. This will demonstrate the interoperability of these annotations and also provide an option for the end of week projects. Annona is a powerful tool to create stories from annotations and supports a wide variety of use cases. The most important one for this lesson is to support annotations created by the SimpleAnnotationServer (SAS).
+
+Annona is unusal in that it takes a link to the Annotation List rather than the Manifest but if you change the URL after iiif-content below to your own Annotation List URL from workbench you should be able to browse through your annotations.
+
+[http://iiif.gdmrdigital.com/annona/index.html?iiif-content=https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json](http://iiif.gdmrdigital.com/annona/index.html?iiif-content=https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json)
diff --git a/dcmi-workshop/part4/annotations-and-annotation-lists.md b/dcmi-workshop/part4/annotations-and-annotation-lists.md
new file mode 100644
index 00000000..dd185099
--- /dev/null
+++ b/dcmi-workshop/part4/annotations-and-annotation-lists.md
@@ -0,0 +1,122 @@
+# What are annotations?
+
+We have seen many examples of annotations during the course and they have many uses including:
+
+ * Transcribing documents
+ * Commenting or analysis of content
+ * Highlighting areas of the item like hand written annotations on a printed book
+ * Teaching or explaining content (Storiiies and Exhibit)
+
+and we also saw yesterday that annotations are fundamental to how a IIIF Manifests work with images and video painted on to a canvas with annotations.
+
+Annotations in IIIF follow the [W3C annotation model](https://www.w3.org/TR/annotation-model/) and its precursor [Open Annotations](http://www.openannotation.org/). I will go through the differences briefly later but the model is conceptionally similar:
+
+![Web Annotation model](https://www.w3.org/TR/annotation-model/images/intro_model.png)
+
+The annotation is made up of two parts. The body which is the **resource** you want to annotate **on** to something and the target which is the thing you are annotating. Examples of bodies might be:
+
+ * Text transcription of a line
+ * Video giving background to a painting
+ * IIIF Image painted on to a canvas
+
+A target might be:
+ * A whole canvas
+ * A part of a canvas (maybe a line in the transcription example above)
+
+## Example Annotation
+A simple commenting annotation looks like the following:
+
+```json
+{
+ "@id": "http://localhost:8887/coin/list/1",
+ "@type": "oa:Annotation",
+ "motivation": "commenting",
+ "resource": {
+ "@type": "cnt:ContentAsText",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "on": "http://localhost:8887/coin/canvas#xywh=3706,208,522,522"
+}
+```
+
+This is using Open annotations and the keys map as follows:
+
+ * Body -> resource
+ * Target -> on
+
+Other things to take note of are:
+
+ * motivation is `commenting`
+ * Annotations should have an `@id`
+
+In this example the body or resource is the text `Zeus seated on stool-throne`. The canvas id in this example is `http://localhost:8887/coin/canvas` and the `#xywh=3706,208,522,522` denotes we are looking at a rectangle starting `3706` pixels from the left, `208` pixels from the top and with dimensions `522` pixels wide and `522` pixels high. The image mentioned in this annotation is:
+
+![Coin image](https://ronallo.com/iiif-workshop-new/images/coin-side-by-side.png)
+
+## Caveat: Open Annotations vs Web Annotations
+
+For this workshop we will be focusing on Open Annotations which are in the examples above. One of the changes with IIIF version 3.0 is that we are moving to the W3C Web Annotations model. The concepts are the same but the JSON is slightly different. The transcription example now looks like:
+
+```json
+{
+ "id": "http://localhost:8887/coin/list/1",
+ "type": "Annotation",
+ "motivation": "commenting",
+ "body": {
+ "type": "TextualBody",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "target": "http://localhost:8887/coin/canvas#xywh=3706,208,522,522"
+}
+```
+
+The changes are:
+ * `@id` becomes `id`
+ * `@type` becomes `type` and `oa:Annotation` becomes `Annotation`
+ * `resource` becomes `body`
+ * `on` becomes `target`
+ * The body type changes from `cnt:ContentAsText` to `TextualBody`.
+
+Quite a few changes but it is defiantly clearer to understand.
+
+## What are annotations lists?
+
+See Specification Chapter: [http://iiif.io/api/presentation/2.1/#annotation-list](http://iiif.io/api/presentation/2.1/#annotation-list)
+
+Annotation lists are ways to group annotations and are often at a Canvas or Page level. Examples might be a transcription of a page or the OCR of a single page in annotation format. We will come back to this in the exercises but for now there is an example below. Note annotation lists are usually resolvable which means if you take the `@id` and put it into a Web Browser you should get the annotation list back.
+
+```json
+{
+ "@context": "http://iiif.io/api/presentation/2/context.json",
+ "@id": "http://localhost:8887/coin/canvas/AnnotationList",
+ "@type": "sc:AnnotationList",
+ "resources": [
+ {
+ "@id": "http://localhost:8887/coin/list/1",
+ "@type": "oa:Annotation",
+ "motivation": "commenting",
+ "resource": {
+ "@type": "cnt:ContentAsText",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "on": "http://localhost:8887/coin/canvas#xywh=3706,208,522,522"
+ },
+ {
+ "@id": "http://localhost:8887/coin/list/1",
+ "@type": "commenting",
+ "motivation": "sc:painting",
+ "resource": {
+ "@type": "cnt:ContentAsText",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "on": "http://localhost:8887/coin/canvas#xywh=0,208,522,522"
+ }
+ ]
+}
+```
+
+
diff --git a/dcmi-workshop/part4/annotations-annona.md b/dcmi-workshop/part4/annotations-annona.md
new file mode 100644
index 00000000..0d5019f5
--- /dev/null
+++ b/dcmi-workshop/part4/annotations-annona.md
@@ -0,0 +1,57 @@
+# Presenting your Annotations
+
+In this exercise we are going to create a presentation of our annotations using the [Annona Storyboard viewer](https://ncsu-libraries.github.io/annona/) by Niqui O'Neill from NC State University Libraries. This will demonstrate the interoperability of these annotations and also provide an option for the end of week projects. Annona is a powerful tool to create stories from annotations and supports a wide variety of use cases. The most important one for this lesson is to support annotations created by the SimpleAnnotationServer (SAS).
+
+The overall process is as follows:
+
+ * Create your annotations in SAS
+ * Get the link to your annotation list for a canvas (see previous page).
+ * Pass the Annotation list URL to Annona:
+
+`http://iiif.gdmrdigital.com/annona/index.html?iiif-content=[Annotation List URL]`
+
+If you took the option of annotating the Manifest in your Workbench then you can go ahead and use Annona straight away. The URL is in the following form:
+
+[http://iiif.gdmrdigital.com/annona/index.html?iiif-content=http://localhost:8887/annotations1.json](http://iiif.gdmrdigital.com/annona/index.html?iiif-content=http://localhost:8887/annotations1.json)
+
+If you used the `manifest2.json` in your Chrome Web Server there are a few extra steps.
+
+## Step 1 Find your Manifest ID
+
+The cause of this issue is the value of `@id` in your manifest doesn't match the URL that you type into the address bar of your browser. For example if you open up your manifest (http://localhost:8887/manifest2.json). You will see something similar to the following:
+
+```
+{
+ "@context": "http://iiif.io/api/presentation/2/context.json",
+ "@id": "http://3063ff10-9dcd-47c4-a687-48df47f2c245",
+ "@type": "sc:Manifest",
+ "label": "Glen's fantastic manifest",
+```
+
+and the issue is `@id` should be:
+
+```
+ "@id": "http://localhost:8887/manifest2.json",
+```
+
+The effect of this is that SAS has been pointing the annotations to `http://3063ff10-9dcd-47c4-a687-48df47f2c245` rather than `http://localhost:8887/manifest2.json`. For most tools like Mirador, this wouldn't be a big issue but Annona is one of the few that follows the links from the AnnotationList to the Manifest rather than from the Canvas to the AnnotationList.
+
+The id issue is an important point to remember and applies to Manifests, Annotation lists and Collections. The `@id` should always match the URL you put in the browser to get the JSON. This self referencing id is sometimes referred to as resolvable. For example the `@id` is __resolvable__. The original id (`http://3063ff10-9dcd-47c4-a687-48df47f2c245`) was generated by the Bodleian Manifest Editor and is meant to be unique but can't be resolvable as the Manifest Editor doesn't know where you are going to put the Manifest.
+
+__BUT__ for the workshop we haven't asked you to change the `@id` because if you all changed it to `http://localhost:8887/manifest2.json` when you went to SAS all of the annotations would have been combined and it would have caused chaos!
+
+## Step 2 Fix your Annotation list
+
+The fix we are going to do is to do a search and replace in the Annotation list and replace all instances of the temporary manifest id (`http://3063ff10-9dcd-47c4-a687-48df47f2c245`) with the real URL to the manifest (`http://localhost:8887/manifest2.json`).
+
+## Step 3 Navigate through your annotations
+
+Once this is done you should be able to view your annotations in the Storyboard viewer by using the following URL:
+
+`http://iiif.gdmrdigital.com/annona/index.html?iiif-content=[URL to your Annotations List]`
+
+If you named your annotations `annotations1.json` the link would be:
+
+[http://iiif.gdmrdigital.com/annona/index.html?iiif-content=http://localhost:8887/annotations1.json](http://iiif.gdmrdigital.com/annona/index.html?iiif-content=http://localhost:8887/annotations1.json)
+
+
diff --git a/dcmi-workshop/part4/annotations-exercises.md b/dcmi-workshop/part4/annotations-exercises.md
new file mode 100644
index 00000000..9e4204fb
--- /dev/null
+++ b/dcmi-workshop/part4/annotations-exercises.md
@@ -0,0 +1,79 @@
+# Annotation Exercise with Mirador
+
+In this example we are going to have a look at Annotating in Mirador 2. Mirador 3 now supports creating annotations so future workshops will probably be based on Mirador 3.
+
+During the session I will go through the steps and feel free to follow along although if you get lost you can follow the instructions below.
+
+## Step 1 - Open Mirador
+
+ * Go to [https://deploy-preview-13--mirador.netlify.app/demo/](https://deploy-preview-13--mirador.netlify.app/demo/)
+ * __Note__ now Mirador 3 is released you have to use the link above as they have moved Mirador 3 to the front page of [https://projectmirador.org](https://projectmirador.org).
+
+### A quick intro into using Mirador:
+
+The image below shows a circle around the cross at the top left of the image. Use this to close one of the windows. Then click the 4 rectangles to drop down a menu where you can select **Replace Object**. Click this to view other manifests.
+
+![image](images/annos_mirador.png)
+
+Select a Manifest by clicking on one of the rows or add your own manifest in the 'Add new object from URL'.
+
+![image](images/annos_select_manifest.png)
+
+## Step 2 - Start annotating:
+Click the speech bubble on the top left
+
+![image](images/annos_toggle_annotations.png)
+
+Lots of options:
+
+![image](images/annos_anno_options.png)
+
+From left to right the buttons are:
+ * Speech bubble - hide annotation buttons
+ * Pointer - to select existing annotations and change the size or edit the content
+ * Rectangle - Draw a rectangle annotation
+ * Oval - Draw a Oval annotation
+ * Freeform - Go free style with the shape of the annotation
+ * Ploygon - Create a shape with straight sides
+ * Pin - Drop a pin as the target of the annotation
+ * Thickness - change the thickness of the shape's line
+ * Line colour - change the colour of the shape's line
+ * Fill - fill the shape with a colour.
+
+Once you have drawn a shape on the image you get a box where you can add content for the annotation.
+
+![image](images/annos_anno_options.png)
+
+Again you have more buttons to choose from and these are to format the content of the annotation:
+ * Make the text bold
+ * Make the text italics
+ * Insert a link
+ * Insert an image
+ * Insert a video or audio file
+ * Clear formatting
+ * and change orientation of the text (left/right or right/left)
+
+To format the text with bold or italics, type of your text then highlight it and click the bold or italics button.
+
+Once you have added some text click save. You can also add a tag if you like.
+
+You will then see a box appear and if you put your mouse over the box you will see the text you entered:
+
+![image](images/annos_created.png)
+
+Take 5 minutes to play around creating annotations so you get a feel for how it works. Also think on the following questions:
+
+ * What type of project would this be useful for?
+ * What might it not work so well with?
+
+## Where are these annotations stored?
+
+This version of Mirador stores the annotations in the browser local storage. This means:
+
+ * They are only accessible on your machine
+ * They are not permanent and may disappear
+ * Its the perfect storage location for a demo site
+
+## How do we make these annotations more permanent?
+
+With an Annotation Store.
diff --git a/dcmi-workshop/part4/annotations-sas.md b/dcmi-workshop/part4/annotations-sas.md
new file mode 100644
index 00000000..684a3e3e
--- /dev/null
+++ b/dcmi-workshop/part4/annotations-sas.md
@@ -0,0 +1,75 @@
+# Creating and downloading Annotations
+
+In this tutorial we are going to annotate an image from your own manifest using a recently released version of the SimpleAnnotationServer. Once we have finished annotating we are going to view the annotations in a viewer which isn't connected to the annotation server.
+
+The major difference with this new version of the SimpleAnnotationServer is that you are asked to login and you will have a collection of Manifests that you have annotated. The previous version only had a single user so everyone could see and edit all of the annotations. In this version only you can see your annotations until you publish them. The high level process is as follows:
+
+ * Step 1: Load your manifest into the Annotation server
+ * Step 2: Create your annotations
+ * Step 3: Share your annotations
+
+There are two options for getting a Manifest to Annotate.
+
+### Option 1 use the Workbench
+
+This option uses the Manifest you uploaded to the workbench in the [Publishing your Manifest](../part3/workbench/) guide. To use this manifest you need to copy the manifest URL by going to Workbench, Manifests tab and right clicking on the IIIF logo and select `Copy link`. This will copy the Manifest URL to your clipboard.
+
+![image](images/workbench_iiif_link.png)
+
+### Option 2 Use any public IIIF manifest
+
+If you didn't manage to get a manifest in the previous session you can use any IIIF Manifest. My personal favorite is:
+
+https://damsssl.llgc.org.uk/iiif/2.0/4389767/manifest.json
+
+## Step 1: Load your manifest into the Annotation server
+
+### Login to SAS
+ * Navigate to https://dev.gdmrdigital.com/ and click the Log in / Sign Up link.
+ * This will take you to the following screen where you can choose to either login using your Google or Github accounts
+
+![image](images/sas/login.png)
+
+Unlike the workbench SAS doesn't write to your Google drive or GitHub account. The GitHub/Google methods are purely used to provide authentication to SAS with all of the data being stored on the SAS server.
+
+### Load your manifest into SAS:
+Once you have logged in you will be presented with the following collection screen:
+
+![image](images/sas/empty_collection.png)
+
+ * Now click the Add IIIF manifest (URL) link and enter the URL to your manifest as below.
+ * If you are using the Workbench use the URL copied from the IIIF logo.
+
+![image](images/sas/add_manifest.png)
+
+ * Then click Add. Depending on how many pages the manifest takes this might take a minute or two to index.
+ * Once your manifest is loaded you should see it appear in your default Collection:
+
+![image](images/sas/manifest.png)
+
+## Step 2: Create your annotations
+
+ * Now we have the manifest loaded into your SAS account we can start annotating.
+ * Click the blue "Annotate in Mirador" button.
+ * This should open up your manifest in Mirador
+ * Navigate to a page you want to annotate then click the speech bubbles at the top right to start annotating.
+
+![image](images/sas/annotate.png)
+
+## Step 3: Share your annotations
+
+Once you have finished annotating return to the collections screen by clicking the `Home` link. We are now going to generate a copy of your Manifest with links to your annotations. The SimpleAnnotationServer provides this functionality by clicking on the Share button.
+
+![image](images/sas/share-annos.png)
+
+Once you click on the Share link the SimpleAnnotationServer will retrieve a copy of your manifest from the Workbench, add links to the annotation lists per canvas and add a link to the Search service. It will then story a copy of this new manifest in SAS for you to use. Once it has generated this new manifest you should see the screen below:
+
+![image](images/sas/share-annos-page.png)
+
+Click on the UV link or Mirador link to see your annotations in these viewers which aren't connected to an annotation server. The annotations that these viewers are reading come from the manifest.
+
+## Review
+
+Using these instructions you have a manifest which points to annotation lists and a search service that is hosted by the Simple Annotation Server (SAS). If you add more annotations using SAS they will instantly appear in the new manifest that SAS created. The newly created manifest can be shared with others and will be available as long as the SAS server is running.
+
+In the next section we will look at extracting the Annotations we created using SAS so they can be linked to from your original Workbench manifest. This will create a read only version of the annotations and they will be available through the workbench.
diff --git a/dcmi-workshop/part4/annotations-stores-install.md b/dcmi-workshop/part4/annotations-stores-install.md
new file mode 100644
index 00000000..70bfcdd9
--- /dev/null
+++ b/dcmi-workshop/part4/annotations-stores-install.md
@@ -0,0 +1,81 @@
+# Installing an Annotation Server (Advanced)
+
+We are now going to attempt to install an Annotation Server locally. This is useful if you want to try out your own annotations and keep them private. This exercise will need you to run some command line commands.
+
+A summary of the commands we will be using are:
+
+| Command | Description |
+| --- | --- |
+| `cd` | Change directory |
+| `ls` | list directory |
+| `pwd` | to show you where you are (Print Working Directory) |
+
+For this you will need:
+
+## Prerequisites
+
+### Java
+
+If you followed the Cantaloupe or Static Images exercise as part of the Image API session you may already have this. If not you will need Java 11 installed.
+
+ - [Downloading Java 11](https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html)
+
+To verify you have the correct package installed, you can run the following command from a terminal or command prompt:
+
+```sh
+$ java -version
+# java version "1.11.0_102"
+```
+
+You should see version `1.11.x`.
+
+## Step 1:
+ * Download the `sas.zip` file from the latest SimpleAnnotationServer release:
+
+[https://github.com/glenrobson/SimpleAnnotationServer/releases](https://github.com/glenrobson/SimpleAnnotationServer/releases)
+
+![image](images/annos_sas_download.png)
+
+## Step 2:
+ * Extract the zip file into a `iiif-workshop` directory.
+ * __On windows__ make sure it is extracted by right click on the file and uncompressing.
+ * __Note__: this doesn't need to be in your Chrome Web server directory
+
+## Step 3:
+ * In your terminal window `cd` into the sas directory which should have been created in the last step.
+
+```
+MacBook-Pro:tmp gmr$ cd sas
+MacBook-Pro:sas gmr$ ls
+dependency simpleAnnotationStore.war
+```
+
+## Step 4:
+ * Run the SimpleAnnotationStore:
+
+```java -jar dependency/jetty-runner.jar --port 8888 simpleAnnotationStore.war```
+
+## Step 5:
+ * Navigate to http://localhost:8888/index.html
+ * And you should see Mirador
+ * Navigate to an item and make an annotation. Does it save? If not ask for help
+
+## Step 6:
+ * Now add your manifest
+ * Go to http://localhost:8888/index.html
+ * Go to the list of manifests (click the big plus sign or if you are viewing a manifest click the four boxes at the top left and select 'newObject').
+ * In the list of manifests paste the link to your manifest http://127.0.0.1:5500/manifest.json into the addNewObject text field and click `load`.
+ * You should now see:
+
+![image](images/annos_mirador_addItem.png)
+
+## Step 7:
+ * Click on your manifest in the list
+ * Add some annotations to this manifest. Do they save?
+ * You should now be able to use the SimpleAnnotationServer to save and search annotations.
+
+Extras:
+
+ * [Loading a Newspaper example with OCR](https://github.com/glenrobson/SimpleAnnotationServer/blob/master/doc/PopulatingAnnotations.md)
+ * [Download annotations](https://github.com/glenrobson/SimpleAnnotationServer/blob/master/doc/DownloadAnnotations.md)
+ * Note as well as storing Static Images you can also host manifests and annotation lists using GitHub pages. For details on loading content to Github see the [Publishing your annotated Manifest](workbench.html).
diff --git a/dcmi-workshop/part4/annotations-stores-results.md b/dcmi-workshop/part4/annotations-stores-results.md
new file mode 100644
index 00000000..9332dd97
--- /dev/null
+++ b/dcmi-workshop/part4/annotations-stores-results.md
@@ -0,0 +1,114 @@
+# Results
+
+Feel for the volunteers who did all 1,000 pages!
+
+Exercises:
+ * Navigate to somebody else's section, do you see the annotations?
+ * Take the Manifest and view it in http://projectmirador.org/. The manifest is https://iiif.gdmrdigital.com/nlw/bor.json
+ * Do you see the annotations?
+ * Take the Manifest to the Universal Viewer: https://universalviewer.io/
+ * What do you see?
+
+
+## Looking at the annotation:
+
+```
+{
+ "@id" : "http://35.177.224.176:8888/annotation/1559731764132",
+ "@type" : "oa:Annotation",
+ "dcterms:created" : "2019-06-05T10:49:24",
+ "resource" : [ {
+ "@id" : "_:b2",
+ "@type" : "dctypes:Text",
+ "http://dev.llgc.org.uk/sas/full_text" : "Ty.Sub.Lt. Eric Hugh Allan R.N.R Bombala",
+ "format" : "text/html",
+ "chars" : "
+ Ty.Sub.Lt.
+ Eric Hugh Allan
+ R.N.R
+ Bombala
+
+```
+
+This uses RDF/A which is linked data hidden inside HTML. The HTML is what Mirador displays in the annotation but it can also be loaded to a Linked Data database and queried. For example this is looking at all the places listed in the book and putting them on a heat map:
+
+![image](images/annos_bor_stats_map.png)
+
+and this is looking at the numbers lost per ship:
+
+![image](images/annos_bor_ships_lost.png)
+
+and doing a bit more research I found:
+
+![image](images/annos_bor_sailors_lost.png)
+
+and a Newspaper article and blog post:
+
+![image](images/annos_bor_newspaper.png)
+
+and this can be tied together into a presentation using the Exhibit tool:
+
+[https://exhibit.so/exhibits/vjxZwSD0sgKKzQhU4r7i](https://exhibit.so/exhibits/vjxZwSD0sgKKzQhU4r7i)
+
+
+A full export of the data is available at: https://github.com/NLW-paulm/BoR-annotations
+
+## Search
+
+Looking at the Manifest in the Universal Viewer:
+
+[https://universalviewer.io/examples/#?manifest=https://iiif.gdmrdigital.com/nlw/bor.json](https://universalviewer.io/examples/#?manifest=https://iiif.gdmrdigital.com/nlw/bor.json)
+
+We can see a search box. Can you search for the annotation you created?
+
+So how did that work?
+
+Lets have a look at the Manifest: https://iiif.gdmrdigital.com/nlw/bor.json
+
+The key part is this service definition:
+
+```
+"service": {
+
+ "profile": "http://iiif.io/api/search/0/search",
+ "@id": "https://sas.gdmrdigital.com/search-api/cabbb6de5303266bd9adc6cb23fb5c1b/search",
+ "@context": "http://iiif.io/api/search/0/context.json"
+
+},
+```
+
+Which tells the UniversalViewer that there is a IIIF Search service available at the following location:
+
+http://sas.gdmrdigital.com/search-api/cabbb6de5303266bd9adc6cb23fb5c1b/search
+
+SAS contains a basic search implementation but you can see the results here if you search for Cardiff:
+
+http://sas.gdmrdigital.com/search-api/cabbb6de5303266bd9adc6cb23fb5c1b/search?q=Cardiff
+
+The search API is meant to replicate the PDF type search within so the parameters you can use are limited:
+
+https://iiif.io/api/search/0.9/#421-query-parameters
+
+
diff --git a/dcmi-workshop/part4/annotations-stores.md b/dcmi-workshop/part4/annotations-stores.md
new file mode 100644
index 00000000..caca200c
--- /dev/null
+++ b/dcmi-workshop/part4/annotations-stores.md
@@ -0,0 +1,89 @@
+# Annotation Stores
+
+Like image servers there are a number to choose from:
+
+https://github.com/IIIF/awesome-iiif#annotations
+
+Popular ones include:
+ * annotot - Simple IIIF annotations mounted in a Ruby on Rails applications by Jack Reed
+ * Elucidate - Java and Postgres annotation server by Digirati
+ * SimpleAnnotationServer - Java annotation server backed by an Apache Jena triple store, Elastic Search, or Solr. - developed while working at the NLW
+
+A really interesting recent development is Annonatate from [Niqui O'Neill](https://twitter.com/niqui_o) from NCSU Libraries. This is a hosted annotation store which connects to your GitHub account and allows you to store your annotations publicly using GitHub Pages website. You can see examples of the annotations it creates [here](https://github.com/iiif-test/annonatate). There is a demo video here:
+
+
+
+and the application is available at [https://annonatate.herokuapp.com/](https://annonatate.herokuapp.com/).
+
+For this exercise we are going to be using the [SimpleAnnotationServer](https://github.com/glenrobson/SimpleAnnotationServer) and we are going to work on a copy of the Welsh Centre for International Affairs' Book of Remembrance hosted by the National Library of Wales. The live version of the books is available at:
+
+https://viewer.library.wales/4642022
+
+### DOIs (Digital Object Identifiers)
+
+As an aside a question came up about DOIs. When I worked at the National Library of Wales we created DOIs for our IIIF implementation:
+
+http://hdl.handle.net/10107/4642022
+
+This should resolve to the viewer link above. We didn't create a DOI for the Manifest because this was a 'presentation' of the resource rather than a constituent of the resource. IIIF aims to be good for presentation and doesn't serve the needs required for preservation.
+
+### Transcribing the Book of Remembrance
+
+This example will demonstrate the following:
+
+ * Share some experiences of using Mirador in a volunteer lead example
+ * Use of Mirador with an annotation server
+ * Show some of the customisation possibilities of Mirador 2
+
+We are going to use the following version which has an annotation server connected to Mirador:
+
+http://sas.gdmrdigital.com/examples/bor/lcc-en.html
+
+Mirador doesn't cope well with multiple people annotating the same page at the same time so if you can randomly choose a section:
+
+ * Cavalry
+ * Corps of Lancers
+ * Grenadier Guards
+ * The Queen's (Royal West Surrey Regiment)
+ * The King's Own (Royal Lancaster Regiment)
+ * Northumberland Fusiliers
+ * Norfolk Regiment
+ * The Prince of Wales's Own (West Yorkshire Regiment)
+ * Canadian Expeditionary Force Service in France (right at the bottom of the book)
+ * New Zealand Expeditionary Force (also at the bottom)
+
+For this exercise only transcribe a few lines to get the feel of how the annotation would work in a practical example. As part of this project we wanted to capture not just a transcription but also the fields to allow research so we customised Mirador to capture the different fields.
+
+To annotate a name:
+
+## Step 1:
+ * To navigate make sure the pen and paper at the top left is disabled
+ * Get the line in full view
+ * Click the pen and paper to start annotating
+ * Draw a box as well as you can around the name
+
+![image](images/anno_bor_start.png)
+
+ * Now type what you see (don't worry about the buttons yet). So in this example I would type `Ty.Sub.Lt. Eric Hugh Allan R.N.R Bombala`
+
+![image](images/anno_bor_text.png)
+
+ * Once you've typed everything double click on a word or highlight two words if required.
+
+![image](images/anno_bor_highlight.png)
+
+ * Now click the button that matches the type of the text. In this example I would click name and see the text go black:
+
+![image](images/anno_bor_typed.png)
+
+ * Now do the rest:
+
+![image](images/anno_bor_finshed.png)
+
+ * Then click save:
+
+![image](images/anno_bor_view_anno.png)
+
+## Crowdsourcing Results
+
+See [Book of Remembrance - Results](annotations-stores-results.md).
diff --git a/dcmi-workshop/part4/iiif-search-api-sas1.md b/dcmi-workshop/part4/iiif-search-api-sas1.md
new file mode 100644
index 00000000..7b3a0d48
--- /dev/null
+++ b/dcmi-workshop/part4/iiif-search-api-sas1.md
@@ -0,0 +1,51 @@
+# Searching Annotations
+
+In the last session we looked at downloading annotations so they could be linked to a manifest. In this session we are going to look at adding a Search service to the manifest so that the annotations you created can be searched using a IIIF Viewer. The procedure to achieve this is:
+
+ * Index your manifest with the SimpleAnnotationServer
+ * Add a link to the Search service in your manifest
+ * Test with a IIIF Viewer
+
+
+## Step 1: Index your manifest
+The SimpleAnnotationServer supports the IIIF Search API but for it to be able to provide this service it needs to index the manifest so it as a list of Canvas Ids to search. To do this navigate to:
+
+http://sas.gdmrdigital.com/uploadManifest.xhtml
+
+and upload your Manifest. We have used http://localhost:8887/manifest2.json in previous examples.
+
+If this is successful then you will see a page similar to the following:
+
+![image](images/anno_search.png)
+
+This page gives details on how to add a link to the search service. Copy the URL circled in Red in the image above.
+
+## Step 2: Link Manifest to Search Service
+
+Now open up your Manifest in Atom and it should look like this:
+
+![image](images/annos_atom_pre_search.png)
+
+Now add the following JSON to the manifest after the `label`:
+
+```
+"service": {
+ "profile": "http://iiif.io/api/search/0/search",
+ "@id": "SEARCH_ID",
+ "@context": "http://iiif.io/api/search/0/context.json"
+},
+```
+
+Now replace the SEARCH_ID with the URL you copied earlier. In my example it would look like:
+
+![image](images/annos_search_api_atom.png)
+
+## Step 3: Test with a IIIF Viewer
+Test your manifest with the Universal Viewer to see if has worked.
+
+ * Open up http://universalviewer.io/
+ * and paste your manifest http://localhost:8887/manifest2.json in the View a IIIF Manifest section
+ * Does it show a search box?
+ * Has it found an annotation? Note the search is case sensitive.
+ * If you add an annotation in Mirador does it show up in the search results in the UV?
+
diff --git a/dcmi-workshop/part4/iiif-search-api.md b/dcmi-workshop/part4/iiif-search-api.md
new file mode 100644
index 00000000..92e20778
--- /dev/null
+++ b/dcmi-workshop/part4/iiif-search-api.md
@@ -0,0 +1,56 @@
+# Searching Annotations
+
+In the last session we looked at downloading annotations so they could be linked to a manifest. In this session we are going to look at adding a Search service to the manifest so that the annotations you created can be searched using a IIIF Viewer. The procedure to achieve this is:
+
+ * Find the SAS IIIF Search URL
+ * Add a link to the Search service in your manifest
+ * Test with a IIIF Viewer
+
+
+## Step 1: Find the IIIF Search URL
+
+If you navigate to your collections page either by clicking on the Home link or by navigating to:
+
+https://dev.gdmrdigital.com/collections.xhtml
+
+On the collections page click "Browse Annotations":
+
+![image](images/sas/collections.png)
+
+and then you will be taken to the Manifest page. Now select the Configure IIIF Search link highlighted below.
+
+![image](images/sas/manifest-search.png)
+
+The IIIF search page gives details on how to add a link to the search service. Copy the URL circled in Red in the image below:
+
+![image](images/sas/search-url.png)
+
+## Step 2: Link Manifest to Search Service
+
+Now open up your Manifest in VS Code and it should look like this:
+
+![image](images/annos_vscode_pre_search.png)
+
+Now add the following JSON to the manifest after the `label`:
+
+```
+"service": {
+ "profile": "http://iiif.io/api/search/0/search",
+ "@id": "SEARCH_ID",
+ "@context": "http://iiif.io/api/search/0/context.json"
+},
+```
+
+Now replace the SEARCH_ID with the URL you copied earlier. In my example it would look like:
+
+![image](images/sas/search-vscode.png)
+
+## Step 3: Test with a IIIF Viewer
+Test your manifest with the Universal Viewer to see if has worked.
+
+ * Open up http://universalviewer.io/
+ * and paste your manifest http://127.0.0.1:5500/manifest2.json in the View a IIIF Manifest section
+ * Does it show a search box?
+ * Has it found an annotation?
+ * If you add an annotation in Mirador does it show up in the search results in the UV?
+
diff --git a/dcmi-workshop/part4/images b/dcmi-workshop/part4/images
new file mode 120000
index 00000000..43c002db
--- /dev/null
+++ b/dcmi-workshop/part4/images
@@ -0,0 +1 @@
+../../iiif-online-workshop/day-four/images
\ No newline at end of file
diff --git a/dcmi-workshop/part4/sharing.md b/dcmi-workshop/part4/sharing.md
new file mode 100644
index 00000000..6dfd2229
--- /dev/null
+++ b/dcmi-workshop/part4/sharing.md
@@ -0,0 +1,23 @@
+# Sharing your Annotations
+
+Now you have created your annotations you want to share them with others. To do this make sure you are back on your Collections screen and have the collection with your Manifest selected.
+
+![SAS Home screen](images/annos_home.png)
+
+Now click the share link:
+
+![SAS share button](images/annos_share.png)
+
+Opening the Share screen will create a copy of the original Manifest and add links to the Annotations and to a IIIF Search service. The share screen gives you a link to the copied Manifest and also two large buttons to open the Manifest in Mirador and the Universal Viewer.
+
+![Share Manifest Screen](images/manifest_share.png)
+
+If you click on the Mirador link you will be taken to a public copy of Mirador. Once you navigate to the page you have annotated you should be able to click the 'hamburger' symbol to open up the left hand panel. Once open you can click on either the Annotations panel or Search Panel.
+
+![Mirador Annotations](images/mirador_annos.png)
+
+If you go back to the Share screen and click on the Universal Viewer link you will be taken to the following screen:
+
+![UV Annotations](images/uv_annos.png)
+
+Note the Universal Viewer doesn't support annotations in the same way as Mirador. To view the annotations you have to search for them using the search bar at the bottom.
diff --git a/dcmi-workshop/part4/workbench.md b/dcmi-workshop/part4/workbench.md
new file mode 100644
index 00000000..fbfbeb8b
--- /dev/null
+++ b/dcmi-workshop/part4/workbench.md
@@ -0,0 +1,16 @@
+# Publishing your annotated Manifest
+
+Now you have finished editing your manifest and tested it is working you can upload it to your Workbench so you can share it with others. The reason we have been developing with the Chrome Web Server version is that GitHub caches all of the Website files and so it takes a while for the changes you make to appear on the Website.
+
+To update the manifest in Workbench click the replace button highlighted below:
+
+![image](images/workbench-replace.png)
+
+This will ask you to upload a new version of the Manifest and then will wait for the website to be updated. When you see the links to Mirador and the UV appear it should be OK to view the latest version of the manifest. You not see your changes due to the caching issue mentioned earlier so if this is the case open up a new private window or click Shift and refresh to get the latest copy.
+
+You should now be able to see your annotations and search service in the following places:
+
+ * Mirador 3: https://projectmirador.org/
+ * Universal Viewer: http://universalviewer.io/
+ * Annona: http://iiif.gdmrdigital.com/annona/index.html?iiif-content=[annotations_url]
+
diff --git a/dcmi-workshop/styles b/dcmi-workshop/styles
new file mode 120000
index 00000000..6692a04a
--- /dev/null
+++ b/dcmi-workshop/styles
@@ -0,0 +1 @@
+../iiif-online-workshop/styles
\ No newline at end of file
diff --git a/iiif-5-day-workshop/.gitignore b/dhsi/.gitignore
similarity index 100%
rename from iiif-5-day-workshop/.gitignore
rename to dhsi/.gitignore
diff --git a/dhsi/GuestPresentations.md b/dhsi/GuestPresentations.md
new file mode 100644
index 00000000..13dfcd43
--- /dev/null
+++ b/dhsi/GuestPresentations.md
@@ -0,0 +1,75 @@
+# Guest presentations
+During the different workshops we have organised a number of Guest presentations around different tools you can use with IIIF. These are optional videos but you may find them useful for your course project. The presentations in reverse chronological order are:
+
+ * [Exhibit](#exhibit)
+ * [IIIF and AI](#iiif-and-ai)
+ * [Storiiies – a free online storytelling platform for everyone](#storiiies-–-a-free-online-storytelling-platform-for-everyone)
+ * [Supporting Teaching and Scholarship using Omeka and IIIF](#supporting-teaching-and-scholarship-using-omeka-and-iiif)
+ * [IIIF and AV](#iiif-and-av)
+ * [Crowdsourced Transcription using FromThePage & IIIF](#crowdsourced-transcription-using-fromthepage--iiif)
+
+### Exhibit
+Guest lecture by Andrew Wilson, University of St Andrews and Ed Silverton, Mnemoscene
+
+Andrew and Ed give a demo of their Exhibit tool. Exhibit was developed in response to the challenge of providing an engaging and interactive experience using the museums and special collections. It addresses the sensory and tactile encounters students would have with original material
+
+The Exhibit tool is available at: [https://exhibit.so/](https://exhibit.so/)
+
+
+
+This was recorded on the 28th of October 2020.
+
+### IIIF and AI
+Guest lecture by Jack Reed, Stanford University
+
+This workshop will showcase several projects and uses for using machine learning with IIIF content. Based on https://iiif-ml-workshop.netlify.app/docs/machine-learning-iiif/intro
+
+
+
+This was recorded on the 9th of June 2020.
+
+### Storiiies – a free online storytelling platform for everyone
+Guest lecture by Andy Cummins, Cogapp
+
+Take people on a journey round your images. Pan, zoom and annotate points of interest. Whether you are telling the story of an Old Master painting, exploring the cover artwork of your favourite album or teaching a remote cohort the intricacies of an ancient papyrus, Storiiies enables clear, elegant and engaging online storytelling.
+
+In this presentation Andy Cummins from Cogapp will demonstrate both the editing and viewing experience of Storiiies enabling all attendees to begin creating their own stories. He will describe how you can quickly reuse the manifests and annotation lists created by the system in Mirador and other IIIF compatible viewers.
+
+Andy is keen to hear any feedback on Storiiies to help direct future enhancements for the good of the wider IIIF community.
+
+
+
+This was recorded on the 10th of June 2020.
+
+### Supporting Teaching and Scholarship using Omeka and IIIF
+Guest lecture by Rachel Di Cresce, University of Toronto
+
+Rachel Di Cresce, Project Librarian, will review how a set of IIIF plugins developed by the University of Toronto Library for the Omeka Classic platform. The talk will outline how IIIF is used at the library and how Omkea supports classes and faculty research.
+
+
+
+
+This was recorded on the 10th of June 2020.
+
+### IIIF and AV
+Guest presentation by Andy Irving, British Library.
+
+Andy Irving from the British Library will talk about how they are using the new A/V features in IIIF version 3.0.
+
+
+
+This was recorded on the 11th of June 2020.
+
+### Crowdsourced Transcription using FromThePage & IIIF
+Guest Presentation by Sara and Ben Brumfield from Brumfield labs.
+
+A hands on workshop that will walk you through:
+ * Ingesting IIIF material into FromThePage for transcription
+ * Configuring transcription conventions and privacy
+ * Discussion of how research projects have used transcription
+ * Advanced features in FromThePage: Translation, OCR Correction, Field Based Transcription
+ * Exporting & using FromThePage's IIIF API to pull transcriptions out for reuse
+
+
+
+This was recorded on the 11th of June 2020.
diff --git a/dhsi/README.md b/dhsi/README.md
new file mode 100644
index 00000000..0b99a252
--- /dev/null
+++ b/dhsi/README.md
@@ -0,0 +1,14 @@
+# Introduction
+
+Instructors:
+* Niqui O'Neill
+* Jeffrey C. Witt
+
+
+
+
+This course will introduce students to the basic concepts and technologies that make IIIF possible, allowing for guided, hands-on experience in installing servers and clients that support IIIF, and utilizing the advanced functionality that IIIF provides for interactive image-based research, such as annotation.
+
+We will use this site to introduce lessons and exercises. Please use the sidebar navigation to move from day to day, session to session, topic to topic.
diff --git a/dhsi/SUMMARY.md b/dhsi/SUMMARY.md
new file mode 100644
index 00000000..0d8981aa
--- /dev/null
+++ b/dhsi/SUMMARY.md
@@ -0,0 +1,75 @@
+## Monday
+
+
+1. [Introductions](day-one/introductions.md)
+2. [Week Overview](day-one/week-overview.md)
+3. [What is IIIF](day-one/whatisiiif.md)
+4. [Why use IIIF](day-one/whyiiif.md)
+5. [The Image API](day-one/image-api.md)
+6. [Exercise - Building an Image Viewer](day-one/image-viewer-exercise.md)
+7. [Introduction to Image Hosting](day-one/image-hosting.md#introduction-to-image-hosting)
+ 1. [IIIF workbench](day-one/workbench.md)
+ 2. [Level 0 Static](day-one/level-0-static.md)
+ 3. [Cantaloupe](day-one/cantaloupe.md)
+8. [Exercise - Integrate Your Images into Your Viewer](day-one/image-hosting.md#exercise)
+
+## Tuesday
+
+
+1. [OpenSeadragon](day-two/openseadragon.md)
+2. [Reflections on using the IIIF Image API](day-two/reflections.md)
+3. [Json Crash Course](day-two/json-crash-course.md)
+4. [IIIF Presentation API Overview](day-two/presentation-api.md)
+5. [Exercise - Create a Manifest](day-two/manifest-exercise.md)
+ 1. [Bodleian (V2)](day-two/bodleian-editor/README.md)
+ 2. [Digirati (V3)](day-two/digirati-editor/README.md)
+ 3. [Digirati A/V](day-two/digirati-editor/Add_video_manifest.md)
+7. [Adding Structures/Ranges to your Manifest](day-two/ranges.md)
+8. [Auto generating Manifests](day-two/auto-generate-manifest.md)
+9. [Publishing Manifests](day-two/publishing-manifests.md)
+ 1. [Local server](day-two/visual_studio_setup/README.md)
+ 2. [Workbench](day-two/workbench/README.md)
+ 3. [GitHub](day-two/github-publishing.md)
+10. [IIIF Finding and Using Manifests](day-two/finding-and-using-manifests.md)
+11. [Using/Embedding/Configuring IIIF Viewers](day-two/configuring-viewers.md)
+ 1. [Mirador]((day-two/configuring-viewers.md#mirador))
+ 2. [Universal Viewer](day-two/uv.md)
+ 3. [Annona](day-two/annona.md)
+ 4. [Clover](day-two/clover.md)
+ 5. [Navplace viewer](day-two/navplace.md)
+12. [Work Period]((day-two/configuring-viewers.md#work-period))
+
+## Wednesday
+
+
+1. [Introduction to Annotations](day-three/annotations.md)
+2. [Creating Annotations in Annotorious](day-three/annotorious.md)
+2. [Creating Annotations in Mirador](day-three/creating-annotations.md)
+3. [Annotation Stores](day-three/annotations-stores.md)
+4. [Annotation Server Install](day-three/annotations-stores-install.md)
+5. [Simple annotation server](day-three/annotations-sas.md)
+6. [Annonatate](day-three/annonatate.md)
+7. [Storytelling editors](day-three/exhibit.md)
+8. [Recogito](day-three/recogito.md)
+9. [Other annotation platforms](day-three/annotation-other.md)
+10. [Adding annotations to a manifest](day-three/annotation-in-manifest.md)
+11. [IIIF Search API](day-three/iiif-search-api.md)
+12. [Reusing Annotations in your website](day-three/annona.md)
+13. More examples
+
+## Thursday
+
+
+
+1. [Advanced used cases](day-four/advanced-use-cases.md)
+2. [Collections](day-four/collections.md)
+1. [Wax](day-four/wax.md)
+2. [Introduction to Jekyll and GitHub pages](day-four/github-jekyll-pages.md)
+
+
+
+
diff --git a/dhsi/book.json b/dhsi/book.json
new file mode 100644
index 00000000..697f3147
--- /dev/null
+++ b/dhsi/book.json
@@ -0,0 +1,25 @@
+{
+ "title": "IIIF Online Workshop",
+ "plugins": [
+ "include",
+ "theme-default",
+ "toggle-chapters",
+ "git-author",
+ "toggle-chapters"
+ ],
+ "gitbook": "3.2.3",
+ "styles": {
+ "website": "styles/website.css"
+ },
+ "pluginsConfig": {
+ "theme-default": {
+ "showLevel": true
+ },
+ "git-author": {
+ "position": "bottom",
+ "modifyTpl": "Last modified by {user} {timeStamp}",
+ "createTpl": "Created by {user} {timeStamp}",
+ "timeStampFormat": "YYYY-MM-DD HH:mm:ss"
+ }
+ }
+}
diff --git a/dhsi/day-five/2020.md b/dhsi/day-five/2020.md
new file mode 100644
index 00000000..9be02201
--- /dev/null
+++ b/dhsi/day-five/2020.md
@@ -0,0 +1,55 @@
+# Project Demos - 2020
+
+Demos from training sessions run in 2020.
+
+# November 2020 cohort demos
+The 6 Participants from the November 2020 session produced the following demos of their work:
+
+
+
+
+# October 2020 cohort demos
+The 14 Participants from the October 2020 session produced the following demos of their work:
+
+
+
+# September 2020 cohort demos
+The 13 Participants from the September 2020 session produced the following demos of their work:
+
+
+
+# June 2020 cohort demos
+As part of the online workshop the participants were split into 5 tutor groups with a tutor who could provide assistance and guidance. At the end of the week each tutor worked with their group to give a presentation on their projects. The results of the projects can be seen below.
+
+### Dawn’s Group
+
+
+
+### Mike’s Group
+
+
+
+### Emma’s Group
+
+### Ben’s Group
+
+
+
+### Josh’s Group
+
+
+
+### Glen’s Group
+
+
+
+## Links to projects:
+
+Some working links mentioned in the above presentations:
+
+ * [Reuniting dispersed manuscript leaves using IIIF](https://sxb891.github.io/iiifworkshop-m2/)
+ * [Trying out Mirador & annotations for transcription](https://ckarpinski.github.io/iiifworkshop-m2/)
+ * [Exploring Map Annotations using IIIF](https://iiif.archivelab.org/iiif/columbus-map/manifest.json)
+ * [Exploring Chicago Aerial Surveys and Annotations using IIIF](https://www.getty.edu/art/collection/static/viewers/mirador/?manifest=https://everreau.github.io/manifest.json)
+ * [Experiiiments in IIIF - UniversalViewer, Mirador, Compariscope, Storiiies and annotations](https://noirchivist.github.io/experiiiments/)
+ * [Working with Leonardo da Vinci’s writings and drawings](https://github.com/dhsi-iiif/dhsi-iiif.github.io/tree/master/2019/giudicirni)
diff --git a/dhsi/day-five/2021.md b/dhsi/day-five/2021.md
new file mode 100644
index 00000000..3330ae2b
--- /dev/null
+++ b/dhsi/day-five/2021.md
@@ -0,0 +1,41 @@
+# Project Demos - 2021
+
+Demos from training sessions run in 2021.
+
+# September 2021 cohort demos
+
+The participants from the September 2021 session produced the following demos of their work:
+
+
+
+# July 2021 cohort demos
+
+The participants from the July 2021 session produced the following demos of their work:
+
+
+
+# May 2021 cohort demos
+
+The participants from the May 2021 session produced the following demos of their work:
+
+
+
+# April 2021 cohort demos
+
+The participants from the April 2021 session produced the following demos of their work:
+
+
+
+# March 2021 cohort demos
+
+The participants from the March 2021 session produced the following demos of their work:
+
+
+
+# February 2021 cohort demos
+
+The 8 Participants from the February 2021 session produced the following demos of their work:
+
+
+
+
diff --git a/dhsi/day-five/2022.md b/dhsi/day-five/2022.md
new file mode 100644
index 00000000..b9bb86db
--- /dev/null
+++ b/dhsi/day-five/2022.md
@@ -0,0 +1,60 @@
+# Project Demos - 2022
+
+Demos from training sessions run in 2022.
+
+# December 2022 cohort demos
+
+The participants from the December 2022 session produced the following demos of their work:
+
+
+
+# November 2022 cohort demos
+
+The participants from the November 2022 session produced the following demos of their work:
+
+
+
+# October 2022 cohort demos
+
+The participants from the October 2022 session produced the following demos of their work:
+
+
+
+# September 2022 cohort demos
+
+The participants from the September 2022 session produced the following demos of their work:
+
+
+
+# June 2022 cohort demos
+
+The participants from the June 2022 session produced the following demos of their work:
+
+
+
+
+# May 2022 cohort demos
+
+The participants from the May 2022 session produced the following demos of their work:
+
+
+
+# April 2022 cohort demos
+
+The participants from the April 2022 session produced the following demos of their work:
+
+
+
+# March 2022 cohort demos
+
+The participants from the March 2022 session produced the following demos of their work:
+
+
+
+# January 2022 cohort demos
+
+The participants from the January 2022 session produced the following demos of their work:
+
+
+
+
diff --git a/dhsi/day-five/2023.md b/dhsi/day-five/2023.md
new file mode 100644
index 00000000..9aa69dac
--- /dev/null
+++ b/dhsi/day-five/2023.md
@@ -0,0 +1,45 @@
+# Project Demos - 2023
+
+Demos from training sessions run in 2021.
+
+# December 2023 cohort demos
+
+The participants from the December 2023 session produced the following demos of their work:
+
+
+
+# September 2023 cohort demos
+
+The participants from the September 2023 session produced the following demos of their work:
+
+
+
+# July 2023 cohort demos
+
+The participants from the July 2023 session produced the following demos of their work:
+
+
+
+# May 2023 cohort demos
+
+The participants from the May 2023 session produced the following demos of their work:
+
+
+
+# April 2023 cohort demos
+
+The participants from the April 2023 session produced the following demos of their work:
+
+
+
+# March 2023 cohort demos
+
+The participants from the March 2023 session produced the following demos of their work:
+
+
+
+# February 2023 cohort demos
+
+The participants from the February 2023 session produced the following demos of their work:
+
+
\ No newline at end of file
diff --git a/dhsi/day-five/BL.md b/dhsi/day-five/BL.md
new file mode 100644
index 00000000..39344cf9
--- /dev/null
+++ b/dhsi/day-five/BL.md
@@ -0,0 +1,31 @@
+# Day 5 Project work and report back
+## Friday
+
+### Report back and demo zoom session
+ - **Aims**:
+ - Share participants work during the week
+
+
+# March 2023 cohort demos
+
+The participants from the March 2023 session produced the following demos of their work:
+
+
+
+# March 2022 cohort demos
+
+The participants from the March 2022 session produced the following demos of their work:
+
+
+
+# January 2022 cohort demos
+
+The participants from the January 2022 session produced the following demos of their work:
+
+
+
+# November 2021 cohort demos
+
+The participants from the November 2021 session produced the following demos of their work:
+
+
diff --git a/dhsi/day-five/Community.md b/dhsi/day-five/Community.md
new file mode 100644
index 00000000..4b7f4a3e
--- /dev/null
+++ b/dhsi/day-five/Community.md
@@ -0,0 +1,53 @@
+# Get involved
+
+IIIF is driven by the community and we would love to have you involved.
+
+## IIIF Slack
+[Join here](http://bit.ly/iiif-slack)
+
+Join some of the other channels:
+
+* general - general discussion and announcements
+* beginner - beginner questions lots of people to help
+* iiif-in-the-classroom - ideas for IIIF in the classroom
+* curators_of_awesome - become a curator of awesome by helping to curate: https://github.com/IIIF/awesome-iiif
+* jobs - IIIF related Job announcements
+* mirador - ask questions and see the latest developments with Mirador
+* technical - ask difficult technical questions :-)
+* wikimedia - Wikimedia related discussion
+
+## Community Calls
+
+Every two weeks topics include new starter implementation stories and the latest developments around certain topics.
+
+https://iiif.io/community/call/
+
+## Join a Community Group
+
+We have content specific community groups which organise regular calls with demos and discussions:
+
+ * [3D](https://iiif.io/community/groups/3d)
+ * [A/V](https://iiif.io/community/groups/av)
+ * [Archives](https://iiif.io/community/groups/archives)
+ * [Discovery for Humans](https://iiif.io/community/groups/D4H)
+ * [Manuscripts](https://iiif.io/community/groups/manuscripts)
+ * [Maps](https://iiif.io/community/groups/maps)
+ * [Museums](https://iiif.io/community/groups/museums)
+ * [Newspapers](https://iiif.io/community/groups/newspapers)
+ * [Outreach](https://iiif.io/community/groups/outreach)
+
+## Join a Technical Specification Group
+
+Want to help define the next version of the specification? Join a TSG group and give your use cases and contribute to the discussion.
+
+ * [Discovery](https://iiif.io/community/groups/discovery)
+ * [Maps](https://iiif.io/community/groups/maps-tsg/)
+ * [Authentication](https://iiif.io/community/groups/auth-tsg)
+ * [Content Search](https://iiif.io/community/groups/content-search-tsg)
+
+## Stay informed
+
+* [Join the quarterly newsletter](https://iiif.io/newsletter/)
+* [Join the IIIF Discuss email list](https://groups.google.com/forum/#!forum/iiif-discuss)
+
+
diff --git a/dhsi/day-five/README.md b/dhsi/day-five/README.md
new file mode 100644
index 00000000..ae914a16
--- /dev/null
+++ b/dhsi/day-five/README.md
@@ -0,0 +1,32 @@
+# Day 5 Project work and report back
+## Friday
+
+### Report back and demo zoom session
+ - **Aims**:
+ - Share participants work during the week
+
+As well as the examples below there are also examples from previous years:
+
+ * [2023](2023.md)
+ * [2022](2022.md)
+ * [2021](2021.md)
+ * [2020](2020.md)
+
+# December 2023 cohort demos
+
+The participants from the December 2023 session produced the following demos of their work:
+
+
+
+# September 2023 cohort demos
+
+The participants from the September 2023 session produced the following demos of their work:
+
+
+
+# July 2023 cohort demos
+
+The participants from the July 2023 session produced the following demos of their work:
+
+
+
diff --git a/dhsi/day-five/survey.md b/dhsi/day-five/survey.md
new file mode 100644
index 00000000..2931ccbc
--- /dev/null
+++ b/dhsi/day-five/survey.md
@@ -0,0 +1,19 @@
+# Survey
+
+We would be really grateful if you could fill in the following form. We hope to continue to improve this workshop for future participants and we would really appreciate your feedback.
+
+For those taking the course in September 2020 please fill in the following form:
+
+https://forms.gle/LwyyKHJEiteKhTvE7
+
+For those self guided folks following these material we would be grateful if you could fill in the following:
+
+https://forms.gle/FgGg57VJD7oDwVyq7
+
+Sections:
+ * Overall impressions
+ * Image API tasks
+ * Presentation API tasks
+ * Annotation tasks
+ * Support provided
+ * Suggestions
diff --git a/dhsi/day-five/thankyou.md b/dhsi/day-five/thankyou.md
new file mode 100644
index 00000000..5592cafc
--- /dev/null
+++ b/dhsi/day-five/thankyou.md
@@ -0,0 +1,32 @@
+# A big Thank You
+
+Apart from myself this course has all been run by volunteers so I would like to give a big thank you to:
+
+## Course instructors
+
+ * Mike Appleby
+ * Ben Albritton
+
+## Course Tutors
+
+ * Josh Hadro
+ * Dawn Childress
+ * Emma Stanford
+ * Mike Appleby
+ * Ben Albritton
+
+## Guest Presenters
+
+ * Sara & Ben Brumfield
+ * Andy Cummins
+ * Jack Reed
+ * Rachel Di Cresce
+ * Andy Irving
+
+## Slack helpers
+
+ * Camille Villa
+ * Andy Irving
+
+## and all of you!
+
diff --git a/dhsi/day-four/README.md b/dhsi/day-four/README.md
new file mode 100644
index 00000000..4beb67c9
--- /dev/null
+++ b/dhsi/day-four/README.md
@@ -0,0 +1,12 @@
+# Day 4 - Annotations
+## Thursday
+
+The fourth day of the workshop will focus on the annotations. Participants may find it helpful to open the video in a separate window so they can follow the workshop web pages at the same time.
+
+### IIIF and Annotations - 1 hour
+
+Glen Robson the IIIF Technical Coordinator introduces annotations and IIIF by using an annotation server and looking into the IIIF Search API.
+
+
+
+This video is also available on [YouTube](https://youtu.be/y0I5_BW1OLQ)
diff --git a/dhsi/day-four/advanced-annotations.md b/dhsi/day-four/advanced-annotations.md
new file mode 100644
index 00000000..0f191d96
--- /dev/null
+++ b/dhsi/day-four/advanced-annotations.md
@@ -0,0 +1,19 @@
+# Advanced Annotations
+
+There is unlikely to be time to cover this in the session but if your interested in other ways of doing annotation there is this [google slides](https://docs.google.com/presentation/d/1StVt_Eixt9wmFXoyPRjjlq-J1VevR7b4qvVmVs7yBWg/edit?usp=sharing) presentation. The links for the different examples are available below:
+
+ * [Georeferencer for maps](https://www.georeferencer.com/)
+ * [Stanford Georeference example](https://www.davidrumsey.com/view/georeferencer)
+ * [Final site for the Cynefin data](https://places.library.wales/)
+ * [Visualisation of the Shipping records data](https://medium.com/@404mike/shipping-records-73e3fd48a16e#.aqxgfeogl)
+ * Tribunal data
+ * Graphs: https://iiif.gdmrdigital.com/ww1-tribunal/index.html
+ * Data: https://github.com/NLW-paulm/Welsh-Tribunal-annotations
+ * [Video on how to configure the crowdsourcing system](https://www.youtube.com/playlist?list=PLMd2mmRYjSJlKs829X0z_kYueQemSfwDd)
+ * [Recogito](https://recogito.pelagios.org/)
+ * [From the Page](https://fromthepage.com/)
+ * [Indigenous Digital Archive](https://omeka.dlcs-ida.org/s/ida/page/home)
+ * [LibCrowds from the BL](https://www.libcrowds.com/collection/playbills)
+
+One of the real promises of IIIF is that once you have interoperable Images and presentation packages (Manifests) it should be easy to then take these and use them in these advanced tools. In practice once you have IIIF Images and Manifests you should be able to take them and run a crowdsourcing project using one of the tools above.
+
diff --git a/dhsi/day-four/advanced-use-cases.md b/dhsi/day-four/advanced-use-cases.md
new file mode 100644
index 00000000..a059f373
--- /dev/null
+++ b/dhsi/day-four/advanced-use-cases.md
@@ -0,0 +1,11 @@
+# Advanced Use Cases
+1. [Mirador Plugins](https://github.com/ProjectMirador/mirador-awesome)
+2. [3-D](https://iiif.io/community/groups/3d/)
+3. [NavPlace](https://iiif.io/api/extension/navplace/)
+4. [Multilingual Annotations](https://preview.iiif.io/cookbook/0346-multilingual-annotation-body/recipe/0346-multilingual-annotation-body/)
+5. [Wax](https://minicomp.github.io/wax/)
+6. [Spotlight](https://exhibits.stanford.edu/)
+7. Anything A/V
+8. [Omeka](https://training.iiif.io/advanced_iiif/modules/omeka/)
+9. [Spotlight and Annotations](https://spotlight.vatlib.it/humanist-library)
+10. [Omeka](https://training.iiif.io/advanced_iiif/modules/omeka/)
\ No newline at end of file
diff --git a/dhsi/day-four/annotating.md b/dhsi/day-four/annotating.md
new file mode 100644
index 00000000..1c437d50
--- /dev/null
+++ b/dhsi/day-four/annotating.md
@@ -0,0 +1,34 @@
+# Creating and downloading Annotations
+
+In this tutorial we are going to annotate an image from your own manifest using a very recently released version of the SimpleAnnotationStore. Once we have finished annotating we are going to test viewing and searching your annotations with a public viewer.
+
+## Step 1 find a Manifest
+
+If you haven't already go back to the [Finding Manifests](basics/guides.md) guide and find a Manifest from one of the public collections. My personal favourite is:
+
+https://damsssl.llgc.org.uk/iiif/2.0/4389767/manifest.json
+
+## Step 2 Login to SAS
+ * Navigate to https://dev.gdmrdigital.com/ and click the Log in / Sign Up link.
+ * This will take you to the following screen where you can choose to either login using your Google or Github accounts
+
+![image](images/sas/login.png)
+
+The GitHub/Google methods are purely used to provide authentication to SAS with all of the data being stored on the SAS server.
+
+## Step 3 Load your manifest into SAS:
+Once you have logged in you will be presented with the following collection screen:
+
+![image](images/sas/empty_collection.png)
+
+ * Now click the Add IIIF manifest (URL) link and enter the URL to your manifest as below.
+
+![image](images/sas/add_manifest.png)
+
+ * Then click Add. Depending on how many pages the Manifest has, this might take a minute or two to index.
+ * Once your manifest is loaded you should see it appear in your default Collection:
+
+![image](images/sas/manifest.png)
+
+Once you have finished annotating click the Home link at the top to get back to your collections.
+
diff --git a/dhsi/day-four/annotation-linking.md b/dhsi/day-four/annotation-linking.md
new file mode 100644
index 00000000..ed82cb2a
--- /dev/null
+++ b/dhsi/day-four/annotation-linking.md
@@ -0,0 +1,153 @@
+# Downloading and linking your annotations
+
+In the last section we created a SimpleAnnotationServer (SAS) version of your manifest but now we are going to download the annotations from SAS and link them to your Workbench manifest. This is useful to create a read only copy of your annotations and you will also be able to view them using a feature of the Workbench and a tool called Annona. You will also see how annotations are connected to a manifest and how a viewer follows these links in your manifest to show annotations.
+
+Note from this step forward the activities get more difficult and will involve editing your Manifest. These stages are optional and will give you a complete workflow for annotating and publishing your annotations. The overall process is as follows:
+
+ * Step 1: Setup your environment
+ * Step 2: Download your annotations from SAS
+ * Step 3: Upload your annotations to Workbench
+ * Step 4: Link your manifest to the annotations
+ * Step 5: Exhibit your annotations with Annona
+
+
+### Step 1: Setup your environment
+
+Through various iterations of this workshop we have found it easiest to save a copy of your manifest from Workbench to you computer. Make your edits to your local copy, test to make sure its working and then finally replace the Manifest on Workbench when you are happy with all of your changes. To get a copy of your Workbench manifest ready for editing:
+
+ * Navigate to your manifest in your workbench
+ * Right click on the IIIF logo and select `Save Link As`
+ * Save it in the `iiif-workshop` directory you created as part of the Presentation API section and call it `manifest2.json`. If you already have a file called manifest2.json you can replace it.
+ * Ensure the VS Code live server is running. This should be running on port `5500` and the manifest should be available at http://127.0.0.1:5500/manifest2.json
+ * Open the downloaded manifest in VS Code ready for editing.
+
+## Step 2: Download your annotations from SAS
+
+Now you have finished annotating you need to download the annotations before uploading it to the Workbench. To do this you will download 1 annotation list per page or canvas.
+
+ * Navigate back to the collections page by either clicking the Home menu item or following this link: https://dev.gdmrdigital.com/collections.xhtml
+ * Now click the grey "Browse Annotations" button
+
+![image](images/sas/browse_annos.png)
+
+ * You should now see the canvases which have annotations.
+ * Click the "Download Annotations" link.
+
+![image](images/sas/browse_manifest.png)
+
+If you download this annotation file to your workshop directory. The name of the file isn't important as long as it ends in .json.
+
+### Step 3: Upload your annotations to Workbench
+
+In a new Browser tab navigate to your Workbench by going to https://workbench.gdmrdigital.com/login.xhtml and logging in. Select the project you are working on and click the Annotations section.
+
+![image](images/noannos.png)
+
+Now upload the annotations you downloaded from SAS:
+
+![image](images/upload_anno.png)
+
+Once you have uploaded your annotations you should see the screen below.
+
+![image](images/annos_workbench.png)
+
+It takes about 10mins for the Workbench to publish the annotation list to your Website but we can still copy the URL to the annotations list to move on to the next stage. To do this right click on the IIIF logo and select "Copy Link" to copy the URL of your annotations. This is what we will add to your manifest.
+
+![image](images/copy_annos_url.png)
+
+## Step 4: Link your manifest to the annotations
+
+To get the annotations to display you need to link them into the manifest. Open up your manifest (manifest2.json) in the `iiif-workshop` directory in VS Code.
+
+Then find the canvas your annotations point to then add the following:
+
+```json
+"otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+]
+```
+
+after the images array. Replace the URL after the `@id` with the URL you copied from Workbench. A full canvas example is below:
+
+```json
+{
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json",
+ "@type": "sc:Canvas",
+ "label": "1r",
+ "height": 5584,
+ "width": 3744,
+ "images": [
+ {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/annotation/4004563.json",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "resource": {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563/full/1024,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "format": "image/jpeg",
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563",
+ "profile": "http://iiif.io/api/image/2/level1.json"
+ },
+ "height": 5584,
+ "width": 3744
+ },
+ "on": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json"
+ }
+ ],
+ "otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+ ]
+},
+
+```
+
+Save the manifest. Watch out for JSON typing errors. Common JSON issues include:
+
+ * Make sure that all the brackets match up
+ * Lines that are not the last line in a list or array must have a `,` at the end of the line.
+
+To make this easier you may want to use a JSON aware editor like VS Code which will tell you if you are missing brackets or commas. You can also copy and paste your JSON to:
+
+https://jsonlint.com/
+
+which will tell you if the JSON is valid and if not where the error is.
+
+Now test your edited manifest in the browser to check it looks OK. If you are using `manifest2.json` then the link will be:
+
+http://127.0.0.1:5500/manifest2.json
+
+If you click on your manifest you should see the JSON. If you copy the URL in the browser address bar you will have the Manifest URL for your edited manifest.
+
+## Step 5: Test to see if your annotations are working
+
+ * Go to http://iiif.gdmrdigital.com/mirador/index.html.
+ * Load the manifest using Add new object from URL (using the manifest hosted in the VS Code web server)
+ * Click on one of the images to view the manifest
+ * Click on the speech bubble to show the annotations.
+
+![image](images/annos_download_show.png)
+
+ * and if it all worked OK you should see your annotation.
+
+![image](images/annos_download_success.png)
+
+
+Another method to see your annotations is with a tool using the [Annona Storyboard viewer](https://ncsu-libraries.github.io/annona/) by Niqui O'Neill from NC State University Libraries. This will demonstrate the interoperability of these annotations and also provide an option for the end of week projects. Annona is a powerful tool to create stories from annotations and supports a wide variety of use cases. The most important one for this lesson is to support annotations created by the SimpleAnnotationServer (SAS).
+
+If you navigate to your Workbench and click the Annotations tab you should see an `Annona` button next to your annotation list:
+
+![image](images/sas/workbench-annoa.png)
+
+If you click this Annona will open in a new window. Use the arrow buttons to navigate through your annotations:
+
+![image](images/sas/workbench-annoa-demo.png)
diff --git a/dhsi/day-four/annotation-store-download-sas1.md b/dhsi/day-four/annotation-store-download-sas1.md
new file mode 100644
index 00000000..3e5ff6ad
--- /dev/null
+++ b/dhsi/day-four/annotation-store-download-sas1.md
@@ -0,0 +1,163 @@
+# Creating and downloading Annotations
+
+In this tutorial we are going to annotate an image from your own manifest using the hosted SimpleAnnotationStore. Once we have finished annotating we are going to download the annotations created in an Annotation list and link them to the Manifest. This is a way of permanently attaching annotations to a manifest.
+
+Note from this step forward the activities get more difficult and will involve editing your Manifest. These stages are optional and will give you a complete workflow for annotating and publishing your annotations. There are three options for getting a Manifest to Annotate.
+
+### Option 1 use the Workbench
+
+This is the preferred option as it will save some steps later on. This option uses a combination of annotating the version of the manifest from your Workbench (see step [Publishing your Manifest](../day-three/workbench/)) and creating a copy that you can edit and test using the Chrome Web Server. For this option you need to do the following two things:
+
+1. Download your manifest for editing
+
+ * Navigate to the manifest in your workbench
+ * Right click on the IIIF logo and select `Save Link As`
+ * Save it in the Chrome Web Server directory
+ * Ensure your Chrome Web server is running. This should be running on port `8887`
+ * Open the downloaded manifest in [Atom](https://atom.io/) ready for editing.
+
+2. Copy the Manifest URL
+
+Now go back to your manifest in the Workbench and right click on the IIIF logo again but this time select `copy link`. This will copy the Manifest URL to your clipboard.
+
+### Option 2 Use manifest2.json in your Chrome Web Server
+
+As part of the Presentation API stage you created a file called `manifest2.json` in your Chrome Web Server directory. You can use this file and the URL: `http://localhost:8887/manifest2.json` for the annotations but note there are some extra steps you will need in the next section on presenting your annotations.
+
+
+### Option 3 Use any public IIIF manifest
+
+If you didn't manage to get a manifest in the previous step you can use any IIIF Manifest. My personal favourite is:
+
+https://damsssl.llgc.org.uk/iiif/2.0/4389767/manifest.json
+
+## Step 1 Load your manifest into the hosted Mirador:
+ * Go to http://sas.gdmrdigital.com
+ * Add your manifest to the addNewObject field and click load:
+ * If you are using the Workbench use the URL copied from the IIIF logo.
+ * If you are using the Chrome web server the URL is: http://localhost:8887/manifest2.json
+
+![image](images/annos_download_annotating.png)
+
+## Step 2: annotate manifest
+
+ * Start annotating your manifest
+
+![image](images/annos_download_success.png)
+
+## Step 3: Download annotations
+
+Now you have finished annotating you need to download the annotations and link them to canvases in your manifest. To do this you will download 1 annotation list per page/canvas.
+
+ * Navigate to http://sas.gdmrdigital.com/manifests.xhtml
+
+You will see a list of manifests that have been annotated by the class and previous classes. You will need to search for your manifest by getting the `@id` from your manifest. For example if my manifest started with:
+
+```
+{
+ "@context": "http://iiif.io/api/presentation/2/context.json",
+ "@id": "http://d937e822-64cd-4815-a6da-bc6a79f11619",
+ "@type": "sc:Manifest",
+ "label": "Test Manifest",
+ "metadata": [],
+```
+
+I would look for `http://d937e822-64cd-4815-a6da-bc6a79f11619` in the list of Annotated Manifests. Once you have found your manifest click the link and you should see a page similar to the following:
+
+![image](images/anno_download_canvas.png)
+
+The links at the bottom of the page are annotations for each canvas (page) you have annotated. For each canvas Right click and do save as. Save the annotations to your Google Chrome Web server folder with the name `annotations1.json`, `annotations2.json` etc... Do this step for both the Workbench and `manifest2.json` options.
+
+![image](images/anno_download_saveas.png)
+
+## Step 4: Link annotations to Manifest
+To get the annotations to display you need to link them into the manifest. Open up your manifest in your Chrome Web Server directory in [Atom](https://atom.io/).
+
+Then find the canvas your annotations point to then add the following:
+
+```json
+"otherContent": [
+ {
+ "@id": "http://localhost:8887/annotations1.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+]
+```
+
+after the images array. A full canvas example is below:
+
+```json
+{
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json",
+ "@type": "sc:Canvas",
+ "label": "1r",
+ "height": 5584,
+ "width": 3744,
+ "images": [
+ {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/annotation/4004563.json",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "resource": {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563/full/1024,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "format": "image/jpeg",
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563",
+ "profile": "http://iiif.io/api/image/2/level1.json"
+ },
+ "height": 5584,
+ "width": 3744
+ },
+ "on": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json"
+ }
+ ],
+ "otherContent": [
+ {
+ "@id": "http://localhost:8887/annotations1.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+ ]
+},
+
+```
+
+Save the manifest. Watch out for JSON typing errors. Common JSON issues include:
+
+ * Make sure that all the brackets match up
+ * Lines that are not the last line in a list or array must have a `,` at the end of the line.
+
+To make this easier you may want to use a JSON aware editor like [ATOM](https://atom.io/) which will tell you if you are missing brackets or commas. You can also copy and paste your JSON to:
+
+https://jsonlint.com/
+
+which will tell you if the JSON is valid and if not where the error is.
+
+Now test your edited manifest in the browser to check it looks OK. If you are using `manifest2.json` then the link will be:
+
+http://localhost:8887/manifest2.json
+
+If you are using the workbench then the link will be similar but the name might be different to `mainfest2.json`. If you go to:
+
+http://localhost:8887/
+
+You should be able to see your manifest. If you click on your manifest you should see the JSON. If you copy the URL in the browser address bar you will have the Manifest URL for your edited manifest.
+
+## Step 5: check the annotations are showing
+
+ * Go to http://iiif.gdmrdigital.com/mirador/index.html.
+ * Load the manifest using Add new object from URL (using the manifest hosted in the Chrome Web Server)
+ * Click on one of the images to view the manifest
+ * Click on the speech bubble to show the annotations.
+
+![image](images/annos_download_show.png)
+
+ * and if it all worked OK you should see your annotation.
+
+![image](images/annos_download_success.png)
+
+
+It is also possible to do the above with a locally running SimpleAnnotationServer just follow the [Annotating Stores - Do it yourself](annotations-stores-install.md) part of the course.
diff --git a/dhsi/day-four/annotation-store-download.md b/dhsi/day-four/annotation-store-download.md
new file mode 100644
index 00000000..6da7a130
--- /dev/null
+++ b/dhsi/day-four/annotation-store-download.md
@@ -0,0 +1,203 @@
+# Creating and downloading Annotations
+
+In this tutorial we are going to annotate an image from your own manifest using a recently released version of the SimpleAnnotationStore. Once we have finished annotating we are going to link the annotations to your Manifest. This is a way of permanently attaching annotations to a manifest.
+
+The major difference with this new version of the SimpleAnnotationServer is that you are asked to login and you will have a collection of Manifests that you have annotated. The previous version only had a single user so everyone could see and edit all of the annotations. In this version only you can see your annotations until you publish them. The high level process is as follows:
+
+ * Step 1: Create your annotations
+ * Step 2: Upload your annotations to Workbench
+ * Step 3: Link your manifest to the annotations
+ * Step 4: Test to see if your annotations are working
+
+Note from this step forward the activities get more difficult and will involve editing your Manifest. These stages are optional and will give you a complete workflow for annotating and publishing your annotations. There are two options for getting a Manifest to Annotate.
+
+### Option 1 use the Workbench
+
+This option uses a combination of annotating the version of the manifest from your Workbench (see step [Publishing your Manifest](../day-three/workbench/)) and creating a copy that you can edit and test using the Chrome Web Server. For this option you need to do the following two things:
+
+1. Download your manifest for editing
+
+ * Navigate to your manifest in your workbench
+ * Right click on the IIIF logo and select `Save Link As`
+ * Save it in the Chrome Web Server directory and call it `manifest3.json`
+ * Ensure your Chrome Web server is running. This should be running on port `8887` and the manifest should be available at http://localhost:8887/manifest3.json
+ * Open the downloaded manifest in [Atom](https://atom.io/) ready for editing.
+
+2. Copy the Manifest URL
+
+Now go back to your manifest in the Workbench and right click on the IIIF logo again but this time select `copy link`. This will copy the Manifest URL to your clipboard.
+
+### Option 2 Use any public IIIF manifest
+
+If you didn't manage to get a manifest in the previous session you can use any IIIF Manifest. My personal favourite is:
+
+https://damsssl.llgc.org.uk/iiif/2.0/4389767/manifest.json
+
+## Step 1: Create your annotations
+
+### Login to SAS
+ * Navigate to https://dev.gdmrdigital.com/ and click the Log in / Sign Up link.
+ * This will take you to the following screen where you can choose to either login using your Google or Github accounts
+
+![image](images/sas/login.png)
+
+Unlike the workbench SAS doesn't write to your Google drive or GitHub account. The GitHub/Google methods are purely used to provide authentication to SAS with all of the data being stored on the SAS server.
+
+### Load your manifest into SAS:
+Once you have logged in you will be presented with the following collection screen:
+
+![image](images/sas/empty_collection.png)
+
+ * Now click the Add IIIF manifest (URL) link and enter the URL to your manifest as below.
+ * If you are using the Workbench use the URL copied from the IIIF logo.
+ * If you are using the Chrome web server the URL is: http://localhost:8887/manifest2.json
+
+![image](images/sas/add_manifest.png)
+
+ * Then click Add. Depending on how many pages the manifest takes this might take a minute or two to index.
+ * Once your manifest is loaded you should see it appear in your default Collection:
+
+![image](images/sas/manifest.png)
+
+### Annotate manifest
+
+ * Now we have the manifest loaded into your SAS account we can start annotating.
+ * Click the blue "Annotate in Mirador" button.
+ * This should open up your manifest in Mirador
+ * Navigate to a page you want to annotate then click the speech bubbles at the top right to start annotating.
+
+![image](images/sas/annotate.png)
+
+## Step 2: Upload your annotations to Workbench
+
+### Download annotations from SAS
+
+Now you have finished annotating you need to download the annotations before uploading it to the Workbench. To do this you will download 1 annotation list per page or canvas.
+
+ * Navigate back to the collections page by either clicking the Home menu item or following this link: https://dev.gdmrdigital.com/collections.xhtml
+ * Now click the grey "Browse Annotations" button
+
+![image](images/sas/browse_annos.png)
+
+ * You should now see the canvases which have annotations.
+ * Click the "Download Annotations" link.
+
+![image](images/sas/browse_manifest.png)
+
+If you download this annotation file to your workshop directory. The name of the file isn't important as long as it ends in .json.
+
+### Upload annotations to Workbench
+
+In a new Browser tab navigate to your Workbench by going to https://workbench.gdmrdigital.com/login.xhtml and logging in. Select the project you are working on and click the Annotations section.
+
+![image](images/noannos.png)
+
+Now upload the annotations you downloaded from SAS:
+
+![image](images/upload_anno.png)
+
+Once you have uploaded your annotations you should see the screen below.
+
+![image](images/annos_workbench.png)
+
+It takes about 10mins for the Workbench to publish the annotation list to your Website but we can still copy the URL to the annotations list to move on to the next stage. To do this right click on the IIIF logo and select "Copy Link" to copy the URL of your annotations. This is what we will add to your manifest.
+
+![image](images/copy_annos_url.png)
+
+## Step 3: Link your manifest to the annotations
+
+To get the annotations to display you need to link them into the manifest. Open up your manifest in your Chrome Web Server directory in [Atom](https://atom.io/).
+
+Then find the canvas your annotations point to then add the following:
+
+```json
+"otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+]
+```
+
+after the images array. Replace the URL after the `@id` with the URL you copied from Workbench. A full canvas example is below:
+
+```json
+{
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json",
+ "@type": "sc:Canvas",
+ "label": "1r",
+ "height": 5584,
+ "width": 3744,
+ "images": [
+ {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/annotation/4004563.json",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "resource": {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563/full/1024,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "format": "image/jpeg",
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563",
+ "profile": "http://iiif.io/api/image/2/level1.json"
+ },
+ "height": 5584,
+ "width": 3744
+ },
+ "on": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json"
+ }
+ ],
+ "otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+ ]
+},
+
+```
+
+Save the manifest. Watch out for JSON typing errors. Common JSON issues include:
+
+ * Make sure that all the brackets match up
+ * Lines that are not the last line in a list or array must have a `,` at the end of the line.
+
+To make this easier you may want to use a JSON aware editor like [ATOM](https://atom.io/) which will tell you if you are missing brackets or commas. You can also copy and paste your JSON to:
+
+https://jsonlint.com/
+
+which will tell you if the JSON is valid and if not where the error is.
+
+Now test your edited manifest in the browser to check it looks OK. If you are using `manifest3.json` then the link will be:
+
+http://localhost:8887/manifest3.json
+
+If you are using the workbench then the link will be similar but the name might be different to `mainfest2.json`. If you go to:
+
+http://localhost:8887/
+
+You should be able to see your manifest. If you click on your manifest you should see the JSON. If you copy the URL in the browser address bar you will have the Manifest URL for your edited manifest.
+
+## Step 4: Test to see if your annotations are working
+
+ * Go to http://iiif.gdmrdigital.com/mirador/index.html.
+ * Load the manifest using Add new object from URL (using the manifest hosted in the Chrome Web Server)
+ * Click on one of the images to view the manifest
+ * Click on the speech bubble to show the annotations.
+
+![image](images/annos_download_show.png)
+
+ * and if it all worked OK you should see your annotation.
+
+![image](images/annos_download_success.png)
+
+
+Another method to see your annotations is with a tool using the [Annona Storyboard viewer](https://ncsu-libraries.github.io/annona/) by Niqui O'Neill from NC State University Libraries. This will demonstrate the interoperability of these annotations and also provide an option for the end of week projects. Annona is a powerful tool to create stories from annotations and supports a wide variety of use cases. The most important one for this lesson is to support annotations created by the SimpleAnnotationServer (SAS).
+
+Annona is unusal in that it takes a link to the Annotation List rather than the Manifest but if you change the URL after iiif-content below to your own Annotation List URL from workbench you should be able to browse through your annotations.
+
+[http://iiif.gdmrdigital.com/annona/index.html?iiif-content=https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json](http://iiif.gdmrdigital.com/annona/index.html?iiif-content=https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json)
+
diff --git a/dhsi/day-four/annotations-and-annotation-lists.md b/dhsi/day-four/annotations-and-annotation-lists.md
new file mode 100644
index 00000000..dd185099
--- /dev/null
+++ b/dhsi/day-four/annotations-and-annotation-lists.md
@@ -0,0 +1,122 @@
+# What are annotations?
+
+We have seen many examples of annotations during the course and they have many uses including:
+
+ * Transcribing documents
+ * Commenting or analysis of content
+ * Highlighting areas of the item like hand written annotations on a printed book
+ * Teaching or explaining content (Storiiies and Exhibit)
+
+and we also saw yesterday that annotations are fundamental to how a IIIF Manifests work with images and video painted on to a canvas with annotations.
+
+Annotations in IIIF follow the [W3C annotation model](https://www.w3.org/TR/annotation-model/) and its precursor [Open Annotations](http://www.openannotation.org/). I will go through the differences briefly later but the model is conceptionally similar:
+
+![Web Annotation model](https://www.w3.org/TR/annotation-model/images/intro_model.png)
+
+The annotation is made up of two parts. The body which is the **resource** you want to annotate **on** to something and the target which is the thing you are annotating. Examples of bodies might be:
+
+ * Text transcription of a line
+ * Video giving background to a painting
+ * IIIF Image painted on to a canvas
+
+A target might be:
+ * A whole canvas
+ * A part of a canvas (maybe a line in the transcription example above)
+
+## Example Annotation
+A simple commenting annotation looks like the following:
+
+```json
+{
+ "@id": "http://localhost:8887/coin/list/1",
+ "@type": "oa:Annotation",
+ "motivation": "commenting",
+ "resource": {
+ "@type": "cnt:ContentAsText",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "on": "http://localhost:8887/coin/canvas#xywh=3706,208,522,522"
+}
+```
+
+This is using Open annotations and the keys map as follows:
+
+ * Body -> resource
+ * Target -> on
+
+Other things to take note of are:
+
+ * motivation is `commenting`
+ * Annotations should have an `@id`
+
+In this example the body or resource is the text `Zeus seated on stool-throne`. The canvas id in this example is `http://localhost:8887/coin/canvas` and the `#xywh=3706,208,522,522` denotes we are looking at a rectangle starting `3706` pixels from the left, `208` pixels from the top and with dimensions `522` pixels wide and `522` pixels high. The image mentioned in this annotation is:
+
+![Coin image](https://ronallo.com/iiif-workshop-new/images/coin-side-by-side.png)
+
+## Caveat: Open Annotations vs Web Annotations
+
+For this workshop we will be focusing on Open Annotations which are in the examples above. One of the changes with IIIF version 3.0 is that we are moving to the W3C Web Annotations model. The concepts are the same but the JSON is slightly different. The transcription example now looks like:
+
+```json
+{
+ "id": "http://localhost:8887/coin/list/1",
+ "type": "Annotation",
+ "motivation": "commenting",
+ "body": {
+ "type": "TextualBody",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "target": "http://localhost:8887/coin/canvas#xywh=3706,208,522,522"
+}
+```
+
+The changes are:
+ * `@id` becomes `id`
+ * `@type` becomes `type` and `oa:Annotation` becomes `Annotation`
+ * `resource` becomes `body`
+ * `on` becomes `target`
+ * The body type changes from `cnt:ContentAsText` to `TextualBody`.
+
+Quite a few changes but it is defiantly clearer to understand.
+
+## What are annotations lists?
+
+See Specification Chapter: [http://iiif.io/api/presentation/2.1/#annotation-list](http://iiif.io/api/presentation/2.1/#annotation-list)
+
+Annotation lists are ways to group annotations and are often at a Canvas or Page level. Examples might be a transcription of a page or the OCR of a single page in annotation format. We will come back to this in the exercises but for now there is an example below. Note annotation lists are usually resolvable which means if you take the `@id` and put it into a Web Browser you should get the annotation list back.
+
+```json
+{
+ "@context": "http://iiif.io/api/presentation/2/context.json",
+ "@id": "http://localhost:8887/coin/canvas/AnnotationList",
+ "@type": "sc:AnnotationList",
+ "resources": [
+ {
+ "@id": "http://localhost:8887/coin/list/1",
+ "@type": "oa:Annotation",
+ "motivation": "commenting",
+ "resource": {
+ "@type": "cnt:ContentAsText",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "on": "http://localhost:8887/coin/canvas#xywh=3706,208,522,522"
+ },
+ {
+ "@id": "http://localhost:8887/coin/list/1",
+ "@type": "commenting",
+ "motivation": "sc:painting",
+ "resource": {
+ "@type": "cnt:ContentAsText",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "on": "http://localhost:8887/coin/canvas#xywh=0,208,522,522"
+ }
+ ]
+}
+```
+
+
diff --git a/dhsi/day-four/annotations-annona.md b/dhsi/day-four/annotations-annona.md
new file mode 100644
index 00000000..0d5019f5
--- /dev/null
+++ b/dhsi/day-four/annotations-annona.md
@@ -0,0 +1,57 @@
+# Presenting your Annotations
+
+In this exercise we are going to create a presentation of our annotations using the [Annona Storyboard viewer](https://ncsu-libraries.github.io/annona/) by Niqui O'Neill from NC State University Libraries. This will demonstrate the interoperability of these annotations and also provide an option for the end of week projects. Annona is a powerful tool to create stories from annotations and supports a wide variety of use cases. The most important one for this lesson is to support annotations created by the SimpleAnnotationServer (SAS).
+
+The overall process is as follows:
+
+ * Create your annotations in SAS
+ * Get the link to your annotation list for a canvas (see previous page).
+ * Pass the Annotation list URL to Annona:
+
+`http://iiif.gdmrdigital.com/annona/index.html?iiif-content=[Annotation List URL]`
+
+If you took the option of annotating the Manifest in your Workbench then you can go ahead and use Annona straight away. The URL is in the following form:
+
+[http://iiif.gdmrdigital.com/annona/index.html?iiif-content=http://localhost:8887/annotations1.json](http://iiif.gdmrdigital.com/annona/index.html?iiif-content=http://localhost:8887/annotations1.json)
+
+If you used the `manifest2.json` in your Chrome Web Server there are a few extra steps.
+
+## Step 1 Find your Manifest ID
+
+The cause of this issue is the value of `@id` in your manifest doesn't match the URL that you type into the address bar of your browser. For example if you open up your manifest (http://localhost:8887/manifest2.json). You will see something similar to the following:
+
+```
+{
+ "@context": "http://iiif.io/api/presentation/2/context.json",
+ "@id": "http://3063ff10-9dcd-47c4-a687-48df47f2c245",
+ "@type": "sc:Manifest",
+ "label": "Glen's fantastic manifest",
+```
+
+and the issue is `@id` should be:
+
+```
+ "@id": "http://localhost:8887/manifest2.json",
+```
+
+The effect of this is that SAS has been pointing the annotations to `http://3063ff10-9dcd-47c4-a687-48df47f2c245` rather than `http://localhost:8887/manifest2.json`. For most tools like Mirador, this wouldn't be a big issue but Annona is one of the few that follows the links from the AnnotationList to the Manifest rather than from the Canvas to the AnnotationList.
+
+The id issue is an important point to remember and applies to Manifests, Annotation lists and Collections. The `@id` should always match the URL you put in the browser to get the JSON. This self referencing id is sometimes referred to as resolvable. For example the `@id` is __resolvable__. The original id (`http://3063ff10-9dcd-47c4-a687-48df47f2c245`) was generated by the Bodleian Manifest Editor and is meant to be unique but can't be resolvable as the Manifest Editor doesn't know where you are going to put the Manifest.
+
+__BUT__ for the workshop we haven't asked you to change the `@id` because if you all changed it to `http://localhost:8887/manifest2.json` when you went to SAS all of the annotations would have been combined and it would have caused chaos!
+
+## Step 2 Fix your Annotation list
+
+The fix we are going to do is to do a search and replace in the Annotation list and replace all instances of the temporary manifest id (`http://3063ff10-9dcd-47c4-a687-48df47f2c245`) with the real URL to the manifest (`http://localhost:8887/manifest2.json`).
+
+## Step 3 Navigate through your annotations
+
+Once this is done you should be able to view your annotations in the Storyboard viewer by using the following URL:
+
+`http://iiif.gdmrdigital.com/annona/index.html?iiif-content=[URL to your Annotations List]`
+
+If you named your annotations `annotations1.json` the link would be:
+
+[http://iiif.gdmrdigital.com/annona/index.html?iiif-content=http://localhost:8887/annotations1.json](http://iiif.gdmrdigital.com/annona/index.html?iiif-content=http://localhost:8887/annotations1.json)
+
+
diff --git a/dhsi/day-four/annotations-exercises.md b/dhsi/day-four/annotations-exercises.md
new file mode 100644
index 00000000..73169473
--- /dev/null
+++ b/dhsi/day-four/annotations-exercises.md
@@ -0,0 +1,79 @@
+# Annotation Exercises
+
+In this example we are going to have a look at Annotating in Mirador 2. Mirador 3 now supports creating annotations so future workshops will probably be based on Mirador 3.
+
+During the session I will go through the steps and feel free to follow along although if you get lost you can follow the instructions below.
+
+## Step 1 - Open Mirador
+
+ * Go to [https://deploy-preview-13--mirador.netlify.app/demo/](https://deploy-preview-13--mirador.netlify.app/demo/)
+ * __Note__ now Mirador 3 is released you have to use the link above as they have moved Mirador 3 to the front page of [https://projectmirador.org](https://projectmirador.org).
+
+### A quick intro into using Mirador:
+
+The image below shows a circle around the cross at the top left of the image. Use this to close one of the windows. Then click the 4 rectangles to drop down a menu where you can select **Replace Object**. Click this to view other manifests.
+
+![](imgs/annos_mirador.png)
+
+Select a Manifest by clicking on one of the rows or add your own manifest in the 'Add new object from URL'.
+
+![](imgs/annos_select_manifest.png)
+
+## Step 2 - Start annotating:
+Click the speech bubble on the top left
+
+![](imgs/annos_toggle_annotations.png)
+
+Lots of options:
+
+![](imgs/annos_anno_options.png)
+
+From left to right the buttons are:
+ * Speech bubble - hide annotation buttons
+ * Pointer - to select existing annotations and change the size or edit the content
+ * Rectangle - Draw a rectangle annotation
+ * Oval - Draw a Oval annotation
+ * Freeform - Go free style with the shape of the annotation
+ * Ploygon - Create a shape with straight sides
+ * Pin - Drop a pin as the target of the annotation
+ * Thickness - change the thickness of the shape's line
+ * Line colour - change the colour of the shape's line
+ * Fill - fill the shape with a colour.
+
+Once you have drawn a shape on the image you get a box where you can add content for the annotation.
+
+![image](imgs/annos_anno_options.png)
+
+Again you have more buttons to choose from and these are to format the content of the annotation:
+ * Make the text bold
+ * Make the text italics
+ * Insert a link
+ * Insert an image
+ * Insert a video or audio file
+ * Clear formatting
+ * and change orientation of the text (left/right or right/left)
+
+To format the text with bold or italics, type of your text then highlight it and click the bold or italics button.
+
+Once you have added some text click save. You can also add a tag if you like.
+
+You will then see a box appear and if you put your mouse over the box you will see the text you entered:
+
+![image](imgs/annos_created.png)
+
+Take 5 minutes to play around creating annotations so you get a feel for how it works. Also think on the following questions:
+
+ * What type of project would this be useful for?
+ * What might it not work so well with?
+
+## Where are these annotations stored?
+
+This version of Mirador stores the annotations in the browser local storage. This means:
+
+ * They are only accessible on your machine
+ * They are not permanent and may disappear
+ * Its the perfect storage location for a demo site
+
+## How do we make these annotations more permanent?
+
+With an Annotation Store.
diff --git a/dhsi/day-four/annotations-stores-results.md b/dhsi/day-four/annotations-stores-results.md
new file mode 100644
index 00000000..9332dd97
--- /dev/null
+++ b/dhsi/day-four/annotations-stores-results.md
@@ -0,0 +1,114 @@
+# Results
+
+Feel for the volunteers who did all 1,000 pages!
+
+Exercises:
+ * Navigate to somebody else's section, do you see the annotations?
+ * Take the Manifest and view it in http://projectmirador.org/. The manifest is https://iiif.gdmrdigital.com/nlw/bor.json
+ * Do you see the annotations?
+ * Take the Manifest to the Universal Viewer: https://universalviewer.io/
+ * What do you see?
+
+
+## Looking at the annotation:
+
+```
+{
+ "@id" : "http://35.177.224.176:8888/annotation/1559731764132",
+ "@type" : "oa:Annotation",
+ "dcterms:created" : "2019-06-05T10:49:24",
+ "resource" : [ {
+ "@id" : "_:b2",
+ "@type" : "dctypes:Text",
+ "http://dev.llgc.org.uk/sas/full_text" : "Ty.Sub.Lt. Eric Hugh Allan R.N.R Bombala",
+ "format" : "text/html",
+ "chars" : "
+ Ty.Sub.Lt.
+ Eric Hugh Allan
+ R.N.R
+ Bombala
+
+```
+
+This uses RDF/A which is linked data hidden inside HTML. The HTML is what Mirador displays in the annotation but it can also be loaded to a Linked Data database and queried. For example this is looking at all the places listed in the book and putting them on a heat map:
+
+![image](images/annos_bor_stats_map.png)
+
+and this is looking at the numbers lost per ship:
+
+![image](images/annos_bor_ships_lost.png)
+
+and doing a bit more research I found:
+
+![image](images/annos_bor_sailors_lost.png)
+
+and a Newspaper article and blog post:
+
+![image](images/annos_bor_newspaper.png)
+
+and this can be tied together into a presentation using the Exhibit tool:
+
+[https://exhibit.so/exhibits/vjxZwSD0sgKKzQhU4r7i](https://exhibit.so/exhibits/vjxZwSD0sgKKzQhU4r7i)
+
+
+A full export of the data is available at: https://github.com/NLW-paulm/BoR-annotations
+
+## Search
+
+Looking at the Manifest in the Universal Viewer:
+
+[https://universalviewer.io/examples/#?manifest=https://iiif.gdmrdigital.com/nlw/bor.json](https://universalviewer.io/examples/#?manifest=https://iiif.gdmrdigital.com/nlw/bor.json)
+
+We can see a search box. Can you search for the annotation you created?
+
+So how did that work?
+
+Lets have a look at the Manifest: https://iiif.gdmrdigital.com/nlw/bor.json
+
+The key part is this service definition:
+
+```
+"service": {
+
+ "profile": "http://iiif.io/api/search/0/search",
+ "@id": "https://sas.gdmrdigital.com/search-api/cabbb6de5303266bd9adc6cb23fb5c1b/search",
+ "@context": "http://iiif.io/api/search/0/context.json"
+
+},
+```
+
+Which tells the UniversalViewer that there is a IIIF Search service available at the following location:
+
+http://sas.gdmrdigital.com/search-api/cabbb6de5303266bd9adc6cb23fb5c1b/search
+
+SAS contains a basic search implementation but you can see the results here if you search for Cardiff:
+
+http://sas.gdmrdigital.com/search-api/cabbb6de5303266bd9adc6cb23fb5c1b/search?q=Cardiff
+
+The search API is meant to replicate the PDF type search within so the parameters you can use are limited:
+
+https://iiif.io/api/search/0.9/#421-query-parameters
+
+
diff --git a/dhsi/day-four/collections.md b/dhsi/day-four/collections.md
new file mode 100644
index 00000000..bc86b806
--- /dev/null
+++ b/dhsi/day-four/collections.md
@@ -0,0 +1,24 @@
+# Collections
+Collections are a way to semantically link multiple different manifests. It allows for linking materials either through concrete or abstract groupings.
+
+An example can seen in the [IIIF cookbook recipe](https://iiif.io/api/cookbook/recipe/0032-collection/).
+
+
+## Other collection examples
+
+1. [National Gallery, London](https://research.ng-london.org.uk/iiif-projects/json/ng-projects.json)
+2. [FromThePage Jeremiah White Graves Diaries](https://fromthepage.com/iiif/collection/jeremiah-white-graves-diaries)
+3. [Staedel Museum](https://iiif.manducus.net/collections/0008/collection.json)
+4. [Zeppelin Museum Friedrichshafen](https://iiif.manducus.net/collections/0012/collection.json)
+5. [Fotothek](https://sachsen.museum-digital.de/apis/iiif-presentation/collection/c231)
+6. [The biological basis of medicine / edited by E. Edward Bittar ; assisted by Neville Bittar.](https://iiif.wellcomecollection.org/presentation/v2/b18031511)
+7. [e-codices – Virtual Manuscript Library of Switzerland](https://www.e-codices.ch/metadata/iiif/collection.json)
+8. [e-manuscripta](https://www.e-manuscripta.ch/i3f/v21/collection/top)
+9. [e-rara](https://www.e-rara.ch/i3f/v21/collection/top)
+10. [fragmentarium – International Digital Research Lab for Medieval Manuscript Fragments](https://fragmentarium.ms/metadata/iiif/collection.json)
+11. [IIIF Collection for Leipzig University Library](https://iiif.ub.uni-leipzig.de/static/collections/toplevel.json)
+13. [Luke Wadding Papers](https://data.ucd.ie/api/img/collection/ivrla:18726)
+14. [Arabic documents](https://iiif.durham.ac.uk/manifests/trifle/collection/32150/t2c9k41zd486)
+15. [We are ISU- Snapshots of Student Life](https://cdm16001.contentdm.oclc.org/iiif/info/p16001coll48/manifest.json)
+16. [Air Scoop](https://digital.lib.utk.edu/assemble/collection/collections/ascoop)
+17. [Collection de Charles V (roi de France, 1338-1380)](https://portail.biblissima.fr/iiif/collection/ark:/43093/coldataa9d9a2d98084b67becd2c1a78c78e4d6143e35da)
diff --git a/dhsi/day-four/github-jekyll-pages.md b/dhsi/day-four/github-jekyll-pages.md
new file mode 100644
index 00000000..d576869c
--- /dev/null
+++ b/dhsi/day-four/github-jekyll-pages.md
@@ -0,0 +1,23 @@
+# Jekyll
+Jekyll is a static site generator. A static site generator is a framework that allows the creation of static html pages without having to manually code them. For example, if you want your website to have a header image on every page if you were to write that in HTML you would have to add the code for the header in every page. static site generators allows you to write the code for the header image in one file and define how the page looks by layouts.
+
+- [NC Architects and Builders](https://ncarchitects.lib.ncsu.edu)
+- [Honoring the Fallen: An Interactive Memorial Map](https://falveydigitalscholarship.github.io/honoringthefallen)
+- [Annonatate](https://annonatate.github.io/annonatate/)
+- [Code4Lib Conference Website](https://2024.code4lib.org/)
+- [Wax](https://minicomp.github.io/wax/)
+
+# Jekyll Themes + Plugins
+## [Themes](https://jekyllrb.com/docs/themes/)
+Jekyll also provides a number of open source themes which provide a framework for a website that allows you to add your own data to a pre-exising framework without having to do a bunch of coding. "Honoring the Fallen: An Interactive Memorial Map" use a theme called Flaneur.
+
+## [Plugins](https://jekyllrb.com/docs/plugins/)
+Jekyll also provides a way to create your own plugins or use existing plugins. They allow you create custom code for your site without having to modify the Jekyll source code. Plugins include those that provide search, pagination, and CMS graphical interface.
+
+# GitHub pages
+GitHub pages is a static site hosting that will host any static file. We have gone over how to [enable a GitHub pages site](/day-two/github-publishing.html). If you use any static site generator other than Jekyll you will have to run the command for building the static site either in your command line or using [GitHub actions](https://docs.github.com/en/actions). GitHub actions are basically virtual environments that allow you install dependencies, run any command line arguments and write to your GitHub repository. Using a [GitHub actions](https://github.com/dnoneill/dhsi-iiif-2024/blob/main/.github/workflows/biiif.yml) was how we were able [autogenerate a manifest](/day-two/auto-generate-manifest.html).
+
+
+# Other Static Site generators
+- [Hugo](https://gohugo.io/) - Main selling point is build speed
+- [Astro.js](https://astro.build/) - Allows integration of other frameworks including React, Vue.js, etc.
\ No newline at end of file
diff --git a/dhsi/day-four/iiif-search-api-sas1.md b/dhsi/day-four/iiif-search-api-sas1.md
new file mode 100644
index 00000000..7b3a0d48
--- /dev/null
+++ b/dhsi/day-four/iiif-search-api-sas1.md
@@ -0,0 +1,51 @@
+# Searching Annotations
+
+In the last session we looked at downloading annotations so they could be linked to a manifest. In this session we are going to look at adding a Search service to the manifest so that the annotations you created can be searched using a IIIF Viewer. The procedure to achieve this is:
+
+ * Index your manifest with the SimpleAnnotationServer
+ * Add a link to the Search service in your manifest
+ * Test with a IIIF Viewer
+
+
+## Step 1: Index your manifest
+The SimpleAnnotationServer supports the IIIF Search API but for it to be able to provide this service it needs to index the manifest so it as a list of Canvas Ids to search. To do this navigate to:
+
+http://sas.gdmrdigital.com/uploadManifest.xhtml
+
+and upload your Manifest. We have used http://localhost:8887/manifest2.json in previous examples.
+
+If this is successful then you will see a page similar to the following:
+
+![image](images/anno_search.png)
+
+This page gives details on how to add a link to the search service. Copy the URL circled in Red in the image above.
+
+## Step 2: Link Manifest to Search Service
+
+Now open up your Manifest in Atom and it should look like this:
+
+![image](images/annos_atom_pre_search.png)
+
+Now add the following JSON to the manifest after the `label`:
+
+```
+"service": {
+ "profile": "http://iiif.io/api/search/0/search",
+ "@id": "SEARCH_ID",
+ "@context": "http://iiif.io/api/search/0/context.json"
+},
+```
+
+Now replace the SEARCH_ID with the URL you copied earlier. In my example it would look like:
+
+![image](images/annos_search_api_atom.png)
+
+## Step 3: Test with a IIIF Viewer
+Test your manifest with the Universal Viewer to see if has worked.
+
+ * Open up http://universalviewer.io/
+ * and paste your manifest http://localhost:8887/manifest2.json in the View a IIIF Manifest section
+ * Does it show a search box?
+ * Has it found an annotation? Note the search is case sensitive.
+ * If you add an annotation in Mirador does it show up in the search results in the UV?
+
diff --git a/iiif-5-day-workshop/images/anno_bor_finshed.png b/dhsi/day-four/images/anno_bor_finshed.png
similarity index 100%
rename from iiif-5-day-workshop/images/anno_bor_finshed.png
rename to dhsi/day-four/images/anno_bor_finshed.png
diff --git a/iiif-5-day-workshop/images/anno_bor_highlight.png b/dhsi/day-four/images/anno_bor_highlight.png
similarity index 100%
rename from iiif-5-day-workshop/images/anno_bor_highlight.png
rename to dhsi/day-four/images/anno_bor_highlight.png
diff --git a/iiif-5-day-workshop/images/anno_bor_start.png b/dhsi/day-four/images/anno_bor_start.png
similarity index 100%
rename from iiif-5-day-workshop/images/anno_bor_start.png
rename to dhsi/day-four/images/anno_bor_start.png
diff --git a/iiif-5-day-workshop/images/anno_bor_text.png b/dhsi/day-four/images/anno_bor_text.png
similarity index 100%
rename from iiif-5-day-workshop/images/anno_bor_text.png
rename to dhsi/day-four/images/anno_bor_text.png
diff --git a/iiif-5-day-workshop/images/anno_bor_typed.png b/dhsi/day-four/images/anno_bor_typed.png
similarity index 100%
rename from iiif-5-day-workshop/images/anno_bor_typed.png
rename to dhsi/day-four/images/anno_bor_typed.png
diff --git a/iiif-5-day-workshop/images/anno_bor_view_anno.png b/dhsi/day-four/images/anno_bor_view_anno.png
similarity index 100%
rename from iiif-5-day-workshop/images/anno_bor_view_anno.png
rename to dhsi/day-four/images/anno_bor_view_anno.png
diff --git a/iiif-5-day-workshop/images/anno_download_add.png b/dhsi/day-four/images/anno_download_add.png
similarity index 100%
rename from iiif-5-day-workshop/images/anno_download_add.png
rename to dhsi/day-four/images/anno_download_add.png
diff --git a/dhsi/day-four/images/anno_download_canvas.png b/dhsi/day-four/images/anno_download_canvas.png
new file mode 100644
index 00000000..df6ebac1
Binary files /dev/null and b/dhsi/day-four/images/anno_download_canvas.png differ
diff --git a/dhsi/day-four/images/anno_download_saveas.png b/dhsi/day-four/images/anno_download_saveas.png
new file mode 100644
index 00000000..aab94538
Binary files /dev/null and b/dhsi/day-four/images/anno_download_saveas.png differ
diff --git a/dhsi/day-four/images/anno_search.png b/dhsi/day-four/images/anno_search.png
new file mode 100644
index 00000000..649730e6
Binary files /dev/null and b/dhsi/day-four/images/anno_search.png differ
diff --git a/iiif-5-day-workshop/images/annos_anno_options.png b/dhsi/day-four/images/annos_anno_options.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_anno_options.png
rename to dhsi/day-four/images/annos_anno_options.png
diff --git a/iiif-5-day-workshop/images/annos_atom_id_update.png b/dhsi/day-four/images/annos_atom_id_update.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_atom_id_update.png
rename to dhsi/day-four/images/annos_atom_id_update.png
diff --git a/iiif-5-day-workshop/images/annos_atom_prettify.png b/dhsi/day-four/images/annos_atom_prettify.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_atom_prettify.png
rename to dhsi/day-four/images/annos_atom_prettify.png
diff --git a/iiif-5-day-workshop/images/annos_bor_article.png b/dhsi/day-four/images/annos_bor_article.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_bor_article.png
rename to dhsi/day-four/images/annos_bor_article.png
diff --git a/iiif-5-day-workshop/images/annos_bor_newspaper.png b/dhsi/day-four/images/annos_bor_newspaper.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_bor_newspaper.png
rename to dhsi/day-four/images/annos_bor_newspaper.png
diff --git a/iiif-5-day-workshop/images/annos_bor_sailors_lost.png b/dhsi/day-four/images/annos_bor_sailors_lost.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_bor_sailors_lost.png
rename to dhsi/day-four/images/annos_bor_sailors_lost.png
diff --git a/iiif-5-day-workshop/images/annos_bor_ships_lost.png b/dhsi/day-four/images/annos_bor_ships_lost.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_bor_ships_lost.png
rename to dhsi/day-four/images/annos_bor_ships_lost.png
diff --git a/iiif-5-day-workshop/images/annos_bor_stats_map.png b/dhsi/day-four/images/annos_bor_stats_map.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_bor_stats_map.png
rename to dhsi/day-four/images/annos_bor_stats_map.png
diff --git a/iiif-5-day-workshop/images/annos_content.png b/dhsi/day-four/images/annos_content.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_content.png
rename to dhsi/day-four/images/annos_content.png
diff --git a/iiif-5-day-workshop/images/annos_created.png b/dhsi/day-four/images/annos_created.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_created.png
rename to dhsi/day-four/images/annos_created.png
diff --git a/iiif-5-day-workshop/images/annos_download_annotating.png b/dhsi/day-four/images/annos_download_annotating.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_download_annotating.png
rename to dhsi/day-four/images/annos_download_annotating.png
diff --git a/iiif-5-day-workshop/images/annos_download_show.png b/dhsi/day-four/images/annos_download_show.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_download_show.png
rename to dhsi/day-four/images/annos_download_show.png
diff --git a/iiif-5-day-workshop/images/annos_download_success.png b/dhsi/day-four/images/annos_download_success.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_download_success.png
rename to dhsi/day-four/images/annos_download_success.png
diff --git a/dhsi/day-four/images/annos_home.png b/dhsi/day-four/images/annos_home.png
new file mode 100644
index 00000000..18cdb616
Binary files /dev/null and b/dhsi/day-four/images/annos_home.png differ
diff --git a/iiif-5-day-workshop/images/annos_mirador.png b/dhsi/day-four/images/annos_mirador.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_mirador.png
rename to dhsi/day-four/images/annos_mirador.png
diff --git a/iiif-5-day-workshop/images/annos_mirador_addItem.png b/dhsi/day-four/images/annos_mirador_addItem.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_mirador_addItem.png
rename to dhsi/day-four/images/annos_mirador_addItem.png
diff --git a/iiif-5-day-workshop/images/annos_sas_download.png b/dhsi/day-four/images/annos_sas_download.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_sas_download.png
rename to dhsi/day-four/images/annos_sas_download.png
diff --git a/iiif-5-day-workshop/images/annos_sas_manifest.png b/dhsi/day-four/images/annos_sas_manifest.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_sas_manifest.png
rename to dhsi/day-four/images/annos_sas_manifest.png
diff --git a/dhsi/day-four/images/annos_search_api_atom.png b/dhsi/day-four/images/annos_search_api_atom.png
new file mode 100644
index 00000000..f6fa67c9
Binary files /dev/null and b/dhsi/day-four/images/annos_search_api_atom.png differ
diff --git a/iiif-5-day-workshop/images/annos_search_endpoint.png b/dhsi/day-four/images/annos_search_endpoint.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_search_endpoint.png
rename to dhsi/day-four/images/annos_search_endpoint.png
diff --git a/iiif-5-day-workshop/images/annos_select_manifest.png b/dhsi/day-four/images/annos_select_manifest.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_select_manifest.png
rename to dhsi/day-four/images/annos_select_manifest.png
diff --git a/dhsi/day-four/images/annos_share.png b/dhsi/day-four/images/annos_share.png
new file mode 100644
index 00000000..73f09817
Binary files /dev/null and b/dhsi/day-four/images/annos_share.png differ
diff --git a/iiif-5-day-workshop/images/annos_toggle_annotations.png b/dhsi/day-four/images/annos_toggle_annotations.png
similarity index 100%
rename from iiif-5-day-workshop/images/annos_toggle_annotations.png
rename to dhsi/day-four/images/annos_toggle_annotations.png
diff --git a/dhsi/day-four/images/annos_vscode_pre_search.png b/dhsi/day-four/images/annos_vscode_pre_search.png
new file mode 100644
index 00000000..eb9d0d85
Binary files /dev/null and b/dhsi/day-four/images/annos_vscode_pre_search.png differ
diff --git a/dhsi/day-four/images/annos_workbench.png b/dhsi/day-four/images/annos_workbench.png
new file mode 100644
index 00000000..baf3914e
Binary files /dev/null and b/dhsi/day-four/images/annos_workbench.png differ
diff --git a/iiif-5-day-workshop/images/annotation.jpg b/dhsi/day-four/images/annotation.jpg
similarity index 100%
rename from iiif-5-day-workshop/images/annotation.jpg
rename to dhsi/day-four/images/annotation.jpg
diff --git a/dhsi/day-four/images/copy_annos_url.png b/dhsi/day-four/images/copy_annos_url.png
new file mode 100644
index 00000000..c35d119a
Binary files /dev/null and b/dhsi/day-four/images/copy_annos_url.png differ
diff --git a/dhsi/day-four/images/manifest_share.png b/dhsi/day-four/images/manifest_share.png
new file mode 100644
index 00000000..54ab080a
Binary files /dev/null and b/dhsi/day-four/images/manifest_share.png differ
diff --git a/dhsi/day-four/images/mirador_annos.png b/dhsi/day-four/images/mirador_annos.png
new file mode 100644
index 00000000..80686a46
Binary files /dev/null and b/dhsi/day-four/images/mirador_annos.png differ
diff --git a/dhsi/day-four/images/noannos.png b/dhsi/day-four/images/noannos.png
new file mode 100644
index 00000000..2911b8f6
Binary files /dev/null and b/dhsi/day-four/images/noannos.png differ
diff --git a/dhsi/day-four/images/sas/add_manifest.png b/dhsi/day-four/images/sas/add_manifest.png
new file mode 100644
index 00000000..186298e1
Binary files /dev/null and b/dhsi/day-four/images/sas/add_manifest.png differ
diff --git a/dhsi/day-four/images/sas/annotate.png b/dhsi/day-four/images/sas/annotate.png
new file mode 100644
index 00000000..923e5640
Binary files /dev/null and b/dhsi/day-four/images/sas/annotate.png differ
diff --git a/dhsi/day-four/images/sas/browse_annos.png b/dhsi/day-four/images/sas/browse_annos.png
new file mode 100644
index 00000000..0a3fa55b
Binary files /dev/null and b/dhsi/day-four/images/sas/browse_annos.png differ
diff --git a/dhsi/day-four/images/sas/browse_annos_page.png b/dhsi/day-four/images/sas/browse_annos_page.png
new file mode 100644
index 00000000..d9be578c
Binary files /dev/null and b/dhsi/day-four/images/sas/browse_annos_page.png differ
diff --git a/dhsi/day-four/images/sas/browse_manifest.png b/dhsi/day-four/images/sas/browse_manifest.png
new file mode 100644
index 00000000..165e5a94
Binary files /dev/null and b/dhsi/day-four/images/sas/browse_manifest.png differ
diff --git a/dhsi/day-four/images/sas/collections.png b/dhsi/day-four/images/sas/collections.png
new file mode 100644
index 00000000..32f4141c
Binary files /dev/null and b/dhsi/day-four/images/sas/collections.png differ
diff --git a/dhsi/day-four/images/sas/download_anno.png b/dhsi/day-four/images/sas/download_anno.png
new file mode 100644
index 00000000..7f1a4cdd
Binary files /dev/null and b/dhsi/day-four/images/sas/download_anno.png differ
diff --git a/dhsi/day-four/images/sas/empty_collection.png b/dhsi/day-four/images/sas/empty_collection.png
new file mode 100644
index 00000000..48cbd881
Binary files /dev/null and b/dhsi/day-four/images/sas/empty_collection.png differ
diff --git a/dhsi/day-four/images/sas/login.png b/dhsi/day-four/images/sas/login.png
new file mode 100644
index 00000000..cf2423f2
Binary files /dev/null and b/dhsi/day-four/images/sas/login.png differ
diff --git a/dhsi/day-four/images/sas/manifest-search.png b/dhsi/day-four/images/sas/manifest-search.png
new file mode 100644
index 00000000..2de85f02
Binary files /dev/null and b/dhsi/day-four/images/sas/manifest-search.png differ
diff --git a/dhsi/day-four/images/sas/manifest.png b/dhsi/day-four/images/sas/manifest.png
new file mode 100644
index 00000000..5fea0f70
Binary files /dev/null and b/dhsi/day-four/images/sas/manifest.png differ
diff --git a/dhsi/day-four/images/sas/search-url.png b/dhsi/day-four/images/sas/search-url.png
new file mode 100644
index 00000000..513f0871
Binary files /dev/null and b/dhsi/day-four/images/sas/search-url.png differ
diff --git a/dhsi/day-four/images/sas/search-vscode.png b/dhsi/day-four/images/sas/search-vscode.png
new file mode 100644
index 00000000..cbb62b03
Binary files /dev/null and b/dhsi/day-four/images/sas/search-vscode.png differ
diff --git a/dhsi/day-four/images/sas/share-annos-page.png b/dhsi/day-four/images/sas/share-annos-page.png
new file mode 100644
index 00000000..a5200742
Binary files /dev/null and b/dhsi/day-four/images/sas/share-annos-page.png differ
diff --git a/dhsi/day-four/images/sas/share-annos.png b/dhsi/day-four/images/sas/share-annos.png
new file mode 100644
index 00000000..346fafd9
Binary files /dev/null and b/dhsi/day-four/images/sas/share-annos.png differ
diff --git a/dhsi/day-four/images/sas/workbench-annoa-demo.png b/dhsi/day-four/images/sas/workbench-annoa-demo.png
new file mode 100644
index 00000000..b5f078db
Binary files /dev/null and b/dhsi/day-four/images/sas/workbench-annoa-demo.png differ
diff --git a/dhsi/day-four/images/sas/workbench-annoa.png b/dhsi/day-four/images/sas/workbench-annoa.png
new file mode 100644
index 00000000..3ddfb060
Binary files /dev/null and b/dhsi/day-four/images/sas/workbench-annoa.png differ
diff --git a/dhsi/day-four/images/upload_anno.png b/dhsi/day-four/images/upload_anno.png
new file mode 100644
index 00000000..8757b132
Binary files /dev/null and b/dhsi/day-four/images/upload_anno.png differ
diff --git a/dhsi/day-four/images/uv_annos.png b/dhsi/day-four/images/uv_annos.png
new file mode 100644
index 00000000..d1585399
Binary files /dev/null and b/dhsi/day-four/images/uv_annos.png differ
diff --git a/dhsi/day-four/images/wb-annos.png b/dhsi/day-four/images/wb-annos.png
new file mode 100644
index 00000000..eaa8216d
Binary files /dev/null and b/dhsi/day-four/images/wb-annos.png differ
diff --git a/dhsi/day-four/images/workbench-replace.png b/dhsi/day-four/images/workbench-replace.png
new file mode 100644
index 00000000..fc6c99fd
Binary files /dev/null and b/dhsi/day-four/images/workbench-replace.png differ
diff --git a/dhsi/day-four/images/workbench_iiif_link.png b/dhsi/day-four/images/workbench_iiif_link.png
new file mode 100644
index 00000000..e887339a
Binary files /dev/null and b/dhsi/day-four/images/workbench_iiif_link.png differ
diff --git a/dhsi/day-four/niqui-links.md b/dhsi/day-four/niqui-links.md
new file mode 100644
index 00000000..70b6881d
--- /dev/null
+++ b/dhsi/day-four/niqui-links.md
@@ -0,0 +1,7 @@
+https://www.dickensnotes.com/
+
+https://www.lib.ncsu.edu/news/special-collections/exploring-graphic-novels-and-comic-books-visual-literature
+
+https://static.artmuseum.princeton.edu/asian-art/china/viewers/coffin-panel-viewer/
+
+https://www.digitalexhibitions.manchester.ac.uk/s/demonstration-and-templates/page/iiif-and-annona-views
\ No newline at end of file
diff --git a/dhsi/day-four/sharing.md b/dhsi/day-four/sharing.md
new file mode 100644
index 00000000..6dfd2229
--- /dev/null
+++ b/dhsi/day-four/sharing.md
@@ -0,0 +1,23 @@
+# Sharing your Annotations
+
+Now you have created your annotations you want to share them with others. To do this make sure you are back on your Collections screen and have the collection with your Manifest selected.
+
+![SAS Home screen](images/annos_home.png)
+
+Now click the share link:
+
+![SAS share button](images/annos_share.png)
+
+Opening the Share screen will create a copy of the original Manifest and add links to the Annotations and to a IIIF Search service. The share screen gives you a link to the copied Manifest and also two large buttons to open the Manifest in Mirador and the Universal Viewer.
+
+![Share Manifest Screen](images/manifest_share.png)
+
+If you click on the Mirador link you will be taken to a public copy of Mirador. Once you navigate to the page you have annotated you should be able to click the 'hamburger' symbol to open up the left hand panel. Once open you can click on either the Annotations panel or Search Panel.
+
+![Mirador Annotations](images/mirador_annos.png)
+
+If you go back to the Share screen and click on the Universal Viewer link you will be taken to the following screen:
+
+![UV Annotations](images/uv_annos.png)
+
+Note the Universal Viewer doesn't support annotations in the same way as Mirador. To view the annotations you have to search for them using the search bar at the bottom.
diff --git a/dhsi/day-four/wax.md b/dhsi/day-four/wax.md
new file mode 100644
index 00000000..eed0bede
--- /dev/null
+++ b/dhsi/day-four/wax.md
@@ -0,0 +1,10 @@
+# Wax
+Wax is a project for creating digital exhibits website similar to Omeka/CollectiveAccess. One of the nice things about Wax is that it allows your collections to be uploaded via a CSV and it will create embeddable IIIF surrogates which are used in the [Wax website](https://minicomp.github.io/wax/).
+
+![wax workflow](https://minicomp.github.io/wax/img/wax_workflow.jpg)
+
+
+# Wax and Annonatate
+Wax requires three ruby tasks to be run in the command line along with a couple of YAML files to be updated to work properly. This can sometimes cause users dependency troubles. Annonatate provides an interface that will update your YAML files based on the fields in your CSV files and run the wax processes. It will also set up your Wax website to run via GitHub pages.
+
+![](https://annonatate.github.io/images/wax-6.png)
\ No newline at end of file
diff --git a/dhsi/day-four/workbench.md b/dhsi/day-four/workbench.md
new file mode 100644
index 00000000..fbfbeb8b
--- /dev/null
+++ b/dhsi/day-four/workbench.md
@@ -0,0 +1,16 @@
+# Publishing your annotated Manifest
+
+Now you have finished editing your manifest and tested it is working you can upload it to your Workbench so you can share it with others. The reason we have been developing with the Chrome Web Server version is that GitHub caches all of the Website files and so it takes a while for the changes you make to appear on the Website.
+
+To update the manifest in Workbench click the replace button highlighted below:
+
+![image](images/workbench-replace.png)
+
+This will ask you to upload a new version of the Manifest and then will wait for the website to be updated. When you see the links to Mirador and the UV appear it should be OK to view the latest version of the manifest. You not see your changes due to the caching issue mentioned earlier so if this is the case open up a new private window or click Shift and refresh to get the latest copy.
+
+You should now be able to see your annotations and search service in the following places:
+
+ * Mirador 3: https://projectmirador.org/
+ * Universal Viewer: http://universalviewer.io/
+ * Annona: http://iiif.gdmrdigital.com/annona/index.html?iiif-content=[annotations_url]
+
diff --git a/dhsi/day-one/cantaloupe.md b/dhsi/day-one/cantaloupe.md
new file mode 100644
index 00000000..e9cec9ad
--- /dev/null
+++ b/dhsi/day-one/cantaloupe.md
@@ -0,0 +1,296 @@
+
+## Launching Your Own Image Server
+
+So, far we've seen some ways to get our images online and IIIF accessible with minimal effort. This is great for small or personal projects.
+
+At the same time, we also need to think about solutions that scale. If you're working on a project with thousands of images or you're working at a large institution with a large repository of images, we need to think about different solutions.
+
+Setting up your own image server means a little more set up time and it means that you're responsible for keeping this server running and maintained.
+
+But it has the advantage of being scalable. Once set up, it allows you to serve thousands of images and easily add more.
+
+In this section, we're going to see what it looks like to set up such server. You may or may not be responsible for setting up such a server, but it's good to see how it is done. This will help you work with project partners and help you see that setting up such a server isn't actually that difficult. :)
+
+First let's just take a look at the [Cantaloupe Landing Page](https://cantaloupe-project.github.io/) to get a glimpse of what it can do.
+
+We can notice things here like:
+
+* authorization policy
+* watermarking
+* customizable images sources (e.g. AWS S3, etc)
+
+Again, if you're going to be responsible for serving images at scale or at the institutional level, then familiarity with images servers like Cantaloupe is important.
+
+## Installing Cantaloupe
+
+So in this exercise, we're going to walk through setting up and running Cantaloupe.
+
+There actually aren't that many steps to getting it up and running. But we can also look at few of the configuration properties to see how it can be modified and customized to meet various needs.
+
+
+
+### Running Cantaloupe on Your Local Computer
+
+To start you need to download the Cataloupe build. [Download Cantaloupe v5.0.6](https://github.com/cantaloupe-project/cantaloupe/releases/download/v5.0.6/cantaloupe-5.0.6.zip)
+
+Once downloaded, go to your downloads folder.
+
+Unzip the download and you should have a new folder called `cantaloupe-5.0.6`.
+
+Open `cantaloupe-5.0.6` in vscode.
+
+In this folder, there should be a file called `cantaloupe.properties.sample`. Create a copy of this, called `cantaloupe.properties`
+
+We will modify some properties here later, but the default properties should be enough to get the instance working.
+
+In vscode go to the terminal and run:
+
+Mac
+`$ java -Dcantaloupe.config=./cantaloupe.properties -Xmx2g -jar Cantaloupe-5.0.6.jar`
+
+Windows
+`$ java -Dcantaloupe.config=.\cantaloupe.properties -Xmx2g -jar cantaloupe-5.0.6.jar`
+
+Now navigate to [http://127.0.0.1:8182](http://127.0.0.1:8182) in your browser.
+
+### Running Cantaloupe in Code Spaces
+
+Via github code spaces, I've configured a computer that already has Cantaloupe downloaded and installed.
+
+You can find that link here [https://github.com/jeffreycwitt/cantaloupe-container](https://github.com/jeffreycwitt/cantaloupe-container)
+
+Click the "Launch in Code Space" button and give the Code Space time to set up.
+
+And then run cantaloupe.
+
+In the browser based vscode, go to the terminal and run:
+
+In this folder, there should be a file called `cantaloupe.properties.sample`. Create a copy of this, called `cantaloupe.properties`
+
+Then in the terminal run
+
+`$ java -Dcantaloupe.config=./cantaloupe.properties -Xmx2g -jar Cantaloupe-5.0.6.jar`
+
+Change the port visibility to "public" and then follow the Code Space prompts to view your working instance in browser.
+
+
+## Configuring Cantaloupe
+
+We won't explore all the ways you can configure Cantaloupe, but let's make a few changes so we can get a sense of what's possible.
+
+Most of the configuration we're going to explore consists of enabling or disabling various configuration properties.
+
+We've already created this configuration file, called `cantaloupe.properties`
+
+### Adding Your Own Images
+
+Let's hook up cantaloupe to your own images.
+
+#### On your local computer
+
+Find or create a new directory of images somewhere on your computer and call it `myImages`.
+
+Now you just need to get the full path to this image directory.
+
+* In Terminal, navigate to the folder and type `$pwd`
+* In vscode, right click on the directory and select `copy path`
+* In Finder, right click a file within the target folder, select `Get Info`, and then copy the value of the "Where" property
+* In windows explorer, do something similar.
+
+Now in the `FilesystemSource` section of the properties file, we want to change the value of `FilesystemSource.BasicLookupStrategy.path_prefix` to something that looks like this:
+
+`FilesystemSource.BasicLookupStrategy.path_prefix = /path/to/myImages/`
+
+As the comments note, make sure there is a trailing slash.
+
+http://localhost:8182/iiif/3//full/max/0/default.jpg
+
+#### In Code Space
+
+In Code Space, I've already created an images folder with a demo images, so you should change this to...
+
+`FilesystemSource.BasicLookupStrategy.path_prefix = ./images/`
+
+As the comments note, make sure there is a trailing slash.
+
+In Code Space you should be able to see your sample image here:
+
+/iiif/3/vangough.jpg/full/max/0/default.jpg
+
+To add your own images right click on `images` and select `upload`
+
+### Enabling the admin dashboard
+
+Now that we've edited the properties file, let's enable the admin dashboard so we have a more user friendly way to configure the server.
+
+Scroll down to the block that says:
+
+`# Enables the Control Panel, at /admin.`
+
+change the value of `.enabled` to true and add temporary password like `test`
+
+```
+endpoint.admin.enabled = true
+endpoint.admin.username = admin
+endpoint.admin.secret = test
+```
+
+Now head over to [http://localhost:8182/admin](http://localhost:8182/admin) and use the credential to log in
+
+Now you can continue configuring either by editing the properties file or in the web GUI.
+
+### Overlays and Water Marks
+
+Let's add some overlays and water marks. It might be the case that your institution has sensitive data that needs a watermark or some kind attribution statement.
+
+In the web GUI, head down to "overlays"
+
+#### String Overlay
+
+Make sure `Basic Strategy Enabled` is checked.
+
+Navigate down to "Basic Strategy (String)" and type the string that you want overlayed.
+
+Maybe something like "My DHSI Images 2024"
+
+Now take a look at any of your served images, and you should see the overlay.
+
+Using the other properties you can experiment with the font size, position.
+
+#### Image Overlay
+
+You can just easily overlay an image, perhaps as institutional logo that you want to accompany an image.
+
+This can be done by changing the BasicStrategy.Type from 'String' to 'Image'
+
+Then you need to add a .png to the Cantaloupe working directory and indicate that file path in the "Image File" property.
+
+So here you should change `overlay-sample.png` to `name-of-your-overlay.png` after depositing that file in the working directory.
+
+#### Redaction
+
+Notice at the bottom that if you had more advanced needs, like redacting certain parts of the image, this is possible as well. You would need to enable redaction and then write the instructions for which part of which image needs to be redacted.
+
+That's an advanced use case but it's nice to know its there.
+
+### Serving HTTP images.
+
+And pretty cool feature of Cataloupe is that we can serve images from other locations: for example from some web location.
+
+This means that if your images are already published somewhere on-line, but not yet available via the IIIF protocols, you can leave them where they are and point them at a web location.
+
+Cantaloupe will request those images, and then re-serve them in a IIIF compliant way.
+
+To see this, we need to navigate the "Source" section, and change the `StaticSource` from `FilesystemSource` to `HttpSource`
+
+Then under `HttpSource` set the URL Prefix to a `http` url where images can be found.
+
+Here's an example you can use.
+
+Here's a path to a bunch of flag images: `https://www.graphicmaps.com/r/w250/images/flags/`
+
+At this location, several images of flags can be accessed. For example `ht-flag.jpg`, `us-flag.jpg`, `ca-flag.jpg`, `de-flag.jpg` etc. But they are not accessible via iiif.
+
+Instead of downloading all these images and then uploading them to my cantaloupe server, I could just point Cantaloupe at the containing url location, namely: `https://www.graphicmaps.com/r/w250/images/flags/`
+
+So take this url as the value of the `URL Prefix` property, and hit save.
+
+Now check out the canadian flag served as a IIIF image.
+
+Try rotating in 90 degrees.
+[http://localhost:8182/iiif/3/ca-flag.jpg/full/max/90/default.jpg](http://localhost:8182/iiif/3/ca-flag.jpg/full/max/90/default.jpg)
+
+Try requesting it as gray scale
+[http://localhost:8182/iiif/3/ca-flag.jpg/full/max/90/gray.jpg](http://localhost:8182/iiif/3/ca-flag.jpg/full/max/0/gray.jpg)
+
+Try requesting ias a thumbnail
+[http://localhost:8182/iiif/3/ca-flag.jpg/full/50,/90/default.jpg](http://localhost:8182/iiif/3/ca-flag.jpg/full/50,/0/default.jpg)
+
+Try looking at other flags, by changing the two letter country code in the image name to the country of your choice. (With a little guess work about the right two letter prefix, you can usually find your way to the country flag of interest.)
+
+### AWS S3 Connection
+
+An even better, scalable, approach is to point cataloupe at an AWS S3 bucket. This is very similar to the HTTP location approach but allows you to point to AWS S3 bucket.
+
+AWS S3 is a very cost effective way to store and serve large amounts of static content, like images.
+
+If you have S3 bucket, this is a great way to store your image content.
+
+You can then point your Cantaloupe server to the S3 bucket and re-serve those images in a IIIF compliant way.
+
+In this case you need to change the Static Source to `S3Source`
+
+Then in the S3Source tab, you need to supply:
+
+* The name of your S3 Bucket
+* Your Access Key ID
+* Your Secret Key
+
+### Basic Auth
+
+While a driving goal of IIIF is openness, sometimes institutions have sensitive information that needs to be restricted.
+
+In such cases, an enterprise level server like Cantaloupe can help you with these issues.
+
+We won't implement anything in detail here, but it's important to have a sense of how it works and how you could take it further.
+
+Different institutions will have different authorization and authentication needs, so this a place that each institution will like implement its own policy.
+
+But Cantaloupe comes with a way to implement custom rules and policies, namely through its CustomDelegate Class.
+
+In this case we're going to implement a very simple authentication procedure called basic auth.
+
+To do this, we first need to enable the delegate script as follows:
+
+`delegate_script.enabled = true`
+
+or navigate to Application, Delegate Script, and check enabled in the web ui.
+
+When you downloaded Cantaloupe it came with a file called `delgates.rb.sample`. We're going to make a copy of this and name it `delegates.rb`
+
+At the top of this file were going to add:
+
+`require 'base64'`
+
+And then at the bottom of the `CustomDelegate Class` declaration (before the very last `end`), we going to add a few class methods that implement basic auth.
+
+```ruby
+def pre_authorize(options = {})
+ header = context['request_headers']
+ .select{ |name, value| name.downcase == 'authorization' }
+ .values.first
+ return true if authenticate_basic(header)
+ return {
+ 'status_code' => 401,
+ 'challenge' => 'Basic realm="MyRealm" charset="UTF-8"'
+ }
+ end
+
+ def authorize(options = {})
+ true
+ end
+
+ def authenticate_basic(header)
+ if header&.start_with?('Basic ')
+ encoded = header[6..header.length - 1]
+ creds = Base64.decode64(encoded).split(':')
+ if creds.length > 1
+ return (creds[0] == 'my_user' and creds[1] == 'my_secret')
+ end
+ end
+ false
+ end
+```
+
+As implemented here, 'my_user' will be the user name and `my_secret` will be the password.
+
+Now the next time you request an image, your browser will be prompted to ask you for the username and password. Once supplied, your browser will re-request the image using the supplied authentication information.
+
+Basic Auth is not a strong security protocol, so in full production you'll probably want to implement a more secure policy. That's a more complicated endeavor, but the `delegates.rb` file is the place where you would implement such a policy.
+
+Have a look at the other comments in this `delegates.rb` files as it gives several examples of other kinds of customizations that can be implemented via the `CustomDelegate` class
+
+
diff --git a/dhsi/day-one/custom-viewer-demos/example1.html b/dhsi/day-one/custom-viewer-demos/example1.html
new file mode 100644
index 00000000..908b8efa
--- /dev/null
+++ b/dhsi/day-one/custom-viewer-demos/example1.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dhsi/day-one/custom-viewer-demos/image1.html b/dhsi/day-one/custom-viewer-demos/image1.html
new file mode 100644
index 00000000..6e5b9bf8
--- /dev/null
+++ b/dhsi/day-one/custom-viewer-demos/image1.html
@@ -0,0 +1,243 @@
+
+
+
+
+
+
Image 1 Example
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
Descriptions
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
Descriptions
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+```
\ No newline at end of file
diff --git a/dhsi/day-one/custom-viewer-demos/image1viaAnnotations.html b/dhsi/day-one/custom-viewer-demos/image1viaAnnotations.html
new file mode 100644
index 00000000..1d45b9ed
--- /dev/null
+++ b/dhsi/day-one/custom-viewer-demos/image1viaAnnotations.html
@@ -0,0 +1,473 @@
+
+
+
+
+
+
+
+
Image 1 Example
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
Descriptions
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
Descriptions
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+```
\ No newline at end of file
diff --git a/dhsi/day-one/custom-viewer-demos/image2.html b/dhsi/day-one/custom-viewer-demos/image2.html
new file mode 100644
index 00000000..36f5a63d
--- /dev/null
+++ b/dhsi/day-one/custom-viewer-demos/image2.html
@@ -0,0 +1,242 @@
+
+
+
+
+
+
Image 2 Example
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
Descriptions
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
Descriptions
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+```
\ No newline at end of file
diff --git a/dhsi/day-one/image-api.md b/dhsi/day-one/image-api.md
new file mode 100644
index 00000000..842ae1f0
--- /dev/null
+++ b/dhsi/day-one/image-api.md
@@ -0,0 +1,153 @@
+# Image API
+
+## Introduction
+
+ * What is it? A contract (a set of "rules") between the server and a viewing client
+ * Its the foundation of all of the IIIF APIs. They all build on top of the Image API.
+ * Luckily its one of the easiest to implement
+ * because others have written servers you can install which provide the service
+
+## Terminology
+ * __API__ - Application Programming Interface. In this case an agreed standard between the Image API Server and the Image API Client.
+ * __Client__- The software which allows you to view a IIIF Image. As Web Browsers don't support the Image API Natively there are many Javascript viewers that live on webpages that can allow you to view IIIF Images. Examples include OpenSeaDragon, Mirador and Universal Viewer.
+ * __Viewer__ - also known as a IIIF Viewer. This is the same as a Client and lets you view IIIF Images. Examples include OpenSeaDragon, Mirador and Universal Viewer.
+ * __Server__ - Software that runs on a machine at all times and is assessable over the Web. For this workshop I will mostly be referring to Image API Servers but there are other types of servers including Web servers or Email servers. Sometimes they are also know as Services e.g. Image API service, Web Service or Mail Service.
+ * __Image API__ - the agreed standard and specification which forms the contract between Client and Server
+ * __Image API Server__ - the running software that provides access to images using the Image API. Sometimes shortened in this context to Image Servers.
+ * __IIIF Image__ - an Image that is made available through a IIIF Image API Server.
+
+## History
+
+IIIF really started out of the study of Medieval Manuscripts and the difficulty in using Digitised versions. Ben Albritton has written a great blog on the difficulties of working with images at that time and the promise IIIF gives in [Fellow Travelers: The Canterbury Tales and IIIF](https://blalbrit.github.io/2015/07/14/fellow-travelers-the-canterbury-tales-and-iiif).
+
+Testimonial for Glen Robson on the challenges of serving images at scale before IIIF
+
+> From a more personal perspective and also from a perspective of an institution providing these digital images. When I started work at the National Library of Wales, Manuscripts were digitised and three images were created per page.
+
+> 1. A thumbnail:
+>
+> ![Example thumbnail](https://damsssl.llgc.org.uk/iiif/2.0/image/4628571/full/90,/0/default.jpg)
+
+> 2. A Web or reference sized image:
+
+> ![Example web copy of image](https://damsssl.llgc.org.uk/iiif/2.0/image/4628571/full/300,/0/default.jpg)
+
+> 3. and a high quality archival Tiff that was only available on request.
+
+>These were made available through a viewer allowing you to browse around the Manuscript and switch between Thumbnail and Web view:
+
+> ![Image of a historical digital viewer](img/Chaucer_viewer.png)
+
+> As screens got bigger and the internet got faster the limited size of the Web images became a real barrier to use. Although the Archival Tiff was too big to put on the web, we needed some way to allow access to large images and support new methods of access like mobile browsers and the new uses scholars were making of the collection. The solution many institutions moved to, was to create Zooming viewers like [Zoomify](http://www.zoomify.com/) and [Microsoft's DZI](https://en.wikipedia.org/wiki/Deep_Zoom). These viewers tended to use Flash which was unsupported on Mobile and required proprietary file formats to support. Around this time the JPEG2000 file format started to gain traction as an open file format that could support Zoomable viewers.
+
+> Enter:
+
+> ![IIIF Logo](img/logo.png)
+
+> Provides:
+ > * A standard URL structure for accessing images (easy to support)
+ > * Enough information to drive a zoom viewer
+ > * Human hackable URLs
+ > * Cacheable and Scalable URLs
+
+
+## The Image Request API
+
+Before practicing we should spend a little time with the "rules" themselves.
+
+These rules can be found on the IIIF web page here [https://iiif.io/api/image/3.0/](https://iiif.io/api/image/3.0/)
+
+There's a lot here, so let's not get overwhelmed.
+
+Let's look first at the most important section: [section 2.1: Image Request URI Syntax](https://iiif.io/api/image/3.0/#21-image-request-uri-syntax)
+
+Notice that there are 5 main parameters that the user can specify when making a request.
+
+* Region
+* Size
+* Rotation
+* Quality
+* Format
+
+Once we see, this much of the remaining documentation make sense. If we're interesting in specifying a certain region, then we can scroll down the [Region](https://iiif.io/api/image/3.0/#41-region) section and learn how to request the specific region we want in a way that the IIIF server understands.
+
+* Question: What is the "square" parameter?
+* Question: Why do think the "square" parameter exists? What's a use case you can imagine for it.
+
+## Example:
+
+Perhaps the easiest was to learn the basic of the Image API is to practice manipulating images.
+
+So let's do that here, use the demo to play around with the images in a controlled environment.
+
+
+
+
+
+
+
+Here's another controlled demo where you can experiment: [https://www.learniiif.org/image-api/playground](https://www.learniiif.org/image-api/playground)
+
+Once you're demo playing around with the controlled demo, start playing around with a live image.
+
+Place the following base url in browser:
+
+`https://ids.lib.harvard.edu/ids/iiif/47174896/`
+
+Question: Why doesn't this url work by itself? What else needs to be added?
+
+Question: How could we modify this url so that it shows us a picture that is...
+
+* is 512px wide
+* is upside down
+* is gray scale
+* has a format of .png
+
+For help, consult the [IIIF Image API documentation](https://iiif.io/api/image/3.0/)
+
+## Image Information Requests
+
+We can spend less time here, but it's important to note that the Image API provides rules not just for how to return the image itself, but how to return information about the image.
+
+In some cases, a viewing application my want to get prior information about the image before displaying it so that it can decide the best way to display it.
+
+First the API describes how that information should be requested, namely with a `info.json` appended to the image base url.
+
+For example: [https://ids.lib.harvard.edu/ids/iiif/47174896/info.json](https://ids.lib.harvard.edu/ids/iiif/47174896/info.json)
+
+If you open this link, you will a response of json data. (If your browser isn't showing this to you in a nice way consier install a browser extension for viewing json data like this [json chrome extension](https://chromewebstore.google.com/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh))
+
+The structure of that json data, what kind of properties it has and what kind of values can be supplied is governed by the [IIIF Image API: Image Information Request](https://iiif.io/api/image/3.0/#5-image-information)
+
+Take a moment to look at the response above and compare it to the documentation. See if you can answer the following questions
+
+* What does the `maxWidth` property mean?
+* What does the `qualities` property tell the client?
+* Finally, what does the `sizes` tell the client?
\ No newline at end of file
diff --git a/dhsi/day-one/image-hosting.md b/dhsi/day-one/image-hosting.md
new file mode 100644
index 00000000..75329e68
--- /dev/null
+++ b/dhsi/day-one/image-hosting.md
@@ -0,0 +1,19 @@
+## Introduction to Image Hosting
+
+This section will go over some of the ways we can create and host images using IIIF image API standards.
+
+Please make sure you have a [GitHub account](https://github.com) created.
+
+## Methods for Image Hosting
+
+1. [IIIF workbench](workbench.html)
+2. [Level 0 Static](level-0-static.html)
+3. [Cantaloupe](cantaloupe.html)
+
+## Exercise
+
+However you've succeeded in getting your images hosted, it's time to turn back to you `myViewer` project.
+
+Let's start updating your viewer to use your own images, served from your own image server.
+
+We'll walk around to help and troubleshoot!
\ No newline at end of file
diff --git a/dhsi/day-one/image-viewer-exercise.md b/dhsi/day-one/image-viewer-exercise.md
new file mode 100644
index 00000000..4c90fd6e
--- /dev/null
+++ b/dhsi/day-one/image-viewer-exercise.md
@@ -0,0 +1,177 @@
+
+## Exercise
+
+Now that we've had a chance to talk about the image API, we're going to start building.
+
+The goal here is to use simple `html` to build a web page(s) that display your images and provide your user with a way to navigate those images.
+
+### Capturing Some Demo Images
+
+Since we haven't yet placed any of our images on a IIIF server, we're going to use some demo image to start with.
+
+For the time being, pick 5 images from the following that you want to use as your demo images:
+
+* https://iiif.archive.org/image/iiif/3/100-3222%2F100_3222.jpg/full/max/0/default.png
+* https://loris2.scta.info/sorb/S100r.jpg/full/full/0/default.jpg/full/full/0/default.jpg
+* https://iiif.archive.org/image/iiif/3/GadoImages63465%2Ftoupload.jpg/full/max/0/default.png
+* https://iiif.archive.org/image/iiif/3/PLAN-PIA00123%2FPIA00123.jpg/full/max/0/default.png
+* https://ids.lib.harvard.edu/ids/iiif/43182083/full/full/0/default.jpg
+* https://iiif.bodleian.ox.ac.uk/iiif/image/e58b8c60-005c-4c41-a22f-07d49cb25ede/full/full/0/default.jpg
+* https://iiif.irht.cnrs.fr/iiif/France/Ch%C3%A2teauroux/Bibliotheque_municipale/B360446201_MS0005/DEPOT/B360446201_MS0005_0008/full/full/0/default.jpg
+* https://iiif.durham.ac.uk/iiif/trifle/32150/t1/m4/q7/t1m4q77fr328/ad595a0a804a6eba1a7428f8ad89cfb3.jp2/full/256,/0/default.jpg
+* https://iiif.archive.org/image/iiif/3/dr_atlantic-ocean-00104014%2F00104014.jpg/full/max/0/default.png
+* https://iiif.archive.org/image/iiif/3/3110282571_8297688a9c_o%2F3110282571_8297688a9c_o.jpg/full/max/0/default.jpg
+* https://iiif.archive.org/image/iiif/3/5530700036_ce54cf64b6_o%2F5530700036_ce54cf64b6_o.jpg/full/max/0/default.jpg
+* https://iiif.archive.org/image/iiif/3/5229658490_619b3580ed_o%2F5229658490_619b3580ed_o.jpg/full/max/0/default.jpg
+
+Once we've put our own images on a IIIF server, you can replace the URLs for these demo images with your own.
+
+* Advanced Pro Tip
+
+Every image on archive.org is available via IIIF. See [https://iiif.io/guides/guides/archive.org/](https://iiif.io/guides/guides/archive.org/).
+
+If you're interested in using an image from archive.org, find the resource ID in the URL (see the example ID in bold below)
+
+https://archive.org/details/**dr_atlantic-ocean-00104014**
+
+Take that ID and insert it into the following url pattern
+
+https://iiif.archive.org/iiif/3/**dr_atlantic-ocean-00104014**/manifest.json
+
+In the json response, scroll down to find the item service block and copy the value of the id property. In the example below, the relevant image base url is: **https://iiif.archive.org/image/iiif/3/dr_atlantic-ocean-00104014%2F00104014.jpg**
+
+
+```
+"service": [
+ {
+ "id": "https://iiif.archive.org/image/iiif/3/dr_atlantic-ocean-00104014%2F00104014.jpg",
+ "type": "ImageService3",
+ "profile": "level2"
+ }
+ ],
+```
+
+(We will learn how to navigate this file in more detail tomorrow, so don't worry if this is confusing right now. That's with this method is a "advanced pro tip")
+
+### 1. Creating an Image Table of Contents Page
+
+1. Let's create a folder called `myProject`
+2. Open this folder in vscode
+3. Inside this folder create a file called `index.html`
+4. Inside `index.html` let's add some dummy content to make sure things are working. Like so:
+ ```html
+
+
+
+
+
Hello world. Welcome to my custom image viewer.
+
+
+ ```
+5. To see that this is working, open the index.html page in your browser.
+ 1. (You can right click on the file in vscode, copy full path, and then past that path in your browser).
+6. Your index page is going to be your inventory, catalogue, or table of contents page.
+ * From here your users can get an overview of the collection and then navigate to other pages dedicated to each picture.
+7. So let's start modifying our index page with a simple list of our images
+ ```html
+
+
Table of contents
+
+
Image1
+
Image2
+
Image3
+
Image4
+
Image5
+
+
+ ```
+8. Right away we can use the IIIF image API and our understanding of the URL schema to send our users directly to our images by adding link tags with a target url.
+ ```html
+
+
+
+ ```
+9. After adding links, refresh your browser page. Do you see the list of links? When you click on the link, are you taken to the IIIF image? If so great!
+10. Let's start thinking about how we can do more.
+ 1. Before a user leaves an index page, it's nice to give them a preview of where the link takes them.
+ 2. In this case, it might be nice to give them a preview of the image before they decide to use leave the main index page.
+ 3. This a great use case for the IIIF Image API.
+ 4. So instead of just providing links, let's provide image thumbnails.
+11. As we add the image element inside the link, notice that we need to change the image size. We don't want the user have to load the entire image from the server just to see a tiny preview. Instead let's just request size we need.
+ ```html
+
+ ```
+12. If you want to view a working example at this point, see my index example
+
+That's a great start. There's a ton more we can do here, but let's pause and create a pages to display our individual images.
+
+### 2. Creating an Image Table of Contents Page
+
+1. In the same `myProject` directory, let's create a file called `image1.html`
+ 1. This is meant to be something like the "resource" page where user can learn about or experience the object the selected from the index page.
+2. Let's set it up similar to the way we did before.
+ ```html
+
+
+
+
+
Image 1
+
+
+
+ ```
+3. That was easy! Now we've got a page with a title that embeds the IIIF Image.
+4. But now let's reflect a bit. How could you make this a more interesting and engaging page?
+ 1. Could you offer multiple perspectives on this image?
+ 2. Could you include multiple images that focus in on various parts of the image?
+ 3. What other information do you need to add *besides images* to help your user navigate and get the most out of this page?
+5. Get to work.
+ 1. Use the IIIF Image API url parameters to create lots of version of the same image, offering your users lots of perspectives.
+ 2. Add labels and descriptions that you think will help your user.
+ 3. Are there any navigation links you need to add here? (E.g. "Next", "Previous", "Home")
+ 4. See my image 1 example or image 2 example for inspiration.
+6. Once you've finished one page, do a "save as" and make a new file called `image2.html` and then modify to display image 2. Do this for all five of your images.
+
+### 3. Reflection
+
+* What kind of NON-image data do you need to make your “viewer” work?
+* What kind of labels and descriptions do you need?
+* What kind of data relationships are needed in order to make it work?
+ * (For example sequence: what comes first, what comes last, what comes next?)
+* What were the pain points of making an image viewer this way?
+ * What felt repetitive?
+ * Were there features you built that you wanted to re-use but couldn't? How come?
+
+
diff --git a/dhsi/day-one/img/Chaucer_viewer.png b/dhsi/day-one/img/Chaucer_viewer.png
new file mode 100644
index 00000000..fbc766f1
Binary files /dev/null and b/dhsi/day-one/img/Chaucer_viewer.png differ
diff --git a/dhsi/day-one/img/apis.png b/dhsi/day-one/img/apis.png
new file mode 100644
index 00000000..0c9a0fcf
Binary files /dev/null and b/dhsi/day-one/img/apis.png differ
diff --git a/dhsi/day-one/img/getty_view_gri.png b/dhsi/day-one/img/getty_view_gri.png
new file mode 100644
index 00000000..88a57375
Binary files /dev/null and b/dhsi/day-one/img/getty_view_gri.png differ
diff --git a/dhsi/day-one/img/guides.png b/dhsi/day-one/img/guides.png
new file mode 100644
index 00000000..0e54da07
Binary files /dev/null and b/dhsi/day-one/img/guides.png differ
diff --git a/dhsi/day-one/img/img_5813.jpg b/dhsi/day-one/img/img_5813.jpg
new file mode 100644
index 00000000..81dec653
Binary files /dev/null and b/dhsi/day-one/img/img_5813.jpg differ
diff --git a/dhsi/day-one/img/logo.png b/dhsi/day-one/img/logo.png
new file mode 100644
index 00000000..9fb6f947
Binary files /dev/null and b/dhsi/day-one/img/logo.png differ
diff --git a/dhsi/day-one/img/mirador-add-manifest.png b/dhsi/day-one/img/mirador-add-manifest.png
new file mode 100644
index 00000000..2d76f96f
Binary files /dev/null and b/dhsi/day-one/img/mirador-add-manifest.png differ
diff --git a/dhsi/day-one/img/mirador-add-resource.png b/dhsi/day-one/img/mirador-add-resource.png
new file mode 100644
index 00000000..a8f76db8
Binary files /dev/null and b/dhsi/day-one/img/mirador-add-resource.png differ
diff --git a/dhsi/day-one/img/mirador-start.png b/dhsi/day-one/img/mirador-start.png
new file mode 100644
index 00000000..fec8ffd4
Binary files /dev/null and b/dhsi/day-one/img/mirador-start.png differ
diff --git a/dhsi/day-one/img/mirador_close.png b/dhsi/day-one/img/mirador_close.png
new file mode 100644
index 00000000..1ac21fdb
Binary files /dev/null and b/dhsi/day-one/img/mirador_close.png differ
diff --git a/dhsi/day-one/img/otto_ege.png b/dhsi/day-one/img/otto_ege.png
new file mode 100644
index 00000000..047d8c25
Binary files /dev/null and b/dhsi/day-one/img/otto_ege.png differ
diff --git a/dhsi/day-one/img/uv_manifest.png b/dhsi/day-one/img/uv_manifest.png
new file mode 100644
index 00000000..7bee6670
Binary files /dev/null and b/dhsi/day-one/img/uv_manifest.png differ
diff --git a/dhsi/day-one/img/view_manifest.png b/dhsi/day-one/img/view_manifest.png
new file mode 100644
index 00000000..10ef954e
Binary files /dev/null and b/dhsi/day-one/img/view_manifest.png differ
diff --git a/dhsi/day-one/img/viewers.png b/dhsi/day-one/img/viewers.png
new file mode 100644
index 00000000..02a2c4ba
Binary files /dev/null and b/dhsi/day-one/img/viewers.png differ
diff --git a/dhsi/day-one/img/workbench-1.png b/dhsi/day-one/img/workbench-1.png
new file mode 100644
index 00000000..4d22ecda
Binary files /dev/null and b/dhsi/day-one/img/workbench-1.png differ
diff --git a/dhsi/day-one/img/workbench-2.png b/dhsi/day-one/img/workbench-2.png
new file mode 100644
index 00000000..566defc8
Binary files /dev/null and b/dhsi/day-one/img/workbench-2.png differ
diff --git a/dhsi/day-one/img/workbench-3.png b/dhsi/day-one/img/workbench-3.png
new file mode 100644
index 00000000..e831e2ec
Binary files /dev/null and b/dhsi/day-one/img/workbench-3.png differ
diff --git a/dhsi/day-one/img/workbench-4.png b/dhsi/day-one/img/workbench-4.png
new file mode 100644
index 00000000..582eeef3
Binary files /dev/null and b/dhsi/day-one/img/workbench-4.png differ
diff --git a/dhsi/day-one/img/workbench-5.png b/dhsi/day-one/img/workbench-5.png
new file mode 100644
index 00000000..283e6670
Binary files /dev/null and b/dhsi/day-one/img/workbench-5.png differ
diff --git a/dhsi/day-one/img/workbench-6.png b/dhsi/day-one/img/workbench-6.png
new file mode 100644
index 00000000..b1cc8eb9
Binary files /dev/null and b/dhsi/day-one/img/workbench-6.png differ
diff --git a/dhsi/day-one/img/workbench-7.png b/dhsi/day-one/img/workbench-7.png
new file mode 100644
index 00000000..961cf4ac
Binary files /dev/null and b/dhsi/day-one/img/workbench-7.png differ
diff --git a/dhsi/day-one/introductions.md b/dhsi/day-one/introductions.md
new file mode 100644
index 00000000..bcec1590
--- /dev/null
+++ b/dhsi/day-one/introductions.md
@@ -0,0 +1,9 @@
+
+# Class Introductions
+
+- Name
+- Institution
+- Professional Role
+- Why you are in the class?
+- Do you have any IIIF experience?
+- What's something interesting about you?
\ No newline at end of file
diff --git a/dhsi/day-one/level-0-static.md b/dhsi/day-one/level-0-static.md
new file mode 100644
index 00000000..640b391c
--- /dev/null
+++ b/dhsi/day-one/level-0-static.md
@@ -0,0 +1,47 @@
+# Creating static tiled images
+
+There are a couple of command line libraries that will create static images. They are often listed with dynamic iiif servers or api libraries in the [Awesome IIIF readme] (https://github.com/IIIF/awesome-iiif?tab=readme-ov-file).
+
+
+1. [iiif_s3](https://github.com/cmoa/iiif_s3) - Ruby library for generating a static IIIF level 0 Image and Presentation API server on Amazon S3.
+2. [iiif](https://github.com/zimeon/iiif) - Python library providing a reference implementation of the Image API. Also includes a test server and static tile generator.
+3. [iiif-tiler](https://github.com/glenrobson/iiif-tiler) - Java library for generating static IIIF tiles (compliant with the V2.1 and 3.0 of the IIIF Image API).
+4. [iiif-static-choices](https://github.com/bodleian/iiif-static-choices) (not in readme).
+
+
+# Automating the process
+1. https://github.com/dnoneill/dhsi-iiif-2024/blob/main/day1/images_to_iiif.py
+
+The script above allows pdf, png, jpg, jp2, and tif files to be dumped into a folder, the script to be run and all files in the folder will be created into level 0 IIIF images. It uses the iiif library (#2) to create these tiled images.
+
+It also preserves the file structure of the files you have dumped. For example, if you have two folders (cat-photos and dog-photos) in images, the output directory will keep that folder structure.
+
+## Install and running steps
+1. Create fork of https://github.com/dnoneill/dhsi-iiif-2024
+2. Clone your fork locally: `git clone https://github.com/[yourusername]/dhsi-iiif-2024`
+3. Change directory into your fork `git clone dhsi-iiif-2024`
+2. Make sure python with pip is installed
+3. Create virtual environment. `python3 -m venv [nameofenv]`
+4. Activate virtual environment. `source [nameofenv]/bin/activate`
+5. Install dependencies `pip3 install -r requirements.txt`
+6. Dump files you want to convert into the `images` folder.
+7. Move to the script directory `cd day1`
+8. Run the script `python3 images_to_iiif.py`
+9. View your images in the `iiif` folder
+
+## If the above doesn't work
+1. Create fork of https://github.com/dnoneill/dhsi-iiif-2024
+2. Clone your fork locally: `git clone https://github.com/[yourusername]/dhsi-iiif-2024`
+3. add your images to the `images` folder.
+4. add your images to the repository `git add images`
+5. create a commit message `git commit -m "add images"`
+6. push to your repository `git push origin main`
+7. Wait for the script to run, you can view the progress here: https://github.com/[yourusername]/dhsi-iiif-2024/actions
+8. When it's green you should have files in the iiif folder.
+
+
+# Thoughts?
+- Look at the files we have created. What can you tell about them. How do you think these are used?
+- Do they differ from the Workbench?
+- What are some limitations of this method?
+- What are some positivies?
\ No newline at end of file
diff --git a/dhsi/day-one/viewer.js b/dhsi/day-one/viewer.js
new file mode 100644
index 00000000..a268bcbc
--- /dev/null
+++ b/dhsi/day-one/viewer.js
@@ -0,0 +1,591 @@
+infoJsons = {};
+
+/*
+ * Config:
+ * {
+ * # identifer for div
+ * div: "div_id",
+ * # IIIF Images to use
+ * images: [
+ * 'http://example.com/image1'
+ * ],
+ * # Optional regions to use
+ * regions: [
+ 'full',
+ 'square'
+ * ],
+ # Optional sizes
+ sizes: [
+ '500,'
+ ],
+ # Optional rotations
+ rotations: [
+ '45',
+ '90'
+ ],
+ # Optional qualities
+ qualities: [
+ 'default',
+ 'gray'
+ ]
+ * }
+ */
+function addViewer(config) {
+ let iiifContent = getURLParameter("iiif-content");
+ if (iiifContent != null) {
+ config.images.unshift(iiifContent);
+ }
+ if (typeof addExtraImages == 'function') {
+ addExtraImages(config);
+ }
+ Promise.all(config.images.map(url => fetch(url + "/info.json").then(resp => cacheInfoJson(config, url, resp)))).then(addParams(config));
+}
+
+async function addParams(config) {
+ console.log('Running addParams')
+ let foundAll = false;
+ let maxCount = 1000;
+ let count = 0;
+ while (!foundAll) {
+ foundAll = true;
+ for (var i = 0; i < config.images.length; i++) {
+ if (config.images[i] in infoJsons) {
+ console.log('Awaiting ' + config.images[i]);
+ await infoJsons[config.images[i]];
+ } else {
+ console.log('Not found: ' + config.images[i]);
+ foundAll = false;
+ }
+ }
+ if (count++ > maxCount) {
+ console.log('Failed to load images');
+ return;
+ }
+ await new Promise(r => setTimeout(r, 1000));
+ }
+ var div = document.getElementById(config.div);
+
+ var ul = createElementStyle('ul', 'demo');
+ div.appendChild(ul)
+
+ addIdentifiers(ul, config);
+ addRegion(ul, config);
+ addSizes(ul, config);
+ addRotation(ul, config);
+ addQuality(ul, config);
+ addFormats(ul, config);
+
+ var linkDiv = document.createElement('div');
+ linkDiv.setAttribute('style', 'margin-bottom:20px');
+ div.appendChild(linkDiv);
+
+ var aLink = createElementStyle('a', 'centre');
+ aLink.id = "link";
+ aLink.setAttribute('target', '_blank');
+ aLink.setAttribute('rel', 'noopener noreferrer');
+ linkDiv.appendChild(aLink);
+
+ var imgDiv = createElementStyle('div', 'iiif-image-api text-center');
+ div.appendChild(imgDiv);
+
+ var img = createElementStyle('img', 'centre');
+ img.id = config.div + '_iiif-image-api-img';
+ imgDiv.appendChild(img);
+ showImage(config.div,null);
+}
+
+function cacheInfoJson(config, identifier, response) {
+ console.log('Running cache info json', identifier);
+ if (!(identifier in infoJsons)) {
+ if (!response.ok) {
+ console.error("Error: (" + response.status + ") " + response.statusText);
+
+ console.log('Removing: ', identifier);
+ config.images.splice(config.images.indexOf(identifier), 1);
+ }
+ response.json().then((data) => {
+ infoJsons[identifier] = data;
+ });
+ }
+}
+
+function addIdentifiers(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('identifier')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Identifier'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','identifier');
+ select.id = 'identifier_' + config.div;
+ select.onchange = function(){ showImage(config.div,'identifier'); };
+ div.appendChild(select);
+
+ addOptions('identifier_' + config.div, config.images, '', '');
+}
+
+function addRegion(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('region')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Region'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','region');
+ select.id = 'region_' + config.div;
+ select.onchange = function(){ showImage(config.div,'region'); };
+ div.appendChild(select);
+
+ var regions = null;
+ if ('regions' in config) {
+ // Use supplied regions
+ regions = config.regions;
+ }
+ updateRegion(config.div, regions);
+}
+
+function clearSelect(select) {
+ var i, L = select.options.length - 1;
+ for(i = L; i >= 0; i--) {
+ select.remove(i);
+ }
+}
+
+function updateRegion(uuid, suppliedRegions) {
+ if (suppliedRegions) {
+ var regions = suppliedRegions;
+ } else {
+ var regions = ['full'];
+ if (supports(getCurrentImage(uuid), 'regionSquare')) {
+ regions.push('square');
+ }
+ var infoJson = infoJsons[getCurrentImage(uuid)];
+ if (infoJson.width > 1500 && infoJson.height > 1500) {
+ centerX = Math.floor(infoJson.width / 2);
+ centerY = Math.floor(infoJson.height / 2);
+ regions.push((centerX - 500) + "," + (centerY - 500) + ",1000,1000");
+ }
+
+ }
+ addOptions('region_' + uuid, regions, '', '');
+}
+function addSizes(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('size')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Size'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','size');
+ select.id = 'size_' + config.div;
+ select.onchange = function(){ showImage(config.div,'size'); };
+ div.appendChild(select);
+
+ if ('sizes' in config) {
+ // Use supplied sizes
+ var sizes = config.sizes;
+ } else {
+ var sizes = ['250,', '500,', '1000,'];
+ if (serviceVersion(getCurrentImage(config.div)) == '2') {
+ sizes.push('full');
+ } else {
+ sizes.push('max');
+ }
+ }
+
+ addOptions('size_' + config.div, sizes, '', '');
+}
+
+function addRotation(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('rotation')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Rotation'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','rotation');
+ select.id = 'rotation_' + config.div;
+ select.onchange = function(){ showImage(config.div,'rotation'); };
+ div.appendChild(select);
+
+ var rotations = null;
+ if ('rotations' in config) {
+ // Use supplied rotations
+ rotations = config.rotations;
+ }
+ updateRotation(config.div, rotations);
+}
+
+function updateRotation(uuid, suppliedRotations) {
+ if (suppliedRotations) {
+ var rotations = suppliedRotations;
+ } else {
+ var rotations = ['0'];
+ if (supports(getCurrentImage(uuid), 'rotationBy90s')) {
+ rotations.push('90');
+ rotations.push('180');
+ rotations.push('270');
+ }
+ if (supports(getCurrentImage(uuid), 'rotationArbitrary')) {
+ rotations.push('45');
+ rotations.push('135');
+ }
+ if (supports(getCurrentImage(uuid), 'mirroring')) {
+ rotations.push('!0');
+ rotations.push('!180');
+ }
+ }
+ addOptions('rotation_' + uuid, rotations, '', '');
+}
+
+function addOptions(identifier, options, prepend, append, selected=null) {
+ var select = document.getElementById(identifier);
+ clearSelect(select);
+ for (var i = 0; i < options.length; i++) {
+ var optionValue = options[i];
+ option = document.createElement('option');
+ option.text = prepend + optionValue + append;
+ option.value = optionValue;
+
+ select.appendChild(option);
+ }
+ if (selected != null) {
+ select.value = prepend + selected + append;
+ }
+}
+
+function addQuality(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('quality')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Quality'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','quality');
+ select.id = 'quality_' + config.div;
+ select.onchange = function(){ showImage(config.div,'quality'); };
+ div.appendChild(select);
+
+ var qualities = null;
+ if ('qualities' in config) {
+ // Use supplied qualities
+ qualities = config.qualities;
+ }
+ updateQuality(config.div, qualities);
+}
+
+function updateQuality(uuid, suppliedQualities) {
+ var select = document.getElementById('quality_' + uuid);
+ clearSelect(select);
+ if (suppliedQualities) {
+ var qualities = suppliedQualities;
+ } else {
+ var qualities = getImageQualities(uuid);
+ }
+ addOptions('quality_' + uuid, qualities, '', '', 'default');
+}
+
+function addFormats(ul, config) {
+ var li = document.createElement('li');
+ if ('highlight' in config && config.highlight.includes('format')) {
+ li.setAttribute('class', 'highlight');
+ }
+ ul.appendChild(li);
+ li.appendChild(createDescription('Format'));
+
+ var div = createElementStyle('div', 'attr2');
+ li.appendChild(div);
+
+ var select = createElementStyle('select','format');
+ select.id = 'format_' + config.div;
+ select.onchange = function(){ showImage(config.div,'format'); };
+ div.appendChild(select);
+
+ var formats = null;
+ if ('formats' in config) {
+ // Use supplied formats
+ formats = config.formats;
+ }
+ updateFormats(config.div, formats);
+}
+
+function updateFormats(uuid, suppliedFormats) {
+ var select = document.getElementById('format_' + uuid);
+ clearSelect(select);
+ if (suppliedFormats) {
+ var formats = suppliedFormats;
+ } else {
+ var formats = getImageFormats(uuid);
+ }
+ addOptions('format_' + uuid, formats, '.', '');
+}
+
+function serviceVersion(image) {
+ var version = '2';
+ if (image in infoJsons) {
+ var infoJson = infoJsons[image];
+ if ('type' in infoJson && infoJson['type'] == "ImageService3") {
+ version = '3';
+ }
+ }
+ return version;
+}
+
+function getImageFormats(uuid) {
+ var image = getCurrentImage(uuid);
+ var infoJson = infoJsons[image];
+
+ var version = serviceVersion(image);
+ var formats = ['jpg'];
+ if (version == '2') {
+ if ('profile' in infoJson) {
+ for (i = 0; i < infoJson.profile.length; i++) {
+ if (typeof infoJson.profile[i] === 'object') {
+ if ('formats' in infoJson.profile[i]) {
+ for (var j = 0; j < infoJson.profile[i]['formats'].length; j++) {
+ if (!formats.includes(infoJson.profile[i]['formats'][j])) {
+ formats.push(infoJson.profile[i]['formats'][j]);
+ }
+ }
+ }
+ } else {
+ if (infoJson.profile[i] == "http://iiif.io/api/image/2/level2.json" && !(formats.includes('png'))) {
+ formats.push('png');
+ }
+ }
+ }
+ }
+ } else {
+ if (infoJson['profile'] == 'level2') {
+ formats.push('png');
+ }
+ if ('extraFormats' in infoJson) {
+ for (var i = 0; i < infoJson['extraFormats']; i++) {
+ if (!formats.includes(infoJson['extraFormats'][i])) {
+ formats.push(infoJson['extraFormats'][i]);
+ }
+ }
+ }
+ }
+ return formats;
+}
+
+function getImageQualities(uuid) {
+ var image = getCurrentImage(uuid);
+ var infoJson = infoJsons[image];
+
+ var version = serviceVersion(image);
+ if (version == '2') {
+ if ('profile' in infoJson) {
+ for (i = 0; i < infoJson.profile.length; i++) {
+ if (typeof infoJson.profile[i] === 'object' && 'qualities' in infoJson.profile[i]) {
+ let qualities = infoJson.profile[i]['qualities'];
+ if (!qualities.includes("default")) {
+ qualities.unshift("default");
+ }
+ return qualities;
+ }
+ }
+ }
+ return ['default'];
+ } else {
+ if ('extraQualities' in infoJson) {
+ return infoJson['extraQualities']
+ } else {
+ return ['default'];
+ }
+ }
+}
+
+function supports(image, feature) {
+ var infoJson = infoJsons[image];
+ var version = serviceVersion(image);
+ if (version == '2') {
+ if ('profile' in infoJson) {
+ for (i = 0; i < infoJson.profile.length; i++) {
+ if (typeof infoJson.profile[i] === 'object' && 'supports' in infoJson.profile[i]) {
+ return infoJson.profile[i]['supports'].includes(feature);
+ }
+ }
+ }
+ return false;
+ } else {
+ if ('extraFeatures' in infoJson) {
+ return infoJson['extraFeatures'].includes(feature);
+ }
+ return false;
+ }
+}
+
+function getCurrentImage(ident) {
+ var select = document.getElementById('identifier_' + ident);
+ return select.options[select.selectedIndex].value;
+}
+
+function createDescription(text) {
+ var div = document.createElement('div');
+ div.setAttribute('class', 'attr');
+ div.innerHTML = text;
+
+ return div;
+}
+
+function createElementStyle(element, style) {
+ var el = document.createElement(element);
+ el.setAttribute('class', style);
+
+ return el;
+}
+
+ /*
*/
+
+
+
+function showImage(uuid, source) {
+ if (source == 'identifier') {
+ updateRegion(uuid, null);
+ updateRotation(uuid, null);
+ updateQuality(uuid, null);
+ updateFormats(uuid, null);
+ }
+ var identifier = getSelected(uuid, 'identifier');
+ var region = getSelected(uuid, 'region');
+ var size = getSelected(uuid, 'size');
+ var rotation = getSelected(uuid, 'rotation');
+ var quality = getSelected(uuid, 'quality');
+ var format = getSelected(uuid, 'format');
+
+ var url = identifier + "/" + region + "/" + size + "/" + rotation + "/" + quality + "." + format;
+
+ var link = document.getElementById('link');
+ link.href = url
+ link.innerHTML = url
+
+ //var img = document.getElementById('iiif-image-api-div');
+ //img.style.backgroundImage = "url(" + identifier + "/full/" + size + "/0/" + quality + format + ")";
+
+ /*var highlight = document.getElementById('highlight');
+ if (region.indexOf(',') != -1) {
+ coords = region.split(',');
+ highlight.style.top = coords[0] + "px";
+ highlight.style.left = coords[1] + "px";
+ highlight.style.width = coords[2] + "px";
+ highlight.style.height = coords[3] + "px";
+ } else if (region == "full") {
+ highlight.style.top = "0px";
+ highlight.style.left = "0px";
+ highlight.style.width = img.offsetWidth;
+ highlight.style.height = img.offsetHeight;
+ }*/
+
+ var img = document.getElementById(uuid + '_iiif-image-api-img');
+ img.src = url;
+}
+
+function getSelected(uuid, ident) {
+ var select = document.getElementById(ident + '_' + uuid);
+ return select.options[select.selectedIndex].value;
+}
+
+function getURLParameter(param) {
+ if(typeof(param) == "string" && param.length > 0) {
+ if(typeof(window.location.search) == "string" && window.location.search.length > 0) {
+ var _results = new RegExp(param + "=([^&]*)", "i").exec(window.location.search);
+ if(typeof(_results) == "object" && _results !== null && typeof(_results.length) == "number" && _results.length > 0 && _results[1]) {
+ if(typeof(_results[1]) == "string" && _results[1].length > 0) {
+ return unescape(_results[1]);
+ }
+ }
+ }
+ }
+ return null;
+}
diff --git a/dhsi/day-one/week-overview.md b/dhsi/day-one/week-overview.md
new file mode 100644
index 00000000..1cec2469
--- /dev/null
+++ b/dhsi/day-one/week-overview.md
@@ -0,0 +1,36 @@
+# Week Overview
+
+## Day 1 Goals
+
+* Introductions
+* The "Why" Behind IIIF
+* Introduction to the IIIF Image API
+* Build Projects with the IIIF Image API
+
+## Day 2 Goals
+
+* Review the IIIF Image
+* Based on our previous work, reflect the on the benefits if the Image API and think about what else is needed
+* Transition to the IIIF Presentation API
+* Generate Manifests
+* Publishing Manifests
+* Using and Configuring IIIF Viewers in our own Projects
+
+
+## Day 3 Goals
+
+* Focus on more advanced use cases
+* Creating and Publishing Annotations
+* IIIF search API as a way to Search Annotations
+* Keep building your projects and integrating IIIF components
+
+## Day 4 Goals
+
+* Show and Tell of Some Advanced Use Cases from Niqui and Jeff
+* Learn to use Wax and Jekkyll to create a polished and maintainable website that can integrate and display IIIF resources
+* Keep working and polishing week projects
+
+## Day 5 Goals
+
+* Class Show and Tell.
+* Show us what you've been working on all week.
\ No newline at end of file
diff --git a/dhsi/day-one/whatisiiif.md b/dhsi/day-one/whatisiiif.md
new file mode 100644
index 00000000..9807943f
--- /dev/null
+++ b/dhsi/day-one/whatisiiif.md
@@ -0,0 +1,162 @@
+# What is IIIF?
+
+IIIF stands for the International Image Interoperability Framework and is best described by looking at the acronym. Broadly it is two things:
+
+
IIIF is a globally-adopted open source standardized model for delivering many types of image-based resources on the web in many different formats so that audiences can interact with them. It provides a lot of benefits to the institutions that use it, and when implemented across many institutions provides additional benefits across institutional boundaries.
+
+
But, IIIF is more than a standard: it is also an open, global community of software developers, librarians, researchers, educators, museums, universities, creative agencies, and more that work together to develop open APIs, implement them in software, and expose images and A/V files. It’s a grassroots effort between many different institutions to solve their shared problems with delivering, managing, sharing, and working with their resources."
+
+## Community Resources
+- [Listserv](https://groups.google.com/g/iiif-discuss)
+- [Slack](http://bit.ly/iiif-slack)
+- [Newsletter](https://iiif.io/newsletter)
+- [Group Calls](https://iiif.io/community/groups/)
+- [Zenodo](https://zenodo.org/communities/iiif/)
+- [Awesome-IIIF](https://github.com/IIIF/awesome-iiif/)
+- [GitHub](https://github.com/IIIF/)
+
+## International
+
+IIIF has been implemented internationally and is not based in one country. It has been implemented by places like:
+
+ * National Institutions:
+ * Österreichische Nationalbibliothek (Austrian National Library),
+ * [BnF](https://guides.iiif.io/guides/gallica.bnf.fr/),
+ * [Library of Congress](https://guides.iiif.io/guides/loc.gov/) and
+ * the British library.
+ * Aggregators:
+ * Artstore,
+ * ContentDM,
+ * Internet Archive and
+ * Europeana
+ * Universities & Research Institutions:
+ * [Göttingen University Collections](https://guides.iiif.io/guides/gdz.sub.uni-goettingen.de/),
+ * [Leiden University](https://guides.iiif.io/guides/universiteitleiden.nl/) and
+ * [Stanford University](https://guides.iiif.io/guides/searchworks.stanford.edu/)
+ * Museums & Galleries:
+ * British Museum,
+ * [National Gallery of Art (US)](https://guides.iiif.io/guides/nga.gov/) and
+ * [J. Paul Getty Trust](https://guides.iiif.io/guides/search.getty.edu/),
+
+For a fuller list of institutions who advertise their IIIF resources please see the [IIIF guides](https://guides.iiif.io/) site.
+
+
+
+## Image*
+
+First and foremost IIIF started with the problem of making large images available on the Web. This means allowing users to zoom into large images in way that is scaleable and allows quick zooming without visual lag on large images.
+
+One of the examples of this is with the Japanese Tax Map below. In the image Wayne Vanderkuil, the Stanford lead photographer is shown next to the map for a sense of scale. Wayne is 6' 4" (1.93m) tall. The map is so big that it had to be photographed in separate sections and stitched together using Photoshop. If you click on the image below you will be taken to the IIIF image which allows you to zoom around this massive map.
+
+
+
+For details on how this map was scanned, there is a blog post [here](https://web.archive.org/web/20230527005027/https://library.stanford.edu/blogs/digital-library-blog/2015/11/adventures-oversized-imaging-digitizing-omi-kuni-ezu-jin-jiang).
+
+* the star next to the image is because IIIF now also supports Audio Visual resources but it was too late to change the name...
+
+Here is an example of a video with table of contents shown in the [Universal Viewer](https://uv-v3.netlify.app/#?c=&m=&s=&cv=&manifest=https%3A%2F%2Fiiif.io%2Fapi%2Fcookbook%2Frecipe%2F0003-mvm-video%2Fmanifest.json)
+
+## Interoperability
+
+Interoperability can be though of in different ways and there are a few examples below on how IIIF achieves this interoperability.
+
+### Interoperable Viewers
+
+First because IIIF provides a standard way of exposing images and metadata it is possible to switch viewers to view the same content. Users might want to do this for a number of reasons:
+
+ * A Library provides content in a general purpose Viewer like the UniversalViewer
+ * A user might want to take that manuscript and annotate it Mirador
+ * A user might want to run some AI tools using the Curation IIIF image viewer
+
+![Same IIIF manifest in UV and Mirador](img/viewers.png)
+
+ * [Manuscript in NLW using the UniversalViewer](http://hdl.handle.net/10107/4574752)
+ * [Same Manuscript in Mirador 3](https://projectmirador.org/embed/?iiif-content=https://damsssl.llgc.org.uk/iiif/2.0/4574752/manifest.json)
+ * [Tify](https://demo.tify.rocks/demo.html?manifest=https://damsssl.llgc.org.uk/iiif/2.0/4574752/manifest.json)
+ * [IIIF Curation Viewer](http://codh.rois.ac.jp/software/iiif-curation-viewer/demo/?manifest=https://damsssl.llgc.org.uk/iiif/2.0/4574752/manifest.json)
+ * [Annona](https://ncsu-libraries.github.io/annona/tools/#/display?url=https://damsssl.llgc.org.uk/iiif/2.0/4574752/manifest.json&viewtype=iiif-storyboard&settings=%7B%22fullpage%22%3Atrue%7D)
+ * [Clover](https://samvera-labs.github.io/clover-iiif/docs/viewer/demo?iiif-content=https://damsssl.llgc.org.uk/iiif/2.0/4574752/manifest.json)
+
+For instructions on how to take content from one viewer to another there is this [medium post](https://iiif-io.medium.com/how-to-use-iiif-resources-and-image-viewers-bd378a68b013). We will also be covering this in the workshop.
+
+### Interoperable Images
+
+The second way IIIF does interoperability is by allowing remote distributed images to be reunited in new digital editions. The manuscript below is one that was owned by the infamous biblioclast Otto Ege. In the early 20th century he split the manuscript and sold individual pages to institutions across the US. Using IIIF these images have been reconstructed in the following way:
+
+![Image showing how the manuscript was constructed with remote images](img/otto_ege.png)
+
+The full manuscript can be viewer [here](https://projectmirador.org/embed/?iiif-content=https://dms-data.stanford.edu/data/manifests/Stanford/ege1/manifest.json).
+
+Another example of a reconstructed manuscript is the one below from the BnF. Instead of brining together full images only the illustrations have been cut out and these are overlaid onto the original manuscript. In this example the illustrations are held by on institution and the manuscript by another.
+
+
+
+The full demo of this manuscript can be found on the [Biblissima website](https://demos.biblissima.fr/chateauroux/demo/).
+
+There is also a IIIF Cookbook [recipe](https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/) for this example which supports version 3.
+
+
+### Interoperable Collections
+
+As well as brining distributed images together it is also possible to compare different collections in a single viewer. The Mirador viewer allows side by side comparison and using the techniques discussed earlier its possible for users to collect manifests from different locations and then compare them side by side. The example we are going to use here is from a [blog by Ben Albritton of Stanford University](https://blalbrit.github.io/2015/07/14/fellow-travelers-the-canterbury-tales-and-iiif). It shows two copies of Chaucer's Canterbury Tales one from the National Library of Wales based in the UK and one from the Huntington Library in Los Angeles.
+
+
+
+
+
+
+
+
+
+
+## Framework
+
+The last part of the acronym is Framework and this is for the different standards that IIIF provides to ensure viewers and publishers all agree on sharing compatible data. These standards are known as [APIs](https://en.wikipedia.org/wiki/API) and the two main APIs are:
+
+![Image and Presentation APIs](img/apis.png)
+
+These two APIs will be covered in detail in the rest of the workshop. As well as these APIs there are a number of other APIs defined by IIIF including:
+
+ * [Content Search API](https://iiif.io/api/search/1.0) - to search annotations, a bit like a searching within a PDF file
+ * [Authentication API](https://iiif.io/api/auth/1.0) - for protecting resources by username or giving lower quality images to unauthenticated users
+ * [Change Discovery API](https://iiif.io/api/discovery/) - for Aggregators like Europeana to harvest IIIF data
+ * [Content State API](https://iiif.io/api/content-state/) - to improve the method of taking content from one viewer to another
+ * [Maps Extension](https://iiif.io/api/extension/navplace/) - to link a Geographical place to a IIIF object. Could be used to Georeference a map or photograph.
+
diff --git a/dhsi/day-one/whyiiif.md b/dhsi/day-one/whyiiif.md
new file mode 100644
index 00000000..93a73d51
--- /dev/null
+++ b/dhsi/day-one/whyiiif.md
@@ -0,0 +1,15 @@
+# Why use IIIF?
+
+## Interoperability
+- Interoperability provides the ability to mix and match tools
+- Allows developers to create open tools not wedded to closed standards
+- Excel vs. CSV
+
+## Storage implications
+- No longer have to create small, medium, large derivatives
+
+## High quality images
+- Allows for zooming with high quality images without lag time
+
+## Reusable
+- Format of IIIF apis allow easy sharing, embedding
\ No newline at end of file
diff --git a/dhsi/day-one/workbench.md b/dhsi/day-one/workbench.md
new file mode 100644
index 00000000..7a43a03a
--- /dev/null
+++ b/dhsi/day-one/workbench.md
@@ -0,0 +1,25 @@
+# IIIF training workbench
+The IIIF training workbench that is often used in IIIF training workshops like this. It allows for creating IIIF views via a browser. We are going to be using it to create some IIIF images.
+
+1. Open https://workbench.gdmrdigital.com/login.xhtml
+2. Click on the Login with GitHub button
+![](img/workbench-1.png)
+3. Click "Create project" button
+![](img/workbench-2.png)
+4. Name your project and click create
+![](img/workbench-3.png)
+5. Click on the upload button in the upper right hand corner.
+![](img/workbench-4.png)
+6. Click on browse and choose image from your computer.
+7. Provide a name for the image and choose IIIF version
+![](img/workbench-5.png)
+8. Wait for the image to process
+![](img/workbench-6.png)
+9. Look at the links that are provided when the process is finished running.
+![](img/workbench-7.png)
+
+
+# Thoughts?
+- What are some of the limitations of this approach?
+- What are some of the positives of this approach?
+- Any other thoughts?
\ No newline at end of file
diff --git a/dhsi/day-three/BL-Audio/README.md b/dhsi/day-three/BL-Audio/README.md
new file mode 100644
index 00000000..7dd363f9
--- /dev/null
+++ b/dhsi/day-three/BL-Audio/README.md
@@ -0,0 +1,293 @@
+# Deep dive into the BL sound collection
+
+The British Library has kindly provided a number of [examples](examples.md) of audio content to look at. We are going to analyse one of these Manifests and then look at creating our own Manifest by re-using the recordings from other manifests.
+
+The example we are going to use is the "Sal's Got A Sugar Lip/Driftwood" recording which can be viewed here:
+
+https://sounds.bl.uk/sounds/sals-got-a-sugar-lipdriftwood-1001406563200x000006
+
+The viewer which is used to play this recording is known as the Universal Viewer mini player. It shares a lot of code with the Universal Viewer that we've seen for images but is customised to hide things like the metadata and the canvas list. This mini player looks like this:
+
+![Mini player screenshot](imgs/audio_website.png)
+
+Unforunately there isn't a link to the IIIF Manifest on this page but this is included in the [examples](examples.md) page and is available below:
+
+https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000002/manifest.json
+
+you can also discover the Manifest by opening up the Network developer tab in your browser and searching for `manifest.json`.
+
+There are a number of interesting features of this Manifests and before we start customising it we are going to take a look at the Manifest in detail.
+
+### Canvases
+
+This particular example contains two canvases and according to the Metadata this particular item is a [7" vinyl record](https://www.vectis.co.uk/vinyl/a-guide-to-record-sizes-and-speeds). There is one canvas for one side of the disk and another for the reverse.
+
+***Note:*** the JSON in the examples below has been collapsed to focus on the main items. Collapsed items are contained in the `[...]` and can be seen expanded in the full [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000002/manifest.json).
+
+```
+items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004",
+ "type": "Canvas",
+ "label": {
+ "en": [ "Disc 1 Side 1" ]
+ },
+ "duration": 182.88,
+ "items": [ ... ],
+ "thumbnail": [ ... ]
+ },
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000005",
+ "type": "Canvas",
+ "label": {
+ "en": [ "Disc 1 Side 2" ]
+ },
+ "duration": 168.80000000000001,
+ "items": [...],
+ "thumbnail": [...]
+ }
+],
+```
+
+The duration is measured in seconds and is approximately `182 seconds` for the first canvas and `168 seconds` for the second canvas. Interestingly you will note in the [website](https://sounds.bl.uk/sounds/sals-got-a-sugar-lipdriftwood-1001406563200x000006) that the two recordings linked below the mini player are called "Sal's Got A Sugar Lip/Driftwood" and "Chesapeake bay/Botsford". You might expect the names of these recordings would come from the canvas label so be "Disc 1 Side 1" and "Disc 1 Side 2". The labels are actually coming from the structure or table of contents explained below.
+
+### Structure
+
+You can see in the example below that the label for the files in the [website](https://sounds.bl.uk/sounds/sals-got-a-sugar-lipdriftwood-1001406563200x000006) is coming from the range. I believe this is done so that the Manifest can show two different orderings of the content. The first in the sequence that matches the physical layout on disk. The second order is provided in the structures element and is a logical ordering of the recording. In this example the physical layout exactly matches the logical layout so the range targets the full canvas duration.
+
+You can imagine other scenarios particularly with tapes where the sequence would contain two canvases, one for each side of the tape. The structures element would split the recording into logical units like individual interviews and these could cross between canvases or tape sides so would need to be combined in a range.
+
+```
+structures": [
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000006",
+ "type": "Range",
+ "label": {
+ "en": [ "Sal's Got A Sugar Lip/Driftwood" ]
+ },
+ "metadata": [...],
+ "requiredStatement": {...},
+ "rendering": [...],
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004#t=00.00,182.88",
+ "type": "Canvas"
+ }
+ ]
+ },
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000008",
+ "type": "Range",
+ "label": {
+ "en": [ "Chesapeake bay/Botsford" ]
+ },
+ "metadata": [...],
+ "requiredStatement": {...},
+ "rendering": [ ... ],
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000005#t=00.00,168.80",
+ "type": "Canvas"
+ }
+ ]
+ }
+ ]
+]
+```
+
+## Canvas deep dive
+
+The canvas is a core feature of IIIF. For images the canvas is usually equivalent to a page in a book. For AV material the distinction can be more complicated. It is sometimes thought of as a empty powerpoint slide where images or audio are `painted` on to the slide at particular positions.
+
+In the image below you can see the canvas has a height and a width. The example image is `painted` on to the full canvas so that the canvas width and height match the image width and height. This is the most common use case for IIIF images.
+
+![Diagram showing painting of an image on to a canvas.](imgs/IIIF_AV_EuropeanWorkingGroup1.png)
+
+In the following example you can see two images are painted onto one canvas. One image is the background manuscript and the second image is the illustration. The background manuscript image is `painted` on to the canvas and matches the canvas height and width. The Illustration is `painted` on to a particular region of the canvas so that it appear in the correct place.
+
+![Alt text](imgs/IIIF_AV_EuropeanWorkingGroup2.png)
+
+The support for AV in IIIF entailed the addition of duration to the canvas. Now a canvas can have a height, width and duration. Different dimensions are needed for different content types i.e:
+
+ * Images required width and height
+ * Audio only files require duration
+ * Video files required width, height and duration
+
+![Alt text](imgs/IIIF_AV_EuropeanWorkingGroup3.png)
+
+With the canvas example below we have an canvas duration of 10 seconds. We can now `paint` an image on to the canvas and set it for a duration of 10 seconds so it will show for the full duration of the canvas.
+
+![Alt text](imgs/IIIF_AV_EuropeanWorkingGroup4.png)
+
+We can also `paint` a video on to the canvas and in the example below it is painted on a particular region of the canvas and set to play starting at second 4 and finishing at second 7.
+
+![Alt text](imgs/IIIF_AV_EuropeanWorkingGroup5.png)
+
+You can keep on adding images, videos and text to create a complicated canvas. The examples above where developed during the discussions on adding AV and a prototype presentation of this canvas can be seen at the following URL:
+
+https://tomcrane.github.io/fire/
+
+The method for `painting` an image, audio or video resource on to a IIIF canvas is done through an annotation. If we look at the following example where we can assume the body of the annotation is an audio recording. We can see the `target` points to the canvas ID and adds `#t=00.00,182.88` to the end of the canvas id. This means the body (audio resource) is painted on to the canvas from the start (second 00.00) to the end (second 182.88). In this case the `target` points to the full duration of the canvas so the addition of the `#t=00.00,182.88` isn't necessary as if the target points to the canvas id then it is assumed to cover the full duration of the canvas.
+
+```
+{
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004/anno1/1",
+ "type": "Annotation",
+ "motivation": "painting",
+ "target": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004#t=00.00,182.88",
+ "body": [ ... ]
+}
+```
+
+Note if the audio resource in the body is longer than the time specified in the canvas it should be played faster and if the audio resource is shorter than the target region then it should be played slower to fit the desired duration.
+
+The full first canvas for the example is shown below.
+
+```
+{
+
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004",
+ "type": "Canvas",
+ "label": {
+ "en": [
+ "Disc 1 Side 1"
+ ]
+ },
+ "duration": 182.88,
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004/anno1",
+ "type": "AnnotationPage",
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004/anno1/1",
+ "type": "Annotation",
+ "motivation": "painting",
+ "target": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000004#t=00.00,182.88",
+ "body": [
+ {
+ "type": "Choice",
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100140656320.0x00000e/manifest.mpd",
+ "format": "application/dash+xml",
+ "type": "Sound",
+ "service": [ ... ]
+ },
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100140656320.0x00000e/index.m3u8",
+ "format": "application/vnd.apple.mpegURL",
+ "type": "Sound",
+ "service": [...]
+ }
+ ]
+ }
+ ],
+ "seeAlso": [...]
+ }
+ ]
+ }
+ ],
+ "thumbnail": [ ... ]
+},
+```
+
+### Providing access to different audio formats
+
+Another interesting aspect of this Manifest is the `choice` that is present in the annotation body. Usually you would just see a link to the audio resource as in this [IIIF Cookbook recipe](https://iiif.io/api/cookbook/recipe/0002-mvm-audio/). With the choice in the body you are providing the IIIF Viewer with the option to choose one of the formats. It maybe that the viewer only support one type and so would select that one. The two formats available are [MPEG-Dash](https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP) and [HTTP live Streaming](https://en.wikipedia.org/wiki/HTTP_Live_Streaming). It appears both formats are similar streaming formats but are supported by different devices:
+
+___"Both HLS and MPEG-DASH offer adaptive streaming and similar levels of quality and latency. But HLS is best for live streaming, while MPEG-DASH is best for on-demand streaming. HLS is more compatible with Apple devices, while MPEG-DASH is more compatible with other devices."___
+
+From: https://www.gumlet.com/learn/hls-vs-dash/
+
+```
+"body": [
+ {
+ "type": "Choice",
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100140656320.0x00000e/manifest.mpd",
+ "format": "application/dash+xml",
+ "type": "Sound",
+ "service": [ ... ]
+ },
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100140656320.0x00000e/index.m3u8",
+ "format": "application/vnd.apple.mpegURL",
+ "type": "Sound",
+ "service": [...]
+ }
+ ]
+ }
+],
+```
+
+### Waveform image
+
+When you view the example audio file on the [website](https://sounds.bl.uk/sounds/sals-got-a-sugar-lipdriftwood-1001406563200x000006) you will see a Waveform which can be used to visualize the audio recording. This is achieved by adding a `seeAlso` to the canvas pointing to the Waveform. The `seeAlso` property is used to point to machine readable metadata and in this case points to a generated Waveform presumably using the [BBC tools](https://waveform.prototyping.bbc.co.uk/). Viewers won't necessarily support the Waveform profile but in this case the UV will show an image of the Waveform to enable easier browsing through a recording.
+
+```
+seeAlso": [{
+ "id": "https://api-beta.bl.uk/waveform/vdc_100140656320.0x000010",
+ "type": "Dataset",
+ "format": "application/octet-stream",
+ "profile": "http://waveform.prototyping.bbc.co.uk"
+}]
+```
+
+### Accompanying canvas
+
+This can't be seen in the BL sound website but there is an image associated with the Manifest which should be shown to the user while the audio is playing. Having this accompanying canvas allows the viewer to show something if it they can't process the Waveform profile. The supplied image is of the original vinyl:
+
+![Alt text](https://api-beta.bl.uk/image/static/ark:/81055/vdc_100140656320.0x000011?vdc_100140656320.0x000002)
+
+An Accompanying Canvas is a special type of Canvas which is played while the main content is also playing. There is a [Cookbook recipe](https://iiif.io/api/cookbook/recipe/0014-accompanyingcanvas/) on accompanying canvas with further details on it's use.
+
+```
+"accompanyingCanvas": {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000002/c/poster",
+ "type": "Canvas",
+ "label": {
+ "en": [ "Illustration" ]
+ },
+ "width": 1440,
+ "height": 1434,
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000002/c/a1",
+ "type": "AnnotationPage",
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000002/c/a1/a1",
+ "type": "Annotation",
+ "motivation": "painting",
+ "target": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000002/c/poster",
+ "body": [
+ {
+ "id": "https://api-beta.bl.uk/image/static/ark:/81055/vdc_100140656320.0x000011?vdc_100140656320.0x000002",
+ "type": "Image",
+ "width": 1440,
+ "height": 1434,
+ "format": "image/jp2"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+
+},
+```
+
+### View Manifest in full UV
+
+To see some of the hidden functionality we can have a look at the Manifest in the regular Universal Viewer:
+
+https://uv-v4.netlify.app/#?manifest=https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000002/manifest.json
+
+You will notice a number of differences with the mini player. For example:
+
+* The accompanying canvas image is showing.
+* The canvas labels for each side of the disk can be seen in the Thumbnails tab on the left hand side.
+* The Range is shown by switching the Thumbnails tab to Index.
diff --git a/dhsi/day-three/BL-Audio/RemixAudio.md b/dhsi/day-three/BL-Audio/RemixAudio.md
new file mode 100644
index 00000000..3a8f87d6
--- /dev/null
+++ b/dhsi/day-three/BL-Audio/RemixAudio.md
@@ -0,0 +1,224 @@
+# Remix an audio file
+
+For this exercise we are going to take the "Rough sea with heavy surf, England, 1996" recording from the following item:
+
+https://sounds.bl.uk/sounds/rough-sea-with-heavy-surf-england-1996-1001429387280x000028
+
+We are then going to create a new Manifest and add a table of contents using the Indiana University Timeliner tool.
+
+## Step 1: Find the information about the recording
+
+The manifest for the above recording is available at:
+
+https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/manifest.json
+
+and searching for the label "Rough sea with heavy surf, England, 1996" we find the following range:
+
+```
+{
+
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000028",
+ "type": "Range",
+ "label": {
+ "en": [
+ "Rough sea with heavy surf, England, 1996"
+ ]
+ },
+ "metadata": [...],
+ "rights": "https://creativecommons.org/licenses/by/4.0",
+ "requiredStatement": {...},
+ "rendering": [...],
+ items": [{
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/canvas/node-id-000040#t=00.00,112.00",
+ "type": "Canvas"
+ }]
+}
+```
+
+Using the canvas id in the `items` part of the range we can find the canvas that we want.
+
+```
+{
+
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/canvas/node-id-000040",
+ "type": "Canvas",
+ "label": {
+ "en": [
+ "[No Title]"
+ ]
+ },
+ "duration": 112.0,
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/canvas/node-id-000040/anno20",
+ "type": "AnnotationPage",
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/canvas/node-id-000040/anno20/1",
+ "type": "Annotation",
+ "motivation": "painting",
+ "target": "https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/canvas/node-id-000040#t=00.00,112.00",
+ "body": [
+ {
+ "type": "Choice",
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/manifest.mpd",
+ "format": "application/dash+xml",
+ "type": "Sound",
+ "service": [
+ {
+ "id": "https://api-beta.bl.uk/auth/iiif/login",
+ "type": "AuthCookieService1"
+ },
+ {
+ "id": "https://api-beta.bl.uk/media/dash/ark:/81055/vdc_100142938728.0x000056/probe.json",
+ "type": "AuthProbeService1",
+ "profile": "http://iiif.io/api/auth/1/probe"
+ }
+ ]
+ },
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/index.m3u8",
+ "format": "application/vnd.apple.mpegURL",
+ "type": "Sound",
+ "service": [
+ {
+ "id": "https://api-beta.bl.uk/auth/iiif/login",
+ "type": "AuthCookieService1"
+ },
+ {
+ "id": "https://api-beta.bl.uk/media/hls/ark:/81055/vdc_100142938728.0x000056/probe.json",
+ "type": "AuthProbeService1",
+ "profile": "http://iiif.io/api/auth/1/probe"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "seeAlso": [
+ {
+ "id": "https://api-beta.bl.uk/waveform/vdc_100142938728.0x000056",
+ "type": "Dataset",
+ "format": "application/octet-stream",
+ "profile": "http://waveform.prototyping.bbc.co.uk"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "thumbnail": [
+ {
+ "id": "https://api-beta.bl.uk/hub-logo/audio-tape.png",
+ "Type": "Image"
+ }
+ ]
+
+},
+```
+
+The bits we are interested in are the duration and the links to the files:
+
+```
+ "duration": 112.0,
+```
+
+```
+ "body": [
+ {
+ "type": "Choice",
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/manifest.mpd",
+ "format": "application/dash+xml",
+ "type": "Sound"
+ },
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/index.m3u8",
+ "format": "application/vnd.apple.mpegURL",
+ "type": "Sound"
+ }
+ ]
+ }
+ ],
+```
+
+Note the authorization services have been removed. As this content is open access the authentication service doesn't function for this resource so to simplifying things it can be removed.
+
+## Step 2: Use the cookbook example and insert new recording
+
+Download the JSON-LD from the Audio cookbook by right clicking on the JSON-LD link and clicking "Save Link As":
+
+https://iiif.io/api/cookbook/recipe/0002-mvm-audio/
+
+Save the manifest.json to your `iiif-workshop` directory and called it `av-manifest.json`.
+
+Edit the duration field to `112.00` and copy in the body from the code sample above. You should have a manifest that looks like [manifest-single-recording.json](manifest-single-recording.json).
+
+Now test that this manifest works before we go any further. Ensure you have the VS Code Live Server running then you should be able to click on the following link to view your Manifest:
+
+https://uv-v4.netlify.app/#?manifest=http://127.0.0.1:5500/av-manifest.json&c=&m=&s=&cv=&xywh=
+
+## Step 3: Load Manifest to Timeliner
+
+Now you have the manifest working you need to make a slight change to the manifest so that it will open in the Timeliner. This is to do with the order of the different audio files as Timeliner currently has a problem with MPEG-Dash files. In the av-manifest.json file swap the different files so the index.m3u8 one is first:
+
+```
+"type": "Choice",
+"items": [
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/index.m3u8",
+ "format": "application/vnd.apple.mpegURL",
+ "type": "Sound"
+ },
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/manifest.mpd",
+ "format": "application/dash+xml",
+ "type": "Sound"
+ }
+]
+```
+
+Now navigate to the Timeliner and add the link to your manifest:
+
+https://timeliner.dlib.indiana.edu/app/index.html#
+
+![Alt text](imgs/timeliner-open.png)
+
+To break the recording up into chapters click on the thin line highlighted in the image below. Then click the + button to create a new section. You can edit the name and colour of your section by clicking the pencil next to the section name.
+
+![Alt text](imgs/timeliner-gtk.png)
+
+Create three or four chapters by repeating the steps above.
+
+## Step 4: Test table of contents
+
+You can now export your work from the Timeliner application. The export will create a new manifest which contains your original audio resource and also the added structures element. To do this click the Download this timeline button highlighted below.
+
+![Download manifest button](imgs/timeliner-export.png)
+
+Now we can test to see if the changes you made work in the Universal Viewer.
+
+Unfortunately the UV doesn't support HLS and the Timeliner doesn't support MPEG dash so in step 3 above we had to re-organise the order of derivatives and now we have to do the reverse so that MPEG dash is first.
+
+```
+ "type": "Choice",
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/manifest.mpd",
+ "format": "application/dash+xml",
+ "type": "Sound"
+ },
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/index.m3u8",
+ "format": "application/vnd.apple.mpegURL",
+ "type": "Sound"
+ },
+ ]
+```
+
+Once you have done this change you should be able to open your manifest in the UV and see the table of contents included.
+
+https://uv-v4.netlify.app/#?manifest=http://127.0.0.1:5500/av-manifest.json&c=&m=&s=&cv=&xywh=
\ No newline at end of file
diff --git a/dhsi/day-three/BL-Audio/bl_examples.csv b/dhsi/day-three/BL-Audio/bl_examples.csv
new file mode 100644
index 00000000..2566232f
--- /dev/null
+++ b/dhsi/day-three/BL-Audio/bl_examples.csv
@@ -0,0 +1,40 @@
+Sounds Website URLs,Shelfmark,Title,IIIF
+Skiffle,,,
+https://sounds.bl.uk/sounds/sals-got-a-sugar-lipdriftwood-1001406563200x000006,1SE0039342,Lonnie Donegan and his Skiffle Group: Sal's Got A Sugar Lip/Driftwood,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000002/manifest.json
+https://sounds.bl.uk/sounds/grey-gooseleadbetter-1001406510460x000006,"1CS0042552,1CS0042295",Ken Colyer's Skiffle Group: The grey goose / I can't sleep,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140651046.0x000002/manifest.json
+https://sounds.bl.uk/sounds/they-cant-take-that-away-from-megershwin-1001406513750x000006,1CS0042419,Dickie Bishop and The Sidekicks: They can't take that away from me / Jumpin' Judy,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140651375.0x000002/manifest.json
+,,,
+Wildlife,,,
+https://sounds.bl.uk/sounds/brent-goose-england-1981-1001429387280x000008,WA 2022/001/002,Coast and sea,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/manifest.json
+https://sounds.bl.uk/sounds/british-chaffinch-england-1988-1001429413870x000006,WA 2022/001/005,"Home, garden and farm",https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142941387.0x000001/manifest.json
+https://sounds.bl.uk/sounds/common-chiffchaff-england-1990-1000828534710x000005,"W1CDR0000135,W2CDR0000135",Wildlife CD-R recordings,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100082853471.0x000002/manifest.json
+https://sounds.bl.uk/sounds/common-raven-england-1971-1001429417600x000008,WA 2022/001/006,Moorland and mountain,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142941760.0x000001/manifest.json
+https://sounds.bl.uk/sounds/strong-breeze--around-force-6-wales-1989-1001429387280x00002c,WA 2022/001/002,Coast and sea,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/manifest.json
+,,,
+Mechanical sounds,,,
+https://sounds.bl.uk/sounds/synthesised-handbells-1000944111840x000006,ULMA019/54,Whitechapel Bell Foundry: Test run of the first tune programme,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100094411184.0x000002/manifest.json
+https://sounds.bl.uk/sounds/the-bells-of-wells-cathedral-2-1001041072260x000007,C522/1,Bells of Wells Cathedral,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100104107226.0x000002/manifest.json
+,,,
+Environment,,,
+https://sounds.bl.uk/sounds/atmosphere-palearctic-woodland-engtland-1998-1001316350200x000005,WA 2010/017/547,British wildlife WA 2010/017: Woodland,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100131635020.0x000002/manifest.json
+https://sounds.bl.uk/sounds/witherslack-dawn-chorus-england-1985-1001316341820x000005,WA 2010/017/447,"British wildlife WA 2010/017: Dawn chorus, Witherstack",https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100131634182.0x000002/manifest.json
+https://sounds.bl.uk/sounds/thunderstorm-heavy-rain-england-1983-1001316342600x00000d,WA 2010/017/448,British wildlife WA 2010/017: Country effects,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100131634260.0x000002/manifest.json
+,,,
+World and Traditional Music,,,
+https://sounds.bl.uk/sounds/nepalese-folk-song-1-1000817470380x000005,C30/1,Roger Waldron Collection: Three Nepali folk songs,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100081747038.0x000002/manifest.json
+https://sounds.bl.uk/sounds/staten-island-or-burns-hornpipe-1001519493120x000015,C1002/36,Keith Summers Collection: Fred Whiting / Harkie Nesling - A & B,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100151949312.0x000002/manifest.json
+https://sounds.bl.uk/sounds/prsentation-sanankoro-jazz-1001279656480x000002,C1583/2/7,Endangered Archives Programme: Guinea's Syliphone Archives: [No Title],https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100127965648.0x000001/manifest.json
+https://sounds.bl.uk/sounds/douga-1001314843010x000002,C1583/3/210,Endangered Archives Programme: Guinea's Syliphone Archives: [No Title],https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100131484301.0x000001/manifest.json
+,,,
+Jazz,,,
+https://sounds.bl.uk/sounds/bells-of-monterey-1000874914790x000016,C361/1,R. J. Geluk Dutch Radio recordings 1935,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100087491479.0x000002/manifest.json
+,,,
+Poetry,,,
+https://sounds.bl.uk/sounds/the-eighth-sea-1001197727030x00000a,C1163/386,"Dutton, Paul: Fugitive forms",https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100119772703.0x000002/manifest.json
+https://sounds.bl.uk/sounds/white-cliffs-of-dover-king-lear--shakespeare-1001321378530x000010,1CS0011604,English Landscape Through Poets' Eyes,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132137853.0x000002/manifest.json
+https://sounds.bl.uk/sounds/highwaymannoyes-1001321600940x000008,"9CS0006569,1CS0005288,1CS0005289",Alfred Noyes reads 'The Highwayman' from 'Collected Poems,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132160094.0x000002/manifest.json
+,,,
+Spoken English,,,
+https://sounds.bl.uk/sounds/essential-english--lesson-9-1001321472040x000032,1CL0005081,Essential English,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132147204.0x000002/manifest.json
+https://sounds.bl.uk/sounds/punch-and-judy-on-november-the-fifth-1001321365120x000008,1CS0011577,English Playlets,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132136512.0x000002/manifest.json
+https://sounds.bl.uk/sounds/john-peel-1001321366850x000022,1CS0011580,English Songs,https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132136685.0x000002/manifest.json
\ No newline at end of file
diff --git a/dhsi/day-three/BL-Audio/csv2markdown.py b/dhsi/day-three/BL-Audio/csv2markdown.py
new file mode 100644
index 00000000..fcf71e95
--- /dev/null
+++ b/dhsi/day-three/BL-Audio/csv2markdown.py
@@ -0,0 +1,16 @@
+
+import csv
+
+with open('bl_examples.csv', newline='') as csvfile:
+ data = csv.reader(csvfile)
+ first=True
+ for row in data:
+ if not first:
+ if row[0] and not row[1]:
+ print (f'### {row[0]}')
+ elif row[0] and row[1]:
+ print (f' * [{row[2]}]({row[0]}) - [manifest.json]({row[3]})')
+ else:
+ print('')
+ else:
+ first=False
diff --git a/dhsi/day-three/BL-Audio/examples.md b/dhsi/day-three/BL-Audio/examples.md
new file mode 100644
index 00000000..9746e5ff
--- /dev/null
+++ b/dhsi/day-three/BL-Audio/examples.md
@@ -0,0 +1,55 @@
+# Example content
+
+The British library have kindly provided the following examples from their collections.
+
+## British Library sound collections
+
+* https://sounds.bl.uk/recommendations/wildlife-cd-library
+* https://www.bl.uk/collections/endangered-archives-programme-guineas-syliphone-archives
+* https://www.bl.uk/collections/eap115-collection-and-digitisation-of-old-music-in-pre-literate-micronesian-society
+* https://www.bl.uk/collections/sounds-of-water-wa-2020003
+* https://www.bl.uk/collections/sounds-of-weather-wa-2020004
+* https://www.bl.uk/collections/listen-to-nature
+
+
+## Examples Manifests
+
+### Skiffle
+ * [Lonnie Donegan and his Skiffle Group: Sal's Got A Sugar Lip/Driftwood](https://sounds.bl.uk/sounds/sals-got-a-sugar-lipdriftwood-1001406563200x000006) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140656320.0x000002/manifest.json)
+ * [Ken Colyer's Skiffle Group: The grey goose / I can't sleep](https://sounds.bl.uk/sounds/grey-gooseleadbetter-1001406510460x000006) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140651046.0x000002/manifest.json)
+ * [Dickie Bishop and The Sidekicks: They can't take that away from me / Jumpin' Judy](https://sounds.bl.uk/sounds/they-cant-take-that-away-from-megershwin-1001406513750x000006) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100140651375.0x000002/manifest.json)
+
+### Wildlife
+ * [Coast and sea](https://sounds.bl.uk/sounds/brent-goose-england-1981-1001429387280x000008) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/manifest.json)
+ * [Home, garden and farm](https://sounds.bl.uk/sounds/british-chaffinch-england-1988-1001429413870x000006) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142941387.0x000001/manifest.json)
+ * [Wildlife CD-R recordings](https://sounds.bl.uk/sounds/common-chiffchaff-england-1990-1000828534710x000005) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100082853471.0x000002/manifest.json)
+ * [Moorland and mountain](https://sounds.bl.uk/sounds/common-raven-england-1971-1001429417600x000008) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142941760.0x000001/manifest.json)
+ * [Coast and sea](https://sounds.bl.uk/sounds/strong-breeze--around-force-6-wales-1989-1001429387280x00002c) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100142938728.0x000001/manifest.json)
+
+### Mechanical sounds
+ * [Whitechapel Bell Foundry: Test run of the first tune programme](https://sounds.bl.uk/sounds/synthesised-handbells-1000944111840x000006) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100094411184.0x000002/manifest.json)
+ * [Bells of Wells Cathedral](https://sounds.bl.uk/sounds/the-bells-of-wells-cathedral-2-1001041072260x000007) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100104107226.0x000002/manifest.json)
+
+### Environment
+ * [British wildlife WA 2010/017: Woodland](https://sounds.bl.uk/sounds/atmosphere-palearctic-woodland-engtland-1998-1001316350200x000005) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100131635020.0x000002/manifest.json)
+ * [British wildlife WA 2010/017: Dawn chorus, Witherstack](https://sounds.bl.uk/sounds/witherslack-dawn-chorus-england-1985-1001316341820x000005) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100131634182.0x000002/manifest.json)
+ * [British wildlife WA 2010/017: Country effects](https://sounds.bl.uk/sounds/thunderstorm-heavy-rain-england-1983-1001316342600x00000d) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100131634260.0x000002/manifest.json)
+
+### World and Traditional Music
+ * [Roger Waldron Collection: Three Nepali folk songs](https://sounds.bl.uk/sounds/nepalese-folk-song-1-1000817470380x000005) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100081747038.0x000002/manifest.json)
+ * [Keith Summers Collection: Fred Whiting / Harkie Nesling - A & B](https://sounds.bl.uk/sounds/staten-island-or-burns-hornpipe-1001519493120x000015) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100151949312.0x000002/manifest.json)
+ * [Endangered Archives Programme: Guinea's Syliphone Archives: [No Title]](https://sounds.bl.uk/sounds/prsentation-sanankoro-jazz-1001279656480x000002) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100127965648.0x000001/manifest.json)
+ * [Endangered Archives Programme: Guinea's Syliphone Archives: [No Title]](https://sounds.bl.uk/sounds/douga-1001314843010x000002) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100131484301.0x000001/manifest.json)
+
+### Jazz
+ * [R. J. Geluk Dutch Radio recordings 1935](https://sounds.bl.uk/sounds/bells-of-monterey-1000874914790x000016) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100087491479.0x000002/manifest.json)
+
+### Poetry
+ * [Dutton, Paul: Fugitive forms](https://sounds.bl.uk/sounds/the-eighth-sea-1001197727030x00000a) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100119772703.0x000002/manifest.json)
+ * [English Landscape Through Poets' Eyes](https://sounds.bl.uk/sounds/white-cliffs-of-dover-king-lear--shakespeare-1001321378530x000010) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132137853.0x000002/manifest.json)
+ * [Alfred Noyes reads 'The Highwayman' from 'Collected Poems](https://sounds.bl.uk/sounds/highwaymannoyes-1001321600940x000008) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132160094.0x000002/manifest.json)
+
+### Spoken English
+ * [Essential English](https://sounds.bl.uk/sounds/essential-english--lesson-9-1001321472040x000032) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132147204.0x000002/manifest.json)
+ * [English Playlets](https://sounds.bl.uk/sounds/punch-and-judy-on-november-the-fifth-1001321365120x000008) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132136512.0x000002/manifest.json)
+ * [English Songs](https://sounds.bl.uk/sounds/john-peel-1001321366850x000022) - [manifest.json](https://api-beta.bl.uk/metadata/iiif/ark:/81055/vdc_100132136685.0x000002/manifest.json)
\ No newline at end of file
diff --git a/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup1.png b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup1.png
new file mode 100644
index 00000000..6b063d0e
Binary files /dev/null and b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup1.png differ
diff --git a/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup2.png b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup2.png
new file mode 100644
index 00000000..53234baf
Binary files /dev/null and b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup2.png differ
diff --git a/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup3.png b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup3.png
new file mode 100644
index 00000000..51e7f2a7
Binary files /dev/null and b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup3.png differ
diff --git a/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup4.png b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup4.png
new file mode 100644
index 00000000..f34570e4
Binary files /dev/null and b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup4.png differ
diff --git a/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup5.png b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup5.png
new file mode 100644
index 00000000..bc1ad244
Binary files /dev/null and b/dhsi/day-three/BL-Audio/imgs/IIIF_AV_EuropeanWorkingGroup5.png differ
diff --git a/dhsi/day-three/BL-Audio/imgs/audio_website.png b/dhsi/day-three/BL-Audio/imgs/audio_website.png
new file mode 100644
index 00000000..d505eff3
Binary files /dev/null and b/dhsi/day-three/BL-Audio/imgs/audio_website.png differ
diff --git a/dhsi/day-three/BL-Audio/imgs/timeliner-export.png b/dhsi/day-three/BL-Audio/imgs/timeliner-export.png
new file mode 100644
index 00000000..6ce7bb65
Binary files /dev/null and b/dhsi/day-three/BL-Audio/imgs/timeliner-export.png differ
diff --git a/dhsi/day-three/BL-Audio/imgs/timeliner-gtk.png b/dhsi/day-three/BL-Audio/imgs/timeliner-gtk.png
new file mode 100644
index 00000000..5089c03f
Binary files /dev/null and b/dhsi/day-three/BL-Audio/imgs/timeliner-gtk.png differ
diff --git a/dhsi/day-three/BL-Audio/imgs/timeliner-open.png b/dhsi/day-three/BL-Audio/imgs/timeliner-open.png
new file mode 100644
index 00000000..31f52a0b
Binary files /dev/null and b/dhsi/day-three/BL-Audio/imgs/timeliner-open.png differ
diff --git a/dhsi/day-three/BL-Audio/manifest-single-recording.json b/dhsi/day-three/BL-Audio/manifest-single-recording.json
new file mode 100644
index 00000000..19b939b3
--- /dev/null
+++ b/dhsi/day-three/BL-Audio/manifest-single-recording.json
@@ -0,0 +1,46 @@
+{
+ "@context": "http://iiif.io/api/presentation/3/context.json",
+ "id": "https://iiif.io/api/cookbook/recipe/0002-mvm-audio/manifest.json",
+ "type": "Manifest",
+ "label": {
+ "en": [
+ "Simplest Audio Example 1"
+ ]
+ },
+ "items": [
+ {
+ "id": "https://iiif.io/api/cookbook/recipe/0002-mvm-audio/canvas",
+ "type": "Canvas",
+ "duration": 112.0,
+ "items": [
+ {
+ "id": "https://iiif.io/api/cookbook/recipe/0002-mvm-audio/canvas/page",
+ "type": "AnnotationPage",
+ "items": [
+ {
+ "id": "https://iiif.io/api/cookbook/recipe/0002-mvm-audio/canvas/page/annotation",
+ "type": "Annotation",
+ "motivation": "painting",
+ "body": {
+ "type": "Choice",
+ "items": [
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/index.m3u8",
+ "type": "Sound",
+ "format": "application/vnd.apple.mpegURL"
+ },
+ {
+ "id": "https://api-beta.bl.uk/media/iiif/ark:/81055/vdc_100142938728.0x000056/manifest.mpd",
+ "format": "application/dash+xml",
+ "type": "Sound"
+ }
+ ]
+ },
+ "target": "https://iiif.io/api/cookbook/recipe/0002-mvm-audio/canvas"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/dhsi/day-three/README.md b/dhsi/day-three/README.md
new file mode 100644
index 00000000..26aa8363
--- /dev/null
+++ b/dhsi/day-three/README.md
@@ -0,0 +1,17 @@
+# Day Three - IIIF Presentation API
+## Wednesday
+
+### Presentation API
+
+This day will focus on the IIIF Presentation API. This session will focus on [version 2.1](https://iiif.io/api/presentation/2.1/) of API and core concepts of IIIF Presentation for 2D images. The session for today is split into two videos. The first one gives a background to the IIIF Presentation API and the second one is a practical hands on session taking you through creating your first manifest.
+
+Prerequisite video:
+
+
+This video is also available on [YouTube](https://www.youtube.com/watch?v=98z9YNFiUqU)
+
+Main video:
+
+
+
+This video is also available on [YouTube](https://www.youtube.com/watch?v=u63jHDH3pDM)
diff --git a/dhsi/day-three/annona.md b/dhsi/day-three/annona.md
new file mode 100644
index 00000000..161e9df6
--- /dev/null
+++ b/dhsi/day-three/annona.md
@@ -0,0 +1,21 @@
+# Annona for annotations
+Annona was originally built as a viewer specifically for annotations. As such, annotations that aren't tied to manifests can be viewed in Annona. Not the manifest/image does need to referenced in the annotation or it will not work.
+
+# View annotations
+Annona is built to determine the type of item material being passed in. The storyboard viewer will work with Manifests, collections, or annotations. The image viewer will only work with annotations.
+
+1. Go to [https://ncsu-libraries.github.io/annona/tools/#/tag-builder](https://ncsu-libraries.github.io/annona/tools/#/tag-builder)
+2. Click on the `Example with tags` link.
+3. You can see it is in a storyboard viewer similar to what we saw earlier with a manifest. This is embeddable in any site.
+![](imgs/1-annona.png)
+4. Select the image viewer from the dropdown next to the `Add annotation url` button.
+![](imgs/2-annona.png)
+5. As you can see the annotations which are in JSON are displayed in an embeddable, reusable view.
+![](imgs/3-annona.png)
+6. If you wanted to change the view, you can check some of the checkboxes. In the image below, the first, second and last checkboxes are checked, which gives a table with the image section, content, and tags.
+![](imgs/4-annona.png)
+
+# Comparing annotations to annotations or images
+Annona also provides a multistoryboard view. An example of this can be seen on the [mulistoryboard view page.](https://ncsu-libraries.github.io/annona/multistoryboard/#defaults)
+
+
diff --git a/dhsi/day-three/annonatate.md b/dhsi/day-three/annonatate.md
new file mode 100644
index 00000000..0006e30a
--- /dev/null
+++ b/dhsi/day-three/annonatate.md
@@ -0,0 +1,26 @@
+# Annontate
+Annontate is a web application that serves as an Annotation server. Instead of writng annotations to a database it writes them to a GitHub repository that also hosts your images and manifests. Go to [https://annonatate.github.io/](https://annonatate.github.io/) for more documentation about the functionality of Annonatate.
+
+## Getting Started
+1. Go to [https://annonatate.fly.dev/](https://annonatate.fly.dev/)
+2. Click the `login with GitHub button`
+![](https://annonatate.github.io/images/started-1.png)
+3. Log in
+![](https://annonatate.github.io/images/started-2.png)
+4. You should see the homepage
+![](https://annonatate.github.io/images/started-3.png)
+5. Click on the Add Image button in the My Images section.
+![](https://annonatate.github.io/images/create-1.png)
+6. Click on the Use external image button. If you want to mess around without a specific image, click on one of the demo images in the section below.
+![](https://annonatate.github.io/images/create-2.png)
+7. Add the URL of the image or manifest you want.
+![](https://annonatate.github.io/images/create-3.png)
+8. Choose from one the options that appears.
+ Add to My Images: it will add the image to My Images so it will continue to appear so you can use it.
+ Make Copy: (This only appears if the URL is a manifest): This will create a copy of the manifest in your workspace. This is handy if you want your annotations list URLs added to your manifest automatically.
+ View: will allow you to view the image in the annotation viewer without adding it to the My Images section.
+![](https://annonatate.github.io/images/create-4.png)
+9. After you click on any of the three buttons the pop up will disappear and the My Images section will collapse. Click on the + icon to expand the My Images section. Click on one of the shapes in the toolbar.
+![](https://annonatate.github.io/images/create-5.png)
+10. Drag your mouse over the section of the image you want to annotate. Enter any text, georeferencing and/or tags you want to sent and click Save.
+![](https://annonatate.github.io/images/create-6.png)
diff --git a/dhsi/day-three/annotation-in-manifest.md b/dhsi/day-three/annotation-in-manifest.md
new file mode 100644
index 00000000..1bb2e133
--- /dev/null
+++ b/dhsi/day-three/annotation-in-manifest.md
@@ -0,0 +1,79 @@
+# Adding annotations to a manifest
+In order for **SOME** viewers to be able to view annotations you need to add them to your manifest. This is done manually.
+
+# How to link your manifest to annotations
+Open up your manifest in VS Code.
+
+Then find the canvas your annotations point to then add the following:
+
+## For V2 Manifest
+```json
+"otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+]
+```
+
+## For V3 Manifest
+```json
+"annotations": [
+ {
+ "id": "https://iiif.io/api/cookbook/recipe/0269-embedded-or-referenced-annotations/annotationpage.json",
+ "type": "AnnotationPage"
+ }
+]
+```
+
+after the images array. Replace the URL after the `@id` with the URL of your annotation. A full V2 canvas example is below:
+
+```json
+{
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json",
+ "@type": "sc:Canvas",
+ "label": "1r",
+ "height": 5584,
+ "width": 3744,
+ "images": [
+ {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/4004562/annotation/4004563.json",
+ "@type": "oa:Annotation",
+ "motivation": "sc:painting",
+ "resource": {
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563/full/1024,/0/default.jpg",
+ "@type": "dctypes:Image",
+ "format": "image/jpeg",
+ "service": {
+ "@context": "http://iiif.io/api/image/2/context.json",
+ "@id": "http://dams.llgc.org.uk/iiif/2.0/image/4004563",
+ "profile": "http://iiif.io/api/image/2/level1.json"
+ },
+ "height": 5584,
+ "width": 3744
+ },
+ "on": "http://dams.llgc.org.uk/iiif/2.0/4004562/canvas/4004563.json"
+ }
+ ],
+ "otherContent": [
+ {
+ "@id": "https://iiif-test.github.io/BLJan2022/annotations/ce1d6509b5ec52275691847dd08d36b5.json",
+ "@type": "sc:AnnotationList",
+ "label": "My fantastic annotations"
+ }
+ ]
+},
+
+```
+
+Save the manifest. Watch out for JSON typing errors. Common JSON issues include:
+
+ * Make sure that all the brackets match up
+ * Lines that are not the last line in a list or array must have a `,` at the end of the line.
+
+To make this easier you may want to use a JSON aware editor like VS Code which will tell you if you are missing brackets or commas. You can also copy and paste your JSON to:
+
+https://jsonlint.com/
+
+which will tell you if the JSON is valid and if not where the error is.
diff --git a/dhsi/day-three/annotation-other.md b/dhsi/day-three/annotation-other.md
new file mode 100644
index 00000000..edc8a5cb
--- /dev/null
+++ b/dhsi/day-three/annotation-other.md
@@ -0,0 +1,14 @@
+# Crowdsourcing transcriptions
+1. [Cratylus](https://apps.bowdoin.edu/cratylus/) - a crowd-sourced art tagging toolset.
+2. [FromThePage](https://fromthepage.com/landing) - a crowdsourcing platform for archives and libraries where volunteers transcribe, index, and describe historic documents.
+3. [Madoc](https://madoc.digirati.com/) - a flexible crowdsourcing, research and teaching platform for digitised collections.
+3. [Zooniverse](https://github.com/zooniverse/iiif-annotations) - A proof-of-concept, annotating a IIIF manifest with Zooniverse classification data. See also [Importing images into Zooniverse with a IIIF manifest: introducing an experimental feature](https://blogs.bl.uk/digital-scholarship/2022/04/importing-images-into-zooniverse-with-a-iiif-manifest-introducing-an-experimental-feature.html) and [Fun with IIIF](https://blog.zooniverse.org/2022/04/20/fun-with-iiif/) on the ability to use IIIF to import media into the Zooniverse project builder.
+
+# CMS integrations
+1. [IIIF Toolkit](https://github.com/utlib/IiifItems) - IIIF Toolkit by University of Toronto Libraries is a plugin for Omeka Classic (2.3+) that integrates Mirador with a built-in annotator, a manifest generator, Simple Pages shortcodes and Exhibit Builder blocks for a rich presentation experience.
+
+# Maps
+1. [AllMaps](https://allmaps.org/) - Georeference manifest images with annotations.
+
+# ALTO
+1. [ALTO to annotation list](https://github.com/glenrobson/iiif_stuff/tree/master/alto2annotations)
\ No newline at end of file
diff --git a/dhsi/day-three/annotations-sas.md b/dhsi/day-three/annotations-sas.md
new file mode 100644
index 00000000..07153b03
--- /dev/null
+++ b/dhsi/day-three/annotations-sas.md
@@ -0,0 +1,77 @@
+# Creating and downloading Annotations
+
+In this tutorial we are going to annotate an image from your own manifest using a recently released version of the SimpleAnnotationServer. Once we have finished annotating we are going to view the annotations in a viewer which isn't connected to the annotation server.
+
+The major difference with this new version of the SimpleAnnotationServer is that you are asked to login and you will have a collection of Manifests that you have annotated. The previous version only had a single user so everyone could see and edit all of the annotations. In this version only you can see your annotations until you publish them. The high level process is as follows:
+
+ * Step 1: Load your manifest into the Annotation server
+ * Step 2: Create your annotations
+ * Step 3: Share your annotations
+
+There are two options for getting a Manifest to Annotate.
+
+### Option 1 use the Workbench
+
+This option uses the Manifest you uploaded to the workbench in the [Publishing your Manifest](../day-three/workbench/) guide. To use this manifest you need to copy the manifest URL by going to Workbench, Manifests tab and right clicking on the IIIF logo and select `Copy link`. This will copy the Manifest URL to your clipboard.
+
+![image](imgs/workbench_iiif_link.png)
+
+### Option 2 Use any public IIIF manifest
+
+If you didn't manage to get a manifest in the previous session you can use any IIIF Manifest. My personal favorite is:
+
+https://damsssl.llgc.org.uk/iiif/2.0/4389767/manifest.json
+
+## Step 1: Load your manifest into the Annotation server
+
+### Login to SAS
+ * Navigate to https://dev.gdmrdigital.com/ and click the Log in / Sign Up link.
+ * This will take you to the following screen where you can choose to either login using your Google or Github accounts
+
+![image](imgs/sas/login.png)
+
+Unlike the workbench SAS doesn't write to your Google drive or GitHub account. The GitHub/Google methods are purely used to provide authentication to SAS with all of the data being stored on the SAS server.
+
+### Load your manifest into SAS:
+Once you have logged in you will be presented with the following collection screen:
+
+![image](imgs/sas/empty_collection.png)
+
+ * Now click the Add IIIF manifest (URL) link and enter the URL to your manifest as below.
+ * If you are using the Workbench use the URL copied from the IIIF logo.
+
+![image](imgs/sas/add_manifest.png)
+
+ * Then click Add. Depending on how many pages the manifest takes this might take a minute or two to index.
+ * Once your manifest is loaded you should see it appear in your default Collection:
+
+![image](imgs/sas/manifest.png)
+
+## Step 2: Create your annotations
+
+ * Now we have the manifest loaded into your SAS account we can start annotating.
+ * Click the blue "Annotate in Mirador" button.
+ * This should open up your manifest in Mirador
+ * Navigate to a page you want to annotate then click the speech bubbles at the top right to start annotating.
+
+![image](imgs/sas/annotate.png)
+
+## Step 3: Share your annotations
+
+Once you have finished annotating return to the collections screen by clicking the `Home` link. We are now going to generate a copy of your Manifest with links to your annotations. The SimpleAnnotationServer provides this functionality by clicking on the Share button.
+
+![image](imgs/sas/share-annos.png)
+
+Once you click on the Share link the SimpleAnnotationServer will retrieve a copy of your manifest from the Workbench, add links to the annotation lists per canvas and add a link to the Search service. It will then story a copy of this new manifest in SAS for you to use. Once it has generated this new manifest you should see the screen below:
+
+![image](imgs/sas/share-annos-page.png)
+
+Click on the UV link or Mirador link to see your annotations in these viewers which aren't connected to an annotation server. The annotations that these viewers are reading come from the manifest.
+
+## Review
+
+Using these instructions you have a manifest which points to annotation lists and a search service that is hosted by the Simple Annotation Server (SAS). If you add more annotations using SAS they will instantly appear in the new manifest that SAS created. The newly created manifest can be shared with others and will be available as long as the SAS server is running.
+
+In the next section we will look at extracting the Annotations we created using SAS so they can be linked to from your original Workbench manifest. This will create a read only version of the annotations and they will be available through the workbench.
+
+
diff --git a/dhsi/day-three/annotations-stores-install.md b/dhsi/day-three/annotations-stores-install.md
new file mode 100644
index 00000000..c2048467
--- /dev/null
+++ b/dhsi/day-three/annotations-stores-install.md
@@ -0,0 +1,81 @@
+# Installing an Annotation Server (Advanced)
+
+We are now going to attempt to install an Annotation Server locally. This is useful if you want to try out your own annotations and keep them private. This exercise will need you to run some command line commands.
+
+A summary of the commands we will be using are:
+
+| Command | Description |
+| --- | --- |
+| `cd` | Change directory |
+| `ls` | list directory |
+| `pwd` | to show you where you are (Print Working Directory) |
+
+For this you will need:
+
+## Prerequisites
+
+### Java
+
+If you followed the Cantaloupe or Static Images exercise as part of the Image API session you may already have this. If not you will need Java 11 installed.
+
+ - [Downloading Java 11](https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html)
+
+To verify you have the correct package installed, you can run the following command from a terminal or command prompt:
+
+```sh
+$ java -version
+# java version "1.11.0_102"
+```
+
+You should see version `1.11.x`.
+
+## Step 1:
+ * Download the `sas.zip` file from the latest SimpleAnnotationServer release:
+
+[https://github.com/glenrobson/SimpleAnnotationServer/releases](https://github.com/glenrobson/SimpleAnnotationServer/releases)
+
+![image](imgs/annos_sas_download.png)
+
+## Step 2:
+ * Extract the zip file into a `iiif-workshop` directory.
+ * __On windows__ make sure it is extracted by right click on the file and uncompressing.
+ * __Note__: this doesn't need to be in your Chrome Web server directory
+
+## Step 3:
+ * In your terminal window `cd` into the sas directory which should have been created in the last step.
+
+```
+MacBook-Pro:tmp gmr$ cd sas
+MacBook-Pro:sas gmr$ ls
+dependency simpleAnnotationStore.war
+```
+
+## Step 4:
+ * Run the SimpleAnnotationStore:
+
+```java -jar dependency/jetty-runner.jar --port 8888 simpleAnnotationStore.war```
+
+## Step 5:
+ * Navigate to http://localhost:8888/index.html
+ * And you should see Mirador
+ * Navigate to an item and make an annotation. Does it save? If not ask for help
+
+## Step 6:
+ * Now add your manifest
+ * Go to http://localhost:8888/index.html
+ * Go to the list of manifests (click the big plus sign or if you are viewing a manifest click the four boxes at the top left and select 'newObject').
+ * In the list of manifests paste the link to your manifest http://127.0.0.1:5500/manifest.json into the addNewObject text field and click `load`.
+ * You should now see:
+
+![image](imgs/annos_mirador_addItem.png)
+
+## Step 7:
+ * Click on your manifest in the list
+ * Add some annotations to this manifest. Do they save?
+ * You should now be able to use the SimpleAnnotationServer to save and search annotations.
+
+Extras:
+
+ * [Loading a Newspaper example with OCR](https://github.com/glenrobson/SimpleAnnotationServer/blob/master/doc/PopulatingAnnotations.md)
+ * [Download annotations](https://github.com/glenrobson/SimpleAnnotationServer/blob/master/doc/DownloadAnnotations.md)
+ * Note as well as storing Static Images you can also host manifests and annotation lists using GitHub pages. For details on loading content to Github see the [Publishing your annotated Manifest](workbench.html).
diff --git a/dhsi/day-three/annotations-stores.md b/dhsi/day-three/annotations-stores.md
new file mode 100644
index 00000000..828ac325
--- /dev/null
+++ b/dhsi/day-three/annotations-stores.md
@@ -0,0 +1,14 @@
+# Annotation Stores
+
+Annotation stores are basically applications with a database you can send an API call to and it will save and store an annotation.
+
+So Mirador or Annotorious will send a POST request with the contents of the annotation to an annotation store and it will recieve the annotation and write it to some kind of storage.
+
+Like image servers there are a number to choose from:
+
+https://github.com/IIIF/awesome-iiif#annotations
+
+Popular ones include:
+ * annotot - Simple IIIF annotations mounted in a Ruby on Rails applications by Jack Reed
+ * Elucidate - Java and Postgres annotation server by Digirati
+ * SimpleAnnotationServer - Java annotation server backed by an Apache Jena triple store, Elastic Search, or Solr. - developed while working at the NLW
\ No newline at end of file
diff --git a/dhsi/day-three/annotations.md b/dhsi/day-three/annotations.md
new file mode 100644
index 00000000..7a3aff89
--- /dev/null
+++ b/dhsi/day-three/annotations.md
@@ -0,0 +1,151 @@
+# What are annotations?
+
+Annotations have multiple use cases when used in conjunction with IIIF:
+
+ * Transcribing documents
+ * Commenting or analysis of content
+ * Highlighting areas of the item like hand written annotations on a printed book
+ * Teaching or explaining content
+ * Captions for A/V materials
+
+Also as we have seen annotations are fundamental to how a IIIF Manifests work with images and video painted on to a canvas with annotations.
+
+Annotations in IIIF follow the [W3C annotation model](https://www.w3.org/TR/annotation-model/) and its precursor [Open Annotations](http://www.openannotation.org/). I will go through the differences briefly later but the model is conceptionally similar:
+
+![Web Annotation model](https://www.w3.org/TR/annotation-model/images/intro_model.png)
+
+The annotation is made up of two parts. The body which is the **resource** you want to annotate **on** to something and the target which is the thing you are annotating. Examples of bodies might be:
+
+ * Text transcription of a line
+ * Video giving background to a painting
+ * IIIF Image painted on to a canvas
+
+A target might be:
+ * A whole canvas
+ * A part of a canvas (maybe a line in the transcription example above)
+
+## Example Annotation
+A simple commenting annotation looks like the following:
+
+```json
+{
+ "@id": "http://localhost:8887/coin/list/1",
+ "@type": "oa:Annotation",
+ "motivation": "commenting",
+ "resource": {
+ "@type": "cnt:ContentAsText",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "on": "http://localhost:8887/coin/canvas#xywh=3706,208,522,522"
+}
+```
+
+This is using Open annotations and the keys map as follows:
+
+ * Body -> resource
+ * Target -> on
+
+Other things to take note of are:
+
+ * motivation is `commenting`
+ * Annotations should have an `@id`
+
+In this example the body or resource is the text `Zeus seated on stool-throne`. The canvas id in this example is `http://localhost:8887/coin/canvas` and the `#xywh=3706,208,522,522` denotes we are looking at a rectangle starting `3706` pixels from the left, `208` pixels from the top and with dimensions `522` pixels wide and `522` pixels high. The image mentioned in this annotation is:
+
+![Coin image](https://ronallo.com/iiif-workshop-new/images/coin-side-by-side.png)
+
+## Open Annotations vs Web Annotations
+ One of the changes with IIIF version 3.0 is that we are moving to the W3C Web Annotations model. The concepts are the same but the JSON is slightly different. The transcription example now looks like:
+
+```json
+{
+ "id": "http://localhost:8887/coin/list/1",
+ "type": "Annotation",
+ "motivation": "commenting",
+ "body": {
+ "type": "TextualBody",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "target": "http://localhost:8887/coin/canvas#xywh=3706,208,522,522"
+}
+```
+
+The changes are:
+ * `@id` becomes `id`
+ * `@type` becomes `type` and `oa:Annotation` becomes `Annotation`
+ * `resource` becomes `body`
+ * `on` becomes `target`
+ * The body type changes from `cnt:ContentAsText` to `TextualBody`.
+ * Moving of type (oa:Tag) to purpose for individual annotations
+
+ ```json
+
+ {
+ "@context": "http://www.w3.org/ns/anno.jsonld",
+ "id": "http://example.org/anno15",
+ "type": "Annotation",
+ "motivation": "bookmarking",
+ "body": [
+ {
+ "type": "TextualBody",
+ "value": "readme",
+ "purpose": "tagging"
+ },
+ {
+ "type": "TextualBody",
+ "value": "A good description of the topic that bears further investigation",
+ "purpose": "describing"
+ }
+ ],
+ "target": "http://example.com/page1"
+}
+
+ ```
+
+Quite a few changes but it is defiantly clearer to understand.
+
+## What are annotations lists?
+
+See Specification Chapter:
+- [V2 Annotation List](http://iiif.io/api/presentation/2.1/#annotation-list)
+- [V3 Annotation Page](https://iiif.io/api/presentation/3.0/#55-annotation-page)
+
+Annotation lists/pages are ways to group annotations and are often at a Canvas or Page level. Examples might be a transcription of a page or the OCR of a single page in annotation format. We will come back to this in the exercises but for now there is an example below. Note annotation lists are usually resolvable which means if you take the `@id` and put it into a Web Browser you should get the annotation list back.
+
+Additionally, you should never have an Annotation Page/List that has annotations on multiple images. They should only refer to a single image. To tie multiple image annotations together you use the manifest (we will show how to do this later in the workshop) or using an [Annotation Collection](https://iiif.io/api/presentation/3.0/#58-annotation-collection).
+
+```json
+{
+ "@context": "http://iiif.io/api/presentation/2/context.json",
+ "@id": "http://localhost:8887/coin/canvas/AnnotationList",
+ "@type": "sc:AnnotationList",
+ "resources": [
+ {
+ "@id": "http://localhost:8887/coin/list/1",
+ "@type": "oa:Annotation",
+ "motivation": "commenting",
+ "resource": {
+ "@type": "cnt:ContentAsText",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "on": "http://localhost:8887/coin/canvas#xywh=3706,208,522,522"
+ },
+ {
+ "@id": "http://localhost:8887/coin/list/1",
+ "@type": "commenting",
+ "motivation": "sc:painting",
+ "resource": {
+ "@type": "cnt:ContentAsText",
+ "format": "text/plain",
+ "chars": "Zeus seated on stool-throne"
+ },
+ "on": "http://localhost:8887/coin/canvas#xywh=0,208,522,522"
+ }
+ ]
+}
+```
+
+
diff --git a/dhsi/day-three/annotorious-embed.html b/dhsi/day-three/annotorious-embed.html
new file mode 100644
index 00000000..4c90e8b6
--- /dev/null
+++ b/dhsi/day-three/annotorious-embed.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dhsi/day-three/annotorious.md b/dhsi/day-three/annotorious.md
new file mode 100644
index 00000000..c2ec8b66
--- /dev/null
+++ b/dhsi/day-three/annotorious.md
@@ -0,0 +1,45 @@
+# Annotorious
+Annotorious is a JS library you can easily build into a browser. Slightly different from Mirador because it doesn't save annotations to the localStorage (however it can be set to up to do so if you want). The JS library assumes you are going to set up your own way of saving annotations.
+
+## Using Annotorious
+This view is making use of three plugins (toolbar, georeference and extended shapes beyond polygon and rectangle). Configuration is VERY well documented for the [out of the box Annotorious](https://annotorious.github.io/api-docs/osd-plugin/) including configuration and custom events and the [plugins](https://annotorious.github.io/plugins/).
+
+
+
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+Annotorious page
+
+