Startseite
Slot sichern →
SOP-DATALOG-COOKBOOK-1.0Rev. v1.0··2026-06-23

Datalog-Patterns Cookbook··5 Rezepte für mium-Power-User

Kopierbare Queries, ehrliche Gotchas

ABLAUF
  1. 1
    Property-Disziplin prüfen — sicherstellen, dass frist::, status::, owner::, tags:: in den Ziel-Blöcken konsistent gepflegt sind, bevor ein Rezept läuft.
    WERKZEUG
    mium-Outliner
    DAUER10 min
    Prüfpunkt: Stichprobe von 20 Blöcken trägt die erwarteten Properties.
  2. 2
    Datumsformat normalisieren — mit einem re-pattern-Vorab-Filter Mischformate (15.07.2026, Jul 15) aufdecken und auf YYYY-MM-DD vereinheitlichen.
    MATERIAL
    Datums-Normalisierungs-Notiz
    DAUER15 min
    Prüfpunkt: re-pattern-Filter findet keine abweichenden Frist-Werte mehr.
  3. 3
    Rezept wählen und parametrieren — Q-Fenster, Tag-Namespace und Limit an den eigenen Vault anpassen, Query-Text aus dem Cookbook kopieren.
    WERKZEUG
    Datalog-Query
    DAUER10 min
    Prüfpunkt: Query läuft ohne Syntaxfehler und liefert eine plausible, nicht-leere Menge.
  4. 4
    Ergebnis gegen die Gotcha prüfen — je Rezept die bekannte Schwachstelle gegenchecken (Kanten-Zählung, History-Verfügbarkeit, Namespace-Existenz).
    DAUER10 min
    Prüfpunkt: Bekannte Fehlerquelle des Rezepts ist ausgeschlossen oder dokumentiert.
  5. 5
    Teure Läufe entkoppeln — den Orphan-Detektor (not-join) bei großen Vaults als nächtlichen Cron-Job einplanen statt interaktiv auszuführen.
    WERKZEUG
    Cron-Job (mium)
    MATERIAL
    Geplante Query
    DAUER10 min
    Prüfpunkt: not-join-Lauf ist geplant, nicht interaktiv; oder has-backlinks?-Property gepflegt.
  6. 6
    Sicht als Lesezeichen verankern — die geprüfte Query als wiederkehrende Sicht speichern und im Team teilen, statt sie jedes Mal neu zu schreiben.
    WERKZEUG
    Query-Lesezeichen
    DAUER5 min
    Prüfpunkt: Query als geteilte Sicht gespeichert und im Team auffindbar.
HINTERGRUND

Dieses Cookbook richtet sich an mium-Power-User und Dev-Profile, die mit [[advanced-query-datalog]] schon Berührung hatten und konkrete, kopierbare Beispiele suchen. Fünf Rezepte, jedes self-contained — wer nur den Orphan-Detektor braucht, springt direkt zu Rezept 5. Datalog selbst ist eine Logik-Programmiersprache aus den 1970ern; Rich Hickey hat sie mit Datomic (Cognitect, seit 2012) für den praktischen Datenbank-Alltag wiederentdeckt. mium nutzt einen Datalog-Dialekt für die Abfrage des eigenen Block-Index.

Rezepte

Die fünf Rezepte sind unabhängig voneinander. Cherry-pick, was Du brauchst, oder lies linear — beide Reihenfolgen funktionieren. Jedes Rezept hat: ein Problem, eine Query, optional eine Gotcha-Callout.

Rezept 1··Offene Tasks mit Frist im aktuellen Quartal

Standard-Sprint-Frage: welche Tasks sind offen und müssen bis zum Quartalsende geliefert sein? Die Query filtert über `frist::` im Q-Fenster und `status:: offen`, gibt Owner zurück.

[:find ?block ?frist ?owner
 :where [?block :frist ?frist]
        [?block :status "offen"]
        [(>= ?frist "2026-04-01")]
        [(<= ?frist "2026-06-30")]
        [?block :owner ?owner]]

Rezept 2··Top-10 Backlink-Hubs

Welche Blöcke werden am häufigsten referenziert? Die Top-10 nach eingehenden `:links-to`-Kanten sind die zentralen Knoten Deines Vaults — oft Begriffe, Personen, Projekte.

[:find (count ?backlink) ?target
 :where [?backlink :links-to ?target]
 :order-by [(count ?backlink) :desc]
 :limit 10]

Rezept 3··Audit-Trail eines Blocks

Wer hat wann was an einem Block geändert? Die Query liest die Transaction-History reverse für eine gegebene Block-ID und gibt `tx`, `attr`, `value`, `added`-Flag zurück.

[:find ?tx ?attr ?value ?added
 :where [?block :db/id "<((uuid))>"]
        [?tx :tx/affected-block ?block]
        [?tx :tx/attr ?attr]
        [?tx :tx/value ?value]
        [?tx :tx/added ?added]]

Rezept 4··Cross-Vault Tag-Aggregation

Wie häufig tritt jeder Kunden-Tag über alle Vaults hinweg auf? Die Query gruppiert über `tags::` mit Namespace-Präfix `#kunde-` und liefert eine sortierte Häufigkeitsliste.

[:find (count ?block) ?tag
 :where [?block :tags ?tag]
        [(re-pattern "^#kunde-") ?tag]
 :group-by ?tag
 :order-by [(count ?block) :desc]]

Rezept 5··Orphan-Notiz-Detektor

Welche Notizen haben keine eingehenden Backlinks und sind nicht archiviert? Diese Orphans sind die toten Enden des Vaults — Kandidaten für Aufräumen, Verknüpfen oder Archivieren.

[:find ?block ?title
 :where [?block :title ?title]
        [?block :archiv? false]
        (not-join [?block]
          [?other :links-to ?block])]

Wann diese Rezepte NICHT passen

Datalog-Queries sind kein Universalwerkzeug. Drei Situationen, in denen diese Rezepte nicht tragen:

  1. Volltext-Suche im Block-Inhalt — Datalog filtert über Properties und Kanten, nicht über Prosa. Für „finde alle Blöcke, die `Auftragsbestätigung` im Text enthalten“ ist der mium-Full-Text-Index das richtige Werkzeug, nicht eine Datalog-Query.
  2. Sehr unstrukturierte Vaults ohne Property-Disziplin — alle fünf Rezepte setzen voraus, dass `frist::`, `status::`, `owner::`, `tags::` konsistent gepflegt sind. In einem Vault, in dem 80 % der Blöcke keine Properties tragen, liefern die Queries leere Mengen, nicht Erkenntnis. Property-Disziplin ist Vorarbeit, nicht Nebeneffekt.
  3. Ad-hoc-Explorationen mit unklarer Fragestellung — Datalog belohnt präzise Fragen. Wer „mal schauen, was im Vault so steht“ will, ist mit Graph-View oder Backlink-Browsing schneller als mit einer Query, die erst noch entworfen werden muss.

Ehrliche Frage

Welches der fünf Rezepte hat bei Dir gepasst, welches lief ins Leere? Falls Du eines davon produktiv einsetzt: was hast Du anders parametriert — Q-Fenster verschoben, Tag-Namespace verändert, Limit erhöht? Und falls keines passt: an welcher Stelle haben wir die Lücke übersehen? Cookbook-Rezepte leben davon, dass sie an realen Vaults reiben — Rückmeldungen, welches Rezept #6 hier fehlt, sind willkommen. Weiterführend in dieser Wave: [[advanced-query-datalog]] für die Sprach-Grundlagen, [[simple-query]] für den einfacheren Einstieg ohne Datalog-Syntax.

SOP-DATALOG-COOKBOOK-1.0··Falktron GmbH, Oelde
Die Frühjahrsschule ist vorbei. Tag 93 ansehen → Das Spiel starten →