skip to content

Babble, 2025-08-04 0953h

In this babble I'm going to be looking at how to work with the Org-roam database, toward the goal of being able to produce something like Obsidian Dataview queries within my Org-roam files, when they're published to emsenn.net

In looking online, there's folk who use org-roam-db-query to load up the database and search through it with Elisp. But this is wildly inefficient, when there's a where argument that can be set to use the database's search algorithms.

(org-roam-db-query
 [:select [*]
          :from nodes
          :where (like properties '"%DATE%")])

The issue is that properties set via… whatever they're called, notation like this: #+form: babble, at the top of a file, these properties aren't accessible when using org-roam-db-query. So, I need a way to set Org-mode properties, within the same Org-mode property drawer as is used for the ID that Org-roam's database can see.

I tinkered with a few different approaches to this and the following seems to be the simplest and least fragile.

Org-mode capture templates can have arbitrary properties added to them, for example, in addition to a property like :unnarrowed t, I can set a homebrew property like :form "[[id:d542e8d2-3512-47a0-adbb-4a393e161ecb][babble]]"

This makes the form available within the variable org-capture-current-plist, once I've started the capture process. If I add a function that's triggered when a new capture template is started (by adding it to the org-capture-mode-hook trigger, which is fired when the org-capture-mode minor mode is activated (which should only be when a capture is created), then I can take these custom properties from the capture template and apply them to the capture itself:

(defun gpe/apply-capture-properties ()
  (let* ((properties '(:author :form)))
    (dolist (property properties)
      (let ((value (plist-get org-capture-current-plist property)))
        (when value
          (org-set-property property value))))))

(add-hook 'org-capture-mode-hook #'gpe/apply-capture-properties)

Backlinks

Created: 2025-08-19 Tue 23:03