Grunnleggende arkitekturbeslutninger tatt og dokumentert: - Alt er noder (brukere, team, innhold, mediefiler, samlings-noder) - Edges definerer hva en node er (freeform typer, metadata i JSONB) - Materialisert tilgangsmatrise (node_access) erstatter workspace-RLS - Visibility (hidden/discoverable/readable/open) på noder - Aliaser via usynlige system-edges - Maskinrommet eier all skriving (SpacetimeDB først, PG asynk) - SpacetimeDB holder hele grafen, PG er persistent backup - Node- og edge-skjema spesifisert (docs/primitiver/) Fjernet workspace-konseptet fra hele dokumentasjonen (~40 filer). Fem retninger besluttet, én åpen (rom, ikke forum). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.2 KiB
Konsept: Kunnskapsgrafen (Utforsking og redigering)
Filsti: docs/concepts/kunnskapsgrafen.md
1. Konsept
Kunnskapsgrafen er Sidelinjas kjerne — et levende nettverk av Temaer, Aktører, Faktoider, Episoder og Segmenter. Inspirert av Logseq og Obsidian bygger den seg opp organisk gjennom daglig bruk og skaper "serendipity" (lykketreff) i research-fasen ved å synliggjøre uventede forbindelser.
2. Brukeropplevelse
2.1 Organisk vekst
Grafen vokser gjennom daglig bruk av Sidelinja:
- Chat-meldinger med
#-tags oppretter automatiskMENTIONS-relasjoner i grafen. - AI-behandling i editoren trekker ut aktører og faktoider fra innlimt tekst (se
docs/proposals/editor.md). - Podcastfabrikken kobler episode-segmenter til temaer og aktører.
- Møtereferater trådes automatisk mot temaer og aktører av AI-referenten.
2.2 Visuell utforsking
En interaktiv graf-visning (se docs/features/visuell_graf.md) lar redaksjonen:
- Navigere nettverket rundt en Aktør eller et Tema (2-3 ledd ut)
- Dra streker mellom noder for å opprette nye relasjoner
- Filtrere etter nodetype, relasjonstype, tidsperiode eller fritekst
- Bruke
PART_OF-hierarkier for fleksibel prosjektorganisering uten stive mappestrukturer
2.3 Søk
Full-text search på norsk (to_tsvector('norwegian', ...)) gjør det mulig å søke på tvers av alle episoder, segmenter og faktoider.
3. Komponenter
| Feature | Rolle i Kunnskapsgrafen |
|---|---|
| Kunnskapsgraf datamodell | Nodes/edges i PostgreSQL (se docs/features/kunnskapsgraf_og_relasjoner.md) |
| Visuell graf | Interaktiv D3.js/Vis.js-visning (se docs/features/visuell_graf.md) |
| Chat | Mentions (#/@) oppretter edges automatisk (se docs/features/chat.md) |
| Editor (AI-knapp) | Trekker ut aktører/faktoider til grafen (se docs/proposals/editor.md) |
4. Entity Resolution (Merge Entities)
Grafen vokser organisk via #-mentions, men dette skaper uunngåelig fragmentering: #Jonas, #Støre og #Jonas Gahr Støre ender som tre separate noder. Uten en strategi for sammenslåing dør serendipity-effekten — faktoidene spres over duplikater som AI-en tror er ulike konsepter.
Løsning: Merge Entities admin-verktøy (Lag 2)
- Velg autoritativ node (Node A) og duplikat(er) (Node B, C, ...)
- Flytt alle
graph_edgessom peker på Node B → Node A (UPDATE graph_edges SET source_id/target_id = A WHERE ... = B) - Flytt alle
messages-mentions som refererer til Node B → Node A - Legg til
namefra Node B som alias ientities.aliasespå Node A - Slett Node B (
DELETE FROM nodes→ cascader)
aliases-arrayet i entities-tabellen finnes allerede og er indeksert med GIN — autocomplete søker i både name og aliases, noe som forebygger fremtidige duplikater.
Forebygging: Autocomplete bør vise eksisterende entiteter med matchende aliases før brukeren oppretter nye. "Mente du #Jonas Gahr Støre?" ved skriving av #Støre.
5. Datamodell
Den tekniske datamodellen (nodes-supertabell, graph_edges, detailtabeller, deterministiske UUIDs, tilgangsstyring via node_access) er dokumentert i docs/features/kunnskapsgraf_og_relasjoner.md.