1

コンテキストのない単純な JSON-LD ドキュメントを考えてみましょう。

[
   {
      "@id": "http://stackoverflow.com/#users",
      "http://rdfs.org/sioc/ns#name": "SO Users",
      "http://xmlns.com/foaf/0.1/member":
      {
         "@id": "http://example.com/me#me"
      }
   },
   {
      "@id": "http://example.com/me#me",
      "http://xmlns.com/foaf/0.1/givenName": "Tomasz"
   }
]

以下のようなものを取得するために、このドキュメントに単一の @context を追加したいと思います。

{
   "@context": { /* what here? */ },
   "@graph": [
   {
      "@id": "http://stackoverflow.com/#users",
      "Name": "SO Users",
      "Members": [ "http://example.com/me#me" ]
   },
   {
      "@id": "http://example.com/me#me",
      "Name": "Tomasz"
   }]
}

ここでの問題は、foaf:givenName および sioc:name プロパティが両方とも json の Name キーにマップされていることです。ネストされた @context を使用してプロパティをオーバーライドできるため、このドキュメントを手動で作成する場合は問題ありません。

ただし、JSON-LD 仕様で定義されている Compact 操作では可能ですか? または、すべての述語を明確なプロパティにマップする唯一のオプションです (この場合は Name と GivenName の可能性があります)。

4

1 に答える 1

4

Nameオブジェクト内で異なる IRI にマップするには、各オブジェクトに個別のコンテキストが必要になるか、メイン コンテキストと、それが別のことを意味するようにしたい場所をオーバーライドするコンテキストが必要になります。ただし、圧縮アルゴリズムはドキュメント全体に対して 1 つのコンテキストを使用するため、残念ながら標準のアルゴリズムではこれを行うことができません。

個別のコンテキストを使用して必要なものの例は次のとおりです。

{
   "@context": {
      "Name": "http://rdfs.org/sioc/ns#name",
      "Members": "http://xmlns.com/foaf/0.1/member" },
   "@graph": [
   {
      "@id": "http://stackoverflow.com/#users",
      "Name": "SO Users",
      "Members": [ "http://example.com/me#me" ]
   },
   {
      "@context": {"Name": "http://xmlns.com/foaf/0.1/givenName"},
      "@id": "http://example.com/me#me",
      "Name": "Tomasz"
   }]
}

オブジェクトの埋め込みを使用するドキュメントのさまざまなフレーム内でコンテキストを定義して使用できるようにするフレーミング機能を検討していますが、これは今のところ提案にすぎません。

http://json-ld.org/playgroundのように、さまざまなアルゴリズムの効果をテストするための良い遊びです。

于 2014-02-05T21:32:51.850 に答える