forked from legis-graph/legis-graph
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathimport.cypher
134 lines (106 loc) · 3.73 KB
/
import.cypher
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// Legis-graph LOAD CSV cypher script
// https://github.com/legis-graph/legis-graph
// Load Legislators
CREATE CONSTRAINT ON (l:Legislator) ASSERT l.bioguideID IS UNIQUE;
CREATE CONSTRAINT ON (s:State) ASSERT s.code IS UNIQUE;
CREATE CONSTRAINT ON (p:Party) ASSERT p.name IS UNIQUE;
CREATE CONSTRAINT ON (b:Body) ASSERT b.type IS UNIQUE;
CREATE CONSTRAINT ON (b:Bill) ASSERT b.billID IS UNIQUE;
CREATE CONSTRAINT ON (s:Subject) ASSERT s.title IS UNIQUE;
CREATE CONSTRAINT ON (c:Committee) ASSERT c.thomasID IS UNIQUE;
LOAD CSV WITH HEADERS
FROM 'file:///legislators-current.csv' AS line
MERGE (legislator:Legislator {bioguideID: line.bioguideID})
ON CREATE SET legislator = line
MERGE (s:State {code: line.state})
MERGE (legislator)-[:REPRESENTS]->(s)
MERGE (p:Party {name: line.currentParty})
MERGE (legislator)-[:IS_MEMBER_OF]->(p)
MERGE (b:Body {type: line.type})
MERGE (legislator)-[:ELECTED_TO]->(b);
CREATE INDEX ON :Legislator(thomasID);
CREATE INDEX ON :Legislator(lisID);
CREATE INDEX ON :Legislator(govtrackID);
CREATE INDEX ON :Legislator(opensecretsID);
CREATE INDEX ON :Legislator(votesmartID);
CREATE INDEX ON :Legislator(cspanID);
CREATE INDEX ON :Legislator(wikipediaID);
CREATE INDEX ON :Legislator(washpostID);
CREATE INDEX ON :Legislator(icpsrID);
// Load Bills
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS
FROM 'file:///bills.csv'
AS line
MERGE (bill:Bill { billID: line.billID })
ON CREATE SET bill = line;
// Load
LOAD CSV WITH HEADERS
FROM 'file:///subjects.csv' AS line
MERGE (subject:Subject { title: line.title });
// Load Congresses
LOAD CSV WITH HEADERS
FROM 'file:///congresses.csv' AS line
MERGE (congress:Congress { number: line.number });
// Laod Bills Congresses
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS
FROM 'file:///bill_congresses.csv'
AS line
MATCH (bill:Bill { billID: line.billID }),
(congress:Congress { number: line.number })
MERGE (bill)-[r:PROPOSED_DURING]->(congress);
// Load Bills Subjects
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS
FROM 'file:///bill_subjects.csv'
AS line
MATCH (bill:Bill { billID: line.billID }),
(subject:Subject { title: line.title })
MERGE (bill)-[r:DEALS_WITH]->(subject);
// Load Bills Legislators
// Load current sponsorships
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS
FROM 'file:///sponsors.csv'
AS line
MATCH (bill:Bill { billID: line.billID }),
(legislator:Legislator { bioguideID: line.bioguideID })
MERGE (bill)-[r:SPONSORED_BY]->(legislator)
ON CREATE SET r.cosponsor = CASE WHEN line.cosponsor = "1" THEN True ELSE False END;
// Load Votes
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS
FROM 'file:///votes.csv'
AS line
MATCH (bill:Bill { billID: line.billID }),
(legislator:Legislator { bioguideID: line.bioguideID })
MERGE (bill)<-[r:VOTED_ON]-(legislator)
ON CREATE SET r.vote = line.vote;
// Load Committees
LOAD CSV WITH HEADERS
FROM 'file:///committees-current.csv' AS line
MERGE (c:Committee {thomasID: line.thomasID})
ON CREATE SET c = line;
LOAD CSV WITH HEADERS
FROM 'file:///bill_committees.csv' AS line
MATCH (b:Bill {billID: line.billID})
MATCH (c:Committee {thomasID: line.committeeID})
MERGE (b)-[:REFERRED_TO]->(c);
// Load Committee Members
LOAD CSV WITH HEADERS
FROM 'file:///committee-members.csv' AS line
MATCH (c:Committee {thomasID: line.committeeID})
MATCH (l:Legislator {bioguideID: line.legislatorID})
MERGE (l)-[r:SERVES_ON]->(c)
SET r.rank = toInt(line.rank);
// Create District nodes
LOAD CSV WITH HEADERS
FROM 'https://github.com/legis-graph/legis-graph/blob/master/outputs/cb_2014_districts.csv?raw=true' AS line
CREATE (d:District)
SET d.state = line.state,
d.district = line.district,
d.wkt = line.polygon
WITH d,line
MATCH (l:Legislator) WHERE l.state = line.state AND l.district = line.district
MERGE (l)-[:REPRESENTS]->(d);