SlideShare ist ein Scribd-Unternehmen logo
1 von 56
There And Back Again…
A Developer’s Tale
By: Jennifer Reif
Neo4j Developer Relations Engineer
jennifer.reif@neo4j.com
@JMHReif
Who Am I?
• Developer Relations Engineer for Neo4j

• Continuous learner, developer, blogger

• Conference speaker

• Survivor of financial industry development
Email: jennifer.reif@neo4j.com
Twitter: @JMHReif
We have a problem…
We want to know…
• What actors played which characters in Lord of the Rings movies
• Other scenarios:

• What employees have which skills for job openings in the company

• What customers purchased which products and the suppliers

• What patient was prescribed which medications from which doctors

• What customers bought which vehicles from what dealerships/people
Existing solutions are painful
• Thousands of actors, employees, customers,
patients, doctors, dealerships, skills, etc

• Relational:

• Great for reports and simple JOINs, but too many
JOINs to go across 3 core tables and lookup tables
with endless rows each

• Document:

• Great for pulling information about individual
components, but linking properties across
substructures is complicated

• Key-value:

• Great for bits of information very quickly, but
aggregating and compiling lots of related data is
arduous
What is a Graph Database?
GraphChart
Database - specifically graph
• Database: a structured set of data held in a computer, especially one
that is accessible in various ways.
• Relational? NoSQL? Graph?

• Graph database: uses graph structures for semantic
queries with nodes, edges, and properties to represent and store data.
What can graph do?
–Wikipedia, “Graph Database”, Performance section
“Execution of queries within a graph database is localized to a portion of
the graph. It does not search through irrelevant data, making it
advantageous for real-time big data analytical queries. Consequently, graph
database performance is proportional to the size of the data needed to be
traversed, staying relatively constant despite the growth of data stored.”
Relational
Graph
Other NoSQL Graph
What is it used to accomplish?
Use Cases
• Social networks

• Impact analysis

• Logistics and routing

• Recommendations

• Access control

• Fraud analysis

• …and many, many more!
Lots of graph options…
Why choose Neo4j?
Neo4j is a database
Neo4j
Fast
Reliable
No size limit
Binary &
HTTP
protocol
ACID
transactions
2-4 M

ops/s
per core
Clustering
scale &
availability
Official
Drivers
Neo4j is a graph database
Neo4j
Property
Graph
Model
Native
GraphDB
Schema
Free
Graph
Storage
Cypher
Query
Language
Developer
Workbench
Extensible
Procedures
& Functions
Graph
Visualization
What’s the data model?
Whiteboard
Friendliness
Easy to design and modeldirect representation of the model
Property Graph Data Model
• 2 Main Components:
• Nodes
• Relationships
• Additional Components:
• Labels

• Properties
Property Graph Data Model
• Nodes:
• Represent the objects in the graph
• Can be categorized using Labels
Car
Person Person
Property Graph Data Model
• Nodes:
• Represent the objects in the graph
• Can be categorized using Labels
• Relationships:
• Relate nodes by type and direction
Car
DRIVES
LOVES
LOVES
LIVES WITH
OW
NS
Person Person
Property Graph Data Model
• Nodes:
• Represent the objects in the graph
• Can be categorized using Labels
• Relationships:
• Relate nodes by type and direction

• Properties:
• Name-value pairs that can be applied
to nodes or relationships
Car
DRIVES
LOVES
LOVES
LIVES WITH
OW
NS
Person Person
name: “Dan”
born: May 29, 1970
twitter: “@dan”
name: “Ann”
born: Dec 5, 1975
since:
Jan 10, 2011
brand: “Volvo”
model: “V70”
Tools for data modeling…
• Arrows tool: 

• http://www.apcjones.com/arrows/

• Developer guides: 

• https://neo4j.com/developer/data-modeling/

• GraphGists: 

• https://neo4j.com/graphgists/

• Community Site: 

• https://community.neo4j.com/

• Training - Data Modeling course: 

• https://neo4j.com/graphacademy/
Applied to our scenario
Whiteboard friendliness
Whiteboard friendliness
title: The Lord of the Rings…
released: 2003
Movie
Cast
name: Orlando Bloom
name: Frodo Baggins
Character
PLAYED
APPEARS_IN
name: Elijah Wood
Cast
Character
name: Legolas
Character
name: Aragorn
name: Viggo Mortensen
Cast
PLAYED
PLAYED
APPEARS_IN
APPEARS_IN
Whiteboard friendliness
Importing Data
Options for Importing Data
• Cypher statements / script: create individual statements to load data manually
• LOAD CSV: used for small and medium data sets can import local or online csv files to graph

• ETL Tool: can import from a relational database and maps relational data model to graph

• Kettle: can import massive amounts of data from a variety of sources

• APOC: standard library that includes several import procedures for different data formats

• Neo4j-admin import tool: command-line interface for large amounts of data

• Import programmatically from drivers: interact via preferred programming language
Cypher Query Language….
SQL for graphs
Tools for Cypher…
• Cypher quick-reference: 

• https://neo4j.com/docs/cypher-refcard/current/

• Developer guides: 

• https://neo4j.com/developer/cypher/

• Cypher manual: 

• https://neo4j.com/docs/cypher-manual/current/

• Community Site: 

• https://community.neo4j.com/

• Resources list: 

• https://neo4j.com/developer/cypher-resources/
Cypher: Powerful and Expressive
CREATE (:Person { name:“Dan”}) -[:LOVES]-> (:Person { name:“Ann”})
LOVES
Dan Ann
LABEL PROPERTY
NODE NODE
LABEL PROPERTY
Cypher: Powerful and Expressive
LOVES
Dan Ann
MATCH (:Person { name:"Dan"} ) -[:LOVES]-> ( whom ) 

RETURN whom
Cypher in 20 sec…
• Nodes look like this: 

• (var:Label) OR (var:Label { propKey: propValue })

• Relationships look like this:

• -[var:REL_TYPE]-> or -[var:REL_TYPE { propKey: propValue }]-

• Using Cypher is just looking for particular patterns of those nodes/rels

• (var1:Label)-[var2:REL_TYPE]->(var3:Label)
How do we want to import our
data?
Cypher statements/script
MERGE (m:Movie {id: 100})
ON CREATE SET m.title = “The Lord of the Rings: The Fellowship of the Ring”,
m.releaseDate = date(‘2001-12-19’)…
MERGE (c:Character {id: 300})
ON CREATE SET m.name = “Legolas”…
MERGE (c)-[:APPEARED_IN]->(m)
….
LOAD CSV
LOAD CSV WITH HEADERS FROM “file:///movies.csv” as row
MERGE (m:Movie {id: row.movieId})
ON CREATE SET m.title = row.title, m.releaseDate = date(row.released)…
….
LOAD CSV WITH HEADERS FROM “file:///movieCharacters.csv” as row
MATCH (m:Movie {id: row.movieId})
WITH m, row
MERGE (c:Character {id: row.id})
ON CREATE SET m.name = row.name …
MERGE (c)-[:APPEARED_IN]->(m)
….
ETL Tool
Kettle
APOC
WITH "https://bestmovies.com/" as url
CALL apoc.load.json(url) YIELD value
UNWIND value.results AS results
WITH results
MERGE (m:Movie {id: results.id})
ON CREATE SET m.title = results.title, m.releaseDate = date(results.released)…
….
APOC fave procs
• apoc.load.json(url) / apoc.load.csv(file) / apoc.load.xml(file) / apoc.load.jdbc(url)
• Procedures to load various kinds of data
• Can handle flat files or url paths (locally or remote)
• Excellent when you need transformations with data load
• apoc.periodic.iterate(‘cypher1’, ’cypher2’, {parms})
• For each result in cypher1 statement, run cypher2 statement on them
• Helpful for selecting a segment for update
• apoc.do.when(condition, query, else, {parms})
• Handles transformation for substituting values
• Used for a variety of functions, but here is good for cleaning data
• apoc.date.format(dateType, “precision”, ‘format’)
• Can output date in a variety of formats for display or querying
• Very helpful pulling or pushing date/time value into/out of Neo4j
Tools for APOC…
• Docs: 

• https://neo4j-contrib.github.io/neo4j-apoc-
procedures/

• Developer guides: 

• https://neo4j.com/developer/neo4j-apoc/

• Community Site: 

• https://community.neo4j.com/

• YouTube videos: 

• https://www.youtube.com/watch?
v=V1DTBjetIfk&list=PL9Hl4pk2FsvXEww23
lDX_owoKoqqBQpdq
Getting an instance of Neo4j
Free Tools for Running Neo4j…
• Sandbox: 

• https://neo4j.com/sandbox-v2/

• Neo4j Desktop (local instance): 

• https://neo4j.com/download/

• Server install (open source): 

• https://neo4j.com/download-center/#community

• In the Cloud: 

• https://neo4j.com/developer/guide-cloud-
deployment/

• Docker: 

• https://hub.docker.com/_/neo4j
Getting our data imported…
//Load Movie objects that are wanted
WITH 'https://api.themoviedb.org/3/search/movie?api_key='+
$apiKey+'&query=Lord%20of%20the%20Rings' as url
CALL apoc.load.json(url)
YIELD value
UNWIND value.results AS results
WITH results
MERGE (m:Movie {movieId: results.id})

ON CREATE SET m.title = results.title, m.desc = results.overview, m.poster =
results.poster_path, m.reviewStars = results.vote_average, m.reviews = results.vote_count
WITH results, m
CALL apoc.do.when(results.release_date = "",
'SET m.releaseDate = null',
'SET m.releaseDate = date(results.release_date)',
{m:m, results:results}) YIELD value
RETURN m
//For Movie objects just loaded, pick out trilogy and retrieve cast of those movies
WITH 'https://api.themoviedb.org/3/movie/' as prefix, '/credits?api_key='+$apiKey as suffix,
["The Lord of the Rings: The Fellowship of the Ring", "The Lord of the Rings: The Two Towers",
"The Lord of the Rings: The Return of the King"] as movies
CALL apoc.periodic.iterate('MATCH (m:Movie) WHERE m.title IN $movies RETURN m',
'WITH m CALL apoc.load.json($prefix+m.movieId+$suffix) YIELD value
UNWIND value.cast AS cast
MERGE (c:Cast {id: cast.id})
ON CREATE SET c.name = cast.name
MERGE (ch:Character {name: cast.character})
MERGE (ch)-[r:APPEARS_IN]->(m)
MERGE (c)-[r1:PLAYED]->(ch)',
{batchSize: 1, iterateList:false, params:{movies:movies, prefix:prefix, suffix:suffix}});
Writing Queries
Let’s Query Our Data!
Other ways to query and explore
• Make calls from an application

• Neo4j drivers for almost any programming language

• Java, Python, Javascript, Go, Ruby, PHP

• Visualization tools

• Open source and proprietary

• Neovis, Browser, Bloom, 3d-force-graph, Kineviz, yWorks
Fitting into Architecture
Will it play nice?
• Integrations, integrations, integrations!

• Out-of-the-box plugins (APOC, GraphQL, graph algorithms)

• Custom extensions possible

• Tons of options for feeding data to existing tools/systems

• Tableau, Kettle, Kafka, ElasticSearch, other DBs, Spark, and many more
Sharing the value
What can I show to others?
• Neo4j Bloom (or partner/open source visualization tools)

• Exploration tool for business users to query with natural language

• Basic reports and query performance

• Build according to specs and compare solutions, just as you would with any technology
evaluation

• Use cases and success stories

• https://neo4j.com/resources

• Possible integrations and minimal interruption of existing systems

• What tools are you using today? Does our integration fit neatly?

• Community and support network!

• Support agreement or fabulous expert community answers to questions
Recap!
@JMHReif
jennifer.reif@neo4j.com

Weitere ähnliche Inhalte

Ähnlich wie There and Back Again, A Developer's Tale

Graph Databases for SQL Server Professionals
Graph Databases for SQL Server ProfessionalsGraph Databases for SQL Server Professionals
Graph Databases for SQL Server ProfessionalsStéphane Fréchette
 
Intro to Neo4j and Graph Databases
Intro to Neo4j and Graph DatabasesIntro to Neo4j and Graph Databases
Intro to Neo4j and Graph DatabasesNeo4j
 
Graph databases for SQL Server profesionnals
Graph databases for SQL Server profesionnalsGraph databases for SQL Server profesionnals
Graph databases for SQL Server profesionnalsMSDEVMTL
 
web2py:Web development like a boss
web2py:Web development like a bossweb2py:Web development like a boss
web2py:Web development like a bossFrancisco Ribeiro
 
Busy Developers Guide to AngularJS (Tiberiu Covaci)
Busy Developers Guide to AngularJS (Tiberiu Covaci)Busy Developers Guide to AngularJS (Tiberiu Covaci)
Busy Developers Guide to AngularJS (Tiberiu Covaci)ITCamp
 
GraphTour - Neo4j Database Overview
GraphTour - Neo4j Database OverviewGraphTour - Neo4j Database Overview
GraphTour - Neo4j Database OverviewNeo4j
 
Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015StampedeCon
 
Graph database Use Cases
Graph database Use CasesGraph database Use Cases
Graph database Use CasesMax De Marzi
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Derek Jacoby
 
01 introduction to entity framework
01   introduction to entity framework01   introduction to entity framework
01 introduction to entity frameworkMaxim Shaptala
 
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...
DEVNET-2002	Coding 201: Coding Skills 201: Going Further with REST and Python...DEVNET-2002	Coding 201: Coding Skills 201: Going Further with REST and Python...
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...Cisco DevNet
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jCorie Pollock
 
Relational to Graph - Import
Relational to Graph - ImportRelational to Graph - Import
Relational to Graph - ImportNeo4j
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDBDenny Lee
 
SQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsSQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsMike Broberg
 
drupal 7 amfserver presentation: integrating flash and drupal
drupal 7 amfserver presentation: integrating flash and drupaldrupal 7 amfserver presentation: integrating flash and drupal
drupal 7 amfserver presentation: integrating flash and drupalrolf vreijdenberger
 
Silicon Valley Code Camp 2016 - MongoDB in production
Silicon Valley Code Camp 2016 - MongoDB in productionSilicon Valley Code Camp 2016 - MongoDB in production
Silicon Valley Code Camp 2016 - MongoDB in productionDaniel Coupal
 

Ähnlich wie There and Back Again, A Developer's Tale (20)

Neo4j in Depth
Neo4j in DepthNeo4j in Depth
Neo4j in Depth
 
Graph Databases for SQL Server Professionals
Graph Databases for SQL Server ProfessionalsGraph Databases for SQL Server Professionals
Graph Databases for SQL Server Professionals
 
Intro to Neo4j and Graph Databases
Intro to Neo4j and Graph DatabasesIntro to Neo4j and Graph Databases
Intro to Neo4j and Graph Databases
 
Graph databases for SQL Server profesionnals
Graph databases for SQL Server profesionnalsGraph databases for SQL Server profesionnals
Graph databases for SQL Server profesionnals
 
web2py:Web development like a boss
web2py:Web development like a bossweb2py:Web development like a boss
web2py:Web development like a boss
 
05 entity framework
05 entity framework05 entity framework
05 entity framework
 
Busy Developers Guide to AngularJS (Tiberiu Covaci)
Busy Developers Guide to AngularJS (Tiberiu Covaci)Busy Developers Guide to AngularJS (Tiberiu Covaci)
Busy Developers Guide to AngularJS (Tiberiu Covaci)
 
GraphTour - Neo4j Database Overview
GraphTour - Neo4j Database OverviewGraphTour - Neo4j Database Overview
GraphTour - Neo4j Database Overview
 
Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015
 
Graph database Use Cases
Graph database Use CasesGraph database Use Cases
Graph database Use Cases
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
 
01 introduction to entity framework
01   introduction to entity framework01   introduction to entity framework
01 introduction to entity framework
 
01 introduction to entity framework
01   introduction to entity framework01   introduction to entity framework
01 introduction to entity framework
 
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...
DEVNET-2002	Coding 201: Coding Skills 201: Going Further with REST and Python...DEVNET-2002	Coding 201: Coding Skills 201: Going Further with REST and Python...
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4j
 
Relational to Graph - Import
Relational to Graph - ImportRelational to Graph - Import
Relational to Graph - Import
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 
SQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsSQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 Questions
 
drupal 7 amfserver presentation: integrating flash and drupal
drupal 7 amfserver presentation: integrating flash and drupaldrupal 7 amfserver presentation: integrating flash and drupal
drupal 7 amfserver presentation: integrating flash and drupal
 
Silicon Valley Code Camp 2016 - MongoDB in production
Silicon Valley Code Camp 2016 - MongoDB in productionSilicon Valley Code Camp 2016 - MongoDB in production
Silicon Valley Code Camp 2016 - MongoDB in production
 

Mehr von Neo4j

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansQIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansNeo4j
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...Neo4j
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosNeo4j
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Neo4j
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsNeo4j
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j
 

Mehr von Neo4j (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansQIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge Graphs
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with Graph
 

Kürzlich hochgeladen

Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 

Kürzlich hochgeladen (20)

Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 

There and Back Again, A Developer's Tale

  • 1. There And Back Again… A Developer’s Tale By: Jennifer Reif Neo4j Developer Relations Engineer jennifer.reif@neo4j.com @JMHReif
  • 2. Who Am I? • Developer Relations Engineer for Neo4j • Continuous learner, developer, blogger • Conference speaker • Survivor of financial industry development Email: jennifer.reif@neo4j.com Twitter: @JMHReif
  • 3. We have a problem…
  • 4. We want to know… • What actors played which characters in Lord of the Rings movies • Other scenarios: • What employees have which skills for job openings in the company • What customers purchased which products and the suppliers • What patient was prescribed which medications from which doctors • What customers bought which vehicles from what dealerships/people
  • 5. Existing solutions are painful • Thousands of actors, employees, customers, patients, doctors, dealerships, skills, etc • Relational: • Great for reports and simple JOINs, but too many JOINs to go across 3 core tables and lookup tables with endless rows each • Document: • Great for pulling information about individual components, but linking properties across substructures is complicated • Key-value: • Great for bits of information very quickly, but aggregating and compiling lots of related data is arduous
  • 6. What is a Graph Database?
  • 8. Database - specifically graph • Database: a structured set of data held in a computer, especially one that is accessible in various ways. • Relational? NoSQL? Graph? • Graph database: uses graph structures for semantic queries with nodes, edges, and properties to represent and store data.
  • 10. –Wikipedia, “Graph Database”, Performance section “Execution of queries within a graph database is localized to a portion of the graph. It does not search through irrelevant data, making it advantageous for real-time big data analytical queries. Consequently, graph database performance is proportional to the size of the data needed to be traversed, staying relatively constant despite the growth of data stored.”
  • 13.
  • 14. What is it used to accomplish? Use Cases • Social networks • Impact analysis • Logistics and routing • Recommendations • Access control • Fraud analysis • …and many, many more!
  • 15. Lots of graph options… Why choose Neo4j?
  • 16. Neo4j is a database Neo4j Fast Reliable No size limit Binary & HTTP protocol ACID transactions 2-4 M
 ops/s per core Clustering scale & availability Official Drivers
  • 17. Neo4j is a graph database Neo4j Property Graph Model Native GraphDB Schema Free Graph Storage Cypher Query Language Developer Workbench Extensible Procedures & Functions Graph Visualization
  • 19. Whiteboard Friendliness Easy to design and modeldirect representation of the model
  • 20. Property Graph Data Model • 2 Main Components: • Nodes • Relationships • Additional Components: • Labels • Properties
  • 21. Property Graph Data Model • Nodes: • Represent the objects in the graph • Can be categorized using Labels Car Person Person
  • 22. Property Graph Data Model • Nodes: • Represent the objects in the graph • Can be categorized using Labels • Relationships: • Relate nodes by type and direction Car DRIVES LOVES LOVES LIVES WITH OW NS Person Person
  • 23. Property Graph Data Model • Nodes: • Represent the objects in the graph • Can be categorized using Labels • Relationships: • Relate nodes by type and direction • Properties: • Name-value pairs that can be applied to nodes or relationships Car DRIVES LOVES LOVES LIVES WITH OW NS Person Person name: “Dan” born: May 29, 1970 twitter: “@dan” name: “Ann” born: Dec 5, 1975 since: Jan 10, 2011 brand: “Volvo” model: “V70”
  • 24. Tools for data modeling… • Arrows tool: • http://www.apcjones.com/arrows/ • Developer guides: • https://neo4j.com/developer/data-modeling/ • GraphGists: • https://neo4j.com/graphgists/ • Community Site: • https://community.neo4j.com/ • Training - Data Modeling course: • https://neo4j.com/graphacademy/
  • 25. Applied to our scenario
  • 27. Whiteboard friendliness title: The Lord of the Rings… released: 2003 Movie Cast name: Orlando Bloom name: Frodo Baggins Character PLAYED APPEARS_IN name: Elijah Wood Cast Character name: Legolas Character name: Aragorn name: Viggo Mortensen Cast PLAYED PLAYED APPEARS_IN APPEARS_IN
  • 30. Options for Importing Data • Cypher statements / script: create individual statements to load data manually • LOAD CSV: used for small and medium data sets can import local or online csv files to graph • ETL Tool: can import from a relational database and maps relational data model to graph • Kettle: can import massive amounts of data from a variety of sources • APOC: standard library that includes several import procedures for different data formats • Neo4j-admin import tool: command-line interface for large amounts of data • Import programmatically from drivers: interact via preferred programming language
  • 32. Tools for Cypher… • Cypher quick-reference: • https://neo4j.com/docs/cypher-refcard/current/ • Developer guides: • https://neo4j.com/developer/cypher/ • Cypher manual: • https://neo4j.com/docs/cypher-manual/current/ • Community Site: • https://community.neo4j.com/ • Resources list: • https://neo4j.com/developer/cypher-resources/
  • 33. Cypher: Powerful and Expressive CREATE (:Person { name:“Dan”}) -[:LOVES]-> (:Person { name:“Ann”}) LOVES Dan Ann LABEL PROPERTY NODE NODE LABEL PROPERTY
  • 34. Cypher: Powerful and Expressive LOVES Dan Ann MATCH (:Person { name:"Dan"} ) -[:LOVES]-> ( whom ) 
 RETURN whom
  • 35. Cypher in 20 sec… • Nodes look like this: • (var:Label) OR (var:Label { propKey: propValue }) • Relationships look like this: • -[var:REL_TYPE]-> or -[var:REL_TYPE { propKey: propValue }]- • Using Cypher is just looking for particular patterns of those nodes/rels • (var1:Label)-[var2:REL_TYPE]->(var3:Label)
  • 36. How do we want to import our data?
  • 37. Cypher statements/script MERGE (m:Movie {id: 100}) ON CREATE SET m.title = “The Lord of the Rings: The Fellowship of the Ring”, m.releaseDate = date(‘2001-12-19’)… MERGE (c:Character {id: 300}) ON CREATE SET m.name = “Legolas”… MERGE (c)-[:APPEARED_IN]->(m) ….
  • 38. LOAD CSV LOAD CSV WITH HEADERS FROM “file:///movies.csv” as row MERGE (m:Movie {id: row.movieId}) ON CREATE SET m.title = row.title, m.releaseDate = date(row.released)… …. LOAD CSV WITH HEADERS FROM “file:///movieCharacters.csv” as row MATCH (m:Movie {id: row.movieId}) WITH m, row MERGE (c:Character {id: row.id}) ON CREATE SET m.name = row.name … MERGE (c)-[:APPEARED_IN]->(m) ….
  • 41. APOC WITH "https://bestmovies.com/" as url CALL apoc.load.json(url) YIELD value UNWIND value.results AS results WITH results MERGE (m:Movie {id: results.id}) ON CREATE SET m.title = results.title, m.releaseDate = date(results.released)… ….
  • 42. APOC fave procs • apoc.load.json(url) / apoc.load.csv(file) / apoc.load.xml(file) / apoc.load.jdbc(url) • Procedures to load various kinds of data • Can handle flat files or url paths (locally or remote) • Excellent when you need transformations with data load • apoc.periodic.iterate(‘cypher1’, ’cypher2’, {parms}) • For each result in cypher1 statement, run cypher2 statement on them • Helpful for selecting a segment for update • apoc.do.when(condition, query, else, {parms}) • Handles transformation for substituting values • Used for a variety of functions, but here is good for cleaning data • apoc.date.format(dateType, “precision”, ‘format’) • Can output date in a variety of formats for display or querying • Very helpful pulling or pushing date/time value into/out of Neo4j
  • 43. Tools for APOC… • Docs: • https://neo4j-contrib.github.io/neo4j-apoc- procedures/ • Developer guides: • https://neo4j.com/developer/neo4j-apoc/ • Community Site: • https://community.neo4j.com/ • YouTube videos: • https://www.youtube.com/watch? v=V1DTBjetIfk&list=PL9Hl4pk2FsvXEww23 lDX_owoKoqqBQpdq
  • 45. Free Tools for Running Neo4j… • Sandbox: • https://neo4j.com/sandbox-v2/ • Neo4j Desktop (local instance): • https://neo4j.com/download/ • Server install (open source): • https://neo4j.com/download-center/#community • In the Cloud: • https://neo4j.com/developer/guide-cloud- deployment/ • Docker: • https://hub.docker.com/_/neo4j
  • 46. Getting our data imported…
  • 47. //Load Movie objects that are wanted WITH 'https://api.themoviedb.org/3/search/movie?api_key='+ $apiKey+'&query=Lord%20of%20the%20Rings' as url CALL apoc.load.json(url) YIELD value UNWIND value.results AS results WITH results MERGE (m:Movie {movieId: results.id})
 ON CREATE SET m.title = results.title, m.desc = results.overview, m.poster = results.poster_path, m.reviewStars = results.vote_average, m.reviews = results.vote_count WITH results, m CALL apoc.do.when(results.release_date = "", 'SET m.releaseDate = null', 'SET m.releaseDate = date(results.release_date)', {m:m, results:results}) YIELD value RETURN m
  • 48. //For Movie objects just loaded, pick out trilogy and retrieve cast of those movies WITH 'https://api.themoviedb.org/3/movie/' as prefix, '/credits?api_key='+$apiKey as suffix, ["The Lord of the Rings: The Fellowship of the Ring", "The Lord of the Rings: The Two Towers", "The Lord of the Rings: The Return of the King"] as movies CALL apoc.periodic.iterate('MATCH (m:Movie) WHERE m.title IN $movies RETURN m', 'WITH m CALL apoc.load.json($prefix+m.movieId+$suffix) YIELD value UNWIND value.cast AS cast MERGE (c:Cast {id: cast.id}) ON CREATE SET c.name = cast.name MERGE (ch:Character {name: cast.character}) MERGE (ch)-[r:APPEARS_IN]->(m) MERGE (c)-[r1:PLAYED]->(ch)', {batchSize: 1, iterateList:false, params:{movies:movies, prefix:prefix, suffix:suffix}});
  • 51. Other ways to query and explore • Make calls from an application • Neo4j drivers for almost any programming language • Java, Python, Javascript, Go, Ruby, PHP • Visualization tools • Open source and proprietary • Neovis, Browser, Bloom, 3d-force-graph, Kineviz, yWorks
  • 53. Will it play nice? • Integrations, integrations, integrations! • Out-of-the-box plugins (APOC, GraphQL, graph algorithms) • Custom extensions possible • Tons of options for feeding data to existing tools/systems • Tableau, Kettle, Kafka, ElasticSearch, other DBs, Spark, and many more
  • 55. What can I show to others? • Neo4j Bloom (or partner/open source visualization tools) • Exploration tool for business users to query with natural language • Basic reports and query performance • Build according to specs and compare solutions, just as you would with any technology evaluation • Use cases and success stories • https://neo4j.com/resources • Possible integrations and minimal interruption of existing systems • What tools are you using today? Does our integration fit neatly? • Community and support network! • Support agreement or fabulous expert community answers to questions