Fork me on GitHub

Kategorie: Announcement

In the course of our work at sones GraphDB 2.1 we refac­tored our index inter­faces to make them more suit­able for our needs. Fur­ther­more, we wanted to make it eas­ier for the com­mu­nity to imple­ment cus­tom index struc­tures for their spe­cial needs. For the lat­ter rea­son we set up a tuto­r­ial and pub­lished a sam­ple imple­men­ta­tion on github.

The inter­faces are explained in our devel­oper wiki, the tuto­r­ial can also be found there. The source code regard­ing the tuto­r­ial is located at github.

Source 1: Index Inter­faces at devel­oper wiki
Source 2: Inte­gra­tion tuto­r­ial at devel­oper wiki
Source 3: Source code at github

With ver­sion 2.0 of sones GraphDB we intro­duced an enhanced graph model we call Prop­erty Hyper­graph.


In this Prop­erty Hyper­graph model there are some stan­dard edge types:

  • single-edge: an edge between two vertices
  • multi-edge: an edge split­ting up into single-edges of the same edge type point­ing towards the same ver­tex type.
  • hyper-edge: an edge to a sub­graph made up by all pos­si­ble types of vertices

In order to cre­ate dif­fer­ent ver­tex types since ver­sion 1.0 of sones GraphDB the GraphQL com­mand “CREATE VERTEX TYPE” is avail­able to users. In ver­sion 2.0 we intro­duced edge types but those were only use­able if you would use the API to inter­act with the GraphDB instance.

In ver­sion 2.1 we’ve now added a full edge type man­age­ment to be used either through GraphDBs new edge-type API and of course through the new GraphQL exten­sions which add edge-type handling.

So for exam­ple let’s say you want to cre­ate an edge type “User” and insert a bunch of those. And you want those users to be con­nected by a spe­cific edge type which comes with it’s own attrib­utes – some­thing like this:

The GraphQL Queries to cre­ate the above scheme would be these:

CREATE EDGE TYPE User­Link ATTRIBUTES (Dou­ble weight, String pri­or­ity, LIST<String> tags) COMMENT = ‘This is my edge type named User­Link.’
CREATE VERTEX TYPE User ATTRIBUTES (String name, SET<User(UserLink)> friends)
INSERT INTO User VALUES (name = ‘UserA’)
INSERT INTO User VALUES (name = ‘UserB’, friends = SETOF(name = ‘UserA’ : (weight = 15.5, pri­or­ity = ‘high’, tags = LISTOF(‘best friend’, ‘mate’))))

As you can see it’s easy to actu­ally cre­ate edge types and add attrib­utes to the rela­tion­ships these edges rep­re­sent. It even gets bet­ter: you can also use the inher­i­tance mech­a­nisms you are already used to on ver­tex types as well as unde­fined (scheme­less) attributes.

If you want to dive deeper into edge types you won’t have to wait until the release of GraphDB 2.1 at the end of this year. You can just grab the cur­rent source code on github and get started.

Addi­tional doc­u­men­ta­tion and exam­ples are avail­able in our doc­u­men­ta­tion wiki. Here are some places you will find more information:

We want to build the GraphDB com­mu­nity a home – a home they meet to dis­cuss, track, code and have all sorts of gra­phy fun. This is why we just launched our forum and our bug­track­ing tool. Those both tools com­ple­ment the already exist­ing GitHub pres­ence by adding the func­tion­al­ity to dis­cuss and get/give support.

forum.sones.de

It’s a way to com­mu­ni­cate with GraphDB users and devel­op­ers, either those work­ing at sones or those out in the community.

 

forum

jira.sones.de

In order to make a wish, to report bugs, to track the progress of the GraphDB devel­op­ment the bug­track­ing tool Jira (made by Atlass­ian) is used.

jira

You can always go to those new tools and just read – but we encour­age you to jump in and reg­is­ter your­self an account to write what you think about GraphDB, what your expe­ri­ence was while using it and what cool projects you are work­ing on currently.

 

Source 1: http://github.com/sones/sones
Source 2: http://forum.sones.de
Source 3: http://jira.sones.de
Source 4: http://forum.sones.de/register

As you already know the Com­mu­nity Edi­tion of sones GraphDB was always released under the GNU Affero Gen­eral Pub­lic License ver­sion 3. All Lan­guage Bind­ings and Client Libraries we (sones) released so far were also released under that cer­tain AGPLv3 license.

We got quite a lot inter­est­ing feed­back on that mat­ter and decided that from now on the GraphDB Lan­guage Bind­ings, Client Libraries and Tal­end Open­Stu­dio com­po­nent will be released under the GNU Lesser Gen­eral Pub­lic License ver­sion 3.

lgplv3-147x51

From now on you can link to the library in your project, no mat­ter what license your project uses, your code will not become GPL’d. That’s basi­cally the only rea­son for that change.

Cur­rently the fol­low­ing libraries are available:

Besides that the soft­ware itself can also be licensed using a pro­pri­etary com­mer­cial license. Just ask for it.

 

Link 1: http://www.gnu.org/licenses/agpl.html
Link 2: http://www.gnu.org/licenses/lgpl.html
Link 3: http://www.sones.com/kontakt

rect3987

Today we are releas­ing the 2.0 ver­sion of sones GraphDB.

It’s been nearly a year since the launch of the 1.1 ver­sion and the open source avail­abil­ity and after a com­plete over­haul and intense refac­tor­ing the new ver­sion fits bet­ter into many sce­nar­ios and allows eas­ier future fea­ture additions.

A com­pletely revamped plug-in sys­tem and soft­ware archi­tec­ture allows the user to indi­vid­u­ally con­fig­ure the needed plug-ins to the spe­cific use-case. Unnec­es­sary func­tion­al­ity can be dis­abled that way – not tak­ing up pre­cious resources and/or query exe­cu­tion time. Ver­sion 1.1 already had some plug-in func­tion­al­ity but we extended that with many many more APIs.

sones GraphDB is a graph data­base and there­fore works with an inter­nal graph rep­re­sen­ta­tion of the users data. With ver­sion 2.0 we are push­ing the lim­its of the graph data model used by GraphDB. The prop­erty graph is the de-facto stan­dard for graph data­bases these days and it’s easy to under­stand why.
propertygraphThere a ver­tex types – like the cir­cle above – with attrib­utes. And there are edges which con­nect these ver­tices and add their own attrib­utes. Alto­gether sim­ple edges with attrib­utes and ver­tices with attrib­utes make up that well known prop­erty graph.

In the new ver­sion 2.0 we added some things to that sim­ple scheme to make it even more pow­er­ful. We believe that it is impor­tant for every user of a graph data­base to be able to express every aspect of rela­tion­ship data pos­si­bly can have. And to allow that higher level of expres­sion we cre­ated what we call the Prop­erty Hypergraph.

Drawing2

Drawing3

This prop­erty hyper­graph rep­re­sents ver­tices of dif­fer­ent ver­tex types and edges of dif­fer­ent edge types. Any types, ver­tex and edge, can have mul­ti­ple user define­able attrib­utes. Ver­tices (instances of a ver­tex type) can have binary prop­er­ties (unstruc­tured data) Addi­tion­ally schema-less types are possible.

Now there are some stan­dard edge types like the single-edge: an edge between two ver­tices, the multi-edge: an edge split­ting up into single-edges of the same edge type point­ing towards the same ver­tex type. And the most flex­i­ble edge type, the hyper-edge: an edge point­ing to a sub­graph if you will.

With ver­sion 2.0 we add a sig­nif­i­cant speed-up to the data­base. On the one hand every data­base deploy­ment can be tai­lored to the use-case and does not need to carry unnec­es­sary func­tion­al­ity any­more. And on the other hand we took the many things we learned from cus­tomer projects and did a major archi­tec­ture over­haul. We are see­ing a speed-up at the fac­tor of 100x for queries like INSERT and we are cur­rently work­ing on an extra arti­cle on the per­for­mance of our 2.0 release.

Software Architecture 2.0

There have been some minor changes in the GraphQL (Graph Query Lan­guage) for which we pre­pared a new release of the pop­u­lar GraphQL Cheat­sheet.

gqlcheatsheet

As of Mid-2010 sones GraphDB is avail­able under the AGPLv3 Open Source license. Ver­sion 2.0 is going to be avail­able in our offi­cial Git repos­i­tory soon. Addi­tion­ally we are prepar­ing a com­plete inter­nal move of sones to Git. Until the launch of 2.0 we had the exter­nal Git repos­i­tory and an inter­nal source con­trol sys­tem which needed to be synced, some­times man­u­ally. This will be over soon. We are putting the com­plete and offi­cial repos­i­tory into the hands of the com­mu­nity to allow any­one to see the com­plete his­tory and to eas­ier than ever add their own code. Accord­ingly an updated doc­u­men­ta­tion and wiki will be avail­able as soon as pos­si­ble along with the source code availability.

Get sones GraphDB v2.0 and fur­ther infor­ma­tion here now.

 

 

Since we launched our 1.1 ver­sion yes­ter­day I want to link to the updated cheat sheet so every­one can find and use it:

gqlcheatsheet_1.1
Cheat­sheet v1.1

We want to show you some­thing today: Not every­body has an idea what to think and do with a graph data struc­ture. Not even talk­ing about a whole graph data­base man­age­ment sys­tem. In fact what every­body needs is some­thing to get “in touch” with those kinds of data representations.

To make the graphs you are cre­at­ing with the sones GraphDB that much more touch­able we give you a sneak peak at our newest addi­tion of the sone GraphDB toolset: the Visu­al­Graph tool.

This tool con­nects to a run­ning data­base and allows you to run queries on that data­base. The result of those queries is then pre­sented to you in a much more nat­ural and intu­itive way, com­pared to the usual JSON and XML out­puts. Even more: you can play with your queries and your data and see and feel what it’s like to work with a graph.

Expect this tool to be released in the next 1–2 months as open source. Every­one can use it, Every­one can ben­e­fit from it.

Oh. Almost for­got the video:

(Watch it in full screen if you can)