Using Clojure to Marry Neo4j and Open Democracy

Preview:

DESCRIPTION

A more technologically in-depth look at how we can use Clojure and Neocons to integrate with Neo4j and increase transparency in UK politics.

Citation preview

Election Resultswith Neo4j

Who am I?

• David Simons

• @SwamWithTurtles

• Software Developer

• … for a bespoke solutions provider Softwire (hint: we’re recruiting)

• … for fun

ACADEMIC WEBSITE

CONTAINING POORLY

FORMATTED DATA

DATA SCRAPER(PYTHON)

NEO4J

REST ENDPOINT(CLOJURE)

ring-clojure

(let [env (str (get (System/getenv) "GRAPHENEDB_URL") "/db/data")]

(defn connection-string [] (nr/connect! env)))

(defn run-query [query]  (connection-string)  (cy/tquery query))

(defn wardResults [year, areaId] (run-query ("MATCH (pa:party)<-[member_of]-(p:politician)-[r:stood_in]->(e:election)-[held_in]->(a:area),(e:election)-[during]->(y:year)WHERE y.name=\"" year "\" AND id(a)=" areaId " RETURN id(p), pa.name AS partyName, SUM(r.votes) AS numVotes")))

github.com/pimterry/national-hack-the-government-2014/

Thanks!

David Simonsdavid.simons@softwire.com

@SwamWithTurtlesgithub.com/SwamWithTurtles