Pular para o conteúdo

Enquadrar dados JSON-LD — Numio

Reestrutura JSON-LD com um frame usando jsonld.frame: os nós que correspondem ao frame (por exemplo por @type) viram os resultados de nível superior, e os nós que eles referenciam são embutidos dentro deles.

Transformar um @graph plano em uma árvore com raiz no tipo de que sua aplicação precisa, como cada Book com sua library embutida.

JSON-LD

Frame

Quando usar

  • Transformar um @graph plano em uma árvore com raiz no tipo de que sua aplicação precisa, como cada Book com sua library embutida.
  • Selecionar apenas os nós de um @type em um conjunto de dados JSON-LD maior.

Como usar

  1. Cole o documento de origem no editor JSON-LD.
  2. Escreva o frame no editor Frame: um @context mais regras de correspondência como "@type": "Book".
  3. Confira o resultado; com mais de uma correspondência, os nós são listados em @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 com 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"
    }
  ]
}

Detalhes e limitações

Aqui as referências a nós são substituídas pelo nó referenciado: a library é embutida em cada book.

Um nó que não corresponde ao frame (a library) aparece apenas como objeto embutido, não como resultado próprio.

Roda no seu navegador com jsonld.js usando as opções de framing padrão; @embed, @explicit e flags semelhantes podem ser definidos dentro do próprio frame.

FAQ

Como retorno apenas certas propriedades?

Adicione "@explicit": true ao frame e liste as propriedades desejadas, cada uma com {} como valor.

Por que há uma chave @graph no resultado?

Quando mais de um nó corresponde ao frame, os resultados são retornados em @graph. Uma única correspondência é retornada como objeto de nível superior.

Por que o editor Frame vem preenchido com um contexto do schema.org?

É o exemplo padrão da página. Esse contexto é uma URL remota que o seu navegador precisa baixar; substitua por um contexto inline para uso offline. Se o download falhar, a página mostra um erro com a URL.

Especificações e referências