如何将某些属性定义为"可选"在JSON-LD上下文中?
我创建了问题的简单示例。这是example in JSON-LD Playground。这是示例数据:
{
"@context": {
"ex": "http://example.org/ex#",
"foaf": "http://xmlns.com/foaf/0.1/",
"frapo": "http://purl.org/cerif/frapo/",
"owl": "http://www.w3.org/2002/07/owl#",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"xsd": "http://www.w3.org/2001/XMLSchema#"
},
"@graph": [
{
"@id": "ex:Organization_1",
"@type": "foaf:Organisation",
"foaf:member": [
{
"@id": "ex:Person_1"
},
{
"@id": "ex:Person_2"
}
],
"frapo:funds": [
{
"@id": "ex:Project_1"
},
{
"@id": "ex:Project_2"
}
]
},
{
"@id": "ex:Person_2",
"@type": "foaf:Person",
"foaf:currentProject": {
"@id": "ex:Project_2"
},
"foaf:name": "Jack"
},
{
"@id": "ex:Project_2",
"@type": "foaf:Project",
"foaf:name": "Small project 2"
},
{
"@id": "ex:Project_1",
"@type": "foaf:Project",
"foaf:name": "Big project 1"
},
{
"@id": "ex:Person_1",
"@type": "foaf:Person",
"foaf:name": "Bill",
"foaf:pastProject": [
{
"@id": "ex:Project_1"
},
{
"@id": "ex:Project_2"
}
]
}
]
}
我希望组织成为主节点,例如:
的foaf:组织
成员:[{Person},{Person}]
资金:[{Project},{Project}]
为了创建这样的结构我创建了框架:
{
"@context": {
"ex": "http://example.org/ex#",
"foaf": "http://xmlns.com/foaf/0.1/",
"owl": "http://www.w3.org/2002/07/owl#",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"frapo": "http://purl.org/cerif/frapo/"
},
"@type": "foaf:Organisation",
"foaf:member": {
"foaf:currentProject": {
"@embed": false
},
"foaf:pastProject": {
"@embed": false
}
},
"frapo:funds": {}
}
现在问题是foaf:成员变成" null",如果删除那些项目关系,项目会嵌入到Person实例中。
答案 0 :(得分:4)
请尝试使用此框架:
{
"@context": {
"ex": "http://example.org/ex#",
"foaf": "http://xmlns.com/foaf/0.1/",
"owl": "http://www.w3.org/2002/07/owl#",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"frapo": "http://purl.org/cerif/frapo/"
},
"@type": "foaf:Organisation",
"foaf:member": {
"foaf:currentProject": {
"@default": [],
"@embed": false
},
"foaf:pastProject": {
"@default": [],
"@embed": false
}
},
"frapo:funds": {}
}