Break out h1+ blocks in file as additional nodes on the graph view

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

image

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.

7 Likes

20 posts were merged into an existing topic: Filter to display headings in graph view