Relationship Tools - banisterious/obsidian-charted-roots GitHub Wiki
Relationship Tools
This page covers tools for analyzing and organizing family relationships: the relationship calculator, reference numbering systems, lineage tracking, and relationship history.
Table of Contents
Relationship Calculator
Calculate the genealogical relationship between any two people in your family tree using proper genealogical terminology.
How It Works
The Relationship Calculator uses BFS (breadth-first search) pathfinding to find the shortest connection path between two people, then translates that path into standard genealogical relationship terms.
Accessing the Calculator
Method 1: Command Palette
- Press
Ctrl/Cmd + P - Type "Charted Roots: Calculate relationship between people"
- Select the first person
- Select the second person
- View the result
Method 2: Context Menu
- Right-click on a person note
- Select Calculate relationship
- Select the second person to compare
- View the result
Understanding Results
Direct Relationships:
- Parent, child, grandparent, great-grandparent, etc.
- Sibling, half-sibling
- Uncle/aunt, nephew/niece, great-uncle/great-aunt
Collateral Relationships (Cousins):
- 1st cousin, 2nd cousin, 3rd cousin, etc.
- Removals: "1st cousin once removed", "2nd cousin twice removed"
- Common ancestor identification
In-Law Relationships:
- Parent-in-law, child-in-law
- Sibling-in-law
- Other in-law connections
Relationship Path
The calculator displays the complete path showing how two people are connected:
John Smith → Mary Smith (spouse) → Robert Jones (father) → Alice Jones
This helps you understand the chain of relationships connecting two individuals.
Finding Multiple Relationships
People can be related in more than one way — especially in endogamous families or when cousins marry. After viewing the primary (shortest) relationship, click Find more relationships to search for additional connections through different common ancestors.
Each additional result shows:
- The relationship description (e.g., "3rd cousin 1x removed")
- The common ancestor through whom the relationship exists (e.g., "via John Smith")
- Whether it's a blood or marriage connection
The search uses a configurable maximum depth (Settings > Advanced > Relationship calculator, default 10 generations). Set to 0 for an exhaustive search with no limit — this may be slow on large vaults.
Copy to Clipboard
Click Copy result to copy the relationship description for use in notes or documentation.
Reference Numbering Systems
Charted Roots supports standard genealogical numbering systems for organizing and referencing individuals in your family tree.
Why Use Reference Numbers?
Reference numbers solve common genealogy challenges:
- Disambiguate common names — When you have multiple "John Smith" entries, reference numbers provide unique identifiers
- Standard citation format — Other genealogists recognize these systems, making it easier to share and publish research
- Cross-reference notes — Link research notes, sources, and documents to specific individuals
- Navigate large trees — Quickly locate someone by their number rather than searching by name
Choosing a System
| System | Best For | Limitations |
|---|---|---|
| Ahnentafel | Pedigree charts, ancestor research | Only works for ancestors, not descendants |
| d'Aboville | Descendant reports, family histories | Numbers get long in deep trees (1.2.3.4.5) |
| Henry | Compact descendant reports | Uses letters after 9 children, can be confusing |
| Generation | Understanding relative positions | Not a citation standard; multiple people share numbers |
Quick guide:
- Researching your ancestors? → Ahnentafel with yourself as root
- Documenting a family line? → d'Aboville with earliest known ancestor as root
- Need compact numbers? → Henry (same use case as d'Aboville)
- Just want to see generational distance? → Generation
Supported Systems
Ahnentafel (Ancestor Numbering)
The Ahnentafel system assigns numbers to ancestors starting from a reference person:
| Number | Person |
|---|---|
| 1 | Self (root person) |
| 2 | Father |
| 3 | Mother |
| 4 | Paternal grandfather |
| 5 | Paternal grandmother |
| 6 | Maternal grandfather |
| 7 | Maternal grandmother |
Pattern: For any person n, their father is 2n and their mother is 2n+1.
d'Aboville (Descendant Numbering with Dots)
Numbers descendants using dot notation showing the lineage path:
| Number | Person |
|---|---|
| 1 | Root ancestor |
| 1.1 | First child |
| 1.2 | Second child |
| 1.1.1 | First child's first child |
| 1.2.3 | Second child's third child |
Each dot represents a generation. The number shows birth order among siblings.
Henry System (Compact Descendant Numbering)
Similar to d'Aboville but without dots for more compact display:
| Number | Person |
|---|---|
| 1 | Root ancestor |
| 11 | First child |
| 12 | Second child |
| 111 | First child's first child |
| 123 | Second child's third child |
For families with more than 9 children, letters are used (A=10, B=11, etc.).
Generation Numbering
Shows generational distance from a reference person:
| Number | Relationship |
|---|---|
| 0 | Root person (self) |
| −1 | Parents |
| −2 | Grandparents |
| +1 | Children |
| +2 | Grandchildren |
Note: Multiple people share the same generation number (all grandparents are −2).
Assigning Reference Numbers
After Import:
When you import GEDCOM, Gramps, or CSV data, you'll be prompted to assign reference numbers. Choose a system and select the root person.
Via Command Palette:
- Press
Ctrl/Cmd + P - Type "Charted Roots: Assign [system] numbers"
- Select the reference/root person
- Numbers are assigned to all related individuals
Via Context Menu:
- Right-click on a person note
- Select Reference numbers submenu
- Choose the numbering system
- Numbers are assigned from that person
Where Numbers Are Stored
Reference numbers are stored in frontmatter properties:
ahnentafel: Ahnentafel numberdaboville: d'Aboville number (e.g., "1.2.3")henry: Henry system number (e.g., "123")generation: Generation depth number
You can have multiple numbering systems assigned simultaneously — they don't conflict.
Clearing Reference Numbers
Via Command Palette:
- Press
Ctrl/Cmd + P - Type "Charted Roots: Clear reference numbers"
- Select which numbering type to clear
- Numbers are removed from all person notes
Using Numbers in Bases
Reference numbers appear in Bases views automatically:
- Sort by Ahnentafel number to see ancestor order
- Filter by generation number to focus on specific generations
- Use d'Aboville/Henry for descendant reports
Lineage Tracking
Track multi-generational lineages from root persons, enabling you to mark people as belonging to specific ancestral lines.
What Is Lineage Tracking?
Lineage tracking lets you mark people as belonging to named ancestral lines (e.g., "Smith Line", "Tudor Dynasty"). This is useful for:
- Tracking descent from notable ancestors
- Organizing multi-family research
- Identifying which lineage(s) a person belongs to
- Filtering views by ancestral line
Lineage Types
Patrilineal (Father's Line): Tracks descendants through male lines only (father → son → grandson).
Matrilineal (Mother's Line): Tracks descendants through female lines only (mother → daughter → granddaughter).
All Descendants: Tracks all descendants regardless of gender (includes everyone descended from the root person).
Assigning Lineages
Via Context Menu:
- Right-click on a person note (usually a notable ancestor)
- Select Assign lineage from this person
- Choose lineage type (Patrilineal, Matrilineal, or All descendants)
- Enter a lineage name (e.g., "Smith Line") - suggested name based on surname
- All qualifying descendants receive the lineage tag
Via Command Palette:
- Press
Ctrl/Cmd + P - Type "Charted Roots: Assign lineage from root person"
- Select the root person
- Choose lineage type and enter name
Multiple Lineage Membership
A person can belong to multiple lineages:
---
lineage:
- "Smith Line"
- "Jones Family"
- "Tudor Dynasty"
---
This occurs when:
- Someone has ancestors from multiple tracked lineages
- You've run lineage assignment multiple times with different root persons
Removing Lineage Tags
Via Command Palette:
- Press
Ctrl/Cmd + P - Type "Charted Roots: Remove lineage tags"
- Select which lineage to remove (or all lineages)
- Tags are removed from all person notes
Using Lineages in Bases
The lineage property appears in Bases views:
- Filter by lineage to see all members of an ancestral line
- Use the "By lineage" view in the included Base template
- Cross-reference lineages to find common ancestry
Relationship History & Undo
Charted Roots tracks all relationship changes, allowing you to review history and undo mistakes.
Enabling History Tracking
History tracking is enabled by default. Configure in Settings → Charted Roots → Data:
- Enable relationship history: Master toggle
- History retention days: How long to keep history (default: 30 days)
Viewing Relationship History
Via Command Palette:
- Press
Ctrl/Cmd + P - Type "Charted Roots: View relationship history"
- Review recent changes
History Modal Shows:
- Chronological list of all relationship changes
- Change type (add parent, add spouse, remove child, etc.)
- Person affected and related person
- Timestamp of each change
- Statistics by change type
Undoing Changes
Undo Most Recent Change:
- Press
Ctrl/Cmd + P - Type "Charted Roots: Undo last relationship change"
- Confirm the undo
Undo Specific Change:
- Open relationship history modal
- Find the change you want to undo
- Click the Undo button next to that entry
- The change is reversed in both person notes
What Gets Tracked
- Adding/removing parent relationships
- Adding/removing spouse relationships
- Adding/removing child relationships
- Changes via Control Center, context menus, Bases, or direct frontmatter edits
Automatic Cleanup
Old history entries are automatically removed based on your retention setting:
- Default: 30 days
- Configure in Settings → Charted Roots → Data
- Set to 0 for unlimited retention (not recommended for large trees)