Open dleeftink opened 2 years ago
Hey @dleeftink, I appreciate the effort you've put into this FR!
One big issue that comes up, is that syntaxes 1
, 3
, and 4
that you propose at the bottom all require parsing the full content of every note in the vault. That's alot of computation to do, and no other feature requires that, so I can't even hook it into that.
The cost of so much parsing makes me also certain that I won't do it that way.
The other syntax you propose comes with other issues where Obsidian will start looking for a note [[dot.notated.sequence]]
, when that's not what it means. I don't want to get into the game of monkey-patching Obsidian's link parsing, so that one is also unlikely...
I am certainly open to something like this, but it can't be super costly, and I don't want to override Obsidian code, either. I hope you understand. I'll keep this issue open in case you or someone else has other suggestions
Hi @SkepticMystic, thanks for reviewing this proposal. Essentially I am thinking of accessing/referencing notes akin to standard JSON. I was afraid this would be quite heavy processing-wise, and I've thought up two possible solutions:
Bottom-up dendrons as YAML/Dataview fields
BC-branch: news.sports
). The entries might be a list of dot.separated.sequences
to add the current note to one or multiple hierarchies. Ghost folder of Dendron notes
dot.separated.branch.md
to a folder called myHierarchy
). fieldHockeyGameResults.md
, a 'branch note' called news.sports.fieldHockey.md
or news.sports.field_hockey.md
might automatically be generated and added to the Breadcrumbs hierarchy. A combination of the above might also work! Let me know what you think.
Currently, hierarchies can be deduced from note names as follows:
This requires notes to be arranged into hierachies up front/top-down. I would like to propose Dendron hierarchies to be created bottom-up as well, by including
dot.notated.sequences
in the note body.Use case
For instance, given notes named as follows (e.g. a flat list):
I would like hierarchies to be inferred from dot notation, wherever these might be encountered. For instance,
newsItemA.md
might be categorised by writing[[news]].[[weather]]
in the note body (or YAML/header based on user preference).Similarly,
newsItemB.md
might be categorised by writing[[news]].[[sports]].[[football]]
, andnewsItemC.md
by writing[[news]].[[sports]].[[tennis]]
.In fact,
newsItemD.md
might be categorised both as[[news]].[[sports]]
and[[news]].[[weather]]
, akin to nested tags. However, in contrast to nested tags the proposed scheme allows notes to exist anywhere in the vault.Ideally, hierarchies are parsed from either
[[linked]].[[notes]]
andregular.text
and possibly even autosuggested (!) based on previous linkages. I am not sure weather Breadcrumbs can handle this, but multiple parents and recursion/self-loops might be handled by defining certain notes to be roots, branches or leaf nodes or via graph traversal.Corollary
The use case I am envisioning is classifying unstructured notes based on existing/non-existing notes in the vault. This enables you to 'slot in' concepts in the hierarchy you have not necessarily written about, but are common to existing hierarchies (e.g. including
hockey
as a branch in the above news example without creating a note calledhockey.md
).Importantly, hierarchies can be infinitely rearranged:
football
andtennis
might sometimes be children ofsports
, while at other times children ofexercise
(in other contextsexercise
might itself be part ofsports
).Additionally, this is a very compact way of building hierarchies in leaf notes themselves, only requiring a .dot notated string of existing/non-existing notes.
While from graph theoretic perspective, these ambiguities complicate inferring hierarchies (e.g. determining what the main 'parent' is of a single note), from a NLP perspective some parents might be more frequently associated with children than others. Over time, hierarchies might stabilise by virtue of some child/parent notes being associated more frequently, allowing true bottom-up generation of note hierarchies. Combined with autosuggestions, new notes can be easily added to the hierarchy in a single line, while concurrently expanding the Obisidian graph view.
Let me know if this lies within the realm of implementation:)
Possible schemes
Inline code:
dot.notated.sequence
A nested link:
Dot separated links:
Regular text: