我很難弄清楚如何消除事先使用相同謂詞的資源的歧義。我是RDF新手,請原諒我的術語:我會試着用例子來解釋我的意思。在JSON-LD中使用相同謂詞對歧義資源進行歧義消除
我有一個(簡單)情況下像這樣的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"
}
}
我Interviewer
和Interviewee
資源有背景是這樣的:
{
"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
都涉及到與dc:contributor
謂詞interview
資源(他們只是通過他們各自的類型來區分)。
我需要讓dump
進程知道相關的資源類型,但我不知道有什麼方法可以將這些信息添加到採訪的上下文中。
根據目前的JSON-LS規格,我不知道這是否可能。 This issue看起來好像可能是相關的,但我對RDF/JSON-LD確切知之甚少。
我可以對interviewers
和interviewees
使用不同的謂詞,但似乎並不需要這樣做。有什麼建議麼?
注意:我也在answers.semanticweb.com提問這個問題。
附加信息
我模仿我的contributor
關係以這種方式(其中一個interviewer
是contributor
與類型http://id.loc.gov/vocabulary/relators/ivr
)基礎上,對符合條件的DC性能所推薦的方法之一。例如,人們可以表達對像資源的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
相關的資源並且類型爲dcterms:LCSH
的節點。但是,我意識到我可能以錯誤的方式思考JSON-LD模型。
AFAIK的'「@type」:「@id」'意味着你的背景下,該屬性有一個字符串類型,它的價值應該被解釋爲IRI。 'http:// purl.org/dc/terms/contributor'似乎是一個類型(對象),而不是屬性名稱(謂詞)。所以我認爲你的背景是有缺陷的。但我在JSON-LD中也是新的... – inf3rno
我猜'@type'等同於'rdf:type'謂詞,'@ id'至少等價於屬性定義的實際主題,但很難找到任何關於這個...:S – inf3rno