All Projects → Swirrl → cubiql

Swirrl / cubiql

Licence: EPL-1.0 license
CubiQL: A GraphQL service for querying multidimensional Linked Data Cubes

Programming Languages

clojure
4091 projects

Projects that are alternatives of or similar to cubiql

Islandora-Metadata-Interest-Group
The purpose of the Islandora Metadata Interest Group (IMIG) is to investigate and provide metadata solutions that help improve metadata creation, maintenance and enhancement in Islandora.
Stars: ✭ 29 (-27.5%)
Mutual labels:  linked-data, rdf
rdfa-streaming-parser.js
A fast and lightweight streaming RDFa parser for JavaScript
Stars: ✭ 15 (-62.5%)
Mutual labels:  linked-data, rdf
mayktso
🌌 mayktso: encounters at an endpoint
Stars: ✭ 19 (-52.5%)
Mutual labels:  linked-data, rdf
jsonld-context-parser.js
Parses JSON-LD contexts
Stars: ✭ 20 (-50%)
Mutual labels:  linked-data, rdf
carml
A pretty sweet RML engine, for RDF.
Stars: ✭ 74 (+85%)
Mutual labels:  linked-data, rdf
LD-Connect
LD Connect is a Linked Data portal for IOS Press in collaboration with the STKO Lab at UC Santa Barbara.
Stars: ✭ 0 (-100%)
Mutual labels:  linked-data, rdf
CSV2RDF
Streaming, transforming, SPARQL-based CSV to RDF converter. Apache license.
Stars: ✭ 48 (+20%)
Mutual labels:  linked-data, rdf
Php Json Ld
PHP implementation of a JSON-LD Processor and API
Stars: ✭ 246 (+515%)
Mutual labels:  linked-data, rdf
rdf2x
RDF2X converts big RDF datasets to the relational database model, CSV, JSON and ElasticSearch.
Stars: ✭ 43 (+7.5%)
Mutual labels:  linked-data, rdf
viziquer
Tool for Search in Structured Semantic Data
Stars: ✭ 12 (-70%)
Mutual labels:  linked-data, rdf
pyLDAPI
A very small module to add Linked Data API functionality to a Python Flask installation
Stars: ✭ 28 (-30%)
Mutual labels:  linked-data, rdf
YALC
🕸 YALC: Yet Another LOD Cloud (registry of Linked Open Datasets).
Stars: ✭ 14 (-65%)
Mutual labels:  linked-data, rdf
ControlledVocabularyManager
Rails application with Blazegraph for managing controlled vocabularies in RDF.
Stars: ✭ 20 (-50%)
Mutual labels:  linked-data, rdf
twinql
A graph query language for the semantic web
Stars: ✭ 17 (-57.5%)
Mutual labels:  linked-data, rdf
basex-rdf
RDF parsing for BaseX
Stars: ✭ 16 (-60%)
Mutual labels:  linked-data, rdf
Processor
Ontology-driven Linked Data processor and server for SPARQL backends. Apache License.
Stars: ✭ 54 (+35%)
Mutual labels:  linked-data, rdf
Grafter
Linked Data & RDF Manufacturing Tools in Clojure
Stars: ✭ 174 (+335%)
Mutual labels:  linked-data, rdf
Rdf4j
Eclipse RDF4J: scalable RDF for Java
Stars: ✭ 242 (+505%)
Mutual labels:  linked-data, rdf
matcha
🍵 SPARQL-like DSL for querying in memory Linked Data Models
Stars: ✭ 18 (-55%)
Mutual labels:  linked-data, rdf
semagrow
A SPARQL query federator of heterogeneous data sources
Stars: ✭ 27 (-32.5%)
Mutual labels:  linked-data, rdf

CubiQL

Build Status

CubiQL

CubiQL (formerly called graphql-qb) is a proof of concept GraphQL service for querying Linked Data Cubes that was produced as part of the OpenGovIntelligence project, funded by the European Union’s Horizon 2020 research and innovation programme under grant agreement No 693849.

The primary aim of CubiQL is to facilitate the querying of multidimensional QB datasets through GraphQL in an easier more familiar way than through SPARQL.

Running

The project is built with leiningen - after installing it you can build an uberjar with

$ lein uberjar

this will create a cubiql-version-standalone.jar file in the target/uberjar directory. The server can then be started with:

$ java -jar target/uberjar/cubiql-standalone.jar OPTIONS

The available options are:

Name Description Required Default
port Port to run server on no 8080
endpoint Endpoint for datasets yes
configuration Configuration for the dataset structure no

For example to run the server against a remote SPARQL endpoint on port 9000:

$ java -jar cubiql-standalone.jar --port 9000 --endpoint http://remote-endpoint/sparql/query

The endpoint can also refer to a local directory containing RDF data files. The repository contains test datasets in the data directory. When running from the root directory this repository can be specified with:

$ java -jar cubiql-standalone.jar --port 9000 --endpoint data

During development lein run can be used instead of building the uberjar:

$ lein run --endpoint data

The server hosts a GraphQL endpoint at http://localhost:PORT/graphql which follows the protocol described here.

Example Queries

The following examples expect the server to be running locally on port 8080 with the example dataset. You can run the server with

$ lein run --endpoint data

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.

Using graphql voyager

You can browse our schema by following these steps:

  1. Run the graphql voyager introspection query on your endpoint
  2. Copy the result of the above query to your clipboard
  3. Visit https://apis.guru/graphql-voyager/
  4. Select 'Change Schema'
  5. Select the 'Introspection' tab
  6. Paste the schema into the text area
  7. Click change display

You'll see something like: screen shot 2017-09-08 at 15 48 29

Generating RDF data cubes with table2qb

table2qb is a command-line tool for generating RDF data cubes from tidy CSV data. See the end-to-end example of using table2qb and CubiQL together to generate and query RDF data cubes.

License

Copyright © 2017 Swirrl IT Ltd.

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].