Skip to content

Instantly share code, notes, and snippets.

@nicolewhite
Last active August 29, 2015 14:04
Show Gist options
  • Save nicolewhite/12b6cd13f1f1120f6099 to your computer and use it in GitHub Desktop.
Save nicolewhite/12b6cd13f1f1120f6099 to your computer and use it in GitHub Desktop.

OSCON Twitter Graph

During the OSCON conference, the Neo4j team will be collecting tweets and adding them to a graph. Below is an example database of 15 tweets.

create (_0:`Tweet` {`text`:"RT @BrentVukmer: The worst things so far about @oscon - too many choices, not enough time."})
create (_1:`User` {`username`:"oscon"})
create (_2:`Source` {`name`:"Hootsuite"})
create (_3:`User` {`username`:"BrentVukmer"})
create (_4:`Tweet` {`text`:"RT @GraceEwuraEsi: @PyLadies_pdx come join @GraphAlchemist & @neo4j at #OSCON. Check out the events we'll be at http://t.co/ytvQb4fIwb"})
create (_5:`User` {`username`:"kennybastani"})
create (_6:`Source` {`name`:"Twitter Web Client"})
create (_7:`User` {`username`:"GraceEwuraEsi"})
create (_8:`Hashtag` {`name`:"oscon"})
create (_9:`Link` {`url`:"http://t.co/ytvQb4fIwb"})
create (_10:`User` {`username`:"PyLadies_pdx"})
create (_11:`User` {`username`:"GraphAlchemist"})
create (_12:`User` {`username`:"neo4j"})
create (_13:`Tweet` {`text`:"RT @msdev: .@Windows is now available on a new class of small devices: http://t.co/VovVDt4ibV #OSCON #opensource #maker http://t.co/JolIZHE…"})
create (_14:`User` {`username`:"mobiletonster"})
create (_15:`Source` {`name`:"Twitter for Windows Phone"})
create (_16:`User` {`username`:"msdev"})
create (_17:`Hashtag` {`name`:"opensource"})
create (_18:`Hashtag` {`name`:"maker"})
create (_19:`Link` {`url`:"http://t.co/VovVDt4ibV"})
create (_20:`User` {`username`:"Windows"})
create (_21:`Tweet` {`text`:"@OReillyMedia ... Not if the Slashdotters have anything to say about it."})
create (_22:`User` {`username`:"clinanalytics"})
create (_23:`Source` {`name`:"Twitter for iPad"})
create (_24:`User` {`username`:"OReillyMedia"})
create (_25:`Tweet` {`text`:"RT @hysteresis: At #OSCON next week? Ping me if you'd like to catch up/learn about #Scala engineering openings at #WhitePages in #Seattle"})
create (_26:`User` {`username`:"WPTechGrl"})
create (_27:`User` {`username`:"hysteresis"})
create (_28:`Hashtag` {`name`:"scala"})
create (_29:`Hashtag` {`name`:"whitepages"})
create (_30:`Hashtag` {`name`:"seattle"})
create (_31:`Tweet` {`text`:"Nope, not yet. Have fun at OSCON. MT @TheCommunitizer @lcafiero Are you #TheNewJono yet? /me is going to OSCON next week :D #TeamLarry"})
create (_32:`User` {`username`:"lcafiero"})
create (_33:`User` {`username`:"TheCommunitizer"})
create (_34:`Hashtag` {`name`:"thenewjono"})
create (_35:`Hashtag` {`name`:"teamlarry"})
create (_36:`Tweet` {`text`:"Excited to rep @DreamHost at #oscon and #blogher14 next week.  My booth bro skills are in high demand!"})
create (_37:`User` {`username`:"DreamHostBrett"})
create (_38:`Source` {`name`:"TweetDeck"})
create (_39:`Hashtag` {`name`:"blogher14"})
create (_40:`User` {`username`:"DreamHost"})
create (_41:`Tweet` {`text`:"RT @msdev: .@Windows is now available on a new class of small devices: http://t.co/VovVDt4ibV #OSCON #opensource #maker http://t.co/JolIZHE…"})
create (_42:`User` {`username`:"Christiandgs"})
create (_43:`Tweet` {`text`:"Hosts: Randal Schwartz .

OSCON is a unique gathering where participants find inspiration, confront new... http://t.co/ZQQ7iYCw3f"})
create (_44:`User` {`username`:"NWTechGeek"})
create (_45:`Source` {`name`:"Facebook"})
create (_46:`Link` {`url`:"http://t.co/ZQQ7iYCw3f"})
create (_47:`Tweet` {`text`:"@lcafiero Are you #TheNewJono yet? /me is going to OSCON next week; hoping for some news :D #TeamLarry"})
create (_48:`Tweet` {`text`:"The worst things so far about @oscon - too many choices, not enough time."})
create (_49:`Source` {`name`:"Twitter for iPhone"})
create (_50:`Tweet` {`text`:"RT @DataconomyMedia: CEO of @Neo4j shares insights on how to make #BigData meaningful with #OpenSource graph #tech: http://t.co/6ODDe3DgSl"})
create (_51:`User` {`username`:"MagnumBI_"})
create (_52:`User` {`username`:"DataconomyMedia"})
create (_53:`Hashtag` {`name`:"bigdata"})
create (_54:`Hashtag` {`name`:"tech"})
create (_55:`Link` {`url`:"http://t.co/6ODDe3DgSl"})
create (_56:`Tweet` {`text`:"Writing books in (X)HTML sounds pretty cool https://t.co/vwrGQqkDkS #HTMLBook"})
create (_57:`User` {`username`:"vmx"})
create (_58:`Hashtag` {`name`:"htmlbook"})
create (_59:`Link` {`url`:"https://t.co/vwrGQqkDkS"})
create (_60:`Tweet` {`text`:"RT @MS_Student: .@Windows is now available on a new class of small devices: http://t.co/YlSxlw5LfM #OSCON #opensource #maker http://t.co/jd…"})
create (_61:`User` {`username`:"MaxBrechler"})
create (_62:`Source` {`name`:"Twitter for Android"})
create (_63:`User` {`username`:"MS_Student"})
create (_64:`Link` {`url`:"http://t.co/YlSxlw5LfM"})
create (_65:`Tweet` {`text`:"Got my @OSCON schedule hammered out... at least until I decide to change it again."})
create (_66:`User` {`username`:"izenmania"})
create _0-[:`USING`]->_2
create _0-[:`RETWEETS`]->_3
create _0-[:`MENTIONS`]->_1
create _1-[:`POSTS`]->_0
create _3-[:`POSTS`]->_48
create _4-[:`USING`]->_6
create _4-[:`RETWEETS`]->_7
create _4-[:`MENTIONS`]->_10
create _4-[:`MENTIONS`]->_11
create _4-[:`MENTIONS`]->_12
create _4-[:`TAGS`]->_8
create _4-[:`CONTAINS`]->_9
create _5-[:`POSTS`]->_4
create _13-[:`USING`]->_15
create _13-[:`RETWEETS`]->_16
create _13-[:`MENTIONS`]->_20
create _13-[:`TAGS`]->_8
create _13-[:`TAGS`]->_17
create _13-[:`TAGS`]->_18
create _13-[:`CONTAINS`]->_19
create _14-[:`POSTS`]->_13
create _21-[:`USING`]->_23
create _21-[:`REPLY_TO`]->_24
create _22-[:`POSTS`]->_21
create _25-[:`USING`]->_6
create _25-[:`RETWEETS`]->_27
create _25-[:`TAGS`]->_8
create _25-[:`TAGS`]->_28
create _25-[:`TAGS`]->_29
create _25-[:`TAGS`]->_30
create _26-[:`POSTS`]->_25
create _31-[:`USING`]->_6
create _31-[:`MENTIONS`]->_32
create _31-[:`TAGS`]->_34
create _31-[:`TAGS`]->_35
create _31-[:`REPLY_TO`]->_33
create _32-[:`POSTS`]->_31
create _33-[:`POSTS`]->_47
create _36-[:`USING`]->_38
create _36-[:`MENTIONS`]->_40
create _36-[:`TAGS`]->_8
create _36-[:`TAGS`]->_39
create _37-[:`POSTS`]->_36
create _41-[:`USING`]->_15
create _41-[:`RETWEETS`]->_16
create _41-[:`MENTIONS`]->_20
create _41-[:`TAGS`]->_8
create _41-[:`TAGS`]->_17
create _41-[:`TAGS`]->_18
create _41-[:`CONTAINS`]->_19
create _42-[:`POSTS`]->_41
create _43-[:`USING`]->_45
create _43-[:`CONTAINS`]->_46
create _44-[:`POSTS`]->_43
create _47-[:`USING`]->_6
create _47-[:`TAGS`]->_34
create _47-[:`TAGS`]->_35
create _47-[:`REPLY_TO`]->_32
create _48-[:`USING`]->_49
create _48-[:`MENTIONS`]->_1
create _50-[:`USING`]->_6
create _50-[:`RETWEETS`]->_52
create _50-[:`MENTIONS`]->_12
create _50-[:`TAGS`]->_53
create _50-[:`TAGS`]->_17
create _50-[:`TAGS`]->_54
create _50-[:`CONTAINS`]->_55
create _51-[:`POSTS`]->_50
create _56-[:`USING`]->_6
create _56-[:`TAGS`]->_58
create _56-[:`CONTAINS`]->_59
create _57-[:`POSTS`]->_56
create _60-[:`USING`]->_62
create _60-[:`RETWEETS`]->_63
create _60-[:`MENTIONS`]->_20
create _60-[:`TAGS`]->_8
create _60-[:`TAGS`]->_17
create _60-[:`TAGS`]->_18
create _60-[:`CONTAINS`]->_64
create _61-[:`POSTS`]->_60
create _65-[:`USING`]->_6
create _65-[:`MENTIONS`]->_1
create _66-[:`POSTS`]->_65
;

MATCH (n)-[r:TAGS]->(m)
WITH n, m, r
DELETE r
CREATE (m)-[:TAGS]->(n)
;

How are the hashtags #bigdata and #oscon connected?

MATCH (bigdata:Hashtag {name:'bigdata'}), (oscon:Hashtag {name:'oscon'})
MATCH p = shortestPath((bigdata)-[:TAGS*]-(oscon))
RETURN p

Which users post tweets that mention themselves?

MATCH (u:User)-[:POSTS]->(t:Tweet)-[:MENTIONS]->(u)
RETURN u.username AS User, t.text AS Tweet

What platform are users tweeting from most often?

MATCH (:User)-[:POSTS]-(:Tweet)-[:USING]->(s:Source)
RETURN s.name AS Source, COUNT(*) AS Count
ORDER BY Count DESC
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment