# A house by example What a house is shows best in one small case. A local historian keeps notes on the people in her village's parish registers and is tired of spreadsheets. An agent working for her did what follows in a sandbox. Every call was made against a running house on 2026-10-04; the answers are shortened, never invented. ## The input 1. "Johann Weber, baptised 12 March 1712, father Peter Weber, mother Anna née Huber. Register I, p. 34." 2. "Anna Huber married Peter Weber on 3 June 1709. Witnesses: Georg Huber. Register II, p. 12." 3. "Peter Weber buried 2 February 1731, aged about 50. Register III, p. 88." ## What the agent builds Two forms of its own with `define_form`: one for the entry, one for a person's role in it. ``` define_form "Parish register entry" Event: Enum [Baptism, Marriage, Burial] Register: Storable, Page: Integer, Transcript: Storable define_form "Named in entry" Role: Enum [Child, Father, Mother, Groom, Bride, Witness, Deceased] ``` Then the entries with `store_value`, the people with `create_person`, the roles with `assert_formed_link`, the dates with `assert_time`, the family with `assert_parenthood` and `assert_partnership`, and the evidence with `assert_link`: ``` store_value "Parish register entry" {Event: Baptism, Register: "Register I", Page: 34, Transcript: "Johann Weber, baptised 12 March 1712, …"} (three entries) create_person Johann Weber, Peter Weber, Anna Huber, Georg Huber assert_formed_link "Named in entry" Peter Weber → the baptism {Role: Father} (seven links) assert_time the baptism At 1712-03-12 (to the day) assert_parenthood child Johann Weber, parent Peter Weber; the same with Anna Huber assert_partnership Peter Weber, Anna Huber, Marriage; assert_time … Began 1709-06-03 assert_link each parenthood and the marriage → the transcript text, meaning Index ``` The last step makes the claims evidenced: an Index link to the wording of the source. A link to the entry as a record of one's own would not count (`evidence-and-provenance`). ## The question "Where does Peter Weber appear, and how do we know?" `describe`, `describe_evidence`, `describe_kinship` and `find_in_period` answer: ``` describe Peter Weber → Named in entry: Register I (Father) · Register II (Groom) · Register III (Deceased) describe_evidence Johann's parenthood to Peter → Evidenced. Carrier: "Johann Weber, baptised 12 March 1712, father Peter Weber, …" describe_kinship Johann Weber, Anna Huber → a parenthood, one step up find_in_period 1700 to 1735 → the marriage, the baptism, the burial, in order ``` A spreadsheet holds the same three rows. What it does not hold is one Peter Weber linked to every entry that names him, with his role. Nor does it hold the relation of Johann to Anna, derived instead of typed, or, for each claim, the words it rests on. Corrections do not overwrite: a retracted link stays readable as retracted. ## What a successor sees A different agent that never saw this house connects to the reader door. It calls `list_forms` and finds "Parish register entry" and "Named in entry" with their descriptions and properties. `find_things` with the aspect Person lists the four people. Nobody has to explain the model; the house describes it. ## What the example does not show - Each entry is labelled by one of its fields ("Register I"). With many entries per register, they look alike in a list. - A word search with `search_text` finds the transcripts, and a hit does not lead back to its entry or person. - `find_things` cannot filter by form; `form_usage` lists the entries of a form instead. - The sandbox ends after three hours, and a house of your own is not available yet (`what-does-not-exist-yet`). ## Go deeper - [forms-aspects-concepts](forms-aspects-concepts.md): defining your own forms - [evidence-and-provenance](evidence-and-provenance.md): what counts as a carrier - [the-sandbox](the-sandbox.md): trying this yourself - [first-hour-in-a-house](first-hour-in-a-house.md)