The HMT project publishes a IIIF manifest with validated images of the Venetus A manuscript.
iiif
hmt
Author
Neel Smith
Published
January 11, 2025
The Homer Multitext project (HMT) has made its digital photography of manuscripts of the Iliad with scholia available online since 2007. Since 2017, we have published periodic releases of all the project’s work in a single, massive plain-text file. These published datasets have always included catalogs of the project’s digital images, and datasets relating the images to the manuscript pages they document. We’re now beginning to add a third form of publication: extracts from the published datasets in the format of the IIIF Presentation Manifest.
What’s included
The HMT’s data model for a codex manuscript is simple. It’s a sequence of pages, each documented with a sequence number, identification as recto or verso, a full human-readable label, and a pair of CITE URNs associating identifiers for the physical page and the documentary image used to catalog the page.
With this simple model, we can easily relate other citable content (most notably edited passages of the Iliad and scholia) to navigable views of a manuscript.
The IIIF’s Presentation model has overlapping goals. Its elaborate JSON structure lets you define a series of canvases, on which you can place “annotation pages” that can include annotations such as images to place on the canvas. Many IIIF viewers support navigating a series of images documented in a IIIF manifest. The new manifests for HMT manuscripts label images with the data of our simple codex model.
How we do it
HmtArchive.jl is a Julia package that streamlines working with the HMT project’s published data sets. The hmt_codices function instantiates all the documented manuscripts in a release (currently seven).
Precompiling HmtArchive...
975.0 ms ✓ NamedArrays
1544.1 ms ✓ CategoricalArrays
1303.4 ms ✓ Clustering
2140.0 ms ✓ Sixel
1667.7 ms ✓ ImageBinarization
596.1 ms ✓ CategoricalArrays → CategoricalArraysJSONExt
2135.4 ms ✓ Orthography
908.0 ms ✓ FreqTables
385.1 ms ✓ CategoricalArrays → CategoricalArraysSentinelArraysExt
566.3 ms ✓ CategoricalArrays → CategoricalArraysRecipesBaseExt
6962.2 ms ✓ PlotUtils
2791.9 ms ✓ PolytonicGreek
6848.2 ms ✓ ImageCorners
3437.6 ms ✓ ImageSegmentation
2394.6 ms ✓ PlotThemes
2975.3 ms ✓ RecipesPipeline
4052.2 ms ✓ Images
4333.9 ms ✓ CitableImage
4847.3 ms ✓ CitablePhysicalText
26847.8 ms ✓ DataFrames
1293.8 ms ✓ Latexify → DataFramesExt
2558.5 ms ✓ CitableParserBuilder
4464.1 ms ✓ EditorsRepo
36223.8 ms ✓ Plots
2546.2 ms ✓ Plots → FileIOExt
2591.6 ms ✓ Plots → UnitfulExt
4761.7 ms ✓ HmtArchive
27 dependencies successfully precompiled in 55 seconds. 371 already precompiled.
7-element Vector{CitablePhysicalText.Codex}:
Burney 86 manuscript
Escorial Y 1.1 manuscript
Escorial, codex Ω 1.12
Laurentian Library codex 32.3
Venice, Biblioteca Marciana 841
Venetus A manuscript
Venetus B manuscript
As the example shows, the output is a list of Codex objects. Last week, I released a version of the CitablePhysicalText.jl package that includes a new function, iiifmanifest, for directly generating a presentation manifest from a Codex object.
Tip
The documentation for the CitablePhysicalText package includes a tutorial on how to build a IIIF manifest from a Codex object.
This is not only convenient: iiifmanifest also validates both the syntax and the referential integrity of its reply. It parses the JSON syntax that IIIF viewers expect, and queries the configured image service for metadata about each image in the manifest, guaranteeing that viewer applications can correctly find the documented image.
I’ve added a iiif directory to the HMT project’s github archive where we will publish IIIF manifests for each of our documented manuscripts. Today we’re publishing a manifest for the uniquely important Venetus A manuscript (Marciana 454 = 822). Use this URL with any IIIF viewer that accepts a URL for a IIIF manifest, and you’ll be browsing the Venetus A.
Next steps
I plan to add IIIF manifests for the project’s other six documented manuscripts to the github repository as they are successfully generated and tested.