HyperGraphDB is an extensible open-source graph-based data storage engine. It implements the ability to store hypergraph relationships, which make it suitable for complex data and knowledge representation problems. It relies on object called an atom as its unit storage, where an atom is either a node in the graph or an edge that can point to multiple nodes and/or edges. It uses BerkeleyDB as its key value store, and operates as an object-orientated Java database.
Originated from an AI project (http://www.opencog.org) in 2007. It's inspired by the paper "Directed Recursive Labelnode Hypergraphs: A new Representation-Language", by Harold Boley, because most AI applications learn a higher-order, general representation, that can not be described in an ordinary graph but rather expressed in a hypergraph.
Timestamp Ordering Two-Phase Locking (Deadlock Detection)
HyperGraph is ACI, but not Durable. To ensure consistency in peer to peer transactions, they use timestamps to make sure the queries are executed in order. They also implement automatic deadlock detection that will randomly kill a process if a deadlock is encountered.
HyperGraphDB implements 3 main indices for efficiency: mapping from atom to its incidence set, mapping an atom to the set of all its atoms it is pointing to and the mapping of an object to the atoms that actually store the value. Users of the DB can implement their own indices as long as they associate atoms with atoms.
https://github.com/hypergraphdb
http://www.hypergraphdb.org/?project=hypergraphdb&page=LearnHyperGraphDB
Kobrix Software
2007