Skip to content

Instantly share code, notes, and snippets.

@rtack
Last active October 26, 2016 15:27
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 rtack/89e754fe8de28dab362f684d7d4c1133 to your computer and use it in GitHub Desktop.
Save rtack/89e754fe8de28dab362f684d7d4c1133 to your computer and use it in GitHub Desktop.

Tennis Men’s singles 2016 finalists and top 100 players

Introduction

I wanted to run some analysis on sports data with the goal to get different and or more info then what is presented in the newspapers. I choose tennis with the idea to compare countries, their players and how well they do. To not have too many nodes I restricted the data to the ATP men’s singles top 100 ranking and the finals of the 2016 tournaments.

Domain

Tennis Players have an ATP ranking that is updated weekly. They are from a Country. In singles tennis two players compete against each other in a Match which is played at a Tournament. The player who wins two sets (best of 3) advances to the next round. The loser is out. The winner of the final round wins the tournament. Tournaments belong to different series. The Grand Slam series is the most prestigious one and also gives the most points for the ranking. Matches in a Grand Slam tournament are best of 5.

The graph shows the finalists of all the 2016 tournaments up until the US Open. It also includes data from all the top 100 players.

The following drawing shows the domain model:

qYKaUoV

Setup - Importing all data

create (_10120:`Country` {`ioc_code`:"SRB", `name`:"Serbia"})
create (_10121:`Player` {`age`:29, `firstName`:"Novak", `a_lastName`:"Djokovic", `ranking`:1})
create (_10122:`Country` {`ioc_code`:"GBR", `name`:"Great Britain"})
create (_10123:`Player` {`age`:29, `firstName`:"Andy", `a_lastName`:"Murray", `ranking`:2})
create (_10124:`Country` {`ioc_code`:"SUI", `name`:"Switzerland"})
create (_10125:`Player` {`age`:31, `firstName`:"Stan", `a_lastName`:"Wawrinka", `ranking`:3})
create (_10126:`Player` {`age`:35, `firstName`:"Roger", `a_lastName`:"Federer", `ranking`:4})
create (_10127:`Country` {`ioc_code`:"ESP", `name`:"Spain"})
create (_10128:`Player` {`age`:30, `firstName`:"Rafael", `a_lastName`:"Nadal", `ranking`:5})
create (_10129:`Country` {`ioc_code`:"CAN", `name`:"Canada"})
create (_10130:`Player` {`age`:25, `firstName`:"Milos", `a_lastName`:"Raonic", `ranking`:6})
create (_10131:`Country` {`ioc_code`:"JPN", `name`:"Japan"})
create (_10132:`Player` {`age`:26, `firstName`:"Kei", `a_lastName`:"Nishikori", `ranking`:7})
create (_10133:`Country` {`ioc_code`:"CZE", `name`:"Czech Republic"})
create (_10134:`Player` {`age`:30, `firstName`:"Tomas", `a_lastName`:"Berdych", `ranking`:8})
create (_10135:`Country` {`ioc_code`:"CRO", `name`:"Croatia"})
create (_10136:`Player` {`age`:27, `firstName`:"Marin", `a_lastName`:"Cilic", `ranking`:9})
create (_10137:`Country` {`ioc_code`:"AUT", `name`:"Austria"})
create (_10138:`Player` {`age`:22, `firstName`:"Dominic", `a_lastName`:"Thiem", `ranking`:10})
create (_10139:`Country` {`ioc_code`:"FRA", `name`:"France"})
create (_10140:`Player` {`age`:31, `firstName`:"Jo-Wilfried", `a_lastName`:"Tsonga", `ranking`:11})
create (_10141:`Player` {`age`:29, `firstName`:"Gael", `a_lastName`:"Monfils", `ranking`:12})
create (_10142:`Player` {`age`:34, `firstName`:"David", `a_lastName`:"Ferrer", `ranking`:13})
create (_10143:`Country` {`ioc_code`:"BEL", `name`:"Belgium"})
create (_10144:`Player` {`age`:25, `firstName`:"David", `a_lastName`:"Goffin", `ranking`:14})
create (_10145:`Player` {`age`:30, `firstName`:"Richard", `a_lastName`:"Gasquet", `ranking`:15})
create (_10146:`Country` {`ioc_code`:"AUS", `name`:"Australia"})
create (_10147:`Player` {`age`:21, `firstName`:"Nick", `a_lastName`:"Kyrgios", `ranking`:16})
create (_10148:`Player` {`age`:28, `firstName`:"Roberto", `a_lastName`:"Bautista Agut", `ranking`:17})
create (_10149:`Player` {`age`:34, `firstName`:"Feliciano", `a_lastName`:"Lopez", `ranking`:18})
create (_10150:`Player` {`age`:23, `firstName`:"Bernard", `a_lastName`:"Tomic", `ranking`:19})
create (_10151:`Country` {`ioc_code`:"URU", `name`:"Uruguay"})
create (_10152:`Player` {`age`:30, `firstName`:"Pablo", `a_lastName`:"Cuevas", `ranking`:20})
create (_10153:`Country` {`ioc_code`:"USA", `name`:"United States"})
create (_10154:`Player` {`age`:26, `firstName`:"Steve", `a_lastName`:"Johnson", `ranking`:21})
create (_10155:`Player` {`age`:31, `firstName`:"John", `a_lastName`:"Isner", `ranking`:22})
create (_10156:`Player` {`age`:37, `firstName`:"Ivo", `a_lastName`:"Karlovic", `ranking`:23})
create (_10157:`Country` {`ioc_code`:"BUL", `name`:"Bulgaria"})
create (_10158:`Player` {`age`:25, `firstName`:"Grigor", `a_lastName`:"Dimitrov", `ranking`:24})
create (_10159:`Country` {`ioc_code`:"RSA", `name`:"South Africa"})
create (_10160:`Player` {`age`:30, `firstName`:"Kevin", `a_lastName`:"Anderson", `ranking`:25})
create (_10161:`Player` {`age`:22, `firstName`:"Lucas", `a_lastName`:"Pouille", `ranking`:26})
create (_10162:`Country` {`ioc_code`:"GER", `name`:"Germany"})
create (_10163:`Player` {`age`:32, `firstName`:"Philipp", `a_lastName`:"Kohlschreiber", `ranking`:27})
create (_10164:`Player` {`age`:23, `firstName`:"Jack", `a_lastName`:"Sock", `ranking`:28})
create (_10165:`Player` {`age`:19, `firstName`:"Alexander", `a_lastName`:"Zverev", `ranking`:29})
create (_10166:`Country` {`ioc_code`:"SVK", `name`:"Slovakia"})
create (_10167:`Player` {`age`:27, `firstName`:"Martin", `a_lastName`:"Klizan", `ranking`:30})
create (_10168:`Player` {`age`:28, `firstName`:"Sam", `a_lastName`:"Querrey", `ranking`:31})
create (_10169:`Player` {`age`:31, `firstName`:"Gilles", `a_lastName`:"Simon", `ranking`:32})
create (_10170:`Player` {`age`:28, `firstName`:"Albert", `a_lastName`:"Ramos-Vinolas", `ranking`:33})
create (_10171:`Player` {`age`:27, `firstName`:"Benoit", `a_lastName`:"Paire", `ranking`:34})
create (_10172:`Player` {`age`:30, `firstName`:"Viktor", `a_lastName`:"Troicki", `ranking`:35})
create (_10173:`Country` {`ioc_code`:"POR", `name`:"Portugal"})
create (_10174:`Player` {`age`:27, `firstName`:"Joao", `a_lastName`:"Sousa", `ranking`:36})
create (_10175:`Country` {`ioc_code`:"LUX", `name`:"Luxembourg"})
create (_10176:`Player` {`age`:33, `firstName`:"Gilles", `a_lastName`:"Muller", `ranking`:37})
create (_10177:`Country` {`ioc_code`:"ITA", `name`:"Italy"})
create (_10178:`Player` {`age`:29, `firstName`:"Fabio", `a_lastName`:"Fognini", `ranking`:38})
create (_10179:`Player` {`age`:34, `firstName`:"Paolo", `a_lastName`:"Lorenzi", `ranking`:39})
create (_10180:`Player` {`age`:19, `firstName`:"Borna", `a_lastName`:"Coric", `ranking`:40})
create (_10181:`Player` {`age`:34, `firstName`:"Nicolas", `a_lastName`:"Mahut", `ranking`:41})
create (_10182:`Country` {`ioc_code`:"RUS", `name`:"Russia"})
create (_10183:`Player` {`age`:25, `firstName`:"Andrey", `a_lastName`:"Kuznetsov", `ranking`:42})
create (_10184:`Country` {`ioc_code`:"ARG", `name`:"Argentina"})
create (_10185:`Player` {`age`:25, `firstName`:"Federico", `a_lastName`:"Delbonis", `ranking`:43})
create (_10186:`Country` {`ioc_code`:"CYP", `name`:"Cyprus"})
create (_10187:`Player` {`age`:31, `firstName`:"Marcos", `a_lastName`:"Baghdatis", `ranking`:44})
create (_10188:`Player` {`age`:30, `firstName`:"Marcel", `a_lastName`:"Granollers", `ranking`:45})
create (_10189:`Player` {`age`:31, `firstName`:"Nicolas", `a_lastName`:"Almagro", `ranking`:46})
create (_10190:`Player` {`age`:32, `firstName`:"Fernando", `a_lastName`:"Verdasco", `ranking`:47})
create (_10191:`Player` {`age`:23, `firstName`:"Jiri", `a_lastName`:"Vesely", `ranking`:48})
create (_10192:`Player` {`age`:25, `firstName`:"Pablo", `a_lastName`:"Carreno Busta", `ranking`:49})
create (_10193:`Player` {`age`:33, `firstName`:"Guillermo", `a_lastName`:"Garcia-Lopez", `ranking`:50})
create (_10194:`Player` {`age`:26, `firstName`:"Guido", `a_lastName`:"Pella", `ranking`:51})
create (_10195:`Player` {`age`:36, `firstName`:"Stephane", `a_lastName`:"Robert", `ranking`:52})
create (_10196:`Country` {`ioc_code`:"TUN", `name`:"Tunisia"})
create (_10197:`Player` {`age`:32, `firstName`:"Malek", `a_lastName`:"Jaziri", `ranking`:53})
create (_10198:`Player` {`age`:18, `firstName`:"Taylor", `a_lastName`:"Fritz", `ranking`:54})
create (_10199:`Player` {`age`:28, `firstName`:"Adrian", `a_lastName`:"Mannarino", `ranking`:55})
create (_10200:`Player` {`age`:29, `firstName`:"Jeremy", `a_lastName`:"Chardy", `ranking`:56})
create (_10201:`Player` {`age`:27, `firstName`:"Donald", `a_lastName`:"Young", `ranking`:57})
create (_10202:`Country` {`ioc_code`:"UKR", `name`:"Ukraine"})
create (_10203:`Player` {`age`:27, `firstName`:"Alexandr", `a_lastName`:"Dolgopolov", `ranking`:58})
create (_10204:`Player` {`age`:32, `firstName`:"Florian", `a_lastName`:"Mayer", `ranking`:59})
create (_10205:`Player` {`age`:26, `firstName`:"Dusan", `a_lastName`:"Lajovic", `ranking`:60})
create (_10206:`Player` {`age`:25, `firstName`:"Gastao", `a_lastName`:"Elias", `ranking`:61})
create (_10207:`Country` {`ioc_code`:"BRA", `name`:"Brazil"})
create (_10208:`Player` {`age`:28, `firstName`:"Thomaz", `a_lastName`:"Bellucci", `ranking`:62})
create (_10209:`Player` {`age`:34, `firstName`:"Mikhail", `a_lastName`:"Youzhny", `ranking`:63})
create (_10210:`Country` {`ioc_code`:"NED", `name`:"Netherlands"})
create (_10211:`Player` {`age`:29, `firstName`:"Robin", `a_lastName`:"Haase", `ranking`:64})
create (_10212:`Player` {`age`:28, `firstName`:"Illya", `a_lastName`:"Marchenko", `ranking`:65})
create (_10213:`Country` {`ioc_code`:"KAZ", `name`:"Kazakhstan"})
create (_10214:`Player` {`age`:28, `firstName`:"Mikhail", `a_lastName`:"Kukushkin", `ranking`:66})
create (_10215:`Player` {`age`:26, `firstName`:"Daniel", `a_lastName`:"Evans", `ranking`:67})
create (_10216:`Player` {`age`:24, `firstName`:"Diego", `a_lastName`:"Schwartzman", `ranking`:68})
create (_10217:`Player` {`age`:34, `firstName`:"Paul-Henri", `a_lastName`:"Mathieu", `ranking`:69})
create (_10218:`Player` {`age`:31, `firstName`:"Horacio", `a_lastName`:"Zeballos", `ranking`:70})
create (_10219:`Country` {`ioc_code`:"BIH", `name`:"Bosnia and Herzegovina"})
create (_10220:`Player` {`age`:24, `firstName`:"Damir", `a_lastName`:"Dzumhur", `ranking`:71})
create (_10221:`Country` {`ioc_code`:"TPE", `name`:"Chinese Taipei"})
create (_10222:`Player` {`age`:33, `firstName`:"Yen-Hsun", `a_lastName`:"Lu", `ranking`:72})
create (_10223:`Player` {`age`:31, `firstName`:"Ivan", `a_lastName`:"Dodig", `ranking`:73})
create (_10224:`Player` {`age`:26, `firstName`:"Inigo", `a_lastName`:"Cervantes", `ranking`:74})
create (_10225:`Player` {`age`:33, `firstName`:"Carlos", `a_lastName`:"Berlocq", `ranking`:75})
create (_10226:`Player` {`age`:25, `firstName`:"Pierre-Hugues", `a_lastName`:"Herbert", `ranking`:76})
create (_10227:`Player` {`age`:27, `firstName`:"Aljaz", `a_lastName`:"Bedene", `ranking`:77})
create (_10228:`Player` {`age`:26, `firstName`:"Jan-Lennard", `a_lastName`:"Struff", `ranking`:78})
create (_10229:`Player` {`age`:26, `firstName`:"Evgeny", `a_lastName`:"Donskoy", `ranking`:79})
create (_10230:`Country` {`ioc_code`:"ISR", `name`:"Israel"})
create (_10231:`Player` {`age`:31, `firstName`:"Dudi", `a_lastName`:"Sela", `ranking`:80})
create (_10232:`Player` {`age`:27, `firstName`:"John", `a_lastName`:"Millman", `ranking`:81})
create (_10233:`Player` {`age`:31, `firstName`:"Lukas", `a_lastName`:"Rosol", `ranking`:82})
create (_10234:`Player` {`age`:27, `firstName`:"Yuichi", `a_lastName`:"Sugita", `ranking`:83})
create (_10235:`Country` {`ioc_code`:"DOM", `name`:"Dominican Republic"})
create (_10236:`Player` {`age`:36, `firstName`:"Victor", `a_lastName`:"Estrella Burgos", `ranking`:84})
create (_10237:`Player` {`age`:21, `firstName`:"Kyle", `a_lastName`:"Edmund", `ranking`:85})
create (_10238:`Player` {`age`:20, `firstName`:"Yoshihito", `a_lastName`:"Nishioka", `ranking`:86})
create (_10239:`Player` {`age`:31, `firstName`:"Dustin", `a_lastName`:"Brown", `ranking`:87})
create (_10240:`Player` {`age`:32, `firstName`:"Andreas", `a_lastName`:"Seppi", `ranking`:88})
create (_10241:`Country` {`ioc_code`:"LTU", `name`:"Lithuania"})
create (_10242:`Player` {`age`:26, `firstName`:"Ricardas", `a_lastName`:"Berankis", `ranking`:89})
create (_10243:`Player` {`age`:26, `firstName`:"Facundo", `a_lastName`:"Bagnis", `ranking`:90})
create (_10244:`Player` {`age`:26, `firstName`:"Gerald", `a_lastName`:"Melzer", `ranking`:91})
create (_10245:`Player` {`age`:22, `firstName`:"Jordan", `a_lastName`:"Thompson", `ranking`:92})
create (_10246:`Player` {`age`:30, `firstName`:"Sergiy", `a_lastName`:"Stakhovsky", `ranking`:93})
create (_10247:`Player` {`age`:31, `firstName`:"Konstantin", `a_lastName`:"Kravchuk", `ranking`:94})
create (_10248:`Player` {`age`:32, `firstName`:"Juan", `a_lastName`:"Monaco", `ranking`:95})
create (_10249:`Player` {`age`:20, `firstName`:"Karen", `a_lastName`:"Khachanov", `ranking`:96})
create (_10250:`Player` {`age`:35, `firstName`:"Benjamin", `a_lastName`:"Becker", `ranking`:97})
create (_10251:`Country` {`ioc_code`:"MDA", `name`:"Moldova"})
create (_10252:`Player` {`age`:26, `firstName`:"Radu", `a_lastName`:"Albot", `ranking`:98})
create (_10253:`Player` {`age`:22, `firstName`:"Thiago", `a_lastName`:"Monteiro", `ranking`:99})
create (_10254:`Player` {`age`:28, `firstName`:"Lukas", `a_lastName`:"Lacko", `ranking`:100})
create (_10255:`Country` {`ioc_code`:"LAT", `name`:"Latvia"})
create (_10256:`Player` {`age`:27, `firstName`:"Ernests", `a_lastName`:"Gulbis", `ranking`:101})
create (_10257:`Country` {`ioc_code`:"GEO", `name`:"Georgia"})
create (_10258:`Player` {`age`:24, `firstName`:"Nikoloz", `a_lastName`:"Basilashvili", `ranking`:102})
create (_10259:`Player` {`age`:23, `firstName`:"Roberto", `a_lastName`:"Carballes Baena", `ranking`:103})
create (_10260:`Player` {`age`:23, `firstName`:"Taro", `a_lastName`:"Daniel", `ranking`:104})
create (_10261:`Player` {`age`:32, `firstName`:"Rajeev", `a_lastName`:"Ram", `ranking`:105})
create (_10262:`Player` {`age`:31, `firstName`:"Teymuraz", `a_lastName`:"Gabashvili", `ranking`:106})
create (_10263:`Country` {`ioc_code`:"UZB", `name`:"Uzbekistan"})
create (_10264:`Player` {`age`:29, `firstName`:"Denis", `a_lastName`:"Istomin", `ranking`:107})
create (_10265:`Player` {`age`:32, `firstName`:"Steve", `a_lastName`:"Darcis", `ranking`:108})
create (_10266:`Player` {`age`:32, `firstName`:"Rogerio", `a_lastName`:"Dutra Silva", `ranking`:109})
create (_10267:`Player` {`age`:24, `firstName`:"Renzo", `a_lastName`:"Olivo", `ranking`:110})
create (_10268:`Player` {`age`:29, `firstName`:"Igor", `a_lastName`:"Sijsling", `ranking`:111})
create (_10269:`Player` {`age`:27, `firstName`:"Thomas", `a_lastName`:"Fabbiano", `ranking`:112})
create (_10270:`Player` {`age`:21, `firstName`:"Adam", `a_lastName`:"Pavlasek", `ranking`:113})
create (_10271:`Player` {`age`:37, `firstName`:"Radek", `a_lastName`:"Stepanek", `ranking`:114})
create (_10272:`Player` {`age`:28, `firstName`:"Tim", `a_lastName`:"Smyczek", `ranking`:115})
create (_10273:`Player` {`age`:23, `firstName`:"Bjorn", `a_lastName`:"Fratangelo", `ranking`:116})
create (_10274:`Player` {`age`:31, `firstName`:"Daniel", `a_lastName`:"Gimeno-Traver", `ranking`:117})
create (_10275:`Player` {`age`:24, `firstName`:"Ryan", `a_lastName`:"Harrison", `ranking`:118})
create (_10276:`Player` {`age`:28, `firstName`:"Joao", `a_lastName`:"Souza", `ranking`:119})
create (_10277:`Player` {`age`:22, `firstName`:"Dennis", `a_lastName`:"Novikov", `ranking`:120})
create (_10278:`Player` {`age`:26, `firstName`:"Andrej", `a_lastName`:"Martin", `ranking`:121})
create (_10279:`Player` {`age`:19, `firstName`:"Jared", `a_lastName`:"Donaldson", `ranking`:122})
create (_10280:`Player` {`age`:26, `firstName`:"Vasek", `a_lastName`:"Pospisil", `ranking`:123})
create (_10281:`Player` {`age`:18, `firstName`:"Frances", `a_lastName`:"Tiafoe", `ranking`:124})
create (_10282:`Player` {`age`:23, `firstName`:"Jozef", `a_lastName`:"Kovalik", `ranking`:125})
create (_10283:`Tournament` {`court`:"Outdoor", `_location`:"Brisbane", `name`:"Brisbane International", `series`:"ATP250", `surface`:"Hard"})
create (_10284:`Tournament` {`court`:"Outdoor", `_location`:"Chennai", `name`:"Chennai Open", `series`:"ATP250", `surface`:"Hard"})
create (_10285:`Tournament` {`court`:"Outdoor", `_location`:"Doha", `name`:"Qatar Exxon Mobil Open", `series`:"ATP250", `surface`:"Hard"})
create (_10286:`Tournament` {`court`:"Outdoor", `_location`:"Auckland", `name`:"ASB Classic", `series`:"ATP250", `surface`:"Hard"})
create (_10287:`Tournament` {`court`:"Outdoor", `_location`:"Sydney", `name`:"Apia International", `series`:"ATP250", `surface`:"Hard"})
create (_10288:`Tournament` {`court`:"Outdoor", `_location`:"Melbourne", `name`:"Australian Open", `series`:"Grand Slam", `surface`:"Hard"})
create (_10289:`Tournament` {`court`:"Indoor", `_location`:"Montpellier", `name`:"Open Sud de France", `series`:"ATP250", `surface`:"Hard"})
create (_10290:`Tournament` {`court`:"Outdoor", `_location`:"Quito", `name`:"Ecuador Open", `series`:"ATP250", `surface`:"Clay"})
create (_10291:`Tournament` {`court`:"Indoor", `_location`:"Sofia", `name`:"Garanti Koza Sofia Open", `series`:"ATP250", `surface`:"Hard"})
create (_10292:`Tournament` {`court`:"Outdoor", `_location`:"Buenos Aires", `name`:"Argentina Open", `series`:"ATP250", `surface`:"Clay"})
create (_10293:`Tournament` {`court`:"Indoor", `_location`:"Memphis", `name`:"Memphis Open", `series`:"ATP250", `surface`:"Hard"})
create (_10294:`Tournament` {`court`:"Indoor", `_location`:"Rotterdam", `name`:"ABN AMRO World Tennis Tournament", `series`:"ATP500", `surface`:"Hard"})
create (_10295:`Tournament` {`court`:"Outdoor", `_location`:"Delray Beach", `name`:"Delray Beach Open", `series`:"ATP250", `surface`:"Hard"})
create (_10296:`Tournament` {`court`:"Indoor", `_location`:"Marseille", `name`:"Open 13", `series`:"ATP250", `surface`:"Hard"})
create (_10297:`Tournament` {`court`:"Outdoor", `_location`:"Rio de Janeiro", `name`:"Rio Open", `series`:"ATP500", `surface`:"Clay"})
create (_10298:`Tournament` {`court`:"Outdoor", `_location`:"Acapulco", `name`:"Abierto Mexicano", `series`:"ATP500", `surface`:"Hard"})
create (_10299:`Tournament` {`court`:"Outdoor", `_location`:"Dubai", `name`:"Dubai Tennis Championships", `series`:"ATP500", `surface`:"Hard"})
create (_10300:`Tournament` {`court`:"Indoor", `_location`:"Sao Paulo", `name`:"Brasil Open", `series`:"ATP250", `surface`:"Clay"})
create (_10301:`Tournament` {`court`:"Outdoor", `_location`:"Indian Wells", `name`:"BNP Paribas Open", `series`:"Masters 1000", `surface`:"Hard"})
create (_10302:`Tournament` {`court`:"Outdoor", `_location`:"Miami", `name`:"Sony Ericsson Open", `series`:"Masters 1000", `surface`:"Hard"})
create (_10303:`Tournament` {`court`:"Outdoor", `_location`:"Houston", `name`:"U.S. Men's Clay Court Championships", `series`:"ATP250", `surface`:"Clay"})
create (_10304:`Tournament` {`court`:"Outdoor", `_location`:"Marrakech", `name`:"Grand Prix Hassan II", `series`:"ATP250", `surface`:"Clay"})
create (_10305:`Tournament` {`court`:"Outdoor", `_location`:"Monte Carlo", `name`:"Monte Carlo Masters", `series`:"Masters 1000", `surface`:"Clay"})
create (_10306:`Tournament` {`court`:"Outdoor", `_location`:"Barcelona", `name`:"Open Banco Sabadell", `series`:"ATP500", `surface`:"Clay"})
create (_10307:`Tournament` {`court`:"Outdoor", `_location`:"Bucharest", `name`:"BRD Nastase Tiriac Trophy", `series`:"ATP250", `surface`:"Clay"})
create (_10308:`Tournament` {`court`:"Outdoor", `_location`:"Estoril", `name`:"Millenium Estoril Open", `series`:"ATP250", `surface`:"Clay"})
create (_10309:`Tournament` {`court`:"Outdoor", `_location`:"Istanbul", `name`:"Istanbul Open", `series`:"ATP250", `surface`:"Clay"})
create (_10310:`Tournament` {`court`:"Outdoor", `_location`:"Munich", `name`:"BMW Open", `series`:"ATP250", `surface`:"Clay"})
create (_10311:`Tournament` {`court`:"Outdoor", `_location`:"Madrid", `name`:"Mutua Madrid Open", `series`:"Masters 1000", `surface`:"Clay"})
create (_10312:`Tournament` {`court`:"Outdoor", `_location`:"Rome", `name`:"Internazionali BNL d'Italia", `series`:"Masters 1000", `surface`:"Clay"})
create (_10313:`Tournament` {`court`:"Outdoor", `_location`:"Geneva", `name`:"Geneva Open", `series`:"ATP250", `surface`:"Clay"})
create (_10314:`Tournament` {`court`:"Outdoor", `_location`:"Nice", `name`:"Open de Nice Côte d’Azur", `series`:"ATP250", `surface`:"Clay"})
create (_10315:`Tournament` {`court`:"Outdoor", `_location`:"Paris", `name`:"French Open", `series`:"Grand Slam", `surface`:"Clay"})
create (_10316:`Tournament` {`court`:"Outdoor", `_location`:"'s-Hertogenbosch", `name`:"Topshelf Open", `series`:"ATP250", `surface`:"Grass"})
create (_10317:`Tournament` {`court`:"Outdoor", `_location`:"Stuttgart", `name`:"Mercedes Cup", `series`:"ATP250", `surface`:"Grass"})
create (_10318:`Tournament` {`court`:"Outdoor", `_location`:"Halle", `name`:"Gerry Weber Open", `series`:"ATP500", `surface`:"Grass"})
create (_10319:`Tournament` {`court`:"Outdoor", `_location`:"Queens Club", `name`:"AEGON Championships", `series`:"ATP500", `surface`:"Grass"})
create (_10320:`Tournament` {`court`:"Outdoor", `_location`:"Nottingham", `name`:"AEGON Open", `series`:"ATP500", `surface`:"Grass"})
create (_10321:`Tournament` {`court`:"Outdoor", `_location`:"London", `name`:"Wimbledon", `series`:"Grand Slam", `surface`:"Grass"})
create (_10322:`Tournament` {`court`:"Outdoor", `_location`:"Bastad", `name`:"SkiStar Swedish Open", `series`:"ATP250", `surface`:"Clay"})
create (_10323:`Tournament` {`court`:"Outdoor", `_location`:"Hamburg", `name`:"German Tennis Championships", `series`:"ATP500", `surface`:"Clay"})
create (_10324:`Tournament` {`court`:"Outdoor", `_location`:"Newport", `name`:"Hall of Fame Championships", `series`:"ATP250", `surface`:"Grass"})
create (_10325:`Tournament` {`court`:"Outdoor", `_location`:"Gstaad", `name`:"Suisse Open Gstaad", `series`:"ATP250", `surface`:"Clay"})
create (_10326:`Tournament` {`court`:"Outdoor", `_location`:"Kitzbuhel", `name`:"Generali Open", `series`:"ATP250", `surface`:"Clay"})
create (_10327:`Tournament` {`court`:"Outdoor", `_location`:"Umag", `name`:"Konzum Croatia Open", `series`:"ATP250", `surface`:"Clay"})
create (_10328:`Tournament` {`court`:"Outdoor", `_location`:"Washington", `name`:"Citi Open", `series`:"ATP500", `surface`:"Hard"})
create (_10329:`Tournament` {`court`:"Outdoor", `_location`:"Toronto", `name`:"Rogers Masters", `series`:"Masters 1000", `surface`:"Hard"})
create (_10330:`Tournament` {`court`:"Outdoor", `_location`:"Atlanta", `name`:"BB&T Atlanta Open", `series`:"ATP250", `surface`:"Hard"})
create (_10331:`Tournament` {`court`:"Outdoor", `_location`:"Los Cabos", `name`:"Abierto Mexicano Mifel", `series`:"ATP250", `surface`:"Hard"})
create (_10332:`Tournament` {`court`:"Outdoor", `_location`:"Cincinnati", `name`:"Western & Southern Financial Group Masters", `series`:"Masters 1000", `surface`:"Hard"})
create (_10333:`Tournament` {`court`:"Outdoor", `_location`:"Winston-Salem", `name`:"Winston-Salem Open at Wake Forest University", `series`:"ATP250", `surface`:"Hard"})
create (_10334:`Tournament` {`court`:"Outdoor", `_location`:"New York", `name`:"US Open", `series`:"Grand Slam", `surface`:"Hard"})
create (_10335:`Match` {`bestOf`:"3", `date`:"2016-01-10", `round`:"The Final", `_tournament`:"Brisbane International"})
create (_10336:`Match` {`bestOf`:"3", `date`:"2016-01-10", `round`:"The Final", `_tournament`:"Chennai Open"})
create (_10337:`Match` {`bestOf`:"3", `date`:"2016-01-09", `round`:"The Final", `_tournament`:"Qatar Exxon Mobil Open"})
create (_10338:`Match` {`bestOf`:"3", `date`:"2016-01-16", `round`:"The Final", `_tournament`:"ASB Classic"})
create (_10339:`Match` {`bestOf`:"3", `date`:"2016-01-16", `round`:"The Final", `_tournament`:"Apia International"})
create (_10340:`Match` {`bestOf`:"5", `date`:"2016-01-31", `round`:"The Final", `_tournament`:"Australian Open"})
create (_10341:`Match` {`bestOf`:"3", `date`:"2016-02-07", `round`:"The Final", `_tournament`:"Open Sud de France"})
create (_10342:`Match` {`bestOf`:"3", `date`:"2016-02-07", `round`:"The Final", `_tournament`:"Ecuador Open"})
create (_10343:`Match` {`bestOf`:"3", `date`:"2016-02-07", `round`:"The Final", `_tournament`:"Garanti Koza Sofia Open"})
create (_10344:`Match` {`bestOf`:"3", `date`:"2016-02-14", `round`:"The Final", `_tournament`:"Argentina Open"})
create (_10345:`Match` {`bestOf`:"3", `date`:"2016-02-14", `round`:"The Final", `_tournament`:"Memphis Open"})
create (_10346:`Match` {`bestOf`:"3", `date`:"2016-02-14", `round`:"The Final", `_tournament`:"ABN AMRO World Tennis Tournament"})
create (_10347:`Match` {`bestOf`:"3", `date`:"2016-02-21", `round`:"The Final", `_tournament`:"Delray Beach Open"})
create (_10348:`Match` {`bestOf`:"3", `date`:"2016-02-21", `round`:"The Final", `_tournament`:"Open 13"})
create (_10349:`Match` {`bestOf`:"3", `date`:"2016-02-21", `round`:"The Final", `_tournament`:"Rio Open"})
create (_10350:`Match` {`bestOf`:"3", `date`:"2016-02-28", `round`:"The Final", `_tournament`:"Abierto Mexicano"})
create (_10351:`Match` {`bestOf`:"3", `date`:"2016-02-27", `round`:"The Final", `_tournament`:"Dubai Tennis Championships"})
create (_10352:`Match` {`bestOf`:"3", `date`:"2016-03-20", `round`:"The Final", `_tournament`:"BNP Paribas Open"})
create (_10353:`Match` {`bestOf`:"3", `date`:"2016-04-03", `round`:"The Final", `_tournament`:"Sony Ericsson Open"})
create (_10354:`Match` {`bestOf`:"3", `date`:"2016-04-10", `round`:"The Final", `_tournament`:"U.S. Men's Clay Court Championships"})
create (_10355:`Match` {`bestOf`:"3", `date`:"2016-04-10", `round`:"The Final", `_tournament`:"Grand Prix Hassan II"})
create (_10356:`Match` {`bestOf`:"3", `date`:"2016-04-17", `round`:"The Final", `_tournament`:"Monte Carlo Masters"})
create (_10357:`Match` {`bestOf`:"3", `date`:"2016-04-24", `round`:"The Final", `_tournament`:"Open Banco Sabadell"})
create (_10358:`Match` {`bestOf`:"3", `date`:"2016-04-24", `round`:"The Final", `_tournament`:"BRD Nastase Tiriac Trophy"})
create (_10359:`Match` {`bestOf`:"3", `date`:"2016-05-01", `round`:"The Final", `_tournament`:"Millenium Estoril Open"})
create (_10360:`Match` {`bestOf`:"3", `date`:"2016-05-01", `round`:"The Final", `_tournament`:"Istanbul Open"})
create (_10361:`Match` {`bestOf`:"3", `date`:"2016-05-01", `round`:"The Final", `_tournament`:"BMW Open"})
create (_10362:`Match` {`bestOf`:"3", `date`:"2016-05-08", `round`:"The Final", `_tournament`:"Mutua Madrid Open"})
create (_10363:`Match` {`bestOf`:"3", `date`:"2016-05-15", `round`:"The Final", `_tournament`:"Internazionali BNL d'Italia"})
create (_10364:`Match` {`bestOf`:"3", `date`:"2016-05-21", `round`:"The Final", `_tournament`:"Geneva Open"})
create (_10365:`Match` {`bestOf`:"3", `date`:"2016-05-21", `round`:"The Final", `_tournament`:"Open de Nice Côte d’Azur"})
create (_10366:`Match` {`bestOf`:"5", `date`:"2016-06-05", `round`:"The Final", `_tournament`:"French Open"})
create (_10367:`Match` {`bestOf`:"3", `date`:"2016-06-12", `round`:"The Final", `_tournament`:"Topshelf Open"})
create (_10368:`Match` {`bestOf`:"3", `date`:"2016-06-12", `round`:"The Final", `_tournament`:"Mercedes Cup"})
create (_10369:`Match` {`bestOf`:"3", `date`:"2016-06-19", `round`:"The Final", `_tournament`:"Gerry Weber Open"})
create (_10370:`Match` {`bestOf`:"3", `date`:"2016-06-19", `round`:"The Final", `_tournament`:"AEGON Championships"})
create (_10371:`Match` {`bestOf`:"3", `date`:"2016-06-25", `round`:"The Final", `_tournament`:"AEGON Open"})
create (_10372:`Match` {`bestOf`:"5", `date`:"2016-07-10", `round`:"The Final", `_tournament`:"Wimbledon"})
create (_10373:`Match` {`bestOf`:"3", `date`:"2016-07-17", `round`:"The Final", `_tournament`:"SkiStar Swedish Open"})
create (_10374:`Match` {`bestOf`:"3", `date`:"2016-07-17", `round`:"The Final", `_tournament`:"German Tennis Championships"})
create (_10375:`Match` {`bestOf`:"3", `date`:"2016-07-17", `round`:"The Final", `_tournament`:"Hall of Fame Championships"})
create (_10376:`Match` {`bestOf`:"3", `date`:"2016-07-24", `round`:"The Final", `_tournament`:"Suisse Open Gstaad"})
create (_10377:`Match` {`bestOf`:"3", `date`:"2016-07-23", `round`:"The Final", `_tournament`:"Generali Open"})
create (_10378:`Match` {`bestOf`:"3", `date`:"2016-07-24", `round`:"The Final", `_tournament`:"Konzum Croatia Open"})
create (_10379:`Match` {`bestOf`:"3", `date`:"2016-07-24", `round`:"The Final", `_tournament`:"Citi Open"})
create (_10380:`Match` {`bestOf`:"3", `date`:"2016-07-31", `round`:"The Final", `_tournament`:"Rogers Masters"})
create (_10381:`Match` {`bestOf`:"3", `date`:"2016-08-07", `round`:"The Final", `_tournament`:"BB&T Atlanta Open"})
create (_10382:`Match` {`bestOf`:"3", `date`:"2016-08-14", `round`:"The Final", `_tournament`:"Abierto Mexicano Mifel"})
create (_10383:`Match` {`bestOf`:"3", `date`:"2016-08-21", `round`:"The Final", `_tournament`:"Western & Southern Financial Group Masters"})
create (_10384:`Match` {`bestOf`:"3", `date`:"2016-08-27", `round`:"The Final", `_tournament`:"Winston-Salem Open at Wake Forest University"})
create (_10385:`Match` {`bestOf`:"5", `date`:"2016-09-11", `round`:"The Final", `_tournament`:"US Open"})
create (_10121)-[:`LOST`]->(_10363)
create (_10121)-[:`WON`]->(_10366)
create (_10121)-[:`WON`]->(_10362)
create (_10121)-[:`WON`]->(_10353)
create (_10121)-[:`WON`]->(_10352)
create (_10121)-[:`LOST`]->(_10385)
create (_10121)-[:`WON`]->(_10380)
create (_10121)-[:`WON`]->(_10340)
create (_10121)-[:`WON`]->(_10337)
create (_10121)-[:`FROM_COUNTRY`]->(_10120)
create (_10123)-[:`LOST`]->(_10366)
create (_10123)-[:`WON`]->(_10363)
create (_10123)-[:`LOST`]->(_10362)
create (_10123)-[:`LOST`]->(_10383)
create (_10123)-[:`WON`]->(_10370)
create (_10123)-[:`WON`]->(_10372)
create (_10123)-[:`LOST`]->(_10340)
create (_10123)-[:`FROM_COUNTRY`]->(_10122)
create (_10125)-[:`WON`]->(_10364)
create (_10125)-[:`WON`]->(_10351)
create (_10125)-[:`WON`]->(_10385)
create (_10125)-[:`WON`]->(_10336)
create (_10125)-[:`FROM_COUNTRY`]->(_10124)
create (_10126)-[:`LOST`]->(_10335)
create (_10126)-[:`FROM_COUNTRY`]->(_10124)
create (_10128)-[:`WON`]->(_10357)
create (_10128)-[:`WON`]->(_10356)
create (_10128)-[:`LOST`]->(_10337)
create (_10128)-[:`FROM_COUNTRY`]->(_10127)
create (_10130)-[:`LOST`]->(_10352)
create (_10130)-[:`LOST`]->(_10370)
create (_10130)-[:`LOST`]->(_10372)
create (_10130)-[:`WON`]->(_10335)
create (_10130)-[:`FROM_COUNTRY`]->(_10129)
create (_10132)-[:`LOST`]->(_10353)
create (_10132)-[:`LOST`]->(_10357)
create (_10132)-[:`LOST`]->(_10380)
create (_10132)-[:`WON`]->(_10345)
create (_10132)-[:`FROM_COUNTRY`]->(_10131)
create (_10134)-[:`FROM_COUNTRY`]->(_10133)
create (_10136)-[:`LOST`]->(_10364)
create (_10136)-[:`LOST`]->(_10348)
create (_10136)-[:`WON`]->(_10383)
create (_10136)-[:`FROM_COUNTRY`]->(_10135)
create (_10138)-[:`WON`]->(_10365)
create (_10138)-[:`WON`]->(_10367)
create (_10138)-[:`LOST`]->(_10361)
create (_10138)-[:`WON`]->(_10350)
create (_10138)-[:`WON`]->(_10344)
create (_10138)-[:`FROM_COUNTRY`]->(_10137)
create (_10140)-[:`FROM_COUNTRY`]->(_10139)
create (_10141)-[:`LOST`]->(_10356)
create (_10141)-[:`WON`]->(_10379)
create (_10141)-[:`LOST`]->(_10346)
create (_10141)-[:`FROM_COUNTRY`]->(_10139)
create (_10142)-[:`FROM_COUNTRY`]->(_10127)
create (_10144)-[:`FROM_COUNTRY`]->(_10143)
create (_10145)-[:`WON`]->(_10341)
create (_10145)-[:`FROM_COUNTRY`]->(_10139)
create (_10147)-[:`WON`]->(_10348)
create (_10147)-[:`WON`]->(_10381)
create (_10147)-[:`FROM_COUNTRY`]->(_10146)
create (_10148)-[:`LOST`]->(_10384)
create (_10148)-[:`WON`]->(_10338)
create (_10148)-[:`WON`]->(_10343)
create (_10148)-[:`FROM_COUNTRY`]->(_10127)
create (_10149)-[:`LOST`]->(_10382)
create (_10149)-[:`WON`]->(_10376)
create (_10149)-[:`FROM_COUNTRY`]->(_10127)
create (_10150)-[:`LOST`]->(_10350)
create (_10150)-[:`FROM_COUNTRY`]->(_10146)
create (_10152)-[:`WON`]->(_10349)
create (_10152)-[:`LOST`]->(_10374)
create (_10152)-[:`LOST`]->(_10371)
create (_10152)-[:`FROM_COUNTRY`]->(_10151)
create (_10154)-[:`WON`]->(_10371)
create (_10154)-[:`FROM_COUNTRY`]->(_10153)
create (_10155)-[:`LOST`]->(_10381)
create (_10155)-[:`FROM_COUNTRY`]->(_10153)
create (_10156)-[:`LOST`]->(_10379)
create (_10156)-[:`WON`]->(_10382)
create (_10156)-[:`WON`]->(_10375)
create (_10156)-[:`FROM_COUNTRY`]->(_10135)
create (_10158)-[:`LOST`]->(_10360)
create (_10158)-[:`LOST`]->(_10339)
create (_10158)-[:`FROM_COUNTRY`]->(_10157)
create (_10160)-[:`FROM_COUNTRY`]->(_10159)
create (_10161)-[:`LOST`]->(_10358)
create (_10161)-[:`FROM_COUNTRY`]->(_10139)
create (_10163)-[:`LOST`]->(_10367)
create (_10163)-[:`WON`]->(_10361)
create (_10163)-[:`FROM_COUNTRY`]->(_10162)
create (_10164)-[:`LOST`]->(_10354)
create (_10164)-[:`LOST`]->(_10338)
create (_10164)-[:`FROM_COUNTRY`]->(_10153)
create (_10165)-[:`LOST`]->(_10365)
create (_10165)-[:`LOST`]->(_10369)
create (_10165)-[:`FROM_COUNTRY`]->(_10162)
create (_10167)-[:`WON`]->(_10374)
create (_10167)-[:`WON`]->(_10346)
create (_10167)-[:`FROM_COUNTRY`]->(_10166)
create (_10168)-[:`WON`]->(_10347)
create (_10168)-[:`FROM_COUNTRY`]->(_10153)
create (_10169)-[:`FROM_COUNTRY`]->(_10139)
create (_10170)-[:`WON`]->(_10373)
create (_10170)-[:`FROM_COUNTRY`]->(_10127)
create (_10171)-[:`FROM_COUNTRY`]->(_10139)
create (_10172)-[:`WON`]->(_10339)
create (_10172)-[:`LOST`]->(_10343)
create (_10172)-[:`FROM_COUNTRY`]->(_10120)
create (_10174)-[:`FROM_COUNTRY`]->(_10173)
create (_10176)-[:`LOST`]->(_10368)
create (_10176)-[:`LOST`]->(_10375)
create (_10176)-[:`FROM_COUNTRY`]->(_10175)
create (_10178)-[:`WON`]->(_10378)
create (_10178)-[:`FROM_COUNTRY`]->(_10177)
create (_10179)-[:`WON`]->(_10377)
create (_10179)-[:`FROM_COUNTRY`]->(_10177)
create (_10180)-[:`LOST`]->(_10355)
create (_10180)-[:`LOST`]->(_10336)
create (_10180)-[:`FROM_COUNTRY`]->(_10135)
create (_10181)-[:`WON`]->(_10368)
create (_10181)-[:`FROM_COUNTRY`]->(_10139)
create (_10183)-[:`FROM_COUNTRY`]->(_10182)
create (_10185)-[:`WON`]->(_10355)
create (_10185)-[:`FROM_COUNTRY`]->(_10184)
create (_10187)-[:`LOST`]->(_10351)
create (_10187)-[:`FROM_COUNTRY`]->(_10186)
create (_10188)-[:`FROM_COUNTRY`]->(_10127)
create (_10189)-[:`WON`]->(_10359)
create (_10189)-[:`LOST`]->(_10344)
create (_10189)-[:`FROM_COUNTRY`]->(_10127)
create (_10190)-[:`WON`]->(_10358)
create (_10190)-[:`LOST`]->(_10373)
create (_10190)-[:`FROM_COUNTRY`]->(_10127)
create (_10191)-[:`FROM_COUNTRY`]->(_10133)
create (_10192)-[:`LOST`]->(_10359)
create (_10192)-[:`WON`]->(_10384)
create (_10192)-[:`FROM_COUNTRY`]->(_10127)
create (_10193)-[:`FROM_COUNTRY`]->(_10127)
create (_10194)-[:`LOST`]->(_10349)
create (_10194)-[:`FROM_COUNTRY`]->(_10184)
create (_10195)-[:`FROM_COUNTRY`]->(_10139)
create (_10197)-[:`FROM_COUNTRY`]->(_10196)
create (_10198)-[:`LOST`]->(_10345)
create (_10198)-[:`FROM_COUNTRY`]->(_10153)
create (_10199)-[:`FROM_COUNTRY`]->(_10139)
create (_10200)-[:`FROM_COUNTRY`]->(_10139)
create (_10201)-[:`FROM_COUNTRY`]->(_10153)
create (_10203)-[:`FROM_COUNTRY`]->(_10202)
create (_10204)-[:`WON`]->(_10369)
create (_10204)-[:`FROM_COUNTRY`]->(_10162)
create (_10205)-[:`FROM_COUNTRY`]->(_10120)
create (_10206)-[:`FROM_COUNTRY`]->(_10173)
create (_10208)-[:`LOST`]->(_10342)
create (_10208)-[:`FROM_COUNTRY`]->(_10207)
create (_10209)-[:`FROM_COUNTRY`]->(_10182)
create (_10211)-[:`LOST`]->(_10376)
create (_10211)-[:`FROM_COUNTRY`]->(_10210)
create (_10212)-[:`FROM_COUNTRY`]->(_10202)
create (_10214)-[:`FROM_COUNTRY`]->(_10213)
create (_10215)-[:`FROM_COUNTRY`]->(_10122)
create (_10216)-[:`WON`]->(_10360)
create (_10216)-[:`FROM_COUNTRY`]->(_10184)
create (_10217)-[:`LOST`]->(_10341)
create (_10217)-[:`FROM_COUNTRY`]->(_10139)
create (_10218)-[:`FROM_COUNTRY`]->(_10184)
create (_10220)-[:`FROM_COUNTRY`]->(_10219)
create (_10222)-[:`FROM_COUNTRY`]->(_10221)
create (_10223)-[:`FROM_COUNTRY`]->(_10135)
create (_10224)-[:`FROM_COUNTRY`]->(_10127)
create (_10225)-[:`FROM_COUNTRY`]->(_10184)
create (_10226)-[:`FROM_COUNTRY`]->(_10139)
create (_10227)-[:`FROM_COUNTRY`]->(_10122)
create (_10228)-[:`FROM_COUNTRY`]->(_10162)
create (_10229)-[:`FROM_COUNTRY`]->(_10182)
create (_10231)-[:`FROM_COUNTRY`]->(_10230)
create (_10232)-[:`FROM_COUNTRY`]->(_10146)
create (_10233)-[:`FROM_COUNTRY`]->(_10133)
create (_10234)-[:`FROM_COUNTRY`]->(_10131)
create (_10236)-[:`WON`]->(_10342)
create (_10236)-[:`FROM_COUNTRY`]->(_10235)
create (_10237)-[:`FROM_COUNTRY`]->(_10122)
create (_10238)-[:`FROM_COUNTRY`]->(_10131)
create (_10239)-[:`FROM_COUNTRY`]->(_10162)
create (_10240)-[:`FROM_COUNTRY`]->(_10177)
create (_10242)-[:`FROM_COUNTRY`]->(_10241)
create (_10243)-[:`FROM_COUNTRY`]->(_10184)
create (_10244)-[:`FROM_COUNTRY`]->(_10137)
create (_10245)-[:`FROM_COUNTRY`]->(_10146)
create (_10246)-[:`FROM_COUNTRY`]->(_10202)
create (_10247)-[:`FROM_COUNTRY`]->(_10182)
create (_10248)-[:`WON`]->(_10354)
create (_10248)-[:`FROM_COUNTRY`]->(_10184)
create (_10249)-[:`FROM_COUNTRY`]->(_10182)
create (_10250)-[:`FROM_COUNTRY`]->(_10162)
create (_10252)-[:`FROM_COUNTRY`]->(_10251)
create (_10253)-[:`FROM_COUNTRY`]->(_10207)
create (_10254)-[:`FROM_COUNTRY`]->(_10166)
create (_10256)-[:`FROM_COUNTRY`]->(_10255)
create (_10258)-[:`LOST`]->(_10377)
create (_10258)-[:`FROM_COUNTRY`]->(_10257)
create (_10259)-[:`FROM_COUNTRY`]->(_10127)
create (_10260)-[:`FROM_COUNTRY`]->(_10131)
create (_10261)-[:`LOST`]->(_10347)
create (_10261)-[:`FROM_COUNTRY`]->(_10153)
create (_10262)-[:`FROM_COUNTRY`]->(_10182)
create (_10264)-[:`FROM_COUNTRY`]->(_10263)
create (_10265)-[:`FROM_COUNTRY`]->(_10143)
create (_10266)-[:`FROM_COUNTRY`]->(_10207)
create (_10267)-[:`FROM_COUNTRY`]->(_10184)
create (_10268)-[:`FROM_COUNTRY`]->(_10210)
create (_10269)-[:`FROM_COUNTRY`]->(_10177)
create (_10270)-[:`FROM_COUNTRY`]->(_10133)
create (_10271)-[:`FROM_COUNTRY`]->(_10133)
create (_10272)-[:`FROM_COUNTRY`]->(_10153)
create (_10273)-[:`FROM_COUNTRY`]->(_10153)
create (_10274)-[:`FROM_COUNTRY`]->(_10127)
create (_10275)-[:`FROM_COUNTRY`]->(_10153)
create (_10276)-[:`FROM_COUNTRY`]->(_10207)
create (_10277)-[:`FROM_COUNTRY`]->(_10153)
create (_10278)-[:`LOST`]->(_10378)
create (_10278)-[:`FROM_COUNTRY`]->(_10166)
create (_10279)-[:`FROM_COUNTRY`]->(_10153)
create (_10280)-[:`FROM_COUNTRY`]->(_10129)
create (_10281)-[:`FROM_COUNTRY`]->(_10153)
create (_10282)-[:`FROM_COUNTRY`]->(_10166)
create (_10335)-[:`HOSTED_BY`]->(_10283)
create (_10336)-[:`HOSTED_BY`]->(_10284)
create (_10337)-[:`HOSTED_BY`]->(_10285)
create (_10338)-[:`HOSTED_BY`]->(_10286)
create (_10339)-[:`HOSTED_BY`]->(_10287)
create (_10340)-[:`HOSTED_BY`]->(_10288)
create (_10341)-[:`HOSTED_BY`]->(_10289)
create (_10342)-[:`HOSTED_BY`]->(_10290)
create (_10343)-[:`HOSTED_BY`]->(_10291)
create (_10344)-[:`HOSTED_BY`]->(_10292)
create (_10345)-[:`HOSTED_BY`]->(_10293)
create (_10346)-[:`HOSTED_BY`]->(_10294)
create (_10347)-[:`HOSTED_BY`]->(_10295)
create (_10348)-[:`HOSTED_BY`]->(_10296)
create (_10349)-[:`HOSTED_BY`]->(_10297)
create (_10350)-[:`HOSTED_BY`]->(_10298)
create (_10351)-[:`HOSTED_BY`]->(_10299)
create (_10352)-[:`HOSTED_BY`]->(_10301)
create (_10353)-[:`HOSTED_BY`]->(_10302)
create (_10354)-[:`HOSTED_BY`]->(_10303)
create (_10355)-[:`HOSTED_BY`]->(_10304)
create (_10356)-[:`HOSTED_BY`]->(_10305)
create (_10357)-[:`HOSTED_BY`]->(_10306)
create (_10358)-[:`HOSTED_BY`]->(_10307)
create (_10359)-[:`HOSTED_BY`]->(_10308)
create (_10360)-[:`HOSTED_BY`]->(_10309)
create (_10361)-[:`HOSTED_BY`]->(_10310)
create (_10362)-[:`HOSTED_BY`]->(_10311)
create (_10363)-[:`HOSTED_BY`]->(_10312)
create (_10364)-[:`HOSTED_BY`]->(_10313)
create (_10365)-[:`HOSTED_BY`]->(_10314)
create (_10366)-[:`HOSTED_BY`]->(_10315)
create (_10367)-[:`HOSTED_BY`]->(_10316)
create (_10368)-[:`HOSTED_BY`]->(_10317)
create (_10369)-[:`HOSTED_BY`]->(_10318)
create (_10370)-[:`HOSTED_BY`]->(_10319)
create (_10371)-[:`HOSTED_BY`]->(_10320)
create (_10372)-[:`HOSTED_BY`]->(_10321)
create (_10373)-[:`HOSTED_BY`]->(_10322)
create (_10374)-[:`HOSTED_BY`]->(_10323)
create (_10375)-[:`HOSTED_BY`]->(_10324)
create (_10376)-[:`HOSTED_BY`]->(_10325)
create (_10377)-[:`HOSTED_BY`]->(_10326)
create (_10378)-[:`HOSTED_BY`]->(_10327)
create (_10379)-[:`HOSTED_BY`]->(_10328)
create (_10380)-[:`HOSTED_BY`]->(_10329)
create (_10381)-[:`HOSTED_BY`]->(_10330)
create (_10382)-[:`HOSTED_BY`]->(_10331)
create (_10383)-[:`HOSTED_BY`]->(_10332)
create (_10384)-[:`HOSTED_BY`]->(_10333)
create (_10385)-[:`HOSTED_BY`]->(_10334)

The goal here was to run a couple of queries based on the country of the players and maybe find out some interesting information.

Some questions I had: * How diverse are the top 100? * Are there just a couple of nations that will take up all the places or is it possible for a wide range of countries to get a player into the top 100? * Are there some country who are dominating the top 100? * Does having a lot of players in the top 100 also mean that one has 1 or two players in the top 50? Or the top 10?

All countries with at least seven players in top 100 (graph)

MATCH (c:Country)-[:FROM_COUNTRY]-(players)
WHERE players.ranking <= 100

WITH c, count(players) as player_count
ORDER BY player_count DESC
WHERE player_count >= 7

MATCH (c)-[:FROM_COUNTRY]-(players)
WHERE players.ranking <= 100
RETURN c, players

Number of players in Top 100 for each country (table)

List the number of players for each country.

MATCH (c:Country)-[:FROM_COUNTRY]-(players)
WHERE players.ranking <= 100
WITH c, count(players) as player_count
ORDER BY player_count DESC
RETURN c.name AS Country_Name, player_count AS Number_Of_Players

Number of countries with a Top 100 player

Count the number of countries who have at least one top 100 player.

MATCH (c:Country)-[:FROM_COUNTRY]-(players:Player)
WHERE players.ranking <= 100
RETURN count(DISTINCT c.name) + " countries in Top 100"

10 countries with most players in Top 50

MATCH (c:Country)-[:FROM_COUNTRY]-(players:Player)
WHERE players.ranking <= 50
WITH c, count(players) as player_count
ORDER BY player_count DESC
RETURN DISTINCT c.name, player_count
LIMIT 10

10 countries with most players in ranking 51 to 100

I would have expected that the countries with players on the top 50 will also have a similar amount of players in the top 51 to 100. However the results show that quite a few of the countries from the top 50 results don’t show up here.

MATCH (c:Country)-[:FROM_COUNTRY]-(players:Player)
WHERE 50 < players.ranking  <= 100
WITH c, count(players) as player_count
ORDER BY player_count DESC
RETURN DISTINCT c.name, player_count
LIMIT 10

List all countries with players in top 100, sorted by number of players in top 50 and number of players in top 51 to 100

Spain has 10 players in the top 50 but only one player in the top 51 to 100. France has an almost equal amount of players and is the way I would have expected the results to be.

MATCH(c:Country)-[:FROM_COUNTRY]-(players:Player)
WHERE players.ranking <= 100
WITH  c, count(players) as player_count
WHERE player_count > 0

OPTIONAL MATCH (c)-[:FROM_COUNTRY]-(players:Player)
WHERE players.ranking <= 50
WITH  c, count(players) as player_count_top50

OPTIONAL MATCH (c:Country)-[:FROM_COUNTRY]-(players:Player)
WHERE 50 < players.ranking  <= 100
WITH player_count_top50, c, count(players) as player_count_bottom50

RETURN c.name AS Country, player_count_top50 AS Players_in_Top_50,  player_count_bottom50 AS Players_in_Top_51_to_100, player_count_top50 + player_count_bottom50 AS total
ORDER BY player_count_top50 DESC, player_count_bottom50 DESC

Countries with potential successor problems (players in top 50 but not enough in bottom 50)

The previous somewhat surprising results led to the question if it’s possible to discover countries who might have a successor problem.

I’ve defined this as a country where the number of players in the top 50 is larger by 2 or more than the number of players in the bottom half and also where the number of players in the bottom half is 2 or smaller.

This is a very simplified view which does not take into account the ranking trend or the age.

MATCH(c:Country)-[:FROM_COUNTRY]-(players:Player)
WHERE players.ranking <= 100
WITH  c, count(players) as player_count
WHERE player_count > 0

OPTIONAL MATCH (c)-[:FROM_COUNTRY]-(players:Player)
WHERE players.ranking <= 50
WITH  c, count(players) as player_count_top50

OPTIONAL MATCH (c:Country)-[:FROM_COUNTRY]-(players:Player)
WHERE 50 < players.ranking  <= 100
WITH player_count_top50, c, count(players) as player_count_bottom50
WHERE player_count_top50 -  player_count_bottom50 >= 2 AND player_count_bottom50 < 3

RETURN c.name, player_count_top50 AS Players_in_Top_50,  player_count_bottom50 AS Players_in_Top_51_to_100, player_count_top50 + player_count_bottom50 AS total
ORDER BY player_count_top50 DESC, player_count_bottom50 DESC

Contestants to places in top 50

Similar to the query above this tries to find the countries that have many more players in the bottom half compared to the top half.

MATCH(c:Country)-[:FROM_COUNTRY]-(players:Player)
WHERE players.ranking <= 100
WITH  c, count(players) as player_count
WHERE player_count > 0

OPTIONAL MATCH (c)-[:FROM_COUNTRY]-(players:Player)
WHERE players.ranking <= 50
WITH  c, count(players) as player_count_top50

OPTIONAL MATCH (c:Country)-[:FROM_COUNTRY]-(players:Player)
WHERE 50 < players.ranking  <= 100
WITH player_count_top50, c, count(players) as player_count_bottom50
WHERE player_count_bottom50 -  player_count_top50 >= 2

RETURN c.name, player_count_top50 AS Players_in_Top_50,  player_count_bottom50 AS Players_in_Top_51_to_100, player_count_top50 + player_count_bottom50 AS total
ORDER BY player_count_top50 DESC, player_count_bottom50 DESC

The queries related to the finalists are more person based and only at the end will I compare them by country.

All finalists and who they played against

This shows all the finalists and who they played against as graph. It’s clearly visible that Djokovic played and won the most finals.

MATCH p=()-[r:LOST]->(m)<-[s:WON]-()
RETURN p

All players who have won at least 2 tournaments

Listing all players who won at least two tournaments, but not taking into account the category of the tournament. E.g. Grand Slam vs ATP 250.

MATCH (p:Player)-[:WON]-(matches)
WITH p, count(matches) as numberOfFinalsWon
WHERE numberOfFinalsWon >= 2
RETURN p.a_lastName, numberOfFinalsWon
ORDER BY numberOfFinalsWon DESC

Tournament winners with their won tournaments by category.

I’ve refined the query to show the winners by category, also listing the names of the tournaments.

// get number of Grand Slam
MATCH  (p)-[:WON]-(match:Match)-[:HOSTED_BY]-(tournament:Tournament)
WHERE tournament.series = "Grand Slam"
WITH p, count(tournament.series) +" Grand Slam" AS Titles, collect(tournament.name) as tournamentNames

RETURN p.a_lastName AS Player, Titles, tournamentNames
ORDER BY Titles DESC, Player ASC

UNION

// get number of Masters 1000
MATCH  (p)-[:WON]-(match:Match)-[:HOSTED_BY]-(tournament:Tournament)
WHERE tournament.series = "Masters 1000"
WITH p, count(tournament.series) +" Masters 1000" AS Titles, collect(tournament.name) as tournamentNames

RETURN p.a_lastName AS Player, Titles, tournamentNames
ORDER BY Titles DESC, Player ASC

UNION

// get number of ATP 500
MATCH  (p)-[:WON]-(match:Match)-[:HOSTED_BY]-(tournament:Tournament)
WHERE tournament.series = "ATP500"
WITH p, count(tournament.series) +" ATP 500" AS Titles, collect(tournament.name) as tournamentNames

RETURN p.a_lastName AS Player, Titles, tournamentNames
ORDER BY Titles DESC, Player ASC

UNION

// get number of ATP250
MATCH  (p)-[:WON]-(match:Match)-[:HOSTED_BY]-(tournament:Tournament)
WHERE tournament.series = "ATP250"
WITH p, count(tournament.series) +" ATP 250" AS Titles, collect(tournament.name) as tournamentNames

RETURN p.a_lastName AS Player, Titles, tournamentNames
ORDER BY Titles DESC, Player ASC

More than 3 finals played

MATCH (p:Player)-[]-(matches:Match)
WITH p, count(matches) as numberOfFinalsPlayed
WHERE numberOfFinalsPlayed >= 3
RETURN p.a_lastName, numberOfFinalsPlayed
ORDER BY numberOfFinalsPlayed DESC

Finals won and lost

This shows the numbers of finals won and lost and the percentage of finals won.

MATCH (p:Player)-[:WON]-(matchesWon:Match)
WITH p, count(matchesWon) as numberOfFinalsWon

OPTIONAL MATCH (p)-[:LOST]-(m:Match)
WITH p, numberOfFinalsWon,  count(m) as numberOfMatchesLost


RETURN DISTINCT p.a_lastName AS Player, numberOfFinalsWon, numberOfMatchesLost,
       CASE WHEN numberOfMatchesLost = 0 THEN 100 +"%"
             ELSE numberOfFinalsWon*100/(numberOfMatchesLost+numberOfFinalsWon)+"%"
        END AS percentageWon

ORDER BY numberOfFinalsWon DESC, numberOfMatchesLost, Player

Players pulling off their best when it matters. (with at least two finals)

This query is looking at the players who played their best when it matters (in the final) and sorting them by percentage of their finals won.

MATCH (p:Player)-[:WON]-(matchesWon:Match)
WITH p, count(matchesWon) as numberOfFinalsWon

OPTIONAL MATCH (p)-[:LOST]-(m:Match)
WITH p, numberOfFinalsWon,  count(m) as numberOfMatchesLost
WHERE (numberOfFinalsWon +  numberOfMatchesLost) > 1


RETURN DISTINCT p.a_lastName AS Player, numberOfFinalsWon, numberOfMatchesLost,
       CASE WHEN numberOfMatchesLost = 0 THEN 100
             ELSE numberOfFinalsWon*100/(numberOfMatchesLost+numberOfFinalsWon)
        END AS percentageWon

ORDER BY percentageWon DESC, numberOfFinalsWon DESC, numberOfMatchesLost, Player

count number of finalists vs number of players in top 100

This compares the number of players in the top 100 per country with the number of finals where a player of that country played. Some interesting results: * Serbia with only 3 players but 11 finals. * France with 12 players but only 7 finals. * Argentina with 7 players (of which only 1 in the top 50) and 4 finals.

MATCH (c:Country)-[]-(p:Player)-[]-(final:Match)
WITH c, count(final) as numberOfFinals

MATCH (c:Country)-[]-(p:Player)
WHERE p.ranking <= 100
WITH c, numberOfFinals, count(p) AS numberOfPlayersInTop100

RETURN DISTINCT c.name,  numberOfPlayersInTop100, numberOfFinals
ORDER by numberOfPlayersInTop100 DESC

Created by 42talents - Twitter | Blog | LinkedIn

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment