Using Clojure to Marry Neo4j and Open Democracy

16
Election Results with Neo4j

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.

Transcript of Using Clojure to Marry Neo4j and Open Democracy

Page 1: Using Clojure to Marry Neo4j and Open Democracy

Election Resultswith Neo4j

Page 2: Using Clojure to Marry Neo4j and Open Democracy

Who am I?

• David Simons

• @SwamWithTurtles

• Software Developer

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

• … for fun

Page 3: Using Clojure to Marry Neo4j and Open Democracy
Page 4: Using Clojure to Marry Neo4j and Open Democracy

ACADEMIC WEBSITE

CONTAINING POORLY

FORMATTED DATA

DATA SCRAPER(PYTHON)

NEO4J

REST ENDPOINT(CLOJURE)

Page 5: Using Clojure to Marry Neo4j and Open Democracy
Page 6: Using Clojure to Marry Neo4j and Open Democracy
Page 7: Using Clojure to Marry Neo4j and Open Democracy
Page 8: Using Clojure to Marry Neo4j and Open Democracy
Page 9: Using Clojure to Marry Neo4j and Open Democracy
Page 10: Using Clojure to Marry Neo4j and Open Democracy

ring-clojure

Page 11: Using Clojure to Marry Neo4j and Open Democracy
Page 12: Using Clojure to Marry Neo4j and Open Democracy
Page 13: Using Clojure to Marry Neo4j and Open Democracy

(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))

Page 14: Using Clojure to Marry Neo4j and Open Democracy

(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")))

Page 15: Using Clojure to Marry Neo4j and Open Democracy

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

Page 16: Using Clojure to Marry Neo4j and Open Democracy

Thanks!

David [email protected]

@SwamWithTurtlesgithub.com/SwamWithTurtles