我无法弄清楚如何预先消除使用相同谓词的资源的歧义。我是 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"
}
}
我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
都与interview
带有谓词的资源相关dc:contributor
(它们仅通过它们各自的类型来区分)。
我需要让dump
流程了解相关的资源类型,但我不知道有什么方法可以将该信息添加到面试的上下文中。
根据当前的 JSON-LS 规范,我不知道这是否可能。这个问题似乎是相关的,但我对 RDF/JSON-LD 的了解还不够,无法确定。
interviewers
我可以为and使用不同的谓词interviewees
,但似乎我不应该这样做。有什么建议么?
注意:我也在answers.semanticweb.com上问过这个问题。
附加信息
我已经根据推荐的限定 DC 属性的方法之一,contributor
以这种方式(其中 aninterviewer
是 acontributor
和 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
“属性”,其中表示与具有AND 类型lcsh_subjects
的资源相关的那些节点。但是,我意识到我可能以错误的方式考虑 JSON-LD 模型。dc:subject
dcterms:LCSH