Hi there,
C++ would be desirable as it would open up the possibility to use it
outside the JVM, for sure. And of course, potentially more performant.
I think your view on what information is carried by a node and how it
is to be extracted and how that relates to schemata is right. Given a
schema language for a graph database where you can model something as
a property of a node or a relationship with another node, it's not
easy to make that choice and it feels quite artificial. RDF doesn't
have that problem, but of course that simplicity in the model yields
complexity in its use (because everything has to be a node).
So yeah, the details matter of course, and IMO it'll be some work to
come up with the right abstraction to cover this sort of flexibility,
but your vision seems on the right track. There is the notion of
"hyper traversal" in HGDB which has to be developed, there is the
notion of complex types with projections, but those are not part of
the graph proper and they need to be. I think there needs to be a way
to look at a node as a strongly typed value with properties or as a
mini-graph (ala RDF) with nodes and values, and one should be able to
take those perspectives at will. And then there is the idea of
hypernodes, which are about graphs-as-nodes, which also needs to be
elaborated. Trying to put all those things together conceptually in a
single model is not easy.
At the moment HGDB is built on top of a key-value store, which gives
great flexibility to tinker on top of it, but suffers from performance
quite a bit. I'm not sure I understand your idea of "codifying", but
there is no universal way to do it - there is a storage layer on top
of the key-value, which is a sort of a primitive graph and then the
actual model is built on top of that. Types of nodes and edges are
also represented in the graph, so that's a codifying mechanism. But
there is language or even a single API to "codify" stuff and over the
years I've come to realize the limitations to some of the interfaces
that are very core to the framework (e.g. the HGAtomType interface)
and given the opportunity I'd like to change that.
In short, if I understand you correctly, HGDB is doing some of what
you are describing, but not all. And I agree it would be nice to do
all of it :)
Cheers,
Boris
> To view this discussion on the web visit
https://groups.google.com/d/msgid/hypergraphdb/6c4355d4-bd71-401e-b8b2-5bde14003321n%40googlegroups.com.