De Neo4J à Game of Thrones
[1h]
Un beau matin, vous vous réveillez en Westeros, le monde de Game Of Thrones, sans aucune connaissance historique. Afin d'y survivre, il va falloir intégrer les informations du royaume. Nous allons pour cela utiliser une base de données orientée graphe Neo4J.
Question
Question
Seconde chose, il faut apprendre à créer des relations, car le monde de Game Of Thrones est très complexe.
Créez deux personnages et exprimez une relation qui les relie.
Par exemple, un des combats les plus célèbres oppose Oberyn Martell, dit The Viper et Gregor Clegane, dir The Mountain. Gregor Clegane tue Oberyn Martell en duel.
Nous pouvons à présent alimenter notre base d'un ensemble de connaissance dont nous disposons. Pour cela copier et exécuter le code Cypher ci-après.
//GameOfThrones:
//sans clan :
CREATE (sansclan:clan { clanname : 'Clan des sans lien de sang'})
CREATE (hodor:personnage { name : 'Hodor', nickname : 'I am the only good actor here !' })
CREATE (khal:personnage { name : 'Khal Drogo', nickname : 'Horse Man' })
CREATE (petyr:personnage { name : 'Petyr Baelish', nickname : 'LittleFinger' })
CREATE (shae:personnage { name : 'Shae for the Imp', nickname : 'Dead' })
//lanister :
CREATE (lanister:clan { clanname : 'The Lannisters'})
CREATE (tyrion:personnage { name : 'Tyrion Lannister', nickname : 'The Imp' })
CREATE (tywin:personnage { name : 'Tywin Lannister', nickname : 'Father of the Lannisters' })
CREATE (jaime:personnage { name : 'Jaime Lannister', nickname : 'King Slayer' })
CREATE (cersei:personnage { name : 'Cersei Lannister', nickname : 'Brother Lover' })
CREATE (joffrey:personnage { name : 'Joffrey Lannister', nickname : 'Mad King 2' })
//baratheons :
CREATE (baratheon:clan { clanname : 'The Baratheons'})
CREATE (robert:personnage { name : 'Robert Baratheon', nickname : 'King Robert' })
CREATE (renly:personnage { name : 'Renly Baratheon', nickname : 'King Gay' })
CREATE (stannis:personnage { name : 'Stannis Baratheon', nickname : 'Stéphane' })
CREATE (gendry:personnage { name : 'Gendry ???Baratheon', nickname : 'What happened to my story ?' })
//tyrells :
CREATE (tyrell:clan { clanname : 'The Tyrells'})
CREATE (margeary:personnage { name : 'Margeary Tyrell', nickname : 'Tyrell asset' })
CREATE (loras:personnage { name : 'Loras Tyrell', nickname : 'King Gay Knight' })
//targaryens :
CREATE (targaryen:clan { clanname : 'The Targaryen'})
CREATE (daenerys:personnage { name : 'Daenerys Targaryen', nickname : 'Mother of Dragons' })
CREATE (viserys:personnage { name : 'Viserys Targaryen', nickname : 'Gold Head' })
//Stark :
CREATE (stark:clan { clanname : 'The Starks'})
CREATE (arya:personnage { name : 'Arya Stark', nickname : 'I am 20' })
CREATE (sansa:personnage { name : 'Sansa Stark', nickname : 'I am sorry I can t smile.' })
CREATE (rosse:personnage { name : 'Roose Bolton', nickname : 'Come by the house I ll kill you' })
CREATE (eddard:personnage { name : 'Eddard Stark', nickname : 'Whhhhy ???' })
CREATE (robb:personnage { name : 'Robb Stark', nickname : 'King of the North' })
CREATE (john:personnage { name : 'John Snow', nickname : 'The Bastard' })
CREATE (bran:personnage { name : 'Bran Stark', nickname : 'Stop boring me' })
//tullys :
CREATE (tully:clan { clanname : 'The Tullys'})
CREATE (catelyn:personnage { name : 'Catelyn Stark', nickname : 'Mother of Stark ?' })
CREATE (lysa:personnage { name : 'Lyse Tully', nickname : 'Crazy' })
//greyjoys :
CREATE (greyjoy:clan { clanname : 'The Greyjoys'})
CREATE (theon:personnage { name : 'Theon Greyjoy', nickname : 'The enuque' })
CREATE (balon:personnage { name : 'Balon Greyjoy', nickname : 'Nicest father ever' })
//actions :
CREATE (tyrion)-[:TUE{type : 'homicide'}]->(shae)
CREATE (tyrion)-[:TUE{type : 'homicide'}]->(tywin)
CREATE (petyr)-[:TUE{type : 'homicide'}]->(joffrey)
CREATE (stannis)-[:TUE{type : 'homicide'}]->(renly)
CREATE (khal)-[:TUE{type : 'homicide'}]->(khal)
CREATE (khal)-[:TUE{type : 'homicide'}]->(viserys)
CREATE (joffrey)-[:TUE{type : 'homicide'}]->(eddard)
CREATE (rosse)-[:TUE{type : 'homicide'}]->(robb)
CREATE (rosse)-[:TUE{type : 'homicide'}]->(catelyn)
CREATE (petyr)-[:TUE{type : 'homicide'}]->(lysa)
CREATE (jaime)-[:AIME{type : 'amour'}]->(cersei)
CREATE (cersei)-[:AIME{type : 'amour'}]->(jaime)
CREATE (tyrion)-[:AIME{type : 'amour'}]->(shae)
CREATE (shae)-[:AIME{type : 'amour'}]->(tywin)
CREATE (robert)-[:AIME{type : 'amour'}]->(cersei)
CREATE (loras)-[:AIME{type : 'amour'}]->(renly)
CREATE (renly)-[:AIME{type : 'amour'}]->(loras)
CREATE (margeary)-[:AIME{type : 'amour'}]->(joffrey)
CREATE (joffrey)-[:AIME{type : 'amour'}]->(margeary)
CREATE (khal)-[:AIME{type : 'amour'}]->(daenerys)
CREATE (daenerys)-[:AIME{type : 'amour'}]->(khal)
CREATE (petyr)-[:AIME{type : 'amour'}]->(catelyn)
CREATE (eddard)-[:AIME{type : 'amour'}]->(catelyn)
CREATE (catelyn)-[:AIME{type : 'amour'}]->(eddard)
//liens de clan :
CREATE (theon)-[:LIER{type : 'liendeclan'}]->(greyjoy)
CREATE (balon)-[:LIER{type : 'liendeclan'}]->(greyjoy)
CREATE (khal)-[:LIER{type : 'liendeclan'}]->(sansclan)
CREATE (john)-[:LIER{type : 'liendeclan'}]->(sansclan)
CREATE (petyr)-[:LIER{type : 'liendeclan'}]->(sansclan)
CREATE (gendry)-[:LIER{type : 'liendeclan'}]->(sansclan)
CREATE (hodor)-[:LIER{type : 'liendeclan'}]->(sansclan)
CREATE (gendry)-[:LIER{type : 'liendeclan'}]->(baratheon)
CREATE (joffrey)-[:LIER{type : 'liendeclan'}]->(baratheon)
CREATE (robert)-[:LIER{type : 'liendeclan'}]->(baratheon)
CREATE (renly)-[:LIER{type : 'liendeclan'}]->(baratheon)
CREATE (stannis)-[:LIER{type : 'liendeclan'}]->(baratheon)
CREATE (margeary)-[:LIER{type : 'liendeclan'}]->(tyrell)
CREATE (loras)-[:LIER{type : 'liendeclan'}]->(tyrell)
CREATE (daenerys)-[:LIER{type : 'liendeclan'}]->(targaryen)
CREATE (viserys)-[:LIER{type : 'liendeclan'}]->(targaryen)
CREATE (lysa)-[:LIER{type : 'liendeclan'}]->(tully)
CREATE (catelyn)-[:LIER{type : 'liendeclan'}]->(tully)
CREATE (arya)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (hodor)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (rosse)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (sansa)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (petyr)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (eddard)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (robb)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (john)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (bran)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (catelyn)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (theon)-[:LIER{type : 'liendeclan'}]->(stark)
CREATE (shae)-[:LIER{type : 'liendeclan'}]->(lanister)
CREATE (rosse)-[:LIER{type : 'liendeclan'}]->(lanister)
CREATE (tyrion)-[:LIER{type : 'liendeclan'}]->(lanister)
CREATE (tywin)-[:LIER{type : 'liendeclan'}]->(lanister)
CREATE (jaime)-[:LIER{type : 'liendeclan'}]->(lanister)
CREATE (cersei)-[:LIER{type : 'liendeclan'}]->(lanister)
CREATE (joffrey)-[:LIER{type : 'liendeclan'}]->(lanister)
//GameOfThrones: //sans clan : CREATE (sansclan:clan { clanname : 'Clan des sans lien de sang'}) CREATE (hodor:personnage { name : 'Hodor', nickname : 'I am the only good actor here !' }) CREATE (khal:personnage { name : 'Khal Drogo', nickname : 'Horse Man' }) CREATE (petyr:personnage { name : 'Petyr Baelish', nickname : 'LittleFinger' }) CREATE (shae:personnage { name : 'Shae for the Imp', nickname : 'Dead' }) //lanister : CREATE (lanister:clan { clanname : 'The Lannisters'}) CREATE (tyrion:personnage { name : 'Tyrion Lannister', nickname : 'The Imp' }) CREATE (tywin:personnage { name : 'Tywin Lannister', nickname : 'Father of the Lannisters' }) CREATE (jaime:personnage { name : 'Jaime Lannister', nickname : 'King Slayer' }) CREATE (cersei:personnage { name : 'Cersei Lannister', nickname : 'Brother Lover' }) CREATE (joffrey:personnage { name : 'Joffrey Lannister', nickname : 'Mad King 2' }) //baratheons : CREATE (baratheon:clan { clanname : 'The Baratheons'}) CREATE (robert:personnage { name : 'Robert Baratheon', nickname : 'King Robert' }) CREATE (renly:personnage { name : 'Renly Baratheon', nickname : 'King Gay' }) CREATE (stannis:personnage { name : 'Stannis Baratheon', nickname : 'Stéphane' }) CREATE (gendry:personnage { name : 'Gendry ???Baratheon', nickname : 'What happened to my story ?' }) //tyrells : CREATE (tyrell:clan { clanname : 'The Tyrells'}) CREATE (margeary:personnage { name : 'Margeary Tyrell', nickname : 'Tyrell asset' }) CREATE (loras:personnage { name : 'Loras Tyrell', nickname : 'King Gay Knight' }) //targaryens : CREATE (targaryen:clan { clanname : 'The Targaryen'}) CREATE (daenerys:personnage { name : 'Daenerys Targaryen', nickname : 'Mother of Dragons' }) CREATE (viserys:personnage { name : 'Viserys Targaryen', nickname : 'Gold Head' }) //Stark : CREATE (stark:clan { clanname : 'The Starks'}) CREATE (arya:personnage { name : 'Arya Stark', nickname : 'I am 20' }) CREATE (sansa:personnage { name : 'Sansa Stark', nickname : 'I am sorry I can t smile.' }) CREATE (rosse:personnage { name : 'Roose Bolton', nickname : 'Come by the house I ll kill you' }) CREATE (eddard:personnage { name : 'Eddard Stark', nickname : 'Whhhhy ???' }) CREATE (robb:personnage { name : 'Robb Stark', nickname : 'King of the North' }) CREATE (john:personnage { name : 'John Snow', nickname : 'The Bastard' }) CREATE (bran:personnage { name : 'Bran Stark', nickname : 'Stop boring me' }) //tullys : CREATE (tully:clan { clanname : 'The Tullys'}) CREATE (catelyn:personnage { name : 'Catelyn Stark', nickname : 'Mother of Stark ?' }) CREATE (lysa:personnage { name : 'Lyse Tully', nickname : 'Crazy' }) //greyjoys : CREATE (greyjoy:clan { clanname : 'The Greyjoys'}) CREATE (theon:personnage { name : 'Theon Greyjoy', nickname : 'The enuque' }) CREATE (balon:personnage { name : 'Balon Greyjoy', nickname : 'Nicest father ever' }) //actions : CREATE (tyrion)-[:TUE{type : 'homicide'}]->(shae) CREATE (tyrion)-[:TUE{type : 'homicide'}]->(tywin) CREATE (petyr)-[:TUE{type : 'homicide'}]->(joffrey) CREATE (stannis)-[:TUE{type : 'homicide'}]->(renly) CREATE (khal)-[:TUE{type : 'homicide'}]->(khal) CREATE (khal)-[:TUE{type : 'homicide'}]->(viserys) CREATE (joffrey)-[:TUE{type : 'homicide'}]->(eddard) CREATE (rosse)-[:TUE{type : 'homicide'}]->(robb) CREATE (rosse)-[:TUE{type : 'homicide'}]->(catelyn) CREATE (petyr)-[:TUE{type : 'homicide'}]->(lysa) CREATE (jaime)-[:AIME{type : 'amour'}]->(cersei) CREATE (cersei)-[:AIME{type : 'amour'}]->(jaime) CREATE (tyrion)-[:AIME{type : 'amour'}]->(shae) CREATE (shae)-[:AIME{type : 'amour'}]->(tywin) CREATE (robert)-[:AIME{type : 'amour'}]->(cersei) CREATE (loras)-[:AIME{type : 'amour'}]->(renly) CREATE (renly)-[:AIME{type : 'amour'}]->(loras) CREATE (margeary)-[:AIME{type : 'amour'}]->(joffrey) CREATE (joffrey)-[:AIME{type : 'amour'}]->(margeary) CREATE (khal)-[:AIME{type : 'amour'}]->(daenerys) CREATE (daenerys)-[:AIME{type : 'amour'}]->(khal) CREATE (petyr)-[:AIME{type : 'amour'}]->(catelyn) CREATE (eddard)-[:AIME{type : 'amour'}]->(catelyn) CREATE (catelyn)-[:AIME{type : 'amour'}]->(eddard) //liens de clan : CREATE (theon)-[:LIER{type : 'liendeclan'}]->(greyjoy) CREATE (balon)-[:LIER{type : 'liendeclan'}]->(greyjoy) CREATE (khal)-[:LIER{type : 'liendeclan'}]->(sansclan) CREATE (john)-[:LIER{type : 'liendeclan'}]->(sansclan) CREATE (petyr)-[:LIER{type : 'liendeclan'}]->(sansclan) CREATE (gendry)-[:LIER{type : 'liendeclan'}]->(sansclan) CREATE (hodor)-[:LIER{type : 'liendeclan'}]->(sansclan) CREATE (gendry)-[:LIER{type : 'liendeclan'}]->(baratheon) CREATE (joffrey)-[:LIER{type : 'liendeclan'}]->(baratheon) CREATE (robert)-[:LIER{type : 'liendeclan'}]->(baratheon) CREATE (renly)-[:LIER{type : 'liendeclan'}]->(baratheon) CREATE (stannis)-[:LIER{type : 'liendeclan'}]->(baratheon) CREATE (margeary)-[:LIER{type : 'liendeclan'}]->(tyrell) CREATE (loras)-[:LIER{type : 'liendeclan'}]->(tyrell) CREATE (daenerys)-[:LIER{type : 'liendeclan'}]->(targaryen) CREATE (viserys)-[:LIER{type : 'liendeclan'}]->(targaryen) CREATE (lysa)-[:LIER{type : 'liendeclan'}]->(tully) CREATE (catelyn)-[:LIER{type : 'liendeclan'}]->(tully) CREATE (arya)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (hodor)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (rosse)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (sansa)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (petyr)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (eddard)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (robb)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (john)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (bran)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (catelyn)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (theon)-[:LIER{type : 'liendeclan'}]->(stark) CREATE (shae)-[:LIER{type : 'liendeclan'}]->(lanister) CREATE (rosse)-[:LIER{type : 'liendeclan'}]->(lanister) CREATE (tyrion)-[:LIER{type : 'liendeclan'}]->(lanister) CREATE (tywin)-[:LIER{type : 'liendeclan'}]->(lanister) CREATE (jaime)-[:LIER{type : 'liendeclan'}]->(lanister) CREATE (cersei)-[:LIER{type : 'liendeclan'}]->(lanister) CREATE (joffrey)-[:LIER{type : 'liendeclan'}]->(lanister)
Question
Affichez l'ensemble des nœuds présents dans votre base de données.
Manipulez le graphe quelques minutes afin de vous faire une idée des données.
Question
Afficher le nœud qui possède comme nickname The Imp.
Question
Affichez le clan qui a pour clanname The Starks.