Spaces:
Running
Running
| # Neo4j Graph Database Import Guide | |
| This folder contains Neo4j-import-ready CSV files containing: | |
| * **Nodes**: Papers, Authors, and deduplicated Datasets. | |
| * **Relationships**: Authorship (`:AUTHORED`) and dataset citations (`:MENTIONS`). | |
| --- | |
| ## CSV File List | |
| 1. **`nodes_papers.csv`**: Contains Policy Research Working Papers. | |
| 2. **`nodes_datasets.csv`**: Contains canonicalized datasets. | |
| 3. **`nodes_authors.csv`**: Contains unique authors. | |
| 4. **`edges_authored.csv`**: Maps Authors to Papers. | |
| 5. **`edges_mentions.csv`**: Maps Papers to Datasets with page numbers, context, and model confidence scores. | |
| --- | |
| ## Import Cypher Queries | |
| To import these files into your Neo4j instance, place the CSV files in your Neo4j project's `import/` directory, open the Neo4j Browser, and execute the following queries: | |
| ### 1. Create Constraints | |
| ```cypher | |
| CREATE CONSTRAINT UNIQUE_paper FOR (p:Paper) REQUIRE p.id IS UNIQUE; | |
| CREATE CONSTRAINT UNIQUE_dataset FOR (d:Dataset) REQUIRE d.id IS UNIQUE; | |
| CREATE CONSTRAINT UNIQUE_author FOR (a:Author) REQUIRE a.id IS UNIQUE; | |
| ``` | |
| ### 2. Load Nodes | |
| ```cypher | |
| // Load Papers | |
| LOAD CSV WITH HEADERS FROM 'file:///nodes_papers.csv' AS row | |
| MERGE (p:Paper {id: row.id}) | |
| SET p.title = row.title, | |
| p.year = toInteger(row.year); | |
| // Load Datasets | |
| LOAD CSV WITH HEADERS FROM 'file:///nodes_datasets.csv' AS row | |
| MERGE (d:Dataset {id: row.id}) | |
| SET d.name = row.name, | |
| d.acronym = row.acronym, | |
| d.typology = row.typology, | |
| d.producer = row.producer, | |
| d.geography = row.geography; | |
| // Load Authors | |
| LOAD CSV WITH HEADERS FROM 'file:///nodes_authors.csv' AS row | |
| MERGE (a:Author {id: row.id}) | |
| SET a.name = row.name; | |
| ``` | |
| ### 3. Load Relationships | |
| ```cypher | |
| // Load AUTHORED | |
| LOAD CSV WITH HEADERS FROM 'file:///edges_authored.csv' AS row | |
| MATCH (a:Author {id: row.author_id}) | |
| MATCH (p:Paper {id: row.paper_id}) | |
| MERGE (a)-[:AUTHORED]->(p); | |
| // Load MENTIONS | |
| LOAD CSV WITH HEADERS FROM 'file:///edges_mentions.csv' AS row | |
| MATCH (p:Paper {id: row.paper_id}) | |
| MATCH (d:Dataset {id: row.dataset_id}) | |
| MERGE (p)-[:MENTIONS { | |
| pages: split(row.pages, ';'), | |
| context: row.context, | |
| confidence: toFloat(row.confidence) | |
| }]->(d); | |
| ``` | |