Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Clone or download 5.75 KB
Copy Edit Web IDE Raw Blame History

This chapter introduce the whole structure of the gStore system project.

The core source codes are listed below:

  • Database/ (calling other core parts to deal with requests from interface part)

    • Database.cpp (achieve functions)

    • Database.h (class, members and functions definitions)

    • Join.cpp (join the node candidates to get results)

    • Join.h (class, members,, and functions definitions)

  • KVstore/ (a key-value store to swap between memory and disk)

    • KVstore.cpp (interact with upper layers)

    • KVstore.h

    • heap/ (a heap of nodes whose content are in memory)

      • Heap.cpp

      • Heap.h

    • node/ (all kinds of nodes in B+-tree)

      • Node.cpp (the base class of IntlNode and LeafNode)

      • Node.h

      • IntlNode.cpp (internal nodes in B+-tree)

      • IntlNode.h

      • LeafNode.cpp (leaf nodes in B+-tree)

      • LeafNode.h

    • storage/ (swap contents between memory and disk)

      • file.h

      • Storage.cpp

      • Storage.h

    • tree/ (implement all tree operations and interfaces)

      • Tree.cpp

      • Tree.h

  • Query/ (needed to answer SPARQL query)

    • BasicQuery.cpp (basic type of queries without aggregate operations)

    • BasicQuery.h

    • IDList.cpp (candidate list of a node/variable in query)

    • IDList.h

    • ResultSet.cpp (keep the result set corresponding to a query)

    • ResultSet.h

    • SPARQLquery.cpp (deal with a entire SPARQL query)

    • SPARQLquery.h

    • Varset.cpp

    • Varset.h

    • QueryTree.cpp

    • QueryTree.h

    • GeneralEvaluation.cpp

    • GeneralEvaluation.h

    • RegexExpression.h

  • Signature/ (assign signatures for nodes and edges, but not for literals)

    • SigEntry.cpp

    • SigEntry.h

    • Signature.cpp

    • Signature.h

  • VSTree/ (an tree index to prune more efficiently)

    • EntryBuffer.cpp

    • EntryBuffer.h

    • LRUCache.cpp

    • LRUCache.h

    • VNode.cpp

    • VNode.h

    • VSTree.cpp

    • VSTree.h

The parser part is listed below:

  • Parser/

    • DBParser.cpp

    • DBParser.h

    • RDFParser.cpp

    • RDFParser.h

    • SparqlParser.c (auto-generated, subtle modified manually, compressed)

    • SparqlParser.h (auto-generated, subtle modified manually, compressed)

    • SparqlLexer.c (auto-generated, subtle modified manually, compressed)

    • SparqlLexer.h (auto-generated, subtle modified manually, compressed)

    • TurtleParser.cpp

    • TurtleParser.h

    • Type.h

    • QueryParser.cpp

    • QueryParser.h

The utilities are listed below:

  • Util/

    • Util.cpp (headers, macros, typedefs, functions...)

    • Util.h

    • Bstr.cpp (represent strings of arbitrary length)

    • Bstr.h (class, members and functions definitions)

    • Stream.cpp (store and use temp results, which may be very large)

    • Stream.h

    • Triple.cpp (deal with triples, a triple can be divided as subject(entity), predicate(entity), object(entity or literal))

    • Triple.h

    • BloomFilter.cpp

    • BloomFilter.h

The interface part is listed below:

  • Server/ (client and server mode to use gStore)

    • Client.cpp

    • Client.h

    • Operation.cpp

    • Operation.h

    • Server.cpp

    • Server.h

    • Socket.cpp

    • Socket.h

  • Main/ (a series of applications/main-program to operate on gStore)

    • gload.cpp (import a RDF dataset)

    • gquery.cpp (query a database)

    • gserver.cpp (start up the gStore server)

    • gclient.cpp (connect to a gStore server and interact)

More details

To acquire a deep understanding of gStore codes, please go to Code Detail. See use case to understand the design of use cases, and see OOA and OOD for OOA design and OOD design, respectively.

If you want to know the sequence of a running gStore, please view the list below:

It is really not strange to see something different with the original design in the source code. And some designed functions may have not be achieved so far.


The api/ folder in gStore is used to store API program, libs and examples, please go to API for details. And test/ is used to store a series test programs or utilities, such as gtest, full_test and so on. Chapters related with test/ are How To Use and Test Result. This project need an ANTLR lib to parse the SPARQL query, whose code is placed in tools/(also archived here) and the compiled libantlr.a is placed in lib/ directory.

We place some datasets and queries in data/ directory as examples, and you can try them to see how gStore works. Related instructions are in How To Use. The docs/ directory contains all kinds of documents of gStore, including a series of markdown files and two folders, pdf/ and jpg/. Files whose type is pdf are placed in pdf/ folder, while files with jpg type are placed in jpg/ folder.

You are advised to start from the README in the gStore root directory, and visit other chapters only when needed. At last, you will see all documents from link to link if you are really interested in gStore.

Comment ( 0 )

Sign in for post a comment