SCML

SCML, het Semantisch Communicatiemodel, is een opslag- en uitwisselingsformaat dat betekenis losmaakt van vorm. De auteur legt vast wát er gecommuniceerd wordt: semantische rollen en canonieke gegevenswaarden. De ontvanger bepaalt vervolgens hóe hij dat waarneemt.

Het probleem

In de formaten die we dagelijks gebruiken zit de betekenis verstopt in de opmaak. Een bedrag is vet omdat het belangrijk is. Een voorwaarde staat in een kader. Een datum is een stuk tekst dat toevallig op een datum lijkt. Voor wie het document met zijn ogen leest werkt dat prima.

Voor elke andere manier van waarnemen is het een reconstructie achteraf: voorlezen, braille, een samenvatting, een machine die moet controleren of een voorwaarde is nagekomen. Die reconstructie wordt slechter naarmate de opmaak geavanceerder is. Toegankelijkheid komt daardoor altijd te laat, als een laag die over een af document heen wordt gelegd.

SCML draait dat om. De bron bevat de betekenis; de opmaak is een van de uitvoerkanalen, niet de opslagvorm.

Uitvoerkanalen

Uit één bron genereert de renderer onder meer HTML, PDF/UA, SSML voor spraaksynthese, een samenvatting, Markdown, LaTeX, easy-read, symbolen voor ondersteunde communicatie (AAC), vingerspellen, braille (ook als BRF-bestand) en EPUB. Dat zijn geen conversies van elkaar: ze komen allemaal rechtstreeks uit dezelfde semantische bron, via een transducer die met overlappende annotaties overweg kan.

Ondertekening

Een handtekening in SCML bevriest de bedoeling, niet de pixels. Dat is het idee achter een juridisch definitief formaat: twee mensen die hetzelfde document op verschillende manieren waarnemen, ondertekenen aantoonbaar dezelfde inhoud. Technisch is het een content-hash met een append-only ECDSA-P256-keten, met een niveauladder (B, T, LT, LTA) naar het model van PAdES.

Voor de goede orde: het zijn geen PDF- of PAdES-handtekeningen. Het is een vergelijkbare ladder over de SCML-container zelf, en de eIDAS-herkenning is bewust beperkt gehouden in plaats van een volledige RFC 5280-padvalidatie.

Wat er nu is

Specificatie
SCML v1.0, meegeleverd met de broncode.
Implementatie
Referentie-implementatie in Rust, opgedeeld in losse crates voor de container, de catalogus, rendering, stijl, ondertekening, sjablonen en import. Daarnaast validatielagen voor juridisch redeneren, bronvermeldingen en rekenkundige consistentie.
Apps
Vier webapplicaties: een editor, een reader, een import-app en een sjablooneditor, allemaal op een WebAssembly-build van dezelfde engine.
Server
Geen. De apps draaien volledig in de browser. Wat je schrijft verlaat je browser niet.

Open SCML