Using Obsidian nodes broken down by the hX headers as individual nodes.
Consider a pair of notes, each with several sections which can be independently targeted by links.
Currently, back and forth links are indiscriminate, no matter the presence of headings which act as logical blocks.
graph TD
NodeA[Node A]-->NodeB[Node B]
NodeB-->NodeA
With the new structure, cross-links of meaningful value can be surfaced between sections of references.
graph LR
nodeAp([Node A])
nodeBp([Node B])
nodeA1(Node A h1-1)
subgraph nodeA[Node A]
nodeAp -- h1 --> nodeA1
nodeAp -- h1 --> nodeA2(Node A h1-2)
nodeAp -- h1 --> nodeA3(Node A h1-3)
nodeA1 -- h2 --> nodeA11[Node A h1 h2-1]
nodeA1 -- h2 --> nodeA12[Node A h1 h2-2]
nodeA1 -- h2 --> nodeA13[Node A h1 h2-3]
end
subgraph nodeB[Node B]
nodeB1(Node B h1-1)
nodeBp-- h1 --> nodeB1
nodeBp-- h1 --> nodeB2(Node B h1-2)
end
nodeB2-->nodeA3
nodeA3-->nodeA2
nodeBp-->nodeA2
nodeA13-->nodeBp
(The subgraph for nodes is just a convenient abstraction here; in intended practice all nodes in the graph are treated identically, just as any other linked node.)
Relationships between addressable entities become more link-rich and specific, without increasing the number of files in the system. In a real sense, we don’t actually care about the file architecture. We care about the logical breaks between ideas which are somewhat orthogonal
Since Obsidian is intentionally bound to flat-file systems and for technical reasons block-level addressing is challenging, this may be a mid-term hybrid solution which is “good enough” for even long-term use. Practically, it only changes the graph rendering process and nothing in actual creation or editing of notes; those changes are already integrated.