Representing Zettels as a Graph


  • multi site neuron
  • public/private (and other subsets) neuron
  • publish subset of neuron

template zettels

  • where to store directory?
  • handlebars for template instead of __wrap__

support non-flat filesystem

  • map tags to filesystem w/non-flat filesystem hierarchy


  • allow changing inner text of links eg [txt](link)
  • allow linking tags, and other graph queries with nice syntax
  • rethink changing default from [[z]] [[z]]# to [[z]]# <z?branch>
    • instance of specifying link labels
    • otherwise specifying annotating the graph
    • [[JournalYYYYMMDD]]# ⤚<Reasons for Meditation>⤞ <Zen Meditation> ⤚<Preferred Methods>⤞ <Meditation Methods>
      • related to “structure zettel” vs “folgezettel”

idea: explicitly represent everything as a graph, being able to enrich/annotate connections between graph nodes. Each site is then represented by a valid query where all reachable nodes are rendered.

Hierarchy and hyper-textuality are part of a zettelkasten.

If you use the Folgezettel technique, you achieve two things:

  • You assign each Zettel a place in a hierarchy.
  • You automatically create a connection to the Zettel you create.

If you use the structure zettel technique, you achieve:

  • Structure Zettel are hierarchies that are made explicit on dedicated Zettels.
  • Direct links direct links. If you always create a link to your new Zettel, you also get hyper-textuality, just as if you used Folgezettel.

Folgezettel “really” means a direct, obvious connection between notes. Important: both remove meaning from position in hierarchy.

direct links allow connection. folgezettel allow easy continuation; manually constructing a graph traversal of a train of thought.

Folgezettel emerges from a need for more order. How do I find related Zettels to place meaningful links? If new ideas, topics and thoughts emerge, how can I access them? How can I get an overview on topic X in my Zettelkasten? How can I make sure that I integrated my Zettel well enough by linking to the right places?

  • juxtaposition / sort order
  • tags/keywords
  • categories (exclusive tags)
  • hyperlink:
    • a -> b
    • a <-> b (backlink, text search, or a -> b, b -> a)
    • a +-> b, (annotation on link. Reason and/or metazettel)
    • a <-+-> (backlink, text search, or a +-> b, b +-> a)
  • folgezettel:
    • a +-> b where the enrichment (+) is just “andThen”

layers of notes:

  • content notes
  • structure notes (ToC)
  • structure notes of structure notes

Generate ToC from graph traversals with context

Structure notes are tags with added structure (order, annotation, hierarchy)

I think I might be getting a bit of a breakthrough about the multi-site thing. I’m seeing some connections between multi-site, publishing subsets of neuron, non-flat filesystem support, user-specified inner-text links, inline tags, and link labels.

The tl;dr is that I’m seeing all of these as manifestations of wanting to be able to construct a graph, annotate the edges of the graph, potentially even with nodes (which would make a hypergraph)

The connection to multi-site, inline tags, etc., is that you can represent all of those things as projections of a graph traversal. The only thing that remains is to enable implicit and/or automatic enriching of nodes, edges, and traversals.

A folgezettel would then be thought of as a link with the annotation/enrichment “andThen”. This creates a manual graph traversal node-by-node.

Tags would then be a graph projection based on querying the structure of the nodes (eg the tag metadata). Public/private sites are just two separate projections of the same zettelkasten graph. You can separate it out by either tag, arbitrary query, etc. You could also separate it out by filepath and solve some unrelated problems by maping file trees to tags.

In the github issue for link labels, the examle [[JournalYYYYMMDD]]# ⤚<Reasons for Meditation>⤞ <Zen Meditation> ⤚<Preferred Methods>⤞ <Meditation Methods> is given.

Viewing this as a manually specified graph traversal, if this was just a set of links, the arrow would be - id -> (undirected graph), if it was folgezettel, the arrow would be - andThen -> (directed graph), enriching the arrow with inline text (eg the “reason” annotation) gives… idk, probably some category math thing; maybe “weighted” graph? Annotated graph? In this case, it’s fully generalized and the arrow is enriched/annotated with an arbitrary zettel.

Inline linking with tags turns the zettel graph into a hypegraph, and could be used in the arrow no problem. (which plays nicely with wanting various projections out of it for eg public sites).