问题描述
我将以下 json 与下面的上下文合并,
目前我面临两个问题
1 JSON 中不同级别的重复键或属性如何处理,以便我可以将正确的三元组相互连接?
2 @vocab 被忽略,我在 rowid 上使用了 @id,它在 json-ld 游乐场中添加了一个默认前缀
{
"@context": {
"@vocab": "http://xyz.qte.com/01#","xxx": "http://xyz.qte.com/01#","@base": "http://xyz.qte.com/01#","rowid": "@id","values": "@nest","relation": "@nest","blobs": "@nest","displaytypename": {
"@id": "http://www.w3.org/2000/01/rdf-schema#label","@type": "@id"
},"type": "@type","blobid": {
"@id": "cccmi:blobid","@type": "@id"
}
},"@id": "xxx:abs","type": "abs","objectversion": 15,"displaytypename": "ABS","displaytypenamelang": "en","objectid": "123456","typeversion": "r34","values": [{
"value": 278494
}],"rows": [{
"rowid": "123","displaytypename": "asdf","type": "affected_objects","values": [{
"value": "1234"
}]
},{
"rowid": "345","displaytypename": "bla","type": "affected_objects2","values": [{
"value": "5678"
}],"relation": {
"rows": [{
"rowid": "678","displaytypename": "baba","type": "affected_objects3","values": [{
"value": "General"
}],"relation": {
"rows": [{
"rowid": "546","type": "affected_objects4","values": [{
"value": "2002-09-04"
}]
},{
"rowid": "874","displaytypename": "blah","type": "affected_objects5","values": [{
"value": "TMBLA"
}]
},{
"rowid": "973","type": "affected_objects6","values": [{
"value": "456"
}]
}
]
}
}]
}
},{
"rowid": "987","displaytypename": "bllah","type": "co_issue","values": [{
"value": 3
}],"relation": {
"rows": [{
"rowid": "163","displaytypename": "blaj","type": "affected_objects7","values": [{
"value": "Exists"
}],"blobs": [{
"mime_type": "abc","blobid": "2344"
}]
}
]
}
}
]
}
解决方法
“重复键”是指在 JSON 文档的不同级别用作属性键的相同术语。为此,JSON-LD 具有 Scoped Context 的概念,由此您可以在某些属性的值内或类型有效的地方使用上下文。通过这种方式,例如,您可以定义“值”以映射到顶层的一个 IRI,并在“值”(或一些其他中间属性)的术语定义内,定义一个新的上下文,该上下文重新定义“价值”
关于 @vocab
和 @id
,@id
被视为文档相关术语,并且字符串值从文档库或 @base
(如果在活动上下文(见section 4.1.3 Base IRI)。 @vocab
用于扩展与词汇相关的术语,例如 @type
和对象属性键,它们没有另外定义为术语(请参阅 section 4.1.2 Default Vocabulary。