Pular para o conteúdo

Expandir dados JSON-LD — Numio

Expande um documento JSON-LD com jsonld.js: o @context é aplicado e removido, os termos viram IRIs completas e cada valor é envolvido em um array de objetos @value ou @id. Chaves que não mapeiam para uma IRI são descartadas.

Verificar para quais IRIs seus termos do schema.org ou de um @context próprio realmente são resolvidos.

JSON-LD

Expanded

Quando usar

  • Verificar para quais IRIs seus termos do schema.org ou de um @context próprio realmente são resolvidos.
  • Depurar dados estruturados em que uma propriedade some sem aviso porque não está definida no contexto.

Como usar

  1. Cole um documento JSON-LD com seu @context no editor JSON-LD.
  2. Confira o array expandido: cada nó lista as IRIs completas das propriedades com os valores em arrays.
  3. Compare com sua entrada; qualquer propriedade ausente na saída não foi mapeada pelo contexto.

JSON-LD

{
  "@context": {
    "name": "http://schema.org/name",
    "knows": {"@id": "http://schema.org/knows", "@type": "@id"},
    "homepage": {"@id": "http://schema.org/url", "@type": "@id"}
  },
  "@id": "http://example.org/jane",
  "@type": "http://schema.org/Person",
  "name": "Jane Doe",
  "homepage": "http://janedoe.example",
  "knows": "http://example.org/john"
}

JSON-LD expandido

[
  {
    "@id": "http://example.org/jane",
    "@type": [
      "http://schema.org/Person"
    ],
    "http://schema.org/url": [
      {
        "@id": "http://janedoe.example"
      }
    ],
    "http://schema.org/knows": [
      {
        "@id": "http://example.org/john"
      }
    ],
    "http://schema.org/name": [
      {
        "@value": "Jane Doe"
      }
    ]
  }
]

Detalhes e limitações

A expansão roda no seu navegador com o pacote jsonld. Um @context remoto como https://schema.org/ (usado no exemplo padrão) é baixado pelo seu navegador; se isso falhar (offline, CORS), a página mostra um erro com a URL.

"@type": "@id" em uma definição de termo transforma um valor string em uma referência {"@id": ...} em vez de um literal.

A saída é sempre um array de nível superior, mesmo para um único nó.

FAQ

Por que algumas das minhas propriedades sumiram?

A expansão descarta chaves que não estão definidas no @context e não são IRIs absolutas. Por exemplo, com apenas name mapeado, a chave nickname é removida da saída.

Posso usar o contexto do schema.org?

Sim. "@context": "https://schema.org/" funciona se o seu navegador conseguir baixá-lo. Para uso offline, escreva as definições de termos inline, como no exemplo.

Por que cada valor está dentro de um array?

A forma expandida sempre usa arrays para os valores das propriedades e para @type, para que os processadores tratem valores únicos e múltiplos da mesma forma.

Especificações e referências