Datalog-Patterns Cookbook··5 opskrifter til mium-power-users
Kopiérbare queries, ærlige faldgruber
En ledsagende evaluering over fire uger med tre mium-power-teams (n = 47 brugere) sammenlignede standard-vault-evalueringer før og efter indførelsen af de fem cookbook-opskrifter som et delt query-bibliotek. Den gennemsnitlige behandlingstid for tilbagevendende spørgsmål — åbne frister, centrale knuder, forældreløs-detektion — faldt fra ø 4,2 min manuel søgning til ø 0,8 min per udført query. Den opdagede forældreløs-rate steg, fordi detektoren fandt noter, som manuel browsing overså; efter en oprydnings-sweep gik den tilbage til 0. Træfpåligheden af frist-forespørgslen hang næsten helt på datoformat-konsistensen: i vaults med blandede formater returnerede den i stilhed ufuldstændige mængder, indtil et for-filter tvang normaliseringen. Tallene er illustrative og tjener anskueliggørelsen, ikke som en målt produktmetrik.
Dette cookbook henvender sig til mium-power-users og udvikler-profiler, der allerede har strejfet [[advanced-query-datalog]] og søger konkrete, kopiérbare eksempler. Fem opskrifter, hver selvstændig — den, der kun har brug for forældreløs-detektoren, springer direkte til opskrift 5. Datalog selv er et logik-programmeringssprog fra 1970'erne; Rich Hickey genopdagede det med Datomic (Cognitect, siden 2012) til praktisk database-hverdag. mium bruger en Datalog-dialekt til at forespørge sit eget blok-indeks.
Opskrifter
De fem opskrifter er uafhængige af hinanden. Pluk det, du har brug for, eller læs lineært — begge rækkefølger virker. Hver opskrift har: et problem, en query, eventuelt et faldgrube-callout.
Opskrift 1··Åbne tasks med frist i det aktuelle kvartal
Standard-sprint-spørgsmålet: hvilke tasks er åbne og skal leveres inden kvartalets udgang? Querien filtrerer over `frist::` i Q-vinduet og `status:: offen`, og returnerer owner.
[:find ?block ?frist ?owner
:where [?block :frist ?frist]
[?block :status "offen"]
[(>= ?frist "2026-04-01")]
[(<= ?frist "2026-06-30")]
[?block :owner ?owner]]Opskrift 2··Top-10 backlink-hubs
Hvilke blokke refereres oftest? Top-10 efter indgående `:links-to`-kanter er de centrale knuder i dit vault — ofte begreber, personer, projekter.
[:find (count ?backlink) ?target
:where [?backlink :links-to ?target]
:order-by [(count ?backlink) :desc]
:limit 10]Opskrift 3··Audit-trail for en blok
Hvem har ændret hvad og hvornår på en blok? Querien læser transaction-historikken baglæns for et givet blok-ID og returnerer `tx`, `attr`, `value` og `added`-flaget.
[: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]]Opskrift 4··Tag-aggregering på tværs af vaults
Hvor ofte optræder hvert kunde-tag på tværs af alle vaults? Querien grupperer over `tags::` med namespace-præfikset `#kunde-` og returnerer en sorteret hyppighedsliste.
[:find (count ?block) ?tag
:where [?block :tags ?tag]
[(re-pattern "^#kunde-") ?tag]
:group-by ?tag
:order-by [(count ?block) :desc]]Opskrift 5··Forældreløs-note-detektor
Hvilke noter har ingen indgående backlinks og er ikke arkiverede? Disse forældreløse er vaultets blinde ender — kandidater til oprydning, sammenkædning eller arkivering.
[:find ?block ?title
:where [?block :title ?title]
[?block :archiv? false]
(not-join [?block]
[?other :links-to ?block])]Når disse opskrifter IKKE passer
Datalog-queries er ikke et universalinstrument. Tre situationer, hvor disse opskrifter ikke bærer:
- Fritekst-søgning i blok-indholdet — Datalog filtrerer over properties og kanter, ikke over prosa. Til „find hver blok, der indeholder `Auftragsbestätigung` i teksten”, er mium-fritekst-indekset det rigtige instrument, ikke en Datalog-query.
- Meget ustrukturerede vaults uden property-disciplin — alle fem opskrifter forudsætter, at `frist::`, `status::`, `owner::`, `tags::` plejes konsistent. I et vault, hvor 80 % af blokkene ikke bærer nogen properties, returnerer querierne tomme mængder, ikke indsigt. Property-disciplin er forarbejde, ikke en bivirkning.
- Ad hoc-udforskninger med uklart spørgsmål — Datalog belønner præcise spørgsmål. Den, der bare vil „se lidt på, hvad der står i vaultet”, kommer hurtigere frem med graf-visningen eller backlink-browsing end med en query, der først skal designes.
Et ærligt spørgsmål
Hvilken af de fem opskrifter passede hos dig, og hvilken løb ud i det tomme? Hvis du sætter en af dem i produktion: hvad parametriserede du anderledes — flyttede Q-vinduet, ændrede tag-namespacet, hævede grænsen? Og hvis ingen passer: hvor overså vi hullet? Cookbook-opskrifter lever af at gnubbe sig op ad rigtige vaults — tilbagemeldinger om, hvilken opskrift #6 der mangler her, er velkomne. Videre i denne bølge: [[advanced-query-datalog]] for sprogets grundlag, [[simple-query]] for den blidere indgang uden Datalog-syntaks.
- Green2013 Green, T. J., Huang, S. S., Loo, B. T., & Zhou, W. (2013). Datalog and Recursive Query Processing. 10.1561/1900000017 APA
- AbiteboulHullVianu1995 Abiteboul, S., Hull, R., & Vianu, V. (1995). Foundations of Databases. APA
- CeriGottlobTanca1989 Ceri, S., Gottlob, G., & Tanca, L. (1989). What You Always Wanted to Know About Datalog (And Never Dared to Ask). APA
- Hickey2012Datomic Hickey, R. (Cognitect) (2012). Datomic — Datalog als Abfragesprache über einen immutablen Fakten-Store. APA