Chapter
Chapter 1: Graph Theory and Databases
Introducing Neo4j 3.x and a history of graphs
Definition and usage of the graph theory
The Property Graph model of graph databases
Why use graph databases, or not
Why use a graph database?
In-the-clickstream queries on live data
When not to use a graph database and what to use instead
Large set-oriented queries
Simple aggregate-oriented queries
Chapter 2: Getting Started with Neo4j
Key concepts and characteristics of Neo4j
Built for graphs from the ground up
Transactional ACID-compliant database
Made for online transaction processing
A declarative query language - Cypher
Sweet spot use cases of Neo4j
Complex join-intensive queries
Installing Neo4j on Windows
Installing Neo4j on Mac or Linux
Using Neo4j in a cloud environment
Using Neo4j in a Docker container
Running Neo4j in a Docker container
Chapter 3: Modeling Data for Neo4j
The four fundamental data constructs
How to start modeling for graph databases
What we know – ER diagrams and relational schemas
Introducing complexity through join tables
A graph model – a simple, high-fidelity model of reality
Graph modeling – best practices and pitfalls
Graph modeling best practices
Designing for query-ability
Aligning relationships with use cases
Looking for n-ary relationships
Using in-graph indexes when appropriate
Graph database modeling pitfalls
Node representing multiple concepts
Chapter 4: Getting Started with Cypher
Writing the Cypher syntax
Being crude with the data
Key operative words in Cypher
More that you need to know
With a little help from my friends
Chapter 5: Awesome Procedures on Cypher - APOC
Verifying APOC installation
A little help from a friend
Timeboxed execution of Cypher statements
Linking of a collection of nodes
Chapter 6: Extending Cypher
Building an extension project
HTTP and JAX-RS refreshers
Chapter 7: Query Performance Tuning
Explain and profile instructions
Chapter 8: Importing Data into Neo4j
Importing from a JSON source
Importing from a JDBC source
Importing all the systems
Importing from an XML source
Setting up OSM as provider
Setting up Google as provider
Importing OpenStreetMap data
The tougher way to import data
Understanding WKT and BBOX
Removing all the geo data
Authentication and authorization
Linking Neo4j to an LDAP directory
Configuring Neo4j to use LDAP
Chapter 11: Visualizations for Neo4j
The power of graph visualizations
Why graph visualizations matter!
Interacting with data visually
The basic principles of graph visualization
Open source visualization libraries
Integrating visualization libraries in your application
Keylines graph visualization
Tom Sawyer Software for graph visualization
Closing remarks on visualizations - pitfalls and issues
Chapter 12: Data Refactoring with Neo4j
Adding data with a default value
Adding data with specific values
The bolt+routing protocol
Chapter 14: Use Case Example - Recommendations
Recommender systems dissected
Using a graph model for recommendations
Specific query examples for recommendations
Recommendations based on product purchases
Recommendations based on brand loyalty
Recommendations based on social ties
Bringing it all together - compound recommendations
Business variations on recommendations
Social networking systems
Chapter 15: Use Case Example - Impact Analysis and Simulation
Impact analysis systems dissected
Impact analysis in business process management
Modeling your business as a graph
Which applications are used in which buildings?
Which buildings are affected if something happens to Appl_9?
What business processes with an RTO of 0-2 hours would be affected by a fire at location Loc_100?
Impact simulation in a cost calculation environment
Modeling your product hierarchy as a graph
Working with a product hierarchy graph
Calculating the price based on a full sweep of the tree
Calculating the price based on intermediate pricing
Impact simulation on product hierarchy
Appendix: Tips and Tricks
Getting the first line of a CSV file
Enabling SSH on a Raspberry Pi
Creating guides for the Neo4j browser