SlideShare a Scribd company logo
1 of 62
Download to read offline
GraphAware
TM
Michal Bachman
graphaware.com
@graph_aware
Recommendations
with Neo4j
Building a high-performance recommendation engine
GraphAware
TM
Quick Intro
Why Graphs?
Business and Technical Challenges
GraphAware Recommendation Engine
About This Talk
GraphAware
TM
News you should read
Books you should buy
People you may know
People you should date
People you should market a product to


Recommendation Engines
GraphAware
TM
Content-based (features)
Collaborative ïŹltering (user <-> item relationships)
Recommendation Engines
GraphAware
TM
Features as well as relationships can be naturally
represented as a graph.
Good News
GraphAware
TM
Example
IS_OF_GENRE
title:
“Love Actually”
Movie
name: “Bob”
User
name:
“Comedy”
Genre
RATED
rating: 5
name: “Alice”
User
name:
“Romance”
Genre
title:
“American Pie”
Movie
IS_OF_GENRE
IS_OF_GENRE
RATEDrating: 5
INTERESTED_IN
rating: 5
RATED
GraphAware
TM
Easy to understand
Natural to model
Flexible (schema-free)
Fast to query
Graphs (Neo4j)
GraphAware
TM
Great for a quick PoC
Great for smaller data sets
Great for relatively simple logic
Cypher
GraphAware
TM
Cypher
MATCH
(u:User)-[:LIKED]->(m:Movie),
(m)<-[:LIKED]-(another:User),
(another)-[:LIKED]->(reco:Movie)
WHERE NOT
(u)-[:LIKED|DISLIKED]->(reco)
RETURN reco;
GraphAware
TM
Requirements of real-world recommendation
engines are often much more complex.
The Reality
GraphAware
TM
Imagine you’re building the ”people you may
know” feature on LinkedIn.
Example
GraphAware
TM
After a brainstorming session, your team came up
with the following ways of ïŹnding people one may
know:
Example
GraphAware
TM
Common contacts
Facebook friends in common
Email / mobile contacts in common
Each others email / mobile contact
Worked for the same company
Studied at the same school
Share the same interest
Live in the same city
People You May Know
GraphAware
TM
But that’s just the beginning! Let’s go back and
re-visit.
Example
GraphAware
TM
More contacts in common = better chance?
Same city / school / company = does size matter?
What about emails that don’t represent a person?
What about people already connected?
And pending

And rejected

And repeatedly ignored

People You May Know
GraphAware
TM
Finding things to recommend
Serving the most relevant recommendations
Measuring the quality of recommendations
Time to market / cost of development
Business Challenges
GraphAware
TM
Performance (real-time!)
Simplicity
Flexibility
Technical Challenges
GraphAware
TM
So we came up with an open-source
recommendation engine skeleton that will help you
solve all the challenges.
We’ve done it before
GraphAware
TM
plugin to Neo4j (uses GraphAware Framework)
you have to use a JVM-language
opinionated architecture
very fast
very ïŹ‚exible
handles all the plumbing
Recommendation Engine
GraphAware
TM
Engine per recommendation “reason” (core logic)
Engine executes a graph traversal to ïŹnd items
Engines are assembled into higher-level engines
Design Decisions
GraphAware
TM
Example
IS_OF_GENRE
title:
“Love Actually”
Movie
name: “Bob”
User
name:
“Comedy”
Genre
RATED
rating: 5
name: “Alice”
User
name:
“Romance”
Genre
title:
“American Pie”
Movie
IS_OF_GENRE
IS_OF_GENRE
RATEDrating: 5
INTERESTED_IN
rating: 5
RATED
GraphAware
TM
Engine per recommendation “reason” (core logic)
Engine executes a graph traversal to ïŹnd items
Engines are assembled to higher-level engines
Items discovered multiple times are more relevant
Relevance depends on how was item discovered
Design Decision
GraphAware
TM
Example
IS_OF_GENRE
title:
“Love Actually”
Movie
name: “Bob”
User
name:
“Comedy”
Genre
RATED
rating: 5
name: “Alice”
User
name:
“Romance”
Genre
title:
“American Pie”
Movie
IS_OF_GENRE
IS_OF_GENRE
RATEDrating: 5
INTERESTED_IN
rating: 5
RATED
GraphAware
TM
Engine per recommendation “reason” (core logic)
Engine executes a graph traversal to ïŹnd items
Engines are assembled to higher-level engines
Items discovered multiple times are more relevant
Relevance depends on how was item discovered
Items not to be recommended: “cross-cutting”
concern
Design Decisions
GraphAware
TM
Example
IS_OF_GENRE
title:
“Love Actually”
Movie
name: “Bob”
User
name:
“Comedy”
Genre
RATED
rating: 5
name: “Alice”
User
name:
“Romance”
Genre
title:
“American Pie”
Movie
IS_OF_GENRE
IS_OF_GENRE
RATEDrating: 5
INTERESTED_IN
rating: 5
RATED
GraphAware
TM
Input -> Engine -> Recommendations
Scores and Score Transformers
Blacklists
Filters
Post-processors
Context (how many, how fast,
?)
Loggers
Architecture
GraphAware
TM
In 5 minutes, we’ll build a simple engine that
recommends who you should be friends with.
Let’s Build Something
GraphAware
TM
0) Model
GraphAware
TM
1) Discover
GraphAware
TM
public class FriendsInCommon extends SomethingInCommon {‹
‹
@Override‹
public String name() {‹
return "friendsInCommon";‹
}‹
‹
@Override‹
protected RelationshipType getType() {‹
return FRIEND_OF;‹
}‹
‹
@Override‹
protected Direction getDirection() {‹
return BOTH;‹
}‹
}
GraphAware
TM
2) Score
GraphAware
TM
public class FriendsInCommon extends SomethingInCommon {‹
@Override‹
protected ScoreTransformer scoreTransformer() {‹
return new ParetoScoreTransformer(100, 10);‹
}‹
‹
@Override‹
public String name() {‹
return "friendsInCommon";‹
}‹
‹
@Override‹
protected RelationshipType getType() {‹
return FRIEND_OF;‹
}‹
‹
@Override‹
protected Direction getDirection() {‹
return BOTH;‹
}‹
}
GraphAware
TM
3) Post-Process
GraphAware
TM
public class RewardSameLocation extends RewardSomethingShared {‹
‹
@Override‹
protected RelationshipType type() {‹
return LIVES_IN;‹
}‹
‹
@Override‹
protected Direction direction() {‹
return OUTGOING;‹
}‹
‹
@Override‹
protected float scoreValue(Node reco, Node in, Node shared) {‹
return 10;‹
}‹
‹
@Override‹
protected String scoreName() {‹
return "sameLocation";‹
}‹
}
GraphAware
TM
public class RewardSameLabels implements PostProcessor<Node, Node> {‹
‹
@Override‹
public void postProcess(Recommendations<Node> out, Node in) {‹
Label[] inLabels = toArray(in.getLabels());‹
‹
for (Recommendation<Node> reco : out.get()) {‹
if (Arrays.equals(inLabels, toArray(reco.getItem().getLabels()))) {‹
reco.add("sameGender", 10);‹
}‹
}‹
}‹
}
GraphAware
TM
4) Filter
GraphAware
TM
public final class FriendsContextFactory extends Neo4jContextFactory {‹
‹
@Override‹
protected List<BlacklistBuilder<Node, Node>> blacklistBuilders() {‹
return asList(‹
new ExcludeSelf(),‹
new ExistingRelationshipBlacklistBuilder(FRIEND_OF, BOTH)‹
);‹
}‹
‹
@Override‹
protected List<Filter<Node, Node>> filters() {‹
return asList(‹
new ExcludeSelf()‹
);‹
}‹
}
GraphAware
TM
5) Assemble
GraphAware
TM
public final class FriendsComputingEngine extends Neo4jTopLevelDelegatingEngine {‹
‹
public FriendsComputingEngine() {‹
super(new FriendsContextFactory());‹
}‹
‹
@Override‹
protected List<RecommendationEngine<Node, Node>> engines() {‹
return asList(‹
new FriendsInCommon(),‹
new RandomPeople()‹
);‹
}‹
‹
@Override‹
protected List<PostProcessor<Node, Node>> postProcessors() {‹
return asList(‹
new RewardSameLabels(),‹
new RewardSameLocation(),‹
new PenalizeAgeDifference()‹
);‹
}‹
}
GraphAware
TM
?) Precompute
GraphAware
TM
public final class FriendsComputingEngine extends Neo4jTopLevelDelegatingEngine {‹
‹
public FriendsComputingEngine() {‹
super(new FriendsContextFactory());‹
}‹
‹
@Override‹
protected List<RecommendationEngine<Node, Node>> engines() {‹
return asList(‹
new FriendsInCommon(),‹
new RandomPeople()‹
);‹
}‹
‹
@Override‹
protected List<PostProcessor<Node, Node>> postProcessors() {‹
return asList(‹
new RewardSameLabels(),‹
new RewardSameLocation(),‹
new PenalizeAgeDifference()‹
);‹
}‹
‹
@Override‹
public ParticipationPolicy<Node, Node> participationPolicy(Context<Node, Node> context) {‹
return ParticipationPolicy.IF_MORE_RESULTS_NEEDED;‹
}‹
}
GraphAware
TM
public final class FriendsRecoEngine extends Neo4jTopLevelDelegatingEngine {‹
‹
public FriendsRecommendationEngine() {‹
super(new FriendsContextFactory());‹
}‹
‹
@Override‹
protected List<RecommendationEngine<Node, Node>> engines() {‹
return asList(‹
new Neo4jPrecomputedEngine(),‹
new FriendsComputingEngine()‹
);‹
}‹
}
GraphAware
TM
6) Log
GraphAware
TM
public final class FriendsRecoEngine extends Neo4jTopLevelDelegatingEngine {‹
‹
public FriendsRecommendationEngine() {‹
super(new FriendsContextFactory());‹
}‹
‹
@Override‹
protected List<RecommendationEngine<Node, Node>> engines() {‹
return asList(‹
new Neo4jPrecomputedEngine(),‹
new FriendsComputingEngine()‹
);‹
}‹
‹
@Override‹
protected List<Logger<Node, Node>> loggers() {‹
return asList( ‹
new Slf4jRecommendationLogger<Node, Node>(),‹
new Slf4jStatisticsLogger<Node, Node>()‹
);‹
}‹
}
GraphAware
TM
7) Test
GraphAware
TM
List<Recommendation<Node>> reco =‹
recommendationEngine.recommend(getPersonByName("Adam"), Mode.REAL_TIME, 2);‹
‹
String expected = ‹
"(Vince {total:19.338144," +‹
"ageDifference:-5.527864," +‹
"friendsInCommon:14.866008," +‹
"sameGender:10.0})," +‹
‹
"(Luanne {total:11.553411," +‹
"ageDifference:-3.312597," +‹
"friendsInCommon:14.866008})";‹
‹
assertEquals(expected, toString(reco));
GraphAware
TM
List<Recommendation<Node>> reco =
recommendationEngine.recommend(getPersonByName("Luanne"), REAL_TIME, 4);‹
‹
assertEquals("Daniela", reco.get(0).getItem().getProperty("name"));‹
assertEquals(22, reco.get(0).getScore().getTotalScore(), 0.5);‹
‹
assertEquals("Adam", reco.get(1).getItem().getProperty("name"));‹
assertEquals(12, reco.get(1).getScore().getTotalScore(), 0.5);‹
‹
assertEquals("Vince", reco.get(2).getItem().getProperty("name"));‹
assertEquals(8, reco.get(2).getScore().getTotalScore(), 0.5);‹
‹
assertEquals("Bob", reco.get(3).getItem().getProperty("name"));‹
assertEquals(-9, reco.get(3).getScore().getTotalScore(), 0.5);
GraphAware
TM
Finding things to recommend
Serving the most relevant recommendations
Measuring the quality of recommendations
Time to market / cost of development
Business Challenges
GraphAware
TM
Performance (real-time!)
Simplicity
Flexibility
Technical Challenges
GraphAware
TM
Getting Started
<dependencies>
...
<dependency>‹
<groupId>com.graphaware.neo4j</groupId>‹
<artifactId>recommendation-engine</artifactId>
<version>2.1.6.27.2</version>‹
</dependency>
...
<dependencies>
GraphAware
TM
Built-in ability to pre-compute recommendations
Other built-in base-classes
But we need your help!
https://github.com/graphaware/neo4j-reco
There’s More!
GraphAware
TM
Built-in algorithms
Time-based ParticipationPolicy
Integration with compute engines
Machine learning
Future
GraphAware
TM
GraphAware Framework makes it easy to build,
test, and deploy generic as well as domain-
speciïŹc functionality for Neo4j.
GraphAware Framework
GraphAware
TM
GraphUnit‹
& RestTest
RelCount WarmUp Schema (wip)
Recommendation
Engine
GraphAware Framework
ChangeFeed UUID TimeTree Algorithms NodeRank
GraphAware
TM
Open Source (GPL)
Active
Production Ready
Github: github.com/graphaware
Our Web: graphaware.com
Maven Central
GraphAware Framework
GraphAware
TM
Try it
Give us feedback
Contribute
Build your own modules
Get in touch for support / consultancy
GraphAware Framework
GraphAware
TM
GraphAware Events
31‹
Jan
Recommendation
Engines in Brussels
(FOSDEM)
31‹
Jan
GraphGen in Brussels
(FOSDEM)
5‹
Feb
Recommendation
Engines Webinar
5‹
Feb
Meetup at GraphAware
(build your own
Recommendation Engine)
10‹
Feb
Neo4j Fundamentals in
Manchester
10‹
Feb
Neo4j Meetup in
Manchester
17‹
Feb
Neo4j Fundamentals in
Edinburgh
17‹
Feb
Neo4j Meetup in
Edinburgh
GraphAware
TM
GraphConnect Europe 2015
When:
Where:
Tickets:
Call for Papers:
Sponsors:
Thursday, 7th May, 2015 - main Conference Day
Wednesday, 6th May 2015 - Training Day
Etc venues, 155 Bishopsgate, London
(next to Liverpool Street Station)
now available on www.graphconnect.com
199$ early bird plus 100$ for training
499$ full price plus 100$ for training
open now till 29th January
all Neo4j community members, customers or
general graph enthusiasts are invited to submit their talk
open now till 29th January, email:
gceurope@neotechnology.com
graphaware.com
@graph_aware
Thank You!
GraphAware
TM

More Related Content

What's hot

Building Recommendation Platforms with Hadoop
Building Recommendation Platforms with HadoopBuilding Recommendation Platforms with Hadoop
Building Recommendation Platforms with Hadoop
Jayant Shekhar
 

What's hot (7)

Semantic & Multilingual Strategies in Lucene/Solr: Presented by Trey Grainger...
Semantic & Multilingual Strategies in Lucene/Solr: Presented by Trey Grainger...Semantic & Multilingual Strategies in Lucene/Solr: Presented by Trey Grainger...
Semantic & Multilingual Strategies in Lucene/Solr: Presented by Trey Grainger...
 
Lazy man's learning: How To Build Your Own Text Summarizer
Lazy man's learning: How To Build Your Own Text SummarizerLazy man's learning: How To Build Your Own Text Summarizer
Lazy man's learning: How To Build Your Own Text Summarizer
 
Semantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/SolrSemantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/Solr
 
Key Lessons Learned Building Recommender Systems for Large-Scale Social Netw...
 Key Lessons Learned Building Recommender Systems for Large-Scale Social Netw... Key Lessons Learned Building Recommender Systems for Large-Scale Social Netw...
Key Lessons Learned Building Recommender Systems for Large-Scale Social Netw...
 
Behat - kilka scenariuszy co dalej
Behat - kilka scenariuszy co dalejBehat - kilka scenariuszy co dalej
Behat - kilka scenariuszy co dalej
 
Rank by time or by relevance - Revisiting Email Search
Rank by time or by relevance - Revisiting Email SearchRank by time or by relevance - Revisiting Email Search
Rank by time or by relevance - Revisiting Email Search
 
Building Recommendation Platforms with Hadoop
Building Recommendation Platforms with HadoopBuilding Recommendation Platforms with Hadoop
Building Recommendation Platforms with Hadoop
 

Viewers also liked

Riak Use Cases : Dissecting The Solutions To Hard Problems
Riak Use Cases : Dissecting The Solutions To Hard ProblemsRiak Use Cases : Dissecting The Solutions To Hard Problems
Riak Use Cases : Dissecting The Solutions To Hard Problems
Andy Gross
 
Redis use cases
Redis use casesRedis use cases
Redis use cases
Bottom Wang
 
Graph Based Machine Learning with Applications to Media Analytics
Graph Based Machine Learning with Applications to Media AnalyticsGraph Based Machine Learning with Applications to Media Analytics
Graph Based Machine Learning with Applications to Media Analytics
NYC Predictive Analytics
 

Viewers also liked (20)

Advanced Neo4j Use Cases with the GraphAware Framework
Advanced Neo4j Use Cases with the GraphAware FrameworkAdvanced Neo4j Use Cases with the GraphAware Framework
Advanced Neo4j Use Cases with the GraphAware Framework
 
Graph Based Recommendation Systems at eBay
Graph Based Recommendation Systems at eBayGraph Based Recommendation Systems at eBay
Graph Based Recommendation Systems at eBay
 
Scaling with Riak at Showyou
Scaling with Riak at ShowyouScaling with Riak at Showyou
Scaling with Riak at Showyou
 
Redis : Play buzz uses Redis
Redis : Play buzz uses RedisRedis : Play buzz uses Redis
Redis : Play buzz uses Redis
 
Modelling Data as Graphs (Neo4j)
Modelling Data as Graphs (Neo4j)Modelling Data as Graphs (Neo4j)
Modelling Data as Graphs (Neo4j)
 
An intro to Neo4j and some use cases (JFokus 2011)
An intro to Neo4j and some use cases (JFokus 2011)An intro to Neo4j and some use cases (JFokus 2011)
An intro to Neo4j and some use cases (JFokus 2011)
 
Riak Use Cases : Dissecting The Solutions To Hard Problems
Riak Use Cases : Dissecting The Solutions To Hard ProblemsRiak Use Cases : Dissecting The Solutions To Hard Problems
Riak Use Cases : Dissecting The Solutions To Hard Problems
 
Modelling Data in Neo4j (plus a few tips)
Modelling Data in Neo4j (plus a few tips)Modelling Data in Neo4j (plus a few tips)
Modelling Data in Neo4j (plus a few tips)
 
Redis use cases
Redis use casesRedis use cases
Redis use cases
 
Best Buy Web 2.0
Best Buy Web 2.0Best Buy Web 2.0
Best Buy Web 2.0
 
Introduction to Redis Data Structures: Sorted Sets
Introduction to Redis Data Structures: Sorted SetsIntroduction to Redis Data Structures: Sorted Sets
Introduction to Redis Data Structures: Sorted Sets
 
Redis and its many use cases
Redis and its many use casesRedis and its many use cases
Redis and its many use cases
 
Introduction to some top Redis use cases
Introduction to some top Redis use casesIntroduction to some top Redis use cases
Introduction to some top Redis use cases
 
The BestBuy.com Cloud Architecture
The BestBuy.com Cloud ArchitectureThe BestBuy.com Cloud Architecture
The BestBuy.com Cloud Architecture
 
Using Redis at Facebook
Using Redis at FacebookUsing Redis at Facebook
Using Redis at Facebook
 
Neo4j GraphTalks - EinfĂŒhrung in Graphdatenbanken
Neo4j GraphTalks - EinfĂŒhrung in GraphdatenbankenNeo4j GraphTalks - EinfĂŒhrung in Graphdatenbanken
Neo4j GraphTalks - EinfĂŒhrung in Graphdatenbanken
 
Graph Based Machine Learning with Applications to Media Analytics
Graph Based Machine Learning with Applications to Media AnalyticsGraph Based Machine Learning with Applications to Media Analytics
Graph Based Machine Learning with Applications to Media Analytics
 
Redis Use Patterns (DevconTLV June 2014)
Redis Use Patterns (DevconTLV June 2014)Redis Use Patterns (DevconTLV June 2014)
Redis Use Patterns (DevconTLV June 2014)
 
Neo4j the Anti Crime Database
Neo4j the Anti Crime DatabaseNeo4j the Anti Crime Database
Neo4j the Anti Crime Database
 
Neo4j GraphTalks Panama Papers
Neo4j GraphTalks Panama PapersNeo4j GraphTalks Panama Papers
Neo4j GraphTalks Panama Papers
 

Similar to Recommendations with Neo4j (FOSDEM 2015)

JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
Guillaume Laforge
 
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
Neo4j
 
Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010
Andres Almiray
 

Similar to Recommendations with Neo4j (FOSDEM 2015) (20)

JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
 
Intro to GraphQL on Android with Apollo DroidconNYC 2017
Intro to GraphQL on Android with Apollo DroidconNYC 2017Intro to GraphQL on Android with Apollo DroidconNYC 2017
Intro to GraphQL on Android with Apollo DroidconNYC 2017
 
Overview of GraphQL & Clients
Overview of GraphQL & ClientsOverview of GraphQL & Clients
Overview of GraphQL & Clients
 
Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)
 
Testing in AngularJS
Testing in AngularJSTesting in AngularJS
Testing in AngularJS
 
Play ĂĄ la Rails
Play ĂĄ la RailsPlay ĂĄ la Rails
Play ĂĄ la Rails
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
 
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
 
Groovy on Grails by Ziya Askerov
Groovy on Grails by Ziya AskerovGroovy on Grails by Ziya Askerov
Groovy on Grails by Ziya Askerov
 
Grails
GrailsGrails
Grails
 
Grails
GrailsGrails
Grails
 
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume LaforgeGroovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
 
Pragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScript
 
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
 
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac..."Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
 
Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010
 
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
 
JavaScript 2.0 in Dreamweaver CS4
JavaScript 2.0 in Dreamweaver CS4JavaScript 2.0 in Dreamweaver CS4
JavaScript 2.0 in Dreamweaver CS4
 
Developing Lightning Components for Communities.pptx
Developing Lightning Components for Communities.pptxDeveloping Lightning Components for Communities.pptx
Developing Lightning Components for Communities.pptx
 
Scripting Oracle Develop 2007
Scripting Oracle Develop 2007Scripting Oracle Develop 2007
Scripting Oracle Develop 2007
 

More from Michal Bachman (6)

GraphAware Framework Intro
GraphAware Framework IntroGraphAware Framework Intro
GraphAware Framework Intro
 
Intro to Neo4j (CZ)
Intro to Neo4j (CZ)Intro to Neo4j (CZ)
Intro to Neo4j (CZ)
 
(Big) Data Science
(Big) Data Science(Big) Data Science
(Big) Data Science
 
Neo4j Introduction at Imperial College London
Neo4j Introduction at Imperial College LondonNeo4j Introduction at Imperial College London
Neo4j Introduction at Imperial College London
 
Neo4j - Tales from the Trenches
Neo4j - Tales from the TrenchesNeo4j - Tales from the Trenches
Neo4j - Tales from the Trenches
 
WebExpo Prague 2012 - Introduction to Neo4j (Czech)
WebExpo Prague 2012 - Introduction to Neo4j (Czech)WebExpo Prague 2012 - Introduction to Neo4j (Czech)
WebExpo Prague 2012 - Introduction to Neo4j (Czech)
 

Recently uploaded

Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 

Recently uploaded (20)

Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 

Recommendations with Neo4j (FOSDEM 2015)