本文へスキップ

JSON-LDを圧縮形式に変換 — Numio

jsonld.compact を使い、指定した context に対して JSON-LD ドキュメントをコンパクト化します。完全な IRI は自分で定義した term や prefix:suffix 形式の名前になり、要素が 1 つの配列は単なる値にまとめられます。

RDF ツールが出力した冗長な展開形式の JSON-LD を、自分の context で定義した短く読みやすいキーに変える。

JSON-LD

Context

Compacted

こんなときに使えます

  • RDF ツールが出力した冗長な展開形式の JSON-LD を、自分の context で定義した短く読みやすいキーに変える。
  • context を公開する前に、IRI が想定どおりにマッピングされるかを確認する。

使い方

  1. ドキュメント(展開形式でも、任意の context を使ったものでも可)を JSON-LD エディターに貼り付けます。
  2. Context エディターに、@context キーを持つオブジェクトとして目的の context を入れます。
  3. 結果を確認します。context が先頭に置かれ、プロパティはその term を使って書かれます。

JSON-LD + context

// JSON-LD editor
{
  "@id": "http://example.org/book/1",
  "@type": "http://schema.org/Book",
  "http://schema.org/name": "Dune",
  "http://schema.org/author": {"@id": "http://example.org/frank-herbert"},
  "http://schema.org/datePublished": {"@value": "1965", "@type": "http://www.w3.org/2001/XMLSchema#gYear"}
}

// Context editor
{"@context": {"schema": "http://schema.org/", "title": "schema:name",
  "author": {"@id": "schema:author", "@type": "@id"}}}

コンパクト化した JSON-LD

{
  "@context": {
    "schema": "http://schema.org/",
    "title": "schema:name",
    "author": {
      "@id": "schema:author",
      "@type": "@id"
    }
  },
  "@id": "http://example.org/book/1",
  "@type": "schema:Book",
  "author": "http://example.org/frank-herbert",
  "schema:datePublished": {
    "@type": "http://www.w3.org/2001/XMLSchema#gYear",
    "@value": "1965"
  },
  "title": "Dune"
}

仕様と制限

一致する term のないプロパティは、prefix が定義されていればそれを使い(schema:datePublished)、なければ完全な IRI のままです。

"@type": "@id" を持つ term を使うと、上の author のように参照を単なる文字列にコンパクト化できます。

jsonld.js を使ってブラウザで実行されます。どちらのエディターにも有効な JSON が必要です。リモートの context URL はブラウザが取得します。ダウンロードに失敗すると、その context URL を含むエラーが表示されます。

FAQ

型付きの値がオブジェクトのままなのはなぜですか?

@type を持つ値(xsd:gYear の日付など)は、context がそのプロパティに同じ @type の term を定義していない限り {"@type", "@value"} のままです。

Context エディターに URL を書けますか?

書けます。{"@context": "https://..."} の形にします。ブラウザがダウンロードするので、サーバーがクロスオリジンのリクエストを許可している必要があります。インラインの context ならこの問題はありません。

コンパクト化でデータは変わりますか?

変わりません。コンパクト化は IRI と値の書き方を変えるだけで、結果を展開すれば同じグラフになります。

仕様を確認する