GraphAware Blog

Find out what's new in the Neo4j world

MATCHing Paths with Very Dense Nodes in Neo4j 2.2

19 Mar 2015 by Christophe Willemsen · 4 min read Neo4j Cypher Intermediate

Last weekend, I came across a tweet announcing that Wikimedia released the dataset of the page clickstreamsfor February 2015. I found it interesting to download this dataset and see how people arrive on the Neo4j’s Wikipedia page.The data is quite simple; we have page entities that relate to other pages. A page can either be a Wikipedia page, ora non-Wikipedia page such as Google. Relationships can represent a user click from a Wikipedia page to another page, or a user searching on Google or Wikipedia. The number of times an event occurs is also provided in the dataset.Importing the DatasetYou...

Using the Neo4j Shell with Embedded Neo4j

10 Feb 2015 by Luanne Misquitta · 1 min read Neo4j Intermediate

Our earlier blog posttalked about using the Neo4j web browser along with embedded Neo4j.The WrappingNeoServerBootstrapper which was employed to do this has been deprecated for a while and it raises questionsabout the alternative.Testing server extensions is now possible(see Testing your extension)but there is still another use case for wanting to connect to an embedded graph - troubleshooting.Perhaps you have a web application running in production with Neo4j in embedded mode and you’ve got to troubleshoot an issue which requires access to the graph - how do you do this against a live graph?Well, there is another option which won’t give...

Modelling Data in Neo4j: Labels vs. Indexed Properties

16 Jan 2015 by Christophe Willemsen · 8 min read Neo4j Modelling Cypher Intermediate

A common question when planning and designing your Neo4j Graph Database is how to handle “flagged” entities. This couldinclude users that are active, blog posts that are published, news articles that have been read, etc.IntroductionIn the SQL world, you would typically create a a boolean|tinyint column; in Neo4j, the same can be achieved in thefollowing two ways: A flagged indexed property A dedicated labelHaving faced this design dilemma a number of times, we would like to share our experience with the twopresented possibilities and some Cypher query optimizations that will help you take a full advantage of a the graph...

Neo4j Events (Jan/Feb 2015)

16 Jan 2015 by Michal Bachman · 1 min read 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 · 1 min read 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 · 0 min read 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 · 1 min read 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 · 2 min read 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 · 6 min read 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 · 4 min read 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...