GraphAware Blog

Find out what's new in the Neo4j world

Neo4j Unit Testing with GraphUnit

16 Jun 2014 by Luanne Misquitta Neo4j GraphAware Intermediate GraphUnit Testing

Testing the state of an Embedded Neo4j database is now much easier if you use GraphUnit, a component of the GraphAware Neo4j Framework.I tried replacing an existing Flavorwocky unit test with GraphUnit to check out the benefits.Let’s walk through a before-after case study.The testThe unit test in question is the one to test that a Pairing is saved correctly. A pairing must have exactly two ingredients. Each Ingredient node has a name; a Pairing has an affinity and an array of allAffinities (all affinities ever assigned to the pairing).BeforePseudocode to test that my code saved a pairing correctly in Neo4j:...

Happy Birthday GraphAware

03 Jun 2014 by Michal Bachman Neo4j GraphAware

Today, it is exactly one year ago since Graph Aware Limited was incorporated. It started as a one man show, whilst I was finishing my MSc. Thesis at Imperial College London. Since then, we’ve been growing slowly but steadily and will be moving to our new London office fairly soon (announcements to come). We have happy clients in London, New York, Copenhagen, Barcelona, Prague, and Accra.I would like to take this opportunity to thank everyone who’s made it possible for us to help people discover the beauty of graphs, run a business, and have a lot of fun, all at...

GraphUnit: Testing Neo4j Code

29 May 2014 by Michal Bachman Neo4j GraphAware Intermediate GraphUnit Testing

Recently, we announced the GraphAware Framework. Today, I would like to introduce its first feature called GraphUnit. GraphUnit is a component that helps Java developers unit test their code that talks to Neo4j and mutates data.Unit Testing Neo4j CodeWhen writing Java code that modifies data stored in Neo4j, developers can use the ImpermanentGraphDatabase in conjunction with any of APIs provided by Neo4jto test that code. This includes the native Java API, the traversal framework, and Cypher.(I’ve excluded the REST API because using that to unit test Java code wouldn’t make much sense.)Let’s say we’re testing code that creates two nodes...

Introducing GraphAware Neo4j Framework

28 May 2014 by Michal Bachman Neo4j GraphAware Intermediate

In this short blog post, I would like to introduce the GraphAware Neo4j Framework.Its goal is very ambitious: we’d like to make it as useful for Neo4j developers, as the Spring Framework is for Java developers. The Framework aims at speeding up development with Neo4j by providing a platform for building useful generic aswell as domain-specific functionality, analytical capabilities, graph algorithms, and more.Features OverviewOn a high level, there are two key pieces of functionality, GraphAware Server and GraphAware Runtime. GraphAwareServer is a Neo4j server extension that allows developers to build (REST) APIs on top of Neo4j using Spring MVC, ratherthan...

(Big) Data Science (2013 WebExpo Talk)

23 May 2014 by Michal Bachman Neo4j Conference NoSQL

After a long wait, I finally got the opportunity to publish the recording of my graph/Neo4j talk at WebExpo Prague 2013,intentionally and somewhat misleadingly titled “(Big) Data Science”. Thanks to the organisers for making it available andsee you soon at WebExpo 2014! (Big) Data Science from bachmanm

Video from Neo4j Meetup Prague

18 Jan 2014 by Michal Bachman Neo4j Meetup

Those who missed the first official Czech Neo4j Meetup can view recording of the event below (in Czech). Thanks againto all organisers, speakers, and participants.(My slides here)

Neo4j Meetup Prague

26 Oct 2013 by Michal Bachman Neo4j Meetup

We are pleased to announce the first official Czech Neo4j Meetup on 11th November 2013 at 6pm at the Czech TechnicalUniversity in Prague. It is a free event: Anyone interested in learning about graph databases as well as those alreadyusing them are welcome to attend, listen to the talks, and join us for a beer afterwards. The talks will be in Czech.UPDATE: Recording of the event now available.Time & PlaceMonday 11th November 2013, 18:00 - 19:30</br>ČVUT, Room T9:107</br>Thákurova 9</br>160 00 Praha 6</br>Programme90% of all world’s data has been generated in the last two years. Its structure has changed and interconnectedness...

Neo4j Meetup Praha (in Czech)

25 Oct 2013 by Michal Bachman Neo4j Meetup Czech

Srdečně zveme všechny zájemce o NoSQL, grafové databáze a Neo4j na první oficiální setkání v ČR, které se koná v rámciinformatického večerana Fakultě informačních technologií ČVUT 11. listopadu 2013 v 18h. Vstup je zdarma.UPDATE: Záznam z akce zde.Místo a časPondělí 11. listopadu 2013, 18:00 - 19:30</br>ČVUT, posluchárna T9:107</br>Thákurova 9</br>160 00 Praha 6</br>Program90% všech dat na světě bylo vytvořeno v posledních dvou letech. Značně se také změnila struktura a zvýšila propojenostdat, které lidstvo generuje, zpracovává a ukládá. Důsledkem toho se zrodilo mnoho alternativ k relačním databázím,které se často souhrnně označují termínem NoSQL. Jednou ze čtyř kategorií NoSQL databází jsou tzv. grafové...

Modelling Data in Neo4j: Qualifying Relationships

24 Oct 2013 by Michal Bachman Neo4j Modelling Beginner

In the last post of our “Neo4j Modelling for Beginners” series,we looked at bidirectional relationships. In this post, we compare the implications of qualifying relationships byusing different relationship types versus using relationship properties.Properties as QualifiersLet’s say we want to model movie ratings in Neo4j. People have an option to rate a movie with 1 to 5 stars. One way ofmodelling this, and perhaps the first one that springs into mind, is creating a RATED relationship with a ratingproperty that takes on 5 different values: integers 1 though 5.Writing queries using this model is fairly straightforward in both Java and Cypher....

Modelling Data in Neo4j: Bidirectional Relationships

11 Oct 2013 by Michal Bachman Neo4j Modelling Beginner

Transitioning from the relational world to the beautiful world of graphs requires a shift in thinking about data. Althoughgraphs are often much more intuitive than tables, there are certain mistakes peopletend to make when modelling their data as a graph for the first time. In this article, we look at one common sourceof confusion: bidirectional relationships.Directed RelationshipsRelationships in Neo4j must have a type, giving the relationship a semantic meaning, and a direction. Frequently, thedirection becomes part of the relationship’s meaning. In other words, the relationship would be ambiguous without it.For example, the following graph shows that the Czech Republic DEFEATED...