Let Me Graph That For You @ian S robinson #neo4j - - PowerPoint PPT Presentation

let me graph that for you
SMART_READER_LITE
LIVE PREVIEW

Let Me Graph That For You @ian S robinson #neo4j - - PowerPoint PPT Presentation

Let Me Graph That For You @ian S robinson #neo4j Outline Data complexity Graph data scenarios Using a graph database complexity = f(size, variable


slide-1
SLIDE 1

Let ¡Me ¡Graph ¡That ¡For ¡You ¡

@ianSrobinson ¡ ¡ #neo4j ¡ ¡

slide-2
SLIDE 2

Outline ¡

  • Data ¡complexity ¡
  • Graph ¡data ¡scenarios ¡
  • Using ¡a ¡graph ¡database ¡
slide-3
SLIDE 3

complexity = f(size, variable structure, connectedness) ¡

slide-4
SLIDE 4

Variable ¡Structure ¡

slide-5
SLIDE 5

Connectedness ¡

  • Existence ¡
  • SemanFcs ¡
  • Quality ¡

? ¡

slide-6
SLIDE 6

Graphs ¡Are ¡Everywhere ¡

slide-7
SLIDE 7
  • Store ¡
  • Manage ¡
  • Query ¡

data ¡

Graph ¡Databases ¡

slide-8
SLIDE 8

Social ¡Network ¡

slide-9
SLIDE 9

Network ¡Impact ¡Analysis ¡

slide-10
SLIDE 10

Route ¡Finding ¡

slide-11
SLIDE 11

RecommendaFons ¡

slide-12
SLIDE 12

LogisFcs ¡

slide-13
SLIDE 13

Access ¡Control ¡

slide-14
SLIDE 14

Fraud ¡Analysis ¡

slide-15
SLIDE 15

Neo4j ¡

slide-16
SLIDE 16

Labeled ¡Property ¡Graph ¡

slide-17
SLIDE 17

Querying ¡Graph ¡Data ¡

  • Describing ¡graphs ¡
  • CreaFng ¡nodes, ¡relaFonships ¡and ¡properFes ¡
  • Querying ¡graphs ¡
slide-18
SLIDE 18

How ¡to ¡Describe ¡a ¡Graph? ¡

slide-19
SLIDE 19

Cypher ¡PaSern ¡

(ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(neo4j)

slide-20
SLIDE 20

Create ¡Some ¡Data ¡

CREATE (ben:Person { name:'Ben' }), (acme:Company { name:'Acme' }), (rest:Skill { name:'REST' }), (neo4j:Skill { name:'Neo4j' }), (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(graphs) RETURN ben

slide-21
SLIDE 21

Create ¡Nodes ¡

CREATE (ben:Person { name:'Ben' }), (acme:Company { name:'Acme' }), (rest:Skill { name:'REST' }), (neo4j:Skill { name:'Neo4j' }), (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(graphs) RETURN ben

slide-22
SLIDE 22

Create ¡RelaFonships ¡

CREATE (ben:Person { name:'Ben' }), (acme:Company { name:'Acme' }), (rest:Skill { name:'REST' }), (neo4j:Skill { name:'Neo4j' }), (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(graphs) RETURN ben

slide-23
SLIDE 23

Return ¡Node ¡

CREATE (ben:Person { name:'Ben' }), (acme:Company { name:'Acme' }), (rest:Skill { name:'REST' }), (neo4j:Skill { name:'Neo4j' }), (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(graphs) RETURN ben

slide-24
SLIDE 24
slide-25
SLIDE 25

Querying ¡a ¡Graph ¡

Graph ¡Local ¡

  • Find ¡one ¡or ¡more ¡start ¡nodes ¡
  • Explore ¡surrounding ¡graph ¡
  • Millions ¡of ¡hops ¡per ¡second ¡
slide-26
SLIDE 26

Which ¡people, ¡who ¡work ¡for ¡the ¡same ¡ company ¡as ¡me, ¡share ¡my ¡skills? ¡

slide-27
SLIDE 27

Cypher ¡PaSern ¡

(company)<-[:WORKS_FOR]-(me)-[:HAS_SKILL]->(skill), (company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill)

slide-28
SLIDE 28

Cypher ¡Query ¡

Which ¡people, ¡who ¡work ¡for ¡the ¡same ¡company ¡ as ¡me, ¡have ¡similar ¡skills ¡to ¡me? ¡

MATCH (company)<-[:WORKS_FOR]-(:Person{name:'ian'})

  • [:HAS_SKILL]->(skill),

(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill) RETURN colleague.name AS name, count(skill) AS score, collect(skill.name) AS skills ORDER BY score DESC

slide-29
SLIDE 29

Graph ¡PaSern ¡

Which ¡people, ¡who ¡work ¡for ¡the ¡same ¡company ¡ as ¡me, ¡have ¡similar ¡skills ¡to ¡me? ¡

MATCH (company)<-[:WORKS_FOR]-(:Person{name:' MATCH (company)<-[:WORKS_FOR]-(:Person{name:'ian ian'}) '})

  • [:HAS_SKILL]->(skill),
  • [:HAS_SKILL]->(skill),

(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill) (company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill) RETURN colleague.name AS name, count(skill) AS score, collect(skill.name) AS skills ORDER BY score DESC

slide-30
SLIDE 30

Anchor ¡PaSern ¡in ¡Graph ¡

Which ¡people, ¡who ¡work ¡for ¡the ¡same ¡company ¡ as ¡me, ¡have ¡similar ¡skills ¡to ¡me? ¡

MATCH (company)<-[:WORKS_FOR]-(:Person{name:' (:Person{name:'ian ian'}) '})

  • [:HAS_SKILL]->(skill),

(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill) RETURN colleague.name AS name, count(skill) AS score, collect(skill.name) AS skills ORDER BY score DESC

slide-31
SLIDE 31

Create ¡Results ¡

Which ¡people, ¡who ¡work ¡for ¡the ¡same ¡company ¡ as ¡me, ¡have ¡similar ¡skills ¡to ¡me? ¡

MATCH (company)<-[:WORKS_FOR]-(:Person{name:'ian'})

  • [:HAS_SKILL]->(skill),

(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill) RETURN RETURN colleague.name colleague.name AS name, AS name, count(skill) AS score, count(skill) AS score, collect( collect(skill.name skill.name) AS skills ) AS skills ORDER BY score DESC ORDER BY score DESC

slide-32
SLIDE 32
slide-33
SLIDE 33

Results ¡

+--------------------------------------+ | name | score | skills | +--------------------------------------+ | "Ben" | 2 | ["Neo4j","REST"] | | "Charlie" | 1 | ["Neo4j"] | +--------------------------------------+ 2 rows

slide-34
SLIDE 34

Case ¡Studies ¡

slide-35
SLIDE 35

Network ¡Impact ¡Analysis ¡

  • Which ¡parts ¡of ¡network ¡

does ¡a ¡customer ¡ depend ¡on? ¡

  • Who ¡will ¡be ¡affected ¡if ¡

we ¡replace ¡a ¡network ¡ element? ¡

slide-36
SLIDE 36

Asset ¡Management ¡& ¡Access ¡Control ¡

  • Which ¡assets ¡can ¡an ¡

admin ¡control? ¡

  • Who ¡can ¡change ¡my ¡

subscripFon? ¡

slide-37
SLIDE 37

LogisFcs ¡

  • What’s ¡the ¡quickest ¡

delivery ¡route ¡for ¡this ¡ parcel? ¡

slide-38
SLIDE 38

Social ¡Network ¡& ¡RecommendaFons ¡

  • Which ¡assets ¡can ¡I ¡

access? ¡

  • Who ¡shares ¡my ¡

interests? ¡

slide-39
SLIDE 39

neo4j.com/online_course ¡

slide-40
SLIDE 40

Ian Robinson, Jim Webber & Emil Eifrem

Graph Databases h

Compliments
  • f Neo Technology

graphdatabases.com ¡

@ianSrobinson ¡ #neo4j ¡ ¡ ¡

Thank ¡you ¡