Tracking Legislative Conflicts with Neo4j


(Varnie N'jola Karmo) #1

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 *


(Karin Wolok) #2

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


(William Lyon) #3

Thanks for sharing, Varnie - really neat! I played around with congressional data in Neo4j a bit: https://github.com/legis-graph/legis-graph

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


(Michael Hunger) #4

Legis Graph is also available as a Neo4j Sandbox (https://neo4j.com/sandbox)

And Will wrote some articles about it:


(Varnie N'jola Karmo) #5

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


(Varnie N'jola Karmo) #6

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.


(William Lyon) #7

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: https://www.lyonwj.com/2016/08/09/neo4j-spatial-procedures-congressional-boundaries/

The demo is running here: http://legis-graph.github.io/legis-graph-spatial/