SlideShare a Scribd company logo
Neo4j	Basic	Training
Welcome	everyone	
	
Please	say	hi	to	each	other.	
We'll	spend	the	rest	of	the	day	together.
What	are	we	going	to	learn	today?	
•  Querying	graph	pa;erns	with	Cypher,		
•  Designing	and	implemen@ng	a	graph	database	model	
•  Evolving	an	exis@ng	graph	to	support	new	or	changed	requirements.
•  Intro	to	graphs	and	graph	modeling		
•  Evolving	the	graph	model	
•  Missing	domain	concept	
•  Rela@onship	bundling	
•  Modeling	guidelines	
What	are	we	going	to	do	today?
Op:onal	Modules	
•  Further	evolving	the	graph	model	
•  Specific	rela@onship	types	
•  Refactoring	large	graphs	
•  Mul@ple	models	
•  Your	turn
Thank	you	for	your	@me	
	
Any	other	ques@ons?	
	
Feedback	form:	bit.ly/neo-survey	gives	a	discount
Intro	to	graph	modeling
•  Intro	to	the	property	graph	model	
•  The	airport	dataset	
•  The	modeling	workflow	
•  Load	CSV	data	
What	are	we	going	to	do?
The	labelled	property	graph	
•  Nodes	
•  Rela@onships		
•  Proper@es		
•  Labels	
CAR	
name:	“Dan”	
born:	May	29,	1970	
twi;er:	“@dan”	
name:	“Ann”	
born:		Dec	5,	1975	
since:		
Jan	10,	2011	
brand:	“Volvo”	
model:	“V70”	
PERSON	 PERSON	
LOVES	
LOVES	
LIVES	WITH
CAR	
Property	Graph	Model	Components	
Nodes	
•  Represent	the	objects	in	the	graph	
•  Can	be	labeled	
PERSON	 PERSON
CAR	
Property	Graph	Model	Components	
Nodes	
• Represent	the	objects	in	the	
graph	
• Can	be	labeled	
Rela:onships	
•  Relate	nodes	by	type	and	direc-on	
LOVES	
LOVES	
LIVES	WITH	
PERSON	 PERSON
CAR	
name:	“Dan”	
born:	May	29,	1970	
twi;er:	“@dan”	
name:	“Ann”	
born:		Dec	5,	1975	
since:		
Jan	10,	2011	
brand:	“Volvo”	
model:	“V70”	
Property	Graph	Model	Components	
Nodes	
• Represent	the	objects	in	the	
graph	
•  Can	be	labeled	
Rela:onships	
• Relate	nodes	by	type	and	
direc-on	
Proper:es	
•  Name-value	pairs	that	can	go	on	
nodes	and	rela@onships.	
LOVES	
LOVES	
LIVES	WITH	
PERSON	 PERSON
The	modeling	workflow	
1. Derive the
question
2. Obtain the
data
3. Develop a
model
4. Ingest the
data
5. Query/Prove
our model
The	modeling	workflow	
1. Derive the
question
2. Obtain the
data
3. Develop a
model
4. Ingest the
data
5. Query/Prove
our model
The	Modeling	Workflow
Models
Find	the	most	popular	airports	
As	an	air	travel	enthusiast	I	want	to	know	how	airports	are	connected	
So	that	I	can	find	the	busiest	ones
The	flights	dataset
What	data	do	we	have?
Derive	ques:ons	
Is	Airport	A	connected	to	Airport	B?	
As	an	air	travel	enthusiast	I	want	to	know	how	airports	are	connected	
So	that	I	can	find	the	busiest	ones
Iden:ty	en::es	
Is	Airport	A	connected	to	Airport	B?	
	
airport
Iden:fy	rela:onships	between	en::es	
Is	Airport	A	connected	to	Airport	B?	
	
airport	CONNECTED_TO	airport
It’s	a	graph!	
Is	Airport	A	connected	to	Airport	B?	
	
(airport)-[:CONNECTED_TO]->(airport)
It’s	a	graph!	
Is	Airport	A	connected	to	Airport	B?	
	
(airport)-[:CONNECTED_TO]->(airport)
Labels	
Labels	are	for	categorizing	nodes.
Proper:es	
Proper@es	are	for	defining	a;ributes	of	nodes	or	rela@onships.		
We	need	an	airport	code	to	uniquely	iden@fy	each	airport.
Modeling	different	connec:ons	
Busy	airports	will	have	mul@ple	connec@ons	between		them.	We	can	
model	this	in	different	ways:	
	
As	an	air	travel	enthusiast	I	want	to	know	how	airports	are	connected	
So	that	I	can	find	the	busiest	ones
Sample	data
Copy	folders	
• import	
• plugins	
from	USB	S:ck	
to	the	default.graphdb	folder		
(or	$NEO4J_HOME)	
	
bit.ly/neo4j-modeling-data	
Prepare	your	Neo4j	graph.db	directory
1.  Start	the	server.	
2.  It	should	be	running	on:	http://localhost:7474		
3.  Log-in	with	default	creden@als		
user:	neo4j	password:	neo4j	
4.  Choose	a	new	password	
We’re	good	to	go!	
	
Make	sure	you’ve	got	Neo4j	running
Find	the	most	popular	airports	
Open	your	browser	to	http://localhost:7474	and	execute	the	following	
command:	
:play	https://guides.neo4j.com/modeling_airports
Play	the	guides	in	your	browser	un:l	you	see...
The	MERGE	command
MERGE	
The	MERGE	command	is	a	combina@on	of	MATCH	and	CREATE.	If	the	pa;ern	
already	exists	then	it	will	return	it;	if	not	it	will	create	it.	
en.wikipedia.org/wiki/Idempotence
MERGE	(las:Airport	{code:	"LAS"})	
RETURN	las	
	
We	can	MERGE	nodes...
...or	rela:onships...	
MATCH	(las:Airport	{code:	"LAS"})	
MATCH	(lax:Airport	{code:	"LAX"})	
MERGE	(las)-[:CONNECTED_TO]->(lax)
...or	both	
MERGE	(las:Airport	{code:	"LAS"})	
MERGE	(lax:Airport	{code:	"LAX"})	
MERGE	(las)-[:CONNECTED_TO]->(lax)	
	
MERGE	(las:Airport	{code:	"LAS"})-[:CONNECTED_TO]->(lax:Airport	
{code:	"LAX"})
Con:nue	playing	the	guide	
Con@nue	the	guide	in	your	browser
The	modeling	workflow
As	an	air	travel	enthusiast	
I	want	to	know	how	airports	are	connected	So	that	I	can	find	the	busiest	ones	
The	modeling	workflow	
MATCH	(origin:Airport	{code:	"LAX"})	
						-[flight:CONNECTED_TO]->	
						(destination:Airport	{code:	"LAS"})	
RETURN	origin,	destination,	flight	
LIMIT	10	
	
CREATE	(lax:Airport	{code:	"LAX"})	
CREATE	(las:Airport	{code:	"LAS"})	
CREATE	(las)-[connection:CONNECTED_TO	{		
				airline:	"WN",	
				flightNumber:	"82",	
				date:	"2008-1-3",	
				departure:	1715,	
				arrival:	1820}]->(lax)	
	
	
|---------+------+------------|	
|		Origin	|	Dest	|	FlightNum		|	
|---------+------+------------|	
|		IAD				|	TPA		|	335								|	
|		IAD				|	TPA		|	3231							|	
|		IND				|	BWI		|	448								|	
|		IND				|	BWI		|	3920							|	
|---------+------+------------|	
	
Is	Airport	A	connected	to	Airport	B?	
(airport)-[:CONNECTED_TO]->(airport)
Modeling	airports	
As	an	air	travel	enthusiast	I	want	to	know	how	airports	are	connected	
So	that	I	can	find	the	busiest	ones
Nodes	
As	an	air	travel	enthusiast	I	want	to	know	how	airports	are	connected	
So	that	I	can	find	the	busiest	ones
Labels	
As	an	air	travel	enthusiast	I	want	to	know	how	airports	are	connected	
So	that	I	can	find	the	busiest	ones
Rela:onships	
As	an	air	travel	enthusiast	I	want	to	know	how	airports	are	connected	
So	that	I	can	find	the	busiest	ones
Proper:es	
As	an	air	travel	enthusiast	I	want	to	know	how	airports	are	connected	
So	that	I	can	find	the	busiest	ones
Loading	CSV	data
Load	CSV	
A	clause	in	the	Cypher	query	language	that	lets	us	iterate	over	CSV	files	
and	create	graph	structures	based	on	the	data	contained	in	each	row.
Load	CSV	
LOAD	CSV					//	load	csv	data	
WITH	HEADERS	//	optionally	use	first	header	row	as	keys	in	"row"	map	
FROM	"url"			//	file://	URL	relative	to	$NEO4J_HOME/import	or	http://	
AS	row							//	return	each	row	of	the	CSV	as	list	of	strings	or	map	
//	...	rest	of	the	Cypher	statement	...
Load	CSV	
[USING	PERIODIC	COMMIT]	//	optionally	batch	transactions	
LOAD	CSV					//	load	csv	data	
WITH	HEADERS	//	optionally	use	first	header	row	as	keys	in	"row"	map	
FROM	"url"			//	file://	URL	relative	to	$NEO4J_HOME/import	or	http://	
AS	row							//	return	each	row	of	the	CSV	as	list	of	strings	or	map	
[FIELDTERMINATOR	";"]	//	optionally	alt.	delimiter	
//	...	rest	of	the	Cypher	statement	...
Consider	this	CSV	file	
|---------+------+------------|	
|		Origin	|	Dest	|	FlightNum		|	
|---------+------+------------|	
|		IAD				|	TPA		|	335								|	
|		IAD				|	TPA		|	3231							|	
|		IND				|	BWI		|	448								|	
|		IND				|	BWI		|	3920							|	
|---------+------+------------|
Create	nodes	
LOAD	CSV	WITH	HEADERS	FROM	"file:///flights.csv"	AS	row	
CREATE	(:Airport	{code:	row.Origin})	
CREATE	(:Airport	{code:	row.Dest})	
	
|---------+------+------------|	
|		Origin	|	Dest	|	FlightNum		|	
|---------+------+------------|	
|		IAD				|	TPA		|	335								|	
|		IAD				|	TPA		|	3231							|	
|		IND				|	BWI		|	448								|	
|		IND				|	BWI		|	3920							|	
|---------+------+------------|
Create	rela:onships	
LOAD	CSV	WITH	HEADERS	FROM	"file:///flights.csv"	AS	row	
CREATE	(origin:Airport	{code:	row.Origin})	
CREATE	(destination:Airport	{code:	row.Dest})	
CREATE	(origin)-[:CONNECTED_TO	{flightNumber:	row.FlightNum}]->(destination)	
	
|---------+------+------------|	
|		Origin	|	Dest	|	FlightNum		|	
|---------+------+------------|	
|		IAD				|	TPA		|	335								|	
|		IAD				|	TPA		|	3231							|	
|		IND				|	BWI		|	448								|	
|		IND				|	BWI		|	3920							|	
|---------+------+------------|
Find	exis:ng	nodes	and	rela:onships	
LOAD	CSV	WITH	HEADERS	FROM	"file:///flights.csv"	AS	row	
MATCH	(origin:Airport	{code:	row.Origin})	
MATCH	(destination:Airport	{code:	row.Dest})	
MATCH	(origin)-[:CONNECTED_TO	{flightNumber:	row.FlightNum}]->(destination)	
...	
|---------+------+------------|	
|		Origin	|	Dest	|	FlightNum		|	
|---------+------+------------|	
|		IAD				|	TPA		|	335								|	
|		IAD				|	TPA		|	3231							|	
|		IND				|	BWI		|	448								|	
|		IND				|	BWI		|	3920							|	
|---------+------+------------|
Update	exis:ng	nodes	and	rela:onships	
|---------+------+-----------+----------------|	
|		Origin	|	Dest	|	FlightNum	|	UniqueCarrier		|	
|---------+------+-----------+----------------|	
|		IAD				|	TPA		|	335							|	WN													|	
|		IAD				|	TPA		|	3231						|	WN													|	
|		IND				|	BWI		|	448							|	WN													|	
|		IND				|	BWI		|	3920						|	WN													|	
|---------+------+-----------+----------------|	
	
LOAD	CSV	WITH	HEADERS	FROM	"file:///flights.csv"	AS	row	
MATCH	(origin:Airport	{code:	row.Origin})	
MATCH	(destination:Airport	{code:	row.Dest})	
MATCH	(origin)-[c:CONNECTED_TO	{flightNumber:row.FlightNum}]->(destination)	
SET	c.airline	=	row.UniqueCarrier
Idempotently	create	nodes	and	rela:onships	
LOAD	CSV	WITH	HEADERS	FROM	"file:///flights.csv"	AS	row	
MERGE	(origin:Airport	{code:	row.Origin})	
MERGE	(destination:Airport	{code:	row.Dest})	
MERGE	(origin)-[:CONNECTED_TO	{flightNumber:	row.FlightNum}]-
>(destination)	
	
|---------+------+------------|	
|		Origin	|	Dest	|	FlightNum		|	
|---------+------+------------|	
|		IAD				|	TPA		|	335								|	
|		IAD				|	TPA		|	3231							|	
|		IND				|	BWI		|	448								|	
|		IND				|	BWI		|	3920							|	
|---------+------+------------|
Let’s	give	it	a	try	
Con@nue	the	guide	in	your	browser
End	of	Module	
Intro	to	Graph	Modeling	
Ques:ons	?
Missing	domain	concept
What	are	we	going	to	do?	
•  Profile	queries	
•  Introduce	a	missing	concept	in	the	domain	
•  Constraints	and	indexes	
•  Write	our	first	refactoring	query
Start	playing	the	next	guide….	
...if	you	aren’t	playing	it	already	
	
	
:play	http://guides.neo4j.com/modeling_airports/02_flight.html
Profiling	queries
How	do	I	profile	a	query?	
By	prefixing	the	query	with:
EXPLAIN
shows	the	execu@on	plan	without	actually	execu@ng	it	or	returning	any	results.
How	do	I	profile	a	query?	
By	prefixing	the	query	with:
EXPLAIN
shows	the	execu@on	plan	without	actually	execu@ng	it	or	returning	any	results.
PROFILE
executes	the	statement	and	returns	the	results	along	with	profiling	informa@on.
How	do	I	profile	a	query?	
EXPLAIN	
MATCH	(origin:Airport)-[c:CONNECTED_TO]	
					->(destination:Airport)	
WHERE	destination.code	=	"LAS"	
RETURN	origin,	destination,	c	
LIMIT	10
How	do	I	profile	a	query?	
PROFILE	
MATCH	(origin:Airport)-[c:CONNECTED_TO]	
					->(destination:Airport)	
WHERE	destination.code	=	"LAS"	
RETURN	origin,	destination,	c	
LIMIT	10
PROFILE	
MATCH	(origin:Airport)-[c:CONNECTED_TO]	
					->(destination:Airport)	
WHERE	destination.code	=	"LAS"	
RETURN	origin,	destination,	c	
LIMIT	10	
	
	
Anatomy	of	an	execu:on	plan
Opera:ons	
Rows	come	in	
Do	some	work	
Rows	go	out
What’s	our	goal?	
At	a	high	level,	the	goal	is	
simple:	get	the	number	of	db	
hits	down.
What	is	a	database	hit?	
an	abstract	unit	of	storage	
engine	work.		
“
”
Let’s	profile	some	queries	
Con@nue	playing	the	guide	in	your	browser
Introducing	a	missing		
domain	concept
Introducing	a	missing	domain	concept	
Some@mes	we	design	a	model	and	amer	working	with	it	for	a	bit	we	
realise	that	we’ve	missed	an	important	domain	concept.
Introducing	a	missing	domain	concept	
Some@mes	we	design	a	model	and	amer	working	with	it	for	a	bit	we	
realise	that	we’ve	missed	an	important	domain	concept.	
	
In	our	case	we’re	missing	nodes	to	represent	Flights
Introducing	a	missing	domain	concept
Flight	as	a	first	class	ci:zen	
???
Flight	as	a	first	class	ci:zen	
MATCH		(o:Airport)-[:CONNECTED_TO]->(d:Airport)	
MERGE...
Constraints	and	indexes
Unique	Constraints	
We	create	unique	constraints	to:		
•  ensure	uniqueness		
•  allow	fast	lookup	of	nodes	which	match	label-property	pairs.
Unique	Constraints	
We	create	unique	constraints	to:		
•  ensure	uniqueness		
•  allow	fast	lookup	of	nodes	which	match	label-property	pairs.	
	
CREATE	CONSTRAINT	ON	(identifier:Label)	
ASSERT	identifier.property	IS	UNIQUE
This	is	the	first	of	the	refactoring	pa;erns	that	we’ll	encounter	today.	
We	have	this	pa;ern:	
	
(origin)-[:CONNECTED_TO]->(destination)	
And	we’ll	create	a	new	node	using	the	proper@es	of	the	CONNECTED_TO	
rela@onship:	
	
(origin)<-[:ORIGIN]-(flight)-[:DESTINATION]->(destination)	
	
Refactoring:	Derive	node	from	rela:onship
Indexes	
We	create	indexes	to:		
•  allow	fast	lookup	of	nodes	which	match	label-property	pairs.
Indexes	
We	create	indexes	to:		
•  allow	fast	lookup	of	nodes	which	match	label-property	pairs.	
	
CREATE	INDEX	ON	:Label(property)
What	gets	indexed?	
The	following	are	index	backed:	
•  Equality	
•  STARTS	WITH	
•  CONTAINS	
•  ENDS	WITH	
•  Range	searches	
•  (Non-)	existence	checks
How	are	indexes	used	in	neo4j?	
Indexes	are	only	used	to	find	the	star@ng	point	for	queries.		
Use	index	scans	to	look	up	rows	in	
tables	and	join	them	with	rows	
from	other	tables	
Use	indexes	to	find	the	star@ng	
points	for	a	query.		
Relational
Graph
Let’s	get	on	with	the	refactoring	
Con@nue	playing	the	guide	in	your	browser
End	of	Module	
Missing	Concept	
Ques:ons?
Rela:onship	Bundling
Rela:onship	Bundling	
So	far	we’ve	been	wri@ng	queries	from	the	perspec@ve	of	an	air	travel	
enthusiast.		
In	this	sec@on	we’re	going	to	evolve	the	model	based	on	the	needs	of	a	
frequent	traveller	who	wants	to	find	flights	on	a	specific	date.
What	are	we	going	to	do?	
•  Write	a	query	to	book	a	flight	on	a	specific	day	
•  Profile	our	flight	booking	query	
•  Op@mise	our	model	to	deal	with	this	query
Find	a	flight	to	book	
As	a	frequent	traveller	I	want	to	find	flights	from	<origin>	to	
<des@na@on>	on	<date>	So	that	I	can	book	my	business	flight
Start	playing	the	next	guide….	
...if	you	aren’t	playing	it	already	
	
	
:play	http://guides.neo4j.com/modeling_airports/03_flight_booking.html
Bundling	flight	rela:onships
Bundling	flight	rela:onships	by	airport	day	
Searching	for	flights	by	day	is	a	bit	problema@c.	We	have	to	scan	every	
rela@onship	between	origin	and	des@na@on	airports	and	analyse	
proper@es	on	each	flight	to	work	out	which	ones	we’re	interested	in.
Bundling	flight	rela:onships	by	airport	day	
Searching	for	flights	by	day	is	a	bit	problema@c.	We	have	to	scan	every	
rela@onship	between	origin	and	des@na@on	airports	and	analyse	
proper@es	on	each	flight	to	work	out	which	ones	we’re	interested	in.	
We	can	reduce	this	problem	by	bundling	flights	together	by	
AirportDay
Our	current	model
Introducing	AirportDay
Refactoring	to	Airport	Day	
???
Bundling	flight	rela:onships	by	airport	day
Refactoring:	Derive	node	from	property	
This	refactoring	creates	a	new	node	using	the	property	of	an	exis@ng	node.	
We	currently	have	this	pa;ern:	
	
(origin)<-[:ORIGIN]-(flight)-[:DESTINATION]->(destination)	
And	we’ll	create	a	new	node	using	the	date	property	of	the	flight	node:	
	
(origin)-[:HAS_DAY]->(originAirportDay)<-[:ORIGIN]-(flight),	
(destination)-[:HAS_DAY]->(destAirportDay)<-[:DESTINATION]-(flight)
Let’s	get	on	with	the	refactoring	
Over	to	you!
End	of	Module	
Bundling	Rela:onships	
Ques:ons?
Modeling	Guidelines
•  Recap	of	the	Property	Graph	Model	
•  Modeling	choices	
•  Refactorings	
What	are	we	going	to	do?
Nodes,	rela:onships,		
labels,	proper:es
Our	model
Nodes	are	for	things
Labels	for	grouping
Rela:onships	for	structure
Proper:es	for	a]ributes
Modeling	choices
Properties vs.
Relationships
Proper:es	vs	Rela:onships
We	only	need	to	pull	out	a	node	if	we’re	going	to	query	through	it,	
otherwise	a	property	will	suffice.	
	
But	if	we	pull	out	every	single	property	then	we	end	up	with	an	RDF	
model	and	lose	the	benefit	of	the	property	graph	
Proper:es	vs	Rela:onships
Relationship
Granularity
Rela:onship	Granularity
Symmetric
Relationships
Symmetric	rela:onships	
OR
Bidirectional
Relationships
Bidirec:onal	rela:onships
No	need	to	have	the	rela:onship	in	both	direc:ons
Use	single	rela:onship	and	ignore	direc:on	in	queries	
MATCH	(:Person	{name:'Eric'})-[:MARRIED_TO]-(p2)	
RETURN	p2
General vs. Specific
Relationships
General	Rela:onships
General:	Find	flights	on	a	specific	date	
MATCH	(origin:Airport	{code:	"LAS"})-[:HAS_DAY]->(originDay:AirportDay),	
						(originDay)<-[:ORIGIN]-(flight:Flight),	
						(flight)-[:DESTINATION]->(destinationDay),	
						(destinationDay:AirportDay)<-[:HAS_DAY]-(destination:Airport	{code:	"MDW"})	
	
WHERE	originDay.date	=	"2008-1-3"	AND	destinationDay.date	=	"2008-1-3"	
	
RETURN	flight.date,	flight.number,	flight.airline,	flight.departure,	flight.arrival	
	
ORDER	BY	flight.date,	flight.departure
Specific	Rela:onships
Specific:	Find	flights	on	a	specific	date	
MATCH	(origin:Airport	{code:	"LAS"})-[:`2008-1-3`]->(originDay:AirportDay),	
						(originDay)<-[:ORIGIN]-(flight:Flight),	
						(flight)-[:DESTINATION]->(destinationDay),	
						(destinationDay:AirportDay)<-[:`2008-1-3`]-(destination:Airport	{code:	"MDW"})	
	
RETURN	flight.date,	flight.number,	flight.airline,	flight.departure,	flight.arrival	
	
ORDER	BY	flight.date,	flight.departure;
General:	Find	flights	by	year	and	month	
MATCH	(origin:Airport	{code:	"LAS"})-[:HAS_DAY]->(originDay:AirportDay),	
						(originDay)<-[:ORIGIN]-(flight:Flight)	
	
WHERE	originDay.date	STARTS	WITH	"2008-1"	
	
RETURN	flight.date,	flight.number,	flight.airline,	flight.departure,	flight.arrival	
	
ORDER	BY	flight.date,	flight.departure
Specific:	Find	flights	by	year	and	month	
MATCH	(origin:Airport	{code:	"LAS"})	
							-[:`2008-1-3`|:`2008-1-4`|:`2008-1-5`|:`2008-1-6`]->(originDay:AirportDay),	
						(originDay)<-[:ORIGIN]-(flight:Flight)	
	
RETURN	flight.date,	flight.number,	flight.airline,	flight.departure,	flight.arrival	
	
ORDER	BY	flight.date,	flight.departure
Best	of	both	worlds?
Refactorings
Derive	node	from	rela:onship	
(origin)-[:CONNECTED_TO]->(destination)	
	
	
	
(origin)<-[:ORIGIN]-(flight)-[:DESTINATION]->(destination)
Derive	node	from	property	
(origin)<-[:ORIGIN]-(flight)-[:DESTINATION]->(destination)	
	
	
	
(origin)-[:HAS_DAY]->(originAirportDay)<-[:ORIGIN]-(flight),	
(destination)-[:HAS_DAY]->(destAirportDay)<-[:DESTINATION]-(flight)
Derive	rela:onship	from	property	
(airport)-[:HAS_DAY]->(airportDay	{date:	"2008-1-3"})	
	
	
	
(airport)-[:`2008-1-3`]->(airportDay	{date:	"2008-1-3"})
Evolving the Model
Revealing	nodes
Revealing	nodes?	
?
End	of	Module	
Modeling	Guidelines	
Ques:ons	?

More Related Content

What's hot

Introduction to Neo4j - a hands-on crash course
Introduction to Neo4j - a hands-on crash courseIntroduction to Neo4j - a hands-on crash course
Introduction to Neo4j - a hands-on crash course
Neo4j
 
The openCypher Project - An Open Graph Query Language
The openCypher Project - An Open Graph Query LanguageThe openCypher Project - An Open Graph Query Language
The openCypher Project - An Open Graph Query Language
Neo4j
 

What's hot (20)

Neo4j Presentation
Neo4j PresentationNeo4j Presentation
Neo4j Presentation
 
Introduction to Neo4j and .Net
Introduction to Neo4j and .NetIntroduction to Neo4j and .Net
Introduction to Neo4j and .Net
 
Neo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use CasesNeo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use Cases
 
Neo4j Fundamentals
Neo4j FundamentalsNeo4j Fundamentals
Neo4j Fundamentals
 
NOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4jNOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4j
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4j
 
Neo4j Graph Use Cases, Bruno Ungermann, Neo4j
Neo4j Graph Use Cases, Bruno Ungermann, Neo4jNeo4j Graph Use Cases, Bruno Ungermann, Neo4j
Neo4j Graph Use Cases, Bruno Ungermann, Neo4j
 
Workshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceWorkshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data Science
 
Neo4j Graph Platform Overview, Kurt Freytag, Neo4j
Neo4j Graph Platform Overview, Kurt Freytag, Neo4jNeo4j Graph Platform Overview, Kurt Freytag, Neo4j
Neo4j Graph Platform Overview, Kurt Freytag, Neo4j
 
Introduction to Graphs with Neo4j
Introduction to Graphs with Neo4jIntroduction to Graphs with Neo4j
Introduction to Graphs with Neo4j
 
Intro to Cypher
Intro to CypherIntro to Cypher
Intro to Cypher
 
Top 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksTop 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & Tricks
 
RDBMS to Graph
RDBMS to GraphRDBMS to Graph
RDBMS to Graph
 
Introduction to Neo4j - a hands-on crash course
Introduction to Neo4j - a hands-on crash courseIntroduction to Neo4j - a hands-on crash course
Introduction to Neo4j - a hands-on crash course
 
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data ScienceGet Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
 
Natural Language Processing with Graph Databases and Neo4j
Natural Language Processing with Graph Databases and Neo4jNatural Language Processing with Graph Databases and Neo4j
Natural Language Processing with Graph Databases and Neo4j
 
Introduction to Graph Databases
Introduction to Graph DatabasesIntroduction to Graph Databases
Introduction to Graph Databases
 
Introduction to Neo4j
Introduction to Neo4jIntroduction to Neo4j
Introduction to Neo4j
 
Neo4j 4 Overview
Neo4j 4 OverviewNeo4j 4 Overview
Neo4j 4 Overview
 
The openCypher Project - An Open Graph Query Language
The openCypher Project - An Open Graph Query LanguageThe openCypher Project - An Open Graph Query Language
The openCypher Project - An Open Graph Query Language
 

Similar to Neo4j GraphDay Seattle- Sept19- neo4j basic training

Quarterly Technology Briefing, Manchester, UK September 2013
Quarterly Technology Briefing, Manchester, UK September 2013Quarterly Technology Briefing, Manchester, UK September 2013
Quarterly Technology Briefing, Manchester, UK September 2013
Thoughtworks
 

Similar to Neo4j GraphDay Seattle- Sept19- neo4j basic training (20)

Demolitions and Dali : Web Dev and Data in a Graph Database
Demolitions and Dali : Web Dev and Data in a Graph DatabaseDemolitions and Dali : Web Dev and Data in a Graph Database
Demolitions and Dali : Web Dev and Data in a Graph Database
 
Quarterly Technology Briefing, Manchester, UK September 2013
Quarterly Technology Briefing, Manchester, UK September 2013Quarterly Technology Briefing, Manchester, UK September 2013
Quarterly Technology Briefing, Manchester, UK September 2013
 
Intro to Graphs for Fedict
Intro to Graphs for FedictIntro to Graphs for Fedict
Intro to Graphs for Fedict
 
Build, Scale, and Deploy Deep Learning Pipelines Using Apache Spark
Build, Scale, and Deploy Deep Learning Pipelines Using Apache SparkBuild, Scale, and Deploy Deep Learning Pipelines Using Apache Spark
Build, Scale, and Deploy Deep Learning Pipelines Using Apache Spark
 
Introduction to graph databases in term of neo4j
Introduction to graph databases in term of neo4jIntroduction to graph databases in term of neo4j
Introduction to graph databases in term of neo4j
 
QTB Technology Lab - The Travel Domain, Beyond SQL, the Cloud, and more...
QTB Technology Lab - The Travel Domain, Beyond SQL, the Cloud, and more...QTB Technology Lab - The Travel Domain, Beyond SQL, the Cloud, and more...
QTB Technology Lab - The Travel Domain, Beyond SQL, the Cloud, and more...
 
Rapid Product Prototyping In Ordnance Survey
Rapid Product Prototyping In Ordnance SurveyRapid Product Prototyping In Ordnance Survey
Rapid Product Prototyping In Ordnance Survey
 
Relational to Big Graph
Relational to Big GraphRelational to Big Graph
Relational to Big Graph
 
Rails 3.1
Rails 3.1Rails 3.1
Rails 3.1
 
Trending with Purpose
Trending with PurposeTrending with Purpose
Trending with Purpose
 
Introducing Neo4j - Graph Databases • Beirut
Introducing Neo4j - Graph Databases • BeirutIntroducing Neo4j - Graph Databases • Beirut
Introducing Neo4j - Graph Databases • Beirut
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4j
 
GraphDb in XPages
GraphDb in XPagesGraphDb in XPages
GraphDb in XPages
 
State of the Map 2012 talk
State of the Map 2012 talkState of the Map 2012 talk
State of the Map 2012 talk
 
Graph of Thrones - Neo4j + Game of Thrones
Graph of Thrones - Neo4j + Game of Thrones Graph of Thrones - Neo4j + Game of Thrones
Graph of Thrones - Neo4j + Game of Thrones
 
Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"
 
DSD-INT 2014 - NGHS Workshop Scripting in SOBEK 3 & Delft3D Flexible Mesh - P...
DSD-INT 2014 - NGHS Workshop Scripting in SOBEK 3 & Delft3D Flexible Mesh - P...DSD-INT 2014 - NGHS Workshop Scripting in SOBEK 3 & Delft3D Flexible Mesh - P...
DSD-INT 2014 - NGHS Workshop Scripting in SOBEK 3 & Delft3D Flexible Mesh - P...
 
Building Applications with a Graph Database
Building Applications with a Graph DatabaseBuilding Applications with a Graph Database
Building Applications with a Graph Database
 
DubJug: Neo4J and Open Data
DubJug: Neo4J and Open DataDubJug: Neo4J and Open Data
DubJug: Neo4J and Open Data
 
PLAT-20 Building Alfresco Prototypes in a Few Hours
PLAT-20 Building Alfresco Prototypes in a Few HoursPLAT-20 Building Alfresco Prototypes in a Few Hours
PLAT-20 Building Alfresco Prototypes in a Few Hours
 

More from Neo4j

More from Neo4j (20)

GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
 
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
KLARNA -  Language Models and Knowledge Graphs: A Systems ApproachKLARNA -  Language Models and Knowledge Graphs: A Systems Approach
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
 
INGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignINGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by Design
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4j
 
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptxBT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
 
LARUS - Galileo.XAI e Gen-AI: la nuova prospettiva di LARUS per il futuro del...
LARUS - Galileo.XAI e Gen-AI: la nuova prospettiva di LARUS per il futuro del...LARUS - Galileo.XAI e Gen-AI: la nuova prospettiva di LARUS per il futuro del...
LARUS - Galileo.XAI e Gen-AI: la nuova prospettiva di LARUS per il futuro del...
 
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4jGraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
 
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphGraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
 
LARUS - Galileo.XAI e Gen-AI: la nuova prospettiva di LARUS per il futuro del...
LARUS - Galileo.XAI e Gen-AI: la nuova prospettiva di LARUS per il futuro del...LARUS - Galileo.XAI e Gen-AI: la nuova prospettiva di LARUS per il futuro del...
LARUS - Galileo.XAI e Gen-AI: la nuova prospettiva di LARUS per il futuro del...
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
 
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
 
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxFrom Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMs
 
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
 

Recently uploaded

527598851-ppc-due-to-various-govt-policies.pdf
527598851-ppc-due-to-various-govt-policies.pdf527598851-ppc-due-to-various-govt-policies.pdf
527598851-ppc-due-to-various-govt-policies.pdf
rajpreetkaur75080
 

Recently uploaded (15)

The Canoga Gardens Development Project. PDF
The Canoga Gardens Development Project. PDFThe Canoga Gardens Development Project. PDF
The Canoga Gardens Development Project. PDF
 
Getting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control TowerGetting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control Tower
 
123445566544333222333444dxcvbcvcvharsh.pptx
123445566544333222333444dxcvbcvcvharsh.pptx123445566544333222333444dxcvbcvcvharsh.pptx
123445566544333222333444dxcvbcvcvharsh.pptx
 
Oracle Database Administration I (1Z0-082) Exam Dumps 2024.pdf
Oracle Database Administration I (1Z0-082) Exam Dumps 2024.pdfOracle Database Administration I (1Z0-082) Exam Dumps 2024.pdf
Oracle Database Administration I (1Z0-082) Exam Dumps 2024.pdf
 
Eureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 PresentationEureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 Presentation
 
Writing Sample 2 -Bridging the Divide: Enhancing Public Engagement in Urban D...
Writing Sample 2 -Bridging the Divide: Enhancing Public Engagement in Urban D...Writing Sample 2 -Bridging the Divide: Enhancing Public Engagement in Urban D...
Writing Sample 2 -Bridging the Divide: Enhancing Public Engagement in Urban D...
 
Hi-Tech Industry 2024-25 Prospective.pptx
Hi-Tech Industry 2024-25 Prospective.pptxHi-Tech Industry 2024-25 Prospective.pptx
Hi-Tech Industry 2024-25 Prospective.pptx
 
Acorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutesAcorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutes
 
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
 
05232024 Joint Meeting - Community Networking
05232024 Joint Meeting - Community Networking05232024 Joint Meeting - Community Networking
05232024 Joint Meeting - Community Networking
 
527598851-ppc-due-to-various-govt-policies.pdf
527598851-ppc-due-to-various-govt-policies.pdf527598851-ppc-due-to-various-govt-policies.pdf
527598851-ppc-due-to-various-govt-policies.pdf
 
Bitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXOBitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXO
 
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
0x01 - Newton's Third Law:  Static vs. Dynamic Abusers0x01 - Newton's Third Law:  Static vs. Dynamic Abusers
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
 
Pollinator Ambassador Earth Steward Day Presentation 2024-05-22
Pollinator Ambassador Earth Steward Day Presentation 2024-05-22Pollinator Ambassador Earth Steward Day Presentation 2024-05-22
Pollinator Ambassador Earth Steward Day Presentation 2024-05-22
 
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
 

Neo4j GraphDay Seattle- Sept19- neo4j basic training