Bases de Données / Databases

Site Web de l'équipe BD du LIP6 / LIP6 DB Web Site

Outils pour utilisateurs

Outils du site


site:enseignement:master:bdle:tmes:graphes-neo4j

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
site:enseignement:master:bdle:tmes:graphes-neo4j [23/01/2019 19:31]
camelia
site:enseignement:master:bdle:tmes:graphes-neo4j [24/01/2020 12:12] (Version actuelle)
camelia
Ligne 3: Ligne 3:
   * Télécharger Neo4J à cette adresse [[https://​neo4j.com/​download/​|]]   * Télécharger Neo4J à cette adresse [[https://​neo4j.com/​download/​|]]
   * Installer ​ et lancer Neo4J: [[https://​neo4j.com/​docs/​operations-manual/​current/​installation/​linux/​tarball/​|instructions (Unix console application)]]   * Installer ​ et lancer Neo4J: [[https://​neo4j.com/​docs/​operations-manual/​current/​installation/​linux/​tarball/​|instructions (Unix console application)]]
-  * Ouvrir le navigateur Web et aller à cette adresse: ​ http://​localhost:​7474 ​+  * Créer une base de données graphe ("New Graph" puis "​Create a local graph" ensuite "​Start"​) 
 +  * Une fois la BD lancée cliquer sur "​Manage"​ ensuite "Open Browser"​
   * Voir la description de l'​interface Neo4J à cette [[https://​neo4j.com/​developer/​guide-neo4j-browser/​|adresse]] ​   * Voir la description de l'​interface Neo4J à cette [[https://​neo4j.com/​developer/​guide-neo4j-browser/​|adresse]] ​
   * Voir la [[http://​neo4j.com/​docs/​developer-manual/​current/​cypher/​|documentation]] sur le langage Cypher ​   * Voir la [[http://​neo4j.com/​docs/​developer-manual/​current/​cypher/​|documentation]] sur le langage Cypher ​
 +  * Voir [[site:​enseignement:​master:​bdle:​tmes:​graphes-neo4j-exemple-cours|l'​exemple du cours]]
  
-Le graphe qui sera utilisé pendant le TME représente des personnages de la bande dessinée "​Asterix"​ avec les albums dans lesquels ils apparaissent. Les commandes de création de ce graphe se trouvent dans ce {{ :​site:​enseignement:​master:​bdle:​tmes:​graphe_asterix.tgz |fichier}} à télécharger,​[[https://​neo4j.com/​graphgist/​asterix-les-personnages|source]]+Le graphe qui sera utilisé pendant le TME représente des personnages de la bande dessinée "​Asterix"​ avec les albums dans lesquels ils apparaissent. Les commandes de création de ce graphe se trouvent dans ce {{ :​site:​enseignement:​master:​bdle:​tmes:​graphe_asterix.tgz |fichier}} à télécharger. ​
  
  
Ligne 17: Ligne 19:
 <fc #​c0c0c0>''​Created 42 nodes, set 128 properties, created 67 relationships''</​fc>​ <fc #​c0c0c0>''​Created 42 nodes, set 128 properties, created 67 relationships''</​fc>​
  
 +Remarque: pour passer à la ligne suivante dans la ligne de commande du browser Neo4J dans le cas d'une requête sur plusieurs lignes utiliser **Shift+Enter**. Pour exécuter une commande sur plusieurs lignes utiliser **Ctrl+Enter**.
 +
 +Exemple de données (voir également la [[https://​neo4j.com/​graphgist/​asterix-les-personnages|source]] de ce graphe):
 +  * noeuds <fc #​008080>​personnages</​fc>​ avec des propriétés,​ par exemple:
 +<​code>​
 +"​personnageid":​ 56,
 +  "​nationalite":​ "​Egyptienne",​
 +  "​name":​ "​Cleopatre",​
 +  "​personnagetype":​ "Les autres"​
 +</​code>​
 +  * noeuds <fc #​008080>​album</​fc>,​ sans étiquette, ont des propriétés,​ par exemple:
 +<​code>​
 +   "​name":​ "​Asterix le Gaulois",​
 +  "​albumid":​ 1,
 +  "​premiereedition":​ "​1961",​
 +</​code>​
 +  * noeuds <fc #​008080>​type de personnage</​fc>,​ par exemple:
 +<​code>​
 + "​name":​ "Les Romains",​
 +  "​personnagetypeid":​ 2
 +</​code>​
 +  * noeuds de type<fc #008080> nationalité</​fc>,​ par exemple:
 +<​code>​
 +  "​name":​ "​Egyptien",​
 +  "​nationaliteid":​ 9
 +</​code>​
 +  * arcs dirigés avec une étiquette <fc #​6495ed>​COMPAGNON_AVENTURE</​fc>​ sans propriétés qui relient des noeuds personnages ​
 +  * arcs dirigés avec une étiquette <fc #​6495ed>​APPARAIT_DANS</​fc>​ sans propriétés qui relient des noeuds personnages et albums
 +  *  arcs dirigés avec une étiquette <fc #​6495ed>​PERSONNAGE_TYPE</​fc>​ sans propriétés qui relient des noeuds personnages et des noeuds type de personnage
 +  * arcs dirigés avec une étiquette <fc #​6495ed>​NATIONALITE</​fc>​ sans propriétés qui relient des noeuds personnages et des noeuds nationalité
  
 == Interrogation == == Interrogation ==
Ligne 24: Ligne 56:
  
  
-Q2)  Ajouter une étiquette :PERSONNAGE aux noeuds qui ont une propriété "​personnageid"​+Q2)  Ajouter une étiquette :PERSONNAGE aux noeuds qui ont une propriété "​personnageid" ​(utiliser set et exists).
  
-Q3) Compter le nombre de noeuds+''​Réponse:​ Added 11 labels''​
  
 +Q3) Compter le nombre de noeuds.
  
-Q4)  Compter le nombre d'arcs+''​Réponse:​ 42''​
  
 +Q4)  Compter le nombre d'​arcs.
  
-Q5) Trouver l'​étiquette do noeud dont le nom est 'Jules Cesar' 
  
 +''​Réponse:​ 67''​
  
-Q6 Trouver l'​étiquette ​des arcs vers le noeud dont le nom est 'Le Domaine des dieux'+Q5) Trouver l'​étiquette ​du noeud dont le nom est 'Jules Cesar'.
  
 +''​Réponse:​ ["​PERSONNAGE"​]
 +''​
  
-Q7Afficher toutes les propriétés ​des trois noeuds parmi les noeuds de type PERSONNAGE:+Q6 ​Trouver l'​étiquette ​des arcs vers le noeud dont le nom est 'Le Domaine des dieux'​.
  
 +''​Réponse:​ "​APPARAIT_DANS"''​
  
-Q8 Afficher les noms des personnages qui n'ont pas d'arc sortant ​de type COMPAGNON_AVENTURE:​+Q7) Afficher ​toutes ​les propriétés de n'importe quels trois noeuds parmi les noeuds ​de type PERSONNAGE.
  
-Q9)Afficher deux triangles ​(on considère le graphe comme étant non-dirigé)+Réponse: 
 +<​code>​ 
 +
 +  "​personnageid":​ 56, 
 +  "​nationalite":​ "​Egyptienne",​ 
 +  "​name":​ "​Cleopatre",​ 
 +  "​personnagetype":​ "Les autres"​ 
 +
 +
 +  "​personnageid":​ 44, 
 +  "​nationalite":​ "​Romain/​Egyptien",​ 
 +  "​personnagetype":​ "Les autres",​ 
 +  "​name":​ "​Cesarion ​(Ptolemee XVI)
 +
 +
 +  "​personnageid":​ 91, 
 +  "​nationalite":​ "​Romain",​ 
 +  "​name":​ "Jules Cesar",​ 
 +  "​personnagetype":​ "Les Romains"​ 
 +
 +</​code>​
  
 +Q8)  Afficher les noms des personnages qui n'ont pas d'arc sortant dont le type est COMPAGNON_AVENTURE.
  
-Q10 ​Afficher ​les noms des trois couples de personnages qui apparaissent dans le même album, ainsi que l'id de album commun+Réponse: 
 +<​code>​ 
 +"​Cesarion (Ptolemee XVI)
 +"​Numerobis"​ 
 +"​Brutus"​ 
 +"​Assurancetourix"​ 
 +"​Briseradius"​ 
 +"​Epidemais"​ 
 +"​Lupus"​ 
 +</​code>​ 
 +Q9) Calculer les triangles du graphe et afficher seulement deux parmi ces triangles (pour chacun de ces deux triangles afficher ​les noms des noeuds correspondants). On considère ​le graphe comme étant non-dirigé.
  
 +Réponse:
 +<​code>​
 +"Les Romains"​ "​Caius Obtus"​ "​Jules Cesar"
 +"Caius Obtus"​ "​Jules Cesar"​ "​Les Romains"​
 +</​code>​
  
-Q11) Afficher pour chaque couple de personnages reliés par un arc (non-dirigé) de type COMPAGNON_AVENTURE ​ 
-le nombre d'​albums qu'ils ont en commun (afficher le triplet contenant les noms des personnages et le nombre d'​albums en commun). ​ 
-Chaque couple de personnages doit apparaître une seule fois. Trier par nombre total d'​albums décroissant. 
  
 +Q10)  Afficher les noms des trois couples de personnages qui apparaissent dans le même album, pour chaque couple de personnages affichez l'id de album commun.
  
-Q12) Modifier la requête précédente afin d'​ajouter à l'arc de type COMPAGNON_AVENTURE qui relie les personnages une propriété '​albums' ​ +Réponse: 
-dont la valeur est le nombre total d'​albums en commun.+<​code>​ 
 +"Jules Cesar"​ "​Caius Obtus"​ 4 
 +"​Cleopatre"​ "​Numerobis"​ 34 
 +"Jules Cesar"​ "​Cleopatre"​ 6 
 +</​code>​
  
 +Q11) Afficher le sous-graphe des personnages reliés par des arcs de type COMPAGNON_AVENTURE qui ne contient pas '​Cleopatre'​.
  
-Q13) Afficher pour chaque noeud son nom et son le degré. Ordonner par ordre croissant des degrés. Considérer uniquement les arcs de type  +Réponse: 
-NATIONALITE et PERSONNAGE_TYPE+<​code>​ 
-  +afficher les propriétés de 9 noeuds ​et 11 arcs de type  ​COMPAGNON_AVENTURE
 +</​code>​
  
-Q14Degré total des noeuds+Q12Afficher le sous-graphe contenant comme noeuds ​source '​Cleopatre',​ 'Jules Cesar' ou 'Caius Obtus' et  
 +comme noeuds destination '​Cesarion (Ptolemee XVI)' ou '​Caligula Alavacomgetepus'​. Les noeuds sont reliés par des arcs  
 +de type COMPAGNON_AVENTURE.
  
-  - Afficher pour chaque valeur de degré le nombre de noeuds avec ce degré. Considérer tous les arcs, ordonner par degré. ​ +Réponse: 
-  - Pour chaque noeud enregistrer son degré somme nouvelle propriété. ​+<​code>​  
 +│56              │44              │ 
 +├────────────────┼────────────────┤ 
 +│91              │44              │ 
 +├────────────────┼────────────────┤ 
 +│91              │38              │ 
 +└────────────────┴────────────────┘ 
 +</​code>​
  
 +Q13)  Afficher le sous-graphe contenant les noeuds qui se trouvent à une distance 3 de '​Cleopatre'​ ainsi que les arcs de type COMPAGNON_AVENTURE
 +qui les relient. On considère uniquement les arcs dirigés de type COMPAGNON_AVENTURE.
  
-Q15) Afficher pour chaque noeud son nom et son degré sortant. Pour les noeuds ​sans liens sortants afficher 0. Ordonner par ordre décroissant des degrés. Considérer uniquement les arcs de type  +Réponse: 
-NATIONALITE ​et PERSONNAGE_TYPE. +<​code>​ 
- +10 noeuds de type PERSONNAGE ​et 14 arcs de type COMPAGNON_AVENTURE 
 +</​code>​
  
-Q16) Afficher le sous-graphe contenant comme noeuds source '​Cleopatre',​ 'Jules Cesar' ou 'Caius Obtus' et  
-comme noeuds destination '​Cesarion (Ptolemee XVI)' ou '​Caligula Alavacomgetepus'​. Les noeuds sont reliés par des arcs  
-de type COMPAGNON_AVENTURE. 
  
 +Q14) Afficher le plus court chemin et sa longueur entre Jules Cesar et Epidemais.
  
-Q17) Afficher le sous-graphe des personnages reliés par des arcs de type COMPAGNON_AVENTURE ​qui ne contient pas '​Cleopatre'​:+Réponse: 
 +<​code>​ 
 +3 noeuds PERSONNAGE, 3 arcs de type COMPAGNON_AVENTURE, longueur de chemin ​
 +</​code>​
  
 +Q15) Afficher le plus long chemin de type COMPAGNON_AVENTURE et sa longueur entre Jules Cesar et Brutus (graphe non-dirigé).
  
-Q18)  Afficher le sous-graphe contenant les noeuds ​qui se trouvent à une distance 3 de '​Cleopatre'​ ainsi que les arcs de type COMPAGNON_AVENTURE +Réponse: 
-qui les relient. On considère uniquement les arcs dirigés de type COMPAGNON_AVENTURE.+<​code>​ 
 +noeuds ​PERSONNAGE, 7 arcs de type COMPAGNON_AVENTURE, longueur de chemin : 7 
 +</​code>​
  
  
-Q19) Afficher le plus court chemin ​et sa longueur entre Jules Cesar et Epidemais.+Q16) Afficher ​les 3 noeuds qui ont le degré ​le plus élevé. Affichez pour chacun de ces noeuds son nom et son degré. Pour calculer le degré considérer uniquement les arcs de type NATIONALITE ou PERSONNAGE_TYPE.
  
 +Réponse:
 +<​code>​
 +"Les Romains"​ 6
 +"​Romain"​ 6
 +"Les autres"​ 4
 +</​code> ​
 +
 +
 +Q17) Afficher pour chaque couple de personnages reliés par un arc (non-dirigé) de type COMPAGNON_AVENTURE ​
 +le nombre d'​albums qu'ils ont en commun (afficher le triplet contenant les noms des personnages et le nombre d'​albums en commun). Chaque couple de personnages doit apparaître une seule fois. Trier par nombre total d'​albums décroissant.
 +Réponse:
 +<​code>​
 +"​Cleopatre"​ "​Jules Cesar"​ 3
 +"​Cleopatre"​ "​Numerobis"​ 2
 +"​Cesarion (Ptolemee XVI)"​ "​Cleopatre"​ 1
 +"Caius Obtus"​ "​Jules Cesar"​ 1
 +"​Caligula Alavacomgetepus"​ "​Jules Cesar"​ 1
 +</​code>​
 +
 +
 +Q18) Modifier la requête précédente afin d'​ajouter à l'arc de type COMPAGNON_AVENTURE qui relie les personnages retournés une propriété '​albums' ​
 +dont la valeur est le nombre total d'​albums en commun. Retourner les noms des personnages ainsi que la propriété ajoutée (utiliser WITH pour enchaîner les opérations).
 +
 +Réponse:
 +<​code>​
 +"​Cesarion (Ptolemee XVI)"​ "​Cleopatre"​ 1
 +"​Caligula Alavacomgetepus"​ "​Jules Cesar"​ 1
 +"Caius Obtus"​ "​Jules Cesar"​ 1
 +"​Cleopatre"​ "​Jules Cesar"​ 3
 +"​Cleopatre"​ "​Numerobis"​ 2
 +</​code>​
 +
 +
 +Q19) Degré total des noeuds
 +
 +  - Afficher pour chaque valeur de degré le nombre de noeuds avec ce degré. Considérer tous les arcs, ordonner par degré. ​
 +  - Pour chaque noeud enregistrer son degré comme nouvelle propriété. Affichez les 3 premières noeuds avec le degré le plus élevé.
 + 
 +Chacune de ces questions impliquent un enchaînement de deux opérations (utiliser WITH).
 +
 +Réponse:
 +<​code>​
 +1 23
 +2 2
 +3 7
 +4 2
 +5 2
 +6 3
 +9 1
 +10 1
 +31 1
 +</​code>​
 +et
 +<​code>​
 +"Jules Cesar"​ 31
 +"​Cleopatre"​ 10
 +"Caius Obtus"​ 9
 +</​code>​
 +
 +
 +
 +Q20) Afficher pour chaque noeud son nom et son degré sortant. Pour les noeuds sans liens sortants afficher 0. Ordonner par ordre décroissant des degrés. Considérer uniquement les arcs de type 
 +NATIONALITE et PERSONNAGE_TYPE.
  
-Q20) Afficher le plus long chemin de type COMPAGNON_AVENTURE et sa longueur entre Jules Cesar et Brutus (graphe non-dirigé). 
  
  
site/enseignement/master/bdle/tmes/graphes-neo4j.1548268260.txt.gz · Dernière modification: 23/01/2019 19:31 par camelia