[PYTHON] [Neo4J] ④ Essayez de gérer la structure du graphe avec Cypher

Un coin où vous pouvez essayer Neo4J pendant longtemps.

Si vous maîtrisez Cypher, un langage de requête pour les bases de données de graphes récemment ouvert, vous pourrez créer et rechercher des structures de graphes. Alors commençons avec Cypher.

J'ai essayé d'utiliser py2neo, que j'ai mis la dernière fois, comme compagnon. Installation via pip:

sudo pip install py2neo $ python -V Python 2.7.10

1) Traitement par lots avec py2neo

Pour le moment, j'ai copié et corrigé un exemple subtil non-DRY (et cela ne fonctionne pas) qui était sur le Web, et j'ai rendu possible le traitement par lots:

test.py


from py2neo import Graph

graph = Graph("http://neo4j:yourpassword@:7474/db/data/")
statement = """
  MERGE (person:Person {name:{person_name}}) ON CREATE SET
    person.age = {person_age},
    person.sex = {person_sex}

  MERGE (pet:Pet {name:{pet_name}}) ON CREATE SET
    pet.type = {pet_type}

  MERGE (person)-[:owns]->(pet)

  RETURN person
  """

tx = graph.cypher.begin()

persons = [
    {'name': 'Homer', 'age': 32, 'sex': 'Male', 'pet_name': 'Buller', 'pet_type': 'Dog'},
    {'name': 'Lucy', 'age': 12, 'sex': 'Male', 'pet_name': 'Buller', 'pet_type': 'Dog'},
    {'name': 'Lucy', 'age': 12, 'sex': 'Male', 'pet_name': 'Betty', 'pet_type': 'Cat'}
]

for person in persons:
    print person
    tx.append(statement, {
      'person_name': person['name'],
      'person_age': person['age'],
      'person_sex': person['sex'],

      'pet_name': person['pet_name'],
      'pet_type': person['pet_type']
    })

tx.process()

tx.commit()

Vous pouvez voir le flux en extrayant uniquement la partie transaction:

tx = graph.cypher.begin() tx.append(statement, { ... }) tx.process() tx.commit()

De plus, si vous maîtrisez la syntaxe de chiffrement de MERGE ~ ON CREATE dans l'instruction, cela semble plutôt bon.

Voir l'exemple de py2neo qui valide JSON ci-dessous, qui pourrait être écrit différemment. http://jexp.github.io/blog/html/load_json.html

2) Écrivez une requête sur la ligne de commande.

Ensuite, essayez de jouer avec le chiffrement à partir de la ligne de commande (l'environnement est Mac).

$ neo4j-shell
Unable to find any JVMs matching version "1.7".
Welcome to the Neo4j Shell! Enter 'help' for a list of commands
NOTE: Remote Neo4j graph database service 'shell' at port 1337

neo4j-sh (?)$ MATCH (p)-[:owns]-(pet) WHERE p.name = "Lucy" RETURN p, pet;
+------------------------------------------------------------------------------+
| p                                       | pet                                |
+------------------------------------------------------------------------------+
| Node[11]{name:"Lucy",age:12,sex:"Male"} | Node[12]{name:"Betty",type:"Cat"}  |
| Node[11]{name:"Lucy",age:12,sex:"Male"} | Node[10]{name:"Buller",type:"Dog"} |
+------------------------------------------------------------------------------+
2 rows
46 ms

Quelque chose s'est plaint au lancement de neo4j-shell, mais j'ai pu faire une requête.

3) Exécuter une requête sur le navigateur et la représenter graphiquement

Exécutez la même requête sur le navigateur:

MATCH (p)-[:owns]-(pet) WHERE p.name = "Lucy" RETURN p, pet;

Appuyez sur le bouton Graphique à droite et vous verrez l'écran graphique que vous attendiez: http://localhost:7474/browser/ スクリーンショット 2015-11-14 19.52.40.png

4) feuille de triche de requête de chiffrement, etc.

Ci-dessous sur le site d'origine: http://neo4j.com/docs/stable/cypher-refcard/

Je ne trouve pas de bonne introduction au japonais sur le Web.

Dépêchez-vous et attendez avec impatience les "notes d'étude" avec des mises à jour de temps en temps! http://qiita.com/Keech/items/6bd5b667e935a20be018

Faisons cela à notre rythme ^^;

Recommended Posts

[Neo4J] ④ Essayez de gérer la structure du graphe avec Cypher
Essayez de résoudre le problème du fizzbuzz avec Keras
Essayez de résoudre le diagramme homme-machine avec Python
Comment essayer l'algorithme des amis d'amis avec pyfof
Essayez de résoudre le livre des défis de programmation avec python3
Visualisons la pièce avec tarte aux râpes, partie 1
Essayez d'obtenir le contenu de Word avec Golang
Essayez de défier le sol par récursif
Essayez de jouer avec l'uprobe qui prend directement en charge Systemtap
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Essayez de déchiffrer les caractères déformés dans le nom du fichier joint avec Python
Essayez d'extraire les caractéristiques des données de capteur avec CNN
Essayez d'exploiter Facebook avec Python
Essayez de résoudre le problème N Queen avec SA de PyQUBO
Essayez de profiler avec ONNX Runtime
Essayez d'introduire le thème sur Pelican
Graphique d'appel de sortie avec PyCallGraph
Essayez Cython dans les plus brefs délais
Essayez de brouiller l'image avec opencv2
Essayez de produire de l'audio avec M5 STACK
Le moyen le plus rapide d'essayer EfficientNet
Essayez de résoudre l'itinéraire le plus court avec les données sociales Python + NetworkX +
Du «dessin» à «l'écriture» du diagramme de configuration: essayez de dessiner le diagramme de configuration AWS avec des diagrammes
La façon la plus simple d'essayer PyQtGraph
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (théorie)
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
Essayez de ne faire réagir que le carbone en bout de chaîne avec SMARTS
[TensorFlow / Keras] La route pour assembler un RNN de votre structure préférée
Essayez de séparer l'arrière-plan et l'objet en mouvement de la vidéo avec OpenCV
Essayez de vous connecter à qiita avec Python
[Python] Définissez la plage du graphique avec matplotlib
Je veux gérer la rime part1
Essayez de faire face à la somme partielle
Essayez d'utiliser l'appareil photo avec OpenCV de Python
Je veux gérer la rime part3
Essayez de prédire les fleurs de cerisier avec XG Boost
Essayer de gérer SQLite3 avec Python [Note]
Essayez de convertir en données ordonnées avec les pandas
Essayez rapidement de visualiser votre ensemble de données avec des pandas
Python amateur tente de résumer la liste ①
Premier YDK à essayer avec Cisco IOS-XE
Essayez de réécrire le fichier avec la commande less
Alignez la barre de couleurs sur la figure avec matplotlib
Essayez de générer une image avec aliénation
Je veux gérer la rime part2
Je veux gérer la rime part5
Je veux gérer la rime part4
La route de la compilation vers Python 3 avec Thrift
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (code Python)
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (résultat de l'exécution)
Une solution de contournement simple pour que les robots essaient de publier des tweets avec le même contenu
[Vérification] Essayez d'aligner le groupe de points avec la fonction d'optimisation de pytorch Partie 1
Essayez d'utiliser le processeur à 4 cœurs du Raspberry Pi 2 avec Parallel Python
Essayez de créer votre propre AWS-SDK avec bash
Connectez-vous à un serveur distant avec SSH