Overview

This article introduces how to describe a hierarchical table of contents using the Omeka S IIIF Server module.

Documentation

The documentation is somewhat complex, but explanations are available at:

https://github.com/Daniel-KM/Omeka-S-module-IiifServer?tab=readme-ov-file#input-format-of-the-property-for-structures-table-of-contents

Simple Table of Contents

The following example from “Toyo Bunko Media Repository” is used:

https://app.toyobunko-lab.jp/s/main/document/9f9d95c2-d33d-7402-742b-47db12748688

Specify {Range ID},{Range name},{Canvas index} as follows:

rrrrrrrrrrr12345678911,,,,,,,,,01,,,,2,,,,,,255711125,59147152027879,,1313

This results in the following table of contents display:

Hierarchical Table of Contents

The following example is used:

https://app.toyobunko-lab.jp/s/main/document/4797b8ca-530f-8aae-f252-7911ad64039b

To describe a hierarchical table of contents, prepare data with four columns as follows:

rrrrrrrrrrrrrrr012345678911111,,,,,,,,,,01234,,,,,,,   -      ,4    -r81,;沿,r-,,21,,;,10-,,,,r,0-,1,12-,111114198,11-r222-5;--,111,,-1-r,1r,20151505-,;--4,65-,;-r,,;,r-1-r-61--7r;;33rr;71r;24r;;8rr193;r14;r15

The fourth column specifies the Range IDs of child elements. With indentation, it looks like this:

r0,rr12,,,-,rrrr3491r,,,,41 ,;4rrrrrrrrr-5678111128  ,,,, 0123;,,,,, r2-9;    r沿    5,5;,-,r,,,,7-,13-8,1,r,5,-101,,,-1r0-,1011r05,11;111463,;11-r222-,;r-,111,,-1r-6,2115-4;-,;--4,;r-r,r7-1-9;2-;r;r8r1143;r15

This results in the following hierarchical table of contents display:

The table of contents data created in the IIIF manifest file is as follows. Note that the first Range “All” with viewingHint set to top is not displayed in the viewer:

{}"]st{}{}{}{}{}{}{}r,,,,,,u"""""]""""]""""]""""]""""]""""]""""]c@@lvr@@lc@@lr@@lc@@lr@@lc@@lctitaia"""""itaa"""""itaa"""""itaa"""itaa""""itaa"itaa""udybenhhhhhdybnhhhhhdybnhhhhhdybnhhhdybnhhhhdybnhdybnhhr"pewgttttt"pevttttt"pegttttt"pevttt"pegtttt"pevt"pevtte:eliettttt:elattttt:elettttt:elattt:eletttt:elat:elatts""nsppppp""sppppp""sppppp""sppp""spppp""sp""spp""::g"sssss"::esssss"::"sssss"::esss"::"ssss"::es"::ess:hH::::::hs:::::h::::::hs:::h:::::hs:hs::t""i/t"""/t""/t"""/t""/t"""/t"""/[tsn[/ts:/ts[/ts:/ts[/ts:/ts:/pctaaaaapcaaaaapcaaaaapcaaapcaaaapcapcaas:""ppppps:"[ppppps:ppppps: [ppps: pppps:[ps:[pp:R,:ppppp:R,ppppp:R ppppp:Rppp:Rpppp:R p:R pp/a...../a...../a...../a.../a..../a./a../n"ttttt/nttttt/nttttt/nttt/ntttt/nt/nttagtoooooagoooooagoooooagoooagooooagoagoopeoyyyyypeyyyyypeyyyyypeyyypeyyyypeypeyyp"pooooop"ooooop"ooooop"沿ooop"oooop"op""oo.,"bbbbb.,bbbbb.,bbbbb.,bbb.,bbbb.,"b.,,bbt,uuuuutuuuuutuuuuutuuutuuuut,utuuonnnnnonnnnnonnnnnonnno"nnnnononnykkkkkykkkkkykkkkky"kkky,kkkkykykkooooooooooooooooooo,ooooooooooooob-----b-----b-----b---b----b-b--ulllllulllllulllllulllullllulullnaaaaanaaaaan"aaaaanaaanaaaananaakbbbbbkbbbbbk,bbbbbkbbbkbbbbkbkbbo.....o.....o.....o...o....o.o..-jjjjj-jjjjj-jjjjj-jjj-jjjj-j-jjlppppplppppplppppplppplpppplplppa/////a/////a/////a///a////a/a//biiiiibiiiiibiiiiibiiibiiiibibii.iiiii.iiiii.iiiii.iii.iiii.i.iijiiiiijiiiiijiiiiijiiijiiiijijiipfffffpfffffpfffffpfffpffffpfpff////////////////////////////////i22222i22222i22222i222i2222i2i22i/////i/////i/////i///i////i/i//i44444i44444i44444i444i4444i4i44f77777f77777f77777f777f7777f7f77/99999/99999/99999/999/9999/9/9927777727777727777727772777727277/bbbbb/bbbbb/bbbbb/bbb/bbbb/b/bb488888488888488888488848888484887ccccc7ccccc7ccccc7ccc7cccc7c7cc9aaaaa9aaaaa9aaaaa9aaa9aaaa9a9aa7-----7-----7-----7---7----7-7--b55555b55555b55555b555b5555b5b5583333383333383333383338333383833c00000c00000c00000c000c0000c0c00afffffafffffafffffafffaffffafaff--------------------------------588888588888588888588858888585883aaaaa3aaaaa3aaaaa3aaa3aaaa3a3aa0aaaaa0aaaaa0aaaaa0aaa0aaaa0a0aafeeeeefeeeeefeeeeefeeefeeeefefee--------------------------------8fffff8fffff8fffff8fff8ffff8f8ffa22222a22222a22222a222a2222a2a22a55555a55555a55555a555a5555a5a55e22222e22222e22222e222e2222e2e22--------------------------------f77777f77777f77777f777f7777f7f77299999299999299999299929999292995111115111115111115111511115151121111121111121111121112111121211-aaaaa-aaaaa-aaaaa-aaa-aaaa-a-aa7ddddd7ddddd7ddddd7ddd7dddd7d7dd966666966666966666966696666969661444441444441444441444144441414410000010000010000010001000010100a33333a33333a33333a333a3333a3a33d99999d99999d99999d999d9999d9d996bbbbb6bbbbb6bbbbb6bbb6bbbb6b6bb4/////4/////4/////4///4////4/4//0rrrrr0ccccc0rrrrr0ccc0rrrr0c0cc3aaaaa3aaaaa3aaaaa3aaa3aaaa3a3aa9nnnnn9nnnnn9nnnnn9nnn9nnnn9n9nnbgggggbvvvvvbgggggbvvvbggggbvbvv/eeeee/aaaaa/eeeee/aaa/eeee/a/aar/////rsssssr/////rsssr////rsrssarrrrra/////arrrrra///arrrra/a//n12257npppppn34911npppn5678npnppg""953g45678g"""45g891g""""g1g11e,,"""e"""""e,,,""e""0e,,,e0e01/,,/,,,,/,/,,"//"/""rrrrrrr,0123456""""""",,,,,,,

Notes

As mentioned above, the table of contents specified on the first line is assigned viewingHint of top and is not displayed in the viewer.

Therefore, you need to add a line representing the overall structure on the first line, as in the following example:

r0,,-,r1;r2;r29;r55;r73

In the previous version of the IIIF Server module, writing data as shown below worked without issues, but at some point an update changed how the first line is processed:

rrrrr12345,,,,,,    4-8沿,1,0,r58;-r,16r0;3r;7r;4r;8r9;r14;r15

Similarly, the example above uses three columns, but due to the update, four-column data is now required:

{RangeID},{Rangename},{Canvasindex},{ChildRangeIDs}

As a result, with the old format (three columns), r1, r3, and r5 (which specify Canvas indices in the third column) display correctly, while r2 and r4 (which specify child Range IDs in the third column) do not display correctly.

Summary

When describing a hierarchical table of contents using the latest IIIF Server module as of June 2025, you need to be aware of how the first line is handled and that data must be written in four columns.

I hope this serves as a useful reference for using the Omeka S IIIF Server module.