JSON-LD: a malformed IRI is silently dropped — `checking`/`strict` and the `ErrorHandler` never sees it

Aperta Adatta ai principianti
#4,175 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
java
Ambito
data

Direzione di ricerca

Partite dal punto di ingresso TitaniumJsonLdOptions.get e seguite il modo in cui la convalida degli URI di Titanium interagisce con l’ErrorHandler di Jena e con le opzioni checking/strict. Aggiungete una copertura di regressione per un’IRI non valida, verificando che il nodo non venga eliminato silenziosamente, che Jena segnali il problema e che le IRI valide continuino a essere analizzate correttamente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug JSON-LD
Version

6.1 / main

What happened?

A JSON-LD document with a malformed IRI loses an entire node, and the parse reports success.
No warning and no error reaches ErrorHandler, and neither checking(true) nor strict(true) changes this.

Jena delegates JSON-LD parsing to Titanium.
Titanium validates uris itself and when it rejects one, it discards the node, logs it and does not propagate it.
So the term is gone and Jena's own IRI checking can't catch it.

At best even if all iris are valid, it also means than each of them is validated twice.
As Jena operates at the RDF level, it makes more sense to keep it as the single source of truth for those checks.

The fix is simple:
If it is not defined upstream, TitaniumJsonLdOptions.get always takes Titanium's defaults, which include uriValidation = Full.
ALways setting Titanium's uri validation policy to None disables this Titanium validation allowing Jena's downstream checks to properly apply its own validation.

Happy to submit a PR if we agree on the approach.

Are you interested in making a pull request?

Yes

Lingua principale
Java
Stelle
1.5k
Fork
729
Merge medio
1g 8h
PR unite (30g)
56

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/jena

Tutte le issue di apache/jena

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.