Skip to content
RDFS reasoning on (massively) parallel hardware.
C++ C Shell
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


grdfs – parallel RDFS reasoning for CPU and GPU

grdfs is an RDFS reasoner that uses OpenCL for fine-grained parallelism. It can thus exploit massively parallel hardware such as modern GPUs but also runs well on CPUs. Currently it supports the following features:

  • OpenCL implementation of most used RDFS entailment rules.
  • In-memory storage of entailed triples.
  • Writing all or only entailed triples to stdout.
  • Including RDFS axiomatic triples
  • On-device removal of global and local duplicates (local duplicate removal currently only works on GPU devices).


  • grdfs uses the turtle parser from RDF3-X, it thus is used as follows:
  • grdfs -i <turtle_file>
  • By default, grdfs will use the GPU and print some info to stdout.


  • -i or --input-file <file.ttl> -- source turtle file (required)
  • --device gpu|cpu -- OpenCL device to use (gpu, cpu)
  • -l or --no-local-dedup -- disable local deduplication
  • -g or --no-global-dedup -- disable global deduplication
  • -a or --axioms -- include RDFS axiomatic triples
  • -t or --time -- print profiling information
  • -p or --print-triples -- write triples to stdout (in NTriples format)


  • For building grdfs a C++11 compiler is needed. We recommend one of the following:
    • Clang 3.1
    • GCC 4.7
  • On Linux, the AMD APP SDK must be installed
  • Boost program_options
    • Mac OS X: brew install boost --with-c++11
    • Ubuntu: sudo apt-get install libboost-dev libboost-program-options-dev


  • Mac OS X: use provided Xcode project or type make.
  • Linux: type make.

Open Issues

  • Complete rule implementation
  • Using multiple OpenCL devices
  • Partitioning large graphs to fit in device memory
Something went wrong with that request. Please try again.