261 lines
5.7 KiB
Markdown
261 lines
5.7 KiB
Markdown
|
**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](pdf/代码目录及概览.pdf). See [use case](pdf/Gstore2.0_useCaseDoc.pdf) to understand the design of use cases, and see [OOA](pdf/OOA_class.pdf) and [OOD](pdf/OOD_class.pdf) for OOA design and OOD design, respectively.
|
||
|
|
||
|
If you want to know the sequence of a running gStore, please view the list below:
|
||
|
|
||
|
- [connect to server](jpg/A01-connectServer.jpg)
|
||
|
|
||
|
- [disconnect server](jpg/A02-disconnectServer.jpg)
|
||
|
|
||
|
- [load database](jpg/A03-loadDatabase.jpg)
|
||
|
|
||
|
- [unload database](jpg/A04-unloadDatabase.jpg)
|
||
|
|
||
|
- [create database](jpg/A05-buildDatabase.jpg)
|
||
|
|
||
|
- [delete database](jpg/A06-deleteDatabase.jpg)
|
||
|
|
||
|
- [connect to database](jpg/A07-connectDatabase.jpg)
|
||
|
|
||
|
- [disconnect database](jpg/A08-disconnectDatabase.jpg)
|
||
|
|
||
|
- [show databases](jpg/A09-showDatabase.jpg)
|
||
|
|
||
|
- [SPARQL query](jpg/A10-querySPARQL.jpg)
|
||
|
|
||
|
- [import RDF dataset](jpg/A11-loadRDF.jpg)
|
||
|
|
||
|
- [insert a triple](jpg/A12-insertRDF.jpg)
|
||
|
|
||
|
- [delete a triple](jpg/A13-deleteRDF.jpg)
|
||
|
|
||
|
- [create account](jpg/B01-createAccount.jpg)
|
||
|
|
||
|
- [delete account](jpg/B02-deleteAccount.jpg)
|
||
|
|
||
|
- [modify account authority](jpg/B03-changeAccount.jpg)
|
||
|
|
||
|
- [compulsively unload database](jpg/B04-removeDatabase.jpg)
|
||
|
|
||
|
- [see account authority](jpg/B05-showAccount.jpg)
|
||
|
|
||
|
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.
|
||
|
|
||
|
- - -
|
||
|
|
||
|
#### Others
|
||
|
|
||
|
The api/ folder in gStore is used to store API program, libs and examples, please go to [API](API.md) 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](USAGE.md) and [Test Result](TEST.md). 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](USAGE.md). 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](../README.md) 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.
|
||
|
|