How it is built

The structure, and the rules it enforces

Twenty-three tables, 485 controlled terms across 36 vocabularies, and a short list of things the database will not let you do.

The shape follows the evidence rather than the convenience of a spreadsheet. A person has casualty events; an event has injuries; an injury has treatments, and possibly an amputation, and its own outcome. Held deliberately to one side is the newspaper itself — issue, page, article, mention — so that every assertion in the first chain is reachable from a particular column of newsprint in the second.

personcasualty eventinjurytreatmentamputation
issuepagearticlesource mentioninjury mention

The tables

The people and what happened to them

TableColumnsRows
persons170One row for a person, however little of the name survives.
name_as_printed80The name exactly as set in type, kept apart from any expansion.
military_service270Allegiance, arm, unit, vessel, battery. The paper's own word kept beside the normalised one.
casualty_events380What befell the person, when, where, and by what general cause.
injuries540One row per distinct wound. Three wounds are three rows.
injury_treatments140Dressing, hospital, surgery, tied to the wound treated.
amputations160Tied to the injury that caused it.
projectiles110Ball, shell, fragment, splinter, in period terms.

The evidence

TableColumnsRows
publications72
issues182,192Every date in the study, whether or not a copy has been found.
pages1418Page image, OCR, and the measured legibility of each.
articles120Headline, column, dateline, and the voice the report speaks in.
source_mentions180The passage of newsprint an assertion came from, with untouched OCR.
injury_mentions100Three reports of one arm wound are three mentions of one injury.
places120Location as printed beside the standardised place.
external_verifications130Later research, held apart from what the paper said.

Housekeeping

TableColumnsRows
review_queue124Anything uncertain, waiting for a person to decide.
audit_log110Every change, with its reason and its author.
candidates1070Passages worth reading. Not records.
processing_checkpoints728Where a run of processing got to.
vocab_domain236
vocab_term6485The controlled vocabularies.
incidents50

The rules

Nothing is invented

No name, rank, company, regiment, battery, vessel, date, place, weapon, calibre, wound or hospital is supplied because it seems probable. Where a thing cannot be established it is recorded as unknown, and unknown is a perfectly good answer.

The paper is never silently corrected

What the Mercury reported and what later evidence showed are separate columns. A captain reported killed who walks home keeps both statements, in the order they were made.

Original text is never overwritten

The repository’s OCR, a local OCR pass, and a corrected transcription are three fields. Correcting a reading never destroys the reading it replaced.

Wounds are counted one at a time

“Wounded in the arm and leg” is two injuries. “Wounded severely in the leg” is one. Where a single ball passed through a hand and into a thigh, the two wounds are linked so that they are never counted as two shots.

Period wording is kept

“A piece of shell” is stored as it was printed and normalised to shell fragment beside it. A rifle projectile is not called a Minié ball because it was fired from a rifle; only because the paper said so.

Nothing is merged on a surname

Two men called Smith are two men until rank, company, unit, date or engagement says otherwise. Ambiguous cases go to a person, not to a confidence score.

Absence of leave is not a casualty

Deserted, absent, straggling, furloughed, detached and transferred are excluded by the discovery pass, and flagged where they appear beside casualty language.

Every change leaves a trace

The audit log records the old value, the new value, who changed it, why, and on what authority.

The pipeline

  1. 01Locate an issue and record it, found or not
  2. 02Fetch the scan and checksum it
  3. 03OCR it, keeping the repository's own text untouched
  4. 04Judge the OCR, and stop here if it cannot be read
  5. 05Segment the columns and the articles
  6. 06Find the passages carrying casualty language
  7. 07Extract people, then events, then injuries one by one
  8. 08Extract weapon, projectile and immediate mechanism
  9. 09Extract treatment, surgery, amputation and outcome
  10. 10Resolve repeated mentions without unsafe merging
  11. 11Put everything uncertain in front of a person
  12. 12Check the finished record against the page image

Controlled vocabularies

These are tables rather than fixed constraints, so a term met in the paper and not anticipated can be added with a note on where it came from, instead of being quietly forced into the nearest existing box.

VocabularyTerms
allegiance8Which side, established from context and not from the paper's tone.
amputation_level10Level at which a limb was taken off.
anatomical_region34Principal region of the body.
article_type21Kind of newspaper item the mention sits in.
body_side5Side of the body.
branch23Arm of service. The newspaper's own word is kept separately.
casualty_status40What was reported to have befallen the person.
cause_category13Top of the causation hierarchy.
civilian_or_military8Broad class of person.
completeness_status7How complete a located issue is.
date_precision7How firmly the date of the event is fixed.
direct_or_indirect6Whether the weapon acted on the body directly.
external_source_type13Class of record used for later verification.
fire_source6Whose fire, where the source is actually stated.
injury_mechanism73The thing that did the damage to the body.
injury_outcome13Outcome of one injury, not of the person.
name_expansion_status4Whether an abbreviated name has been expanded.
ocr_availability5Whether machine-readable text exists.
ocr_quality5Measured usefulness of the OCR for extraction.
processing_stage13Stage of the ingestion pipeline.
projectile_family10Coarse grouping of projectiles for counting.
projectile_type27The projectile, in period terms where possible.
publication_status5Whether the paper was publishing on a date.
review_action7What a reviewer did.
review_reason19Why a row was put in the review queue.
review_status4Where a review stands.
reviewer_status6State of human review of a mention.
scan_availability5Whether a page image exists.
severity7Reported severity of a wound.
source_perspective9Voice the report speaks in.
treatment_type12Kind of medical attention recorded.
verification_status6State of checking against evidence.
weapon_system23The weapon, where one is actually named.
wound_type24Character of the wound as described.
yes_no_possibly_unknown4Four-valued flag.
yes_no_unknown3Three-valued flag.