gStore is an open-source graph database engine (or "triple store") born for managing large RDF datasets with the SPARQL query language. It works with Linux systems and amd64, arm64, and loongarch processors. gStore is a collaborative effort between the Data Management Lab of Peking University, University of Waterloo, and awesome contributors from the open-source community.
:key: gStore is released under the BSD 3-Caluse License, with several third-party libraries under their own licenses. Check LICENSE for details.
:bug: Check out FAQ for frequently asked questions. Known bugs and limitations are listed in BUGS and LIMIT. If you find any bugs, please feel free to open an issue.
:microphone: If you have any questions or suggestions, please open a thread in GitHub Discussions.
:book: For recommendations, project roadmap, and more, check online documentation.
The formal help document is in English(EN) and 中文(ZH).
The formal experiment result is in Experiment.
We have built an IRC channel named #gStore on freenode, and you can visit the homepage of gStore.
gStore has been uploaded to gitee (code cloud), which is recommended for faster download for users in mainland China. The website is https://gitee.com/PKUMOD/gStore.
You can also open https://github.com/pkumod/gStore, download gStore.zip, then decompress the zip package.
$ docker pull pkumodlab/gstore-docker:latest
Complete instruction documentation is on the Docker Deployment Instructions.
To compile gStore, first clone the repository:
git clone https://github.com/pkumod/gStore.git
Complete instruction documentation is on the Installation Instructions.
N-Triple Data format introduction
RDF data should be provided in n-triple format (XML is not currently supported), and queries must be provided in SPARQL1.1 syntax. The following is an example of the n-triple format file:
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Johnny Lee Outlaw" .
_:a foaf:mbox <mailto:jlow@example.com> .
_:b foaf:name "Peter Goodguy" .
_:b foaf:mbox <mailto:peter@example.org> .
_:c foaf:mbox <mailto:carol@example.org> .
Triples are typically stored in the W3C-defined NT file format and represent three RDF data, where the values wrapped in <
and >
are urIs of an entity, and the values wrapped in '"" are literals representing the value of an attribute of the entity, followed by'^^
to indicate the type of the value. The following three RDF data points represent two attributes of John
, gender
and age
, with values of male
and 28
respectively. The last one indicates that John
and Li
have a friend
relationship.
<John> <gender> "male"^^<http://www.w3.org/2001/XMLSchema#String>.
<John> <age> "28"^^<http://www.w3.org/2001/XMLSchema#Int>.
<John> <friend> <Li>.
More specific information about N-Triple please check N-Triple. Not all syntax in SPARQL1.1 is parsed and answered in gStore; for example, property paths are beyond the capabilities of the gStore system.
Initialize the system database
bin/ginit
Create database
bin/gbuild -db lubm -f data/lubm/lubm.nt
Database list
bin/gshow
Database query
bin/gquery -db lubm -q data/lubm/lubm_q0.sql
Complete instruction documentation is on the Quick Start.
If you use gStore in your research, please cite the following paper:
@article{zou2014gstore,
title={gStore: a graph-based SPARQL query engine},
author={Zou, Lei and {\"O}zsu, M Tamer and Chen, Lei and Shen, Xuchuan and Huang, Ruizhe and Zhao, Dongyan},
journal={The VLDB journal},
volume={23},
pages={565--590},
year={2014},
publisher={Springer}
}
Or cite this repository:
@misc{gStore,
author = {gStore Authors},
title = {gStore},
year = {2021},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/pkumod/gStore}},
}
1.2(stable):2023-11-11
New features in gStore 1.2 are listed as follows:
SSSP
, SSSPLen
), label propagation (labelProp
), weakly connected component (WCC
), global/local clustering coefficient (clusteringCoeff
), louvain algorithm (louvain
), K-hop count (kHopCount
), and K-hop neighbor (kHopNeighbor
).CONCAT
functions in SELECT
statements.1.0:2022-10-01
New features in gStore 1.0 are listed as follows:
workflow
, which further improves the efficiency and stability of the interface service. Experiments show that gRPC achieves a great improvement in concurrent access performance compared with ghttp, the previous network interface; for example, in the case of 2000/QPS, the rate of denied access is 0%.0.9.1:2021-11-25
New features in gStore 0.9.1 are listed as follows:
?x + ?y = 5
) in the FILTER clause.--help
option is uniformly introduced (e.g., $ bin/gbuild --help
or $ bin/gbuild -h
), by which users can view the command manual including the meaning of each option.0.9:2021-02-10
New features in version 0.9 include:
datatype
, contains
, ucase
, lcase
, strstarts
, now
, year
, month
, day
, and abs
;If you want to understand the details of the gStore system, or you want to try some advanced operations(for example, using the API, server/client), please see the chapters below.
Bugs are recorded in BUG REPORT. You are welcomed to submit the bugs through Community Web questioning when you discover if they do not exist in this file.
We have written a series of short essays addressing recurring challenges in using gStore to realize applications, which are placed in Recipe Book.
You are welcome to report any advice or errors in the github Issues part of this repository, if not requiring in-time reply. However, if you want to urgent on us to deal with your reports, please email to gstore@pku.edu.cn to submit your suggestions and report bugs. A full list of our whole team is in Mailing List.
There are some restrictions when you use the current gStore project, you can see them on Limit Description.
Sometimes you may find some strange phenomena(but not wrong case), or something hard to understand/solve(don't know how to do next), then do not hesitate to visit the Frequently Asked Questions page.
Graph database engine is a new area and we are still trying to go further. Things we plan to do next is in Future Plan chapter, and we hope more and more people will support or even join us. You can support in many ways:
watch/star our project
fork this repository and submit pull requests to us
download and use this system, report bugs or suggestions
...
People who inspire us or contribute to this project will be listed in the Thanks List chapter.