Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Rdflib | 1,956 | 1,567 | 557 | a day ago | 37 | August 01, 2023 | 244 | bsd-3-clause | Python | |
RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information. | ||||||||||
Akutan | 1,658 | 4 years ago | 18 | apache-2.0 | Go | |||||
A distributed knowledge graph store | ||||||||||
Awesome Graph | 991 | 5 months ago | 8 | |||||||
A curated list of resources for graph databases and graph computing tools | ||||||||||
Badwolf | 958 | a year ago | 22 | March 31, 2022 | 18 | apache-2.0 | Go | |||
Temporal graph store abstraction layer. | ||||||||||
Oxigraph | 824 | 4 | 2 days ago | 5 | March 19, 2022 | 61 | apache-2.0 | Rust | ||
SPARQL graph database | ||||||||||
Easyrdf | 586 | 3,113 | 71 | a month ago | 18 | December 02, 2020 | 72 | other | PHP | |
EasyRdf is a PHP library designed to make it easy to consume and produce RDF. | ||||||||||
Graph Notebook | 584 | 15 days ago | 55 | June 11, 2022 | 30 | apache-2.0 | Jupyter Notebook | |||
Library extending Jupyter notebooks to integrate with Apache TinkerPop, openCypher, and RDF SPARQL. | ||||||||||
Ontop | 572 | 5 | 11 hours ago | 12 | April 19, 2022 | 67 | apache-2.0 | Java | ||
Ontop is a platform to query relational databases as Virtual RDF Knowledge Graphs using SPARQL | ||||||||||
Rdfstore Js | 536 | 69 | 11 | 4 years ago | 76 | September 03, 2016 | 70 | mit | JavaScript | |
JS RDF store with SPARQL support | ||||||||||
Rdf | 378 | 1,044 | 156 | 15 days ago | 148 | August 07, 2022 | 5 | unlicense | Ruby | |
RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data. |
Wukong, a distributed graph-based RDF store that leverages efficient graph exploration to provide highly concurrent and low-latency queries over large data sets.
High-performance and Scalable RDF Store
Concurrent SPARQL query processing
Enabling RDMA feature of InfiniBand
Support evolving graphs (not included)
Wukong is released under the Apache 2.0 license.
The current version of Wukong was tested on Ubuntu Linux 64-bit 14.04. It requires a 64-bit operating system.
To simplify installation, Wukong currently downloads and builds most of its required dependencies using CMake’s External Project feature. This also means the first build could take a long time.
There are however, a few dependencies which must be manually satisfied.
All the dependencies can be satisfied from the repository:
$sudo apt-get update
$sudo apt-get install gcc g++ build-essential libopenmpi-dev openmpi-bin cmake git libreadline6-dev
Add the root path of Wukong (e.g., /home/rchen/wukong
) to bash script (i.e., ~/.bashrc
).
# Wukong configuration
export WUKONG_ROOT=[/path/to/wukong]
$cd $WUKONG_ROOT/deps/
$tar jxvf boost_1_58_0.tar.bz2
$mkdir boost_1_58_0-install
$cd boost_1_58_0/
$./bootstrap.sh --prefix=../boost_1_58_0-install
Add the following MPI configuration to project-config.jam
# MPI configuration
using mpi ;
$./b2 install
$cd $WUKONG_ROOT/deps/
$tar zxvf tbb44_20151115oss_src.tgz
$cd tbb44_20151115oss/
$make
Add below settings to bash script (i.e., ~/.bashrc
).
# Intel TBB configuration
source $WUKONG_ROOT/deps/tbb44_20151115oss/build/[version]/tbbvars.sh
For example:
source $WUKONG_ROOT/deps/tbb44_20151115oss/build/linux_intel64_gcc_cc4.8_libc2.19_kernel3.14.27_release/tbbvars.sh
$cd $WUKONG_ROOT/deps/
$tar zxvf zeromq-4.0.5.tar.gz
$mkdir zeromq-4.0.5-install
$cd zeromq-4.0.5/
$./configure --prefix=$WUKONG_ROOT/deps/zeromq-4.0.5-install/
$make
$make install
$cd ..
$cp zmq.hpp zeromq-4.0.5-install/include/
$cp zhelpers.hpp zeromq-4.0.5-install/include/
Add below settings to bash script (i.e., ~/.bashrc
).
# ZeroMQ configuration
export CPATH=$WUKONG_ROOT/deps/zeromq-4.0.5-install/include:$CPATH
export LIBRARY_PATH=$WUKONG_ROOT/deps/zeromq-4.0.5-install/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=$WUKONG_ROOT/deps/zeromq-4.0.5-install/lib:$LD_LIBRARY_PATH
$tar xzf nvidia-peer-memory-1.0-3.tar.gz
$cd nvidia-peer-memory-1.0
$tar xzf nvidia-peer-memory_1.0.orig.tar.gz
$cd nvidia-peer-memory-1.0
$dpkg-buildpackage -us -uc
$cd ..
$sudo dpkg -i nvidia-peer-memory_1.0-3_all.deb
$sudo dpkg -i nvidia-peer-memory-dkms_1.0-3_all.deb
We assume that Hadoop/HDFS has been installed on your cluster. The ENV variable for Hadoop should be set correctly.
# Build hadoop.jar (assume that the Hadoop has been added on this machine)
$cd $WUKONG_ROOT/deps/hadoop/
$./hadoop_deps.sh
Add below settings to bash script (i.e., ~/.bashrc
) according to the installation of Hadoop on your machine.
# Haddop configuration
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
export CPATH=$HADOOP_HOME/include:$CPATH
# LibJVM configuration
export LIBRARY_PATH=/usr/lib/jvm/default-java/jre/lib/amd64/server:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib/jvm/default-java/jre/lib/amd64/server:$LD_LIBRARY_PATH
# LibHDFS configuration
export LIBRARY_PATH=$HADOOP_HOME/lib/native:$LIBRARY_PATH
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH
export CLASSPATH=$WUKONG_ROOT/deps/hadoop/hadoop.jar
Enable the compile option in CMakeLists.txt
# Uncomment two lines below to enble HDFS support.
add_definitions(-DHAS_HADOOP)
target_link_libraries(wukong hdfs)
NOTE: if the global_input_folder
start with hdfs:
, then Wukong will read the files from HDFS.
Setup password-less SSH between the master node and all other machines.
Create a file in scripts
directory called mpd.hosts
with the IP address of all machines.
For example:
$cat ${WUKONG_ROOT}/scripts/mpd.hosts
10.0.0.100
10.0.0.101
10.0.0.102
Run the following commands to copy Wukong dependencies to the rest of the machines:
$cd ${WUKONG_ROOT}/scripts $./syncdeps.sh ../deps/dependencies mpd.hosts
Modify CMakeLists.txt to set CMAKE_CXX_COMPILER (e.g., /usr/bin/mpic++
)
set(CMAKE_CXX_COMPILER /usr/bin/mpic++)
Currently, Wukong will enable RDMA feature by default, and suppose the driver has been well installed and configured. If you want to disable RDMA, you need manually modify CMakeLists.txt
to compile and build wukong-zmq
instead of wukong
.
To support versatile queries (e.g., ?S ?P ?O), you need manually uncomment #add_definitions(-DVERSATILE)
in CMakeLists.txt
. It should be noted that enabling this feature will use more main memory to store RDF graph.
Build wukong
$cd ${WUKONG_ROOT}/scripts $./build.sh
Synchronize all executable files (e.g., build/wukong
) to all machines
$cd ${WUKONG_ROOT}/scripts
$./sync.sh
Running sever with a builtin local console for testing
$cd ${WUKONG_ROOT}/scripts
$./run.sh [#nodes]
(e.g., ./run.sh 3)
$cd ~;
$wget http://swat.cse.lehigh.edu/projects/lubm/uba1.7.zip
$wget http://swat.cse.lehigh.edu/projects/lubm/GeneratorLinuxFix.zip
$unzip uba1.7.zip -d ./uba1.7
$unzip GeneratorLinuxFix.zip -d .
$cp Generator.java uba1.7/src/edu/lehigh/swat/bench/uba/Generator.java
$cd uba1.7/src/
$javac edu/lehigh/swat/bench/uba/Generator.java
$cd ~
$cp uba1.7/src/edu/lehigh/swat/bench/uba/*.class uba1.7/classes/edu/lehigh/swat/bench/uba/
$cd ~;
$wget http://archive.apache.org/dist/jena/binaries/apache-jena-2.7.4.zip
$unzip apache-jena-2.7.4.zip -d .
$export JENA_HOME=~/apache-jena-2.7.4/
$cd uba1.7
$java -cp ./classes/ edu.lehigh.swat.bench.uba.Generator -univ 1 -onto http://swat.cse.lehigh.edu/onto/univ-bench.owl
$find . -type f -name "University*.owl" -exec $JENA_HOME/bin/rdfcat -out N-TRIPLE -x {} >> uni0.nt \;
# Now we get NT format of LUBM data
# each row consists of S P O and '.'
$cd ${WUKONG_ROOT}/datagen;
$g++ -std=c++11 generate_data.cpp -o generate_data
$mkdir lubm_raw_1
$mv ~/uba1.7/uni0.nt lubm_raw_1/
./generate_data lubm_raw_1 id_lubm_1