05 September, 2008
 
 

 

The present topic documents, through blog-style notes, the history and evolution of HyperGraphDB. This should help clarify the context within which design decision are made and ultimately assist people in better using and collaborating to the future of the project. Even a single Java/C++ class deserves to be endowed with some explanation stating, when not indisputably obvious, the intent of its author.

The HyperGraphDB project originated from Dr.Ben Goertzel et al. in the context of the Novamente AI engine. Novamente's cognitive model is an "evolving, probabilistic hypergraph". For more information, please visit Novamente and Agiri. We are still hoping that the system will serve its original purpose even though development hasn't progress as much and requirements diverged somewhat in the hope of applying the software to other, more practical and immediate problems. First, HyperGraphDB needs to be ported to C++, a project which hasn't been initiated at the time of this writing.

Design and development started around March 2005. Since then, it has progressed as usually software does: through sudden creative bursts or steady, methodical debugging sessions. At Ben's suggestion, BerkeleyDB was chosen as the underlying storage mechanism. While the original requirements were fairly well-defined and targetting specifically the needs of Novamente, I didn't feel confortable in my understanding of what the end product should be. Moreover, my C++ being quite rusty be now, I thought that if architectural mistakes were going to be made, with the ensuing experimentations and rewrites, it would alleviate the pain to have all of Java's tooling gadgets at one's disposal. Another influential aspect of the startup mood was the lack of any deadline or any other form of mandating, organizational or technical constraints. Ben has a cognitive model that he and his team believe would yield "general artificial intelligence" given the proper engineering effort and computational resources. And the foundational data structure of that model is a generalized hypergraph. But then I was free to translate that into more specific requirements. In particular, I felt free to dream up other uses of this data structure.

To be continued...