我定义了一个具有多个上下文的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"
}
}
上下文中定义的术语按顺序排列,最后一个上下文中遇到的术语获胜。在此示例中,我看不到在压缩时使用其他术语的任何方法。但是,您可能希望在 JSON-LD 1.1 中看到范围上下文,它确实为您提供了更大的灵活性。