Skip to content

feat: MQA-based quality scoring — Phase 1 (v2.13.0)#55

Merged
daimpad merged 1 commit into
mainfrom
claude/fix-data-prep-errors-kJYpl
Jul 7, 2026
Merged

feat: MQA-based quality scoring — Phase 1 (v2.13.0)#55
daimpad merged 1 commit into
mainfrom
claude/fix-data-prep-errors-kJYpl

Conversation

@daimpad

@daimpad daimpad commented Jul 7, 2026

Copy link
Copy Markdown
Owner

MQA-Qualitäts-Scoring — Phase 1

Ersetzt das einfache 0–100-Vollständigkeits-Scoring durch das EU Metadata Quality Assessment (MQA) von data.europa.eu (Entscheidung: ersetzen). Umsetzung gemäß docs/MQA-KONZEPT.md.

Was neu ist

  • 5 FAIR-Dimensionen, 405 Punkte, 4 Stufen (Ausgezeichnet / Gut / Ausreichend / Mangelhaft).
  • config/mqa-metrics.php — neue Single Source of Truth (21 Metriken; je Metrik ein Typ: present | vocab | reachable | shacl).
  • ODW_Quality neu geschrieben: alle „gesetzt?"-Metriken werden bewertet (offline). Vokabular-/Erreichbarkeits-/SHACL-Metriken sind als „nicht bewertet" verdrahtet und werden aus dem bewertbaren Maximum herausgerechnet; die Bewertungsstufen skalieren proportional (351/221/121 von 405).
  • Meta-Box zeigt Punkte je Dimension + Status je Metrik; die Listen-Spalte zeigt die MQA-Bewertungsstufe.
  • JSON-LD odw:qualityScore weist jetzt MQA-Punkte (von 405), Stufe und Dimensions-Aufschlüsselung aus (mit Methodik-URL).

Phasenumfang

Phase Inhalt Status
1 (dieser PR) alle „gesetzt?"-Metriken (offline), Engine, UI, REST, BC
2 Vokabular-Checks (Format-Flags, Lizenz-/AccessRights-Vokabular) folgt
3 URL-Erreichbarkeit + DCAT-AP-SHACL (opt-in) folgt

Abwärtskompatibilität

  • Publish-Validierung (config/dcat-ap-fields.php) unverändert.
  • Abgeleiteter 0–100-Score + Level bleiben in _odw_quality_score/_odw_quality_level (Spalte, Sortierung); das volle MQA-Ergebnis liegt in _odw_mqa.

i18n

  • 33 neue MQA-UI-Strings in .po/.pot; en_US.mo neu kompiliert (per Skript, da keine gettext-Tools verfügbar; .mo per Rücklesen verifiziert).

Verifikation

  • ✅ PHPUnit 148 (u. a. proportionale Schwellen, Metrik-Summen je Dimension = 405, MQA-Persistierung/JSON-LD), PHPStan clean, PHPCS exit 0
  • ⚠️ Bitte im Browser gegenprüfen: Qualitäts-Meta-Box (Dimensions-Aufschlüsselung) an einem gespeicherten Datensatz.

🤖 Generated with Claude Code


Generated by Claude Code

Replace the simple 0–100 completeness score with the EU Metadata Quality
Assessment (MQA) model from data.europa.eu: 5 FAIR dimensions, 405 points,
4 rating bands. See docs/MQA-KONZEPT.md.

- config/mqa-metrics.php: new single source of truth (21 metrics, 405 pts,
  per-metric type: present | vocab | reachable | shacl)
- ODW_Quality rewritten to compute the MQA score: all "present?" metrics are
  scored (offline); vocab/reachable/shacl are wired as "not assessed" and
  excluded from the assessable maximum. Rating bands are scaled proportionally
  to the assessable maximum (351/221/121 of 405).
- Meta box shows per-dimension scores + metric status; admin column keeps
  working via a derived 0–100 score and shows the MQA rating label.
- JSON-LD odw:qualityScore now exposes MQA points (of 405), rating and the
  per-dimension breakdown, referencing the MQA methodology URL.

Backward compatibility
- Publish validation (config/dcat-ap-fields.php) is untouched.
- Derived _odw_quality_score / _odw_quality_level kept for the list column and
  sorting; the full MQA result is stored in _odw_mqa.

i18n: 33 new MQA UI strings added to .po/.pot; en_US.mo recompiled.
Version 2.13.0. Tests: 148 pass, PHPStan clean, PHPCS exit 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JB1xUQM892bVZ4Yv3MZjvq
@daimpad daimpad merged commit 94666ae into main Jul 7, 2026
10 checks passed
@daimpad daimpad deleted the claude/fix-data-prep-errors-kJYpl branch July 7, 2026 12:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants