Как определить некоторые свойства как «необязательные» в контексте JSON-LD?
Я создал простой пример проблемы. Вот тот же пример в 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}]
средства: [{Проект}, {Проект}]
Для создания такой структуры я создал рамку:
{
"@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:member оказывается «нулевым», и если вы удалите эти проекты отношений проекта, они будут встроены в экземпляры Person.