An open API service indexing awesome lists of open source software.

https://github.com/sgort/ttl-editor


https://github.com/sgort/ttl-editor

Last synced: 24 days ago
JSON representation

Awesome Lists containing this project

README

          

# CPSV Editor

[![CPSV-AP](https://img.shields.io/badge/CPSV--AP-3.2.0-blue)](https://semiceu.github.io/CPSV-AP/)
[![License](https://img.shields.io/badge/License-EUPL--1.2-yellow)](LICENSE)

๐ŸŒ **Production:** [cpsv-editor.open-regels.nl](https://cpsv-editor.open-regels.nl)
๐Ÿงช **Acceptance:** [acc.cpsv-editor.open-regels.nl](https://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](https://git.open-regels.nl/showcases/iou-architectuur) repository and published at:

**[iou-architectuur.open-regels.nl/cpsv-editor](https://iou-architectuur.open-regels.nl/cpsv-editor)**

This covers user guides, developer docs, reference material, and architecture documentation. The `docs/` directory has been removed from this repository.

---

## 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
```

---

## 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](https://iou-architectuur.open-regels.nl/cpsv-editor/reference/semantic-mediation-architecture/) for the full architectural context.

---

## Getting started

```bash
npm install
npm start # development server at http://localhost:3000
npm run build # production build โ†’ build/
```

---

## License

EUPL-1.2 โ€” see [LICENSE](LICENSE).