Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Import ViennaJS group data from meetup.com into...

Avatar for Thomas Fritz Thomas Fritz
November 28, 2013

Import ViennaJS group data from meetup.com into Neo4j

Avatar for Thomas Fritz

Thomas Fritz

November 28, 2013

More Decks by Thomas Fritz

Other Decks in Programming

Transcript

  1. • Thomas Fritz (Fritz is my family name :) )

    • Worked for several Internet / Web companies in the past
  2. • Thomas Fritz (Fritz is my family name :) )

    • Worked for several Internet / Web companies in the past • Did PHP, Java, JavaScript (Browser and node.js), RDBMS, Triple/Quad Stores, redis, Mongo and Neo4J,…
  3. • Thomas Fritz (Fritz is my family name :) )

    • Worked for several Internet / Web companies in the past • Did PHP, Java, JavaScript (Browser and node.js), RDBMS, Triple/Quad Stores, redis, Mongo and Neo4J,… • Occasionally co-organizer
  4. • This is a diagram or chart • Maybe a

    graphic • But not a graph
  5. • This is a diagram or chart • Maybe a

    graphic • But not a graph Ham Hamster
  6. Hi my name is Leonhard Euler I had a problem

    with some bridges. 7 bridges to be correct. I wanted to find a walk through the city that would cross each bridge once and only once.
  7. Graphs in Neo4j • Property Graph Data Model • Node

    • with optional Labels • Relationship Label
  8. Graphs in Neo4j • Property Graph Data Model • Node

    • with optional Labels • Relationship • is directed Label
  9. Graphs in Neo4j • Property Graph Data Model • Node

    • with optional Labels • Relationship • is directed Label
  10. Graphs in Neo4j • Property Graph Data Model • Node

    • with optional Labels • Relationship • is directed • has a type identifier Label
  11. Graphs in Neo4j • Property Graph Data Model • Node

    • with optional Labels • Relationship • is directed • has a type identifier type Label
  12. Graphs in Neo4j • Property Graph Data Model • Node

    • with optional Labels • Relationship • is directed • has a type identifier • Properties type Label
  13. Graphs in Neo4j • Property Graph Data Model • Node

    • with optional Labels • Relationship • is directed • has a type identifier • Properties name: Foo city: Vienna type Label
  14. NO

  15. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    isAbout City Group Meetup User Topic name: JavaScript
  16. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup isAbout City Group Meetup User Topic name: JavaScript
  17. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 isAbout City Group Meetup User Topic name: JavaScript
  18. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 isAbout City Group Meetup User Topic name: JavaScript
  19. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy isAbout City Group Meetup User Topic name: JavaScript
  20. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy isAbout City Group Meetup User Topic name: JavaScript
  21. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy isAbout City Group Venue Meetup User Topic name: JavaScript
  22. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 isAbout City Group Venue Meetup User Topic name: JavaScript
  23. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 isAbout City Group Venue Meetup User Topic name: JavaScript
  24. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout City Group Venue Meetup User Topic name: JavaScript
  25. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout City Group Venue Meetup User Topic name: JavaScript
  26. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn City Group Venue Meetup User Topic name: JavaScript
  27. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn City Group Venue Meetup User Topic name: JavaScript
  28. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript
  29. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript
  30. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript
  31. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript
  32. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript Node
  33. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript name: ViennaJS Node
  34. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript name: ViennaJS Node Properties
  35. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript locatedIn name: ViennaJS Node Properties
  36. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript locatedIn name: ViennaJS Node Properties Relation
  37. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript locatedIn name: ViennaJS Group Node Properties Relation
  38. locatedIn name: ViennaJS name: Vienna name: Thomas Fritz memberOf interestedIn

    name: Monthly Meetup date: 27.11.2013 hostedBy name: Sektor5 takesPlaceAt isAbout locatedIn isAttending City Group Venue Meetup User Topic name: JavaScript locatedIn name: ViennaJS Group Node Properties Relation Label
  39. • Export Data from meetup (https://github.com/thomasfr/ ViennaJS/blob/master/meetup-import.coffee) • Import Data

    into Neo4j • Batch Importer • better and faster for huge amount of data
  40. • Export Data from meetup (https://github.com/thomasfr/ ViennaJS/blob/master/meetup-import.coffee) • Import Data

    into Neo4j • Batch Importer • better and faster for huge amount of data • N-Triples like notation
  41. • Export Data from meetup (https://github.com/thomasfr/ ViennaJS/blob/master/meetup-import.coffee) • Import Data

    into Neo4j • Batch Importer • better and faster for huge amount of data • N-Triples like notation • Query Language —> Cypher
  42. Cypher • SQL and SparQL inspired • Full CRUD •

    Create, Read, Update, Delete • Manage indexes manually
  43. What it looks like locatedIn name: ViennaJS name: Vienna (node1:Group)-[relation:locatedIn]->(node2:City)

    City Group (n1:Group{name:“ViennaJS“)-[r:locatedIn]->(n2:City{name:“Vienna“})
  44. What it looks like locatedIn name: ViennaJS name: Vienna (node1:Group)-[relation:locatedIn]->(node2:City)

    City Group (n1:Group{name:“ViennaJS“)-[r:locatedIn]->(n2:City{name:“Vienna“}) MATCH (group:Group)-[r:locatedIn]->(vienna:City{name:“Vienna“}) RETURN group.name, group.description, group.lon, group.lat, vienna.name