Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
GRAPHGENLe générateur de graphes
#Neo4j Meetup Lyon
18-12-2014
graphgen.neoxygen.io
#whoami
Christophe Willemsen
Senior Consultant
Expert Neo4j
@graph_aware
graphaware.com
POURQUOI GRAPHGEN ?
RETOUR RAPIDE SUR LES FONCTIONS
NATIVES A NEO4J POUR CRÉER
SON GRAPHE
A LA MAIN
CREATE (n:Personne {prenom: ‘Roger’, nom:’Laguadec’})
A ECRIRE
100XPour avoir 100 noeuds
AVEC UNE BOUCLE
FOREACH ( i in range(0,99) | CREATE (n:Personne {id:i} ) )
LOAD CSV
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM FILE
‘file:///Users/me/docs/import.csv’ AS csv
MERGE (n:Per...
ET AVEC GRAPHGEN ALORS ?
(p:Personne {prenom: firstName, nom: lastName} *100)
(p)-[:CONNAIS *n..n]->(p)
DEMO 1
SYNTAXE DES NOEUDS
BASEE SUR LE LANGAGE CYPHER !
(p:Personne {prenom: firstName} *100 )
identifiant
label
propriété du noe...
SYNTAXE DES RELATIONS
BASEE SUR LE LANGAGE CYPHER !
-[:CONNAIS {depuis: unixTime} *n..n ]->
type
propriété de la relation
...
PARAMETRES DE PROPRIETES
Exemple: Je veux 100 personnes avec une date de naissance,
mais ces personnes doivent être majeur...
Les faker types
• word
• sentence
• dateTime
• dateTimeBetween
• text
• unixTime
• randomDigit
• numberBetween
• company
•...
DEMO 2
GRAPHGEN ENCORE PLUS FORT !
NŒUDS TYPES
ECRIRE CA :
(user:User:Person {
_id: uuid,
login: userName,
password: password,
email: email,
prenom: firstNam...
NŒUDS TYPES
COMME CA C’EST COOL :
(user:#User:#Person *100)
# = Activation du nœud type
NŒUDS TYPES
• #Person
• #User
• #Tweet
• #File
• #HashTag
• #BlogPost
• #Company
• … et plein d’autres à venir
TRUCS & ASTUCES
ASTUCE 1
Utiliser une propriété avec valeur fixe que je définis pour tous les nœuds Personne
SOLUTION: randomElement avec ...
ASTUCE 2
Suggestions (groupes de personnes qui ne peuvent pas se connaître)
SOLUTION: Créer deux groupes de nœuds distinct...
GRAPHGEN LES POINTS FORTS
• BASE SUR LA SPEC CYPHER (PAS DE NOUVELLE SYNTAXE A APPRENDRE)
• DESTINE A TOUT LE MONDE
• GENE...
MOINS FORTS
GRAPHGEN LES POINTS FAIBLES
• LE PROJET EST ENCORE JEUNE (10 OCTOBRE)
• S’ADAPTE A +- 75% DE COMPLEXITE
• QUEL...
A VENIR DANS GRAPHGEN
• User Dashboard pour sauver vos graphes
• Définir vos propres nœuds types
• Définir les pourcentage...
QUESTIONS ?
MERCI 
Graphgen : http://graphgen.neoxygen.io
Composants PHP pour Neo4j : https://github.com/neoxygen
Follow me : @ikwatt...
Upcoming SlideShare
Loading in …5
×

Graphgen - le générateur de graphes

898 views

Published on

Graphgen est un générateur de graphes en ligne dédié à la base de données Neo4j. Vous pourrez facilement créer et générer des graphes avec des valeurs aléatoirement générées.

La syntaxe est basée sur le langage de requêtage Cypher .

Published in: Software
  • Be the first to comment

  • Be the first to like this

Graphgen - le générateur de graphes

  1. 1. GRAPHGENLe générateur de graphes #Neo4j Meetup Lyon 18-12-2014 graphgen.neoxygen.io
  2. 2. #whoami Christophe Willemsen Senior Consultant Expert Neo4j @graph_aware graphaware.com
  3. 3. POURQUOI GRAPHGEN ? RETOUR RAPIDE SUR LES FONCTIONS NATIVES A NEO4J POUR CRÉER SON GRAPHE
  4. 4. A LA MAIN CREATE (n:Personne {prenom: ‘Roger’, nom:’Laguadec’}) A ECRIRE 100XPour avoir 100 noeuds
  5. 5. AVEC UNE BOUCLE FOREACH ( i in range(0,99) | CREATE (n:Personne {id:i} ) )
  6. 6. LOAD CSV USING PERIODIC COMMIT 1000 LOAD CSV WITH HEADERS FROM FILE ‘file:///Users/me/docs/import.csv’ AS csv MERGE (n:Personne {prenom: csv.prenom} )
  7. 7. ET AVEC GRAPHGEN ALORS ? (p:Personne {prenom: firstName, nom: lastName} *100) (p)-[:CONNAIS *n..n]->(p)
  8. 8. DEMO 1
  9. 9. SYNTAXE DES NOEUDS BASEE SUR LE LANGAGE CYPHER ! (p:Personne {prenom: firstName} *100 ) identifiant label propriété du noeud faker type quantité
  10. 10. SYNTAXE DES RELATIONS BASEE SUR LE LANGAGE CYPHER ! -[:CONNAIS {depuis: unixTime} *n..n ]-> type propriété de la relation faker type cardinalité
  11. 11. PARAMETRES DE PROPRIETES Exemple: Je veux 100 personnes avec une date de naissance, mais ces personnes doivent être majeures et pas encore à l’âge De la retraite. (p:Personne {nom: fullName, ddn: { dateTimeBetween: [‘’-65 years’’, ‘’-18 years’’]}} *100) YAML inline !!!
  12. 12. Les faker types • word • sentence • dateTime • dateTimeBetween • text • unixTime • randomDigit • numberBetween • company • firstName, lastName • country • city • address • latitude, longitude • url • username • password • creditCardNumber • ip • userAgent • uuid • ean13 • fileExtension • hashTag • …… et plein d’autres
  13. 13. DEMO 2
  14. 14. GRAPHGEN ENCORE PLUS FORT !
  15. 15. NŒUDS TYPES ECRIRE CA : (user:User:Person { _id: uuid, login: userName, password: password, email: email, prenom: firstName, nom: lastName, ddn: { dateTimeBetween: [‘’-50 years’’, ‘’-18 years’’]}} *100) C’EST LOOOOOOOOOOONG !
  16. 16. NŒUDS TYPES COMME CA C’EST COOL : (user:#User:#Person *100) # = Activation du nœud type
  17. 17. NŒUDS TYPES • #Person • #User • #Tweet • #File • #HashTag • #BlogPost • #Company • … et plein d’autres à venir
  18. 18. TRUCS & ASTUCES
  19. 19. ASTUCE 1 Utiliser une propriété avec valeur fixe que je définis pour tous les nœuds Personne SOLUTION: randomElement avec 1 seul élément (p:Personne:Administrateur {groupe: {randomElement:[‘’ADMIN’’]}} *20)
  20. 20. ASTUCE 2 Suggestions (groupes de personnes qui ne peuvent pas se connaître) SOLUTION: Créer deux groupes de nœuds distincts avec le même label (p:#Person *20)-[:A_TRAVAILLE_POUR *n..1]->(c:#Company *10) (autres:#Person *20)-[:A_TRAVAILLE_POUR *n..1]->(c)
  21. 21. GRAPHGEN LES POINTS FORTS • BASE SUR LA SPEC CYPHER (PAS DE NOUVELLE SYNTAXE A APPRENDRE) • DESTINE A TOUT LE MONDE • GENERATION DE VALEURS • VISUALISATION IMMEDIATE DE VOTRE GRAPHE • IMPORTATION DU GRAPHE DANS VOTRE BASE • EXPORT
  22. 22. MOINS FORTS GRAPHGEN LES POINTS FAIBLES • LE PROJET EST ENCORE JEUNE (10 OCTOBRE) • S’ADAPTE A +- 75% DE COMPLEXITE • QUELQUES FONCTIONS CLES AVANT UNE STABLE RELEASE • LIMITE A 1000 NŒUDS POUR LA VISUALISATION Faut pas exagérer non plus !
  23. 23. A VENIR DANS GRAPHGEN • User Dashboard pour sauver vos graphes • Définir vos propres nœuds types • Définir les pourcentages des relations x..n • Génération GraphGist en 1 clic • Public API • Export vers d’autres formats
  24. 24. QUESTIONS ?
  25. 25. MERCI  Graphgen : http://graphgen.neoxygen.io Composants PHP pour Neo4j : https://github.com/neoxygen Follow me : @ikwattro

×