同じ述語を使用するリソースを事前に明確にする方法がわかりません。私は RDF の初心者なので、用語についてはご容赦ください。例を挙げて説明したいと思います。
次のような(簡略化された)コンテキストを持つInterview
リソース/モデルがあります。
{
"id": {
"@id": "http://purl.org/dc/terms/identifier"
},
"interviewers": {
"@id": "http://purl.org/dc/terms/contributor",
"@type": "@id",
"@container": "@set"
},
"title": {
"@id": "http://purl.org/dc/terms/title"
},
"interviewees": {
"@id": "http://purl.org/dc/terms/contributor",
"@type": "@id",
"@container": "@set"
}
}
myInterviewer
とInterviewee
resources には、次のようなコンテキストがあります。
{
"id": {
"@id": "http://purl.org/dc/terms/identifier"
},
"name": {
"@id": "info:repository/ive/name"
}
}
次に、次のようなリソースを作成します。
{
"id": "06bad25f-83c1-4ee5-b055-0cb87d4c06be",
"interviewers": [
{
"id": "b0c262ce-7eb3-47f2-b212-a0e71cca0c92",
"name": "Somebody",
"@context": {
...
},
"@id": "urn:uuid:b0c262ce-7eb3-47f2-b212-a0e71cca0c92",
"@type": [
"http://id.loc.gov/vocabulary/relators/ivr"
]
}
],
"title": "Interview with So and So",
"interviewees": [
{
"id": "bd6bb9ec-f417-4f81-af69-e3d191e3f73b",
"name": "A third person",
"gender": "male",
"@context": {
...
},
"@id": "urn:uuid:bd6bb9ec-f417-4f81-af69-e3d191e3f73b",
"@type": [
"http://id.loc.gov/vocabulary/relators/ive"
]
}
],
"@context": {
...
},
"@id": "urn:uuid:06bad25f-83c1-4ee5-b055-0cb87d4c06be",
"@type": [
"info:repository/interview"
]
}
すべて問題なく、この「オブジェクト」をリポジトリに保存できます (RDF.rb ライブラリを使用しています)。ただし、オブジェクトを抽出して「再シリアル化」しようとすると、問題が発生します。たとえば (Ruby コードですみません)、
query = repository.query(:subject => RDF::URI(uri))
JSON.parse(query.dump(:jsonld, :context => Interview.context))
これらの行は、関連するステートメントをリポジトリから抽出し、適切なコンテキストを使用して JSON-LD "リソース" にマッシュアップします。ただし、インタビュイーとインタビュアーの両方がinterviewees
属性に移動されます。
もちろん、これは完全に理にかなっています。なぜなら、interviewers
との両方が述語を持つリソースにinterviewees
関連しているからです(それらは個々のタイプによってのみ区別されます)。interview
dc:contributor
関連するリソース タイプをプロセスに認識させる必要がありdump
ますが、その情報をインタビューのコンテキストに追加する方法がわかりません。
現在の JSON-LS 仕様に従ってこれが可能かどうかはわかりません。この問題は関連しているように見えますが、RDF/JSON-LD について確実に知るには十分な知識がありません。
interviewers
とに異なる述語を使用できますinterviewees
が、そうする必要はないようです。助言がありますか?
注: answer.semanticweb.comでもこの質問をしました。
追加情報
DC プロパティを修飾するための推奨される方法の 1 つに基づいてcontributor
、この方法で関係をモデル化しました(ここで、 aninterviewer
はcontributor
a type です)。http://id.loc.gov/vocabulary/relators/ivr
たとえば、次のようなリソースで MESH サブジェクトを表現できます。
<rdf:Description>
<dc:subject>
<dcterms:MESH>
<rdf:value>D08.586.682.075.400</rdf:value>
<rdfs:label>Formate Dehydrogenase</rdfs:label>
</dcterms:MESH>
</dc:subject>
</rdf:Description>
私が持っていたとします:
<rdf:Description>
<dc:subject>
<dcterms:MESH>
<rdf:value>D08.586.682.075.400</rdf:value>
<rdfs:label>Formate Dehydrogenase</rdfs:label>
</dcterms:MESH>
</dc:subject>
<dc:subject>
<dcterms:LCSH>
<rdf:value>Formate Dehydrogenase</rdf:value>
</dcterms:LCSH>
</dc:subject>
</rdf:Description>
lcsh_subjects
「プロパティ」を参照できるようにしたいと思います。ここでlcsh_subjects
は、リソースに関連するdc:subject
AND を持つノードを表し、タイプはdcterms:LCSH
です。しかし、私はおそらく JSON-LD モデルについて間違った方法で考えていることに気付きました。