Skip to content

Latest commit

 

History

624 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CPSV Editor

CPSV-AP License

🌐 Production: cpsv-editor.open-regels.nl
🧪 Acceptance: acc.cpsv-editor.open-regels.nl


Documentation

As of February 21, 2026, all documentation for the CPSV Editor has moved to the IOU Architecture documentation site, which is maintained in the iou-architectuur repository and published at:

iou-architectuur.open-regels.nl/cpsv-editor

This covers user guides, developer docs, reference material, and architecture documentation — all product documentation lives there, not here.

The docs/ directory in this repository holds a different kind of material: engineering records that belong beside the code rather than on the product site — design specs, implementation plans, and pipeline reference such as The gate now has teeth, which documents how CI enforces supply-chain pinning.


Overview

The CPSV Editor is a React-based web application that simplifies the creation and management of RDF/Turtle files for government services in the Netherlands. It provides a structured form interface for building service definitions that comply with EU CPSV-AP 3.2.0 and Dutch RONL/CPRMV standards, and publishes the result as machine-readable Linked Data.

No RDF knowledge is required to use the editor. Users fill in familiar form fields; the editor generates the correct Turtle syntax, validates it, and can publish it directly to a TriplyDB knowledge graph.


Architecture

Application layers

┌────────────────────────────────────────────────────────────────┐
│                       PRESENTATION LAYER                       │
│  App.js  •  Tab components  •  PreviewPanel                    │
└────────────────────────────┬───────────────────────────────────┘
                             │
┌────────────────────────────▼───────────────────────────────────┐
│                      BUSINESS LOGIC LAYER                      │
│  constants  •  ttlGenerator  •  validators  •  parseTTL        │
└────────────────────────────┬───────────────────────────────────┘
                             │
┌────────────────────────────▼───────────────────────────────────┐
│                         DATA LAYER                             │
│  useEditorState  •  useArrayHandlers  •  vocabularies_config   │
└────────────────────────────────────────────────────────────────┘

Component structure

App.js
  ├── ServiceTab         ← Public service metadata
  ├── OrganizationTab    ← Competent authority
  ├── LegalTab           ← Legal resource (BWB)
  ├── RulesTab           ← Temporal rules  [RPP: Rules]
  ├── ParametersTab      ← Configuration values  [RPP: Parameters]
  ├── CPRMVTab           ← Normative rules  [RPP: Policy]
  ├── DMNTab             ← Decision model deployment & testing
  ├── VendorTab          ← Vendor implementation metadata
  ├── IKnowMappingTab    ← iKnow XML import
  ├── ChangelogTab       ← Version history
  └── PreviewPanel       ← Live TTL preview (side panel)

Data flow

Import:

TTL file uploaded → parseTTL() → extract entities → populate all tabs

Export:

Tab state → generateTTL() → combine sections + namespaces → download .ttl

Deployment pipeline

Git push → GitHub Actions → npm run build → Azure Static Web Apps → cpsv-editor.open-regels.nl

What gates that pipeline — build provenance, supply-chain pinning, the per-file coverage floor and the Semgrep scan — is documented once, for this repository and Linked Data Explorer together, in linked-data-explorer's docs/ci-posture-across-repos.md. This repository kept its own copy until 2026-09-11; the two had drifted in both directions, so there is now one.


Standards

The editor generates Turtle files compliant with the following vocabularies:

Vocabulary Version Purpose
CPSV-AP 3.2.0 EU Core Public Service Vocabulary
CPRMV 0.3.0 Core Public Rule Management Vocabulary (Dutch)
RONL Regels Overheid Nederland governance vocabulary
ELI European Legislation Identifier
Dublin Core Metadata terms (title, description, identifier)
SKOS Simple Knowledge Organization System
Schema.org Value and unit definitions
FOAF Organization homepages
ORG Organization ontology

Positioning

The CPSV Editor is the authoring tool in a broader semantic mediation architecture. Service definitions created here are published to a TriplyDB knowledge graph where they can be queried by the Linked Data Explorer and consumed by downstream systems. The editor implements the semantic mediation principle of separating citizen-facing vocabulary from internal business domain models — decisions expressed as DMN files are linked to their public service descriptions through structured RDF properties.

See Semantic Mediation Reference Architecture for the full architectural context.


Getting started

Use Node 24 / npm 11 — the version CI runs. npm 10 (bundled with Node 22) can install from the lockfile with npm ci, but crashes on anything that re-resolves the dependency tree — npm install <package>, npm update, or regenerating the lockfile — with Cannot read properties of null (reading 'edgesOut'). It is a bug in npm 10's resolver, hit while walking vitest's optional peer chain (jsdomcanvas); npm 11 resolves the same tree cleanly. Verified with npm 10.9.4 and 11.19.1 on 2026-09-11.

npm ci          # install exactly what package-lock.json records
npm start       # development server at http://localhost:3000
npm run build   # production build → dist/

npm start first checks that the installed dependencies still match package-lock.json, and stops with npm ci as the fix when they do not — after pulling a lockfile change, for example. npm ci rather than npm install: npm install re-resolves the version ranges and can pull a transitive release published that morning. Use npm install <package> only to add or upgrade one.


License

EUPL-1.2 — see LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages