If you find any issues / have any comment, please contact kg@ebrains.eu to give us your feedback!
Restructure and sort
Sometimes, it's useful to be able to sort instances by their values and/or to simplify their structures, especially if they involve deep nestedness. This is what the query API allows you to do:
Sorting the results alphabetically
Sorting the results alphabetically is e.g. interesting for pagination where you don't want to load all results and sort
them in a post-processing step (e.g. to populate a list of items to the end-user lazily loaded).
The specification of the "sort": true
flag on one of the properties therefore allows to sort the instances by the
value of this property in an ascending order.
Please note, that you can specify "sort": true on only one property and only on the root level. If you need to sort by a value originating from a nested value, you can use the flattening mechanism (see below) to map the nested value to the root level.
Request
{
"@context": {
"@vocab": "https://core.kg.ebrains.eu/vocab/query/",
"propertyName": {
"@id": "propertyName",
"@type": "@id"
}
},
"meta": {
"type": "https://openminds.ebrains.eu/core/DatasetVersion"
},
"structure": {
"path": "https://openminds.ebrains.eu/vocab/fullName",
"sort": true
}
}
Response
Expected: 200
{
"data": [
{
"https://openminds.ebrains.eu/vocab/fullName": "a"
},
{
"https://openminds.ebrains.eu/vocab/fullName": "b"
},
...
],
"message": null,
"error": null,
"startTime": 1644940156713,
"durationInMs": 83,
"transactionId": null,
"total": 1245,
"size": 20,
"from": 0
}
Flattening structures
Request
{
"@context": {
"@vocab": "https://core.kg.ebrains.eu/vocab/query/",
"query": "https://schema.hbp.eu/myQuery/",
"path": {
"@type": "@id",
"@id": "path"
}
},
"meta": {
"type": "https://openminds.ebrains.eu/core/DatasetVersion"
},
"structure": {
"path": [
"https://openminds.ebrains.eu/vocab/custodian",
"https://openminds.ebrains.eu/vocab/familyName"
]
}
}
Response
Expected: 200
{
"data": [
{
"https://schema.hbp.eu/myQuery/custodian": [
"Foo",
"Bar"
]
},
{
"https://schema.hbp.eu/myQuery/custodian": [
"Hello",
"World"
]
},
...
],
"message": null,
"error": null,
"startTime": 1645025828640,
"durationInMs": 33,
"transactionId": null,
"total": 143,
"size": 20,
"from": 0
}
Single item (to be implemented)
If you want to ensure that you only retrieve a single value for a specific property, you can set "singleValue" to true.
Attention
The Query API will return the first item only and will not cross-check if there are any additional elements which could potentially be ignored.
Request
{
"@context": {
"@vocab": "https://core.kg.ebrains.eu/vocab/query/",
"query": "https://schema.hbp.eu/myQuery/",
"propertyName": {
"@type": "@id",
"@id": "propertyName"
},
"path": {
"@type": "@id",
"@id": "path"
}
},
"meta": {
"type": "https://openminds.ebrains.eu/core/DatasetVersion"
},
"structure": {
"propertyName": "query:custodian",
"path": [
"https://openminds.ebrains.eu/vocab/custodian",
"https://openminds.ebrains.eu/vocab/familyName"
],
"singleValue": true
}
}
Response
Expected: 200
{
"data": [
{
"https://schema.hbp.eu/myQuery/custodian": "Foo"
},
{
"https://schema.hbp.eu/myQuery/custodian": "Hello"
},
...
],
"message": null,
"error": null,
"startTime": 1645025828640,
"durationInMs": 33,
"transactionId": null,
"total": 143,
"size": 20,
"from": 0
}