{"id":34534351,"url":"https://github.com/sgort/ttl-editor","last_synced_at":"2026-05-24T20:37:22.851Z","repository":{"id":324276363,"uuid":"1073630066","full_name":"sgort/ttl-editor","owner":"sgort","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-15T11:38:21.000Z","size":2273,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"acc","last_synced_at":"2026-05-15T13:31:28.427Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sgort.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-10T11:46:11.000Z","updated_at":"2026-05-15T11:38:26.000Z","dependencies_parsed_at":"2025-12-29T18:04:33.926Z","dependency_job_id":null,"html_url":"https://github.com/sgort/ttl-editor","commit_stats":null,"previous_names":["sgort/ttl-editor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sgort/ttl-editor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgort%2Fttl-editor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgort%2Fttl-editor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgort%2Fttl-editor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgort%2Fttl-editor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sgort","download_url":"https://codeload.github.com/sgort/ttl-editor/tar.gz/refs/heads/acc","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgort%2Fttl-editor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33450401,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-24T19:21:36.376Z","status":"ssl_error","status_checked_at":"2026-05-24T19:21:10.562Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-24T05:57:40.340Z","updated_at":"2026-05-24T20:37:22.845Z","avatar_url":"https://github.com/sgort.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CPSV Editor\n\n[![CPSV-AP](https://img.shields.io/badge/CPSV--AP-3.2.0-blue)](https://semiceu.github.io/CPSV-AP/)\n[![License](https://img.shields.io/badge/License-EUPL--1.2-yellow)](LICENSE)\n\n🌐 **Production:** [cpsv-editor.open-regels.nl](https://cpsv-editor.open-regels.nl)  \n🧪 **Acceptance:** [acc.cpsv-editor.open-regels.nl](https://acc.cpsv-editor.open-regels.nl)\n\n---\n\n## Documentation\n\nAs 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:\n\n**[iou-architectuur.open-regels.nl/cpsv-editor](https://iou-architectuur.open-regels.nl/cpsv-editor)**\n\nThis covers user guides, developer docs, reference material, and architecture documentation. The `docs/` directory has been removed from this repository.\n\n---\n\n## Overview\n\nThe **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.\n\nNo 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.\n\n---\n\n## Architecture\n\n### Application layers\n\n```\n┌────────────────────────────────────────────────────────────────┐\n│                       PRESENTATION LAYER                       │\n│  App.js  •  Tab components  •  PreviewPanel                    │\n└────────────────────────────┬───────────────────────────────────┘\n                             │\n┌────────────────────────────▼───────────────────────────────────┐\n│                      BUSINESS LOGIC LAYER                      │\n│  constants  •  ttlGenerator  •  validators  •  parseTTL        │\n└────────────────────────────┬───────────────────────────────────┘\n                             │\n┌────────────────────────────▼───────────────────────────────────┐\n│                         DATA LAYER                             │\n│  useEditorState  •  useArrayHandlers  •  vocabularies_config   │\n└────────────────────────────────────────────────────────────────┘\n```\n\n### Component structure\n\n```\nApp.js\n  ├── ServiceTab         ← Public service metadata\n  ├── OrganizationTab    ← Competent authority\n  ├── LegalTab           ← Legal resource (BWB)\n  ├── RulesTab           ← Temporal rules  [RPP: Rules]\n  ├── ParametersTab      ← Configuration values  [RPP: Parameters]\n  ├── CPRMVTab           ← Normative rules  [RPP: Policy]\n  ├── DMNTab             ← Decision model deployment \u0026 testing\n  ├── VendorTab          ← Vendor implementation metadata\n  ├── IKnowMappingTab    ← iKnow XML import\n  ├── ChangelogTab       ← Version history\n  └── PreviewPanel       ← Live TTL preview (side panel)\n```\n\n### Data flow\n\n**Import:**\n\n```\nTTL file uploaded → parseTTL() → extract entities → populate all tabs\n```\n\n**Export:**\n\n```\nTab state → generateTTL() → combine sections + namespaces → download .ttl\n```\n\n### Deployment pipeline\n\n```\nGit push → GitHub Actions → npm run build → Azure Static Web Apps → cpsv-editor.open-regels.nl\n```\n\n---\n\n## Standards\n\nThe editor generates Turtle files compliant with the following vocabularies:\n\n| Vocabulary  | Version | Purpose                                         |\n| ----------- | ------- | ----------------------------------------------- |\n| CPSV-AP     | 3.2.0   | EU Core Public Service Vocabulary               |\n| CPRMV       | 0.3.0   | Core Public Rule Management Vocabulary (Dutch)  |\n| RONL        | —       | Regels Overheid Nederland governance vocabulary |\n| ELI         | —       | European Legislation Identifier                 |\n| Dublin Core | —       | Metadata terms (title, description, identifier) |\n| SKOS        | —       | Simple Knowledge Organization System            |\n| Schema.org  | —       | Value and unit definitions                      |\n| FOAF        | —       | Organization homepages                          |\n| ORG         | —       | Organization ontology                           |\n\n---\n\n## Positioning\n\nThe 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.\n\nSee [Semantic Mediation Reference Architecture](https://iou-architectuur.open-regels.nl/cpsv-editor/reference/semantic-mediation-architecture/) for the full architectural context.\n\n---\n\n## Getting started\n\n```bash\nnpm install\nnpm start       # development server at http://localhost:3000\nnpm run build   # production build → build/\n```\n\n---\n\n## License\n\nEUPL-1.2 — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgort%2Fttl-editor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsgort%2Fttl-editor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgort%2Fttl-editor/lists"}