我定义了一个带有多个上下文的jsonld文件。每个上下文定义一个具有相同名称的术语。当在jsonld文件上完成压缩时,所有具有相同名称的字段都在同一名称空间中。
例如,使用下面的文件
{
"@context": [
{
"name1": "http://example.org/name1/",
"id" : {
"@id" : "name:id",
"@type" : "xsd:string"
}
},
{
"name2": "http://example.org/name2/",
"identifier": {
"@id": "name2"
},
"id" : {
"@id" : "name2:id",
"@type" : "xsd:string"
}
}],
"@id": "http://example.org/1",
"id" : "id/1",
"identifier": {
"id" : "identifier/1"
}
}
压缩后我得到了这个结果
{
"@id" : "http://example.org/1",
"http://example.org/name2/" : {
"http://example.org/name2/id" : {
"@type" : "xsd:string",
"@value" : "identifier/1"
}
},
"http://example.org/name2/id" : {
"@type" : "xsd:string",
"@value" : "id/1"
}
}
但我会期待这个
{
"@id" : "http://example.org/1",
"http://example.org/name2/" : {
"http://example.org/name2/id" : {
"@type" : "xsd:string",
"@value" : "identifier/1"
}
},
"http://example.org/name1/id" : { <== here name1
"@type" : "xsd:string",
"@value" : "id/1"
}
}
答案 0 :(得分:1)
在上下文中定义的术语按顺序排列,最后一个上下文遇到胜利。在这个例子中,我没有看到任何方法在压缩时使用不同的术语。但是,您可能希望在JSON-LD 1.1中看到Scoped Contexts,它确实为您提供了更大的灵活性。