// To ensure you will not add double names: CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE // Adding data to the database // Add “Ann” and “Dan” to the database. Ann and Dan love each other. Ann owns a pet, “Sam”, and she drives Dan’s car. Use separate queries: CREATE (:Person{name:'Ann'}) – [:LOVES] ->(:Person {name:'Dan'}) MERGE (p:Person{name:'Ann'}) CREATE (p)-[:HAS_PET]->(:Dog {name:'Sam'}) MERGE (p:Person{name:'Ann'}), (dan:Person{name:'Dan'}) CREATE (p)-[:DRIVES]->(car:Car{brand:'Volvo'})<-[:OWNS]-(dan) // a very expensive query, since parts are not yet connected, so this will take time and uses lots of data. // NOTE: When you’ve made a mistake, or you’d like to redo.. This is the most efficient way to remove all data in the database (NOTE: later on you’d have to find more specific ways to delete, since you’ll lose all data this way): Match (n) DETACH DELETE n // You can also add them this way in separate queries: CREATE (ann:Person{name:'Ann'}) – [:LOVES] ->(dan:Person {name:'Dan'}) MERGE (ann:Person{name:'Ann'}) CREATE (ann)-[:HAS_PET]->(dog:Dog {name:'Sam'}) MERGE (ann:Person{name:'Ann'}) CREATE (ann)-[:DRIVES]->(car:Car {brand:'Volvo'}) MATCH (dan:Person {name:'Dan'}), ((car:Car {brand:'Volvo'})) MERGE (dan)<-[:OWNS]-(car) //Or add them all at once (as one query): CREATE (ann:Person{name:'Ann'}) – [:LOVES] ->(dan:Person {name:'Dan'}) CREATE (ann)-[:HAS_PET]->(dog:Dog {name:'Sam'}) CREATE (ann)-[:DRIVES]->(car:Car {brand:'Volvo'})<-[:OWNS]-(dan) // Adding all nodes separately, and then connect them with relationships: CREATE (ann:Person{name:'Ann', age:32}) CREATE (dan:Person {name:'Dan', age:33}) CREATE (sam:Dog {name:'Sam', gender:'male'}) CREATE (car:Car {brand:'Volvo'}) Match (ann:Person {name:'Ann'}),(dan:Person {name:'Dan'}) CREATE (ann)-[:LOVES]->(dan)<-[:LOVES]-(ann) Match (ann:Person{name:'Ann'}),(sam:Dog{name:'Sam'}) CREATE (ann)-[:HAS_PET]->(sam) Match (ann:Person{name:'Ann'}),(sam:Dog{name:'Sam'}) CREATE (sam)-[:PET_OF]->(ann) Match (ann:Person{name:'Ann'}), (dan:Person{name:'Dan'}), (car:Car{brand:'Volvo'}) CREATE (ann)-[:DRIVES]->(car)<-[:OWNS]-(dan) // To show all entries in the graph: MATCH (n) RETURN n // Now, we’ve had our fun. We can now create some more data and relationships: CREATE (jack:Person {name:'Jack', age:42, position:'manager'}) MATCH (jack:Person{name:'Jack'}), (dan:Person{name:'Dan'}) CREATE (jack) - [:BOSS_OF] -> (dan) MATCH (dan:Person{name:'Dan'}) CREATE (dan) - [:SUPERVISES] -> (jojo:Person {name:'Jojo', age:25, position:'student'}) CREATE (Inception:Movie{title:'Inception', director: 'Christopher Nolan'}) CREATE (DarkKnight:Movie {title:'The Dark Knight', director: 'Christopher Nolan'}) CREATE (beasts:Movie{title:'Fantastic Beasts: the crimes of Grindelwald', director: 'David Yates'}) CREATE (shawshank:Movie {title:'The Shawshank Redemption', director: 'Frank Darabont'}) CREATE (forrest:Movie {title:'Forrest Gump', director: 'Robert Zemeckis'}) CREATE (matrix:Movie {title:'The Matrix', director: 'Lana Wachowski & Lilly Wachowski'}) CREATE (Peter:User {name: 'Peter N', age:30}) CREATE (Ryan:User {name: 'Ryan A', age:20}) CREATE (Sam:User {name: 'Sam Sheldon', age:35}) CREATE (Inception)-[:RATED {rating:9}]->(Peter) CREATE (Inception)-[:RATED {rating:8}]->(Sam) CREATE (DarkKnight)-[:RATED {rating:6}]->(Peter) CREATE (DarkKnight)-[:RATED {rating:7}]->(Sam) // Add some more relationships: MATCH (sam:User {name: 'Sam Sheldon', age:35}), (dan:Person{name:'Dan', age:33}) CREATE (sam) - [:BROTHER] -> (dan) MATCH (ryan:User {name: 'Ryan A', age:20}), (jack:Person{name:'Jack', age:42}) CREATE (ryan) - [:BROTHER] -> (jack) MATCH (jojo:Person {name: 'Jojo'}), (peter:Person {name: 'Peter N'}) CREATE (jojo) - [:SISTER] -> (peter) // To make sure nodes for people are labelled the same (Person instead of User): MATCH (n:User) WHERE ID(n) IN [10, 11, 12] REMOVE n:User SET n:Person // Ryan is a true movie fanatic and rates all movies he’s been watching lately. Also, Sam and Dan rate some movies they watched: MATCH (ryan:Person {name: 'Ryan A', age:20}), (inception:Movie{title:'Inception'}) CREATE (ryan) - [:RATED{rating: 9}] -> (inception) MATCH (forrest:Movie{title:'Forrest Gump'}) CREATE (ryan) - [:RATED{rating: 7}] -> (forrest) MATCH (beasts:Movie {title:'Fantastic Beasts: the crimes of Grindelwald'}) CREATE (ryan) - [:RATED{rating: 8}] -> (beasts) MATCH (dark:Movie {title:'The Dark Knight'}) CREATE (ryan) - [:RATED{rating: 6}] -> (dark) MATCH (matrix:Movie {title:'The Matrix'}) CREATE (ryan) - [:RATED{rating: 10}] -> (matrix) MATCH (shawshank:Movie {title:'The Shawshank Redemption'}) CREATE (ryan) - [:RATED{rating: 9}] -> (shawshank) MATCH (sam:Person {name: 'Sam Sheldon', age: 35}) CREATE (sam) - [:RATED{rating: 9}] -> (beasts) MATCH (dan:Person {name: 'Dan'}) CREATE (dan) - [:RATED{rating: 9}] -> (beasts) // Make Jojo rate all movies with a 2: MATCH (jojo:Person {name: 'Jojo'}), (m:Movie) CREATE (jojo) - [:RATED {rating: 2}] -> (m)