Ari_Neo4j
(Ari Waller)
March 24, 2025, 3:27pm
1
Happy Monday Graph Enthusiasts!
As the new Community Manager at Neo4j, I’ve been seeing the world a little differently lately… through the lens of a graph database. While sipping my morning coffee at a local breakfast spot, I spotted this beautiful scene on the counter—and immediately thought: this could be a graph.
So here’s the challenge:
Can you create the most creative graph?
The Contest:
Use the image I snapped as your only input . Your goal is to model it as a graph—whatever that means to you. Get clever, get weird, get visual.
Rules:
Submissions due Thursday @ 5PM EST
Submit by replying to this thread
Include your graph visualization
Share anything else that shows your thought process: Cypher queries, logic, data model sketches, whatever you like!
Most importantly… have fun with it!
Judging:
Our notorious "Neo-Judge" will review submissions and select a winner based on creativity, clarity, and graph-y goodness.
Winner announced Friday @ 5PM EST
5 Likes
Maybe not the best graph, neither graph design nor just design but a fun little thrown together concept art anyway
3 Likes
Ari_Neo4j
(Ari Waller)
March 24, 2025, 4:40pm
4
Love it! Thank you so much for being entry #1 @therese.magnusson !
3 Likes
Ari_Neo4j
(Ari Waller)
March 24, 2025, 6:44pm
7
@gq16 / @kiranu.email - will you please resubmit your entries!
The original setup did not allow for replies, but I believe I have fixed this/.
I hope this make sense too.
I started by creating a a dummy model with Neo4j arrow.
itemID is a unique ID for each product
Position indicates whether the item is on the edges or inside the bucket
natural indicates whether product flavour is natural (yes or no)
name is the flavour name e.g hazelnut.
I then transformed that into a graph model, populating details of 14 coffee mate products in the DB. The result is shown below.
1 Like
Ari_Neo4j
(Ari Waller)
March 24, 2025, 7:01pm
9
Love it! Thanks for the design and logic.
1 Like
idrismunir
( Idrismunir)
March 24, 2025, 7:04pm
10
Thank you for your feedback
1 Like
I will win that for sure, but not now! ;)
1 Like
Ari_Neo4j
(Ari Waller)
March 24, 2025, 8:30pm
12
Love it! Looking forward to seeing it. Tomorrow I will share the name of our notorious judge and the for the winner!
CREATE (nestle:Brand {name: "Nestlé"})
CREATE (coffeeMate:Product {name: "Coffee Mate"})
CREATE (milkDerivative:Ingredient {name: "Milk Derivative"})
CREATE (shakeWell:Instruction {text: "Shake well"})
CREATE (noRefrigeration:Instruction {text: "No refrigeration needed"})
CREATE (artificial:FlavorType {name: "Artificial"})
CREATE (natural:FlavorType {name: "Natural"})
CREATE (artificialAndNatural:FlavorType {name: "Artificial and Natural"})
CREATE (company:Company {name: "Nestlé Professional"})
CREATE (region:Region {name: "North America"})
CREATE (city:City {name: "Solon"})
CREATE (state:State {name: "OH"})
CREATE (zip:ZipCode {code: "44139"})
CREATE (country:Country {name: "USA"})
CREATE (address:Address {description: "Distributed by Nestlé Professional, North America, Solon, OH 44139 USA"})
WITH coffeeMate, nestle, company, region, city, state, zip, country, address, milkDerivative, shakeWell, noRefrigeration, artificial, artificialAndNatural
CREATE (coffeeMate)-[:DISTRIBUTED_BY]->(company)
CREATE (coffeeMate)-[:BELONGS_TO]->(nestle)
CREATE (company)-[:LOCATED_IN]->(region)
CREATE (company)-[:LOCATED_IN]->(city)
CREATE (company)-[:LOCATED_IN]->(state)
CREATE (company)-[:HAS_ZIP_CODE]->(zip)
CREATE (company)-[:LOCATED_IN]->(country)
CREATE (coffeeMate)-[:HAS_DESCRIPTION]->(address)
CREATE (coffeeMate)-[:CONTAINS]->(milkDerivative)
CREATE (coffeeMate)-[:HAS_INSTRUCTION]->(shakeWell)
CREATE (coffeeMate)-[:HAS_INSTRUCTION]->(noRefrigeration)
CREATE (nestle)-[:MAKES]->(coffeeMate)
WITH coffeeMate, artificial, artificialAndNatural
CREATE (hazelnut:Flavor {name: "Hazelnut"})
CREATE (frenchVanilla:Flavor {name: "French Vanilla"})
CREATE (irishCreme:Flavor {name: "Irish Creme"})
CREATE (italianSweetCreme:Flavor {name: "Italian Sweet Creme"})
WITH coffeeMate, hazelnut, frenchVanilla, irishCreme, italianSweetCreme, artificial, artificialAndNatural
CREATE (yellowColor:Color {hex: "#ffcc00", name: "Yellow"})
CREATE (blueColor:Color {hex: "#0073e6", name: "Blue"})
CREATE (pinkColor:Color {hex: "#ffb397", name: "Pink"})
CREATE (greenColor:Color {hex: "#00ff96", name: "Green"})
WITH coffeeMate, hazelnut, frenchVanilla, irishCreme, italianSweetCreme, yellowColor, blueColor, pinkColor, greenColor, artificial, artificialAndNatural
CREATE (hazelnut)-[:HAS_COLOR]->(yellowColor)
CREATE (frenchVanilla)-[:HAS_COLOR]->(blueColor)
CREATE (irishCreme)-[:HAS_COLOR]->(greenColor)
CREATE (italianSweetCreme)-[:HAS_COLOR]->(pinkColor)
CREATE (coffeeMate)-[:HAS_FLAVOR]->(hazelnut)
CREATE (coffeeMate)-[:HAS_FLAVOR]->(frenchVanilla)
CREATE (coffeeMate)-[:HAS_FLAVOR]->(irishCreme)
CREATE (coffeeMate)-[:HAS_FLAVOR]->(italianSweetCreme)
WITH hazelnut, artificial, frenchVanilla, irishCreme, italianSweetCreme, artificialAndNatural
CREATE (hazelnut)-[:HAS_FLAVOR_TYPE]->(artificial)
CREATE (frenchVanilla)-[:HAS_FLAVOR_TYPE]->(artificialAndNatural)
CREATE (irishCreme)-[:HAS_FLAVOR_TYPE]->(artificialAndNatural)
CREATE (italianSweetCreme)-[:HAS_FLAVOR_TYPE]->(artificialAndNatural)
1 Like
Here is my crack at this fun challenge!
Raw Graph Data
Filtered using cypher:
MATCH (pf:ProductFamily {name: "Coffee Creamer"})<-[:Parent]-(p:Product)-[:isSuppliedBy]->(s:Supplier {name: "Nestle"}),
(p)<-[:Instance_Of]-(pi:Product_Instance)-[:storedin]->(sl:StorageLocation)
RETURN pi, sl
1 Like
Here's my Cypher query
// Delete all nodes
MATCH (n) DETACH DELETE n;
CREATE (hazelnut:hazelnut {name: "Hazelnut", version: "old"});
CREATE (hazelnut:hazelnut {name: "Hazelnut", version: "old"});
CREATE (hazelnut:hazelnut {name: "Hazelnut", version: "old"});
CREATE (hazelnut:hazelnut {name: "Hazelnut", version: "new"});
CREATE (irish_creme:irishCreme {name: "Irish Creme", version: "old"});
CREATE (irish_creme:irishCreme {name: "Irish Creme", version: "old"});
CREATE (irish_creme:irishCreme {name: "Irish Creme", version: "old"});
CREATE (french_vanilla:frenchVanilla {name: "French Vanilla", version: "old"});
CREATE (french_vanilla:frenchVanilla {name: "French Vanilla", version: "old"});
CREATE (french_vanilla:frenchVanilla {name: "French Vanilla", version: "old"});
CREATE (french_vanilla:frenchVanilla {name: "French Vanilla", version: "new"});
CREATE (italian_sweet_cream:italianSweetCream {name: "Italian Sweet Cream", version: "new"});
CREATE (italian_sweet_cream:italianSweetCream {name: "Italian Sweet Cream", version: "new"});
CREATE (italian_sweet_cream:italianSweetCream {name: "Italian Sweet Cream", version: "new"});
CREATE (:flavour {name: "Natural"});
CREATE (:flavour {name: "Artificial"});
CREATE (:producer {name: "Nestle"});
MATCH (old {version: "old"}), (new {version: "new"})
WHERE old.name = new.name
MERGE (old) -[:TRANSFORMED_TO]-> (new);
MATCH (x)
WHERE x.name IN ["Hazelnut", "Irish Creme", "French Vanilla", "Italian Sweet Cream"]
MATCH (f:flavour {name: "Artificial"})
MERGE (x)-[:FLAVOURED]->(f);
MATCH (y)
WHERE y.name IN ["Irish Creme", "French Vanilla", "Italian Sweet Cream"]
MATCH (f:flavour {name: "Natural"})
MERGE (y)-[:FLAVOURED]->(f);
MATCH (z)
WHERE z.name IN ["Hazelnut", "Irish Creme", "French Vanilla", "Italian Sweet Cream"]
MATCH (p:producer {name: "Nestle"})
MERGE (z) <-[:PRODUCE]-(p);
I added the property version when I noticed that some pods, even with the same name, have different packaging.
I split the four types of pods into different nodes, where I label them by the color similar to the original color of the pods.
Then match them to the flavors, Artificial and Natural, then the producer, Nestle.
1 Like
Here’s my crack at this challenge: instead of forcing structure onto this chaotic bowl of creamers , I decided to let Neo4j do what it does best—find its own patterns!
Because, let’s be real—humans love spotting patterns in the universe (stars, clouds, even burnt toast), so why not let Neo4j embrace its inner cosmic detective and uncover the hidden order in this caffeinated chaos?
Let’s see what beautiful, unexpected connections emerge—whether it’s the French Vanilla Constellation , the Hazelnut Nebula , or the Italian Sweet Crème Black Hole of Deliciousness !
Nodes
Brand: Coffee-Mate (Pink)
Container: Bowl (Blue)
Flavors: French Vanilla, Hazelnut, Italian Sweet Crème, Irish Crème (Red)
Creamers: 14 total (Orange)
Relationships
Creamer → BELONGS_TO → Brand
Creamer → CONTAINED_IN → Container
Creamer → FLAVOR → Flavor
1 Like
Ari_Neo4j
(Ari Waller)
March 25, 2025, 2:07pm
18
@nirmit.sawant - so great! Thanks for entering and making your post!
Ari_Neo4j
(Ari Waller)
March 25, 2025, 2:13pm
19
This is great! Our judge will have some thinking to do with all of the great entries.
Ari_Neo4j
(Ari Waller)
March 25, 2025, 2:23pm
20