Let	
  Me	
  Graph	
  That	
  For	
  You	
  
@ianSrobinson	
  	
  
#neo4j	
  
	
  
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese an...
Presented at QCon New York
www.qconnewyork.com
Purpose of QCon
- to empower software development by facilitating the sprea...
Outline	
  
•  Data	
  complexity	
  
•  Graph	
  data	
  scenarios	
  
•  Using	
  a	
  graph	
  database	
  
complexity = f(size, variable structure, connectedness)
	
  
Variable	
  Structure	
  
Connectedness	
  
•  Existence	
  
•  SemanFcs	
  
•  Quality	
  
?	
  
Graphs	
  Are	
  Everywhere	
  
•  Store	
  
•  Manage	
  
•  Query	
  
data	
  
Graph	
  Databases	
  
Social	
  Network	
  
Network	
  Impact	
  Analysis	
  
Route	
  Finding	
  
RecommendaFons	
  
LogisFcs	
  
Access	
  Control	
  
Fraud	
  Analysis	
  
Neo4j	
  
Labeled	
  Property	
  Graph	
  
Querying	
  Graph	
  Data	
  
•  Describing	
  graphs	
  
•  CreaFng	
  nodes,	
  relaFonships	
  and	
  properFes	
  
•  ...
How	
  to	
  Describe	
  a	
  Graph?	
  
Cypher	
  PaSern	
  
(ben)-[:WORKS_FOR]->(acme),	
(ben)-[:HAS_SKILL]->(rest),	
(ben)-[:HAS_SKILL]->(neo4j)
Create	
  Some	
  Data	
  
CREATE (ben:Person { name:'Ben' }),	
(acme:Company { name:'Acme' }),	
(rest:Skill { name:'REST'...
Create	
  Nodes	
  
CREATE (ben:Person { name:'Ben' }),	
(acme:Company { name:'Acme' }),	
(rest:Skill { name:'REST' }),	
(...
Create	
  RelaFonships	
  
CREATE (ben:Person { name:'Ben' }),	
(acme:Company { name:'Acme' }),	
(rest:Skill { name:'REST'...
Return	
  Node	
  
CREATE (ben:Person { name:'Ben' }),	
(acme:Company { name:'Acme' }),	
(rest:Skill { name:'REST' }),	
(n...
Querying	
  a	
  Graph	
  
Graph	
  Local	
  
•  Find	
  one	
  or	
  more	
  start	
  nodes	
  
•  Explore	
  surrounding...
Which	
  people,	
  who	
  work	
  for	
  the	
  same	
  
company	
  as	
  me,	
  share	
  my	
  skills?	
  
Cypher	
  PaSern	
  
(company)<-[:WORKS_FOR]-(me)-[:HAS_SKILL]->(skill),	
(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]...
Cypher	
  Query	
  
Which	
  people,	
  who	
  work	
  for	
  the	
  same	
  company	
  
as	
  me,	
  have	
  similar	
  s...
Graph	
  PaSern	
  
Which	
  people,	
  who	
  work	
  for	
  the	
  same	
  company	
  
as	
  me,	
  have	
  similar	
  s...
Anchor	
  PaSern	
  in	
  Graph	
  
Which	
  people,	
  who	
  work	
  for	
  the	
  same	
  company	
  
as	
  me,	
  have...
Create	
  Results	
  
Which	
  people,	
  who	
  work	
  for	
  the	
  same	
  company	
  
as	
  me,	
  have	
  similar	
 ...
Results	
  
+--------------------------------------+	
| name | score | skills |	
+--------------------------------------+	...
Case	
  Studies	
  
Network	
  Impact	
  Analysis	
  
•  Which	
  parts	
  of	
  network	
  
does	
  a	
  customer	
  
depend	
  on?	
  
•  Wh...
Asset	
  Management	
  &	
  Access	
  Control	
  
•  Which	
  assets	
  can	
  an	
  
admin	
  control?	
  
•  Who	
  can	...
LogisFcs	
  
•  What’s	
  the	
  quickest	
  
delivery	
  route	
  for	
  this	
  
parcel?	
  
Social	
  Network	
  &	
  RecommendaFons	
  
•  Which	
  assets	
  can	
  I	
  
access?	
  
•  Who	
  shares	
  my	
  
int...
neo4j.com/online_course	
  
Ian Robinson,
Jim Webber & Emil Eifrem
Graph
Databases
h
Com
plim
ents
ofNeo
Technology
graphdatabases.com	
  
@ianSrobins...
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/graph-db-
tools
Let Me Graph That For You: Building a Graph Database Application
Let Me Graph That For You: Building a Graph Database Application
Upcoming SlideShare
Loading in …5
×

Let Me Graph That For You: Building a Graph Database Application

798 views

Published on

Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1zXZZ1s.

Ian Robinson introduces tools and techniques for building a system around a graph engine, experiment with graph data, and using it in an application. Filmed at qconnewyork.com.

Ian Robinson works on research and development for future versions of the Neo4j graph database. Harbouring a long-held interest in connected data, he was for many years one of the foremost proponents of REST architectures, before turning his focus from the Web's global graph to the realm of graph databases.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
798
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Let Me Graph That For You: Building a Graph Database Application

  1. 1. Let  Me  Graph  That  For  You   @ianSrobinson     #neo4j    
  2. 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /graph-db-tools
  3. 3. Presented at QCon New York www.qconnewyork.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  4. 4. Outline   •  Data  complexity   •  Graph  data  scenarios   •  Using  a  graph  database  
  5. 5. complexity = f(size, variable structure, connectedness)  
  6. 6. Variable  Structure  
  7. 7. Connectedness   •  Existence   •  SemanFcs   •  Quality   ?  
  8. 8. Graphs  Are  Everywhere  
  9. 9. •  Store   •  Manage   •  Query   data   Graph  Databases  
  10. 10. Social  Network  
  11. 11. Network  Impact  Analysis  
  12. 12. Route  Finding  
  13. 13. RecommendaFons  
  14. 14. LogisFcs  
  15. 15. Access  Control  
  16. 16. Fraud  Analysis  
  17. 17. Neo4j  
  18. 18. Labeled  Property  Graph  
  19. 19. Querying  Graph  Data   •  Describing  graphs   •  CreaFng  nodes,  relaFonships  and  properFes   •  Querying  graphs  
  20. 20. How  to  Describe  a  Graph?  
  21. 21. Cypher  PaSern   (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(neo4j)
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. Querying  a  Graph   Graph  Local   •  Find  one  or  more  start  nodes   •  Explore  surrounding  graph   •  Millions  of  hops  per  second  
  27. 27. Which  people,  who  work  for  the  same   company  as  me,  share  my  skills?  
  28. 28. Cypher  PaSern   (company)<-[:WORKS_FOR]-(me)-[:HAS_SKILL]->(skill), (company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill)
  29. 29. 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
  30. 30. Graph  PaSern   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
  31. 31. 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:'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
  32. 32. 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 colleague.name AS name, count(skill) AS score, collect(skill.name) AS skills ORDER BY score DESC
  33. 33. Results   +--------------------------------------+ | name | score | skills | +--------------------------------------+ | "Ben" | 2 | ["Neo4j","REST"] | | "Charlie" | 1 | ["Neo4j"] | +--------------------------------------+ 2 rows
  34. 34. Case  Studies  
  35. 35. Network  Impact  Analysis   •  Which  parts  of  network   does  a  customer   depend  on?   •  Who  will  be  affected  if   we  replace  a  network   element?  
  36. 36. Asset  Management  &  Access  Control   •  Which  assets  can  an   admin  control?   •  Who  can  change  my   subscripFon?  
  37. 37. LogisFcs   •  What’s  the  quickest   delivery  route  for  this   parcel?  
  38. 38. Social  Network  &  RecommendaFons   •  Which  assets  can  I   access?   •  Who  shares  my   interests?  
  39. 39. neo4j.com/online_course  
  40. 40. Ian Robinson, Jim Webber & Emil Eifrem Graph Databases h Com plim ents ofNeo Technology graphdatabases.com   @ianSrobinson   #neo4j       Thank  you  
  41. 41. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/graph-db- tools

×