GraphAware Blog

Find out what's new in the Neo4j world

Neo4j Events (Jan/Feb 2015)

16 Jan 2015 by Michal Bachman Neo4j Events Beginner

There is no better way to start 2015 than to learn something new. In the wake of two recent major announcements (here and here),Neo4j is as hot as ever, so it might well be the next skill you pick up or improve. Here’s a list of Neo4j events organisedby GraphAware around the world in the next few weeks. We’ll be delighted to see you there! On 17th January, Luanne is running a Graph Data Modelling training in Bangalore On 19th January, I’m speaking about Recommendation Engines at Neo4j Expert Talks in Berlin On 21st January, Christophe is showing off Graphgen...

Using the Neo4j Browser with Embedded Neo4j

21 Nov 2014 by Luanne Misquitta Neo4j Intermediate

There are times when you have an application using Neo4j in embedded mode but also need to play around with the graphusing the Neo4j web browser. Since the database can be accessed from at most one process at a time, trying to start upthe Neo4j server when your embedded Neo4j application is running won’t work. The WrappingNeoServerBootstrapper,although deprecated, comes to the rescue. Here’s how to set it up.Maven Dependencies<dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j</artifactId> <version>2.1.5</version></dependency><dependency> <groupId>org.neo4j.app</groupId> <artifactId>neo4j-server</artifactId> <version>2.1.5</version></dependency><dependency> <groupId>org.neo4j.app</groupId> <artifactId>neo4j-server</artifactId> <version>2.1.5</version> <classifier>static-web</classifier></dependency>Start the WrappingNeoServerBootstrapperpublic static void connectAndStartBootstrapper() { WrappingNeoServerBootstrapper neoServerBootstrapper; GraphDatabaseService db = new GraphDatabaseFactory() .newEmbeddedDatabaseBuilder("/path/to/db").newGraphDatabase(); try { GraphDatabaseAPI api = (GraphDatabaseAPI) db;...

GraphConnect 2014 Talk

20 Nov 2014 by Michal Bachman Neo4j Conference Intermediate

Last month, I had the pleasure of speaking at GraphConnect in San Francisco, introducing the GraphAware Framework to alarge audience of Neo4j users and graph enthusiasts. For those who missed the conference, the recording and slides havenow been made available. Enjoy and get in touch with feedback / questions!VideoSlides GraphAware Framework Intro from Michal Bachman

Neo Technology Selects GraphAware as One of Its First UK Solution Partners

10 Nov 2014 by Press Release Neo4j GraphAware

Specialist in Neo4j consultancy, training, and software development, Graph Aware Ltd has been selected as one of NeoTechnology’s first UK solution partners, under its newly launched partnership program.Neo Technology is the creator of the world’s most popular graph database, Neo4j, and has selected GraphAware to provideits customers with support from introduction through to full integration of Neo4j, into their enterprise architecture andapplications. In addition, GraphAware is now authorised to offer Neo4j subscriptions directly to customers.With access to GraphAware’s Neo4j experts throughout the implementation and integration process, customers are muchbetter positioned to fully utilise all the business and technical benefits of...

GraphAware Neo4j ChangeFeed

27 Aug 2014 by Luanne Misquitta Neo4j GraphAware Beginner

In this post, we’d like to introduce the first version of the GraphAware Neo4j ChangeFeed - a GraphAware Runtime Modulethat keeps track of changes made to the graph.GraphAware ChangeFeed ModuleEvery time a transaction commits successfully, all changes made to the graph as a result of the transaction are recordedas a change set. A change includes additions, modifications and deletions of nodes, relationships, labels, and properties.Each change set has a UUID, a set of changes that occurred in the same transaction, and a timestamp which is allocatedat the time the transaction starts committing.The module can be configured to limit the total...

GraphAware Neo4j TimeTree

20 Aug 2014 by Luanne Misquitta, Michal Bachman Neo4j GraphAware Intermediate

Modelling and querying time-based events in a graph is a fairly common discussion topic and a frequently asked questionon Q/A sites. In this blog post, we evaluate some of the common approaches and introduce GraphAware TimeTree, a GraphAware Framework Module that simplifies modelling time and events in Neo4j.Naive ApproachNeo4j has no notion of a Date/Time data type, so you have to decide to store the timestamp either as a long, or asa human-readable String, for instance formatted as ‘YYYY-MM-DD HH:mm:ss’. Unless the time is only for human eyes, though,we recommend opting for the machine readable (long) approach. It is simply...

Random Graph Models (Part II)

06 Aug 2014 by Vojtěch Havlíček Neo4j GraphAware Intermediate

In the first part of this short series aboutrandom graph models, we talked about why they are useful and had a brief look at two of them: Erdos-Renyi graphs andBarabasi-Albert model. In this post, we take a look at the “small world” phenomenon and another network model, namelythe Watts-Strogatz model.Small WorldThere is an important property of random networks which we did not write about in the last blog post: the way thenode separation scales with network size. Both Erdos-Renyi and Barabasi-Albert networks are “small world” models, meaningthat the characteristic node separation scales logarithmically with number of nodes present in the...

Cypher MERGE Explained

31 Jul 2014 by Luanne Misquitta Neo4j Beginner Cypher

With MERGE set to replace CREATE UNIQUEat some time, the behavior of MERGE can sometimes be tricky to understand.MERGEHere’s a summary of what MERGE does: It ensures that a pattern exists in the graph by creating it if it does not exist already It will not use partially existing patterns- it will attempt to match the entire pattern and create the entire pattern if missing When unique constraints are defined, MERGE expects to find at most one node that matches the pattern It also allows you to define what should happen based on whether data was created or matchedThe key...

Node Degrees in Neo4j 2.1

23 Jul 2014 by Michal Bachman Neo4j GraphAware Beginner

Efficient counting of relationships in Neo4j was the cornerstone of my Master Thesisand the reason the very first GraphAware Frameworkmodule called the Relationship Count Module was born. The improvements in Neo4j 2.1around dense nodes and the addition of getDegree(…) methods on the Node interface made me eager to do some benchmarking around relationship counts again.The improvements in Neo4j 2.1, indeed, make the RelCount module slightly less useful. We’ve decided, however, not to makeit obsolete, since it is a useful reference implementation of a GraphAware Framework Transaction-Driven Runtime Module.Instead, we ported the module to Neo4j 2.1 and reused all the performance...

Random Graph Models (Part I)

16 Jul 2014 by Vojtěch Havlíček Neo4j GraphAware Intermediate

When one obtains a graph data from a measurement on a real world network, it is sometimes useful to make comparison witha random graph. Such graph is characterised by certain degree distribution, which you can imagine to be a list of degreesof nodes present in the network. The most interesting distributions have certain functional dependence which allowsone to infer what processes are dominant in formation of the network. The processes consequently characterise therelationships between the nodes.Why would one care about such analysis?Imagine a group of customers that you want to target efficiently in a certain fashion. Say, for instance, that...