Generate CPSV-AP 3.2.0 compliant RDF/Turtle files for Dutch government services
π Live Application: cpsv.open-regels.nl
π§ͺ Acceptance Environment: acc.cpsv.open-regels.nl
- Overview
- Features
- Standards Compliance
- Architecture
- Getting Started
- Usage Guide
- Development
- Deployment
- Roadmap
- Documentation
The Core Public Service 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 an intuitive interface for creating service definitions that comply with EU CPSV-AP 3.2.0 and Dutch RONL/CPRMV standards.
Key Features:
- β CPSV-AP 3.2.0 compliant TTL generation
- β DMN integration with Operaton rule engine
- β RPP Architecture (Rules--Policy--Parameters separation)
- β iKnow integration for legislative analysis import
- β Import/Export with perfect round-trip fidelity
- β Live preview panel with real-time TTL generation
- Public service metadata (title, description, keywords)
- Thematic areas and sector classification
- Cost and output specification
- Legal resource linking
- Public organization details
- Geographic jurisdiction (mandatory)
- Homepage and contact information
- URI support (short IDs or full URIs)
- BWB ID support for Dutch legislation
- Version and consolidation tracking
- Direct linking to wetten.overheid.nl
- Validation of BWB formats
- Temporal rules with validity periods
- Rule versioning and inheritance chains
- Confidence level tracking (high/medium/low)
- Rule-to-policy traceability
- Configurable values for rule behavior
- Multiple unit types (EUR, PCT, NUM, DAYS, MONTHS, YEARS)
- Temporal validity per parameter
- Regional variation support
- Normative values from legislation
- CPRMV Rules API integration
- JSON import from normenbrief format
- Policy-to-legal-source traceability
- Upload and deploy DMN files to Operaton
- Test decision evaluations with live data
- Automatic input variable extraction
- Rule extraction with CPRMV attributes
- Import preservation for existing DMN
- Parse iKnow XML exports
- Configurable field mappings
- Import legislative analysis data
- Support for multiple legal concept types
The editor implements the RPP architectural pattern for Business Rule Management:
| Layer | Color | Description | Examples |
|---|---|---|---|
| Rules π΅ | Blue | Executable decision logic that operationalizes policies | Eligibility checks, calculations |
| Policy π£ | Purple | Normative values derived from laws | Legal thresholds, mandated rates |
| Parameters π’ | Green | Configurable values that tune rules | Regional rates, pilot adjustments |
Benefits:
- Legal Traceability: Law β Policy β Rule β Parameter β Decision
- Organizational Agility: Adjust parameters without changing rules or laws
- Governance: Clear ownership and approval workflows per layer
Documentation: See docs/RULES-POLICY-PARAMETERS-SEPARATION.md
Modularization Journey:
- v1.0: Monolithic App.js
- v1.3: Component extraction
- v1.5.1: Full modularization
Key Modules:
useEditorState.js- State management hookttlGenerator.js- TTL generation classimportHandler.js- Import logicuseArrayHandlers.js- DRY array operations
Documentation: See docs/PROJECT-STRUCTURE.md
The editor generates TTL files compliant with the Core Public Service Vocabulary Application Profile 3.2.0.
Compliance Status:
- β All mandatory properties implemented
- β Correct class types (cv:PublicOrganisation, cpsv:PublicService)
- β Proper relationships (cv:hasLegalResource, cv:hasCompetentAuthority)
- β Mandatory identifiers for all entities
Documentation: See docs/FIELD-MAPPING-CPSV-AP-3_2_0.md
RONL (Regels Overheid Nederland):
ronl:TemporalRule- Time-bounded rulesronl:ParameterWaarde- Configuration parametersronl:validFrom/ronl:validUntil- Temporal validityronl:confidenceLevel- Rule confidence trackingronl:extends- Rule versioning chains
CPRMV (Core Public Rule Management Vocabulary):
cprmv:Rule- Normative rules from legislationcprmv:definition- Full legal textcprmv:situatie- Situational contextcprmv:norm- Normative valuecprmv:ruleIdPath- Legal source pathcprmv:DecisionModel- DMN model linking
Documentation: See docs/NAMESPACE-PROPERTIES.md
- Node.js 14+ and npm
- Modern web browser (Chrome, Firefox, Edge, Safari)
# Clone the repository
git clone https://github.com/your-org/ttl-editor.git
cd ttl-editor
# Install dependencies
npm install
# Start development server
npm startThe application will open at http://localhost:3000
# Create optimized production build
npm run build
# The build folder contains the static files- Fill in Service Details - Basic service metadata
- Add Organization - Competent authority information
- Link Legal Resource - BWB ID or legal document
- Define Rules - Decision logic (optional)
- Add Parameters - Configuration values (optional)
- Add Policy - CPRMV normative rules (optional)
- Validate - Check for errors
- Download TTL - Export compliant RDF/Turtle file
- Click "Import TTL File" button
- Select a
.ttlfile - All fields populate automatically
- Edit and re-export for round-trip editing
- DMN Tab - Upload
.dmnfile - Deploy - Send to Operaton rule engine
- Test - Evaluate with sample data
- Export - TTL includes DMN metadata and rules
- iKnow Tab - Upload iKnow XML export
- Configure Mapping - Map XML fields to CPSV-AP
- Preview - Review mapped data
- Import - Populate editor tabs
ttl-editor/
βββ public/ # Static assets
βββ src/
β βββ components/ # React components
β β βββ tabs/ # Tab components
β βββ hooks/ # Custom React hooks
β βββ utils/ # Business logic
β βββ data/ # Configuration data
β βββ config/ # App configuration
βββ docs/ # Documentation
βββ package.json
- React 18.3.1 - UI framework
- Tailwind CSS 3 - Styling
- Lucide React - Icons
- RDF/Turtle - Semantic web standards
- ESLint for code quality
- Prettier for formatting
- Functional components with hooks
- Modular architecture
The application is deployed to:
- Production: https://cpsv.open-regels.nl
- Acceptance: https://acc.cpsv.open-regels.nl
# Build
npm run build
# Deploy build/ folder to your hosting providerNo environment variables required - fully client-side application.
- β CPSV-AP 3.2.0 compliance (v1.4.0)
- β DMN integration (v1.5.0)
- β iKnow integration (v1.5.0)
- β Full modularization (v1.5.1)
- β RPP architecture visualization (v1.5.1)
Phase B: RPP Deep Integration
- Cross-references between layers
- "This rule implements Policy X" indicators
- "This parameter is used by Rules Y, Z" tracking
- Traceability visualization
- Impact analysis
Phase C - Governance Features (Optional)
- Add approval workflows
- Layer-specific validation
- Separate exports
Phase 2: Extended CPSV-AP
- Channel support (cv:Channel)
- Contact points (cv:ContactPoint)
- Criteria requirements
- Evidence requirements
- Agent relationships
Phase 3: Advanced Features
- Multi-language support
- Collaboration features
- Version control integration
- Automated testing
- Quality metrics
See src/data/roadmap.json for detailed roadmap.
- README.md - This file, project overview
- FIELD-MAPPING-CPSV-AP-3_2_0.md - UI field to TTL property mapping
- NAMESPACE-PROPERTIES.md - RDF namespace reference
- PROJECT-STRUCTURE.md - Code organization
- VOCABULARY-INSTRUCTIONS.md - Vocabulary usage guide
- RULES-POLICY-PARAMETERS-SEPARATION.md - RPP architecture pattern
- ARCHITECTURE-VISUAL.md - Visual architecture diagrams
- REFERENCE-ARCHITECTURE-SEMANTIC-MEDIATION.md - Semantic mediation patterns
This is a Dutch government project. For contributions or questions:
- Check existing issues
- Create detailed bug reports or feature requests
- Follow the code style guidelines
- Submit pull requests to
accbranch
EUPL v. 1.2 License - See LICENSE file for details
- Live Application: https://cpsv.open-regels.nl
- Acceptance Environment: https://acc.cpsv.open-regels.nl
- CPSV-AP Specification: https://semiceu.github.io/CPSV-AP/
- Wetten Overheid: https://wetten.overheid.nl
- CPRMV Documentation: https://cprmv.open-regels.nl/docs
- Operaton Engine: https://operaton-doc.open-regels.nl
For support or questions about this project, please create an issue in the repository.
Built with β€οΈ for Dutch Government Services
Version 1.5.1 - January 2026