Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gpahal/hgraph
Graph datastore implemented in Haskell
https://github.com/gpahal/hgraph
database graph graph-algorithms graph-database haskell neo4j
Last synced: about 13 hours ago
JSON representation
Graph datastore implemented in Haskell
- Host: GitHub
- URL: https://github.com/gpahal/hgraph
- Owner: gpahal
- License: bsd-3-clause
- Created: 2015-09-25T17:37:42.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2023-07-19T17:02:51.000Z (over 1 year ago)
- Last Synced: 2024-12-21T02:43:30.103Z (3 days ago)
- Topics: database, graph, graph-algorithms, graph-database, haskell, neo4j
- Language: Haskell
- Homepage:
- Size: 57.6 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# hgraph
hgraph is an in-memory graph data store inspired by [Neo4j](http://neo4j.com/) and implemented in Haskell
## Team members
- [Garvit Pahal](https://github.com/gpahal) (12264)
- [Harshit Agrawal](https://github.com/harshitagrawal039) (12288)
- [Siddhant Saurabh](https://github.com/sidsaurb) (12715)## Features
- Haskell embedded in-memory graph data store
- Property graph model with labels for nodes and edges
- Supported values - Int64, Bool, Double, Text, [Int64], [Bool], [Double], [Text]
- Graph algorithms - Dijkstra, Breadth-first search - with support for specifying depth and number of results
- Graph algorithm results in the form of a list of paths or a path tree
- Save and load the data store to disk (for backup and recovery)
- Export to Neo4j database - visualization, REST API
- Indexing based on labels
- Simple interface - findNodes, findById, dijkstra, shortestPath etc.
- Type safety as the implementation is in Haskell## Example
- A sample Facebook-like social networking service implemented in [SocialNetwork.hs](https://github.com/gpahal/hgraph/blob/master/src/SocialNetwork.hs).
- Exporting to Neo4j requires the Neo4j server to be running. Parameters for url, port and authentication can be changed in [Database.hs](https://github.com/gpahal/hgraph/blob/master/src/HGraph/SocialNetwork.hs)## Building and installing
```bash
$ git clone https://github.com/gpahal/hgraph.git
$ cd hgraph
$ cabal sandbox init
$ cabal install --only-dependencies
$ cabal build
```## Credits
This project was started as a part of the course *CS653: Functional Programming* at IIT Kanpur under the guidance of [Prof. Piyush Kurur](https://github.com/piyush-kurur).
## License
The content of this project itself is licensed under the [BSD3](https://opensource.org/licenses/BSD-3-Clause) license. The license file is located [here](https://github.com/gpahal/hgraph/blob/master/LICENSE).