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

Abierto Apto para principiantes
#4,175 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java
Área
data

Línea de trabajo

Comience en el punto de entrada TitaniumJsonLdOptions.get y siga cómo la validación de URI de Titanium interactúa con el ErrorHandler de Jena y las opciones checking/strict. Añada cobertura de regresión para una IRI mal formada, confirmando que el nodo no se descarta silenciosamente, que Jena informa del problema y que las IRI válidas se siguen analizando correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

Lenguaje dominante
Java
Estrellas
1.5k
Forks
729
Merge medio
1 d 8 h
PR fusionados (30 d)
56

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/jena

Todos los issues de apache/jena

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.