@embed: @never is ignored inside an @reverse frame
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 90/100
Línea de trabajo
Empieza en lib/pyld/jsonld.py#L4663 en la rama de reverse-framing, donde la clave de estado se escribe embeded; compárala con la comprobación de @never alrededor de L4484-L4485 y los puntos de llamada forward en L4597 y L4611. Ejecuta el reproducer del issue para confirmar que el nodo employee está embebido y luego aplica la corrección de un carácter. Hecho significa que el reverse frame devuelve "employees": {"@id": "ex:p1"} mientras las pruebas de frame existentes permanecen sin cambios.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Framing a reverse property with {"@embed": "@never"} embeds the matched node in full. The same flag on a forward property is honoured.
from pyld import jsonld
ctx = {"schema": "http://schema.org/", "name": "schema:name",
"works_for": {"@id": "schema:worksFor", "@type": "@id"},
"employees": {"@reverse": "schema:worksFor"}}
doc = {"@context": ctx, "@graph": [
{"@id": "ex:org1", "@type": "schema:Organization", "name": "Acme"},
{"@id": "ex:p1", "@type": "schema:Person", "name": "Ada", "works_for": "ex:org1"}]}
back = jsonld.from_rdf(jsonld.to_rdf(doc, {"format": "application/n-quads"}),
{"format": "application/n-quads"})
print(jsonld.frame(back, {"@context": ctx, "@embed": "@once", "@type": "schema:Organization",
"@reverse": {"schema:worksFor": {"@embed": "@never"}}}))
3.3.0 returns the employee embedded:
"employees": {"@id": "ex:p1", "@type": "schema:Person", "name": "Ada", "works_for": "ex:org1"}
The reverse branch recurses with a misspelled state key, jsonld.py#L4663:
{**state, 'embeded': True},
while the @never test reads state['embedded'] (L4484-L4485). The key written is never read, so a reverse-framed node is treated as if it were at the top level, where @never does not apply. The two forward call sites, L4597 and L4611, spell it 'embedded'.
Changing that one character in an installed 3.3.0 gives "employees": {"@id": "ex:p1"}, with the other frames unchanged.
jsonld.js is correct at frame.js#L309, so this is specific to the Python port.
- Lenguaje dominante
- Python
- Estrellas
- 689
- Forks
- 140
- Merge medio
- 2 d 16 h
- PR fusionados (30 d)
- 11
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de digitalbazaar/pyld
-
No work limit on normalize() in any released version (RDFC-1.0 §4.4.3), and data for choosing the 4.0.0 maxPermutations defaultPosiblemente ocupada @mielvds la tomó hace 6 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
digitalbazaar/pyld#368 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Rename master to mainAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
digitalbazaar/pyld#334 · 2 comentarios · 2 reacciones ·
Los mantenedores suelen responder en 1 día
-
Deprecate jsonld.parse_nquadsAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
digitalbazaar/pyld#315 ·
Los mantenedores suelen responder en 1 día
-
feature
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
digitalbazaar/pyld#307 ·
Los mantenedores suelen responder en 1 día
-
jsonld:framing strict mode
Dificultad 3/5 1-2 días Aptitud para principiantes 50/100
digitalbazaar/pyld#231 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de digitalbazaar/pyld
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
ida-arbeitszeit/workers-control#1578 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
aws-samples/sample-per-model-bedrock#898 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
intake mcp-intake needs-human-review priority:high
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Ikalus1988/MisakaNet#5041 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100