This is a simple spring demo application that connects to Neo4J graph database and executes some basic queries over initial demo dataset.
docker-compose up -d
-
Open neo4j dashboard in browser
http://localhost:7474
-
Copy initial load data into query input field and execute
This will create the movie graph!
Movie
Person
(:Person)-[:ACTED_IN]->(:Movie)
(:Person)-[:DIRECTED]->(:Movie)
(:Person)-[:FOLLOWS]->(:Movie)
(:Person)-[:PRODUCED]->(:Movie)
(:Person)-[:REVIEWED]->(:Movie)
(:Person)-[:WROTE]->(:Movie)
Purpose of this api is to test Neo4J and its features so only basic operations are implemented.
Open swagger in browser http://localhost:8080/swagger/swagger-ui.html
Api provides you following functionalities:
- List all movies for actor
- Find movie details by movie title
- Find all movies in database
- Find all actors in a movie
- Find all directors in database
- Find all review for a movie
Some of example queries to try on this dataset:
MATCH (tom {name: "Tom Hanks"})
RETURN tom
MATCH (people:Person)
RETURN people.name
LIMIT 10
MATCH (nineties:Movie) WHERE nineties.released >= 1990 AND nineties.released < 2000
RETURN nineties.title
MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies)
RETURN tom,tomHanksMovies
MATCH (cloudAtlas {title: "Cloud Atlas"})<-[:DIRECTED]-(directors)
RETURN directors.name
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors)
RETURN coActors.name
MATCH (bacon:Person {name:"Kevin Bacon"})-[*1..4]-(hollywood)
RETURN DISTINCT hollywood
MATCH p=shortestPath(
(bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"})
)
RETURN p
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
(coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cruise:Person {name:"Tom Cruise"})
RETURN tom, m, coActors, m2, cruise
MATCH (n) DETACH DELETE n