Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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).