> [!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