let me graph that for you
play

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


  1. Let ¡Me ¡Graph ¡That ¡For ¡You ¡ @ian S robinson ¡ ¡ #neo4j ¡ ¡

  2. Outline ¡ • Data ¡complexity ¡ • Graph ¡data ¡scenarios ¡ • Using ¡a ¡graph ¡database ¡

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

  4. Variable ¡Structure ¡

  5. Connectedness ¡ • Existence ¡ • SemanFcs ¡ • Quality ¡ ? ¡

  6. Graphs ¡Are ¡Everywhere ¡

  7. Graph ¡Databases ¡ • Store ¡ data ¡ • Manage ¡ • Query ¡

  8. Social ¡Network ¡

  9. Network ¡Impact ¡Analysis ¡

  10. Route ¡Finding ¡

  11. RecommendaFons ¡

  12. LogisFcs ¡

  13. Access ¡Control ¡

  14. Fraud ¡Analysis ¡

  15. Neo4j ¡

  16. Labeled ¡Property ¡Graph ¡

  17. Querying ¡Graph ¡Data ¡ • Describing ¡graphs ¡ • CreaFng ¡nodes, ¡relaFonships ¡and ¡properFes ¡ • Querying ¡graphs ¡

  18. How ¡to ¡Describe ¡a ¡Graph? ¡

  19. Cypher ¡PaSern ¡ (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(neo4j)

  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

  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

  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

  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

  24. Querying ¡a ¡Graph ¡ Graph ¡Local ¡ • Find ¡one ¡or ¡more ¡start ¡nodes ¡ • Explore ¡surrounding ¡graph ¡ • Millions ¡of ¡hops ¡per ¡second ¡

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

  26. Cypher ¡PaSern ¡ (company)<-[:WORKS_FOR]-(me)-[:HAS_SKILL]->(skill), (company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill)

  27. 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

  28. 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

  29. 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

  30. 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

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

  32. Case ¡Studies ¡

  33. Network ¡Impact ¡Analysis ¡ • Which ¡parts ¡of ¡network ¡ does ¡a ¡customer ¡ depend ¡on? ¡ • Who ¡will ¡be ¡affected ¡if ¡ we ¡replace ¡a ¡network ¡ element? ¡

  34. Asset ¡Management ¡& ¡Access ¡Control ¡ • Which ¡assets ¡can ¡an ¡ admin ¡control? ¡ • Who ¡can ¡change ¡my ¡ subscripFon? ¡

  35. LogisFcs ¡ • What’s ¡the ¡quickest ¡ delivery ¡route ¡for ¡this ¡ parcel? ¡

  36. Social ¡Network ¡& ¡RecommendaFons ¡ • Which ¡assets ¡can ¡I ¡ access? ¡ • Who ¡shares ¡my ¡ interests? ¡

  37. neo4j.com/online_course ¡

  38. graphdatabases.com ¡ of Neo Technology Compliments Thank ¡you ¡ @ian S robinson ¡ #neo4j ¡ ¡ ¡ Graph h Databases Ian Robinson, Jim Webber & Emil Eifrem

Recommend


More recommend