Startseite
Slot sichern →
NOTAT··

Datalog-Patterns Cookbook··5 opskrifter til mium-power-users

EXECUTIVE SUMMARY

Hvad nu hvis svarene på tilbagevendende vault-spørgsmål ikke lå i møjsommeligt håndarbejde, men i fem kopiérbare queries, du parametriserer én gang? Cookbookket sænker indsatsen ved standard-evalueringer — åbne frister, centrale knuder, audit-trail, tag-aggregering, forældreløse — fra minutter af manuel søgning til én udført query, uden ny software og uden at lære Datalog fra bunden. Forudsætningen er property-disciplin, ikke et licens-budget.

−80 %
Tid per standard-evaluering
5
Genbrugelige opskrifter
0
Forældreløs-rate efter sweep
0 kr.
Toolchain-omkostninger
≈ 30 min
Onboarding per person
≥ 80 %
Nødvendig property-dækning
RISICI
  • Uden property- og namespace-disciplin returnerer alle fem opskrifter tomme mængder i stedet for indsigt — forarbejdet på ordforrådet er en forudsætning, ikke en bivirkning.
  • Inkonsistente dato- og tag-formater bryder filtre i stilhed, uden fejlmeddelelse — fejlbehæftet stilhed er farligere end en højlydt afbrydelse.
  • Forældreløs-detektoren med not-join skalerer dårligt — kørt interaktivt på store vaults blokerer den sessionen i stedet for at køre om natten.
BESLUTNING
Anbefaling — etablér de fem cookbook-opskrifter som et delt query-bibliotek på tværs af teamet: forankr frist-filteret, backlink-hubs og forældreløs-detektoren som tilbagevendende visninger, træk property- og tag-namespace-disciplin frem som forudsætning, og tag dyre not-join-kørsler ud af den interaktive session via cron.

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:

  1. 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.
  2. 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.
  3. 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.

Audit-ID: BRF-datalog-cookbook-v1.0Fremlagt: 2026-06-23··Falktron GmbH, Oelde
Forårsskolen er slut. Se Dag 93 → Spil spillet →