Stefan Plantikow, Neo4j 2017 Stefan Plantikow, Neo4j 2 2017 - - PowerPoint PPT Presentation

stefan plantikow neo4j
SMART_READER_LITE
LIVE PREVIEW

Stefan Plantikow, Neo4j 2017 Stefan Plantikow, Neo4j 2 2017 - - PowerPoint PPT Presentation

Stefan Plantikow, Neo4j 2017 Stefan Plantikow, Neo4j 2 2017 Stefan Plantikow, Neo4j 2017 Stefan Plantikow, Neo4j 4 2017 Stefan Plantikow, Neo4j 5


slide-1
SLIDE 1

2017 Stefan Plantikow, Neo4j

Stefan Plantikow, Neo4j

slide-2
SLIDE 2

2017 Stefan Plantikow, Neo4j

  • 2
slide-3
SLIDE 3

2017 Stefan Plantikow, Neo4j

slide-4
SLIDE 4

2017 Stefan Plantikow, Neo4j

  • 4
slide-5
SLIDE 5

2017 Stefan Plantikow, Neo4j

  • 5
slide-6
SLIDE 6

2017 Stefan Plantikow, Neo4j

  • 6
slide-7
SLIDE 7

2017 Stefan Plantikow, Neo4j

slide-8
SLIDE 8

2017 Stefan Plantikow, Neo4j

8

slide-9
SLIDE 9

2017 Stefan Plantikow, Neo4j

slide-10
SLIDE 10

2017 Stefan Plantikow, Neo4j

slide-11
SLIDE 11

2017 Stefan Plantikow, Neo4j

11

slide-12
SLIDE 12

2017 Stefan Plantikow, Neo4j

12

slide-13
SLIDE 13

2017 Stefan Plantikow, Neo4j

13

slide-14
SLIDE 14

2017 Stefan Plantikow, Neo4j

slide-15
SLIDE 15

2017 Stefan Plantikow, Neo4j

  • 15
slide-16
SLIDE 16

2017 Stefan Plantikow, Neo4j

16

slide-17
SLIDE 17

2017 Stefan Plantikow, Neo4j

slide-18
SLIDE 18

2017 Stefan Plantikow, Neo4j

CYPHER 2017

slide-19
SLIDE 19

2017 Stefan Plantikow, Neo4j

CYPHER 2018

slide-20
SLIDE 20

2017 Stefan Plantikow, Neo4j

slide-21
SLIDE 21

2017 Stefan Plantikow, Neo4j

MATCH FROM GRAPH cities MATCH (city:City)-[:IN]->(:Country {name: "Germany"}) FROM GRAPH people MATCH (person)-[:LIVES_IN]->(city) RETURN person ORDER BY person.age LIMIT 1

slide-22
SLIDE 22

2017 Stefan Plantikow, Neo4j

  • GRAPH foo
  • NEW GRAPH bar
  • COPY GRAPH foo TO baz
  • GRAPH foo AT "url"
  • NEW GRAPH foo AT "url"
slide-23
SLIDE 23

2017 Stefan Plantikow, Neo4j

CREATE, MERGE, DELETE FROM GRAPH people MATCH (alice)-[:KNOWS]->(bob)-[:KNOWS]->(charlie) WHERE (bob)-[:LOVES]->(alice)<-[:LOVES]-(charlie) AND (bob)<-[:LOVES]-(alice)-[:LOVES]->(charlie) INTO GRAPH drama CREATE (t:LoveTriangle)<-[:IN]-(alice), (t)<-[:IN]-(bob), (t)<-[:IN]-(charlie) RETURN DISTINCT alice.name

slide-24
SLIDE 24

2017 Stefan Plantikow, Neo4j

  • [OPTIONAL] MATCH
  • CREATE

○ ○

  • MERGE
  • SET/REMOVE
  • DELETE
slide-25
SLIDE 25

2017 Stefan Plantikow, Neo4j

slide-26
SLIDE 26

2017 Stefan Plantikow, Neo4j

MATCH (a)-->(b) WITH a, b ...

slide-27
SLIDE 27

2017 Stefan Plantikow, Neo4j

WITH a, r, b RETURN GRAPH (a)-[r]->(b) AS foo

slide-28
SLIDE 28

2017 Stefan Plantikow, Neo4j

MATCH (a:Person)-[:FRIEND*2]->(b:Person) RETURN GRAPH (a)-[:FOAF]->(b) AS foo MATCH (a:Person)-[:FRIEND*2]->(b:Person) WITH GRAPH (a)-[:FOAF]->(b) // Similar to (c)-[:FRIEND*4]->(d) MATCH (c)-[:FOAF]->(d) RETURN *

slide-29
SLIDE 29

2017 Stefan Plantikow, Neo4j

slide-30
SLIDE 30

2017 Stefan Plantikow, Neo4j

WITH/RETURN RETURN GRAPH foo RETURN name, age, GRAPHS foo, bar, baz WITH GRAPHS * WITH GRAPHS *, NEW GRAPH myNewGraph AT "url" WITH GRAPHS foo, bar, COPY GRAPH foo TO baz

slide-31
SLIDE 31

2017 Stefan Plantikow, Neo4j

RETURN a, b, c, GRAPHS foo, bar RETURN a, b, c WITH a, b, c, GRAPHS foo, bar WITH a, b, c WITH GRAPHS ...

slide-32
SLIDE 32

2017 Stefan Plantikow, Neo4j

  • WITH ... GRAPH foo
  • WITH ... GRAPHS foo, bar, baz
slide-33
SLIDE 33

2017 Stefan Plantikow, Neo4j

WITH GRAPHS FROM/INTO WITH GRAPHS foo, bar >> WITH GRAPHS foo, >> baz WITH GRAPHS foo >> bar

slide-34
SLIDE 34

2017 Stefan Plantikow, Neo4j

  • COPY GRAPH foo TO "new-url"
  • MOVE GRAPH foo TO "new-url"
  • DELETE GRAPH foo
slide-35
SLIDE 35

2017 Stefan Plantikow, Neo4j

slide-36
SLIDE 36

2017 Stefan Plantikow, Neo4j

slide-37
SLIDE 37

2017 Stefan Plantikow, Neo4j

slide-38
SLIDE 38

2017 Stefan Plantikow, Neo4j

FROM GRAPH ActorsFilmsCities AT 'graph://actors_films_cities...' MATCH (p:Person)-[:BORN_IN]->(c:City) INTO NEW GRAPH PersonCityEvents MERGE (p:Person {name: p.name, YOB: p.YOB}) MERGE (c:City {name: c.name}) MERGE (p)-[:BORN_IN]->(c) RETURN GRAPH PersonCityEvents

slide-39
SLIDE 39

2017 Stefan Plantikow, Neo4j

WITH GRAPH PersonCityEvents FROM GRAPH Events AT 'graph://events...' MATCH (c)<-[:IN_CITY]-(e)-[:IN_YEAR]->(y), (e)-[:IS_A]->(et {value: 'Criminal Event'}) // Do matches for all other event types: // Public Event, War Event.... ... INTO GRAPH PersonCityEvents MERGE (c:City {name: c.value}) MERGE (e {title: e.value, year: y.value}) MERGE (e)-[:HAPPENED_IN]->(c) SET e:WarEvent // Do for all remaining event types ... RETURN count(*) AS matches

slide-40
SLIDE 40

2017 Stefan Plantikow, Neo4j

WITH GRAPH PersonCityEvents MATCH (ce:CriminalEvent)-[:HAPPENED_IN]->(c:City)<-[:BORN_IN]-(p:Person) INTO NEW GRAPH Temp-PersonCityCrimes MERGE (p:Person {name: p.name, YOB: p.YOB}) MERGE (c:City {name: c.name}) MERGE (ce:CriminalEvent {title: ce.title, year: ce.year}) MERGE (p)-[:BORN_IN]->(c) MERGE (ce)-[:HAPPENED_IN]->(c) RETURN GRAPH Temp-PersonCityCrimes

slide-41
SLIDE 41

2017 Stefan Plantikow, Neo4j

slide-42
SLIDE 42

2017 Stefan Plantikow, Neo4j

FROM GRAPH SalesDetail AT ‘graph://...’ MATCH (p:Product)-[rel:IN]->(:Order)<-[HAS]-(s:Store)-[:IN]->(r:Region) WITH reg.name AS regionName, s.code AS storeCode, p.code AS productCode, sum(rel.soldPrice * rel.numItemsSold) AS storeProductTotal regionName storeCode productCode storeProduct- Total

APAC AC-888 PEN-1 20.00 APAC AC-888 TOY-1 45.00 EMEA LK-709 BOOK-2 10.00 EMEA LK-709 TOY-1 40.00 EMEA LK-709 BOOK-5 15.00 EMEA WW-531 BOOK-5 18.00 EMEA WW-531 BULB-2 190.00 EMEA WW-531 PC-1 440.00

slide-43
SLIDE 43

2017 Stefan Plantikow, Neo4j

RETURN regionName, storeCode, sum(storeProductTotal) AS totalStoreSales GRAPH SalesSummary // not shown

regionName storeCode totalStoreSales APAC AC-888 65.00 EMEA LK-709 65.00 EMEA WW-531 648.00

slide-44
SLIDE 44

2017 Stefan Plantikow, Neo4j

slide-45
SLIDE 45

2017 Stefan Plantikow, Neo4j

USE FROM INTO

slide-46
SLIDE 46

2017 Stefan Plantikow, Neo4j

COPY GRAPH foo AS SNAPSHOT bar CREATE (=p)

slide-47
SLIDE 47

2017 Stefan Plantikow, Neo4j

SET GRAPH foo.prop = 42 REMOVE GRAPH foo.prop SET GRAPH foo:SocialNetwork REMOVE GRAPH foo:SocialNetwork

slide-48
SLIDE 48

2017 Stefan Plantikow, Neo4j

  • MATCH (a:Person),

<g1 (a)-[:KNOWS]->(...)>, <g2 (a)-[:LIVES_IN]->(...)> RETURN GRAPH g1-g2 AS g

slide-49
SLIDE 49

2017 Stefan Plantikow, Neo4j