// Bibliotheque // ************************************************************ CREATE CONSTRAINT book_id_unique IF NOT EXISTS FOR (b:Book) REQUIRE b.id IS UNIQUE; LOAD CSV WITH HEADERS FROM 'file:///library/books.csv' AS row CREATE (:Book { id: row.id, title: row.title }); CREATE CONSTRAINT author_id_unique IF NOT EXISTS FOR (a:Author) REQUIRE a.id IS UNIQUE; LOAD CSV WITH HEADERS FROM 'file:///library/authors.csv' AS row CREATE (:Author { id: row.id, name: row.name }); LOAD CSV WITH HEADERS FROM 'file:///library/write.csv' as row MATCH (b:Book {id: row.id}) MATCH (a:Author {id: row.author}) CREATE (a)-[:WRITE]->(b); CREATE CONSTRAINT library_id_unique IF NOT EXISTS FOR (l:Library) REQUIRE l.id IS UNIQUE; LOAD CSV WITH HEADERS FROM 'file:///library/libraries.csv' AS row CREATE (:Bibliotheque { id: row.id }); LOAD CSV WITH HEADERS FROM 'file:///library/manages.csv' as row MATCH (b:Bibliotheque {id: row.id}) MATCH (p:Person {id: toInteger(row.manager)}) CREATE (p)-[:MANAGE]->(b); // Copies // ************************************************************ CREATE CONSTRAINT copy_id_unique IF NOT EXISTS FOR (c:Copy) REQUIRE c.id IS UNIQUE; LOAD CSV WITH HEADERS FROM 'file:///library/copies.csv' AS row CREATE (c:Copy { id: row.id }) WITH c, row MATCH (b:Book {id: row.book}) CREATE (c)-[:COPY_OF]->(b); LOAD CSV WITH HEADERS FROM 'file:///library/contains.csv' as row MATCH (l:Bibliotheque {id: row.library}) MATCH (c:Copy {id: row.copy}) CREATE (l)-[:CONTAIN]->(c); // Genres // ************************************************************ CREATE CONSTRAINT genre_id_unique IF NOT EXISTS FOR (g:Genre) REQUIRE g.id IS UNIQUE; LOAD CSV WITH HEADERS FROM 'file:///library/genres.csv' AS row CREATE (:Genre { id: row.id, genre: row.genre }); LOAD CSV WITH HEADERS FROM 'file:///library/classify.csv' as row MATCH (b:Book {id: row.book}) MATCH (g:Genre {id: row.genre}) CREATE (b)-[:CLASSIFY_AS]->(g); // Séries // ************************************************************ CREATE CONSTRAINT serie_id_unique IF NOT EXISTS FOR (s:Serie) REQUIRE s.id IS UNIQUE; LOAD CSV WITH HEADERS FROM 'file:///library/series.csv' AS row CREATE (:Serie { id: row.id, serie: row.serie }); LOAD CSV WITH HEADERS FROM 'file:///library/parts.csv' as row MATCH (b:Book {id: row.book}) MATCH (s:Serie {id: row.serie}) CREATE (b)-[:PART_OF]->(s); // Emprunts // ************************************************************ CREATE CONSTRAINT loan_id_unique IF NOT EXISTS FOR (l:Loan) REQUIRE l.id IS UNIQUE; LOAD CSV WITH HEADERS FROM 'file:///library/loans.csv' AS row CREATE (:Loan { id: row.id, dateStart: row.dateStart, dateEnd: row.dateEnd, dateReturn: row.dateReturn }); LOAD CSV WITH HEADERS FROM 'file:///library/borrows.csv' as row MATCH (l:Loan {id: row.id}) MATCH (p:Person {id: toInteger(row.borrow)}) CREATE (p)-[:BORROW]->(l); LOAD CSV WITH HEADERS FROM 'file:///library/leds.csv' as row MATCH (l:Loan {id: row.id}) MATCH (p:Person {id: toInteger(row.led)}) CREATE (p)-[:LED]->(l); LOAD CSV WITH HEADERS FROM 'file:///library/concerns.csv' as row MATCH (l:Loan {id: row.id}) MATCH (c:Copy {id: row.copy}) CREATE (l)-[:CONCERN]->(c); LOAD CSV WITH HEADERS FROM 'file:///library/follows.csv' as row MATCH (l1:Loan {id: row.id}) MATCH (l2:Loan {id: row.follow}) CREATE (l2)-[:FOLLOWS]->(l1); // Récompenses // ************************************************************ LOAD CSV WITH HEADERS FROM 'file:///library/awards.csv' AS row CREATE (:Award { id: row.id, name: row.award }); LOAD CSV WITH HEADERS FROM 'file:///library/award_editions.csv' AS row CREATE (e:Award_Edition { id: row.id, year: row.year }) WITH row, e MATCH (a:Award {id: row.award}) CREATE (l)-[:REPRESENT]->(c); LOAD CSV WITH HEADERS FROM 'file:///library/rewards.csv' AS row MATCH (a:Award_Edition {id: row.id}) MATCH (b:Book {id: row.book}) CREATE (a)-[:REWARD { place: row.place, categorie: row.categorie}]->(b);