GraphGists

Motivation

The NoSQL movement began early 2009 and is growing rapidly. As there are many NoSQL categories and distributions around, this application provides an interactive way to find the best distribution that fits, for instance, students homeworks specs.

An example subset of the Graph

%5BNeo4j%7Bbg:orange%7D%5D based on%3E%5BJava%5D,%20%5BNeo4j%5D is a%3E%5BGraph%20DB%5D,%20%5BNeo4j%5D has api for%3E%5BC%23%5D,%20%5BNeo4j%5D is licensed under%3E%5BGPL%20v3%5D,%20%5BNeo4j%5D current release%3E%5B2.0.0 RC1%5D,%20%5B2.0.0 RC1%5D previous release%3E%5B1.9.5%5D

The Graph

Use cases

Find all the distributions with a current version released on 2013 (we want to be sure to use an updated product)

MATCH (year:Date)<-[:RELEASED_ON]-(release:Release)<-[:CURRENT_RELEASE]-(distribution:Distribution)
WHERE year.year = '2013'
RETURN distribution.name, release.version
ORDER BY distribution.name

Find all the distributions with a particular license (we love open-source)

MATCH (distribution:Distribution)-[:IS_LICENSED_UNDER]->(licence:Licence)
WHERE licence.name =~ '.*GPL.*'
RETURN distribution.name, licence.name
ORDER BY distribution.name

Find all the distributions that support Java, .NET and ACID transactions (we need these features)

START java=node:node_auto_index(name='Java'), NET=node:node_auto_index(name='.NET'), AT=node:node_auto_index(type='ACID transactions')
MATCH p=AllShortestPaths(java-[:HAS_API_FOR]-NET)
WITH head(tail(nodes(p))) AS distribution, AT
MATCH (distribution)-[:ALLOWS]->(AT)
RETURN distribution.name

Find all the Neo4j’s releases (at this point we are thinking about using Neo4j, but we want to be sure that the project is actively updated)

MATCH (neo:Distribution)-[:CURRENT_RELEASE|:PREVIOUS_RELEASE*..5]->(release:Release)
WHERE neo.name = 'Neo4j'
WITH release
MATCH (release)-[:RELEASED_ON]->(date)
RETURN release.version, date.year

Thanks for reading!