Skip to content

Instantly share code, notes, and snippets.

@rvanbruggen
Last active August 29, 2015 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rvanbruggen/ff44b7dc37bb4534df2e to your computer and use it in GitHub Desktop.
Save rvanbruggen/ff44b7dc37bb4534df2e to your computer and use it in GitHub Desktop.
GraphConnect Europe 2015 schedule graphgist

Looking forward to May 6-7th, 2015 in London

Less than a month from today we will be hosting and attending THE graph conference in Europe, GraphConnect. It’s going to be a fantastic event, and that’s why I decided to take the (somewhat unfinished, but hey) schedule for a spin in Neo4j.

The Schedule’s Model

Here’s what the model looks like (generated using a meta-graph of course):

1 model bis

Very simple - but it’s so much nicer when you can make it interactive and load it into Neo4j. Let’s do that. Let’s load that data into this graphgist.

//create the GraphConnect Europe 2015 Schedule
create (_162:`Conference` {`name`:"GraphConnect Europe 2015"})
create (_163:`Venue` {`name`:"etc. Liverpool Street"})
create (_164:`Room` {`name`:"Broadgate 2"})
create (_165:`Room` {`name`:"Broadgate"})
create (_166:`Room` {`name`:"London Wall"})
create (_167:`Venue` {`name`:"Apex Hotel"})
create (_168:`Room` {`name`:"Apex Hotel - dedicated room"})
create (_169:`Venue` {`name`:"Doggets Coat and Badge"})
create (_170:`Room` {`name`:"Top Floor Terrace Bar"})
create (_171:`Room` {`name`:"Reception area"})
create (_172:`Room` {`name`:"Keynote"})
create (_173:`Room` {`name`:"GraphHospital"})
create (_174:`Day` {`date`:20150506})
create (_175:`Track` {`name`:"Training"})
create (_176:`Track` {`name`:"Networking"})
create (_177:`Track` {`name`:"Community"})
create (_178:`Day` {`date`:20150507})
create (_179:`Track` {`name`:"Fika"})
create (_180:`Track` {`name`:"Keynote"})
create (_181:`Track` {`name`:"Business Impact Track"})
create (_182:`Track` {`name`:"Community Track"})
create (_183:`Track` {`name`:"Practictioner Track"})
create (_184:`Track` {`name`:"GraphClinic"})
create (_185:`Speaker` {`name`:"Alistair Jones", `title`:"Developer"})
create (_186:`Speaker` {`name`:"Stefan Kolmar", `title`:"Field Engineer"})
create (_187:`Speaker` {`name`:"Pieter Cailliau", `title`:"Field Engineer"})
create (_188:`Speaker` {`name`:"Ian Robinson", `title`:"Engineer"})
create (_189:`Speaker` {`name`:"Gabe Stanek", `title`:"Field Engineer"})
create (_190:`Speaker` {`name`:"David Montag", `title`:"Field Engineer"})
create (_191:`Speaker` {`name`:"Erik Nolten", `title`:"Director Partner Program"})
create (_192:`Speaker` {`name`:"Michael Hunger", `title`:"Developer Evangelist"})
create (_193:`Speaker` {`name`:"Alberto Perdomo", `title`:"CEO"})
create (_194:`Speaker` {`name`:"Holger Temme", `title`:"Director Central Europe & Middle East"})
create (_195:`Speaker` {`name`:"Rik Van Bruggen", `title`:"Director Northern Europe"})
create (_196:`Speaker` {`name`:"Emil Eifrem", `title`:"CEO"})
create (_197:`Speaker` {`name`:"Utpal Bhatt", `title`:"VP Marketing"})
create (_198:`Speaker` {`name`:"Hans Verhoef", `title`:"Architect"})
create (_199:`Speaker` {`name`:"Matt Wright", `title`:"CTO"})
create (_200:`Speaker` {`name`:"Oliver Tigges"})
create (_201:`Speaker` {`name`:"Lorenzo Speranzoni"})
create (_202:`Speaker` {`name`:"Philip Rathle", `title`:"VP Product"})
create (_203:`Speaker` {`name`:"Nicolas Rouyer", `title`:"Architect"})
create (_204:`Speaker` {`name`:"Brendan Madden", `title`:"CEO"})
create (_205:`Speaker` {`name`:"David Simons"})
create (_206:`Speaker` {`name`:"Felienne Hermans", `title`:"Professor"})
create (_207:`Speaker` {`name`:"Mark Needham", `title`:"Engineer"})
create (_208:`Speaker` {`name`:"Vince Bickers ", `title`:"Consultant"})
create (_209:`Speaker` {`name`:"Aaron Wallace", `title`:"Principal Product Manager"})
create (_210:`Speaker` {`name`:"Tom Benedictus", `title`:"CEO Trifork Leeds"})
create (_211:`Speaker` {`name`:"Peter Wiles"})
create (_212:`Speaker` {`name`:"Axel Morgner", `title`:"CEO"})
create (_213:`Speaker` {`name`:"Nicole White", `title`:"Data Scientist"})
create (_214:`Speaker` {`name`:"Brian Underwood", `title`:"Developer Evangelist"})
create (_215:`Speaker` {`name`:"Graham York"})
create (_216:`Speaker` {`name`:"Sokratis Kartelias", `title`:"Senior Project Manager"})
create (_217:`Speaker` {`name`:"Sebastien Heymann", `title`:"CEO"})
create (_218:`Speaker` {`name`:"Christophe Willemsen", `title`:"Consultant"})
create (_219:`Speaker` {`name`:"Stefan Armbruster", `title`:"Field Engineer"})
create (_220:`Speaker` {`name`:"Jim Webber", `title`:"Chief Scientist"})
create (_221:`Speaker` {`name`:"Ryan Boyd"})
create (_222:`Speaker` {`name`:"Andreas Kolleger"})
create (_223:`Company` {`name`:"Neo Technology"})
create (_224:`Company` {`name`:"GrapheneDB"})
create (_225:`Company` {`name`:"Royal Netherlands Meteorological Institute"})
create (_226:`Company` {`name`:"Stitched.io"})
create (_227:`Company` {`name`:"InnoQ"})
create (_228:`Company` {`name`:"LARUS Business Automation Srl"})
create (_229:`Company` {`name`:"Orange"})
create (_230:`Company` {`name`:"Tom Sawyer"})
create (_231:`Company` {`name`:"Softwire"})
create (_232:`Company` {`name`:"Delft University of Technology"})
create (_233:`Company` {`name`:"GraphAware"})
create (_234:`Company` {`name`:"Pitney Bowes"})
create (_235:`Company` {`name`:"Trifork"})
create (_236:`Company` {`name`:"Chillisoft Solutions"})
create (_237:`Company` {`name`:"Structr"})
create (_238:`Company` {`name`:"Sentience"})
create (_239:`Company` {`name`:"adidas"})
create (_240:`Company` {`name`:"Linkurious"})
create (_241:`Time` {`time`:900})
create (_242:`Time` {`time`:1700})
create (_243:`Time` {`time`:1230})
create (_244:`Time` {`time`:1930})
create (_245:`Time` {`time`:2200})
create (_246:`Time` {`time`:1100})
create (_247:`Time` {`time`:1830})
create (_248:`Time` {`time`:830})
create (_249:`Time` {`time`:915})
create (_250:`Time` {`time`:930})
create (_251:`Time` {`time`:1015})
create (_252:`Time` {`time`:1030})
create (_253:`Time` {`time`:1045})
create (_254:`Time` {`time`:1115})
create (_255:`Time` {`time`:1145})
create (_256:`Time` {`time`:1200})
create (_257:`Time` {`time`:1230})
create (_258:`Time` {`time`:1300})
create (_259:`Time` {`time`:1415})
create (_260:`Time` {`time`:1445})
create (_261:`Time` {`time`:1515})
create (_262:`Time` {`time`:1530})
create (_263:`Time` {`time`:1600})
create (_264:`Time` {`time`:1630})
create (_265:`Time` {`time`:1645})
create (_266:`Time` {`time`:1730})
create (_267:`Time` {`time`:1745})
create (_268:`Time` {`time`:2030})
create (_269:`Session` {`topic`:"Fundamentals"})
create (_270:`Session` {`topic`:"Data Modeling"})
create (_271:`Session` {`topic`:"Advanced Cypher"})
create (_272:`Session` {`topic`:"Partner Dinner"})
create (_273:`Session` {`topic`:"Ecosystem Partner Summit"})
create (_274:`Session` {`topic`:"Hackathon"})
create (_275:`Session` {`topic`:"Welcome & Introduction to GraphConnect"})
create (_276:`Session` {`topic`:"Opening Keynote"})
create (_277:`Session` {`topic`:"Neo4j typical use cases"})
create (_278:`Session` {`topic`:"Monitoring using 'Big Data' tooling (Network & IT Management)"})
create (_279:`Session` {`topic`:"Social - Superpowers for Recruitment"})
create (_280:`Session` {`topic`:"Software dependency analysis with graph databases (Neo4j)"})
create (_281:`Session` {`topic`:"Managing Connected Big Data in Art with Neo4j Graph Database"})
create (_282:`Session` {`topic`:"From Zero to Graph: Model"})
create (_283:`Session` {`topic`:"Deep dive into product roadmap"})
create (_284:`Session` {`topic`:"Predict Incidents with Neo4j (Network  & IT Management)"})
create (_285:`Session` {`topic`:"Graph Visualisation and Analysis"})
create (_286:`Session` {`topic`:"Graph Theory in Practice"})
create (_287:`Session` {`topic`:"Spreadsheets are graphs!"})
create (_288:`Session` {`topic`:"From Zero to Graph: Import"})
create (_289:`Session` {`topic`:"Spring Data Neo4j"})
create (_290:`Session` {`topic`:"Master Data Management"})
create (_291:`Session` {`topic`:"Realistic deep learning with Neo4j"})
create (_292:`Session` {`topic`:"Unlock value from the connectedness in existing relational data"})
create (_293:`Session` {`topic`:"The Graph Application Platform"})
create (_294:`Session` {`topic`:"From Zero to Graph: Query"})
create (_295:`Session` {`topic`:"From Zero to GraphGist"})
create (_296:`Session` {`topic`:"Graph-based search"})
create (_297:`Session` {`topic`:"Delivering the most relevant and compelling digital content to adidas consumers (Recommendations)"})
create (_298:`Session` {`topic`:"Large-scale graph visualization on the web"})
create (_299:`Session` {`topic`:"Graphgen - Graph prototyping made easy"})
create (_300:`Session` {`topic`:"From Zero to Graph: Scale"})
create (_301:`Session` {`topic`:"Closing Keynote - Impossible is nothing with Graphs"})
create (_302:`Session` {`topic`:"Prize draw and wrap-up"})
create (_303:`Session` {`topic`:"Cypher / Visualization / Import / Modeling / Cluster / Driver / Java"})
create (_304:`Session` {`topic`:"Cypher / Visualization / Import / Modeling / Cluster / Driver / Java"})
create (_305:`Session` {`topic`:"Cypher / Visualization / Import / Modeling / Cluster / Driver / Java"})
create (_306:`Session` {`topic`:"Cypher / Visualization / Import / Modeling / Cluster / Driver / Java"})
create (_307:`Session` {`topic`:"Cypher / Visualization / Import / Modeling / Cluster / Driver / Java"})
create (_308:`Session` {`topic`:"Registration & Coffee"})
create (_309:`Session` {`topic`:"Coffee break"})
create (_310:`Session` {`topic`:"Coffee break"})
create (_311:`Session` {`topic`:"Lunch"})
create (_312:`Session` {`topic`:"Coffee break"})
create (_313:`Session` {`topic`:"Coffee break"})
create (_314:`Session` {`topic`:"GraphReception"})
create (_315:`Meta_Node` {`name`:"Room"})
create (_316:`Meta_Node` {`name`:"Venue"})
create (_317:`Meta_Node` {`name`:"Day"})
create (_318:`Meta_Node` {`name`:"Conference"})
create (_319:`Meta_Node` {`name`:"Speaker"})
create (_320:`Meta_Node` {`name`:"Company"})
create (_321:`Meta_Node` {`name`:"Session"})
create (_322:`Meta_Node` {`name`:"Time"})
create (_323:`Meta_Node` {`name`:"Track"})
create _164-[:`LOCATED_IN`]->_163
create _165-[:`LOCATED_IN`]->_163
create _166-[:`LOCATED_IN`]->_163
create _168-[:`LOCATED_IN`]->_167
create _170-[:`LOCATED_IN`]->_169
create _171-[:`LOCATED_IN`]->_163
create _172-[:`LOCATED_IN`]->_163
create _173-[:`LOCATED_IN`]->_163
create _174-[:`PART_OF`]->_162
create _174-[:`DAY_BEFORE`]->_178
create _178-[:`PART_OF`]->_162
create _185-[:`WORKS_FOR`]->_223
create _185-[:`PRESENTS`]->_269
create _186-[:`WORKS_FOR`]->_223
create _186-[:`PRESENTS`]->_269
create _187-[:`WORKS_FOR`]->_223
create _187-[:`PRESENTS`]->_270
create _188-[:`WORKS_FOR`]->_223
create _188-[:`PRESENTS`]->_282
create _188-[:`PRESENTS`]->_270
create _189-[:`WORKS_FOR`]->_223
create _189-[:`PRESENTS`]->_271
create _190-[:`WORKS_FOR`]->_223
create _190-[:`PRESENTS`]->_271
create _191-[:`WORKS_FOR`]->_223
create _191-[:`PRESENTS`]->_272
create _192-[:`WORKS_FOR`]->_223
create _192-[:`PRESENTS`]->_306
create _192-[:`PRESENTS`]->_289
create _192-[:`PRESENTS`]->_305
create _192-[:`PRESENTS`]->_274
create _192-[:`PRESENTS`]->_307
create _192-[:`PRESENTS`]->_273
create _193-[:`WORKS_FOR`]->_224
create _193-[:`PRESENTS`]->_274
create _194-[:`WORKS_FOR`]->_223
create _194-[:`PRESENTS`]->_275
create _194-[:`PRESENTS`]->_302
create _195-[:`WORKS_FOR`]->_223
create _195-[:`PRESENTS`]->_275
create _195-[:`PRESENTS`]->_302
create _196-[:`WORKS_FOR`]->_223
create _196-[:`PRESENTS`]->_276
create _197-[:`WORKS_FOR`]->_223
create _197-[:`PRESENTS`]->_277
create _198-[:`WORKS_FOR`]->_225
create _198-[:`PRESENTS`]->_278
create _199-[:`WORKS_FOR`]->_226
create _199-[:`PRESENTS`]->_279
create _200-[:`WORKS_FOR`]->_227
create _200-[:`PRESENTS`]->_280
create _201-[:`WORKS_FOR`]->_228
create _201-[:`PRESENTS`]->_281
create _202-[:`WORKS_FOR`]->_223
create _202-[:`PRESENTS`]->_283
create _203-[:`WORKS_FOR`]->_229
create _203-[:`PRESENTS`]->_284
create _204-[:`WORKS_FOR`]->_230
create _204-[:`PRESENTS`]->_285
create _205-[:`WORKS_FOR`]->_231
create _205-[:`PRESENTS`]->_286
create _206-[:`WORKS_FOR`]->_232
create _206-[:`PRESENTS`]->_287
create _207-[:`WORKS_FOR`]->_223
create _207-[:`PRESENTS`]->_288
create _208-[:`WORKS_FOR`]->_233
create _208-[:`PRESENTS`]->_289
create _209-[:`WORKS_FOR`]->_234
create _209-[:`PRESENTS`]->_290
create _210-[:`WORKS_FOR`]->_235
create _210-[:`PRESENTS`]->_291
create _211-[:`WORKS_FOR`]->_236
create _211-[:`PRESENTS`]->_292
create _212-[:`WORKS_FOR`]->_237
create _212-[:`PRESENTS`]->_293
create _213-[:`WORKS_FOR`]->_223
create _213-[:`PRESENTS`]->_294
create _214-[:`WORKS_FOR`]->_223
create _214-[:`PRESENTS`]->_295
create _214-[:`PRESENTS`]->_307
create _214-[:`PRESENTS`]->_304
create _214-[:`PRESENTS`]->_303
create _215-[:`WORKS_FOR`]->_238
create _215-[:`PRESENTS`]->_296
create _216-[:`WORKS_FOR`]->_239
create _216-[:`PRESENTS`]->_297
create _217-[:`WORKS_FOR`]->_240
create _217-[:`PRESENTS`]->_298
create _218-[:`WORKS_FOR`]->_233
create _218-[:`PRESENTS`]->_299
create _219-[:`WORKS_FOR`]->_223
create _219-[:`PRESENTS`]->_300
create _220-[:`WORKS_FOR`]->_223
create _220-[:`PRESENTS`]->_301
create _221-[:`WORKS_FOR`]->_223
create _221-[:`PRESENTS`]->_306
create _221-[:`PRESENTS`]->_303
create _221-[:`PRESENTS`]->_305
create _221-[:`PRESENTS`]->_304
create _222-[:`WORKS_FOR`]->_223
create _222-[:`PRESENTS`]->_305
create _222-[:`PRESENTS`]->_306
create _241-[:`PART_OF`]->_174
create _241-[:`FOLLOWED_BY`]->_246
create _242-[:`PART_OF`]->_174
create _242-[:`FOLLOWED_BY`]->_247
create _243-[:`PART_OF`]->_174
create _243-[:`FOLLOWED_BY`]->_242
create _244-[:`PART_OF`]->_174
create _244-[:`FOLLOWED_BY`]->_245
create _245-[:`PART_OF`]->_174
create _246-[:`PART_OF`]->_174
create _246-[:`FOLLOWED_BY`]->_243
create _247-[:`PART_OF`]->_174
create _247-[:`FOLLOWED_BY`]->_244
create _248-[:`PART_OF`]->_178
create _248-[:`FOLLOWED_BY`]->_249
create _249-[:`PART_OF`]->_178
create _249-[:`FOLLOWED_BY`]->_250
create _250-[:`PART_OF`]->_178
create _250-[:`FOLLOWED_BY`]->_251
create _251-[:`PART_OF`]->_178
create _251-[:`FOLLOWED_BY`]->_252
create _252-[:`PART_OF`]->_178
create _252-[:`FOLLOWED_BY`]->_253
create _253-[:`PART_OF`]->_178
create _253-[:`FOLLOWED_BY`]->_254
create _254-[:`PART_OF`]->_178
create _254-[:`FOLLOWED_BY`]->_255
create _255-[:`PART_OF`]->_178
create _255-[:`FOLLOWED_BY`]->_256
create _256-[:`PART_OF`]->_178
create _256-[:`FOLLOWED_BY`]->_257
create _257-[:`PART_OF`]->_178
create _257-[:`FOLLOWED_BY`]->_258
create _258-[:`PART_OF`]->_178
create _258-[:`FOLLOWED_BY`]->_259
create _259-[:`PART_OF`]->_178
create _259-[:`FOLLOWED_BY`]->_260
create _260-[:`PART_OF`]->_178
create _260-[:`FOLLOWED_BY`]->_261
create _261-[:`PART_OF`]->_178
create _261-[:`FOLLOWED_BY`]->_262
create _262-[:`PART_OF`]->_178
create _262-[:`FOLLOWED_BY`]->_263
create _263-[:`PART_OF`]->_178
create _263-[:`FOLLOWED_BY`]->_264
create _264-[:`PART_OF`]->_178
create _264-[:`FOLLOWED_BY`]->_265
create _265-[:`PART_OF`]->_178
create _265-[:`FOLLOWED_BY`]->_266
create _266-[:`PART_OF`]->_178
create _266-[:`FOLLOWED_BY`]->_267
create _267-[:`PART_OF`]->_178
create _267-[:`FOLLOWED_BY`]->_268
create _268-[:`PART_OF`]->_178
create _269-[:`STARTS_AT`]->_241
create _269-[:`ENDS_AT`]->_242
create _269-[:`HELD_IN_ROOM`]->_164
create _269-[:`PART_OF_TRACK`]->_175
create _270-[:`STARTS_AT`]->_241
create _270-[:`ENDS_AT`]->_242
create _270-[:`HELD_IN_ROOM`]->_165
create _270-[:`PART_OF_TRACK`]->_175
create _271-[:`STARTS_AT`]->_241
create _271-[:`ENDS_AT`]->_243
create _271-[:`HELD_IN_ROOM`]->_166
create _271-[:`PART_OF_TRACK`]->_175
create _272-[:`STARTS_AT`]->_244
create _272-[:`ENDS_AT`]->_245
create _272-[:`HELD_IN_ROOM`]->_168
create _272-[:`PART_OF_TRACK`]->_176
create _273-[:`STARTS_AT`]->_246
create _273-[:`ENDS_AT`]->_242
create _273-[:`HELD_IN_ROOM`]->_170
create _273-[:`PART_OF_TRACK`]->_177
create _274-[:`STARTS_AT`]->_247
create _274-[:`ENDS_AT`]->_245
create _274-[:`HELD_IN_ROOM`]->_170
create _274-[:`PART_OF_TRACK`]->_177
create _275-[:`STARTS_AT`]->_249
create _275-[:`ENDS_AT`]->_250
create _275-[:`HELD_IN_ROOM`]->_172
create _275-[:`PART_OF_TRACK`]->_180
create _276-[:`STARTS_AT`]->_250
create _276-[:`ENDS_AT`]->_251
create _276-[:`HELD_IN_ROOM`]->_172
create _276-[:`PART_OF_TRACK`]->_180
create _277-[:`STARTS_AT`]->_251
create _277-[:`ENDS_AT`]->_252
create _277-[:`HELD_IN_ROOM`]->_172
create _277-[:`PART_OF_TRACK`]->_180
create _278-[:`STARTS_AT`]->_253
create _278-[:`ENDS_AT`]->_254
create _278-[:`HELD_IN_ROOM`]->_164
create _278-[:`PART_OF_TRACK`]->_181
create _279-[:`STARTS_AT`]->_254
create _279-[:`ENDS_AT`]->_255
create _279-[:`HELD_IN_ROOM`]->_164
create _279-[:`PART_OF_TRACK`]->_181
create _280-[:`STARTS_AT`]->_253
create _280-[:`ENDS_AT`]->_254
create _280-[:`HELD_IN_ROOM`]->_165
create _280-[:`PART_OF_TRACK`]->_182
create _281-[:`STARTS_AT`]->_254
create _281-[:`ENDS_AT`]->_255
create _281-[:`HELD_IN_ROOM`]->_165
create _281-[:`PART_OF_TRACK`]->_182
create _282-[:`STARTS_AT`]->_253
create _282-[:`ENDS_AT`]->_254
create _282-[:`HELD_IN_ROOM`]->_166
create _282-[:`PART_OF_TRACK`]->_183
create _283-[:`STARTS_AT`]->_254
create _283-[:`ENDS_AT`]->_255
create _283-[:`HELD_IN_ROOM`]->_166
create _283-[:`PART_OF_TRACK`]->_183
create _284-[:`STARTS_AT`]->_256
create _284-[:`ENDS_AT`]->_257
create _284-[:`HELD_IN_ROOM`]->_164
create _284-[:`PART_OF_TRACK`]->_181
create _285-[:`STARTS_AT`]->_257
create _285-[:`ENDS_AT`]->_258
create _285-[:`HELD_IN_ROOM`]->_164
create _285-[:`PART_OF_TRACK`]->_181
create _286-[:`STARTS_AT`]->_256
create _286-[:`ENDS_AT`]->_257
create _286-[:`HELD_IN_ROOM`]->_165
create _286-[:`PART_OF_TRACK`]->_182
create _287-[:`STARTS_AT`]->_257
create _287-[:`ENDS_AT`]->_258
create _287-[:`HELD_IN_ROOM`]->_165
create _287-[:`PART_OF_TRACK`]->_182
create _288-[:`STARTS_AT`]->_256
create _288-[:`ENDS_AT`]->_257
create _288-[:`HELD_IN_ROOM`]->_166
create _288-[:`PART_OF_TRACK`]->_183
create _289-[:`STARTS_AT`]->_257
create _289-[:`ENDS_AT`]->_258
create _289-[:`HELD_IN_ROOM`]->_166
create _289-[:`PART_OF_TRACK`]->_183
create _290-[:`STARTS_AT`]->_259
create _290-[:`ENDS_AT`]->_260
create _290-[:`HELD_IN_ROOM`]->_164
create _290-[:`PART_OF_TRACK`]->_181
create _291-[:`STARTS_AT`]->_260
create _291-[:`ENDS_AT`]->_261
create _291-[:`HELD_IN_ROOM`]->_164
create _291-[:`PART_OF_TRACK`]->_181
create _292-[:`STARTS_AT`]->_259
create _292-[:`ENDS_AT`]->_260
create _292-[:`HELD_IN_ROOM`]->_165
create _292-[:`PART_OF_TRACK`]->_182
create _293-[:`STARTS_AT`]->_260
create _293-[:`ENDS_AT`]->_261
create _293-[:`HELD_IN_ROOM`]->_165
create _293-[:`PART_OF_TRACK`]->_182
create _294-[:`STARTS_AT`]->_259
create _294-[:`ENDS_AT`]->_260
create _294-[:`HELD_IN_ROOM`]->_166
create _294-[:`PART_OF_TRACK`]->_183
create _295-[:`STARTS_AT`]->_260
create _295-[:`ENDS_AT`]->_261
create _295-[:`HELD_IN_ROOM`]->_166
create _295-[:`PART_OF_TRACK`]->_183
create _296-[:`STARTS_AT`]->_262
create _296-[:`ENDS_AT`]->_263
create _296-[:`HELD_IN_ROOM`]->_164
create _296-[:`PART_OF_TRACK`]->_182
create _297-[:`STARTS_AT`]->_263
create _297-[:`ENDS_AT`]->_264
create _297-[:`HELD_IN_ROOM`]->_164
create _297-[:`PART_OF_TRACK`]->_181
create _298-[:`STARTS_AT`]->_262
create _298-[:`ENDS_AT`]->_263
create _298-[:`HELD_IN_ROOM`]->_165
create _298-[:`PART_OF_TRACK`]->_182
create _299-[:`STARTS_AT`]->_263
create _299-[:`ENDS_AT`]->_264
create _299-[:`HELD_IN_ROOM`]->_165
create _299-[:`PART_OF_TRACK`]->_182
create _300-[:`STARTS_AT`]->_262
create _300-[:`ENDS_AT`]->_263
create _300-[:`HELD_IN_ROOM`]->_166
create _300-[:`PART_OF_TRACK`]->_183
create _301-[:`STARTS_AT`]->_265
create _301-[:`ENDS_AT`]->_266
create _301-[:`HELD_IN_ROOM`]->_172
create _301-[:`PART_OF_TRACK`]->_180
create _302-[:`STARTS_AT`]->_266
create _302-[:`ENDS_AT`]->_267
create _302-[:`HELD_IN_ROOM`]->_172
create _302-[:`PART_OF_TRACK`]->_180
create _303-[:`STARTS_AT`]->_253
create _303-[:`ENDS_AT`]->_255
create _303-[:`HELD_IN_ROOM`]->_173
create _303-[:`PART_OF_TRACK`]->_184
create _304-[:`STARTS_AT`]->_256
create _304-[:`ENDS_AT`]->_258
create _304-[:`HELD_IN_ROOM`]->_173
create _304-[:`PART_OF_TRACK`]->_184
create _305-[:`STARTS_AT`]->_259
create _305-[:`ENDS_AT`]->_261
create _305-[:`HELD_IN_ROOM`]->_173
create _305-[:`PART_OF_TRACK`]->_184
create _306-[:`STARTS_AT`]->_262
create _306-[:`ENDS_AT`]->_264
create _306-[:`HELD_IN_ROOM`]->_173
create _306-[:`PART_OF_TRACK`]->_184
create _307-[:`STARTS_AT`]->_266
create _307-[:`ENDS_AT`]->_268
create _307-[:`HELD_IN_ROOM`]->_173
create _307-[:`PART_OF_TRACK`]->_184
create _308-[:`STARTS_AT`]->_248
create _308-[:`ENDS_AT`]->_249
create _308-[:`HELD_IN_ROOM`]->_171
create _308-[:`PART_OF_TRACK`]->_179
create _309-[:`STARTS_AT`]->_252
create _309-[:`ENDS_AT`]->_253
create _309-[:`HELD_IN_ROOM`]->_171
create _309-[:`PART_OF_TRACK`]->_179
create _310-[:`STARTS_AT`]->_255
create _310-[:`ENDS_AT`]->_256
create _310-[:`HELD_IN_ROOM`]->_171
create _310-[:`PART_OF_TRACK`]->_179
create _311-[:`STARTS_AT`]->_258
create _311-[:`ENDS_AT`]->_259
create _311-[:`HELD_IN_ROOM`]->_171
create _311-[:`PART_OF_TRACK`]->_179
create _312-[:`STARTS_AT`]->_261
create _312-[:`ENDS_AT`]->_262
create _312-[:`HELD_IN_ROOM`]->_171
create _312-[:`PART_OF_TRACK`]->_179
create _313-[:`STARTS_AT`]->_264
create _313-[:`ENDS_AT`]->_265
create _313-[:`HELD_IN_ROOM`]->_171
create _313-[:`PART_OF_TRACK`]->_179
create _314-[:`STARTS_AT`]->_267
create _314-[:`ENDS_AT`]->_268
create _314-[:`HELD_IN_ROOM`]->_171
create _314-[:`PART_OF_TRACK`]->_179
create _315-[:`META_RELATIONSHIP` {`name`:"LOCATED_IN"}]->_316
create _317-[:`META_RELATIONSHIP` {`name`:"PART_OF"}]->_318
create _317-[:`META_RELATIONSHIP` {`name`:"DAY_BEFORE"}]->_317
create _319-[:`META_RELATIONSHIP` {`name`:"PRESENTS"}]->_321
create _319-[:`META_RELATIONSHIP` {`name`:"WORKS_FOR"}]->_320
create _321-[:`META_RELATIONSHIP` {`name`:"ENDS_AT"}]->_322
create _321-[:`META_RELATIONSHIP` {`name`:"STARTS_AT"}]->_322
create _321-[:`META_RELATIONSHIP` {`name`:"PART_OF_TRACK"}]->_323
create _321-[:`META_RELATIONSHIP` {`name`:"HELD_IN_ROOM"}]->_315
create _322-[:`META_RELATIONSHIP` {`name`:"PART_OF"}]->_317
create _322-[:`META_RELATIONSHIP` {`name`:"FOLLOWED_BY"}]->_322

I can actually look at the Model inside the graph now - as I have added a Meta-graph in the gist too:

//the meta-graph
MATCH (m:Meta_Node)-[r:META_RELATIONSHIP]-()
return m,r

And then we can see at the entire schedule-graph that we have added. Here is is:

Granted, that looks a bit like a hairball. But let’s see what the schedule for Day 1 looks like - the Training day.

//the schedule on Day1
MATCH (n:Day {date:20150506})--(timeslots:Time)--(s:Session)--(tr:Track)
return n,timeslots,s,tr

Let’s do the same for day 2 - just the morning sessions:

//the schedule on Day2
MATCH (n:Day {date:20150507})--(timeslots:Time)--(s:Session)--(tr:Track)
where timeslots.time < 1301
return n,timeslots,s,tr

And here are the afternoon sessions:

//the schedule on Day2
MATCH (n:Day {date:20150507})--(timeslots:Time)--(s:Session)--(tr:Track)
where timeslots.time > 1300
return n,timeslots,s,tr

Let’s look at talks with 2 speakers

//talks with 2 speakers
match (s1:Speaker)--(s:Session)--(s2:Speaker) , (s)--(tr:Track) where id(s1)<id(s2) return s.topic, s1.name, s2.name, tr.name

Or let’s look at it as a network:

//talks with 2 speakers
match (s1:Speaker)--(s:Session)--(s2:Speaker), (s)--(tr:Track) where id(s1)<id(s2) return s,s1,s2,tr

Just a start…​

There are so many other things that we could look at. Use the console below to explore if you are interested in more.

I hope this gist was interesting for you, and that we will see each other at the conference. Actually: if you have come this far and read the entire gist: here’s a reward - use the discount code GRAPHGIST on the registration site for a 33% discount.

This gist was created by Rik Van Bruggen

//load the GraphConnect Europe 2015 schedule
create (c:Conference {name:"GraphConnect Europe 2015"});
//first load the NEVER-null items
load csv with headers from "https://gist.githubusercontent.com/rvanbruggen/ff44b7dc37bb4534df2e/raw/aed34a149f04798e351f508a18492237fcccfb62/schedule.csv" as csv
merge (v:Venue {name: csv.Venue})
merge (r:Room {name: csv.Room})
merge (r)-[:LOCATED_IN]->(v)
merge (d:Day {date: toInt(csv.Date)})
merge (tr:Track {name: csv.Track});
//connect the days to the conference
match (d:Day), (c:Conference {name:"GraphConnect Europe 2015"})
merge (d)-[:PART_OF]->(c);
//connect the days
match (d1:Day), (d2:Day)
where d1.date < d2.date
create (d1)-[:DAY_BEFORE]->(d2);
//load the GraphConnect Europe 2015 speakers (they can be null)
load csv with headers from "https://gist.githubusercontent.com/rvanbruggen/ff44b7dc37bb4534df2e/raw/aed34a149f04798e351f508a18492237fcccfb62/schedule.csv" as csv
with csv
where csv.Speaker is not null
merge (sp:Speaker {name: csv.Speaker});
//add the titles to the speakers (they can be null)
load csv with headers from "https://gist.githubusercontent.com/rvanbruggen/ff44b7dc37bb4534df2e/raw/aed34a149f04798e351f508a18492237fcccfb62/schedule.csv" as csv
with csv
where csv.Title is not null
match (sp:Speaker {name: csv.Speaker})
set sp.title = csv.Title;
//load the GraphConnect Europe 2015 companies (they can be null)
load csv with headers from "https://gist.githubusercontent.com/rvanbruggen/ff44b7dc37bb4534df2e/raw/aed34a149f04798e351f508a18492237fcccfb62/schedule.csv" as csv
with csv
where csv.Company is not null
merge (co:Company {name: csv.Company});
//load the GraphConnect Europe 2015 links between speakers and companies
load csv with headers from "https://gist.githubusercontent.com/rvanbruggen/ff44b7dc37bb4534df2e/raw/aed34a149f04798e351f508a18492237fcccfb62/schedule.csv" as csv
match (co:Company {name: csv.Company}), (sp:Speaker {name: csv.Speaker})
merge (sp)-[:WORKS_FOR]->(co);
//create the timeline for day1
//connect the timeslots to the day
load csv with headers from "https://gist.githubusercontent.com/rvanbruggen/ff44b7dc37bb4534df2e/raw/aed34a149f04798e351f508a18492237fcccfb62/schedule.csv" as csv
with csv
where toInt(csv.Date) = 20150506
match (d:Day {date: 20150506})
merge (t1:Time {time: toInt(csv.Starttime)})-[:PART_OF]->(d)
merge (t2:Time {time: toInt(csv.Endtime)})-[:PART_OF]->(d);
//iterate through the sorted timeslots, and connect them to a timeline
//see http://www.markhneedham.com/blog/2014/04/19/neo4j-cypher-creating-relationships-between-a-collection-of-nodes-invalid-input/ for inspiration
match (t:Time)--(d:Day {date: 20150506})
with t
order by t.time ASC
with collect(t) as times
foreach (i in range(0,length(times)-2) |
foreach (t1 in [times[i]] |
foreach (t2 in [times[i+1]] |
merge (t1)-[:FOLLOWED_BY]->(t2))));
//create the timeline for day2
//connect the timeslots to the day
load csv with headers from "https://gist.githubusercontent.com/rvanbruggen/ff44b7dc37bb4534df2e/raw/aed34a149f04798e351f508a18492237fcccfb62/schedule.csv" as csv
with csv
where toInt(csv.Date) = 20150507
match (d:Day {date: 20150507})
merge (t1:Time {time: toInt(csv.Starttime)})-[:PART_OF]->(d)
merge (t2:Time {time: toInt(csv.Endtime)})-[:PART_OF]->(d);
//iterate through the sorted timeslots, and connect them to a timeline
//see http://www.markhneedham.com/blog/2014/04/19/neo4j-cypher-creating-relationships-between-a-collection-of-nodes-invalid-input/ for inspiration
match (t:Time)--(d:Day {date: 20150507})
with t
order by t.time ASC
with collect(t) as times
foreach (i in range(0,length(times)-2) |
foreach (t1 in [times[i]] |
foreach (t2 in [times[i+1]] |
merge (t1)-[:FOLLOWED_BY]->(t2))));
//add the conference sessions
load csv with headers from "https://gist.githubusercontent.com/rvanbruggen/ff44b7dc37bb4534df2e/raw/aed34a149f04798e351f508a18492237fcccfb62/schedule.csv" as csv
match (r:Room {name: csv.Room}),
(t1:Time {time: toInt(csv.Starttime)})--(d:Day {date: toInt(csv.Date)})--(t2:Time {time: toInt(csv.Endtime)}), (tr:Track {name: csv.Track}), (sp:Speaker {name: csv.Speaker})
merge (t1)<-[:STARTS_AT]-(s:Session {topic: csv.Topic})-[:ENDS_AT]->(t2)
merge (s)-[:HELD_IN_ROOM]->(r)
merge (sp)-[:PRESENTS]->(s)
merge (s)-[:PART_OF_TRACK]->(tr);
//add the FIKA sessions
load csv with headers from "https://gist.githubusercontent.com/rvanbruggen/ff44b7dc37bb4534df2e/raw/aed34a149f04798e351f508a18492237fcccfb62/schedule.csv" as csv
match (r:Room {name: csv.Room}),
(t1:Time {time: toInt(csv.Starttime)})--(d:Day {date: toInt(csv.Date)})--(t2:Time {time: toInt(csv.Endtime)}), (tr:Track {name: csv.Track})
merge (t1)<-[:STARTS_AT]-(s:Session {topic: csv.Topic})-[:ENDS_AT]->(t2)
merge (s)-[:HELD_IN_ROOM]->(r)
merge (s)-[:PART_OF_TRACK]->(tr);
//generate the GraphConnect Schedule Graph
MATCH (a)-[r]->(b)
WITH labels(a) AS a_labels,type(r) AS rel_type,labels(b) AS b_labels
UNWIND a_labels as l
UNWIND b_labels as l2
MERGE (a:Meta_Node {name:l})
MERGE (b:Meta_Node {name:l2})
MERGE (a)-[:META_RELATIONSHIP {name:rel_type}]->(b)
RETURN distinct l as first_node, rel_type as connected_by, l2 as second_node;
Venue Room Date Starttime Endtime Speaker Title Company Topic Track
etc. Liverpool Street Broadgate 2 20150506 900 1700 Alistair Jones Developer Neo Technology Fundamentals Training
etc. Liverpool Street Broadgate 2 20150506 900 1700 Stefan Kolmar Field Engineer Neo Technology Fundamentals Training
etc. Liverpool Street Broadgate 20150506 900 1700 Pieter Cailliau Field Engineer Neo Technology Data Modeling Training
etc. Liverpool Street Broadgate 20150506 900 1700 Ian Robinson DEveloper Neo Technology Data Modeling Training
etc. Liverpool Street London Wall 20150506 900 1230 Gabe Stanek Field Engineer Neo Technology Advanced Cypher Training
etc. Liverpool Street London Wall 20150506 900 1230 David Montag Field Engineer Neo Technology Advanced Cypher Training
Apex Hotel Apex Hotel - dedicated room 20150506 1930 2200 Erik Nolten Director Partner Program Neo Technology Partner Dinner Networking
Doggets Coat and Badge Top Floor Terrace Bar 20150506 1100 1700 Michael Hunger Developer Evangelist Neo Technology Ecosystem Partner Summit Community
Doggets Coat and Badge Top Floor Terrace Bar 20150506 1830 2200 Michael Hunger Developer Evangelist Neo Technology Hackathon Community
Doggets Coat and Badge Top Floor Terrace Bar 20150506 1830 2200 Alberto Perdomo CEO GrapheneDB Hackathon Community
etc. Liverpool Street Reception area 20150507 830 915 Registration & Coffee Fika
etc. Liverpool Street Keynote 20150507 915 930 Holger Temme Director Central Europe & Middle East Neo Technology Welcome & Introduction to GraphConnect Keynote
etc. Liverpool Street Keynote 20150507 915 930 Rik Van Bruggen Director Northern Europe Neo Technology Welcome & Introduction to GraphConnect Keynote
etc. Liverpool Street Keynote 20150507 930 1015 Emil Eifrem CEO Neo Technology Opening Keynote Keynote
etc. Liverpool Street Keynote 20150507 1015 1030 Utpal Bhatt VP Marketing Neo Technology Neo4j typical use cases Keynote
etc. Liverpool Street Reception area 20150507 1030 1045 Coffee break Fika
etc. Liverpool Street Broadgate 2 20150507 1045 1115 Hans Verhoef Architect Royal Netherlands Meteorological Institute Monitoring using 'Big Data' tooling (Network & IT Management) Business Impact Track
etc. Liverpool Street Broadgate 2 20150507 1115 1145 Matt Wright CTO Stitched.io Social - Superpowers for Recruitment Business Impact Track
etc. Liverpool Street Broadgate 20150507 1045 1115 Oliver Tigges InnoQ Software dependency analysis with graph databases (Neo4j) Community Track
etc. Liverpool Street Broadgate 20150507 1115 1145 Lorenzo Speranzoni LARUS Business Automation Srl Managing Connected Big Data in Art with Neo4j Graph Database Community Track
etc. Liverpool Street London Wall 20150507 1045 1115 Ian Robinson Engineer Neo Technology From Zero to Graph: Model Practictioner Track
etc. Liverpool Street London Wall 20150507 1115 1145 Philip Rathle VP Product Neo Technology Deep dive into product roadmap Practictioner Track
etc. Liverpool Street Reception area 20150507 1145 1200 Coffee break Fika
etc. Liverpool Street Broadgate 2 20150507 1200 1230 Nicolas Rouyer Architect Orange Predict Incidents with Neo4j (Network & IT Management) Business Impact Track
etc. Liverpool Street Broadgate 2 20150507 1230 1300 Brendan Madden CEO Tom Sawyer Graph Visualisation and Analysis Business Impact Track
etc. Liverpool Street Broadgate 20150507 1200 1230 David Simons Softwire Graph Theory in Practice Community Track
etc. Liverpool Street Broadgate 20150507 1230 1300 Felienne Hermans Professor Delft University of Technology Spreadsheets are graphs! Community Track
etc. Liverpool Street London Wall 20150507 1200 1230 Mark Needham Engineer Neo Technology From Zero to Graph: Import Practictioner Track
etc. Liverpool Street London Wall 20150507 1230 1300 Vince Bickers Consultant GraphAware Spring Data Neo4j Practictioner Track
etc. Liverpool Street London Wall 20150507 1230 1300 Michael Hunger Developer Evangelist Neo Technology Spring Data Neo4j Practictioner Track
etc. Liverpool Street Reception area 20150507 1300 1415 Lunch Fika
etc. Liverpool Street Broadgate 2 20150507 1415 1445 Aaron Wallace Principal Product Manager Pitney Bowes Master Data Management Business Impact Track
etc. Liverpool Street Broadgate 2 20150507 1445 1515 Tom Benedictus CEO Trifork Leeds Trifork Realistic deep learning with Neo4j Business Impact Track
etc. Liverpool Street Broadgate 20150507 1415 1445 Peter Wiles Chillisoft Solutions Unlock value from the connectedness in existing relational data Community Track
etc. Liverpool Street Broadgate 20150507 1445 1515 Axel Morgner CEO Structr The Graph Application Platform Community Track
etc. Liverpool Street London Wall 20150507 1415 1445 Nicole White Data Scientist Neo Technology From Zero to Graph: Query Practictioner Track
etc. Liverpool Street London Wall 20150507 1445 1515 Brian Underwood Developer Evangelist Neo Technology From Zero to GraphGist Practictioner Track
etc. Liverpool Street Reception area 20150507 1515 1530 Coffee break Fika
etc. Liverpool Street Broadgate 2 20150507 1530 1600 Graham York Sentience Graph-based search Community Track
etc. Liverpool Street Broadgate 2 20150507 1600 1630 Sokratis Kartelias Senior Project Manager adidas Delivering the most relevant and compelling digital content to adidas consumers (Recommendations) Business Impact Track
etc. Liverpool Street Broadgate 20150507 1530 1600 Sebastien Heymann CEO Linkurious Large-scale graph visualization on the web Community Track
etc. Liverpool Street Broadgate 20150507 1600 1630 Christophe Willemsen Consultant GraphAware Graphgen - Graph prototyping made easy Community Track
etc. Liverpool Street London Wall 20150507 1530 1600 Stefan Armbruster Field Engineer Neo Technology From Zero to Graph: Scale Practictioner Track
etc. Liverpool Street Reception area 20150507 1630 1645 Coffee break Fika
etc. Liverpool Street Keynote 20150507 1645 1730 Jim Webber Chief Scientist Neo Technology Closing Keynote - Impossible is nothing with Graphs Keynote
etc. Liverpool Street Keynote 20150507 1730 1745 Holger Temme Director Central Europe & Middle East Neo Technology Prize draw and wrap-up Keynote
etc. Liverpool Street Keynote 20150507 1730 1745 Rik Van Bruggen Director Northern Europe Neo Technology Prize draw and wrap-up Keynote
etc. Liverpool Street Reception area 20150507 1745 2030 GraphReception Fika
etc. Liverpool Street GraphHospital 20150507 1045 1145 Ryan Boyd Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1045 1145 Brian Underwood Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1200 1300 Ryan Boyd Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1200 1300 Brian Underwood Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1415 1515 Ryan Boyd Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1415 1515 Michael Hunger Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1415 1515 Andreas Kolleger Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1530 1630 Ryan Boyd Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1530 1630 Michael Hunger Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1530 1630 Andreas Kolleger Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1730 2030 Brian Underwood Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
etc. Liverpool Street GraphHospital 20150507 1730 2030 Michael Hunger Neo Technology Cypher / Visualization / Import / Modeling / Cluster / Driver / Java GraphClinic
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment