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:
r r r r r r r r r r r 1 2 3 4 5 6 7 8 9 1 1 , , , , , , , , , 0 1 延 明 安 安 天 天 寛 寛 享 , , 享 和 永 永 明 明 政 政 和 文 文 、 , 一 二 一 二 一 二 , 化 化 寛 2 , , , , , , 2 一 、 延 5 5 7 1 1 1 2 5 , 文 、 5 9 1 4 7 1 5 2 政 宝 0 2 7 8 7 、 暦 9 二 , , 1 3 1 3
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:
r r r r r r r r r r r r r r r 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 , , , , , , , , , , 0 1 2 3 4 , , , , , 全 目 第 一 二 ( ( ( ( 三 体 次 一 、 、 一 二 三 四 、 ( ( ( ( 四 , , 、 ) ) ) ) 一 二 三 四 、 - 司 司 司 ) ) ) ) , 4 蒙 法 法 司 法 縣 行 法 司 - 疆 制 關 法 院 旗 刑 事 刑 民 行 登 法 r 8 政 度 係 部 … 司 機 務 事 事 刑 記 經 1 , 府 ノ 機 … 四 法 關 … 事 事 事 … 費 ; ノ 沿 關 四 , 機 … 八 件 件 務 一 … r - 司 革 … , 關 七 , … … … 二 一 2 法 … 四 1 … , 八 九 九 , 四 ; 制 一 , 1 0 六 - , , , , r 度 , 0 - , 1 , 1 2 … - , 1 1 1 1 1 4 1 9 一 8 , 1 1 - r 2 2 2 - 5 ; 頁 - - , 1 1 1 , , - 1 - r , 1 r , 2 0 1 5 1 5 0 5 - , ; - - 4 , 6 5 - , ; - r , , ; , r - 1 - r - 6 1 - - 7 r ; ; 3 3 r r ; 7 1 r ; 2 4 r ; ; 8 r r 1 9 3 ; r 1 4 ; r 1 5
The fourth column specifies the Range IDs of child elements. With indentation, it looks like this:
r 0 , 全 r r 体 1 2 , , , - , 目 第 r r r r 次 一 3 4 9 1 r , 、 , , , 4 1 , ; 4 蒙 一 二 r r r r 三 r r r r r - 疆 、 、 5 6 7 8 、 1 1 1 1 四 2 8 政 , , , , 0 1 2 3 、 ; , 府 司 司 司 , , , , r ノ 法 法 ( ( ( ( 法 司 2 - 司 制 關 一 二 三 四 事 ( ( ( ( 法 9 法 度 係 ) ) ) ) 務 一 二 三 四 經 ; 制 ノ 機 … ) ) ) ) 費 r 度 沿 關 司 法 縣 行 八 … 5 … 革 … 法 院 旗 刑 , 刑 民 行 登 一 5 一 … 四 部 … 司 機 事 事 刑 記 四 ; 頁 一 , … 四 法 關 - 事 事 事 … , r , , 四 , 機 … , 件 件 務 一 7 - , 關 七 … … … 二 1 3 - 8 , 1 … , r 八 九 九 , 5 , - 1 0 六 1 , , , - 1 r 0 - , 1 0 1 1 r 0 5 , 1 1 ; 1 1 1 4 6 3 , ; 1 1 - r 2 2 2 - , ; r - , 1 1 1 , , - 1 r - 6 , 2 1 1 5 - 4 ; - , ; - - 4 , ; r - r , r 7 - 1 - 9 ; 2 - ; r ; r 8 r 1 1 4 3 ; r 1 5
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:
{ } " ] s t { } { } { } { } { } { } { } r , , , , , , u " " " " " ] " " " " ] " " " " ] " " " " ] " " " " ] " " " " ] " " " " ] c @ @ l v r @ @ l c @ @ l r @ @ l c @ @ l r @ @ l c @ @ l c t i t a i a " " " " " i t a a " " " " " i t a a " " " " " i t a a " " " i t a a " " " " i t a a " i t a a " " u d y b e n h h h h h d y b n h h h h h d y b n h h h h h d y b n h h h d y b n h h h h d y b n h d y b n h h r " p e w g t t t t t " p e v t t t t t " p e g t t t t t " p e v t t t " p e g t t t t " p e v t " p e v t t e : e l i e t t t t t : e l a t t t t t : e l e t t t t t : e l a t t t : e l e t t t t : e l a t : e l a t t s " " n s p p p p p " " s p p p p p " " s p p p p p " " s p p p " " s p p p p " " s p " " s p p " " : : g " s s s s s " : : e s s s s s " : : " s s s s s " : : e s s s " : : " s s s s " : : e s " : : e s s : h H : : : : : : h s : : : : : h : : : : : : h s : : : h : : : : : h s : h s : : t " " i / t " " " / t " " / t " " " / t " " / t " " " / t " " " / [ t s 全 n [ / t s 目 : / t s 第 [ / t s 一 : / t s 二 [ / t s ( : / t s ( : / p c 体 t a a a a a p c 次 a a a a a p c 一 a a a a a p c 、 a a a p c 、 a a a a p c 一 a p c 二 a a s : " " p p p p p s : " [ p p p p p s : 、 p p p p p s : [ p p p s : p p p p s : ) [ p s : ) [ p p : R , : p p p p p : R , p p p p p : R p p p p p : R 司 p p p : R 司 p p p p : R p : R p p / a . . . . . / a . . . . . / a 蒙 . . . . . / a 法 . . . / a 法 . . . . / a 司 . / a 法 . . / n " t t t t t / n t t t t t / n 疆 t t t t t / n 制 t t t / n 關 t t t t / n 法 t / n 院 t t a g t o o o o o a g o o o o o a g 政 o o o o o a g 度 o o o a g 係 o o o o a g 部 o a g … o o p e o y y y y y p e y y y y y p e 府 y y y y y p e ノ y y y p e 機 y y y y p e … y p e 四 y y p " p o o o o o p " o o o o o p " ノ o o o o o p " 沿 o o o p " 關 o o o o p " 四 o p " " o o . , " b b b b b . , b b b b b . , 司 b b b b b . , 革 b b b . , … b b b b . , " b . , , b b t , u u u u u t u u u u u t 法 u u u u u t … u u u t 四 u u u u t , u t u u o n n n n n o n n n n n o 制 n n n n n o 一 n n n o " n n n n o n o n n y k k k k k y k k k k k y 度 k k k k k y " k k k y , k k k k y k y k k o o o o o o o o o o o o o … o o o o o o , o o o o o o o o o o o o o b - - - - - b - - - - - b 一 - - - - - b - - - b - - - - b - b - - u l l l l l u l l l l l u 頁 l l l l l u l l l u l l l l u l u l l n a a a a a n a a a a a n " a a a a a n a a a n a a a a n a n a a k b b b b b k b b b b b k , b b b b b k b b b k b b b b k b k b b o . . . . . o . . . . . o . . . . . o . . . o . . . . o . o . . - j j j j j - j j j j j - j j j j j - j j j - j j j j - j - j j l p p p p p l p p p p p l p p p p p l p p p l p p p p l p l p p a / / / / / a / / / / / a / / / / / a / / / a / / / / a / a / / b i i i i i b i i i i i b i i i i i b i i i b i i i i b i b i i . i i i i i . i i i i i . i i i i i . i i i . i i i i . i . i i j i i i i i j i i i i i j i i i i i j i i i j i i i i j i j i i p f f f f f p f f f f f p f f f f f p f f f p f f f f p f p f f / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / i 2 2 2 2 2 i 2 2 2 2 2 i 2 2 2 2 2 i 2 2 2 i 2 2 2 2 i 2 i 2 2 i / / / / / i / / / / / i / / / / / i / / / i / / / / i / i / / i 4 4 4 4 4 i 4 4 4 4 4 i 4 4 4 4 4 i 4 4 4 i 4 4 4 4 i 4 i 4 4 f 7 7 7 7 7 f 7 7 7 7 7 f 7 7 7 7 7 f 7 7 7 f 7 7 7 7 f 7 f 7 7 / 9 9 9 9 9 / 9 9 9 9 9 / 9 9 9 9 9 / 9 9 9 / 9 9 9 9 / 9 / 9 9 2 7 7 7 7 7 2 7 7 7 7 7 2 7 7 7 7 7 2 7 7 7 2 7 7 7 7 2 7 2 7 7 / b b b b b / b b b b b / b b b b b / b b b / b b b b / b / b b 4 8 8 8 8 8 4 8 8 8 8 8 4 8 8 8 8 8 4 8 8 8 4 8 8 8 8 4 8 4 8 8 7 c c c c c 7 c c c c c 7 c c c c c 7 c c c 7 c c c c 7 c 7 c c 9 a a a a a 9 a a a a a 9 a a a a a 9 a a a 9 a a a a 9 a 9 a a 7 - - - - - 7 - - - - - 7 - - - - - 7 - - - 7 - - - - 7 - 7 - - b 5 5 5 5 5 b 5 5 5 5 5 b 5 5 5 5 5 b 5 5 5 b 5 5 5 5 b 5 b 5 5 8 3 3 3 3 3 8 3 3 3 3 3 8 3 3 3 3 3 8 3 3 3 8 3 3 3 3 8 3 8 3 3 c 0 0 0 0 0 c 0 0 0 0 0 c 0 0 0 0 0 c 0 0 0 c 0 0 0 0 c 0 c 0 0 a f f f f f a f f f f f a f f f f f a f f f a f f f f a f a f f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 8 8 8 8 8 5 8 8 8 8 8 5 8 8 8 8 8 5 8 8 8 5 8 8 8 8 5 8 5 8 8 3 a a a a a 3 a a a a a 3 a a a a a 3 a a a 3 a a a a 3 a 3 a a 0 a a a a a 0 a a a a a 0 a a a a a 0 a a a 0 a a a a 0 a 0 a a f e e e e e f e e e e e f e e e e e f e e e f e e e e f e f e e - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 8 f f f f f 8 f f f f f 8 f f f f f 8 f f f 8 f f f f 8 f 8 f f a 2 2 2 2 2 a 2 2 2 2 2 a 2 2 2 2 2 a 2 2 2 a 2 2 2 2 a 2 a 2 2 a 5 5 5 5 5 a 5 5 5 5 5 a 5 5 5 5 5 a 5 5 5 a 5 5 5 5 a 5 a 5 5 e 2 2 2 2 2 e 2 2 2 2 2 e 2 2 2 2 2 e 2 2 2 e 2 2 2 2 e 2 e 2 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - f 7 7 7 7 7 f 7 7 7 7 7 f 7 7 7 7 7 f 7 7 7 f 7 7 7 7 f 7 f 7 7 2 9 9 9 9 9 2 9 9 9 9 9 2 9 9 9 9 9 2 9 9 9 2 9 9 9 9 2 9 2 9 9 5 1 1 1 1 1 5 1 1 1 1 1 5 1 1 1 1 1 5 1 1 1 5 1 1 1 1 5 1 5 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 2 1 2 1 1 - a a a a a - a a a a a - a a a a a - a a a - a a a a - a - a a 7 d d d d d 7 d d d d d 7 d d d d d 7 d d d 7 d d d d 7 d 7 d d 9 6 6 6 6 6 9 6 6 6 6 6 9 6 6 6 6 6 9 6 6 6 9 6 6 6 6 9 6 9 6 6 1 4 4 4 4 4 1 4 4 4 4 4 1 4 4 4 4 4 1 4 4 4 1 4 4 4 4 1 4 1 4 4 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 a 3 3 3 3 3 a 3 3 3 3 3 a 3 3 3 3 3 a 3 3 3 a 3 3 3 3 a 3 a 3 3 d 9 9 9 9 9 d 9 9 9 9 9 d 9 9 9 9 9 d 9 9 9 d 9 9 9 9 d 9 d 9 9 6 b b b b b 6 b b b b b 6 b b b b b 6 b b b 6 b b b b 6 b 6 b b 4 / / / / / 4 / / / / / 4 / / / / / 4 / / / 4 / / / / 4 / 4 / / 0 r r r r r 0 c c c c c 0 r r r r r 0 c c c 0 r r r r 0 c 0 c c 3 a a a a a 3 a a a a a 3 a a a a a 3 a a a 3 a a a a 3 a 3 a a 9 n n n n n 9 n n n n n 9 n n n n n 9 n n n 9 n n n n 9 n 9 n n b g g g g g b v v v v v b g g g g g b v v v b g g g g b v b v v / e e e e e / a a a a a / e e e e e / a a a / e e e e / a / a a r / / / / / r s s s s s r / / / / / r s s s r / / / / r s r s s a r r r r r a / / / / / a r r r r r a / / / a r r r r a / a / / n 1 2 2 5 7 n p p p p p n 3 4 9 1 1 n p p p n 5 6 7 8 n p n p p g " " 9 5 3 g 4 5 6 7 8 g " " " 4 5 g 8 9 1 g " " " " g 1 g 1 1 e , , " " " e " " " " " e , , , " " e " " 0 e , , , e 0 e 0 1 / , , / , , , , / , / , , " / / " / " " r r r r r r r , 0 1 2 3 4 5 6 " " " " " " " , , , , , , , 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:
r 0 , 全 体 , - , r 1 ; r 2 ; r 2 9 ; r 5 5 ; r 7 3
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:
r r r r r 1 2 3 4 5 , , , , , 目 第 一 二 ( 次 一 、 、 一 , 、 ) 司 司 4 蒙 法 法 司 - 疆 制 關 法 8 政 度 係 部 府 ノ 機 … ノ 沿 關 四 司 革 … , 法 … 四 1 制 一 , 0 度 , r … 5 一 8 ; 頁 - r , 1 6 r 0 ; 3 r ; 7 r ; 4 r ; 8 r 9 ; r 1 4 ; r 1 5
Similarly, the example above uses three columns, but due to the update, four-column data is now required:
{ R a n g e I D } , { R a n g e n a m e } , { C a n v a s i n d e x } , { C h i l d R a n g e I D s }
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.