> [!tldr] a few options to explore
This is an idea I've wanted since I first learned about obsidian.
Here are a few approaches, from Obsidian-native to very much bolted on.
## Property-Based
The most obsidian-native option would be to utilize [[Frontmatter]] properties or [[Dataview Plug-in]] in-line properties:
```markdown
Bart.md
---
dad: Homer Simpson
sister: Marge Simpson
---
Also has [mother::Marge]
```
This is the most lightweight approach. It works well with [[Obsidian Bases]] (and/or [[Dataview Plug-in]] if you're using inline properties).
This is how people do it right now. It works, but leaves some things to be desired.
| Pros | Cons |
| ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Extremely lightweight<br>- Obsidian native approach<br>- Intuitive <br>- Works well on note-by-note basis | - No good querying<br>- No good visualizations<br>- No good [[Ontology]] hooks<br>- Inline requires a plugin<br>- [[Frontmatter]] isn't inline<br>- No edge properties |
My [[Semantic Canvas]] add in was me trying to make this happen.
There's also the confusingly named [Breadcrumbs](obsidian://show-plugin?id=breadcrumbs) plugin that has developed this idea further.
## [[Reify|Edge Notes]]
The other approach that comes to mind is to "promote" the relationship between two notes into its own note.
This edge note can carry it's own properties (so this becomes a [[Property Graph]]).
But the ergonomics for doing this and traversing these edges don't work well specifically within [[Obsidian]]. I've made *some* progress on making this neater by embedding the edge note into both notes it links. This can work, I think.
| Pros | Cons |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| - Works within Obsidian's system<br>- Keeps notes small & modular<br>- Can see edge from both sides<br>- Can have an ontology<br>- Can have edge properties | - Not easy to create<br>- Not using Obsidian the way it expects |
This approach looks like this:
```markdown
Bart.md
---
---
Is the oldest child of the Simpsons.
![[Homer is father of Bart]]
```
```markdown
Homer.md
---
---
Is the patriarch of the Simpsons.
![[Homer is father of Bart]]
```
```markdown
Homer is father of Bart.md
---
from: [[homer]]
to: [[bart]]
---
This is the edge note connecting them. Can carry its own properties. This text would be embedded in both notes.
```
> [!caution] The edge note name will not update as the node names update
> Nor can it contain the wikilinks itself
It could be made easier with a custom plugin, though.[^1]
****
# More
## Source
- self
[^1]: ...developing the itch