Quality assurance for DCAT-AP-ES metadata
Web application for validating RDF catalogs against SHACL shapes and analyzing validation reports.
- Aplication Profiles: Pre-configured SHACL shapes for DCAT-AP-ES, NTI-RISP (2013) and DCAT-AP
- Custom SHACL: Upload your own SHACL shapes for custom validation rules
- Report Viewer: Import and analyze existing SHACL validation reports (Turtle format)
- Dashboard: Interactive charts with severity breakdown and top failing shapes
- RDF Snapshot: Real-time statistics of detected resources (datasets, data services, distributions)
- Advanced Metrics: Property breakdown, focus node distribution, and constraint analysis
- Direct Input: Monaco editor with syntax highlighting for RDF formats
- File Upload: Drag & drop or browse for TTL/JSON-LD files with chunked streaming
- URL Loading: Fetch and validate remote catalogs
- Rich TTL Reports: Enhanced Turtle exports with metadata (creator, profile info, descriptions)
- CSV Downloads: Spreadsheet-compatible exports for filtering by severity
- Segment Export: Download violations, recommendations, and infos separately
Educational content explaining RDF, SHACL, and data catalog concepts.
Pre-configured import SHACL shapes for Application Profiles {DCAT-AP-ES, NTI-RISP (2013), DCAT-AP}.

Upload your own SHACL shapes for custom validation rules.
Monaco editor with syntax highlighting and RDF preview.
Comprehensive validation report with detailed findings and RDF snapshot (JSON-LD).
Import existing SHACL reports and analyze with interactive charts.
Searchable terminology for understanding validation reports.
- Node.js 18+ and npm
# Clone the repository
git clone https://github.com/mjanez/shacl-validator.git
cd shacl-validator
# Install dependencies
npm install# Start development server
npm run devApplication available at http://localhost:3000
# Build for production
npm run buildStatic files generated in dist/ directory.
# Deploy to gh-pages branch
npm run deploy| Category | Technologies |
|---|---|
| Framework | React 19 + TypeScript |
| Build Tool | Vite 7.3 with SWC |
| SHACL Engine | shacl-engine 1.1 (lazy loaded) |
| RDF Parsing | N3.js, rdfxml-streaming-parser, jsonld |
| Editor | Monaco Editor |
| UI Components | Radix UI primitives |
| Styling | Tailwind CSS 3 |
| Charts | Recharts with D3 |
| i18n | i18next + react-i18next |
shacl-validator/
├── src/
│ ├── components/
│ │ ├── Validator/ # RDF validation interface
│ │ │ ├── ValidatorInput.tsx
│ │ │ └── ValidationResults.tsx
│ │ ├── Viewer/ # Report analysis interface
│ │ │ └── ReportViewer.tsx
│ │ ├── Guide/ # Educational content
│ │ │ └── EducationalContent.tsx
│ │ ├── Settings/ # Configuration panel
│ │ │ └── SettingsPanel.tsx
│ │ ├── layout/ # App shell components
│ │ │ ├── Layout.tsx
│ │ │ ├── Sidebar.tsx
│ │ │ ├── FloatingRdfStats.tsx
│ │ │ └── CommandPalette.tsx
│ │ └── ui/ # Reusable UI components
│ ├── services/
│ │ ├── SHACLValidationService.ts # SHACL validation logic
│ │ ├── RDFService.ts # RDF parsing & conversion
│ │ └── DataDiscoveryService.ts # Resource detection
│ ├── config/
│ │ └── mqa-config.json # Profile definitions
│ ├── workers/
│ │ └── reportWorker.ts # Web Worker for heavy processing
│ └── types/
│ ├── types.ts
│ └── dataQuality.ts
└── public/
└── locales/ # i18n translations
├── en/
└── es/
Edit src/config/mqa-config.json to add or modify validation profiles:
{
"profiles": {
"dcat_ap_es": {
"name": "DCAT-AP-ES",
"defaultVersion": "1.0.0",
"defaultBranch": "main",
"versions": {
"1.0.0": {
"name": "DCAT-AP-ES 1.0.0",
"url": "https://datosgobes.github.io/DCAT-AP-ES/",
"shaclFiles": [
"https://raw.githubusercontent.com/datosgobes/DCAT-AP-ES/{branch}/shacl/1.0.0/dcat_ap_es.ttl"
]
}
}
}
}
}Tip
If you need to use local SHACL files for development, refer to the scripts/README-local-shacl.md guide.
Vite uses import.meta.env:
BASE_URL: Base path for deployment (default:/)MODE: Development or production mode
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/custom-feature) - Commit your changes (
git commit -m 'feat: add custom feature') - Push to the branch (
git push origin feature/custom-feature) - Open a Pull Request
CC-BY-4.0 - Copyright (c) 2025 mjanez
- SHACL W3C Recommendation
- DCAT Application Profile for data portals in Europe (DCAT-AP)
- Spanish DCAT-AP Application Profile (DCAT-AP-ES)
- shacl-engine for SHACL validation
- Monaco Editor for code editing





