Saltar al contenido

Aplicar un marco a JSON-LD — Numio

Reestructura JSON-LD con un frame mediante jsonld.frame: los nodos que coinciden con el frame (por ejemplo por @type) pasan a ser los resultados de nivel superior, y los nodos a los que hacen referencia se embeben dentro de ellos.

Convertir un @graph plano en un árbol cuya raíz es el tipo que necesita tu aplicación, como cada Book con su library embebida.

JSON-LD

Frame

Cuándo usarla

  • Convertir un @graph plano en un árbol cuya raíz es el tipo que necesita tu aplicación, como cada Book con su library embebida.
  • Seleccionar solo los nodos de un @type dentro de un conjunto de datos JSON-LD más grande.

Cómo usarla

  1. Pega el documento de origen en el editor JSON-LD.
  2. Escribe el frame en el editor Frame: un @context más reglas de coincidencia como "@type": "Book".
  3. Revisa el resultado; si hay más de una coincidencia, los nodos aparecen en @graph.

JSON-LD + frame

// JSON-LD editor
{
  "@context": {"@vocab": "http://schema.org/"},
  "@graph": [
    {"@id": "http://example.org/lib", "name": "City Library"},
    {"@id": "http://example.org/b1", "@type": "Book", "name": "Dune",
     "holdingArchive": {"@id": "http://example.org/lib"}},
    {"@id": "http://example.org/b2", "@type": "Book", "name": "Emma",
     "holdingArchive": {"@id": "http://example.org/lib"}}
  ]
}

// Frame editor
{"@context": {"@vocab": "http://schema.org/"}, "@type": "Book"}

JSON-LD con frame

{
  "@context": {
    "@vocab": "http://schema.org/"
  },
  "@graph": [
    {
      "@id": "http://example.org/b1",
      "@type": "Book",
      "holdingArchive": {
        "@id": "http://example.org/lib",
        "name": "City Library"
      },
      "name": "Dune"
    },
    {
      "@id": "http://example.org/b2",
      "@type": "Book",
      "holdingArchive": {
        "@id": "http://example.org/lib",
        "name": "City Library"
      },
      "name": "Emma"
    }
  ]
}

Detalles y limitaciones

Aquí las referencias a nodos se sustituyen por el nodo referenciado: la library se embebe en cada book.

Un nodo que no coincide con el frame (la library) aparece solo como objeto embebido, no como resultado propio.

Se ejecuta en tu navegador con jsonld.js usando sus opciones de framing por defecto; @embed, @explicit y flags similares se pueden indicar dentro del propio frame.

FAQ

¿Cómo devuelvo solo ciertas propiedades?

Añade "@explicit": true al frame y enumera las propiedades que quieres, cada una con {} como valor.

¿Por qué hay una clave @graph en el resultado?

Cuando más de un nodo coincide con el frame, los resultados se devuelven en @graph. Una sola coincidencia se devuelve como objeto de nivel superior.

¿Por qué el editor Frame viene relleno con un contexto de schema.org?

Es el ejemplo por defecto de la página. Ese contexto es una URL remota que tu navegador tiene que descargar; sustitúyelo por un contexto en línea para usarlo sin conexión. Si la descarga falla, la página muestra un error con la URL.

Especificaciones y referencias