Onder de motorkap
LDMax is gebouwd als een moderne webapplicatie, maar de kern is inhoudelijk sterk gericht op Linked Open Data. Dat zie je terug in vrijwel alle onderdelen van het platform. Gebruikers kunnen datasets en organisaties doorzoeken, RDF-resources bekijken, SPARQL-query’s uitvoeren, IIIF-weergaven openen en kennisbankartikelen lezen. Tegelijk bevat de applicatie ook een beheeromgeving voor redacteuren en beheerders, met functies voor datasets, organisaties, mailverkeer, accounts en kennisbankcontent.

De gebruikersinterface is gebouwd met Svelte en SvelteKit. Dat betekent dat pagina’s server-side kunnen worden opgebouwd, maar ook snel en interactief aanvoelen in de browser. Voor veel UI-onderdelen gebruikt LDMax Flowbite-Svelte, bovenop Tailwind CSS. Daardoor kunnen formulieren, navigatie, tabellen, modals en andere interfacecomponenten relatief compact en consistent worden opgebouwd, zonder dat alles vanaf nul hoeft te worden geschreven.
Onder de gebruikersinterface draait een klassieke applicatielaag voor alles wat niet direct RDF is. Denk aan accounts, sessies, toegangscontrole, kennisbankartikelen en beheerdata rond datasets en organisaties. Daarvoor gebruikt LDMax PostgreSQL als relationele database, met Drizzle ORM als type-veilige database-laag. Die combinatie is praktisch: relationele gegevens zoals gebruikers, instellingen, rechten en artikelmetadata passen goed in een traditionele database, terwijl de Linked Data zelf via SPARQL toegankelijk blijft.
Voor authenticatie gebruikt de applicatie meerdere mechanismen. Naast e-mail en wachtwoord zijn er ook voorzieningen voor passkeys, WebAuthn en two-factor authentication. Daarbij leunt het project onder meer op open source bibliotheken zoals Oslo voor cryptografische en auth-gerelateerde bouwstenen, en Nodemailer voor uitgaande e-mail.
De semantische kern van LDMax zit in de SPARQL- en RDF-laag. Hier speelt QLever een centrale rol. QLever is de SPARQL-backend waarop query’s worden uitgevoerd. Vanuit de applicatie worden query’s naar een QLever-endpoint gestuurd, waarna de resultaten worden vertaald naar tabellen, kaarten en detailweergaven. QLever is daarmee niet zomaar een technisch detail, maar de motor achter de browse- en zoekervaring voor Linked Data.
Bovenop QLever gebruikt LDMax ook Qlue voor de query-editorervaring. In de browser wordt daarvoor Monaco Editor ingezet, dezelfde editorfamilie die bekend is uit VS Code. Dat maakt het mogelijk om SPARQL in een prettige, moderne editor aan te bieden, inclusief syntax-ondersteuning en een meer IDE-achtige werkwijze. Voor eindgebruikers betekent dit dat de queryomgeving niet voelt als een kale textarea, maar als een volwaardige werkplek om datasets te onderzoeken.
RDF-data wordt in LDMax niet alleen bevraagd, maar ook gepresenteerd en omgezet. Daarvoor gebruikt het project verschillende open source libraries, zoals N3.js voor parsing en serialisatie van RDF, jsonld.js voor JSON-LD, rdflib.js en validatiebibliotheken zoals rdf-validate-shacl en shacl-engine. Daarmee kan LDMax niet alleen triples tonen, maar ook RDF structureren, converteren en controleren.
Apache Airflow gebruiken we binnen LDMax als orkestratielaag voor onze ETL’s. Het bepaalt niet wat de data is, maar zorgt ervoor dat alle technische stappen in de juiste volgorde en op het juiste moment worden uitgevoerd: van het ophalen van brondata en het omzetten naar RDF tot het bijwerken van metadata, het bouwen van een QLever-index en het verversen van de bijbehorende infrastructuur.
Daardoor zijn deze processen niet afhankelijk van handmatig werk, maar reproduceerbaar, planbaar en inzichtelijk. Airflow is binnen LDMax dus vooral de motor die zorgt dat datastromen betrouwbaar van bron naar publicatie lopen.
Een belangrijk onderdeel van de applicatie is dereferencing. LDMax kan resources beschikbaar maken op stabiele URI’s, en afhankelijk van de vraag van de client een HTML-weergave of een RDF-representatie teruggeven. Dat principe van content negotiation is essentieel binnen Linked Data: dezelfde identifier moet bruikbaar zijn voor zowel mensen als machines. In de praktijk betekent dit dat een gebruiker een nette pagina ziet, terwijl een applicatie bijvoorbeeld Turtle of JSON-LD kan opvragen.
Daarnaast ondersteunt LDMax ook IIIF-functionaliteit. Voor beeldmateriaal kan het platform IIIF-gerelateerde routes en viewers aanbieden, zodat objecten niet alleen als metadata zichtbaar zijn, maar ook als bruikbare beeldbron in een viewercontext. Daarvoor wordt onder meer Tify gebruikt als viewercomponent.
Wat dit alles interessant maakt, is dat LDMax eigenlijk twee werelden samenbrengt. Aan de ene kant is het een normale webapplicatie met gebruikers, formulieren, beheerpagina’s en content. Aan de andere kant is het een semantisch publicatieplatform dat RDF, SPARQL, IIIF en duurzame identifiers serieus neemt. Juist die combinatie maakt het platform bruikbaar voor erfgoedinstellingen en andere organisaties die hun data niet alleen willen opslaan, maar ook duurzaam en volgens Linked Data-principes willen publiceren.
Kort gezegd: aan de voorkant oogt LDMax als een schone en toegankelijke webapplicatie, maar onder de motorkap draait een gelaagde architectuur. SvelteKit en Flowbite-Svelte verzorgen de interface, PostgreSQL en Drizzle beheren de applicatiedata, en QLever vormt het SPARQL-hart van het platform. Daaromheen zorgen open source componenten voor authenticatie, e-mail, RDF-verwerking, validatie, query-editing en IIIF-weergave. Dat maakt LDMax technisch stevig, maar voor de gebruiker blijft het belangrijkste voordeel simpel: linked data wordt eindelijk werkbaar.