SemanticXL: handleiding
Een complete, stap-voor-stap gids. Je hoeft geen voorkennis te hebben van semantiek, ontologieën of architectuur: alles wordt hieronder uitgelegd, met de exacte knoppen en drie volledige voorbeelden van begin tot eind.
Wat is SemanticXL?
SemanticXL is één plek waarin je de kennis van een organisatie vastlegt én met elkaar verbindt: wetgeving, begrippen (de officiële betekenis van woorden), regels, requirements, processen, architectuur, informatiemodellen, data, tests en risico's. Normaal staat dit in losse tools (Word, Excel, Jira, modelleertools, datacatalogi). Daardoor weet niemand meer waar een definitie vandaan komt of wat een wijziging raakt.
In SemanticXL is alles een object met een betekenis, en objecten zijn met koppelingen aan elkaar verbonden. Zo ontstaat één doorzoekbaar, herleidbaar netwerk: van een wetsartikel tot de test die controleert of de software aan die wet voldoet.
Het mentale model
Drie begrippen die overal terugkomen:
- Object — één ding dat je vastlegt: een begrip, een wetsartikel, een requirement, een applicatie, een risico, enzovoort. Elk object heeft minimaal een naam en een status.
- Koppeling (relatie) — een betekenisvolle verbinding tussen twee objecten, bijvoorbeeld "deze requirement is afgeleid van dit wetsartikel" of "deze testcase test deze requirement". De koppeling heeft een type (zie Relatietypen).
- Werkruimte — een afgeschermde omgeving met zijn eigen objecten en modellen (bijvoorbeeld per organisatie of project). Je werkt altijd binnen één werkruimte.
Aan de slag: werkruimte & hub
De centrale startplek is de semantische repository (de "hub"). Die werkt altijd binnen een gekozen werkruimte.
- Open de hub. Heb je nog geen werkruimte gekozen, dan zie je de melding "Kies links een werkruimte om een onderdeel te openen." Kies een werkruimte in de kolom links; bovenaan de hub staat dan de naam van de werkruimte.
- Bovenaan, onder Waar je werkt, staan vijf tegels: Wetgeving, Begrippen, Processen, Architectuur en Applicaties. Elke tegel toont het aantal en de laatste wijziging. Een klik opent de editor.
- Daaronder staat Inzichten: de rapportages en analyses, in vijf groepen naar de vraag die je hebt. Werk, Kosten en levenscyclus, Kwaliteit, Impact en samenhang en Publiceren. Met de kop Inzichten klap je het blok in of uit.
- Onderaan staat Wat je nog meer hebt: de andere soorten, per laag (bijvoorbeeld Betekenis en gegevens, Risico en beheersing, Portfolio en kosten). Wat leeg is, staat onderaan zijn lijst. Met alleen met inhoud verberg je lege tegels.
- Exporteren, importeren en verwijderen per soort zit onder de knop met drie puntjes op de tegel: Exporteren als ZIP, Importeren uit ZIP (vraagt: OK is alles vervangen, Annuleren is toevoegen en bijwerken) en Alles verwijderen (vraagt twee keer om bevestiging). De hub legt dit één keer uit; daarna kun je die uitleg sluiten.
De kolom links, zoeken en de werkbalken
Na het inloggen staat links op elk scherm dezelfde kolom. Zo vind je alles op dezelfde plek, in welke editor je ook zit.
- Werkruimtes brengt je naar het overzicht van al je werkruimtes. Daaronder staat de naam van de werkruimte waarin je zit; een klik opent een lijst om te wisselen, met een zoekveld.
- Hier werk je: de vijf plekken Wetgeving, Begrippen, Processen, Architectuur en Applicaties. De plek waar je bent, licht op.
- Inzichten opent de rapportages en analyses van de hub.
- Onderaan: Documentatie, Bibliotheek, Brein, de taal en je account. Het accountmenu heeft Mijn profiel, Mijn organisatie, Beheer (alleen voor beheerders) en Uitloggen. Onderin dat menu staat het versienummer. Noem dat nummer als je een fout meldt.
- De kolom klapt in tot alleen iconen. Op een smal scherm opent hij met de knop met drie streepjes.
Zoeken en navigeren: het opdrachtpalet (Ctrl+K). Druk Ctrl+K (op een Mac Cmd+K) of /. Er opent een zoekvenster voor de hele app: editors, rapportages, acties zoals Opslaan of Melding maken, en objecten uit de werkruimte. Kies met de pijltjes, open met Enter, sluit met Esc. Hetzelfde venster opent met het kleine zoekknopje naast Melden.
Melden. Rechtsonder staat een klein knopje Melden. Ligt er een knop van de pagina onder, dan schuift het zelf opzij. Zie Iets melden.
Werkbalken met Meer. De editors voor ArchiMate, BPMN en MIM hebben één werkbalk in dezelfde volgorde. Exporteren en Opslaan staan er met tekst; de rest staat onder Meer, in groepen zoals Controleren, Indeling en Bestand. Hetzelfde geldt voor de wetgevingseditor (Importeer wet en Nieuwe wet, de rest onder Meer) en voor de editor van applicaties, zaaktypen en bedrijfsregels (exporteren, importeren en controles onder Meer). De menu's werken met het toetsenbord: pijltjes, Home en End, en Esc brengt je terug naar de knop. De BPMN-editor heeft in de werkbalk ook ongedaan maken, opnieuw en zoom.
Objecten, relaties & traceerbaarheid
Koppelingen hebben een richting en een type. Een paar veelgebruikte:
| Koppeling | Betekenis |
|---|---|
gebruikt definitie van (usesDefinition) | object leunt op de betekenis van een begrip |
valt onder kader (inScheme) | begrip hoort bij een begrippenkader |
realiseert (realizes) | user story realiseert een requirement |
test (tests) | testcase toetst een requirement of user story |
mitigeert (mitigeert) | beheersmaatregel beheerst een risico |
komt overeen met (exactMatch/closeMatch) | begrip is (vrijwel) gelijk aan een ander begrip |
Op het Dashboard en in Semantische dekking zie je hoeveel objecten gekoppeld zijn en hoeveel modelelementen herleidbaar zijn naar de betekenislaag. In de Objectenbibliotheek zie je per object een kennisgraaf: een klikbaar netwerk van alle relaties.
AI in SemanticXL
Op vier plekken kan een taalmodel een voorstel doen. Een mens beslist altijd: er wordt niets opgeslagen voordat jij het voorstel bekijkt en bevestigt.
| Waar | Wat het doet | Wat naar het taalmodel gaat |
|---|---|---|
| BPMN: Schets uit tekst | een eerste proces uit een beschrijving | alleen je tekst |
| ArchiMate: Schets uit tekst | een eerste view uit een beschrijving | je tekst, en van de elementen die op je tekst lijken alleen het type en de naam |
| Wetgeving: Annoteer automatisch, knop Vraag AI om meer | extra annotaties, zoals een meervoud of synoniem | de artikeltekst, en van passende begrippen de naam, andere namen en definitie |
| Wetgeving: Maak begrip, knop Vraag AI | term en definitie zoeken in de wet | de selectie, de tekst van het artikel en de begripsbepalingen van dezelfde wet |
- Welk taalmodel. Deze vier gebruiken Google Gemini, een dienst buiten je organisatie. De beheerder zet de sleutel op de server met
GOOGLE_GENERATIVE_AI_API_KEY. MetGEMINI_MODELenGEMINI_FALLBACK_MODELkiest hij het model en een reservemodel. - Wat niet meegaat. Geen documentatie, geen eigenschappen en geen interne id's van elementen. Het venster zegt steeds wat er naar buiten gaat. Zet zelf geen persoonsgegevens of vertrouwelijke informatie in je tekst.
- Wat de server bewaart. De server bewaart je tekst niet en zet hem niet in de logs. De beveiligingslog noemt alleen wie, in welke werkruimte, hoeveel tekens en het resultaat.
- De server controleert. SemanticXL vertrouwt het antwoord niet blind. Een processchets wordt hersteld (ontbrekende start of einde, losse stappen), een viewschets gaat langs de relatiematrix, en een annotatie telt alleen als het citaat letterlijk in het artikel staat en het begrip bestaat. Wat is rechtgezet, zie je in het venster.
- Herkenbaar. Een overgenomen proces of view draagt de herkomst ai-schets. Een annotatie van het taalmodel heet in het venster AI-voorstel en staat standaard uit. Een definitie die niet letterlijk in de wet staat, moet je eerst zelf bevestigen.
- Zonder sleutel. Staat er geen sleutel op de server, dan zijn de AI-knoppen uit met een uitleg, bijvoorbeeld "Niet ingesteld op deze server". De rest werkt gewoon: annoteren zonder AI, en een begrip maken met term en definitie uit de wet.
- Grenzen. Een beschrijving is 20 tot 12.000 tekens. Per gebruiker zijn er hoogstens 5 schetsen per minuut en 30 per uur.
ANTHROPIC_API_KEY. Ook daar wordt niets vastgelegd zonder jouw vinkjes.Stap voor stap: een begrip maken (NL-SBB)
Een begrip is de officiële betekenis van een term ("kindercentrum", "student"). Begrippen worden geordend in een begrippenkader (een verzameling samenhangende begrippen). SemanticXL volgt de overheidsstandaard NL-SBB / SKOS.
- Hub → tegel Begrippen. Je begint bij het startscherm met je begrippenkaders. Open je een begrip, dan heeft de editor links een boom en in het midden de details met vijf tabbladen: Algemeen, Betekenis, Relaties, Herkomst, Uitbreidingen.
- Maak eerst een kader: knop + Nieuw ▾ → Nieuw begrippenkader. Kies de taal en typ een naam (bv. "Wet kinderopvang"). Klik Opslaan.
- Maak een begrip: + Nieuw ▾ → Nieuw begrip (of klik met rechts op het kader → Nieuw sub-begrip, dan erft het automatisch het kader).
- Op tab Algemeen:
- Labels: vul de prefLabel (voorkeursterm) in. Kies type preflabel en taal nl. Met + {label} in andere taal voeg je vertalingen of alternatieve termen (altLabel) toe.
- Begrippenkader: kies in de dropdown het kader (dit legt de
inScheme-koppeling — verplicht). - Optioneel: Notatie / code en de Begrippen-URI (wordt meestal automatisch gevuld).
- Op tab Betekenis: vul de Definitie in. Tip uit de editor: schrijf als "[Begrip] is een [hogere categorie] die/dat [onderscheidend kenmerk]…". Optioneel Toelichting, Scope-note, Voorbeeld.
- Op tab Herkomst: koppel de bron met + Documentverwijzing of Wet koppelen (JCI) (verwijst naar het wetsartikel op wetten.overheid.nl).
- Op tab Relaties leg je SKOS-relaties: + Semantische relatie (broader = bovenliggend, narrower = onderliggend, related), + Harmonisatie-relatie (exactMatch/closeMatch naar een ander begrip, ook via BegrippenXL zoeken), + Vervangingsrelatie (replaces/replacedBy). Elke knop opent een zoekvenster om het andere begrip te kiezen.
- Klik Opslaan (Ctrl-S). Klik Valideer voor een SHACL-controle tegen NL-SBB. De tabbladen tonen ook live meldingen, bijvoorbeeld "Ontbreekt: prefLabel @nl (verplicht NL-SBB)", "Geen begrippenkader (skos:inScheme verplicht)" of "Definitie ontbreekt". Los die op tot de melding weg is.
- Invullen gaat in reeksen. De opslaanknop krijgt een stip zodra er iets is gewijzigd, en bij wisselen of sluiten wordt gevraagd of dat werk weg mag. Na het aanmaken staat de cursor in de definitie; Ctrl+Enter bewaart en start meteen een volgend begrip in hetzelfde kader. Typ je een term die al bestaat, dan verschijnt daar een melding met een link naar dat begrip. Met Alt-↓ en Alt-↑ loop je door de boom, met / spring je naar zoeken en met ? (of het toetsenbordicoon) zie je alle sneltoetsen.
- Elk begrip heeft een eigenaar en een herijkingsdatum: tot wanneer die eigenaar zich aan de definitie verbindt. In het blok Beheer zet je met Nog actueel de datum vooruit, en met Vaststellen leg je vast wie het begrip heeft goedgekeurd. Dat laatste vraagt twee paar ogen: wie het laatst wijzigde kan niet zelf vaststellen. Onder Beheer staat het overzicht: wat is verlopen, wat verloopt binnenkort, wat is nog niet vastgesteld, wie heeft nog werk liggen. Teken je het vaststellingsproces zelf in BPMN, dan kies je dat model in dezelfde kopbalk en krijgt elk begrip die stappen als afvinklijst: in de volgorde van de pijlen, met de toelichting uit het model erbij. De laatste stap afvinken ís de vaststelling. In de bibliotheek zien lezers of een begrip is vastgesteld en tot wanneer het is bevestigd, en kunnen ze er een vraag over stellen.
- Wijzig je een definitie terwijl er zaaktypen, regels of datasets op het begrip steunen, dan laat de editor eerst zien wie dat raakt, met was en wordt naast elkaar, en vraagt een korte toelichting. Die komt als wijzigingsnotitie bij het begrip te staan.
- Met Tekst scannen plak je een beleidsstuk en zie je welke begrippen erin voorkomen en welke woorden opvallen maar nergens zijn gedefinieerd; met + maak je daar meteen een begrip van. Via Begrippen insluiten (/static/begrippen-insluiten.html) krijg je een knipsel waarmee je intranet of wiki de vastgestelde definitie toont op de plek waar de term staat.
- Naast de validatie staat Review: de inhoudelijke NL-SBB-review. Die kijkt naar de term zelf (lidwoord, hoofdletter, afkorting, leesteken, en of het een werkwoord of meervoud lijkt), naar de definitie (circulair, te kort, alleen een voorbeeld, vaag) en naar de regels die het SHACL-profiel niet toetst: topbegrip met een bovenliggend begrip, harmonisatierelatie binnen hetzelfde kader, dubbele code, verweesd begrip, twee begrippen met dezelfde definitie, ontbrekende bron. Terwijl je typt verschijnen dezelfde hints onder het term- en definitieveld. Er wordt niets gewijzigd; je krijgt een oordeel met een advies, en met Rapport (PDF) opent het reviewrapport als opgemaakte pagina met het printvenster erbij, zodat je het als PDF bewaart of meestuurt.
Het startscherm: begin bij je begrippenkaders
Zolang je geen begrip kiest, toont het midden van de begrippeneditor al je begrippenkaders als kaarten, onder een groot zoekveld.
- Een kaart per kader met het aantal begrippen en collecties, de eigenaar of het domein, de redactiestatus als balk, en hoeveel begrippen een definitie hebben, gekoppeld zijn en vastgesteld zijn. Ook zie je herijkingen die verlopen en de grootste topbegrippen. Begrippen zonder kader hebben een eigen kaart: Begrippen zonder kader.
- Zoeken. Typ in het veld "Zoek een term, synoniem of woord uit een definitie". De treffers staan in het midden, met term, synoniemen, een stukje definitie met het woord gemarkeerd, het kader en de status. Eerst komt de term zelf, dan synoniemen, dan wat ermee begint. Met Alle kaders zoek je in alles.
- Een kader openen. Klik een kaart. Je ziet de cijfers van het kader en zijn topbegrippen als boom om open te klappen, met Zoek in dit kader. Rechts staan de gegevens van het kader om te bewerken. Met + Nieuw begrip in dit kader maak je meteen een begrip in dat kader.
- Terug. De knop Alle begrippenkaders brengt je terug naar het overzicht, met je zoekvraag nog in het veld.
Een SKOS-bestand inlezen, ook een groot
Met Uitwisselen → NL-SBB / SKOS lees je begrippen in uit Turtle, RDF/XML of N-Triples. Een ingepakt bestand (.gz of .zip) mag ook. Grote bestanden zoals EuroVoc (bijna 500 MB, 30 talen) gaan zo:
- Kies het bestand. Je browser bekijkt het eerst zelf en telt de begrippen, de kaders en de labels per taal. Bij een zip met meer bestanden kies je er een.
- Kies de talen. Vink aan wat je nodig hebt, of gebruik Alleen Nederlands, Nederlands en Engels of Nederlands, Engels, Duits en Frans. Je keuze wordt onthouden. Waarden zonder taal (notaties, datums) komen altijd mee.
- Kies het begrippenkader: een nieuw kader of een bestaand. Heeft het bestand meer kaders, dan kies je hoe je ze inleest:
- Eén kader met de indeling uit het bestand. Dit staat aan als het bestand een indeling heeft, zoals EuroVoc. De andere kaders worden groepen (collecties) in dat ene kader, en een groep kan weer groepen bevatten. Bij EuroVoc krijg je 21 domeinen, met daaronder 127 microthesauri, met daarin de begrippen. Het venster zegt wat het vond: hoeveel kaders, hoeveel daarvan deel zijn van een ander kader, en hoeveel domeinen.
- Eén kader voor alles: de andere kaders vallen weg.
- Elk ander kader als collectie: plat, zonder groepen in groepen.
- Zoals in het bestand: elk kader blijft een eigen kader.
- Klik Importeren. Je browser haalt de andere talen weg en pakt het bestand in. EuroVoc met vier talen wordt zo 8 MB in plaats van 493 MB.
- Je ziet de fasen: Voorscan, Lezen, Opslaan (zoveel van zoveel begrippen) en Index bijwerken. Met Afbreken stop je. Sluit je het venster, dan gaat de import door; open de begrippeneditor opnieuw om de stand te zien.
- Aan het eind zie je hoeveel begrippen nieuw zijn, hoeveel bijgewerkt en hoe lang het duurde.
- De groepen staan in de boom onder Collecties. Klap een groep open: eerst zie je de groepen erin, dan de begrippen. Het getal telt alle begrippen eronder, elk begrip een keer. Op het startscherm en in het woordenboek (tab Groepen) zie je dezelfde indeling.
.gz of .zip, of kies minder talen; de melding in het venster zegt het ook.Tekenfouten herstellen
Staat er in een begrip iets als vóór waar vóór hoort, of ’ in plaats van een aanhalingsteken? Dan is de tekst ooit met de verkeerde tekenset gelezen, meestal al in het bestand dat je hebt ingelezen. Zo herstel je het:
- Open de begrippeneditor en kies Toetsen → Tekenfouten herstellen.
- Je ziet eerst hoeveel objecten en velden het zijn, met voorbeelden: de tekst zoals hij nu is en zoals hij wordt. Er verandert dan nog niets.
- Klik Herstellen. Elk object krijgt een nieuwe versie; de oude tekst staat in de historie, dus je kunt terug.
Stap voor stap: wetgeving importeren & annoteren
Je haalt complete wetten op van wetten.overheid.nl en koppelt termen in de wettekst aan begrippen. Zo wordt zichtbaar welke begrippen uit welke wet komen.
- Hub → tegel Wetgeving. Klik Importeer wet in de werkbalk. Er opent een dialoog; typ in het zoekveld minstens 2 letters (bv. "kinderopvang"). De resultaten tonen titel + BWB-id. Klik een rij om de wet met al zijn artikelen op te halen. (Alternatief: "of importeer via een URL/ELI-URI" en plak een
wetten.overheid.nl/BWBR…-link.) Een eigen wet maak je met Nieuwe wet. - Open de wet en klik links in de boom een artikel aan. Het artikel licht op in de doorlopende tekst. Rechts staat alles over het gekozen artikel, met de hint "Selecteer een stuk tekst om er een begrip, regel, organisatie of ander object aan te koppelen."
- Selecteer met de muis een term in de tekst. Er verschijnt een werkbalkje:
- Bestaand begrip: kies een begrip dat al in (een van) je werkruimtes bestaat. Dit legt de koppeling
usesDefinition. - Uit BegrippenXL: haalt een begrip uit de landelijke BegrippenXL en zet het in een begrippenkader genoemd naar de wet.
- Maak begrip: maakt een nieuw begrip met de term en de definitie uit de wet. Zie Maak begrip uit de wettekst.
- Maak regel: maakt van de selectie een bedrijfsregel met bronverwijzing naar dit artikel.
- Ander object en JAS-klasse: koppel de tekst aan een ander object (regel, organisatie-eenheid, artikel, applicatie en meer) of classificeer hem juridisch.
- Bestaand begrip: kies een begrip dat al in (een van) je werkruimtes bestaat. Dit legt de koppeling
- Na het kiezen kun je een toelichting invullen. De term wordt gemarkeerd in de tekst (hover toont de definitie) en verschijnt in de lijst Annotaties bij het artikel.
- Veel artikelen? Laat de begrippen van de werkruimte zelf zoeken met Annoteer automatisch.
- Onder Meer staat de rest. Groep Analyse: Annoteer automatisch, Wijzigingen (de wetswijziging-radar: je opgeslagen tekst naast de actuele versie op wetten.overheid.nl), Dekking, Scenario's en Rapport. Groep Exporteren: RegelSpraak voor ALEF en Linked data (Turtle) voor wetten en annotaties.
Wetten vinden en lezen
- Startscherm. De wetgevingseditor opent met je wetten als kaarten: korte titel, bronlabel (BWB, CVDR, EU of eigen), het aantal artikelen en hoeveel er markeringen hebben. Een lange titel zoals "wetten.nl - Regeling - ..." wordt op het scherm ingekort; de opgeslagen naam blijft gelijk.
- Zoeken in alle wetten. Typ in het zoekveld boven de boom. De treffers staan in het midden, per wet, met de zin eromheen en het woord gemarkeerd. Een klik opent het artikel met de zoekterm al ingevuld.
- Lezen. Een wet lees je als doorlopende tekst met koppen per hoofdstuk. De boom links loopt mee met het scrollen. Met Alle wetten ga je terug naar het startscherm.
- Zoeken in de wet. Gebruik Zoek in deze wet. Een teller toont hoeveel treffers er zijn. Enter of de pijl gaat naar de volgende treffer, Shift+Enter naar de vorige.
- Bewerken. Het formulier om gegevens en tekst van een artikel aan te passen zit rechts ingeklapt onder Gegevens en tekst bewerken.
- Laatste controle op wijzigingen. Na een ronde met Wijzigingen zie je bij de wet wanneer die is gecontroleerd en wat er veranderd is, bijvoorbeeld "Gecontroleerd op ...: geen wijzigingen". Die datum staat op de server, dus je collega's zien hem ook.
Maak begrip uit de wettekst
Staat een begrip nog niet in de werkruimte? Maak het direct vanuit de wet. De term en de definitie komen uit de wettekst, en de geselecteerde tekst wordt meteen gemarkeerd als gebruik van het nieuwe begrip. Er wordt niets opgeslagen voordat je in het venster op Maak begrip drukt.
- Selecteer de hele begripsbepaling, bijvoorbeeld "watergang: oppervlaktewaterlichaam dat geen waterstaatswerk is;", of alleen de term. Selecteer je alleen de term, dan zoekt SemanticXL de definitie in hetzelfde artikel en daarna in de begripsbepalingen van dezelfde wet. Een meervoud vindt ook het enkelvoud: "waterschappen" wordt "waterschap".
- Kies Maak begrip in het werkbalkje. Het venster vult Term en Definitie in. Beide kun je aanpassen. Een zin met "wordt mede verstaan" komt in Toelichting (niet verplicht).
- Kies het Begrippenkader, of Zonder kader. Je keuze wordt per werkruimte onthouden. Kies je voor het eerst, dan staat het kader klaar dat naar de wet heet, als dat bestaat. Kies ook de Redactiestatus en eventueel een Breder begrip (niet verplicht) uit hetzelfde kader.
- Bestaat het begrip al? Heet er al een begrip zo (naam of synoniem, ook in een ander kader), dan zie je Dit begrip bestaat al met de definitie. Kies Koppel aan dit begrip om alleen de tekst te markeren. Of vink Toch een nieuw begrip maken aan als het een ander begrip met dezelfde naam is (een homoniem); leg in de toelichting uit waarin het verschilt.
- De bron staat eronder: het artikel waar de definitie staat, met de vindplaats op wetten.overheid.nl. Het begrip krijgt die bron volgens NL-SBB en een koppeling naar het artikel.
- Druk Maak begrip. Rechtsonder verschijnt een melding met de link Open in de begrippeneditor.
Geen definitie gevonden? Dan vult het venster alleen de term in en zegt dat de wet geen definitie geeft. Met Vraag AI zoekt een taalmodel term en definitie in de tekst van deze wet. Staat de definitie die het vindt niet letterlijk in de wet, dan zegt het venster dat. Je moet dan eerst "Ik heb de definitie gecontroleerd en neem hem over" aanvinken, en het begrip krijgt daar een notitie over. De knop Vraag AI verschijnt alleen als AI op de server is ingesteld; zie AI in SemanticXL.
Annoteer automatisch
Een wet met de hand koppelen aan alle begrippen van de werkruimte kost uren. Annoteer automatisch zoekt de begrippen in de wettekst en laat eerst zien wat het vond. Pas bij Opslaan wordt iets vastgelegd, en alleen wat aangevinkt staat.
- Start het voor de hele wet (knop in de kop van de open wet, of Meer → Annoteer automatisch) of voor één artikel (Annoteer dit artikel).
- SemanticXL zoekt de namen en synoniemen van de begrippen in de tekst: de langste term eerst, zonder op hoofdletters te letten, op hele woorden. Per artikel komt elk begrip hoogstens één keer, en er komen hoogstens zes annotaties per artikel. Wat al aan een artikel hangt, komt niet opnieuw.
- Het venster toont per artikel de voorstellen met de zin eromheen. Haal het vinkje weg als het begrip hier niet bedoeld is. Alles aan en Alles uit helpen bij een lange lijst.
- Druk Opslaan. Wat je zelf hebt uitgevinkt, wordt bewaard als afwijzing en komt bij een volgende ronde niet terug. Vink je alleen uit, dan heet de knop Afwijzing bewaren.
- Eerder afgewezen. Vink "eerder afgewezen, toon ook" aan om de afgewezen voorstellen weer te zien, met wie ze afwees en wanneer. Afwijzing terugzetten haalt er één terug, Alle afwijzingen terugzetten allemaal.
- Stopwoorden. "Water" is in de ene werkruimte een echt begrip en in de andere ruis. Met Stopwoorden leg je per werkruimte vast welke termen niet meedoen, wat de Kortste term (tekens) is en hoeveel annotaties er Hoogstens per artikel komen. Bewaren en opnieuw zoeken past het meteen toe, Standaard terugzetten zet de standaardlijst terug.
- AI-voorstellen. Vraag AI om meer laat een taalmodel zoeken naar wat de exacte zoektocht mist, zoals een meervoud of een synoniem. De server accepteert alleen een citaat dat letterlijk in het artikel staat en een begrip dat bestaat. Deze voorstellen hebben het merk AI-voorstel met de reden erbij, en staan standaard uit. Zie AI in SemanticXL.
Naar ALEF: regels uitvoerbaar maken
ALEF (Agile Law Execution Factory, Belastingdienst, open source onder EUPL 1.2) maakt van RegelSpraak-specificaties automatisch een uitvoerbare rekenservice. SemanticXL en ALEF vullen elkaar aan: hier analyseer en annoteer je de wet met volledige traceability; in ALEF formaliseer en executeer je de regels. De knop Meer → RegelSpraak voor ALEF in de wetgevingseditor maakt de overdracht:
- Annoteer de wet en leg per bedrijfsregel waar mogelijk een formele expressie vast (regel-editor). Regels zonder expressie komen in de export als
TODO. - Klik RegelSpraak voor ALEF (met een wet geselecteerd: alleen die wet; anders werkruimte-breed). Je krijgt één bestand met drie delen: GegevensSpraak (objecttypen uit de gekoppelde begrippen + feittypen met rollen), RegelSpraak-regels (met geldigheid uit de consolidatie en bronverwijzing per artikel) en testscenario's uit de juridische scenario's als basis voor TestSpraak.
- Plak het bestand als vertrekpunt in een ALEF-project, vul kenmerken/attributen van de objecttypen aan en formaliseer de TODO-expressies. De
// bron:-regels houden de herleidbaarheid naar het wetsartikel vast.
Zo blijft de rolverdeling zuiver: SemanticXL is de analyse- en traceability-laag (wat staat er, wat betekent het, wat raakt het), ALEF de executielaag (rekenen met de regels).
Stap voor stap: een informatiemodel maken (MIM, UML of ERD)
Een MIM-model (Metamodel Informatie Modellering, een overheidsstandaard) beschrijft welke gegevens je vastlegt: objecttypen (bv. "Kindercentrum"), hun attributen (bv. "naam", "KvK-nummer") en de relaties ertussen.
Datzelfde canvas tekent ook een UML-klassediagram en een ERD. Dat is geen tweede editor: een model draagt een notatie, en die bepaalt welke typen in het palet staan, welke symbolen de relaties krijgen en waarop gevalideerd wordt. Een klasse, een objecttype en een entiteit staan daardoor in dezelfde graaf en verwijzen naar hetzelfde begrip. Zie ook Drie notaties op een canvas.
- Hub → tegel Informatiemodellen (MIM · UML · ERD). Links staat de modelboom, zoals in het architectuurcanvas: elk model van de werkruimte is een wortel met een merkje MIM, UML of ERD. Het geopende model staat uitgeklapt; de andere staan ingeklapt en tonen bij openklappen hoeveel objecttypen, relaties en views erin zitten. Open dit model… of een dubbelklik opent een ander model; rechtermuisknop op een wortel geeft Model openen, Nieuw model, Model leegmaken (alleen het geopende model, vastleggen met Opslaan) en Model verwijderen. Klik de + in de kop "Modellen" voor een nieuw model: je kiest dan eerst de notatie en daarna de naam.
- Objecttype toevoegen: in het rechterpalet, sectie Elementen, klik Objecttype (status wordt "Plaats: … — klik op canvas") en klik dan op het canvas. Of sleep de knop naar het canvas. Andere elementen: Gegevensgroep, Datatype, Enumeratie, Codelist, Refer.lijst, Relatieklasse, Keuze, Constraint.
- Selecteer het element; de inspector linksonder toont Naam, URI / identificatie, Begrip, Beschrijving en Domein. Pas de naam aan.
- Attribuut toevoegen: in de inspector onder Attribuutsoorten klik + Attribuut toevoegen. Vul per rij in: naam, datatype (dropdown met CharacterString, Integer, Date… plus je eigen datatypes/codelijsten) en kardinaliteit (1..1, 1..*, 0..1, 0..*).
- Relatie tekenen: beweeg over een element; er verschijnen blauwe verbindingspunten op de zijden. Sleep van zo'n punt naar het doel-element. Kies in de popover het type: Relatiesoort, Generalisatie, Compositie of Externe koppeling. (Alleen geldige combinaties zijn mogelijk.)
- Begrip koppelen: bij het veld Begrip in de inspector klik Uit werkruimte… (begrip uit deze werkruimte) of Extern… (BegrippenXL). Zo krijgt een objecttype/attribuut zijn officiële betekenis.
- Opslaan: knop Opslaan (Ctrl+S). De status naast de knop toont "niet opgeslagen" of "opgeslagen".
Drie notaties op een canvas: MIM, UML en ERD
Hetzelfde model, drie manieren om het op te schrijven. De notatie kies je bij het aanmaken; hij staat in de kopbalk, in de tabtitel en als merkje voor de modelnaam in de explorer.
| Notatie | Waarvoor | Elementen | Relaties |
|---|---|---|---|
| MIM 1.2 | informatiemodellen die gepubliceerd worden | Objecttype, Gegevensgroeptype, Datatype, Enumeratie, Codelijst, Referentielijst, Relatieklasse, Keuze, Constraint | Relatiesoort, Generalisatie, Compositie, Externe koppeling |
| UML-klassediagram | het gesprek met ontwikkelaars | Klasse, Abstracte klasse, Interface, Enumeratie, Datatype, Package, Notitie | Associatie, Gerichte associatie, Aggregatie, Compositie, Generalisatie, Realisatie, Afhankelijkheid |
| ERD | het gesprek over opslag | Entiteit, Zwakke entiteit, Koppelentiteit, View, Domein, Notitie | Een op een, Een op veel, Veel op veel, Optioneel op veel, Identificerend, Niet-identificerend — getekend met kraaienpoten |
- Sleutels in een ERD. Zet bij een attribuut Identificerend / primaire sleutel aan: het attribuut wordt onderstreept getekend. Vreemde sleutel (FK) zet er "(FK)" achter. Het is dezelfde vlag die MIM gebruikt voor een unieke aanduiding, zodat hetzelfde model in beide notaties hetzelfde zegt.
- Validatie volgt de notatie. De controle onder Meer heet naar de notatie van het model. Een ERD wordt niet langs de MIM-lat gelegd: daar geldt dat een entiteit zonder primaire sleutel een fout is, en dat een relatie zonder kardinaliteit en een veel-op-veel-relatie een waarschuwing opleveren (die laatste vraagt bij realisatie een koppelentiteit).
- Export loopt via de MIM-equivalenten: een klasse en een entiteit worden een objecttype, een koppelentiteit wordt een relatieklasse. Turtle, MIMFORMAT, JSON Schema, ReSpec en XMI blijven dus werken.
Stap voor stap: een ArchiMate-model maken
Met de Modeller teken je enterprise-architectuur (ArchiMate): business-, applicatie- en technologie-elementen en hun relaties, verdeeld over views.
- Hub → tegel Architectuur. Links staat de modelboom, zoals in Archi: elk ArchiMate-model van de werkruimte is een wortel. Het geopende model staat uitgeklapt met zijn lagen, relaties en views; de andere modellen staan ervoor of erna, ingeklapt, en tonen bij openklappen wat erin zit en hun views. Openklappen wisselt niet van model; een view aanklikken of Open dit model… wel. Rechtermuisknop op een wortel: Model openen, Nieuw model, Model leegmaken, Model verwijderen. Ook het hoofdmodel kan weg zodra er een ander model is: dat andere model wordt dan het hoofdmodel (bij meer kandidaten kies je welk). Het enige model in een werkruimte kun je alleen leegmaken. Klik + in de kop "Modellen" voor een nieuw model, of gebruik Meer → Importeren om een bestaand model in te laden (
.archimatevan Archi of.xmlArchiMate Open Exchange). - Element plaatsen: klik in het rechterpalet op een element-type (gegroepeerd per laag: Business, Applicatie, Technologie…) en klik daarna op het canvas. Of sleep het palet-icoon naar het canvas.
- Relatie tekenen: kies in het palet onder Notatie een connector en sleep van bron- naar doel-element. Of sleep element A bovenop element B; er verschijnt een keuzemenu met alleen de geldige ArchiMate-relaties.
- View maken: in de boom onder Views klik + Nieuwe view… (leeg canvas).
- Begrip koppelen: selecteer een element; in de inspector staat sectie Begrip met Uit werkruimte… en Extern (BegrippenXL)…. Op het element verschijnt dan een klein begrip-badge.
- Opslaan: Opslaan in de werkbalk. Exporteren geeft .archimate, Open Exchange (.xml), SVG of ReSpec-documentatie; de OEFF-versie (3.2/4.0) volgt de keuze ArchiMate-versie onder Meer.
Viewschets uit tekst
Beschrijf een situatie in gewone taal en krijg een voorstel voor een nieuwe view. Elementen die al in het model staan, worden hergebruikt. Er wordt niets opgeslagen tot je het voorstel overneemt.
- Klik Schets uit tekst in de werkbalk. Het venster Viewschets uit tekst opent.
- Typ of plak een Beschrijving: een project, een werkwijze of een applicatielandschap. Wie doet wat, met welke systemen? Kies eventueel een viewpoint; dan kijkt de schets alleen naar de typen van dat viewpoint. Met Voorbeeld gebruiken zie je hoe een goede beschrijving eruitziet. Druk Maak voorstel (of Ctrl+Enter). Dat duurt meestal tien tot dertig seconden.
- Je ziet het voorstel als plaat. Elementen die al in het model staan, hebben een gewone rand (bestaand). Nieuwe elementen hebben een stippelrand en het merkje nieuw. Een relatie die SemanticXL heeft rechtgezet, is oranje.
- Daaronder staan de lijsten Elementen en Relaties. Vink uit wat niet in de view hoort. Is een nieuw element eigenlijk een element dat al bestaat? Kies Kies bestaand element en zoek het op. Het voorstel wordt dan opnieuw gecontroleerd.
- Lees de Aannames van het taalmodel en wat er is Rechtgezet door SemanticXL.
- Geef de view een naam en kies Overnemen als nieuwe view. Of kies Opnieuw, Tekst aanpassen of Verwerpen.
- De server controleert elk voorstel. Typen passen bij de ArchiMate-versie van het model. Elke relatie gaat langs de relatiematrix van die versie; mag een relatie niet, dan wordt ze omgedraaid, een verwante relatie of een Association, of ze valt weg. Serving en Realization tussen technologie, applicatie en bedrijf wijzen altijd van onder naar boven. Een nieuw element met dezelfde naam en hetzelfde type als een bestaand element wordt dat bestaande element. Een relatie die al in het model ligt, wordt hergebruikt en niet verdubbeld.
- Overnemen legt alles in één keer vast: de nieuwe elementen en relaties in het model, en de view met de gekozen relaties. Bestaande elementen blijven zoals ze zijn. Nieuwe elementen en de view dragen de herkomst ai-schets. Het canvas opent daarna de nieuwe view.
- Een schets wordt altijd een nieuwe view. Invoegen in een bestaande view kan niet; kopieer wat je nodig hebt. Hoogstens 40 elementen en 80 relaties.
- Je tekst en de namen en typen van passende elementen gaan naar een taalmodel. Zie AI in SemanticXL.
Opmaak en layout van een plaat
Een architectuurplaat is ook een communicatiemiddel; hoe hij eruitziet doet ertoe.
- Per element (inspector, blok Stijl): vulkleur, lijnkleur, lijndikte, vlak-dekking, lettertype, tekstgrootte, tekststijl, tekstkleur, uitlijning, lijnstijl (doorgetrokken, gestreept, gestippeld) en hoeken (standaard, recht, rond). Selecteer meerdere elementen en je stelt ze in één keer gelijk in; ↺ reset zet alles terug naar de standaard van de laag.
- Per relatie: lijnkleur, lijndikte, lijnstijl, lettertype, tekstkleur en tekstgrootte, plus label tonen of verbergen.
- Automatisch schikken (onder Meer, groep Indeling) kent drie schikkingen: volledige layout met banden, alleen relaties rechttrekken, en compact opschonen op een raster. Daarnaast kun je relaties verbergen die over andere elementen heen lopen.
- Vrije figuren staan in het palet onder Notatie (view), naast Notitie en Groep. Een figuur is een rechthoek, afgeronde rechthoek, ovaal, ruit, pijl, lijn of alleen tekst; de vorm kies je in de inspector onder Stijl → Vorm. Kies je Afbeelding, dan verschijnt een knop om een bestand te kiezen (PNG, JPEG, GIF, WebP of SVG): handig voor een foto van een collega, een logo of een schets uit een workshop. Grote foto's worden verkleind tot 1200 pixels voordat ze in het model belanden, en een SVG blijft zoals hij is. Een figuur modelleert niets: hij legt iets uit. Daarom staat hij niet in de export, telt hij niet mee in de dekking en kan hij alleen met een Connection aan iets vastzitten.
- Sjabloon plaatsen (onder Meer, groep Indeling) zet een kant-en-klaar bouwsel neer: een titelbanner, een legenda met drie kleurvakjes, een fasenband van vier pijlen, een kader met titel of een aandachtspunt met pijl. Alles bestaat uit vrije figuren, dus je past ze aan zoals je wilt.
- Wijzigingen tonen (onder Meer, groep Geschiedenis) beantwoordt de vraag van wie een week weg is geweest: wat is er veranderd, en door wie? Kies een periode (gisteren, vorige week, vorige maand, vorig kwartaal). Toegevoegde objecten kleuren groen, gewijzigde oranje, en de rest zakt naar de achtergrond. Verwijderde objecten staan niet meer op de plaat; die krijgen een regel in het paneel ernaast, met wie het deed, wanneer, en welke velden veranderden. Klik een regel om het object te selecteren. Verplaatsen en opmaak tellen niet mee: anders was elke sleep een wijziging.
- Bijwerken na elke wijziging staat bovenin het menu van Automatisch schikken. Zet je het aan, dan trekt het canvas de layout bij zodra je iets toevoegt, verplaatst of verbindt; je kiest erbij welke schikking dat doet. Standaard staat het uit, want een handgemaakte plaat wil je niet ongevraagd herschikt zien. Een reeks snelle wijzigingen geeft één ronde, en die ronde kost geen extra stap bij ongedaan maken.
Een plattegrond of foto onder een view
Meer → Achtergrondafbeelding in de werkbalk van de modeller. Kies een afbeelding en die komt onder de actieve view te liggen: een plattegrond, luchtfoto, huisstijlplaat of schets om de architectuur bovenop te bouwen. De plaat hangt aan de view, niet aan het model - dezelfde elementen kunnen op de ene view op een plattegrond liggen en op de andere op wit.
- Doorschijnendheid 15, 35, 60 of 100 procent. Standaard 35 procent, want een achtergrond die het model overschreeuwt is geen achtergrond.
- Vast (standaard): de plaat staat stil en vangt geen klikken, zodat je er gewoon overheen modelleert. Losmaken geeft een stippelrand en een greep rechtsonder: slepen verplaatst, de greep schaalt met behoud van verhouding.
- Passend om het model legt de plaat met een rand om alles wat op de view staat.
- De afbeelding gaat als data-URI mee in het model, de export en de plaatjes in de Objectenbibliotheek. Grote foto's worden verkleind naar 1200 pixels; verwijzingen naar een externe website worden geweigerd.
Stap voor stap: een proces tekenen (BPMN)
In de BPMN-editor teken je werkprocessen volgens BPMN 2.0: wie doet wat, in welke volgorde, en met welke applicaties.
- Hub → tegel Processen, of Processen in de kolom links. Links staat de lijst Modellen met alle processen van de werkruimte. + Nieuw maakt een leeg proces, Import leest een of meer
.bpmn-bestanden in. - Kies bij Weergave hoe de lijst eruitziet: Alfabetisch, Gelaagd (onder de organisatie en processen waaraan een proces gekoppeld is) of Mappen (zie Mappen).
- Teken met het palet rechts op het doek: stappen, keuzes, gebeurtenissen en stromen. Klik een element aan om het in het zijpaneel links (de inspecteur) te bewerken.
- De werkbalk heeft ongedaan maken (Ctrl+Z), opnieuw (Ctrl+Y) en zoom, dan Applicaties, Schets uit tekst, Exporteren (BPMN XML, SVG, JPG, PDF, CSV en Excel) en Opslaan (Ctrl+S). Onder Meer staat onder andere BPMN-regels controleren.
- Samen werken. Hebben collega's hetzelfde proces open, dan zie je hun namen in de werkbalk en hun cursor met naam op het doek. Wat een collega tekent of koppelt, zie je meteen.
Applicaties op een processtap
Leg vast welke applicatie een stap ondersteunt, door hem erop te slepen.
- Klik Applicaties in de werkbalk. Het paneel toont de applicaties van de werkruimte, met levenscyclus en bij hoeveel stappen van dit proces ze al horen. Zoek op naam of code.
- Sleep een applicatie op een stap. De koppeling ligt meteen vast. Heb je meerdere stappen geselecteerd, dan komt de applicatie bij allemaal.
- Onder de stap staan labels met de applicaties. Klik een label om de applicatie te openen; het kruisje ontkoppelt, met Ongedaan maken in de melding. Ver uitgezoomd zie je alleen een telling, bijvoorbeeld "2 apps".
- In de inspecteur staat het blok Ondersteunende applicaties. Daar koppel je ook zonder slepen, met Applicatie koppelen en een zoekveld; dat werkt ook met het toetsenbord.
- Horen er applicaties bij de stap via de architectuur of via een functie, dan staan ze eronder als "Gevonden, nog niet vastgelegd:". Met Vastleggen maak je er een echte koppeling van.
Het is dezelfde koppeling als die van de koppelkiezer. Procesketen, brein en bibliotheek zien hem dus meteen. Met alleen leesrechten kun je kijken, maar niet koppelen.
Processchets uit tekst
Beschrijf een werkproces in gewone taal en krijg een voorstel voor een BPMN-proces. Er wordt niets opgeslagen tot je het voorstel overneemt.
- Klik Schets uit tekst in de werkbalk. Het venster Processchets uit tekst opent.
- Schrijf in de Beschrijving van het proces wie wat doet, en in welke volgorde. Voorbeeld gebruiken laat een voorbeeld zien. Druk Maak voorstel (of Ctrl+Enter). Dat duurt meestal tien tot dertig seconden.
- Je ziet het voorstel als plaat: lanes, stappen, keuzes en stromen. Daaronder de Aannames van het taalmodel, wat er is Rechtgezet door SemanticXL, en onder Gevonden in deze werkruimte de applicaties en begrippen die letterlijk in je tekst staan. Dat laatste zijn alleen suggesties; er wordt niets gekoppeld.
- Pas de naam aan en kies Overnemen als nieuw proces. Het proces komt in de werkruimte (in de gekozen map) en gaat open. Of kies Opnieuw, Tekst aanpassen of Verwerpen.
De server controleert en herstelt het voorstel voordat je het ziet: ontbrekende start of einde erbij, stromen naar niets eruit, elke stap bereikbaar. Hij tekent de BPMN zelf, met lanes als rijen. Een overgenomen proces draagt de herkomst ai-schets, en de aannames staan in de beschrijving. Invoegen in een bestaand proces kan niet: neem het over als nieuw proces en kopieer wat je nodig hebt. Je tekst gaat naar een taalmodel; zie AI in SemanticXL.
Mappen
Veel processen? Zet ze in mappen. Kies bij Weergave de optie Mappen. Heeft de werkruimte al mappen, dan begint de lijst daar vanzelf in.
- Map maken. + Map maakt een map in de gekozen map (of in de hoofdmap). Typ meteen de naam.
- Kiezen en openklappen. Klik een map om hem te kiezen en open of dicht te klappen. Een nieuw proces (via + Nieuw, Import of Overnemen als nieuw proces) komt in de gekozen map.
- Menu per map (de knop met drie puntjes of de rechtermuisknop): Nieuwe submap, Hernoemen, Verplaatsen naar map en Verwijderen.
- Verwijderen vraagt eerst om bevestiging. Wat in de map zat, processen en submappen, gaat een laag hoger. Er wordt nooit een proces verwijderd.
- Slepen. Sleep een proces of map op een map (erin), naast een regel (in dezelfde map, met een invoeglijn) of op Hoofdmap. Een map in zichzelf of in een eigen submap slepen kan niet. Slepen werkt ook met aanraken of een pen.
- Toetsenbord. Pijl omhoog en omlaag loopt door de lijst, pijl rechts en links klapt een map open of dicht, Enter kiest of opent, F2 hernoemt, Delete verwijdert en Shift+F10 opent het menu. Verplaatsen naar map (ook de mapknop op een procesregel) opent een keuzelijst voor pijltjes, Enter en Esc.
- Zoeken werkt in alle drie de weergaven. In Mappen gaan de mappen rond een treffer open; past de naam van een map, dan zie je alles wat erin zit.
- Samen. Collega's die een proces van deze werkruimte open hebben, zien een nieuwe of verplaatste map meteen. Met alleen leesrechten zie je de mappen, maar kun je niets maken of slepen.
Binnen een map staan mappen en processen op naam. Welke weergave je koos en welke mappen open staan, onthoudt je browser per werkruimte.
Stap voor stap: requirement, user story & test
Deze drie objecttypen vormen de keten van eis naar bewijs. Ze worden bewerkt in dezelfde generieke editor (lijst links, details rechts), die je opent via de bijbehorende hub-tegel.
- Hub → Requirements → + Nieuw ▾ → + Nieuw (leeg). Vul in: Naam, Status, Classificatie (bv. Wettelijk), Prioriteit (MoSCoW) (Must/Should/Could/Won't), Verificatie-methode, Acceptatiecriteria.
- Tab Relaties → + Voeg relatie toe. Er opent een koppel-venster: kies bovenaan het Relatie-type, kies het tabblad van het doel-type (bv. Wetsartikelen of Begrippen), zoek op naam (vink Alle werkruimtes aan om breder te zoeken) en klik Koppelen. Koppel de requirement aan het wetsartikel (grondslag) en aan het begrip.
- Hub → User Stories → + Nieuw. Schrijf in Als/wil/zodat-vorm + acceptatiecriteria. Tab Relaties → type realiseert → koppel aan de requirement.
- Hub → Testmanagement → + Nieuw. Vul teststappen in. Tab Relaties → type test → koppel aan de requirement of user story. Zet Laatste run op Pass als de test slaagt.
- Open de requirement: bovenaan toont een Coverage-blok twee tellers — Realizes: x/y US done en Tests: x/y pass (groen ≥80%). Tab Backlinks toont alles wat naar deze requirement verwijst.
Stap voor stap: risico, maatregel & toets (GRC)
- Hub → Risico's → + Nieuw. Vul Risicocategorie, Oorzaak/dreiging, Gevolg, en Kans × Impact in. De editor toont een 5×5 risicomatrix met je score gemarkeerd; kies een Risicostrategie (Mijden/Verminderen/Delen/Accepteren).
- Hub → Beheersmaatregelen → + Nieuw. Kies Type maatregel (Preventief/Detectief/…) en leg Opzet/Bestaan/Werking vast. Tab Relaties → type mitigeert → koppel aan het risico.
- Hub → Controletoetsen (KCM) → + Nieuw. Vul toetsmethode + uitkomst + bevinding in. Tab Relaties → koppel aan de beheersmaatregel.
- Op het Dashboard zie je nu de risicomatrix, de werking van beheersmaatregelen en de KCM-resultaten samen — de complete cyclus risico → maatregel → toets.
Stap voor stap: dataset & domeintabel
Een dataset beschrijft een gegevensverzameling volgens DCAT-AP-NL. Een domeintabel (codelijst) is een vaste lijst toegestane waarden (bv. "soort opvang: dagopvang / BSO").
- Hub → Datasets → + Nieuw. Vul de DCAT-velden: titel, thema, licentie, toegangsrechten, publisher, en voeg distributies toe.
- Een codelijst hoort bij een MIM-element. Open een Codelist of Referentielijst in het MIM-model en vul onder Codes de waarden in (+ Waarde toevoegen: code, naam, definitie).
- Koppel die waardelijst aan de dataset: bij het MIM-element, veld Gekoppelde dataset (DCAT) → Dataset zoeken & koppelen…. Daarna verschijnt op het element een blauwe DCAT-badge die naar de catalogus leidt.
- De dataset is nu zichtbaar in de Datacatalogus en exporteerbaar als TTL of publiceerbaar naar CKAN (data.overheid.nl).
Stap voor stap: beslismodel, kwaliteitsregels & datacontract
Een bedrijfsregel staat zelden alleen. Zij gebruikt begrippen, volgt uit een wetsartikel, en wacht soms op een andere regel. Die drie verbanden leg je al bij de regel vast; het beslismodel leest ze terug als een DMN 1.3 Decision Requirements Diagram. Er is dus geen tweede administratie: wat je op de plaat ziet, staat in de koppelingen.
Het beslismodel bekijken
- Hub → Bedrijfsregels → knop Beslismodel in de balk. Elke regel wordt een beslissing (rechthoek), elk begrip, domeintabel, dataset of feittype een inputdata (afgeronde vorm), en elke wet of organisatieonderdeel een kennisbron (golvende onderkant). Een regel met regeltype Bereken wordt een rekenmodule (afgeknipte hoeken): herbruikbare rekenlogica die andere regels aanroepen.
- De pijlen komen uit de koppelingen: usesDefinition en usesDomeintabel worden een informatievereiste, derivedFromBusinessRule ook, en derivedFromLaw of een koppeling naar een organisatieonderdeel wordt een gezagsvereiste (streepjeslijn).
- Met Rond beperk je de plaat tot de omgeving van één regel, met Stappen tot zover die omgeving reikt. De pijl wijst altijd naar de beslissing die iets nodig heeft. Klikken op een knoop brengt je naar dat object.
- ⤓ PNG geeft de plaat als afbeelding, voor een presentatie of een review.
DMN uitwisselen
- Menu Meer → ⇧ DMN 1.3. Je krijgt de hele graaf met de vereisten, de beslistabellen en de plaat (DMNDI), leesbaar in Camunda Modeler, Signavio of een andere DMN-tool.
- Andersom: ⤓ DMN 1.3 leest een
.dmn-bestand in. Beslissingen worden bedrijfsregels, hun vereisten worden koppelingen naar begrip, wet en regel. Wat niet thuis te brengen is gaat niet verloren maar blijft als losse naam staan en komt bij de volgende export weer mee. Een bestand dat uit SemanticXL komt werkt bestaande regels bij in plaats van er nieuwe naast te zetten.
formalParameter terug, met de herkomst in een eigen sxl:usesInput, zodat er bij het teruglezen niets verloren gaat.Een validatieregel in Kwaliteitsregeltaal
Zet je bij een bedrijfsregel het regeltype op Validatie, dan verschijnt een veld voor de uitdrukking in de Kwaliteitsregeltaal van NORA. Rekenen mag: +, -, *, / en % tussen getallen. Een absolute waarde kent de taal niet, en die is ook niet nodig: een marge naar twee kanten zegt hetzelfde. Wat je typt wordt meteen gecontroleerd; klopt het niet, dan krijg je de plek waar het misgaat en niet alleen "ongeldig".
| Wat je wilt zeggen | Hoe het eruitziet |
|---|---|
| Dit veld moet gevuld zijn | HEEFT vormkoker |
| Binnen een bereik | lengte >= 0.5 EN lengte <= 100 |
| Alleen onder een voorwaarde | ALS status = "vastgesteld" DAN HEEFT hoogte |
| Geen dubbelen | UNIEK code |
| Hooguit vijf procent afwijking | (lengte - shapeLengte) / shapeLengte <= 0.05 EN (lengte - shapeLengte) / shapeLengte >= -0.05 |
| Ruimtelijk | geometrie LIGT BINNEN gemeentegrens |
- Kies het kwaliteitsaspect uit het NORA Raamwerk Gegevenskwaliteit: 32 attributen in 9 dimensies, van attribuut-compleetheid tot positionele-juistheid. Daaruit volgt straks de dimensie in het datacontract.
- Kies de ernst: fout is afkeuren, waarschuwing is onderzoeken, informatie is signaleren.
- Vul de meldingstekst in, met plaatshouders als
{id}voor de waarden uit de rij. Dat is de zin die een beheerder straks te zien krijgt. - Menu Meer → ⇧ Kwaliteitsregeltaal geeft een
.krt-bestand. Regels zonder leesbare uitdrukking staan onderaan als commentaar, met de reden erbij: stil weglaten zou een bestand opleveren dat compleet lijkt. - ⤓ Kwaliteitsregeltaal leest zo'n bestand weer in als validatieregels.
Veel regels? De boom links groepeert bedrijfsregels op het objecttype waarover ze gaan, met de telling erbij en de grootste groep boven. Klik een objecttype aan en de lijst toont alleen die regels; Alle zet het terug. Bij een set als de DAMO-kwaliteitsregels (631 regels over 43 objecttypen) is dat de ingang.
GET /api/session/<sid>/sem/krt/migratie is een proefdraai: per regel zie je of zij al KRT is, wat zij zou worden, of waarom het niet gaat. Er wordt niets geschreven tot je de POST doet.Rekenen met datums
Een regel als "in de afgelopen twaalf maanden geëvalueerd" schrijf je in Kwaliteitsregeltaal met datums en tijdsduren. SemanticXL volgt daarin de specificatie van NORA.
| Wat | Zo schrijf je het | Voorbeeld |
|---|---|---|
| datum | DD-MM-JJJJ | 31-01-2026 |
| tijd | UU:MM:SS | 14:30:00 |
| datum met tijd | JJJJ-MM-DD UU:MM:SS | 2026-01-31 14:30:00 |
| tijdsduur | ISO 8601 | P30D (30 dagen), P12M (12 maanden), P1Y6M, P2W, PT2H |
| vandaag en nu | VANDAAG, NU | de dag en het tijdstip in Nederland |
| Wat je wilt zeggen | Hoe het eruitziet |
|---|---|
| In de afgelopen twaalf maanden geëvalueerd | laatsteEvaluatie >= VANDAAG - P12M |
| Minstens 18 jaar oud | geboortedatum + P18Y <= VANDAAG |
| In de laatste 30 dagen gewijzigd | wijzigingsdatum >= VANDAAG - P30D |
| Minstens een week tussen start en eind | (einddatum - startdatum) >= P7D |
- Een maand erbij op de 31e schuift naar de laatste dag van de maand:
31-01-2026 + P1Mis 28-02-2026. - De controle vangt fouten met de plek erbij.
VANDAAG - 30geeft de uitleg dat je een tijdsduur schrijft alsP30D.2026-01-31in een regel wordt niet meer stil gelezen als de som 2026 - 1 - 31, maar geeft de melding dat een datum DD-MM-JJJJ is. P1MtegenP30Dvergelijken heeft geen antwoord, want een maand heeft geen vast aantal dagen. Dan zegt de controle dat.
Meetresultaten en de norm
SemanticXL voert de regels niet zelf uit. De uitkomst hoort er wel bij: hoe scoorde deze regel vorige week? Het scherm Meetresultaten laat dat zien.
- Waar. In de hub onder Inzichten, groep Kwaliteit. In de editor van bedrijfsregels en datasets staat bovenin de knop Metingen: bij een open regel opent het scherm op die regel, bij een open dataset op de regels van die dataset.
- Wat je ziet. Bovenaan vier kerncijfers: hoeveel regels gemeten zijn, de dekking, hoeveel regels onder hun norm zitten en hoeveel metingen er bewaard zijn. Dan per regel een kaart met het percentage dat voldoet, de aantallen, de peildatum en de bron van de laatste meting, het verloop als lijntje en dezelfde reeks als tabel.
- De norm. Een validatieregel heeft in de groep Datakwaliteit het veld Norm (minimaal % dat voldoet). Staat er een norm, dan zegt het scherm of de regel binnen of onder de norm zit, altijd in woorden en niet alleen met kleur. Staat er geen norm, dan geeft het scherm geen oordeel.
- Filteren. Op dataset, kwaliteitsaspect, ernst en stand, en zoeken op naam of code. De naam van een regel opent haar in de editor, een dataset opent het datacontract.
- Hoe metingen binnenkomen. Een pijplijn stuurt ze naar
POST /api/session/<sid>/sem/kwaliteitsmetingen; een agent via MCP metdien_meting_in. Als W3C DQV haal je ze op metGET .../kwaliteitsmetingen.ttl. Per regel worden de laatste 24 metingen bewaard. Zonder metingen legt het scherm zelf uit hoe ze binnenkomen.
Het datacontract (ODCS)
Een dataset die aan een objecttype hangt, levert een datacontract volgens ODCS v3.1.0 (Bitol, Linux Foundation).
- Koppel de dataset aan het MIM-objecttype waar zij over gaat. De attributen worden de velden van het schema, met hun logische type en of ze verplicht zijn.
- Heeft een attribuut een begrip, dan komt de URI daarvan in het contract als
authoritativeDefinitionsvan het typebusinessDefinition. Zo weet de afnemer niet alleen hoe het veld heet, maar ook wat het betekent. - Validatieregels op datzelfde objecttype komen in het
quality-blok, elk met de dimensie die uit het kwaliteitsaspect volgt. - Menu Meer → ⇧ ODCS-datacontract geeft de YAML. Een bestaand contract lees je in met de import; velden en kwaliteitsregels worden dan voorstellen.
Het contract als pagina. Voor het gesprek met een afnemer is er de pagina Datacontract. Je vindt haar in de hub onder Inzichten, groep Publiceren, met een keuzelijst van de datasets. In de dataset-editor opent de knop Datacontract de pagina op de dataset die openstaat.
- Bovenaan naam, versie, status, eigenaar, domein, toegang, objecttype en doel.
- Het schema als tabel: per veld de naam, het type, of het verplicht is, het begrip met zijn definitie, en de kwaliteitsregels die over dat veld gaan.
- Bij elke regel de uitdrukking in Kwaliteitsregeltaal en de laatste meting, met de stand tegenover de norm. Regels die geen veld aanwijzen, staan apart onder "Regels over het hele object".
- Drie knoppen: de YAML downloaden, de link kopiëren en afdrukken. De link werkt alleen voor wie toegang heeft tot de werkruimte.
regeltype, regelformulering (in KRT), kwaliteitsaspect en ernst. Een formulering die niet te lezen is, wordt geweigerd met de positie erbij, zodat er geen proza in een formeel veld belandt. Met toets_kwaliteitsregel kijkt hij een uitdrukking vooraf na zonder iets te schrijven: leest zij, waar zit de fout, en wat is de genormaliseerde tekst. Geeft hij de attributen van een objecttype mee, dan is een onbekend attribuut ook een fout. Met dien_meting_in levert hij meetresultaten aan (gecontroleerd, voldoet, voldoet niet, peildatum, bron en een notitie). Een meting voor een regel die niet bestaat of met tellingen die niet kloppen, wordt geweigerd, en elke meting komt in het auditspoor. Zie AI-agenten (MCP).Stap voor stap: een applicatie (APM)
- Hub → Applicaties → + Nieuw. De code wordt alvast ingevuld met het eerstvolgende nummer. Vul Lifecycle-status (In gebruik / Uitfaseren / …), Bedrijfswaarde en Technische fit (Hoog/Middel/Laag), datums (Live, Einde support), Kosten en leverancier in.
- De lijst toont Code, Applicatie, Eigenaar, Lifecycle, Bedrijfswaarde, Tech. fit en BBN. Filteren kan op status en op eigenaar; het zoekveld kijkt ook naar de code en de eigenaar, en elke kolom is sorteerbaar.
- De velden staan in groepen: Kern, Waarde en fit, Eigenaarschap en beheer, Leverancier en contract, Levensloop, Kosten en Classificatie (BIO). Elke groep toont hoeveel er is ingevuld. Met ⤢ Groot invulscherm krijgt het formulier het hele scherm; met de pijlen (of Alt+← / Alt+→) loop je door de lijst, Esc brengt je terug.
- Tab Relaties → koppel de applicatie aan capabilities (realiseert), contracten en licenties.
- Met LCM-vragenlijst onderin het formulier leid je bedrijfswaarde en technische fit af in plaats van ze te schatten: elf criteria per as, elk 0, 1 of 2, gewogen opgeteld tot een score van maximaal 44 met de norm op 22. Vanaf de norm is het niveau Hoog; beide scores samen bepalen het kwadrant (Beheersen, Functioneel of Technisch vernieuwen, Vervangen). Zolang een as niet compleet is blijft de handmatige waarde staan. In bulk invullen kan via de CSV-export en -import in de rapportage.
- Onder Rapportages staat bovenaan het APM-dashboard: alles in een beeld, met filters op eigenaar, fase, hosting, leverancier, type, LCM-kwadrant en BBN die op elk blok doorwerken. Kerncijfers bovenin, dan applicaties per eigenaar (opgebouwd uit de lifecycle-fasen), het LCM-kwadrant met de kosten per vak, de BIV- en BBN-verdeling, de tien duurste applicaties, een kwartaaltijdlijn van aflopende support en contracten, de vulgraad van het register en een lijst aandachtspunten. De Print-knop geeft er een PDF van met de filters die op dat moment aan staan. Daarnaast vier overzichten: LCM-matrix (de TIME-portfolio: Invest/Migrate/Tolerate/Eliminate), Lifecycle-roadmap en BIV en BBN. Die laatste laat zien hoe de classificatie over de portfolio is verdeeld: eerst de dekking, dan de verdeling per as, het vastgelegde BBN naast het BBN dat uit de scores volgt, een kruistabel tegen de bedrijfswaarde, en aandachtspunten met de applicaties bij naam. Daarnaast LCM-vragenlijst: hoe ver de vragenlijst is ingevuld, hoe de portfolio over de kwadranten verdeelt, bij welke criteria zij het zwakst scoort en waar de vastgelegde waarde afwijkt van de afgeleide. Het Dashboard toont kosten en het TCO-overzicht.
- Sync ArchiMate houdt het portfolio en het architectuurmodel gelijk. Je kiest per keer welke kant leidend is (het APM of het model) en welk bereik: deze applicatie, de aangevinkte selectie of de hele portfolio. Je ziet eerst per veld wat er verandert; pas na Toepassen wordt er geschreven. Een applicatie zonder component in het model wordt bij de terugrichting overgeslagen, niet geraden.
Stap voor stap: zaaktype, bewaartermijn & documenttypen
Het zaaktype (werkproces) is het scharnier tussen wetgeving, uitvoering, systemen en archivering. Bewaartermijnen worden hier niet overgetypt maar afgeleid uit de selectielijst, met de herkomst erbij.
- Selectielijst kiezen. Hub → Zaaktypen → knop Selectielijst. De Selectielijst gemeenten 2020 komt met de applicatie mee (29 procestypen, 345 resultaten), dus dit werkt ook zonder internet. Wil je de actuele lijst? Klik Ophalen bij VNG-API.
- Zaaktype maken. + Nieuw → naam, doel (dat is straks ook je AVG-verwerkingsdoeleinde), proceseigenaar en doorlooptijd.
- Grondslag koppelen. Tab Relaties → derivedFromLaw naar het wetsartikel. Daarmee loopt de wetswijziging-radar mee: verandert het artikel, dan zie je welk proces dat raakt.
- Waarderen. Kies procestype en resultaat uit de keuzelijsten en klik Waardering afleiden. Waardering, archiefactietermijn, procestermijn en de selectielijstklasse worden gevuld, met een herkomstregel als "Selectielijst gemeenten 2020, procestype 9, resultaat 9.1". Afgeleide velden dragen het label afgeleid.
- Documenttypen. Maak informatieobjecttypen (Besluit, Aanvraag, …) met openbaarheid en het gewenste duurzame formaat, en koppel ze met levertOp aan het zaaktype.
- Overzicht. Knop Waarderingsoverzicht: dekkingsgraad, welke zaaktypen nog geen termijn of grondslag hebben, en hoeveel er afwijken van de lijst.
Stap voor stap: verwerkingsregister (AVG artikel 30)
De verwerking is een eigen object, geen veldenblok op het zaaktype: één proces kan meerdere verwerkingen kennen, en cameratoezicht hoort bij geen enkel proces.
- Afleiden. Open een zaaktype → knop AVG-verwerking. Doel, bewaartermijn (met herkomst), wettelijke grondslag en de systemen komen mee. De actie is idempotent: nog een keer klikken werkt bij, het maakt geen tweede verwerking.
- Aanvullen. Vul wat het systeem niet kan weten: categorieën betrokkenen, ontvangers, doorgifte buiten de EER en de beveiligingsmaatregelen.
- Gegevens als begrip. Koppel categorieën persoonsgegevens met verwerktGegeven aan een begrip in plaats van vrije tekst. Dan komt de definitie mee en zie je waar hetzelfde gegeven nog meer wordt verwerkt.
- Verantwoordelijke en FG. Knop Verwerkingsregister → Verantwoordelijke en FG. Die twee horen bovenaan het register (artikel 30 lid 1 onder a).
- Exporteren. In hetzelfde scherm: ⇧ Markdown (het register zoals de toezichthouder het wil zien) of ⇧ CSV.
Het systeem zet zelf een DPIA-signaal bij bijzondere persoonsgegevens, BSN, grootschaligheid, profilering, stelselmatige observatie of kwetsbare betrokkenen, met de reden erbij. Het signaleert; de FG beslist. Het overzicht benoemt per verwerking welke verplichte onderdelen nog ontbreken, in plaats van gaten stil te vullen.
Stap voor stap: BIV-classificatie & BBN (BIO)
De classificatie is mensenwerk, het niveau is rekenwerk.
- Scoren. Vul op het zaaktype de drie BIV-velden in: beschikbaarheid, integriteit, vertrouwelijkheid (Laag/Midden/Hoog). Dat is de uitkomst van je Business Impact Analyse.
- Afleiden. Knop BIO-classificatie → BBN afleiden. De hoogste score bepaalt BBN1, BBN2 of BBN3; raakt een gekoppelde AVG-verwerking bijzondere gegevens of het BSN, dan wordt het minimaal BBN2. De redenering staat in
bbn_bron. - Systemen erven. Applicaties krijgen automatisch het zwaarste niveau van de zaaktypen die erop draaien: informatie verhuist mee naar het systeem.
Het overzicht zet één combinatie bovenaan: een BBN3-systeem waarvan de support afloopt of dat wordt uitgefaseerd. Dat is precies de vraag die met losse spreadsheets blijft liggen, en het APM kent die lifecycle al.
Van begin tot eind, voorbeeld 1: van wet naar test
Dit is de "gouden draad": we maken de hele keten van een wettelijke eis tot de test die hem bewijst. Doel: aantoonbaar dat onze software voldoet aan de Wet kinderopvang.
- Wet ophalen. Hub → Wetgeving → Importeer wet → zoek "kinderopvang" → klik de rij. De wet + artikelen laden.
- Begrip maken. Hub → Begrippen → + Nieuw ▾ → Nieuw begrippenkader "Wet kinderopvang". Dan Nieuw begrip "kindercentrum": tab Algemeen prefLabel + kies het kader; tab Betekenis de definitie; tab Herkomst Wet koppelen. Opslaan + Valideer.
- Annoteren. Terug in Wetgeving: open het begripsbepalingen-artikel, selecteer het woord "kindercentrum" → Bestaand begrip → kies "kindercentrum". De term is nu gemarkeerd en gekoppeld.
- Requirement. Hub → Requirements → + Nieuw "Een kindercentrum moet geregistreerd zijn in het LRK", classificatie Wettelijk, MoSCoW Must. Tab Relaties → koppel aan het wetsartikel én aan het begrip "kindercentrum".
- User story. Hub → User Stories → "Als toezichthouder wil ik een kindercentrum kunnen registreren zodat toezicht mogelijk is". Relaties → realiseert → de requirement.
- Test. Hub → Testmanagement → testcase "Registratie kindercentrum slaagt". Relaties → test → de requirement. Zet Laatste run = Pass.
- Controleren. Open de requirement → het Coverage-blok toont Realizes + Tests op groen. Op het Dashboard stijgt "Requirements getest". In de Objectenbibliotheek zoek je "kindercentrum"; de kennisgraaf toont de hele keten: wet → begrip → requirement → user story → test.
Van begin tot eind, voorbeeld 2: codelijst als dataset
Doel: een waardelijst "soort opvang" vastleggen, betekenis geven en als open data publiceren.
- Codelijst in MIM. Hub → Informatiemodel → open je model → plaats een Codelist "Soort opvang" → inspector Codes → + Waarde toevoegen:
DAG"Dagopvang",BSO"Buitenschoolse opvang". - Betekenis. Bij het element, veld Begrip → Uit werkruimte… → koppel aan het begrip "opvangsoort" (maak het eerst in Begrippen als het nog niet bestaat).
- Dataset. Hub → Datasets → + Nieuw "Soort opvang (codelijst)": titel, thema, licentie (bv. CC-BY 4.0), toegang = publiek.
- Koppelen. Terug in MIM: element → Gekoppelde dataset (DCAT) → Dataset zoeken & koppelen… → kies de dataset. De blauwe DCAT-badge verschijnt op het element.
- Publiceren. Hub → Datacatalogus: de dataset staat er nu in. Met ↓ Harvest-feed download je de DCAT-AP-NL Turtle, of publiceer met ⤴ CKAN naar data.overheid.nl.
Van begin tot eind, voorbeeld 3: de GRC-cyclus
Doel: een privacyrisico beheersen en aantoonbaar toetsen.
- Hub → Risico's → "Datalek inschrijvingen": categorie Privacy, Kans = Mogelijk, Impact = Hoog → de matrix toont het brutorisico. Strategie = Verminderen.
- Hub → Beheersmaatregelen → "Toegangsbeheer + 2FA", type Preventief. Relaties → mitigeert → het risico.
- Hub → Controletoetsen (KCM) → "Kwartaaltoets toegang", uitkomst Effectief. Relaties → koppel aan de maatregel.
- Hub → Dashboard: de risicomatrix, "Risico's met maatregel", "Werking beheersmaatregelen" en de KCM-resultaten tonen samen dat de cyclus rond is.
Inzicht: Dashboard
Hub → Dashboard. Eén scherm met de gezondheid van de werkruimte: KPI-tegels (Semantische resources, Begrippen gevalideerd, Risico's met maatregel, Requirements getest, Getraceerd) en panelen: Risicomatrix, Status-verdeling, Dekking, Begrip-kwaliteit, Modellen (per model elementen + views), Begrippenkaders, Wetgeving, Financieel overzicht (TCO) en Resources per type. Zo zie je in één oogopslag wat compleet is en waar gaten zitten.
Inzicht: Semantische dekking
Hub → Semantische dekking. Meet hoeveel modelelementen (ArchiMate, MIM, BPMN) herleidbaar zijn naar een begrip of requirement, met een lijst ongedekte elementen om gericht te dichten. Hoge dekking = de modellen en de betekenislaag lopen synchroon.
Inzicht: de lenzen op je werkruimte
Naast het dashboard staan er op de hub zeven rapporten die dezelfde gegevens door een andere bril lezen. Geen van deze rapporten heeft een eigen administratie: ze lezen de koppelingen die er al liggen, dus wat je invult in de editors verschijnt hier vanzelf.
- Ketenimpact (
/static/keten.html) — Kies een object (wet, begrip, regel, applicatie) en zie wat er meebeweegt als het verandert: waar rust dit op en wat rust hierop, per soort geteld en twee stappen ver. De vraag "wat raakt deze wetswijziging?" is hier een zoekopdracht in plaats van een werkgroep. - Procesketen — Volgt per processtap welke applicatie hem invult, met de route erbij. Een stap zonder applicatie valt meteen op.
- Rationalisatielens — Toont welke applicaties dezelfde bedrijfsfunctie invullen, met de kosten erbij: de kandidaten voor uitfaseren.
- Mismatchrapport — Vindt waar hetzelfde woord twee dingen betekent en waar een verwijzing nergens uitkomt.
- Definitie-drift — Dezelfde term met een afwijkende betekenis over de lagen heen: begrip, model, dataset.
- Tijdreis — Reconstrueert met een peildatum welke definitie gold op de dag dat het besluit viel.
- Portfoliokwadranten (TIME) en Levensduur en kosten (LCM) — Zetten kosten af tegen bedrijfswaarde, en laten zien welke applicaties en contracten om een besluit vragen.
Delen: de wachtrij van voorstellen
Staat AI-assistenten (MCP) aan voor een werkruimte, dan komen voorstellen van agenten samen in de wachtrij (/wachtrij, ook te openen via Delen). Per voorstel staat er wat het is, uit welke bron het komt en namens wie het is gedaan. Je kiest wat je overneemt en wat je afwijst; overnemen zet het in het vastgestelde model, afwijzen haalt niets weg maar sluit het voorstel af als besluit. Een assistent kan nooit iets wijzigen of verwijderen, ook zijn eigen voorstel niet. Die volgorde is het punt: de machine stelt voor, een mens stelt vast — precies wat de AI-verordening sinds 2 augustus 2026 van een hoog-risicotoepassing verlangt.
Delen: de wachters
Een wachter is een vaste controle die zelf langs de werkruimte loopt en meldt wat er ontbreekt. Je start een ronde in de wachtrij met de knop Wachters laten rondgaan (of met POST /api/session/<sid>/wachters/ronde, bijvoorbeeld 's nachts vanuit een planner). Zes controles: bouwstenen die hun kavelcode dragen maar er niet aan hangen, lege kavels, bouwstenen zonder beschrijving, begrippen zonder definitie, regels die nergens naar wijzen (geen wet, geen begrip, geen bron), en voorstellen die langer dan veertien dagen op weging wachten.
Twee grenzen die erin zitten. Een wachter verzint niets: bij een begrip zonder definitie meldt hij dat, hij bedenkt er geen definitie bij, want dan zou er een afspraak in je architectuur staan die niemand heeft gemaakt. Voorstellen doet hij alleen waar het antwoord al in de werkruimte ligt, en dan gaat dat voorstel door dezelfde wachtrij als dat van een mens of een assistent, met bron en met zijn naam erbij. Waar assistenten niet mogen bouwen, stelt een wachter ook niets voor; kijken mag altijd, want kijken verandert niets. Hij draagt niets twee keer aan en niets wat al is afgewezen: een afwijzing is een besluit.
Delen: Datacatalogus
Hub → Datacatalogus. Doorzoek datasets over werkruimtes heen. Bovenaan een zoekveld; rechtsboven de tabs Toegankelijk / Publiek; links facetten op Thema, Organisatie en Toegang. Klik een dataset voor het detail (metadata + distributies; bij JSON-distributies toont bron bekijken de eerste 50 rijen). Exporteer de hele catalogus met ↓ Harvest-feed (TTL) of publiceer met ⤴ CKAN.
Delen: Objectenbibliotheek
De Objectenbibliotheek (knop Objectenbibliotheek op de startpagina, of /bibliotheek) is een publieke, alleen-lezen verkenner: geen account nodig. Zoek een object (zoekveld + soort-facet), klik het aan en bekijk: de URI (met TTL/JSON linked-data-links), de beschrijving, een plaatje/view (te vergroten en te downloaden als SVG/PNG), de interactieve kennisgraaf (Ster / Per soort / Stroom), annotaties, alle relaties als klikbare chips, "komt voor in" (views) en de geschiedenis. Ideaal om collega's of burgers mee te laten kijken zonder bewerkrechten.
Kennisgraaf in de ruimte. Op elke kaart staat de kennisgraaf van het object, sinds v1.158 in drie dimensies: het object in het midden, de buren eromheen in de ruimte, verder weg kleiner en bleker. Slepen draait, Ctrl+scroll zoomt, een klik opent de buur, een dubbelklik klapt de graaf daar een niveau verder uit. De standen Ster, Op soort (elke soort een eigen baan) en Stroom (inkomend erachter, uitgaand ervoor) blijven; de knop 2D geeft het platte plaatje. Vergroten en bewaren werken op beide.
Werkruimtes kiezen. In de linkerkolom, boven de filters, staat de lijst Werkruimtes: dezelfde kiezer als in het brein, met dezelfde bewaarde keuze. Zonder account zijn dat alle openbaar gedeelde werkruimtes, en die staan standaard allemaal aan; na inloggen komen je eigen werkruimtes erbij (met een slotje). Vink er een uit en zijn objecten verdwijnen uit de zoekresultaten.
Delen: Organisatiebrein
Kennis zit in de dingen, betekenis zit ertussen. Het Organisatiebrein (/brein, of de knop Als brein bekijken in de bibliotheek) toont dezelfde objecten als de Objectenbibliotheek, maar dan om de samenhang heen. Je staat steeds in één object: dat staat groot in het midden met zijn definitie, en eromheen hangen de buren.
Die buren staan niet op relatietype gegroepeerd maar op de vraag die ze beantwoorden: Wat betekent het? (kader, breder/smaller, bron), Waar wordt het gebruikt? (processen, applicaties, datasets, zaaktypen), Wie gaat erover? (eigenaar, vaststelling), Wat zegt de wet? (artikelen en grondslagen) en Waar hangt het verder mee samen? Links, onder de werkruimtes, staat per vraag een lens: uitzetten dooft die kant van het brein.
Het informatiemodel doet mee. Een attribuut met een eigen datatype wijst door naar dat element: cbsCode : CBSCode wordt een klikbare band waardelijst van cbsCode naar de enumeratie, en vanuit die waardelijst zie je waar zij gebruikt wordt. Een validatieregel wijst door naar de waardelijsten die zij toetst, afgeleid uit de attributen in haar uitdrukking in Kwaliteitsregeltaal. Zo loopt het pad van een objecttype via de regel naar de waardelijst, de domeintabel en de waarden die erin staan. Primitieve datatypen (Integer, CharacterString) blijven eigenschappen: die als buur tonen zou elk objecttype vullen met knopen die niets zeggen.
- Doorklikken is lopen. Klik een buur aan en die schuift naar het midden; onderin groeit het spoor van de afgelegde weg. Klik een eerdere stap aan om terug te lopen (of druk Esc).
- Wat verandert er als dit wijzigt? Volgt de keten twee stappen ver langs gebruik en wet, met een telling per soort. Bredere en smallere begrippen blijven buiten beeld: die veranderen niet mee.
- Hoe hangt dit samen met…? Kies een tweede object in het zoekveld; het brein toont het kortste pad met bij elke stap de relatie waarlangs je gaat. Geen pad is ook een antwoord.
- Deelbaar. De adresbalk volgt je plek (
/brein?object=…), en?werkruimte=<sid>beperkt het brein tot één organisatie. De knop Kopieer link onder het object zet die plek op het klembord, ook als het brein in het dashboard is ingebed. De knop Lijstweergave brengt je op dezelfde plek terug in de bibliotheek. - Beginnen. Het brein opent met een paar echte platen uit de werkruimtes (ArchiMate-views, BPMN-processen, MIM-views) als foto's op tafel: klik er een aan en je staat erin. Zoeken doe je in het veld bovenin.
- Platen. Staat het object op ArchiMate-views, MIM-views of in een BPMN-proces (als uitwerking van een ArchiMate-element), dan liggen die als kleine foto's onder het object, met een lichtkring om het object zelf; is het object zelf een view, proces, organogram of domeintabel, dan ligt die plaat vooraan (een domeintabel is de tabel zelf; in de lichtbak staat een knop CSV voor de hele tabel). Klik op een foto en de plaat opent groot in de lichtbak. Zoomen met de knoppen + en −, passend of 1:1 (ook +, −, 0, 1 en Ctrl+scrollwiel); een klik op de plaat wisselt tussen passend en ware grootte; is hij groter dan het venster, dan sleep je hem. Pijltjes voor de volgende plaat, Esc sluit. Van daaruit loop je het brein in naar de plaat zelf of open je hem in de bibliotheek.
- Eén huisstijl, twee manieren van kijken. Bibliotheek en brein delen sinds v1.154 dezelfde kop, hetzelfde thema (het brein volgt het systeemthema, licht of donker), dezelfde werkruimtekiezer links, dezelfde platen en lichtbak en dezelfde objectkaart met een kruislink naar de andere kant. Het verschil zit in de vraag: de bibliotheek is de lijst (zoeken, filteren op soort, lezen), het brein is de samenhang (in één object staan, de buren om je heen, impact en pad).
- Zoeken is altijd bereikbaar. Druk / of Ctrl+K en de cursor staat in het zoekveld, waar je ook bent; in het dashboard zweeft het zoekveld boven de plaat. Een leeg zoekveld toont waar je onlangs was. De knop Terug van de browser loopt het spoor terug in plaats van de pagina te verlaten.
Filteren op werkruimte. Linksboven staat altijd de lijst Werkruimtes: standaard staat alles aan, want daar gaat het brein om. Vink een werkruimte uit en zijn objecten verdwijnen uit de plaat, de zoeksuggesties en de impactlijst. De keuze blijft bewaard in je browser. Filteren is een kijkvoorkeur en geen rechtenkwestie: zichtbaar is en blijft wat je mag zien (publiek gedeelde werkruimtes, plus je eigen werkruimtes zodra je bent ingelogd), en een object daarbuiten blijft onbereikbaar of je het nu aanvinkt of niet. Een werkruimte die alleen jij ziet, draagt een slotje.
Waar je het vindt. Op elke publieke pagina staat rechtsboven de knop Verkennen: één paneel met alle ingangen (organisatiebrein, objectenbibliotheek, datacatalogus, publieke werkruimtes, documentatie). In je eigen omgeving staat boven het canvas de keuze Repository / Bibliotheek / Brein: dezelfde werkruimte, drie manieren om ernaar te kijken. Diezelfde drie knoppen staan rechtsboven op elke pagina, ook zonder account (inlogpagina, productpagina, bibliotheek, brein, publieke werkruimtes): Bibliotheek en Brein zijn vrij te bekijken, Repository vraagt eerst om in te loggen en brengt je daarna op de bedoelde plek.
Delen: Woordenboek
Het Woordenboek (/woordenboek) beantwoordt één vraag: wat betekent dit woord? Het toont alleen begrippen, als trefwoorden zoals in een woordenboek. Het is voor iedereen: een inwoner die een brief krijgt, een jurist, een nieuwe collega. Je hebt geen account nodig; na inloggen komen je eigen werkruimtes erbij.
Vier manieren om naar dezelfde werkruimte te kijken. In de repository maak en beheer je begrippen, modellen en regels. De andere drie lezen alleen, en elk beantwoordt een andere vraag:
| Objectenbibliotheek | Organisatiebrein | Woordenboek | |
|---|---|---|---|
| Vraag | Wat staat er allemaal? | Hoe hangt het samen? | Wat betekent dit woord? |
| Inhoud | alle soorten objecten, met relaties en platen | alle soorten, als netwerk, met impact en pad | alleen begrippen |
| Vorm | lijst en objectkaart | één object met zijn buren eromheen | trefwoord met genummerde betekenissen |
| Handig voor | architect, informatieanalist | architect, beleid | iedereen |
- Zoeken. Typ een paar letters; suggesties verschijnen meteen: eerst het trefwoord, dan synoniemen, dan woorden die ermee beginnen. Pijltjes en Enter werken. Bij een tikfout vraagt het woordenboek Bedoelde u ...? Zet ook in definities aan om ook in de betekenissen te zoeken. Je kunt filteren op woordenlijst en status.
- Talen. Kies bij Zoeken in de taal. Het trefwoord staat in die taal. Is er in die taal geen term, dan zie je de Nederlandse term met het merkje niet vertaald. Vindt die taal niets, dan zoekt het woordenboek in alle talen en zegt het dat erbij. Bij elk trefwoord staan de vertalingen.
- Een trefwoord. Staat een woord in meer woordenlijsten, dan zie je elke betekenis apart, genummerd 1, 2, 3, met de woordenlijst erbij. Per betekenis: definitie, toelichting, voorbeeld, synoniemen, breder, smaller en zie ook, de plaats in de hiërarchie, overeenkomsten met begrippen elders, de bron, staat in de wet (artikelen die het begrip definiëren of gebruiken) en gebruikt in (regels, processen en modellen). Onderaan status, datums, URI en downloads als Turtle en JSON-LD. Een begrip dat met dezelfde URI in twee werkruimtes staat, zie je één keer.
- Bladeren. In de rand staan duimgrepen van A tot Z. Een woordenlijst heeft drie tabs: Alfabetisch, Hiërarchie en Groepen.
- Plaats in de taxonomie. Bij elke betekenis staat een ladder: van het bovenste begrip naar het woord zelf (vet). Je ziet de twee lagen erboven; hoger toont de rest. Eronder staan de smallere begrippen, met een getal: zoveel begrippen hangen er weer onder. Klap ze een laag tegelijk open. Naast noemt begrippen onder hetzelfde bredere begrip. Heeft een begrip meer bredere begrippen, dan volgt de ladder er één en staat de rest bij ook onder. Zegt de bron wat voor relatie het is, dan staat dat erbij: soort van, deel van of voorbeeld van. Staat hetzelfde begrip in een andere woordenlijst, dan zie je zelfde begrip in ... of vergelijkbaar in ....
- Groepen. Onder de ladder staat het pad van de groep, bijvoorbeeld 72 GEOGRAFIE › 7226 Azië-Oceanië. Elke groep heeft een eigen pagina: eerst de groepen erin, dan de begrippen van A tot Z, met duimgrepen bij een grote groep. In de tab Groepen zoek je een groep op naam.
- Hiërarchie. De tab Hiërarchie toont de topbegrippen per bladzijde, met duimgrepen. Met Spring naar typ je een begrip; de boom klapt dan open tot dat begrip.
- Vaste adressen.
/woordenboek/leggeropent het trefwoord,/woordenboek?uri=...zoekt een begrip op zijn URI. Een trefwoord drukt af als een bladzijde uit een woordenboek. - Waar je het vindt. In het menu onder Product, in de knop Verkennen, in de kop van de bibliotheek en het brein, onderaan de linkerkolom van je eigen omgeving en in het opdrachtpalet (Ctrl+K). Bij een begrip in de bibliotheek en het brein staat de link Opzoeken in het woordenboek.
Delen: AI-agenten (MCP)
Vraag een taalmodel wat een term betekent en je krijgt een aannemelijk antwoord dat nergens op steunt. Sluit het aan op je werkruimte en het haalt de vastgestelde definitie op, met de URI erbij en de datum van vaststelling. Vindt het niets, dan hoort het dat te zeggen; die instructie krijgt de agent bij het verbinden mee.
- Delen. Alleen werkruimtes die je publiek deelt komen naar buiten, en alleen om te lezen. Wat je niet deelt bestaat voor een agent niet.
- Aansluiten op je eigen werkruimtes (OAuth). Geef je AI-toepassing
https://www.semanticxl.com/api/mcp/mijn. Je assistent stuurt je eenmalig naar een toestemmingsscherm in je browser; daar zie je wie er vraagt, wat hij mag en in hoeveel werkruimtes, en dan geef je toestemming. Daarna werkt hij met jouw rechten: wat jij niet mag zien, ziet je assistent ook niet, en verlies je ergens toegang, dan verliest hij die mee. Je hoeft niemand om een sleutel te vragen. Wat een assistent nooit krijgt is wijzigen of verwijderen: schrijven gaat alleen als voorstel. Bij je profiel staat onder Verbonden agenten welke programma's namens jou werken, met een knop om dat per programma in te trekken. Technisch is dit OAuth 2.1 met PKCE en dynamische registratie (RFC 7591), dus een MCP-client regelt het zelf; er is niets in te stellen. - Aansluiten op wat publiek is (zonder account). Geef je AI-toepassing dit adres:
https://www.semanticxl.com/api/mcp. In Claude gaat dat metclaude mcp add --transport http semanticxl <adres>; in ChatGPT via Connectors in de ontwikkelaarsmodus. Er is geen account of installatie voor nodig. Open je het adres in een browser, dan zie je een beschrijving met de beschikbare gereedschappen. - Wat de agent kan. Achttien gereedschappen. Lezen: een begrip zoeken, de volledige kaart van een begrip opvragen (definitie, toelichting, bronnen, relaties, vaststelling), een werkproces zoeken met bewaartermijn en herkomst, de wettelijke grondslag ophalen, de werkruimtes opsommen, de domeintabellen opsommen en de toegestane waarden in zo'n tabel opzoeken op code of omschrijving. Met een organisatietoken ook het applicatieportfolio, de bedrijfsregels, de overige registers en de impact van een wijziging. Schrijven bestaat alleen als voorstel doen, in elke notatie, en dat staat hieronder.
- Waardelijsten. Bij een domeinwaarde krijgt de agent de code, de omschrijving en tot wanneer die geldig is. Verlopen waarden blijven buiten beeld, met vermelding hoeveel er zijn weggelaten. De omvang van de lijst staat er altijd bij, zodat een agent de eerste waarden niet voor de hele lijst aanziet.
Agenten laten meebouwen. Bij Delen staat naast organisaties en publiek een derde keuze: AI-assistenten (MCP). Zet die aan en assistenten mogen in die werkruimte voorstellen doen in elke notatie: begrippen, capabilities, bedrijfsregels en requirements, ArchiMate-elementen en -relaties, MIM-objecttypen met attributen, BPMN-processen, domeintabellen met waarden, en de platen waarop dat samen staat. Modelvoorstellen landen in een eigen model "Voorstellen van agents" naast het vastgestelde model, zodat er nooit iets ongewogen in je eigen model komt; in de modelboom van het canvas neem je met de rechtermuisknop over wat je accepteert, in één keer of per element. Alle notaties bij elkaar staan in de wachtrij (/wachtrij, ook te openen vanuit Delen): daar weeg je een voorstel met zijn bron en namens wie het is gedaan, en gaat overnemen of afwijzen in één handeling. Afwijzen haalt niets weg: het voorstel verlaat de wachtrij en blijft als besluit terug te lezen. Een relatie gaat langs de relatiematrix van ArchiMate 4.0, en een weigering zegt wat er wél mag. Een bron is verplicht, de assistent zegt namens wie hij bouwt, en het voorstel komt binnen met status Concept. Iemand met de rol editor stelt vast. Wijzigen of verwijderen kan een assistent nooit, ook zijn eigen voorstel niet, en er is een bovengrens aan de wachtrij. Je hoeft dus niemand persoonlijk rechten te geven. Het recht staat in de werkruimte zelf en staat standaard uit; bij het inlezen van een werkruimte-zip staat het altijd uit, want rechten reizen niet mee met gegevens.
Samen bouwen. Op De Bouwplaats staat het stappenplan voor Claude Code en Codex naast elkaar, met voorbeeldvragen, en het plan om architecten met hun assistent te laten meebouwen aan de Referentiearchitectuur Agentische Overheid.
Rapport & export
Hub → Rapport bundelt de hele werkruimte tot één print-klaar PDF/HTML-document (samenvatting, status, governance & risico, dekking, begripskwaliteit, applicatieportfolio, modellen, begrippenkaders en wetgeving). Per objecttype exporteer/importeer je los via de tegel-acties (ZIP / ZIP). Begrippen exporteren ook naar Turtle/RDF-XML/CSV/ReSpec; wetgeving en datasets naar TTL. Een hele werkruimte exporteer je als werkruimte-<id>.zip en lees je op de startpagina weer in (kaart ZIP). Heet het bestand nog werkruimte-<id>.zip, dan vraagt de import of de werkruimte op dat id terug mag: dan blijven de verwijzingen tussen modellen (MIM naar architectuur, BPMN naar architectuur) en deeplinks kloppen. Dat kan alleen als dat id vrij is, dus de oude werkruimte eerst verwijderen; anders wordt het een nieuwe werkruimte met een nieuw id.
Uitwisselen: Catalogi API & MDTO
De zaaktypecatalogus is uitwisselbaar met een zaaksysteem via de VNG Catalogi API (ZTC). Wij beheren de catalogus, het zaaksysteem voert de zaken uit.
- Exporteren. Tegel Zaaktypen → knop Catalogi API → vul domein, RSIN en contactpersoon → Bundel downloaden. Je krijgt catalogus, zaaktypen, resultaattypen, informatieobjecttypen en hun relaties met de attribuutnamen van de standaard. De export meldt zelf welke verplichte ZGW-velden nog leeg zijn en wat wij principieel niet leveren.
- Importeren. Kies een JSON-bestand of haal rechtstreeks op bij een draaiende catalogus (URL + token). Bestaande zaaktypen worden herkend op identificatie en bijgewerkt, dus opnieuw inlezen dubbelt niet. Je ziet eerst een proefronde. Staat de selectielijstklasse in jouw selectielijst, dan wordt daar de waardering met termijnen en herkomst uit afgeleid: geen losse URL maar een navertelbare bewaartermijn.
- Mapping bekijken. De vertaaltabel is opvraagbaar via
/api/koppelvlak/catalogi/profiel: per attribuut waar de waarde vandaan komt en welke conversie erbij hoort ("8 weken" wordtP56D). - MDTO. In het waarderingsoverzicht: ⇧ MDTO levert een metagegevensprofiel op typeniveau (per zaaktype een dossiersjabloon met classificatie, waardering, bewaartermijn en beperking gebruik). Bewust geen SIP: de dossiers zelf leven in het zaaksysteem.
- Vernietigingsprognose. Rekent per zaaktype brondatum plus procestermijn plus archiefactietermijn uit, met een status per regel (te vernietigen, later, geen brondatum, zaakafhankelijk, geen waardering) en een CSV-export.
Signalen: de bel op je startpagina
Rechtsboven op de startpagina staat een bel met een teller. Die verzamelt vier dingen, en alleen uit werkruimtes waar je zelf toegang toe hebt:
- Vastgesteld — een begrip is vastgesteld. Dat is het moment waarop anderen erop kunnen bouwen.
- Favoriet gewijzigd — iets dat je met een ster hebt gemarkeerd is door een ander aangepast.
- Van jou gewijzigd — iemand anders zat aan een object waar jij eigenaar van bent. Je eigen wijzigingen geven geen signaal; die wist je al.
- Herijking — de radar: jouw begrippen waarvan de herijkingsdatum verlopen is of binnen 30 dagen valt.
Taken staan boven nieuws, en het meest verlopen bovenaan. Klik een regel om het object in het organisatiebrein te openen. Alles gezien zet de teller op nul; een openstaande herijking blijft wel staan, want die verdwijnt doordat je hem oppakt en niet doordat je ernaar keek. Er gaat geen mail uit: de bel is het kanaal.
Iets melden: bug, vraag of idee
Rechtsonder staat op elke pagina het kleine knopje Melden. Ligt er een knop van de pagina onder, dan schuift het zelf opzij. Kies het soort (bug, vraag, idee), geef een titel en beschrijf wat er speelt. Verder hoef je niets in te vullen: pagina, werkruimte, geselecteerde resource, versie, browser en de laatste tien JavaScript-fouten gaan automatisch mee, en onder Wat sturen we mee? zie je precies wat dat is.
- Ging er net iets mis in de browser? Dan biedt de knop twintig seconden lang zelf aan om te melden, met de fout er al bij.
- Een schermafdruk kan erbij: plakken met Ctrl+V, slepen of kiezen (PNG of JPEG).
- Staat het knopje toch in de weg? Pak het vast en sleep het opzij; het blijft daar staan, ook na een herlaad.
- Je volgt je meldingen op /meldingen: status, reacties en de mogelijkheid om aan te vullen. Met Ik ook stem je mee op een bestaande melding.
- Beheerders zien daar alles, met filters, statusbeheer en interne notities. Exporteren kan als ZIP (dossier, machineleesbare regels én de meegestuurde schermafdrukken), of los als markdown of JSONL.
- Afhandelen doe je met Afmelden: kies opgelost of afgewezen, vul de versie in waarin het is opgelost (de draaiende versie staat al voorgevuld) en schrijf kort wat er is gedaan. Die tekst komt als zichtbare reactie in de melding, zodat de melder het in zijn eigen overzicht ziet. Met Archiveren verdwijnt de melding uit de werkvoorraad zonder weg te zijn: het archieffilter en de export halen hem terug. Afgehandelde archiveren doet dat in één keer voor alles wat opgelost of afgewezen is.
Tegels per organisatie en per rol
Drieëndertig tegels zijn te veel voor één demo, en niet elke organisatie neemt alles af. Daarom staan er twee knoppen achter elkaar in de adminmodule (Organisaties → Tegels & rollen):
- Licentie per organisatie. Vijf pakketten: Kern (begrippen, wetgeving, de drie canvassen, dashboard en rapport — altijd aan), Data en betekenis, Requirements en test, Governance en compliance, en Portfolio en kosten. Staat een pakket uit, dan ziet niemand het, ook de eigenaar van de organisatie niet.
- Rolprofiel per lid. Negen profielen: beheerder, enterprise architect, informatiemodelleur, begrippenbeheerder, jurist of wetsanalist, proces- en zaakanalist, risk en compliance, portfoliomanager, en lezer. Een profiel kan nooit méér tonen dan de licentie toelaat.
Zichtbaar is dus licentie × rolprofiel. Nog niets ingesteld betekent alles: een nieuwe klant die een leeg scherm krijgt is een ergere fout dan een demo die te vol staat.
Wie stelt wat in? De licentie wordt door SemanticXL gezet (Admin → Organisaties → Tegels & rollen); wat een organisatie heeft afgenomen is een afspraak met de leverancier en geen knop voor de klant. De rolprofielen richt de organisatie zelf in via Mijn organisatie (/organisatie, ook in het menu Verkennen): een eigenaar of beheerder van de organisatie kiest per lid een profiel en ziet daaronder ter informatie wat er is afgenomen.
Per werkruimte. Werk je in een werkruimte die met een organisatie is gedeeld, dan geldt de licentie van díe organisatie. Hoor je bij meer clubs, dan verandert dat niets aan wat je in die werkruimte ziet.
Dit gaat over zichtbaarheid, niet over rechten. Wat je mag blijft de werkruimterol (eigenaar, editor, bijdrager, lezer) en die verandert hier niet. Een verborgen tegel is geen afgeschermde tegel: wie de URL kent komt er nog steeds, mits hij toegang heeft tot de werkruimte. Gebruik dit om een scherm behapbaar te houden, niet om iets af te schermen.
Volledig ontwerp, inclusief wat er bewust niet gebeurt: docs/Tegels-En-Rollen.md.
Waarom geen RACI? RACI zit al in SemanticXL waar het thuishoort: per object, via de organisatie-eenheid naar processen, regels en risico’s. Menu-zichtbaarheid eruit afleiden werkt niet: een nieuwe begrippenbeheerder heeft nog geen enkele toewijzing en zou een leeg scherm krijgen, en het beeld zou verschuiven zodra iemand een toewijzing verplaatst. "Geïnformeerd" gaat ook over notificaties (de signalen-bel), niet over welke onderdelen je opent.
Federatie: werkruimtes koppelen
Grote organisaties werken met referentiewerkruimtes (centrale, deelbare kennisbronnen zoals een organisatiebreed begrippenkader of een wetgeving-bibliotheek) en teamwerkruimtes voor projecten. Federatie verbindt die twee zonder te kopiëren: teams linken rechtstreeks naar de centrale kennis, en de herkomst blijft zichtbaar.
- Referentie aanmerken: open in de kennisbank-werkruimte de hub → Federatie en zet het vinkje referentiewerkruimte (met een korte omschrijving). Alleen een editor/eigenaar kan dit.
- Abonneren: open in de team-werkruimte hetzelfde paneel en kies een referentie uit de lijst. Je ziet alleen referenties die al voor jou zichtbaar zijn (publiek of via je organisatie gedeeld) — abonneren geeft dus geen extra rechten, het is alleen ordening.
- Gericht koppelen: in elk koppel-venster verschijnt nu de optie Referenties: je doorzoekt je eigen werkruimte plus je abonnementen, zonder ruis van alle andere werkruimtes. Resultaten uit een referentie zijn herkenbaar aan het label van de referentie.
- Extern gebruik (voor de kennisbank-beheerder): knop Extern gebruik toont per geabonneerde werkruimte en per object hoeveel links naar jouw kennis wijzen — impact-inschatting én bestaansrecht in één overzicht. Werkruimtes waar je zelf geen toegang toe hebt verschijnen geanonimiseerd.
- Upstream-controle (voor het team): knop Upstream-controle beoordeelt al je uitgaande federatieve links: is het doel ongewijzigd, gewijzigd, vervallen of verdwenen? Bij verdwenen doelen biedt herstel via URI een reparatie: het object wordt teruggevonden op zijn blijvende URI (bijvoorbeeld na een her-import in de referentie).
In de traceerbaarheids-graaf verschijnen koppelingen naar andere werkruimtes als extern knooppunt met het werkruimte-label, zodat de herkomst van kennis altijd zichtbaar blijft. Het volledige ontwerp staat in docs/Federatie-Ontwerp.md; het ontwerp zelf is als semantisch model vastgelegd in de SemanticXL-werkruimte (usecases UC-14 t/m UC-20).
Publiceren naar een triplestore (TriplyDB)
Een werkruimte kan als linked data naar een externe triplestore, zodat de data daar met SPARQL, GraphQL en zoekindexen te bevragen is. Twee stappen:
- Verbinden — onder Mijn organisatie (
/organisatie) vult een organisatiebeheerder het API-adres (bijvoorbeeldhttps://api.klant.triply.cc), het account en een API-token in. Let op het verschil: inhttps://api.klant.triply.ccisklantde naam van de instance; het account is de gebruiker of organisatie daarbinnen (bijvoorbeeld je eigen gebruikersnaam). Vul je het verkeerde in, dan noemt het scherm op welke accounts dit token wél mag gebruiken. Het token wordt eerst uitgeprobeerd en daarna versleuteld opgeslagen; het scherm toont daarna alleen de laatste vier tekens. Een adres dat naar een intern netwerk wijst wordt geweigerd. - Publiceren — knop Naar triplestore in de balk boven de tegels. Kies de lagen en publiceer. Elke laag krijgt een eigen graaf (
…/ws/<werkruimte>/sem), en er gaat een vijfde graaf…/metamee met wat er is gepubliceerd, wanneer en met welke checksum.
Publiceren is spiegelen. De graaf van die laag wordt vervangen door wat er nu in de werkruimte staat; triples die in Triply met de hand aan diezelfde graaf zijn toegevoegd, gaan verloren. Verrijken doe je in een eigen graaf of in een dataset die de onze importeert.
Altijd privé. SemanticXL maakt de dataset privé aan en zet dat nooit om. Openbaar maken kan, maar bewust en in de beheerinterface van Triply. De URI's in de graaf zijn dezelfde als hier: de basis volgt de URI-strategie van de werkruimte.
Vijf lagen. De betekenislaag (begrippen, wetgeving, regels, datasets en de andere semantische soorten), ArchiMate, MIM/UML/ERD, BPMN en domeinwaarden. Het scherm biedt alleen aan wat de werkruimte werkelijk heeft: een vinkje voor een lege laag levert alleen een foutmelding op.
Wat er in de betekenislaag meegaat. Naast de objecten zelf ook hun eigenschappen: van een applicatie dus lifecyclestatus, bedrijfswaarde, technische fit, kosten, leverancier, hosting en eigenaar. Grote opgeslagen blobs (tabelrijen, annotaties, afbeeldingen) gaan niet als literal mee; die horen als structuur in de graaf of nergens.
Begrippen volledig naar NL-SBB. Naast de definitie en de SKOS-relaties gaan ook de synoniemen (skos:altLabel), verborgen labels, de labels en definities in andere talen (elk met hun taalcode) en de herkomst (dcterms:source) mee. Zonder die velden is een begrip in de triplestore een woord met een zin eronder.
Domeinwaarden als SKOS. Elke domeintabel wordt een skos:ConceptScheme en elke rij een skos:Concept met skos:notation (de code) en skos:prefLabel; de overige kolommen komen mee onder hun kolomnaam. Dat is de vorm waarin codelijsten overal worden gepubliceerd. Ze zitten in een eigen laag, want een werkruimte als Aquo heeft er duizenden en die wil je kunnen weglaten.
Grote grafen gaan in delen. De simpele upload van TriplyDB gaat tot 5 MB. Wat groter is, wordt op statement-grenzen opgeknipt en in stukken verstuurd; elk deel is op zichzelf leesbare RDF. De graaf wordt één keer vooraf geleegd, niet per deel, anders zou deel twee deel één wissen.
De vocabulaire. Voor MIM gebruiken we de termen van Geonovum (mim:Objecttype, mim:Attribuutsoort, mim:Relatiesoort). Voor ArchiMate bestaat geen normatieve RDF-vocabulaire van de Open Group en voor BPMN is een volledige ontologie zwaarder dan nodig; daarvoor is er een kleine SemanticXL-vocabulaire (https://www.semanticxl.com/ns/model#) met het type zoals de standaard het noemt, de laag, en de bron en het doel van een relatie. Een relatie staat er twee keer in: als rechtstreeks predicaat om mee te bevragen (sxlm:serving) en als eigen resource voor wie het type of de naam wil.
Twee URI's per object. De betekenislaag verwijst naar modelobjecten met urn:semanticxl:<soort>:<id>; dat is de sleutel waarop de grafen op elkaar aansluiten. Daarnaast krijgt elk object een http-URI onder de basis van de werkruimte, met owl:sameAs ertussen. Daardoor is in de triplestore te vragen: welke applicaties raken dit begrip, en welke wet ligt eronder. Die http-URI is ook dereferenceerbaar: vraag je hem op met Accept: text/turtle, dan krijg je de triples van dat object met zijn relaties; open je hem in een browser, dan kom je uit in het organisatiebrein. Zichtbaar is wat je mag zien, net als in de bibliotheek. Ontwerp en vervolgstappen: docs/Triply-Sync-Ontwerp.md.
Koppelen met andere systemen (API-token)
De publieke API en het MCP-koppelvlak tonen alleen wat publiek gedeeld is. Wil een ander systeem (TOPdesk, ServiceNow, een rapportagetool) ook bij gegevens die dat niet zijn, dan gebruik je een API-token op organisatieniveau.
- Token maken. Admin-paneel → Organisaties → knop API-tokens. Geef het een naam waaraan je later ziet waar het voor is, kies de geldigheid (standaard een jaar) en kopieer het geheim. Dat staat één keer in beeld: daarna bewaart de server alleen een hash.
- Reikwijdte. Het token geeft alleen-lezen toegang tot precies de werkruimtes die met die organisatie zijn gedeeld. Ontkoppel je een werkruimte, dan vervalt de toegang vanzelf; er is geen tweede rechtenlijst.
- Gebruiken. Altijd in de header, nooit in de URL:
Authorization: Bearer sxl_…. Begin bij/api/data/werkruimtesvoor de lijst met werkruimtes, en haal daarna op wat je nodig hebt. - Applicatieportfolio.
/api/data/session/<werkruimte>/apmgeeft alle applicaties met hun eigenschappen en relaties;…/apm.csvgeeft hetzelfde als CSV die direct in Excel opent. Eigen velden komen mee, ook als ze niet in de standaardkolommen staan. - Intrekken. In hetzelfde scherm. Dat werkt onmiddellijk; de historie blijft staan, inclusief wanneer het token voor het laatst is gebruikt.
| Endpoint | Wat je krijgt |
|---|---|
GET /api/data/werkruimtes | de werkruimtes die dit token mag lezen, met hun titel |
GET /api/data/session/{id}/apm | alle applicaties met eigenschappen en relaties (JSON) |
GET /api/data/session/{id}/apm.csv | dezelfde portfolio als CSV (puntkomma + BOM, opent in Excel-NL) |
GET /api/data/session/{id}/{soort} | de ruwe objecten van een soort: begrip, zaaktype, dataset, contract… |
Foutmeldingen: 401 geen of ongeldig token · 404 werkruimte bestaat niet of is niet gedeeld met deze organisatie · 429 te veel verzoeken (wacht de Retry-After af; de grens ligt op 600 per minuut per token).
docs/API-Instructie-Leverancier.md. Daarin staan de endpoints, de betekenis van elk veld in de APM-export, de foutmeldingen en werkende voorbeelden in Python en PowerShell. Stuur het token zelf apart, via een kanaal waar het niet blijft staan.Beveiligingslog naar een SIEM
Elke gebeurtenis rond toegang wordt weggeschreven als één JSON-regel: aanmelden (geslaagd, mislukt, geblokkeerd door de rate-limit, opgeschort account, tweede factor gevraagd), afmelden, registreren, een wachtwoord dat opnieuw is ingesteld, geweigerde toegang, een werkruimte die gedeeld of publiek wordt gezet, een gedownloade werkruimte-export en serverfouten.
Waar die regels heen gaan bepaalt de beheerder met SEMANTICXL_AUDIT_LOG: leeg is stdout (de containerlog), een pad schrijft naar een roterend bestand dat een agent kan volgen, en uit zet het af. De tijd staat in UTC en elk verzoek draagt een verzoek_id, overgenomen uit X-Request-Id als de proxy die meestuurt.
Auditlog in de applicatie. Dezelfde regels, aangevuld met beheerhandelingen (gebruikers, rollen, toegang tot werkruimtes, instellingen, tokens, modellen importeren, leegmaken of verwijderen), bewaart SemanticXL ook zelf. Systeembeheerders zien ze onder Beheer → Auditlog (/auditlog): filteren op periode, gebeurtenis, ernst, gebruiker, werkruimte en vrije tekst, en het resultaat exporteren als CSV of JSON. De eigenaar van een werkruimte haalt in het infovenster van de werkruimte het auditlog en de wijzigingslog van die werkruimte op als CSV. De bewaartermijn is standaard 400 dagen (SEMANTICXL_AUDIT_BEWAAR_DAGEN).
URI-strategie
Elk object krijgt automatisch een unieke, blijvende webadres-naam (URI). Onder URI-strategie stel je de basis-URI en de identifier-vorm (leesbare slug of uuid) per type in — globaal, met optionele override per werkruimte. URI-migratie herschrijft bestaande URI's naar de actuele strategie (zelfde identifier, nieuwe basis).
Architectuur: de praatplaten
Hoe zit SemanticXL zelf in elkaar? Vier platen vertellen het verhaal: wie het platform raakt, hoe de binnenkant is opgebouwd, waarom vier modelleertalen op één kennislaag het verschil maken, en hoe een wijziging van dev-PC naar productie reist.
Plaat 1: systeemcontext
SemanticXL is één webapplicatie met vier gelijkwaardige modelleertalen op een gedeelde kennislaag. GitHub speelt drie rollen tegelijk: identity provider (OAuth-login), synchronisatiedoel voor CoArchi-repo's en het deploykanaal van de broncode zelf. Federatie laat werkruimtes elkaars begrippen refereren zonder kopiëren.
Plaat 2: de binnenkant, de runtime
Eén FastAPI-proces serveert alles: editors, JSON-API's en WebSockets. Twee bewuste keuzes bepalen het beeld: bestanden in plaats van een model-database (modellen zijn leesbare bestanden per werkruimte, met atomic writes en versie-snapshots; alleen identiteit/autorisatie zit in een database) en één worker (realtime-samenwerking leeft in het geheugen van één proces).
Plaat 3: de kennislaag, vier notaties in één werkruimte
De inhoudelijke kern: een klant, subsidie of vergunning is niet vier keer gemodelleerd maar één keer, met vier projecties (ArchiMate, NL-SBB, MIM, BPMN). Cross-model-links zijn eerste-klas data en elke resource heeft een canonieke, dereferenceerbare URI. Daarop bouwen de analysefuncties: wetswijziging-radar, semantische dekking, definitie-drift en de RegelSpraak-export naar ALEF.
Plaat 4: de ontwikkelstraat, van dev-PC via GitHub naar Hetzner
Drie stations: ontwikkelen (lokale dev-server met SQLite en dezelfde testsuite als CI), integreren (GitHub draait bij elke push de volledige suite, inclusief Playwright-e2e; GitHub is de enige route naar productie) en draaien (een Ubuntu-VM in de Hetzner-cloud met Coolify bouwt de image uit de Dockerfile en wisselt de container; Traefik regelt domein en certificaat). De enige stateful onderdelen zijn het datavolume met werkruimtes en MariaDB.
Referentie: relatietypen
De koppel-vensters tonen alleen de relatietypen die voor dat objecttype geldig zijn. De meest gebruikte:
- Begrippen (SKOS): broader/narrower/related, topConceptOf, en harmonisatie exactMatch/closeMatch/relatedMatch/broadMatch/narrowMatch; vervanging replaces/replacedBy.
- Realisatie: usesDefinition (gebruikt definitie), realizes (realiseert), tests (test), derivedFromLaw (afgeleid van wet).
- GRC: bedreigt (risico → asset), mitigeert (maatregel → risico), gedektDoor, toetst (KCM → maatregel).
- Organisatie (RACI): verantwoordelijk/eindverantwoordelijk/geraadpleegd/geïnformeerd.
- Data & model: relatedToMimElement (dataset → MIM-element), relatedToArchiMateElement.
Referentie: standaarden
SemanticXL bouwt op open standaarden, zodat je kennis herbruikbaar en uitwisselbaar blijft:
NL-SBB ↗ SKOS ↗ SBVR ↗ DMN 1.3 (DRD) ↗ Kwaliteitsregeltaal (NORA) ↗ Raamwerk Gegevenskwaliteit ↗ ODCS v3.1.0 ↗ W3C DQV ↗ OSLC-RM ↗ ArchiMate ↗ MIM ↗ UML 2.5 (klassediagram) ↗ XMI (UML) ↗ ERD (crow's foot) ↗ BPMN ↗ DCAT-AP-NL ↗ ELI ↗ RDF/Turtle ↗