本文へスキップ

JSON-LDを展開形式に変換 — Numio

jsonld.js で JSON-LD ドキュメントを展開します。@context が適用されて取り除かれ、term は完全な IRI になり、すべての値が @value または @id オブジェクトの配列に包まれます。IRI にマッピングされないキーは削除されます。

schema.org や独自の @context の term が実際にどの IRI に解決されるかを確認する。

JSON-LD

Expanded

こんなときに使えます

  • schema.org や独自の @context の term が実際にどの IRI に解決されるかを確認する。
  • context で定義されていないためにプロパティが黙って消える構造化データをデバッグする。

使い方

  1. @context を含む JSON-LD ドキュメントを JSON-LD エディターに貼り付けます。
  2. 展開された配列を確認します。各ノードには完全なプロパティ IRI が並び、値は配列に入っています。
  3. 入力と比べます。出力にないプロパティは context でマッピングされていなかったものです。

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

[
  {
    "@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"
      }
    ]
  }
]

仕様と制限

展開は jsonld パッケージでブラウザ内で実行されます。https://schema.org/ のようなリモートの @context(デフォルトのサンプルで使用)はブラウザがダウンロードします。失敗した場合(オフライン、CORS)は、その URL を含むエラーが表示されます。

term 定義の "@type": "@id" は、文字列の値をリテラルではなく {"@id": ...} の参照にします。

ノードが 1 つだけでも、出力は常にトップレベルの配列です。

FAQ

一部のプロパティが消えたのはなぜですか?

展開では、@context で定義されておらず絶対 IRI でもないキーが削除されます。たとえば name だけをマッピングしている場合、nickname キーは出力から消えます。

schema.org の context を使えますか?

使えます。ブラウザが取得できれば "@context": "https://schema.org/" が機能します。オフラインで使うなら、例のように term 定義をインラインで書いてください。

すべての値が配列に入っているのはなぜですか?

展開形式ではプロパティ値と @type に常に配列を使うため、プロセッサーは値が 1 つでも複数でも同じように扱えます。

仕様を確認する