CubiQL (formerly called graphql-qb) is a proof of concept GraphQL service for querying Linked Data Cubes that was produced as part of the Open Gov Intelligence project.
The primary aim of graphql-qb is to facilitate the querying of multidimensional QB datasets through GraphQL in an easier more familiar way than through SPARQL.
We have hosted an example graphql-qb service at graphql-qb.publishmydata.com which is currently using data from from statistics.gov.scot.
The graphql endpoint for this service can be found at: http://graphql-qb.publishmydata.com/graphql
-
Dataset Discovery
-
Dataset metadata
-
Filtering
-
Locking Dimensions
-
Aggregations (scoped to current filters/locks)
-
Misc
-
Pagination
As CubiQL provides access to datacubes and slices containing potentially large amounts of observations, observations are paginated following the graphql recommendation. Paginating through the data might not however suit all consumers, and might even timeout on larger datasets. So we anticipate providing a download_link field into the observations schema #43.
You can see an example of a pagination query here. You'll notice that this query has been parameterised by a $page parameter, which is provided in the supplied variable map. So to get the next page of results you just need to supply a new map of variables with page bound to the last value of the next_page field.
You can browse our schema by following these steps:
- Run the graphql voyager introspection query on our endpoint
- Copy the result of the above query to your clipboard
- Visit https://apis.guru/graphql-voyager/
- Select custom schema
- Paste the schema into the text area
- Click change schema.
$ java -jar graphql-qb-0.1.0-standalone.jar OPTIONS
The available options are:
| Name | Default |
|---|---|
| port | 8080 |
| endpoint |
For example to run the server against a remote SPARQL endpoint on port 9000:
$ java -jar graphql-qb-standalone.jar --port 9000 --endpoint http://remote-endpoint/sparql/query
If the endpoint is not specified the built-in test data will be used.
The server hosts a GraphQL endpoint at http://localhost:PORT/graphql which follows the protocol described here.
Copyright © 2017 Swirrl IT Ltd.
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.
