JSON-LDを展開形式に変換 — Numio
jsonld.js で JSON-LD ドキュメントを展開します。@context が適用されて取り除かれ、term は完全な IRI になり、すべての値が @value または @id オブジェクトの配列に包まれます。IRI にマッピングされないキーは削除されます。
schema.org や独自の @context の term が実際にどの IRI に解決されるかを確認する。
こんなときに使えます
- schema.org や独自の @context の term が実際にどの IRI に解決されるかを確認する。
- context で定義されていないためにプロパティが黙って消える構造化データをデバッグする。
使い方
- @context を含む JSON-LD ドキュメントを JSON-LD エディターに貼り付けます。
- 展開された配列を確認します。各ノードには完全なプロパティ IRI が並び、値は配列に入っています。
- 入力と比べます。出力にないプロパティは 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 つでも複数でも同じように扱えます。