finding insights in connected data: using graph databases in journalism

74
Finding Insights in Connected Data Graph Databases in Journalism NICAR 2016 Denver William Lyon @lyonwj

Upload: william-lyon

Post on 16-Apr-2017

1.039 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Finding Insights In Connected Data: Using Graph Databases In Journalism

Finding Insights in Connected DataGraph Databases in Journalism

NICAR 2016Denver

William Lyon@lyonwj

Page 2: Finding Insights In Connected Data: Using Graph Databases In Journalism

About

Software Developer @[email protected]

@lyonwjlyonwj.com

William Lyon

Page 3: Finding Insights In Connected Data: Using Graph Databases In Journalism

Agenda

• What is a graph database?• Why graphs in journalism?

• Demo1: Graphing US Congress

• Demo2: Hillary email dataset

Page 4: Finding Insights In Connected Data: Using Graph Databases In Journalism

What is a graph?

Page 5: Finding Insights In Connected Data: Using Graph Databases In Journalism

Chart

Page 6: Finding Insights In Connected Data: Using Graph Databases In Journalism

Chart Graph

Page 7: Finding Insights In Connected Data: Using Graph Databases In Journalism

VIEW

ED

VIEWED

BOUG

HTVIEW

ED BOUGHT

BOUGHT

BO

UG

HT

BOUG

HT

Page 8: Finding Insights In Connected Data: Using Graph Databases In Journalism

MANAGE

MANAGE

LEADS

REGION

MANAGE

MANAGE

REGION

LEADS

LEADS

COLL

ABO

RAT

Page 9: Finding Insights In Connected Data: Using Graph Databases In Journalism

ACCOUNT HOLDER 2

ACCOUNT

ACCOUNT

CREDIT CARD

BANKACCOUNT

BANKACCOUNT BANK

ADDRESS

PHONE

PHONE NUMBER

SSN 2

LOAN

SSN 2

UNSECURE LOAN

CREDIT CARD

Page 10: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 11: Finding Insights In Connected Data: Using Graph Databases In Journalism

Graph Databases in Journalism

Page 12: Finding Insights In Connected Data: Using Graph Databases In Journalism

Graph Databases Software that stores & queries data as a graph.

Page 13: Finding Insights In Connected Data: Using Graph Databases In Journalism

Graph Database

• Property graph data model• Nodes and relationships

• Native graph processing• Cypher query language

neo4j.com

Page 14: Finding Insights In Connected Data: Using Graph Databases In Journalism

Why graph databases in journalism?

Page 15: Finding Insights In Connected Data: Using Graph Databases In Journalism

Why graph databases in journalism?

Page 16: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 17: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 18: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 19: Finding Insights In Connected Data: Using Graph Databases In Journalism

bills.csv

committees.csv

votes.csv

https://www.govtrack.us/developers

Page 20: Finding Insights In Connected Data: Using Graph Databases In Journalism

bills.csv

committees.csv

votes.csv

https://www.govtrack.us/developers

Page 21: Finding Insights In Connected Data: Using Graph Databases In Journalism

SELECT l.name, c.jurisdictionFROM legislators p LEFT JOIN committee c ON c.member_ID=l.thomasIDWHERE c.thomasID = “HSAP”

Page 22: Finding Insights In Connected Data: Using Graph Databases In Journalism

SQLER Diagrams

Page 23: Finding Insights In Connected Data: Using Graph Databases In Journalism

Relational Versus Graph Models

Relational Model Graph Model

KNOWS

KNOWS

KNOWS

ANDREAS

TOBIAS

MICA

DELIA

Person FriendPerson-Friend

ANDREASDELIA

TOBIAS

MICA

Page 24: Finding Insights In Connected Data: Using Graph Databases In Journalism

Graph Database

Relational Database

A way of representing data

Page 25: Finding Insights In Connected Data: Using Graph Databases In Journalism

Property Graph Model

Page 26: Finding Insights In Connected Data: Using Graph Databases In Journalism

The Whiteboard Model Is the Physical Model

Page 27: Finding Insights In Connected Data: Using Graph Databases In Journalism

Property Graph Model Components

Nodes • The objects in the graph • Can have name-value properties • Can be labeled

Relationships • Relate nodes by type and

direction • Can have name-value properties

CAR

DRIVES

name: “Dan” born: May 29, 1970

twitter: “@dan”name: “Ann”

born: Dec 5, 1975

since: Jan 10, 2011

brand: “Volvo” model: “V70”

LOVES

LOVES

LIVES WITH

OWNS

PERSON PERSON

Page 28: Finding Insights In Connected Data: Using Graph Databases In Journalism

Cypher Query Language

SQL for graphs

Page 29: Finding Insights In Connected Data: Using Graph Databases In Journalism

Cypher: Powerful and Expressive Query Language

CREATE (:Person { name:“Dan”} ) -[:LOVES]-> (:Person { name:“Ann”} )

LOVES

Dan Ann

LABEL PROPERTY

NODE NODE

LABEL PROPERTY

Page 30: Finding Insights In Connected Data: Using Graph Databases In Journalism

MATCH (boss)-[:MANAGES*0..3]->(sub), (sub)-[:MANAGES*1..3]->(report)WHERE boss.name = “John Doe”RETURN sub.name AS Subordinate, count(report) AS Total

Express Complex Queries Easily with Cypher

Find all direct reports and how many people they manage, up to 3 levels down

Cypher Query

SQL Query

Page 31: Finding Insights In Connected Data: Using Graph Databases In Journalism

Graphing US Congress

Demo

Page 32: Finding Insights In Connected Data: Using Graph Databases In Journalism

https://github.com/legis-graph/legis-graph

Page 33: Finding Insights In Connected Data: Using Graph Databases In Journalism

https://github.com/legis-graph/legis-graph

LOAD CSV WITH HEADERS FROM “file:///legislators.csv” AS line MERGE (l:Legislator (thomasID: line.thomasID}) SET l = line MERGE (s:State {code:line.state})<-[:REPRESENTS]-(l) …

US Congress

Page 34: Finding Insights In Connected Data: Using Graph Databases In Journalism

https://github.com/legis-graph/legis-graph

Page 35: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 36: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 37: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 38: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 39: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 40: Finding Insights In Connected Data: Using Graph Databases In Journalism

http://legis-graph.github.io/legis-graph-spatial/

Page 41: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 42: Finding Insights In Connected Data: Using Graph Databases In Journalism

contributions

committees

candidates

Page 43: Finding Insights In Connected Data: Using Graph Databases In Journalism

https://gist.github.com/johnymontana/02ae47fc0a29719db045

Page 44: Finding Insights In Connected Data: Using Graph Databases In Journalism

+

Page 45: Finding Insights In Connected Data: Using Graph Databases In Journalism

https://gist.github.com/johnymontana/02ae47fc0a29719db045

Page 46: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 47: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 48: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 49: Finding Insights In Connected Data: Using Graph Databases In Journalism

Graph data models are easy to evolve!Takeaway

Page 50: Finding Insights In Connected Data: Using Graph Databases In Journalism

Hillary Clinton EmailsDemo

Page 51: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 52: Finding Insights In Connected Data: Using Graph Databases In Journalism

Clinton email graph model

Page 53: Finding Insights In Connected Data: Using Graph Databases In Journalism

Data munging

http://graphics.wsj.com/hillary-clinton-email-documents/

Page 54: Finding Insights In Connected Data: Using Graph Databases In Journalism

Data munging

https://github.com/OpenRefine/OpenRefine/wiki/Faceting

Page 55: Finding Insights In Connected Data: Using Graph Databases In Journalism

LOAD CSV - Cypher

http://www.developeradvocate.com/2015/11/graphing-hillary-clinton-email/

Page 56: Finding Insights In Connected Data: Using Graph Databases In Journalism

Clinton email graph model

bit.ly/1R1ybyu

Page 57: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 58: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 59: Finding Insights In Connected Data: Using Graph Databases In Journalism

Content mining

“Networks give structure to the conversation while content mining gives meaning.”

http://breakthroughanalysis.com/2015/10/08/ltapreriitsouda/

- Preriit Souda

Page 60: Finding Insights In Connected Data: Using Graph Databases In Journalism

Extracting topics from email text

Page 61: Finding Insights In Connected Data: Using Graph Databases In Journalism

Extracting topics from email text

http://www.markhneedham.com/blog/2015/02/13/neo4j-building-a-topic-graph-with-prismatic-interest-graph-api/

Page 62: Finding Insights In Connected Data: Using Graph Databases In Journalism

Clinton email graph model

Page 63: Finding Insights In Connected Data: Using Graph Databases In Journalism

Clinton email graph model

Page 64: Finding Insights In Connected Data: Using Graph Databases In Journalism

http://bit.ly/1R1ybyu

Page 65: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 66: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 67: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 68: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 69: Finding Insights In Connected Data: Using Graph Databases In Journalism

Resources

Page 70: Finding Insights In Connected Data: Using Graph Databases In Journalism
Page 71: Finding Insights In Connected Data: Using Graph Databases In Journalism

Visualization

https://linkurio.us/

http://visjs.org/

http://neo4j.com/developer/guide-data-visualization/

Page 72: Finding Insights In Connected Data: Using Graph Databases In Journalism

Data analysis with Neo4j

Py2neo http://py2neo.org/2.0/

IPython Notebook https://github.com/versae/ipython-cypher

R-lang http://neo4j.com/developer/r/

Page 73: Finding Insights In Connected Data: Using Graph Databases In Journalism

ICIJ Case StudySwiss Leaks

https://youtu.be/4__ni4aC8gI http://neo4j.com/case-studies/icij/

Page 74: Finding Insights In Connected Data: Using Graph Databases In Journalism

graphdatabases.com