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

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

Kopiérbare queries, ærlige faldgruber

PROCEDURE
  1. 1
    Tjek property-disciplin — sørg for, at frist::, status::, owner::, tags:: plejes konsistent i mål-blokkene, før en opskrift kører.
    VÆRKTØJ
    mium-outliner
    VARIGHED10 min
    Tjekpunkt: En stikprøve på 20 blokke bærer de forventede properties.
  2. 2
    Normalisér datoformatet — brug et re-pattern-for-filter til at afdække blandede formater (15.07.2026, Jul 15) og ensrette dem til YYYY-MM-DD.
    MATERIALE
    Dato-normaliserings-note
    VARIGHED15 min
    Tjekpunkt: Re-pattern-filteret finder ikke længere afvigende frist-værdier.
  3. 3
    Vælg og parametrisér en opskrift — tilpas Q-vinduet, tag-namespacet og grænsen til dit eget vault, kopiér query-teksten fra cookbookket.
    VÆRKTØJ
    Datalog-query
    VARIGHED10 min
    Tjekpunkt: Querien kører uden syntaksfejl og returnerer en plausibel, ikke-tom mængde.
  4. 4
    Tjek resultatet mod faldgruben — kontrollér per opskrift det kendte svage punkt (kant-tælling, historik-tilgængelighed, namespace-eksistens).
    VARIGHED10 min
    Tjekpunkt: Opskriftens kendte fejlkilde er udelukket eller dokumenteret.
  5. 5
    Afkobl dyre kørsler — planlæg forældreløs-detektoren (not-join) på store vaults som et natligt cron-job i stedet for at køre den interaktivt.
    VÆRKTØJ
    Cron-job (mium)
    MATERIALE
    Planlagt query
    VARIGHED10 min
    Tjekpunkt: not-join-kørslen er planlagt, ikke interaktiv; eller en has-backlinks?-property plejes.
  6. 6
    Forankr visningen som bogmærke — gem den tjekkede query som en tilbagevendende visning og del den i teamet, i stedet for at skrive den om hver gang.
    VÆRKTØJ
    Query-bogmærke
    VARIGHED5 min
    Tjekpunkt: Querien er gemt som delt visning og kan findes i teamet.
BAGGRUND

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.

SOP-DATALOG-COOKBOOK-1.0··Falktron GmbH, Oelde
Forårsskolen er slut. Se Dag 93 → Spil spillet →