Thanks alot for writing back. My goal is (first and foremost) a combined property graph/hypergraph db engine which could be embedded in C++ applications, particularly those used for science and medicine. I want to minimize external dependencies (OpenCog seems to have an elaborate compile process). The db should be trivial to compile given a minimal C++ dev environment; WhiteDB and any layers I'm adding are basically self-contained (their only major prerequisite is Qt, for GUI integration). Use-cases might be persisting application state, storing and executing computational workflows, and representing metadata about data sets. Scientific research often involves data *sets* instead of data *bases* -- the data is stored in files with special formats, often requiring special parser/client libraries -- but a database could be used as a curation tool, keeping metadata, file lists, and versioning up-to-date. With one co-author I'm currently writing a book to be published by Elsevier next year about "data integration for Covid-19" where we analyze Covid-19 data sets and the technologies (lab equipment and software) used to generate them. We're planning to build an archive of republished Covid-19 data sets and intend to distribute the source code for a lightweight database engine that could be used to query and manipulate those data sets. We're using C++ so that this engine could be available as a source-code drop-in library for C++ applications in fields like bioimaging, cytometry/microscopy, simulations, etc., where C++ is prevalent.
More broadly I'm trying to combine the features of property graphs and hypergraphs, which involves implementing something like a Gremlin Virtual Machine that would recognize hypergraph constructs (e.g. multi-vertex edges and "payloads" in the sense of serializing objects in binary data accessible through hypernodes). There is a partial header-only C++ implementation of Gremlin, called "BitGraph" (it was an MS thesis, apparently, by an Alex Barghi who's now at the Johns Hopkins Applied Physics Laboratory) which is a good starting point.
I'd be curious whether anyone has ideas about designs for a query language that could traverse hypergraphs as well as property graphs. Gremlin has several dozen values of "traverser state" and "steps" which transition between states. Depending on the current state, queries can get a value, step to another state, or "call a lambda", so the idea is to model traversal and query operations in terms of these primitives (states, steps, and lambdas). Unlike HyperGraphDB and TinkerPop, there aren't well-known JVM-like languages in the C++ context, but there are some scripting platforms explicitly designed for C++ embedding, e.g. AngelScript, ECL and Clasp. What I've found is that a Gremlin-style VM is an elegant basis for an AngelScript interface because you only need to expose a small set of traversal primitives to the AngelScript runtime, and query scripts can navigate through a graph via these primitives. Ideally, query VMs for different hypergraph engines could transpile so that queries written for one engine would work for others as well (which is a selling point for the suite of distinct projects which all use a TinkerPop back-end).
Since interoperability is a goal in that sense, I'd be eager to hear feedback from developers working in a Java rather than C++ context. If there were some language-neutral intermediate representation for hypergraph traversals then it should be possible to translate BitGraph queries into HyperGraphDB queries, e.g., and vice-versa.
Thanks again -- Nathaniel