How to define some properties as "optional" in JSON-LD context?
I created simple example of the problem. Here is the same example in JSON-LD Playground. This is the example data:
{
"@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"
}
]
}
]
}
I want the Organisation to be the main node, such as:
foaf:Organisation
member: [{Person}, {Person}]
funds: [{Project}, {Project}]
In order to create such stucture i created frame:
{
"@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": {}
}
Now the problem is that foaf:member turns out to be "null", and if you remove those project relationships projects get embedded in the Person instances.
Try it with this frame instead:
{
"@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": {}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With