Tracking Legislative Conflicts with Neo4j

Greetings everyone,
just wanted to share how I am currently utilizing Neo4j.

At the Indiana General Assembly, legislators create proposed legislation called Bills. These Bills target the Indiana Code (Indiana Law). The Indiana code is a hierarchical structure consisting of: Titles, Articles and Chapters.

Bills either aim to AMEND or REPEAL an existing Title, Article or Chapter. In cases where a provision does not exist, Bills can also ADD to the Indiana Code. As Bills move through the legislative process and approach passage, it becomes critical for legislators to identify all Bills which target the same area of the Indiana Code. (In essence if one Bill aims to REPEAL a section of the Indiana Code, while another Bill aims to AMEND it)
If both bills with conflicting intent on the Indiana Code were to become law, the courts would have to interpret that conflict in the law.

Additionally, Bills have authors, sponsors, events, bill actions, committee assignments, etc. (ALL connected data)

Data is constantly imported from our main database (Postgres) into Neo4j for the Citations Application. Users are able to add additional meta data into Neo4j and run comparison reports utilizing Jasper.

Query for HB1001

MATCH (c:citation)-[:CONTAINS]-(s:source_sheet)<-[:AFFECTS]-
(b:bill:igacinddevrep:session_2018 {basename:"HB1001"})<-[:OCCURRED_ON]-
(ba:billaction)-[:BASED_ON]->(e:event)-[:BASED_ON]->(ev:event_template)
-[:HAS]->(sa:significant_action_rule)
RETURN *

2 Likes

That's an awesome use case, Varnie! Thank you for sharing!

Thanks for sharing, Varnie - really neat! I played around with congressional data in Neo4j a bit: GitHub - legis-graph/legis-graph: ETL scripts for loading US Congressional data from govtrack.us into Neo4j

I was particularly interested in measuring political influence (through COSPONSORED relationships) and adding campaign finance data.

1 Like

Legis Graph is also available as a Neo4j Sandbox (Neo4j Sandbox | Online Graph Database – No Download Required)

And Will wrote some articles about it:

3 Likes

I saw that!! -- (very interesting work) -- I'm drawing a lot of inspiration from your project.

1 Like

I was also considering a graph solution for geospatial querying we do here.

I wrote some c# code to determine a constituent's district legislators, using google geocoding and geospatial queries in SQL. With the new geo data type in Neo4j, I would love to create a graphy geospatial lookup. Currently the district shape files are stored in SQL.

1 Like

You can index the polygon of the congressional district using the Neo4j Spatial plugin (native Neo4j spatial currently supports only Point type), like what I did here: Using Neo4j Spatial Procedures in legis-graph-spatial – William Lyon

The demo is running here: LegisGraphSpatial

1 Like