Layers
Every document in the library carries its text and its language. Three add-on layers answer the other questions a reader brings to it: when was this written, where does it come from, and what kind of text is it? The layers share one doctrine:
- Extracted, never guessed — every claim is read from what the source actually ships (a date attribute, a findspot, a genre label), and what resists an honest parse stays visibly unclaimed.
- Honesty buckets are first-class — “undated”, “unmatched”, “unmapped” and upstream’s own “cannot determine” are counted answers, never silent gaps.
- Derived and rebuildable — all three layers regenerate from the canonical sources on every rebuild; the upstream claim is preserved verbatim beside every fold.
- Composable — each layer is a search filter, and they stack:
nabu search "dis manibus" --kind funerary --from -100 --to 100 --place pleiades:423025.
When — the dates layer
As of 7 November 2026 — a live census:
2,465,111 documents carry dating
bounds (of 2,854,118 live
documents, 86%). nabu search
--century -21, nabu list --by-date and nabu vocab --by-century
all read the same per-document interval.
Every dating bound is an honest year interval extracted from whatever dating form upstream actually ships:
- Structured claims — EpiDoc
origDateattributes, catalogue year columns, machine date attrs (the Korean chronicles’ per-entry1617-01-00dates), publication-year headers. - Banded labels — Assyriological period labels (“Neo-Assyrian”) through a ruled period table; century-half grids (“15,2” = 15th c., 2nd half); anno-mundi annal years era-converted with the ambiguity kept as a span.
- Author dating — work-composition years and author life bands (Patrologia Latina), floruit strings (“fl. 892”).
What resists an honest parse stays raw and unbounded: prose datings (“Mitte 15. Jh.” without a grid), upstream’s own no-date fillers, circa strings with nothing firmer behind them. An interval is always a real range — no fake midpoints. Documents whose range spans several centuries are bucketed by their earliest bound below (1,094,147 such documents — the announced bias, not a hidden one).
The centuries
| Century | Documents | Largest sources |
|---|---|---|
| 85th c. BCE | 218 | cdli 218 |
| 35th c. BCE | 418 | cdli 418 |
| 34th c. BCE | 1,873 | cdli 1,861 · oracc 11 · tla-hf 1 |
| 33rd c. BCE | 186 | cdli 186 |
| 32nd c. BCE | 5,548 | cdli 4,958 · oracc 590 |
| 31st c. BCE | 1,730 | cdli 1,729 · edr 1 |
| 29th c. BCE | 1,886 | cdli 1,200 · oracc 686 |
| 28th c. BCE | 277 | aes 277 |
| 27th c. BCE | 341 | aes 338 · cdli 2 · elephantine 1 |
| 26th c. BCE | 3,956 | cdli 1,898 · aes 1,848 · oracc 200 · seal 7 · +1 more |
| 25th c. BCE | 7,240 | cdli 5,085 · aes 1,521 · oracc 634 |
| 24th c. BCE | 22,493 | cdli 17,298 · aes 4,869 · oracc 309 · elephantine 15 · +1 more |
| 23rd c. BCE | 1,434 | aes 1,430 · elephantine 4 |
| 22nd c. BCE | 6,190 | cdli 5,331 · oracc 803 · aes 54 · elephantine 2 |
| 21st c. BCE | 193,544 | cdli 111,097 · oracc 81,610 · ebl 796 · aes 41 |
| 20th c. BCE | 14,165 | cdli 13,687 · oracc 249 · aes 212 · seal 11 · +2 more |
| 19th c. BCE | 67,244 | cdli 59,464 · oracc 6,346 · ebl 962 · seal 314 · +2 more |
| 18th c. BCE | 6,841 | cdli 6,687 · aes 85 · sigla 53 · ebl 14 · +1 more |
| 17th c. BCE | 1,842 | cdli 1,717 · aes 86 · sigla 37 · ebl 2 |
| 16th c. BCE | 114 | aes 70 · sigla 39 · cdli 3 · elephantine 1 · +1 more |
| 15th c. BCE | 15,950 | cdli 14,692 · sigla 631 · damos 427 · aes 185 · +1 more |
| 14th c. BCE | 24,489 | cdli 16,165 · oracc 5,571 · damos 2,069 · aes 472 · +3 more |
| 13th c. BCE | 10,812 | dcs 7,094 · cdli 1,693 · damos 1,523 · aes 500 · +2 more |
| 12th c. BCE | 898 | cdli 634 · aes 257 · elephantine 6 · damos 1 |
| 11th c. BCE | 217 | classical-modern 116 · cdli 39 · aes 38 · kanripo 19 · +2 more |
| 10th c. BCE | 50,725 | cdli 29,312 · ebl 13,707 · oracc 7,625 · aes 77 · +1 more |
| 9th c. BCE | 2,776 | cdli 2,347 · oracc 425 · extrabiblical 3 · ig-cyprus 1 |
| 8th c. BCE | 9,368 | oracc 4,180 · cdli 2,841 · ociana 2,186 · ceipom 71 · +11 more |
| 7th c. BCE | 30,253 | cdli 17,318 · ebl 6,852 · oracc 5,438 · ceipom 196 · +14 more |
| 6th c. BCE | 13,019 | cdli 7,804 · achemenet 2,770 · oracc 580 · isicily 433 · +19 more |
| 5th c. BCE | 9,265 | dcs 2,940 · classical-modern 2,249 · isicily 928 · cdli 838 · +15 more |
| 4th c. BCE | 10,304 | cdli 3,387 · oracc 1,437 · iip 1,281 · aio 993 · +20 more |
| 3rd c. BCE | 8,596 | papyri-ddbdp 4,432 · ceipom 1,325 · edr 895 · aio 581 · +20 more |
| 2nd c. BCE | 7,584 | papyri-ddbdp 3,508 · edr 1,156 · ceipom 1,061 · itant 337 · +18 more |
| 1st c. BCE | 51,114 | ociana 34,465 · edr 10,960 · papyri-ddbdp 1,924 · edh 1,904 · +19 more |
| 1st c. CE | 71,657 | edr 40,748 · edh 19,295 · papyri-ddbdp 7,473 · isicily 931 · +21 more |
| 2nd c. CE | 69,825 | edh 26,822 · edr 22,808 · papyri-ddbdp 16,428 · elephantine 1,382 · +18 more |
| 3rd c. CE | 27,697 | papyri-ddbdp 8,627 · edh 7,486 · edr 7,256 · dcs 2,315 · +21 more |
| 4th c. CE | 15,431 | papyri-ddbdp 6,075 · edr 3,507 · edh 3,193 · iip 663 · +21 more |
| 5th c. CE | 6,524 | papyri-ddbdp 2,170 · edr 1,524 · edh 905 · iip 501 · +20 more |
| 6th c. CE | 7,127 | papyri-ddbdp 4,826 · edr 572 · edh 476 · cbeta 225 · +21 more |
| 7th c. CE | 8,270 | papyri-ddbdp 4,382 · zh-wikisource 1,001 · cbeta 896 · classical-modern 486 · +26 more |
| 8th c. CE | 16,255 | rundata 11,555 · dcs 2,041 · papyri-ddbdp 1,790 · ja-wikisource 204 · +27 more |
| 9th c. CE | 4,237 | ganjoor 625 · openiti 612 · cantus 600 · corpus-corporum 580 · +29 more |
| 10th c. CE | 18,966 | cantus 7,553 · ganjoor 3,247 · rundata 3,239 · classical-modern 1,260 · +34 more |
| 11th c. CE | 24,814 | ganjoor 10,232 · rundata 10,158 · cantus 1,890 · openiti 918 · +28 more |
| 12th c. CE | 86,500 | cantus 56,142 · ganjoor 18,102 · okhc 6,761 · rundata 2,071 · +36 more |
| 13th c. CE | 56,733 | cantus 28,139 · ganjoor 20,027 · corpus-gysseling 2,191 · okhc 1,378 · +38 more |
| 14th c. CE | 66,849 | cantus 35,008 · okhc 13,521 · ganjoor 12,797 · dcs 1,493 · +36 more |
| 15th c. CE | 58,512 | okhc 37,518 · ganjoor 10,746 · cantus 6,993 · pl-wikisource 765 · +41 more |
| 16th c. CE | 199,585 | okhc 150,575 · ganjoor 20,972 · cantus 12,169 · eebo-tcp 5,212 · +51 more |
| 17th c. CE | 310,845 | okhc 213,456 · eebo-tcp 54,895 · ganjoor 13,527 · stationers-register 6,073 · +63 more |
| 18th c. CE | 314,026 | okhc 282,073 · ganjoor 10,051 · hmml-reading-room 4,865 · ndl-kotenseki 4,697 · +51 more |
| 19th c. CE | 419,691 | okhc 379,284 · ndl-kotenseki 12,221 · ganjoor 5,836 · hmml-reading-room 5,603 · +63 more |
| 20th c. CE | 94,500 | okhc 55,253 · aozora 16,036 · gregobase 12,534 · hmml-reading-room 2,962 · +44 more |
| 21st c. CE | 4,157 | gregobase 2,499 · openiti 848 · aozora 731 · local-library 31 · +7 more |
Where — the places layer
nabu place Girsu answers with the gazetteer card and every source’s
holdings at that place. The layer has two halves: the gazetteers, held
locally, and the matching decisions that connect a source’s verbatim
place-name to an identity.
The gazetteers. The library never queries a gazetteer online — it holds them as canonical assets with provenance and derives one namespaced place index:
| Namespace | What | Held rows | License |
|---|---|---|---|
pleiades: |
Pleiades — THE ancient-world gazetteer | 42,404 | CC BY 3.0 |
tm: |
Trismegistos Geo — finest grain for Greco-Roman Egypt | 64,857 | CC BY-SA 4.0 |
cigs: |
CIGS — the cuneiform world’s site index | 598 | CC BY 4.0 |
chgis: |
CHGIS — the China Historical GIS temporal gazetteer | 81,292 | CC0 1.0 |
nrct: |
NRCT — the historical placenames of Japan (日本歴史地名大系) | 80,502 | CC BY 4.0 |
thurayya: |
al-Ṯurayyā — the early Islamic world | 2,331 | CC BY 4.0 |
np: |
nabu-places native records (minted by scholarship, evidence required) | 0 — the lane is new | CC BY 4.0 |
Held rows as of 16 October 2026.
Namespaces are parallel claims; equivalences between them are crosswalk data with provenance (3,438 rows: CIGS’s own columns + a Wikidata harvest), never inferred.
The decisions registry.
nabu-places records the
matching judgments — which identity a source’s verbatim place-name
string denotes — each reviewable, in the pattern of
nabu-lects. Three real rows
tell the story: CDLI’s "Girsu (mod. Tello)" → matched cigs:GIR
pleiades:912855; EDR’s"Mediolanum"— six Pleiades places carry that title, the row says the Insubrian Milan and names the five rejected homonyms;"Irisagrig (mod. uncertain)"→ unlocatable — the site is unidentified in reality, and that is an answer, not a failure. An unlisted name is honestly unmatched; adapter-asserted upstream references always win over registry mints — the registry only ever fills silence.
Coverage. At the places program’s close (9 August 2026), 585,682 documents carried a machine place reference, of 708,905 that name a place at all — a 3.9× gain over the pre-program state; the largest sources sit at 74–87% matched (CDLI 250,484 of 337,572, Oracc 87%, EDR 86%, EDH’s 73,507 upstream-asserted). The maintained coverage detail lives in docs/places.md. Honest limits stay on the record: a dozen upstream references cite defective Pleiades ids (flagged loudly by the health invariants); long-tail names below the curated waves stay visibly unmatched until their wave lands.
What kind — the classification layer
As of 7 November 2026 — a live census:
2,309,369 documents carry a kind
classification (80% of the kind-eligible
library), across 27 class families. What
kind of document is this — an epitaph, a receipt, a hymn, a school
exercise? Each source ships its own genre vocabulary (EpiDoc
inscription types, cuneiform catalogue genres, manuscript headings);
those upstream labels fold onto one ruled cross-corpus class list
(config/kind_classes.yml, with crosswalks to EAGLE, LCGFT and Getty
AAT where those vocabularies recognize the class).
Classification is multi-label — a funerary poem is both — and the
tree is optionally deep: a class is a family with named
sub-classes (literary holds literary/poetry,
literary/narrative, …), any prefix matches its whole family in
queries, and a document upstream calls just “Literary” honestly
carries the bare family head. The upstream claim is preserved verbatim
beside the fold, so the ruled class never erases what the source
actually said.
The classes
| Class | Documents | Sources |
|---|---|---|
| literary | 801,209 | 47 |
| administrative | 500,153 | 25 |
| historiography | 359,147 | 32 |
| ritual | 194,528 | 18 |
| funerary | 115,146 | 13 |
| legal | 43,550 | 33 |
| letter | 37,309 | 24 |
| royal | 30,135 | 5 |
| scripture | 27,695 | 37 |
| dedicatory | 24,250 | 11 |
| divination | 21,103 | 16 |
| hymn-prayer | 21,075 | 26 |
| lexical | 18,229 | 20 |
| scholarly | 14,937 | 25 |
| mark | 12,298 | 11 |
| honorific | 11,692 | 6 |
| building | 8,061 | 8 |
| sermon | 7,841 | 11 |
| school | 5,281 | 8 |
| magic | 3,411 | 10 |
| exegesis | 3,248 | 15 |
| boundary | 3,009 | 4 |
| periodical | 2,432 | 6 |
| theology | 36 | 1 |
| hagiography | 9 | 1 |
| oratory | 3 | 1 |
| catechesis | 1 | 1 |
What stays honest
Two buckets are counted beside — never inside — the classes: unknown (47,058 documents) is upstream’s own “cannot determine”, a claim the library preserves rather than overwrites; unmapped (13,341 documents) holds values still awaiting a fold rule — a visible curation worklist, not a silent discard. Values reviewed and found not to be genre claims at all (a physical-layout tag, a copy marker) are declared as such in config and render as their own census section. Sources carrying nothing genre-shaped at all (133 sources, 544,749 documents) speak through their recorded postures, not through silence.
One query across the layers
nabu search --century -21 # when
nabu place Girsu # where: the card + holdings
nabu kind census # what kind: the class board
nabu kind census --unmapped # the classification worklist
nabu search --kind literary/poetry --lang la # a family narrowed to verse
nabu search lugal --place cigs:GIR --from -2200 --to -2000 --kind administrative
Every filter also rides the MCP tools (nabu_search, nabu_place,
nabu_show) for conversational use, and every document card
(nabu show) renders its date interval, place references and kind
line side by side — the three layers on one card.