Thursday, June 17, 2010

HyperGraphDB 1.1 Alpha Released

Kobrix Software is pleased to announce the release HyperGraphDB 1.1 Alpha. HyperGraphDB is a general purpose, extensible, portable, distributed, embeddable, open-source data storage mechanism. Designed specifically for artificial intelligence and semantic web projects, it can also be used as an embedded object-oriented database for projects of all sizes.

This is an initial, alpha release of the next version of HyperGraphDB. A complete list of changes is availabe at:

To download, please vist the HyperGraphDB project home page at Google.

For more information about HyperGraphDB's features, documentation and additional pointers, please visist the HyperGraphDB home page at Kobrix.


  1. A complete tutorial is absolutely required.


  2. Hi,

    Thanks for the suggestion. There's a tutorial already at What would be the main aspects missing from there that you think need to be added?


  3. Hi, Boris. Thanks for the prompt response. I'm using the tutorial you have mentioned. It's quite nice for beginning, but... I would like to learn how to find atoms by "properties". Sory for any kind of misconception though, I'm from .NET realm.

    So, imaging a system that manages users. A User class might look as follows (it would look this way if Java had properties like C#):
    1. User.ID (getter & setter)
    2. User.FirstName (getter & setter)
    3. User.LastName (getter & setter)
    4. User.EMail (getter & setter)

    So, the question is: how do I search for a user with specific E-Mail? What is the general approach to search by "properties"?
    I'm lost a bit...

    Thanks in advance!

  4. Hi,

    Java beans are mapped to "composite types", record-like structures. Such records are represented as complex values, but do not participate in the graph itself (by default). The query condition to search by property value is "AtomPartCondition". The concise syntax is like this:

    hg.eq("email", the_email_value_your_are_looking_for);

    Since you usually need to constraint the result by the atom type, should look something like this:

    User u = hg.getOne(graph, hg.and(hg.type(User.class), hg.eq("email", the_email)));


  5. Oh... Thank for the reply, Boris.

    Could you please give a simple example of creating such a composite type for HG? I am a bit lost...


  6. Hi,

    Please post such questions to the user forum:

    There's nothing special you need to do: just create a Java bean with appropriate setters, getters and a default constructor. Then the first you add an atom of this type:

    User u = new User(...);

    the system will create an appropriate record type via Java class introspection.