All Projects → ad-freiburg → Qlever

ad-freiburg / Qlever

Licence: apache-2.0
Very fast SPARQL Engine, which can handle very large datasets like Wikidata, offers context-sensitive Autocompletion for SPARQL queries, and allows combination with Text Search. It's faster than anything else out there, in particular faster than Blazegraph or Virtuoso. The index builds are also much faster.

Labels

Projects that are alternatives of or similar to Qlever

LinkedDataHub
The Knowledge Graph notebook. Apache license.
Stars: ✭ 150 (+226.09%)
Mutual labels:  sparql
Sparqlwrapper
A wrapper for a remote SPARQL endpoint
Stars: ✭ 365 (+693.48%)
Mutual labels:  sparql
Awesome Semantic Web
A curated list of various semantic web and linked data resources.
Stars: ✭ 642 (+1295.65%)
Mutual labels:  sparql
jarql
SPARQL for JSON: Turn JSON into RDF using SPARQL syntax
Stars: ✭ 19 (-58.7%)
Mutual labels:  sparql
Sparql.js
A parser for the SPARQL query language in JavaScript
Stars: ✭ 271 (+489.13%)
Mutual labels:  sparql
Brightstardb
This is the core development repository for BrightstarDB.
Stars: ✭ 420 (+813.04%)
Mutual labels:  sparql
WikidataQueryServiceR
An R package for the Wikidata Query Service API
Stars: ✭ 23 (-50%)
Mutual labels:  sparql
Askomics
DEPRECATED. See askomics/flaskomics
Stars: ✭ 22 (-52.17%)
Mutual labels:  sparql
Semanticmediawiki
🔗 Semantic MediaWiki turns MediaWiki into a knowledge management platform with query and export capabilities
Stars: ✭ 359 (+680.43%)
Mutual labels:  sparql
Database
Blazegraph High Performance Graph Database
Stars: ✭ 568 (+1134.78%)
Mutual labels:  sparql
AskNowNQS
A question answering system for RDF knowledge graphs.
Stars: ✭ 32 (-30.43%)
Mutual labels:  sparql
Ganswer
A KBQA system based on DBpedia.
Stars: ✭ 261 (+467.39%)
Mutual labels:  sparql
Web Karma
Information Integration Tool
Stars: ✭ 489 (+963.04%)
Mutual labels:  sparql
IGUANA
IGUANA is a benchmark execution framework for querying HTTP endpoints and CLI Applications such as Triple Stores. Contact: [email protected]
Stars: ✭ 22 (-52.17%)
Mutual labels:  sparql
Virtuoso Opensource
Virtuoso is a high-performance and scalable Multi-Model RDBMS, Data Integration Middleware, Linked Data Deployment, and HTTP Application Server Platform
Stars: ✭ 688 (+1395.65%)
Mutual labels:  sparql
LSQ
Linked SPARQL Queries (LSQ): Framework for RDFizing triple store (web) logs and performing SPARQL query extraction, analysis and benchmarking in order to produce datasets of Linked SPARQL Queries
Stars: ✭ 23 (-50%)
Mutual labels:  sparql
Ontop
Ontop is a platform to query relational databases as Virtual RDF Knowledge Graphs using SPARQL
Stars: ✭ 419 (+810.87%)
Mutual labels:  sparql
Sparql Engine
🚂 A framework for building SPARQL query engines in Javascript/Typescript
Stars: ✭ 39 (-15.22%)
Mutual labels:  sparql
Jena
Apache Jena
Stars: ✭ 700 (+1421.74%)
Mutual labels:  sparql
Easyrdf
EasyRdf is a PHP library designed to make it easy to consume and produce RDF.
Stars: ✭ 546 (+1086.96%)
Mutual labels:  sparql

QLever

Build Status

QLever (pronounced "Clever") is an efficient SPARQL engine, which can handle very large dataset with tens of billions of triples on a standard PC or server. For example, QLever can index the complete Wikidata (18 billion triples) in less than 24 hours and execute typical queries in less than a second, using no more than 40 GB of RAM. QLever is also fast for queries that produce large or very large results (millions of rows per second). Other SPARQL engines, like Virtuoso or Blazegraph, are very slow, when large sequences of IRIs or literals have to be materialized.

On top of the standard SPARQL functionality, QLever also supports search in TEXT associated with the knowledge base as well as SPARQL Autocompletion. These are described on the advanced features page.

A demo of QLever on a variety of large datasets, including Wikidata, can be found here. Those demos also feature QLever's autocompletion capabilities. The first two autocompletions might be slow due to a cold cache; after that, they will be fast.

The basic design behind QLever was described in this CIKM'17 paper. If you use QLever in your work, please cite that paper. Much functionality has been added to QLever since then. In particular, the following standard SPARQL constructs are all supported in the meantime: LIMIT, OFFSET, ORDER BY, GROUP BY, HAVING, COUNT, SAMPLE, GROUP_CONCAT, FILTER, REGEX, LANG, OPTIONAL, UNION, MINUS, VALUES, BIND. Subqueries are also supported. The SERVICE keyword is not yet supported. We are currently working on several publications that describe and evaluate these extensions.

Quickstart

If you want to skip the details and just get a running QLever instance to play around with. Follow the quickstart guide.

Alternatively to get started with a real (and really big) dataset we have prepared a Wikidata Quickstart Guide. This guide takes you through the entire process of loading the full Wikidata Knowledge Base into QLever, but don't worry it is pretty simple.

Overview

The rest of this page is organized in the following sections. Taking you through the steps necessary to get a QLever instance up and runnining starting from a simple Turtle dump of a Knowledge Base.

Further documentation is available on the following topics

Building the QLever Docker Container

We recommend using QLever with docker. If you absolutely want to run QLever directly on your host see here.

The installation requires a 64-bit system, docker version 18.05 or newer and git.

git clone --recursive https://github.com/ad-freiburg/QLever.git qlever
cd qlever
docker build -t qlever .

This creates a docker image named "qlever" which contains everything needed to use QLever. If you want to be sure that everything is working as it should before proceeding, you can run the end-to-end tests

Creating an Index

Obtaining Data

First make sure that you have your input data ready and accessible on your machine. If you have no input data yet obtain it from one of our recommended sources or create your own knowledge base in standard NTriple or Turtle formats and (optionally) add a text corpus.

Note that QLever only accepts UTF-8 encoded input files. Then again you should be using UTF-8 anyway

Permissions

By default and when running docker without user namespaces, the container will use the user ID 1000 which on Linux is almost always the first real user. If the default user does not work add -u "$(id -u):$(id -g)" to docker run so that QLever executes as the current user.

When running docker with user namespaces you may need to make the index folder accessible to the user the QLever process is mapped to on the host (e.g. nobody, see /etc/subuid)

chmod -R o+rw ./index

Building the Index

Then proceed with creating an index.

Important: Ensure that you have enough disk space where your ./index folder resides or see below for using a separate path

To build a new index run a bash inside the QLever container as follows

docker run -it --rm \
           -v "<absolute_path_to_input>:/input" \
           -v "$(pwd)/index:/index" --entrypoint "bash" qlever

If you want to use a separate path you MUST change the "$(pwd)/index part in all docker … commands and replace it with the absolute path to your index.

From now on we are inside the container, make sure you follow all the coming instructions for creating an index and only then proceed to the next section.

If your input knowledge base is in the standard NTriple or Turtle format create the index with the following command

IndexBuilderMain -l -i /index/<prefix> -f /input/knowledge_base.ttl

Where <prefix> is the base name for all index files and -l externalizes long literals to disk. If you use index as the prefix you can later skip the -e INDEX_PREFIX=<prefix> flag.

To include a text collection, the wordsfile and docsfiles (see here for the required format) is provided with the -w and -d flags respectively.

Then the full command will look like this:

IndexBuilderMain -l -i /index/<prefix> -f /input/knowledge_base.ttl \
  -w /input/wordsfile.tsv -d /input/docsfile.tsv

You can also add a text index to an existing knowledge base index by adding the -A flag and ommitting the -f flag.

Running QLever

To run a QLever server container use the following command.

docker run -it -p 7001:7001 \
  -v "$(pwd)/index:/index" \
  -e INDEX_PREFIX=<prefix> \
  --name qlever \
  qlever

Where additional arguments can be added at the end of the command. If you want the container to run in the background and restart automatically replace -it with -d --restart=unless-stopped

Executing queries

The quickest way to run queries is to use the minimal web interface, available at the port specified above (7001 in the example). For a more advanced web interface you can use the QLever UI.

Queries can also be executed from the command line using curl

curl 'http://localhost:7001/?query=SELECT ?x WHERE {?x <rel> ?y}'
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].