Gellish Knowledge Management

@zentr1c

One of the most engaged posts of all time in this forum is about adding meaning to links in Org-roam. The thread itself has been dormant in this year for now, but I believe that many people are still interested in the topic. As far as I can see, the Gellish approach is one of many ways to add a meaning to links and does not look to be unique in design.

For implementation, I think it is do-able and worth the efforts if someone is keen to drive this.

Below is some rough ideas that I could come up with of what the implementation with Org-roam and Org Mode might look like. I’m pretty sure there are better ideas; my two cents only.


The data structure that Org-roam has implemented so far is pretty much in line with the Gellish approach. You can inspect the database schema by looking at variable org-roam-db--table-schemata; look at the table links. I’ll illustrate.

If you execute this query in Emacs…

    (org-roam-db-query [:select [source dest properties]
				:from links
				:where (= type "id")])

You will get something like this below. I have added a column heading to make it easier to read.

#+RESULTS:
|   SOURCE (ID)    |   DEST (ID)      | PROPERTIES             
| 2021-01-18T130000| 2021-01-27T165658| (:outline nil)|
| 2021-01-18T152100| 2021-01-27T173744| (:outline nil)|
| 2021-01-18T152100| 2021-01-27T154809| (:outline nil)|
| 2021-01-18T165223| 2021-01-25T203301| (:outline nil)|

As far as I can inspect, Org-roam at the moment uses PROPERTIES only for the information of the headline under which links are placed (:outline property). But it leaves the possibility to enrich data with different properties (it’s a property list).

… So to implement a way to add a meaning to links, the data structure is mostly ready. As a very rough sketch, the following elements would need to be added to Org-roam and Org Mode (as an extension, or part of the core):

  1. Extend Org Mode’s grammar for org-id
    [[id:uuid]] syntax does not have a way for users to add property to the link
  2. Add a function to extract a property from an ID link; insert it in the database
  3. Add a display feature for Org-roam to show (back)links with the new property / properties
  4. Add a way for users to add property to links in their note-taking workflow
1 Like