Introduction to Cypher

Neo4j
Neo4jOpen Source NOSQL Graph Database um Neo4j
Introduction to Cypher
Adam Cowley
Developer Advocate - @adamcowley
Introduction to Cypher
Toy
Story
Toy
Story
Nodes represent
things
Toy
Story
Movie
Nodes represent
things
Toy
Story
Movie
Nodes can be identified by
one or more labels
Nodes represent
things
Toy
Story
Movie
Animated
Nodes can be identified by
one or more labels
Nodes represent
things
Toy
Story
Movie
Animated
Nodes can be identified by
one or more labels
title: Toy Story
released: 1995
Nodes represent
things
Toy
Story
Movie
Animated
Nodes can be identified by
one or more labels
title: Toy Story
released: 1995
Nodes represent
things
Nodes can hold
properties as key/value
pairs
Toy
Story
Movie
Tom
Hanks
Actor
Toy
Story
Movie
Toy
Story
Movie
Tom
Hanks
Actor
Toy
Story
Movie
Tom
Hanks
Actor
Relationships connect two nodes
Toy
Story
Movie
Tom
Hanks
Actor
Relationships connect two nodes
ACTED_IN
Toy
Story
Movie
Tom
Hanks
Actor
Relationships connect two nodes
ACTED_IN
Relationships
have a type
Toy
Story
Movie
Tom
Hanks
Actor
Relationships connect two nodes
ACTED_IN
Relationships
have a type
Relationships
have a direction
Toy
Story
Movie
Tom
Hanks
Actor
Relationships connect two nodes
ACTED_IN
roles: Woody
Relationships
have a type
Relationships
have a direction
Toy
Story
Movie
Tom
Hanks
Actor
Relationships connect two nodes
ACTED_IN
roles: Woody
Relationships
have a type
Relationships can also
hold properties as
key/value pairs
Relationships
have a direction
Cypher
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Movie
ACTED_IN
Person
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Movie
ACTED_IN
Person
(p:Person)-[r:ACTED_IN]->(m:Movie)
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Movie
ACTED_IN
Person
(p:Person)-[r:ACTED_IN]->(m:Movie)
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Movie
ACTED_IN
Person
(p:Person)-[r:ACTED_IN]->(m:Movie)
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Movie
ACTED_IN
Person
(p:Person)-[r:ACTED_IN]->(m:Movie)
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Movie
ACTED_IN
Person
(p:Person)-[r:ACTED_IN]->(m:Movie)
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Movie
ACTED_IN
Person
(p:Person)-[r:ACTED_IN]->(m:Movie)
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Movie
ACTED_IN
Person
(p:Person)-[r:ACTED_IN]->(m:Movie)
Cypher is a declarative language that allows you
to identify patterns in your data using an ASCII-
art style syntax consisting of brackets, dashes
and arrows.
Movie
ACTED_IN
Person
(p:Person)-[r:ACTED_IN]->(m:Movie)
Writing to Neo4j
// Create a pattern
CREATE (:Person {name: "Tom Hanks"})
-[:ACTED_IN {roles: "Woody"}]->
(:Movie {title: "Toy Story"})
Writing to Neo4j
// Find or create using MERGE
MERGE (p:Person {name: "Tom Hanks"})
Writing to Neo4j
// Find or create using MERGE
MERGE (p:Person {name: "Tom Hanks"})
MERGE (m:Movie {title: "Toy Story"})
Writing to Neo4j
// Find or create using MERGE
MERGE (p:Person {name: "Tom Hanks"})
MERGE (m:Movie {title: "Toy Story"})
MERGE (p)-[r:ACTED_IN]->(m)
Writing to Neo4j
// Find or create using MERGE
MERGE (p:Person {name: "Tom Hanks"})
MERGE (m:Movie {title: "Toy Story"})
MERGE (p)-[r:ACTED_IN]->(m)
SET r.roles = "Woody"
Reading from Neo4j
// Find a pattern in the database
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
Reading from Neo4j
// Find a pattern in the database
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
// Filter on a node property
WHERE m.title = "Toy Story"
// Find a pattern in the database
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
// Filter on a node property
WHERE m.title = "Toy Story"
// Choose what to return
RETURN p.name AS actor, r.roles AS roles
Reading from Neo4j
// Find a pattern in the database
SQL Equivalent
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
FROM/JOIN
// Filter on a node property
WHERE m.title = "Toy Story"
WHERE
// Choose what to return
RETURN p.name AS actor, r.roles AS roles SELECT
Reading from Neo4j
// Actors who acted with Tom Hanks also acted in...
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
<-[:ACTED_IN]-(p2)-[r2:ACTED_IN]->(m2:Movie)
WHERE p.name = "Tom Hanks"
// Return their name and a list of the movie titles
RETURN p2.name AS actor, collect(m2.title) AS
movies
Reading from Neo4j
Introduction to Cypher
LOAD CSV WITH HEADERS FROM 'file:///stations.csv' AS row
MERGE (s:Station {id: row.id})
SET s.name = row.name,
s.zone = row.zone,
s.location = point({
latitude: toFloat(row.latitude),
longitude: toFloat(row.longitude)
})
Going Underground
LOAD CSV WITH HEADERS FROM 'file:///lines.csv' AS row
MERGE (l:Line {id: row.line})
SET l += row {
.name,
.colour,
.stripe
}
Going Underground
Going Underground
LOAD CSV WITH HEADERS FROM 'file:///stops.csv' AS row
MATCH (s1:Station {id: row.station1})
MATCH (s2:Station {id: row.station2})
MATCH (l:Line {id: row.line})
CALL apoc.create.relationship(
s1,
toUpper(replace(l.name, ' ', '_')), {}, s2
) YIELD rel
Introduction to Cypher
Introduction to Cypher
MATCH (start:Station {name: "Liverpool Street"})
MATCH (end:Station {name: "Kensington (Olympia)"})
MATCH path = allShortestPaths((start)-[*..99]-(end))
WHERE all(r in relationships(path) WHERE not r:`WATERLOO_&_CITY_LINE`)
AND all(n in nodes(path) WHERE not r:Busy)
RETURN path
● Completely Free
● Hands-on Courses
teaching Neo4j Fundamentals, Cypher,
Drivers and Graph Data Science
● Curated Learning Paths
catering for everyone from beginners to
experts
● Free Certifications
graphacademy.neo4j.com
Learn more with
1 von 48

Más contenido relacionado

Similar a Introduction to Cypher (12)

As auditsAs audits
As audits
emilyblyth147 views
TMDb movie dataset by kaggleTMDb movie dataset by kaggle
TMDb movie dataset by kaggle
Mouhamadou Gueye, PhD 2.2K views
LIS 60020 Metadata SchemaLIS 60020 Metadata Schema
LIS 60020 Metadata Schema
Laura Levy514 views
EvaluationEvaluation
Evaluation
guest9943fc274 views
Media A2 EvaluationMedia A2 Evaluation
Media A2 Evaluation
KKAProductionsAmber247 views
Formai secFormai sec
Formai sec
ttasi86223 views
Uso di Schema.org per il tuo sito webUso di Schema.org per il tuo sito web
Uso di Schema.org per il tuo sito web
semrush_webinars161 views

Más de Neo4j

Operations & Data GraphOperations & Data Graph
Operations & Data GraphNeo4j
17 views25 Folien
El Arte de lo PossibleEl Arte de lo Possible
El Arte de lo PossibleNeo4j
28 views35 Folien
Neo4j y GenAI Neo4j y GenAI
Neo4j y GenAI Neo4j
27 views41 Folien

Último(20)

Journey of Generative AIJourney of Generative AI
Journey of Generative AI
thomasjvarghese4918 views
PTicketInput.pdfPTicketInput.pdf
PTicketInput.pdf
stuartmcphersonflipm314 views
RIO GRANDE SUPPLY COMPANY INC, JAYSON.docxRIO GRANDE SUPPLY COMPANY INC, JAYSON.docx
RIO GRANDE SUPPLY COMPANY INC, JAYSON.docx
JaysonGarabilesEspej6 views
PROGRAMME.pdfPROGRAMME.pdf
PROGRAMME.pdf
HiNedHaJar14 views
How Leaders See Data? (Level 1)How Leaders See Data? (Level 1)
How Leaders See Data? (Level 1)
Narendra Narendra10 views
Data structure and algorithm. Data structure and algorithm.
Data structure and algorithm.
Abdul salam 12 views
MOSORE_BRESCIAMOSORE_BRESCIA
MOSORE_BRESCIA
Federico Karagulian5 views
ColonyOSColonyOS
ColonyOS
JohanKristiansson69 views
3196 The Case of The East River3196 The Case of The East River
3196 The Case of The East River
ErickANDRADE9011 views
Microsoft Fabric.pptxMicrosoft Fabric.pptx
Microsoft Fabric.pptx
Shruti Chaurasia19 views
Survey on Factuality in LLM's.pptxSurvey on Factuality in LLM's.pptx
Survey on Factuality in LLM's.pptx
NeethaSherra15 views

Introduction to Cypher

  • 1. Introduction to Cypher Adam Cowley Developer Advocate - @adamcowley
  • 6. Toy Story Movie Nodes can be identified by one or more labels Nodes represent things
  • 7. Toy Story Movie Animated Nodes can be identified by one or more labels Nodes represent things
  • 8. Toy Story Movie Animated Nodes can be identified by one or more labels title: Toy Story released: 1995 Nodes represent things
  • 9. Toy Story Movie Animated Nodes can be identified by one or more labels title: Toy Story released: 1995 Nodes represent things Nodes can hold properties as key/value pairs
  • 15. Toy Story Movie Tom Hanks Actor Relationships connect two nodes ACTED_IN Relationships have a type
  • 16. Toy Story Movie Tom Hanks Actor Relationships connect two nodes ACTED_IN Relationships have a type Relationships have a direction
  • 17. Toy Story Movie Tom Hanks Actor Relationships connect two nodes ACTED_IN roles: Woody Relationships have a type Relationships have a direction
  • 18. Toy Story Movie Tom Hanks Actor Relationships connect two nodes ACTED_IN roles: Woody Relationships have a type Relationships can also hold properties as key/value pairs Relationships have a direction
  • 20. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows.
  • 21. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows.
  • 22. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows. Movie ACTED_IN Person
  • 23. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows. Movie ACTED_IN Person (p:Person)-[r:ACTED_IN]->(m:Movie)
  • 24. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows. Movie ACTED_IN Person (p:Person)-[r:ACTED_IN]->(m:Movie)
  • 25. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows. Movie ACTED_IN Person (p:Person)-[r:ACTED_IN]->(m:Movie)
  • 26. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows. Movie ACTED_IN Person (p:Person)-[r:ACTED_IN]->(m:Movie)
  • 27. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows. Movie ACTED_IN Person (p:Person)-[r:ACTED_IN]->(m:Movie)
  • 28. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows. Movie ACTED_IN Person (p:Person)-[r:ACTED_IN]->(m:Movie)
  • 29. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows. Movie ACTED_IN Person (p:Person)-[r:ACTED_IN]->(m:Movie)
  • 30. Cypher is a declarative language that allows you to identify patterns in your data using an ASCII- art style syntax consisting of brackets, dashes and arrows. Movie ACTED_IN Person (p:Person)-[r:ACTED_IN]->(m:Movie)
  • 31. Writing to Neo4j // Create a pattern CREATE (:Person {name: "Tom Hanks"}) -[:ACTED_IN {roles: "Woody"}]-> (:Movie {title: "Toy Story"})
  • 32. Writing to Neo4j // Find or create using MERGE MERGE (p:Person {name: "Tom Hanks"})
  • 33. Writing to Neo4j // Find or create using MERGE MERGE (p:Person {name: "Tom Hanks"}) MERGE (m:Movie {title: "Toy Story"})
  • 34. Writing to Neo4j // Find or create using MERGE MERGE (p:Person {name: "Tom Hanks"}) MERGE (m:Movie {title: "Toy Story"}) MERGE (p)-[r:ACTED_IN]->(m)
  • 35. Writing to Neo4j // Find or create using MERGE MERGE (p:Person {name: "Tom Hanks"}) MERGE (m:Movie {title: "Toy Story"}) MERGE (p)-[r:ACTED_IN]->(m) SET r.roles = "Woody"
  • 36. Reading from Neo4j // Find a pattern in the database MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
  • 37. Reading from Neo4j // Find a pattern in the database MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) // Filter on a node property WHERE m.title = "Toy Story"
  • 38. // Find a pattern in the database MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) // Filter on a node property WHERE m.title = "Toy Story" // Choose what to return RETURN p.name AS actor, r.roles AS roles Reading from Neo4j
  • 39. // Find a pattern in the database SQL Equivalent MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) FROM/JOIN // Filter on a node property WHERE m.title = "Toy Story" WHERE // Choose what to return RETURN p.name AS actor, r.roles AS roles SELECT Reading from Neo4j
  • 40. // Actors who acted with Tom Hanks also acted in... MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) <-[:ACTED_IN]-(p2)-[r2:ACTED_IN]->(m2:Movie) WHERE p.name = "Tom Hanks" // Return their name and a list of the movie titles RETURN p2.name AS actor, collect(m2.title) AS movies Reading from Neo4j
  • 42. LOAD CSV WITH HEADERS FROM 'file:///stations.csv' AS row MERGE (s:Station {id: row.id}) SET s.name = row.name, s.zone = row.zone, s.location = point({ latitude: toFloat(row.latitude), longitude: toFloat(row.longitude) }) Going Underground
  • 43. LOAD CSV WITH HEADERS FROM 'file:///lines.csv' AS row MERGE (l:Line {id: row.line}) SET l += row { .name, .colour, .stripe } Going Underground
  • 44. Going Underground LOAD CSV WITH HEADERS FROM 'file:///stops.csv' AS row MATCH (s1:Station {id: row.station1}) MATCH (s2:Station {id: row.station2}) MATCH (l:Line {id: row.line}) CALL apoc.create.relationship( s1, toUpper(replace(l.name, ' ', '_')), {}, s2 ) YIELD rel
  • 47. MATCH (start:Station {name: "Liverpool Street"}) MATCH (end:Station {name: "Kensington (Olympia)"}) MATCH path = allShortestPaths((start)-[*..99]-(end)) WHERE all(r in relationships(path) WHERE not r:`WATERLOO_&_CITY_LINE`) AND all(n in nodes(path) WHERE not r:Busy) RETURN path
  • 48. ● Completely Free ● Hands-on Courses teaching Neo4j Fundamentals, Cypher, Drivers and Graph Data Science ● Curated Learning Paths catering for everyone from beginners to experts ● Free Certifications graphacademy.neo4j.com Learn more with

Hinweis der Redaktion

  1. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  2. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  3. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  4. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  5. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  6. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  7. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  8. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  9. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  10. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  11. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  12. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  13. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  14. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  15. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  16. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  17. Graphs essentially consist of nodes, and these nodes represent things, they represent entities. In this case it's a MacBook, it could be a product, a car, a location, it's something physical.We can identify these nodes with one or more labels.
  18. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  19. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  20. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  21. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  22. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  23. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  24. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  25. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  26. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  27. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  28. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.
  29. And the way we query this structure of known term relationships is with a language called cypher. Cypher is a declarative query language that allows you to identify patterns in your data. In this case, a customer who is rated a product. We do that by drawing the patterns on screen using an ASCII-art style syntax.