Copyright and License
© 2026 InnoVadens, LLC. All rights reserved.
This specification is licensed under the Creative Commons Attribution–NoDerivatives 4.0 International License (CC BY‑ND 4.0).
You are free to copy and redistribute this document in any medium or format, provided that you:
- Attribute the work to InnoVadens, LLC, and
- Do not remix, transform, or build upon the material.
No modifications of this specification may be distributed. Implementations may reference this specification, but derivative specifications or altered versions may not be published under the ADAC name or imply ADAC endorsement.
A copy of the license is available at: https://creativecommons.org/licenses/by-nd/4.0/
Status of This Document
This document defines the authoritative ADAC Specification for version 1.0.
InnoVadens, LLC is the steward of this specification. Only documents published at https://adac-standard.com/specs/ are considered official and normative.
This specification may be referenced by third‑party software, libraries, and services. However, no external party may publish modified versions of this specification or claim compatibility beyond what is explicitly defined in the normative text.
Normative requirements in this document use the keywords MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY as defined in RFC 2119.
Trademark Notice
"ADAC" and the ADAC logo are trademarks of InnoVadens, LLC. Use of the ADAC name in derivative specifications, competing standards, or modified versions of this document is prohibited.
Software implementations may state that they "implement the ADAC Specification" provided such statements are accurate and not misleading.
Revision History
Version 1.0.0 — Initial publication.
ADAC-Genealogy v1.0.0 — Genealogy Profile Specification
Editor & Steward
John Vaden
Genealogist and Technical Workflow Contributor
InnoVadens, LLC — Cedar Lake, Michigan, USA
Contributors
AI-assisted drafting and refinement
Community feedback (ongoing)
Status
This document is maintained by InnoVadens, LLC as the official steward of the ADAC Standard.
John Vaden has decades of experience in genealogical research and in contributing to standards, workflows, and data practices across analyst and software development teams. He serves as the editor and steward of the ADAC Standard. InnoVadens, LLC is the legal steward of ADAC.
Version: v1.0.0 Status: Stable Copyright: © 2026 InnoVadens, LLC. All rights reserved. Date: 2026 Base Format: [ADAC 1.0
Abstract
The ADAC-Genealogy profile defines a domain-specific metadata extension for the ADAC 1.0 container format, designed for the long-term preservation and interchange of digitized genealogical records — census pages, vital records, church registers, land deeds, immigration manifests, and other primary sources used in family history research. The profile adds structured source citations, multi-page record linking, Genealogical Proof Standard evidence analysis, per-region annotations for persons, transcriptions, and document condition, and explicit handling of living-person privacy concerns — all without modifying the core ADAC specification.
Table of Contents
- Introduction
- Conformance
- Terminology
- Relationship to ADAC
- Container Format
- Genealogy Profile —
metadata/profiles/genealogy.json - Source Citation
- Multi-Page Record Links
- Evidence Analysis
- Region Linked Entities
- Person Annotation —
genealogy:person - Transcription —
genealogy:transcription - Record Condition —
genealogy:condition - Privacy and Living Persons
- Well-Known Value Sets
- JSON Conventions
- Media Types & File Extensions
- Interoperability
- Complete Container Example
- Validation
- References
- Version History
1. Introduction
1.1 Problem Statement
Genealogical research depends on the careful analysis of primary source documents — census enumerations, birth certificates, parish registers, probate records, and immigration manifests. When these documents are digitized, the resulting scans capture the visual content but lose the structured context that makes them useful for research: which repository holds the original, what jurisdiction it covers, who the people named on the page are, what the handwriting says, and how this source relates to other evidence in a proof argument.
Existing approaches store this context in proprietary databases, genealogy software files, or unstructured notes — creating fragile dependencies that break when systems change. Researchers also face a recurring challenge with living-person privacy: census records become public after 72 years in the United States, but people named on more recent records may still be living and their personal information may be subject to privacy law (GDPR, CCPA, and state-level statutes).
1.2 Solution
ADAC-Genealogy solves these problems by embedding genealogical context directly into the archival container alongside the scanned image:
- Source citation — archival repository, collection hierarchy, microfilm references, jurisdiction, date range, and language.
- Person annotations — per-region identification of individuals and their vital data as recorded in the source, with optional information-quality classification per person.
- Transcriptions — per-region text extracted from handwriting or print, with confidence scores for AI-assisted work and optional revision history.
- Record condition — per-region legibility and damage assessments, documenting why certain facts could not be confirmed.
- Multi-page record links — structural connections between masters when a single logical record (e.g., a household enumeration) spans multiple pages.
- Evidence analysis — Genealogical Proof Standard classification, correlation notes linking to other sources, and documented conclusions.
- Privacy controls — explicit guidance and schema support for living-person data, including integration with ADAC's
accessControlandEncryptionDescriptormechanisms.
1.3 Design Philosophy
| Principle | Description |
|---|---|
| ADAC-native | ADAC-Genealogy is a pure ADAC profile extension. No core specification modifications are required. Any ADAC reader can open an ADAC-Genealogy container. |
| Genealogy-first | Every schema element maps to a concept central to genealogical research and the Genealogical Proof Standard. |
| Non-intrusive | Non-genealogy ADAC consumers ignore all genealogy data. Linked entity values survive round-trip serialization unchanged. |
| Source-faithful | Date fields, names, ages, and historical demographic descriptors use free-text strings to faithfully represent the source record. Genealogical documents routinely contain approximate, partial, or non-standard values that structured types cannot capture, and historical demographic categories (race as recorded, sex as recorded) reflect the language of the original document, not modern classification. |
| Privacy-aware | The profile provides explicit guidance for handling living-person data and integrates with ADAC's access control and encryption mechanisms. |
| Ecosystem-interoperable | Supports GEDCOM 7 cross-references, GEDCOM 5.5.1 XREFs (legacy), FamilySearch FHL film numbers, and external system identifiers for integration with existing genealogy platforms. |
| Forward-compatible | All JSON structures tolerate unknown properties. Future profile versions can add fields without breaking existing readers. |
1.4 Scope
This specification defines:
- The genealogy profile file schema (
metadata/profiles/genealogy.json) - Source citation, collection hierarchy, film reference, and jurisdiction schemas
- Multi-page record linking
- Evidence analysis, classification, and correlation note schemas
- Per-region linked entity schemas: person annotations, transcriptions, and record conditions
- Privacy guidance for living-person data
- Well-known value sets for record types, evidence classifications, source classifications, information classifications, legibility values, and damage types
- Profile-specific validation rules
This specification does not define:
- The ADAC core container format (see the ADAC 1.0 Format Specification)
- DNA evidence or genetic genealogy data structures (deferred to a future companion profile)
- Application-level APIs, programming interfaces, or dependency injection
- User interface requirements for displaying genealogical data
1.5 Audience
This specification is intended for:
- Software developers implementing genealogy features in ADAC readers and writers
- Genealogists and archivists evaluating the format for digitized record preservation
- Developers of genealogy software (GEDCOM editors, family tree applications) considering ADAC integration
- Standards bodies evaluating the format for adoption
2. Conformance
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
2.1 Profile Conformance
An ADAC container conforms to this profile specification when:
- It is a valid ADAC 1.0 container at any conformance level (Minimal, Archival, or Signed Archival).
- It contains a file at a path listed in the manifest's
metadata.profilesarray whose filename portion matchesgenealogy.json(case-insensitive). - That file is valid JSON containing at least the
profileId,profileType, andprofileVersionfields, withprofileTypeequal to"genealogy"andprofileIdequal to"urn:adac:profile:genealogy:v1".
2.2 Recommended Conformance for Genealogical Archives
For long-term preservation of genealogical records, Archival conformance is RECOMMENDED. For records intended to serve as legal evidence (probate, land transfer, naturalization records used in citizenship claims), Signed Archival conformance is RECOMMENDED so that chain of custody can be cryptographically verified.
2.3 Forward Compatibility
Readers MUST tolerate unknown JSON properties in all genealogy profile structures. Unknown properties MUST be preserved during round-trip serialization. Writers that cannot preserve unknown fields MUST set the manifest's roundTripFidelity to "degraded" and append a fidelityLoss provenance event, in accordance with ADAC 1.0 Section 6.2.
3. Terminology
| Term | Definition |
|---|---|
| ADAC-Genealogy Container | An ADAC container that includes a genealogy profile at metadata/profiles/genealogy.json. Uses the standard .adac extension. |
| Source Citation | Structured description of the archival repository, collection hierarchy, film reference, jurisdiction, and date range of the source record. |
| Person Annotation | Per-region metadata identifying a person and their vital data as recorded in the source document. Linked entity key: genealogy:person. |
| Transcription | Per-region text transcribed from the original handwriting or print. Linked entity key: genealogy:transcription. |
| Record Condition | Per-region assessment of legibility and physical damage. Linked entity key: genealogy:condition. |
| Page Link | A structural tie between multiple master files within a container, grouping them into a single logical multi-page record (such as a household enumeration spanning two census sheets). |
| Evidence Analysis | GPS-compliant classification, correlation, and conclusion metadata for the source. |
| Correlation Note | A note linking the current source to another piece of evidence, optionally referencing another ADAC container by its manifest id. |
| GPS | Genealogical Proof Standard — the five-element framework for establishing genealogical conclusions: reasonably exhaustive search, complete and accurate citations, analysis and correlation, resolution of conflicting evidence, and a soundly reasoned written conclusion. |
| Source Classification | Whether the source itself is original (created at the time of the event) or derivative (a later copy or compilation). |
| Information Classification | Whether the information within the source is primary (recorded by an eyewitness or participant) or secondary (recorded by someone with second-hand knowledge). |
| Evidence Classification | Whether information from the source is direct, indirect, or negative evidence for a specific genealogical claim. |
| Collection Hierarchy | The standard archival arrangement: collection → series → box → folder → item. |
| Film Reference | Microfilm roll, frame, and FamilySearch Family History Library (FHL) film number. |
| Living Person | A person who is, or may reasonably be presumed to be, alive at the time of container creation or distribution. See Section 14 for handling guidance. |
4. Relationship to ADAC
4.1 Extension Mechanisms
ADAC-Genealogy extends ADAC through three primary mechanisms defined by the ADAC 1.0 specification:
Profile file — A self-describing JSON file placed at
metadata/profiles/genealogy.jsonand referenced in the manifest'smetadata.profilesarray. Non-genealogy readers ignore this file entirely.Linked entities — Per-region JSON objects stored in the
linkedEntitiesdictionary on each region, keyed by namespaced strings (genealogy:person,genealogy:transcription,genealogy:condition). Non-genealogy readers preserve these values unchanged during round-trip serialization.Provenance events — Genealogy applications SHOULD append events to ADAC's hash-chained provenance log (
provenance/log.json) when significant genealogical analysis actions occur (transcription added, evidence analyzed, person annotation created or modified, container correlated to another source). Recommended event types includegenealogyTranscription,genealogyAnalysis, andgenealogyCorrelation. These appear in the same chronological hash chain as ADAC's built-in events and inherit the same tamper-evident properties.
4.2 Optional ADAC Features Used by This Profile
ADAC-Genealogy MAY make use of the following optional ADAC 1.0 features:
| ADAC Feature | Genealogy Use Case |
|---|---|
metadata/structure.json |
Generic structural relationships between masters (paged-document sequences). Genealogy-specific multi-page record links live in the genealogy profile (Section 8) and add semantic grouping on top of the generic structure. |
signatures/ |
Cryptographic chain of custody for records used as legal evidence (probate, naturalization, land transfer). |
accessControl (per-master, per-derivative, or container-level) |
Tagging records or specific derivatives that contain living-person data with confidentiality levels and embargo dates. See Section 14. |
EncryptionDescriptor |
Storing recent records with living-person data as encrypted ciphertext when the container is shared outside controlled environments. See Section 14. |
| Hash-chained provenance log | Tamper-evident audit trail of transcription work, evidence analysis revisions, and cross-container correlation. |
4.3 What This Profile Does NOT Modify
- The ADAC container format (ZIP structure)
- The manifest schema (
manifest.json) - The core metadata schema (
metadata/core.json) - The region annotation schema (structure of regions or bounds)
- The edit pipeline schema
- The provenance log schema or hash-chain mechanism
- The checksum manifest schema or fixity computation
- The signature mechanism or signature index schema
- Any ADAC validation rules or error codes
5. Container Format
5.1 File Extension
| Property | Value |
|---|---|
| File extension | .adac |
| MIME type | application/vnd.adac.container |
ADAC-Genealogy containers use the standard .adac extension. The presence of the genealogy profile is identified by the profileType field inside metadata/profiles/genealogy.json, not by the file extension. This avoids extension proliferation and keeps the format unified.
5.2 Directory Structure
<container>.adac
├── manifest.json (REQUIRED — ADAC)
├── master/ (REQUIRED — ADAC)
│ ├── master_0001.tif
│ └── ...
├── metadata/ (REQUIRED — ADAC)
│ ├── core.json (REQUIRED — ADAC)
│ ├── structure.json (OPTIONAL — ADAC)
│ ├── xmp/ (OPTIONAL — ADAC)
│ │ └── ...
│ └── profiles/ (REQUIRED for this profile)
│ └── genealogy.json (REQUIRED for this profile)
├── derivatives/ (OPTIONAL — ADAC)
│ └── ...
├── regions/ (RECOMMENDED for this profile)
│ ├── master-001.regions.json
│ └── ...
├── edits/ (OPTIONAL — ADAC)
│ └── ...
├── provenance/ (REQUIRED for Archival ADAC)
│ ├── log.json (hash-chained events)
│ └── checksums.json
└── signatures/ (OPTIONAL — REQUIRED for Signed Archival)
├── index.json
└── *.p7s
5.3 Manifest Integration
{
"metadata": {
"core": "metadata/core.json",
"structure": "metadata/structure.json",
"profiles": [
"metadata/profiles/genealogy.json"
],
"provenanceLog": "provenance/log.json",
"checksums": "provenance/checksums.json"
}
}
6. Genealogy Profile
Path: metadata/profiles/genealogy.json
Status: REQUIRED for ADAC-Genealogy containers
The genealogy profile is the root metadata file for this extension. It uses the standard ADAC 1.0 profile wrapper (Section 13.2 of the ADAC core specification) to declare its identity, then carries genealogy-specific content under the data field.
6.1 Schema
{
"profileId": "urn:adac:profile:genealogy:v1",
"profileType": "genealogy",
"profileVersion": "1.0.0",
"title": "ADAC Genealogy Profile",
"schema": "https://adac.example.org/schemas/genealogy-v1.json",
"data": {
"sourceCitation": { ... },
"pageLinks": [ ... ],
"evidence": { ... }
}
}
6.2 Profile Wrapper Fields
| Field | Type | Required | Value | Description |
|---|---|---|---|---|
profileId |
string |
REQUIRED | "urn:adac:profile:genealogy:v1" |
URN identifying this specific profile and version. |
profileType |
string |
REQUIRED | "genealogy" |
The profile type identifier. MUST be "genealogy". |
profileVersion |
string |
REQUIRED | "1.0.0" for this spec |
Semantic version (MAJOR.MINOR.PATCH). |
title |
string |
OPTIONAL | — | Human-readable title for display. |
schema |
string |
OPTIONAL | — | URI of a JSON Schema document that validates the data subobject. |
data |
GenealogyData |
OPTIONAL | — | The genealogy-specific payload. See Section 6.3. |
6.3 GenealogyData Fields
The data subobject carries the genealogy-specific content:
| Field | Type | Required | Description |
|---|---|---|---|
sourceCitation |
SourceCitation |
OPTIONAL | Archival source information (see Section 7). |
pageLinks |
PageLink[] |
OPTIONAL | Multi-page record links (see Section 8). |
evidence |
EvidenceAnalysis |
OPTIONAL | GPS evidence classification and analysis (see Section 9). |
6.4 Forward Compatibility
Unknown JSON properties at any level (within the wrapper or within data) MUST be preserved during round-trip serialization.
7. Source Citation
The source citation describes where the original record is held, what collection it belongs to, how to locate it on microfilm or page, what jurisdiction and date range it covers, what language(s) it is written in, and how the source is classified under the Genealogical Proof Standard.
7.1 Schema
{
"sourceCitation": {
"recordType": "census",
"sourceClassification": "original",
"repository": "National Archives, Washington, D.C.",
"collection": {
"collection": "T9",
"series": "1870 Federal Census",
"box": null,
"folder": null,
"item": "Roll 1042"
},
"film": {
"roll": "1042",
"frame": "0142",
"fhlFilmNumber": "0553042"
},
"pageNumber": "42",
"folio": null,
"entryNumber": "household 42",
"url": "https://www.familysearch.org/ark:/61903/3:1:S3HY-X9BS-F6R",
"jurisdiction": {
"country": "United States",
"state": "Ohio",
"county": "Licking",
"town": "Newark",
"historicalContext": "Licking County formed 1808 from Fairfield County."
},
"dateRangeStart": "1870-06-01",
"dateRangeEnd": "1870-08-31",
"languages": ["en"]
}
}
7.2 Source Citation Fields
| Field | Type | Required | Description |
|---|---|---|---|
recordType |
string |
OPTIONAL | The genealogical record type. See Section 15.1 for well-known values. |
sourceClassification |
string |
OPTIONAL | GPS source classification: "original" (created at the time of the event) or "derivative" (a later copy, transcript, or compilation). See Section 15.2. |
repository |
string |
OPTIONAL | The archival repository or holding institution. |
collection |
CollectionHierarchy |
OPTIONAL | Collection / series / box / folder / item hierarchy (see Section 7.3). |
film |
FilmReference |
OPTIONAL | Microfilm or FHL film reference (see Section 7.4). |
pageNumber |
string |
OPTIONAL | Page number as printed or stamped on the source document. |
folio |
string |
OPTIONAL | Folio number for early registers and bound volumes. |
entryNumber |
string |
OPTIONAL | Entry, household, or item number within the page (e.g., "household 42", "entry 17"). |
url |
string |
OPTIONAL | URL to an online source (FamilySearch, Ancestry, FindMyPast, etc.). |
jurisdiction |
Jurisdiction |
OPTIONAL | Geographic jurisdiction the record covers (see Section 7.5). |
dateRangeStart |
string |
OPTIONAL | Start of the date range covered by the source (ISO-8601 date). |
dateRangeEnd |
string |
OPTIONAL | End of the date range covered by the source (ISO-8601 date). |
languages |
string[] |
OPTIONAL | Language(s) of the document. IETF BCP 47 tags RECOMMENDED (e.g., "en", "de", "la"). |
7.3 Collection Hierarchy
Describes the archival collection hierarchy: collection → series → box → folder → item. All fields are OPTIONAL; populate only the levels applicable to the record.
{
"collection": "T9",
"series": "1870 Federal Census",
"box": null,
"folder": null,
"item": "Roll 1042"
}
7.4 Film Reference
Describes microfilm, roll, and FHL (Family History Library) film references. All fields are OPTIONAL.
{
"roll": "1042",
"frame": "0142",
"fhlFilmNumber": "0553042"
}
7.5 Jurisdiction
Describes the geographic jurisdiction the record covers, from broadest to most specific. The optional historicalContext field captures notes about the jurisdiction as it existed at the time the record was created. All fields are OPTIONAL.
{
"country": "United States",
"state": "Ohio",
"county": "Licking",
"town": "Newark",
"historicalContext": "Licking County formed 1808 from Fairfield County."
}
| Field | Type | Description |
|---|---|---|
country |
string |
The country. |
state |
string |
The state, province, or equivalent administrative division. |
county |
string |
The county, parish, or equivalent subdivision. |
town |
string |
The town, city, or municipality. |
historicalContext |
string |
Free-text notes about the jurisdiction as it existed at the time of the record (boundary changes, parent jurisdictions, name changes). |
8. Multi-Page Record Links
Page links tie multiple master files within a container into a single logical genealogical record. This is common when a census enumeration, church register entry, or probate document spans multiple pages.
8.1 Relationship to ADAC structure.json
ADAC 1.0 defines a generic mechanism (metadata/structure.json) for expressing structural relationships between masters such as paged documents. ADAC-Genealogy pageLinks are complementary — they add genealogy-specific semantics (the concept of a record group, such as a single household within a multi-household census page) on top of the generic page-ordering relationships in structure.json. A container MAY use both mechanisms.
8.2 Schema
{
"pageLinks": [
{
"recordGroupId": "household-42",
"pageSequence": 1,
"masterId": "master-001",
"description": "Census sheet A — household 42 begins"
},
{
"recordGroupId": "household-42",
"pageSequence": 2,
"masterId": "master-002",
"description": "Census sheet B — continuation"
}
]
}
8.3 Fields
| Field | Type | Required | Description |
|---|---|---|---|
recordGroupId |
string |
REQUIRED | Groups pages of the same logical record. All masters belonging to the same record MUST share this value. MUST be non-empty. |
pageSequence |
integer |
REQUIRED | 1-based reading order within the record group. MUST start at 1 with consecutive integers. |
masterId |
string |
REQUIRED | The master identifier within this container. MUST match a master id in the manifest. |
description |
string |
OPTIONAL | Describes this page's role in the record. |
9. Evidence Analysis
The evidence analysis section supports the Genealogical Proof Standard (GPS) by providing structured fields for evidence classification, source correlation, and documented conclusions. The evidence analysis at the profile level captures the overall conclusion drawn from the entire source. Per-claim or per-person evidence classification is captured at the region level via genealogy:person (see Section 11.4).
9.1 Schema
{
"evidence": {
"claim": "John Smith born in Ohio circa 1828",
"classification": "direct",
"informationClassification": "primary",
"correlationNotes": [
{
"sourceDescription": "1860 U.S. Federal Census, Licking County, Ohio",
"containerId": "550e8400-e29b-41d4-a716-446655440099",
"note": "Same household head listed 10 years earlier confirms continuity of residence."
}
],
"conclusion": "John Smith, age 42, farmer, born Ohio circa 1828.",
"analysisText": "Direct evidence from the 1870 census enumeration lists John Smith as head of household, age 42, farmer, born in Ohio. Corroborated by the 1860 census showing the same individual at age 32 in the same township.",
"analyst": "Jane Researcher",
"analyzedOn": "2026-02-01T14:00:00Z"
}
}
9.2 Evidence Analysis Fields
| Field | Type | Required | Description |
|---|---|---|---|
claim |
string |
OPTIONAL | The specific genealogical claim this analysis addresses. RECOMMENDED to make classification meaningful. |
classification |
string |
OPTIONAL | The evidence classification (direct/indirect/negative). See Section 15.3. |
informationClassification |
string |
OPTIONAL | Whether the information within the source is "primary" or "secondary". See Section 15.4. |
correlationNotes |
CorrelationNote[] |
OPTIONAL | Notes correlating this source with other evidence. |
conclusion |
string |
OPTIONAL | The researcher's conclusion drawn from this source. |
analysisText |
string |
OPTIONAL | The full analysis text explaining the reasoning. |
analyst |
string |
OPTIONAL | The researcher who performed the evaluation. |
analyzedOn |
string |
OPTIONAL | ISO-8601 timestamp of when the analysis was performed. |
9.3 Correlation Note
{
"sourceDescription": "1860 U.S. Federal Census, Licking County, Ohio",
"containerId": "550e8400-e29b-41d4-a716-446655440099",
"note": "Same household head listed 10 years earlier confirms continuity."
}
| Field | Type | Required | Description |
|---|---|---|---|
sourceDescription |
string |
REQUIRED | A human-readable description of the correlated source. |
containerId |
string |
OPTIONAL | The ADAC container id (UUID from the manifest's id field) for the correlated source. When present, MUST be a valid UUID (RFC 4122) matching the manifest id of the referenced container. UUIDs are required so that cross-container references remain reliable across renames and repository transfers. |
note |
string |
REQUIRED | Text explaining how the two sources relate. |
10. Region Linked Entities
ADAC-Genealogy stores per-region genealogical data in the ADAC region linkedEntities dictionary — a JSON object on each region where keys are namespaced strings and values are arbitrary JSON objects.
10.1 Linked Entity Keys
| Key | Description |
|---|---|
genealogy:person |
Person identification and vital data (see Section 11). |
genealogy:transcription |
OCR/handwriting transcription, with optional revision history (see Section 12). |
genealogy:condition |
Legibility and damage assessment (see Section 13). |
10.2 Round-Trip Safety
Non-genealogy consumers that read a container and write it back MUST preserve all linked entity data unchanged.
10.3 Multiple Entities per Region
A single region MAY have all three genealogy linked entities simultaneously. Genealogy linked entities also coexist with linked entities from other profiles (e.g., legal:exhibit) without conflict.
11. Person Annotation
Linked Entity Key: genealogy:person
Person annotations link a bounding-box region on a scanned document to a specific person and their associated vital data as recorded in the source.
11.1 Schema
{
"givenName": "John",
"surname": "Smith",
"maidenName": null,
"sexAsRecorded": "M",
"raceAsRecorded": "W",
"birthDate": "1828",
"deathDate": null,
"marriageDate": null,
"age": "42",
"occupation": "Farmer",
"birthplace": "Ohio",
"relationshipToHead": "Self",
"isLiving": false,
"evidenceClassification": "direct",
"informationClassification": "primary",
"gedcom7Id": "@I123@",
"gedcomXref": "@I123@",
"externalId": "FSFT-ABC-1234"
}
11.2 Fields
| Field | Type | Required | Description |
|---|---|---|---|
givenName |
string |
OPTIONAL | Given (first) name as recorded. |
surname |
string |
OPTIONAL | Family name as recorded. |
maidenName |
string |
OPTIONAL | Maiden name, if applicable and recorded. |
sexAsRecorded |
string |
OPTIONAL | Sex as recorded in the source document (e.g., "M", "F", "male", "female"). This field captures the historical record verbatim and is NOT a statement of modern gender identity. |
raceAsRecorded |
string |
OPTIONAL | Race or ethnicity as recorded in the source document (e.g., "W", "B", "Mu", "Indian", free text). This field captures the historical categorization used by the original document, including outdated or offensive terminology. It is preserved for source fidelity and is NOT an endorsement of those categories. Applications displaying this field SHOULD provide context indicating that this reflects historical record-keeping, not modern classification. |
birthDate |
string |
OPTIONAL | Birth date as recorded. Free-text to accommodate partial dates (e.g., "1828", "circa 1828", "15 Mar 1828", "12/23 Feb 1731/2" for dual-calendar dates). |
deathDate |
string |
OPTIONAL | Death date as recorded. |
marriageDate |
string |
OPTIONAL | Marriage date as recorded. |
age |
string |
OPTIONAL | Age at the time of the record. String to accommodate ranges and notations (e.g., "42", "about 40", "6/12" for 6 months, "under 5"). |
occupation |
string |
OPTIONAL | Occupation at the time of the record. |
birthplace |
string |
OPTIONAL | Birthplace as recorded. |
relationshipToHead |
string |
OPTIONAL | Relationship to the head of household (census records). |
isLiving |
boolean |
OPTIONAL | Whether this person is, or may reasonably be presumed to be, alive. When true, see Section 14 for required handling. Default if absent: false for records older than 100 years; otherwise undefined. |
evidenceClassification |
string |
OPTIONAL | The evidence classification specifically for this person's identification within this source. See Section 15.3. |
informationClassification |
string |
OPTIONAL | Whether the information about this person is "primary" or "secondary". See Section 15.4. |
gedcom7Id |
string |
OPTIONAL | GEDCOM 7 record identifier. New implementations SHOULD prefer this field. |
gedcomXref |
string |
OPTIONAL | GEDCOM 5.5.1 XREF identifier. Retained for backward compatibility with legacy genealogy databases. |
externalId |
string |
OPTIONAL | External system identifier (e.g., FamilySearch PID, Ancestry tree person ID). |
11.3 Design Rationale — String Dates
Date fields use string rather than structured date types. Genealogical records routinely contain approximate ("circa 1828"), partial ("Mar 1828"), dual-calendar ("12/23 Feb 1731/2"), or descriptive ("about age 40") dates. Structured date types would lose this information.
11.4 Per-Person Evidence Classification
The GPS distinguishes evidence at the level of individual claims, not entire sources. A single census page may provide direct evidence for one person's age but only indirect evidence for another's place of birth. ADAC-Genealogy therefore supports evidence classification at two levels:
- Source-level classification (in
evidence.classification, Section 9): the overall character of the source for the primary claim under analysis. - Person-level classification (in
genealogy:person.evidenceClassification): the specific classification for each person's identification within the source.
11.5 Source Fidelity for Demographic Fields
The sexAsRecorded and raceAsRecorded fields exist to faithfully preserve the source record. Historical documents used categories that are now considered inaccurate, offensive, or scientifically unfounded. ADAC-Genealogy does not sanitize or modernize these terms because doing so would falsify the historical record. Applications that display these fields are responsible for providing appropriate context for end users. If modern interpretations are needed, store them in separate fields using custom linked entities, not by overwriting the as-recorded values.
12. Transcription
Linked Entity Key: genealogy:transcription
Transcriptions capture the text read from a specific region, whether performed manually by a researcher or automatically by OCR/AI handwriting recognition. Transcriptions support optional revision history so successive corrections are preserved.
12.1 Schema
{
"text": "Smith, John 42 M W Farmer 2000 Ohio",
"confidence": 0.95,
"transcriber": "GeneaScan AI v2.0",
"transcribedOn": "2026-01-15T11:00:00Z",
"originalLanguage": "en",
"translatedText": null,
"translatedLanguage": null,
"revisions": [
{
"text": "Smith, John 42 M W Farmer ?000 Ohio",
"confidence": 0.78,
"transcriber": "GeneaScan AI v1.0",
"transcribedOn": "2025-08-10T09:30:00Z",
"supersededBy": "2026-01-15T11:00:00Z",
"supersedeReason": "Re-transcribed with improved AI model."
}
]
}
12.2 Fields
| Field | Type | Required | Description |
|---|---|---|---|
text |
string |
REQUIRED | The current (most recent) transcribed text from the region. |
confidence |
number |
OPTIONAL | AI confidence score (0.0–1.0). Omit (or null) for manual transcription. |
transcriber |
string |
OPTIONAL | The person or system that produced the current transcription. |
transcribedOn |
string |
OPTIONAL | ISO-8601 timestamp of when the current transcription was performed. |
originalLanguage |
string |
OPTIONAL | Language of the original text (IETF BCP 47 tag). |
translatedText |
string |
OPTIONAL | Translated text, if the original is in a different language. |
translatedLanguage |
string |
OPTIONAL | Language of the translation (IETF BCP 47 tag). |
revisions |
TranscriptionRevision[] |
OPTIONAL | Ordered list of prior transcription versions, oldest first. See Section 12.3. |
12.3 Transcription Revisions
When a transcription is corrected or re-performed, the prior version SHOULD be preserved in the revisions array.
| Field | Type | Required | Description |
|---|---|---|---|
text |
string |
REQUIRED | The prior transcription text. |
confidence |
number |
OPTIONAL | The prior confidence score, if applicable. |
transcriber |
string |
OPTIONAL | The person or system that produced the prior transcription. |
transcribedOn |
string |
OPTIONAL | ISO-8601 timestamp of when the prior transcription was performed. |
supersededBy |
string |
OPTIONAL | ISO-8601 timestamp when this revision was superseded. |
supersedeReason |
string |
OPTIONAL | Free-text reason for the supersession. |
13. Record Condition
Linked Entity Key: genealogy:condition
Record condition assessments document the physical state and legibility of a specific region. This metadata supports GPS compliance — documenting that a record was partially illegible strengthens the evidentiary chain when explaining why certain facts could not be confirmed.
13.1 Schema
{
"legibility": "partial",
"damageTypes": ["faded", "waterDamage"],
"notes": "Bottom-right corner water-stained, last two digits of year unreadable."
}
13.2 Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
legibility |
string |
OPTIONAL | "clear" |
Legibility assessment. See Section 15.5. |
damageTypes |
string[] |
OPTIONAL | null |
List of observed damage types. See Section 15.6. |
notes |
string |
OPTIONAL | null |
Free-text condition notes. |
14. Privacy and Living Persons
Genealogical research routinely encounters records containing information about people who may still be alive. Such records may be subject to data protection laws (GDPR, CCPA, state-level statutes) or ethical considerations independent of legal requirements.
14.1 The isLiving Flag
The isLiving field on genealogy:person indicates whether the person is, or may reasonably be presumed to be, alive. When true, the consuming application SHOULD apply additional handling consistent with applicable privacy law and institutional policy. For records older than 100 years, all named individuals can typically be presumed deceased and isLiving defaults to false. For more recent records, isLiving SHOULD be set explicitly.
14.2 Recommended Container Patterns for Living-Person Records
| Scenario | Recommended Pattern |
|---|---|
| Research-only, controlled environment | Set isLiving: true on relevant person annotations. No additional encryption required if access is controlled at the storage layer. |
| Container shared outside controlled environment | Apply accessControl (ADAC core Section 12) at the container, master, or derivative level with confidentialityLevel: "restricted" and an embargoUntil date if appropriate. |
| Container containing PII subject to GDPR/CCPA | Encrypt master files using ADAC's EncryptionDescriptor mechanism (ADAC core Section 20) with AES-256-GCM and KMS-managed keys. |
| Container intended for public release | Generate redacted derivatives masking living-person data; keep originals encrypted; reference both in the manifest. |
14.3 Right to Erasure
GDPR Article 17 recognizes a right to erasure. ADAC's master immutability principle is in fundamental tension with this right. Implementations that need to support right-to-erasure requests SHOULD: (1) remove the affected container from active distribution; (2) generate new derivatives with the affected data redacted; (3) record the erasure request and response as redaction events in the provenance log; and (4) document the original master's continued existence and access controls in institutional records external to the container. Compliance is the responsibility of the institution holding the container.
15. Well-Known Value Sets
ADAC-Genealogy defines controlled vocabularies for several fields. Implementations SHOULD use these well-known values when applicable but MAY use custom values for domain-specific needs. All values are lowercase strings.
15.1 Record Types
Used in sourceCitation.recordType.
| Value | Description |
|---|---|
"birth" |
Birth record or certificate. |
"death" |
Death record or certificate. |
"marriage" |
Marriage record, license, or certificate. |
"census" |
Census enumeration. |
"immigration" |
Immigration, naturalization, or passenger list. |
"military" |
Military service, draft, or pension record. |
"church" |
Church record (baptism, burial, confirmation, etc.). |
"probate" |
Probate, will, or estate record. |
"land" |
Land, property, or deed record. |
"tax" |
Tax record or assessment. |
"newspaper" |
Newspaper article, obituary, or notice. |
"directory" |
City directory, phone book, or business directory. |
"slaveSchedule" |
U.S. slave schedule (1850, 1860). |
15.2 Source Classifications
Used in sourceCitation.sourceClassification.
| Value | Description |
|---|---|
"original" |
The source was created at the time of the event being researched. |
"derivative" |
The source is a later copy, transcript, abstract, index, or compilation. |
15.3 Evidence Classifications
Used in evidence.classification and genealogy:person.evidenceClassification.
| Value | Description |
|---|---|
"direct" |
The source explicitly states the fact being researched. |
"indirect" |
The source requires inference or combination with other sources to establish the fact. |
"negative" |
The absence of expected information in the source is itself meaningful evidence. |
15.4 Information Classifications
Used in evidence.informationClassification and genealogy:person.informationClassification.
| Value | Description |
|---|---|
"primary" |
The information was recorded by an eyewitness or participant in the event. |
"secondary" |
The information was recorded by someone with second-hand knowledge. |
"undetermined" |
It is not clear whether the informant had direct knowledge. |
15.5 Legibility Values
Used in record condition legibility.
| Value | Description |
|---|---|
"clear" |
Fully readable without difficulty. |
"partial" |
Partially readable with some effort required. |
"poor" |
Mostly unreadable but some text is discernible. |
"illegible" |
Completely unreadable. |
15.6 Damage Types
Used in record condition damageTypes.
| Value | Description |
|---|---|
"torn" |
Physical tear in the document. |
"faded" |
Ink or print has faded. |
"waterDamage" |
Water damage causing staining or warping. |
"fireDamage" |
Fire or heat damage. |
"foxing" |
Brown spots from oxidation. |
"mold" |
Mold or mildew damage. |
"insectDamage" |
Insect damage (bookworm holes, etc.). |
"bleedThrough" |
Ink from the reverse side bleeding through. |
"binding" |
Text obscured by binding edge or gutter. |
16. JSON Conventions
All JSON within this profile follows the ADAC 1.0 conventions:
| Convention | Requirement |
|---|---|
| Property naming | camelCase |
| Formatting | Indented (human-readable) |
| Null handling | Null-valued properties SHOULD be omitted |
| Encoding | UTF-8 without BOM |
| Unknown properties | MUST be preserved during round-trip serialization |
| Date/time format | ISO-8601 (except free-text genealogical date fields, which preserve the source) |
| UUID format | RFC 4122, lowercase hexadecimal |
17. Media Types & File Extensions
| Format | Extension | MIME Type |
|---|---|---|
| ADAC-Genealogy Container | .adac |
application/vnd.adac.container |
All ADAC containers — regardless of which domain profiles they include — use the .adac file extension. The profile type is determined by reading the container's metadata, not by the file extension.
18. Interoperability
18.1 GEDCOM Integration
The gedcom7Id field on person annotations links person regions to records in a GEDCOM 7 file (the current standard, released by FamilySearch in 2021). The legacy gedcomXref field provides backward compatibility with GEDCOM 5.5.1 databases.
18.2 FamilySearch Integration
The fhlFilmNumber field in film references and the externalId field on person annotations support integration with FamilySearch systems — FHL film catalogs, FamilySearch Family Tree PIDs, and Ark identifiers.
18.3 Profile Coexistence
ADAC-Genealogy containers MAY include additional profiles. A probate document could carry both a genealogy profile (source citation, person annotations, transcriptions) and a legal profile (case reference, custody chain, confidentiality level). The profiles coexist without conflict.
18.4 Cross-Container Evidence Networks
The containerId field in correlation notes enables researchers to build evidence networks across multiple containers. Because containerId is required to be a valid UUID matching a manifest id, these references remain reliable even when containers are renamed or moved between repositories.
18.5 Future DNA Profile
Genetic genealogy and DNA evidence are out of scope for ADAC-Genealogy 1.0. A future companion specification (such as ADAC-DNA) may define structures for storing DNA test results, match data, and centimorgan analyses. Until such a specification exists, implementations needing to attach DNA-related metadata SHOULD use custom linked entities under a reverse-domain namespace (e.g., com.example.dna:match).
19. Complete Container Example
19.1 Container Structure
1870-census-licking-oh-042.adac
├── manifest.json
├── master/
│ ├── master_0001.tif (Census sheet A — 600 DPI TIFF)
│ └── master_0002.tif (Census sheet B — continuation)
├── metadata/
│ ├── core.json
│ ├── structure.json
│ └── profiles/
│ └── genealogy.json
├── derivatives/
│ └── deriv_0001.jpg (Web preview of sheet A)
├── regions/
│ ├── master-001.regions.json
│ └── master-002.regions.json
└── provenance/
├── log.json
└── checksums.json
19.2 Genealogy Profile (metadata/profiles/genealogy.json)
{
"profileId": "urn:adac:profile:genealogy:v1",
"profileType": "genealogy",
"profileVersion": "1.0.0",
"title": "ADAC Genealogy Profile",
"data": {
"sourceCitation": {
"recordType": "census",
"sourceClassification": "original",
"repository": "National Archives, Washington, D.C.",
"collection": {
"collection": "T9",
"series": "1870 Federal Census",
"item": "Roll 1042"
},
"film": {
"roll": "1042",
"frame": "0142",
"fhlFilmNumber": "0553042"
},
"pageNumber": "42",
"entryNumber": "household 42",
"url": "https://www.familysearch.org/ark:/61903/3:1:S3HY-X9BS-F6R",
"jurisdiction": {
"country": "United States",
"state": "Ohio",
"county": "Licking",
"town": "Newark",
"historicalContext": "Licking County formed 1808 from Fairfield County."
},
"dateRangeStart": "1870-06-01",
"dateRangeEnd": "1870-08-31",
"languages": ["en"]
},
"pageLinks": [
{
"recordGroupId": "household-42",
"pageSequence": 1,
"masterId": "master-001",
"description": "Census sheet A — household 42 begins"
},
{
"recordGroupId": "household-42",
"pageSequence": 2,
"masterId": "master-002",
"description": "Census sheet B — household 42 continuation"
}
],
"evidence": {
"claim": "John Smith born in Ohio circa 1828",
"classification": "direct",
"informationClassification": "primary",
"correlationNotes": [
{
"sourceDescription": "1860 U.S. Federal Census, Licking County, Ohio",
"containerId": "550e8400-e29b-41d4-a716-446655440099",
"note": "Same household head listed 10 years earlier confirms continuity of residence."
}
],
"conclusion": "John Smith, age 42, farmer, born Ohio circa 1828.",
"analysisText": "Direct evidence from the 1870 census enumeration lists John Smith as head of household, age 42, farmer, born in Ohio. Corroborated by the 1860 census showing the same individual at age 32 in the same township.",
"analyst": "Jane Researcher",
"analyzedOn": "2026-02-01T14:00:00Z"
}
}
}
19.3 Region Annotations (regions/master-001.regions.json)
{
"mediaId": "master-001",
"coordinateSystem": "pixel",
"width": 4800,
"height": 6400,
"regions": [
{
"id": "region-001",
"type": "boundingBox",
"label": "John Smith — Head of household",
"bounds": {
"x": 100.0, "y": 200.0,
"width": 4600.0, "height": 80.0
},
"linkedEntities": {
"genealogy:person": {
"givenName": "John",
"surname": "Smith",
"sexAsRecorded": "M",
"raceAsRecorded": "W",
"birthDate": "1828",
"age": "42",
"occupation": "Farmer",
"birthplace": "Ohio",
"relationshipToHead": "Self",
"isLiving": false,
"evidenceClassification": "direct",
"informationClassification": "primary",
"gedcom7Id": "@I123@"
},
"genealogy:transcription": {
"text": "Smith, John 42 M W Farmer 2000 Ohio",
"confidence": 0.95,
"transcriber": "GeneaScan AI v2.0",
"transcribedOn": "2026-01-15T11:00:00Z",
"originalLanguage": "en"
},
"genealogy:condition": {
"legibility": "clear"
}
}
},
{
"id": "region-002",
"type": "boundingBox",
"label": "Mary Smith — Wife",
"bounds": {
"x": 100.0, "y": 280.0,
"width": 4600.0, "height": 80.0
},
"linkedEntities": {
"genealogy:person": {
"givenName": "Mary",
"surname": "Smith",
"maidenName": "Jones",
"sexAsRecorded": "F",
"raceAsRecorded": "W",
"birthDate": "1832",
"age": "38",
"occupation": "Keeping house",
"birthplace": "Virginia",
"relationshipToHead": "Wife",
"isLiving": false,
"evidenceClassification": "direct",
"informationClassification": "secondary"
},
"genealogy:transcription": {
"text": "Smith, Mary 38 F W Keeping house Virginia",
"confidence": 0.88,
"transcriber": "GeneaScan AI v2.0",
"transcribedOn": "2026-01-15T11:00:00Z",
"originalLanguage": "en"
},
"genealogy:condition": {
"legibility": "partial",
"damageTypes": ["faded"],
"notes": "Maiden name partially faded; confirmed by marriage record cross-reference."
}
}
}
]
}
20. Validation
ADAC-Genealogy containers are validated by the standard ADAC validator, which verifies the manifest references the genealogy profile correctly (ADAC-050 error if the referenced profile file is missing), all region annotation files exist (ADAC-023 error if missing), and SHA-256 checksums for all files including the genealogy profile (ADAC-082 on mismatch).
20.1 Profile-Specific Validation Rules
In addition to standard ADAC validation, validators MAY enforce the following ADAC-Genealogy-specific rules. These rules SHOULD be implemented as warnings rather than errors so that legitimate edge cases are not rejected.
| Rule | Severity | Description |
|---|---|---|
| GENL-001 | Error | The profile file's profileType is not "genealogy". |
| GENL-002 | Error | The profile file's profileId is not "urn:adac:profile:genealogy:v1". |
| GENL-010 | Warning | A pageLink has an empty or missing recordGroupId. |
| GENL-011 | Warning | A pageLink has a pageSequence value that is not a positive integer. |
| GENL-012 | Warning | A pageLink.masterId does not match any master entry in the manifest. |
| GENL-013 | Warning | A record group has non-contiguous or non-1-based pageSequence values. |
| GENL-020 | Warning | A genealogy:transcription.confidence value is outside the range 0.0–1.0. |
| GENL-021 | Warning | A genealogy:person entity has none of givenName, surname, or relationshipToHead set. |
| GENL-022 | Warning | A genealogy:person.evidenceClassification value is not in the well-known set (direct, indirect, negative). |
| GENL-023 | Warning | A genealogy:person.informationClassification value is not in the well-known set (primary, secondary, undetermined). |
| GENL-030 | Warning | A correlationNote.containerId is present but is not a valid UUID. |
| GENL-040 | Warning | A genealogy:person entity has isLiving: true but the container has no accessControl metadata and no encryption descriptor on the master file. |
| GENL-050 | Info | The sourceCitation.recordType value is not in the well-known set. (Custom values are permitted.) |
21. References
21.1 Normative References
| Reference | Description |
|---|---|
| ADAC 1.0 Format Specification | The base container format this profile extends. |
| RFC 2119 | Key words for use in RFCs to Indicate Requirement Levels. |
| RFC 4122 | UUID URN Namespace. Required format for containerId values. |
| ISO 8601 | Date and time representations. Used for all timestamp fields. |
| IETF BCP 47 | Tags for Identifying Languages. Used for language fields. |
21.2 Informative References
| Reference | Description |
|---|---|
| Genealogical Proof Standard | Board for Certification of Genealogists — the five-element framework for genealogical proof. |
| Evidence Explained | Elizabeth Shown Mills, Evidence Explained: Citing History Sources from Artifacts to Cyberspace. The standard reference for genealogical citation. |
| GEDCOM 7 | The current standard format for genealogical data interchange (FamilySearch, 2021). ADAC-Genealogy supports GEDCOM 7 cross-references via gedcom7Id. |
| GEDCOM 5.5.1 | The legacy genealogical data interchange format. ADAC-Genealogy supports GEDCOM 5.5.1 XREF cross-references via gedcomXref for backward compatibility. |
| Dublin Core Metadata Element Set | Vocabulary for describing resources. ADAC core metadata aligns with Dublin Core. |
| GDPR Article 17 | Right to erasure. Relevant to handling living-person data. |
| ADAC-Legal 1.0 Profile Specification | The legal profile extension for ADAC. Companion profile that can coexist with the genealogy profile. |
| ADAC-Preservation 1.0 Profile Specification | The Preservation profile extension for ADAC. Companion profile for institutional archival management. |
About the Editor
ADAC is edited and maintained by John Vaden, a genealogist and technical workflow contributor with decades of experience in genealogical research and in shaping data practices and process standards across analyst and software development teams. His work on ADAC emphasizes clarity, interoperability, and practical implementation for genealogists, developers, and archival practitioners. InnoVadens, LLC serves as the legal steward of the ADAC Standard.
Document History
- v1.0 — Initial release by Editor (John Vaden); AI-assisted drafting and refinement