Harvest-Turtle war für keinen Parser lesbar (v2.42.1) - #129
Merged
Merged
Conversation
Beim Testen der Live-Ausgabe einer Installation gefunden: Der als „empfohlen" ausgewiesene Turtle-Katalog ließ sich von keinem RDF-Parser einlesen. Ursache: Die Dimensionsnamen im odw:qualityScore-Block standen als nackte Bezeichner da — „findability [ … ]". Ein Prädikat muss in Turtle ein IRI oder ein Präfixname sein. Der Parser bricht dort ab und verwirft das ganze Dokument, nicht nur die Zeile. Belegt am echten Abruf: „Unexpected \"findability\" on line 34"; dasselbe Dokument ohne den Block parst mit 25 Tripeln sauber. Die Namen tragen jetzt den odw:-Präfix. In JSON-LD fiel derselbe Schlüssel stillschweigend weg, weil er im @context nicht vorkommt — die Dimensionen fehlten dort also ohnehin. Zwei weitere Stellen, die dasselbe ermöglicht haben: - ODW_Rdf schrieb den Schlüssel ungeprüft heraus. Jetzt wird nur noch ein IRI oder ein Präfixname ausgegeben, alles andere entfällt. Eine verlorene Zusatzangabe ist harmloser als ein unlesbarer Katalog. - Die Datensatz-Fixtures wurden ohne @context serialisiert und hatten deshalb keine @prefix-Zeilen — ebenfalls unparsbar. ODW_Rest_API:: build_dataset_document() setzt den Kontext jetzt an einer Stelle, die Endpunkt und Fixture gemeinsam nutzen. Warum die CI das nicht sah: Der SHACL-Job erzeugte Turtle, validierte aber nur die JSON-LD-Fixtures — die .ttl-Dateien wurden nie geparst. Und der Qualitätsblock kam in den Fixtures gar nicht vor, weil der Generator den Filter odw_dataset_jsonld nicht durchlief. Die einzige kaputte Stelle lag exakt im blinden Fleck. Beides behoben: validate.mjs prüft nun beide Serialisierungen, und die maximale Fixture trägt einen gespeicherten MQA-Stand und durchläuft append_to_jsonld(). Dazu zwei Unit-Tests. Der Serializer-Schutz allein hätte den Fehler in ein stilles „odw:dimensions []" verwandelt — die Dimensionen wären unbemerkt aus der Ausgabe verschwunden. Deshalb wird zusätzlich der Präfix der Dimensionsnamen festgenagelt. Lokal geprüft: SHACL-Lauf grün über alle sechs Fixtures (drei JSON-LD, drei Turtle), Turtle-Parse einzeln gegengeprüft, Paketprüfung und i18n sauber. PHPUnit und PHPCS laufen in dieser Umgebung nicht (composer erreicht github.com nicht) — sie entscheiden sich in der CI. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JB1xUQM892bVZ4Yv3MZjvq
test_append_to_jsonld_adds_mqa_data verlangte den Schlüssel „findability" — also genau die Form, die ungültiges Turtle erzeugt. Eine Zusicherung, die den Ist-Zustand abbildet statt einer Anforderung, meldet den Fehler nicht, sondern hält ihn fest. Jetzt auf „odw:findability". Die internen Dimensionsschlüssel bleiben unverändert: DIMENSIONS, die Labels und config/mqa-metrics.php arbeiten weiter ohne Präfix, der Präfix gehört allein in die JSON-LD- und Turtle-Ausgabe. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JB1xUQM892bVZ4Yv3MZjvq
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Beim Testen der Live-Ausgabe gefunden: Der als „empfohlen" ausgewiesene Turtle-Katalog ließ sich von keinem RDF-Parser einlesen.
Der Fehler
Die Dimensionsnamen im
odw:qualityScore-Block standen als nackte Bezeichner da:odw:dimensions [ findability [ odw:score 30 ; … ] ; accessibility [ … ] ]Ein Prädikat muss in Turtle ein IRI oder ein Präfixname sein.
findabilityist beides nicht — der Parser bricht dort ab und verwirft das ganze Dokument, nicht nur die Zeile.Belegt am echten Abruf einer Installation:
?full=1&format=turtlePARSE-FEHLER: Unexpected "findability" on line 34OK — geparst, 25 TripelIn JSON-LD fiel derselbe Schlüssel stillschweigend weg (kein Eintrag im
@context) — die Dimensionen fehlten dort also ohnehin schon immer.Drei Stellen, behoben
odw:-Präfix.ODW_Rdfgibt einen Schlüssel nur noch aus, wenn er ein IRI oder ein Präfixname ist, sonst entfällt er. Eine verlorene Zusatzangabe ist ungleich harmloser als ein unlesbarer Katalog. Ein vollständiges IRI wird korrekt in spitze Klammern gesetzt.@contextserialisiert und hatten dadurch keine@prefix-Zeilen — ebenfalls unparsbar. Der neueODW_Rest_API::build_dataset_document()setzt den Kontext an einer Stelle, die Endpunkt und Fixture gemeinsam nutzen.Warum das grün durch die CI kam
Der SHACL-Job erzeugte zwar Turtle-Dateien, validierte aber nur die JSON-LD-Fixtures — die
.ttl-Dateien wurden nie geparst. Dazu kam, dass der Qualitätsblock in den Fixtures gar nicht vorkam, weil der Generator den Filterodw_dataset_jsonldnicht durchlief. Die einzige kaputte Stelle lag exakt im blinden Fleck.tests/shacl/validate.mjsprüft jetzt beide Serialisierungen (sechs Fixtures statt drei); ein Syntaxfehler in der Turtle-Datei lässt den Lauf scheitern.ODW_Quality::append_to_jsonld().Tests
Zwei Unit-Tests, bewusst auf beiden Ebenen: Mit dem Serializer-Schutz allein degradiert der alte Fehler zu einem stillen
odw:dimensions []— die Dimensionen verschwänden unbemerkt aus der Ausgabe. Das habe ich gegengeprüft, indem ich die Ursache testweise zurückgedreht habe. Deshalb wird zusätzlich der Präfix der Dimensionsnamen festgenagelt.Lokal geprüft
SHACL-Lauf grün über alle sechs Fixtures, Turtle-Parse jeder Datei einzeln gegengeprüft, Paketprüfung und i18n sauber. PHPUnit und PHPCS laufen in dieser Umgebung nicht (Composer erreicht github.com nicht) — sie entscheiden sich erstmals hier in der CI.
Version 2.42.0 → 2.42.1.
🤖 Generated with Claude Code
https://claude.ai/code/session_01JB1xUQM892bVZ4Yv3MZjvq
Generated by Claude Code