cours GQL
This commit is contained in:
48
docs/gql.md
Normal file
48
docs/gql.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Graph Query Language
|
||||
|
||||
GQL (Graph Query Language) est un langage déclaratif standardisé par l’ISO/IEC 39075:2024 conçu spécifiquement pour interroger, manipuler et gérer des bases de données graphe fondées sur le modèle Property Graph.
|
||||
|
||||
Il permet d’exprimer des requêtes basées sur les relations entre données ainsi que sur les propriétés attachées aux nœuds et aux arêtes.
|
||||
|
||||
GQL offre des capacités :
|
||||
|
||||
- de lecture : recherche de motifs de graphes, exploration de chemins
|
||||
- d’écriture : insertion, mise à jour et suppression de nœuds et relations
|
||||
- de définition du schéma : labels, contraintes, types de propriétés
|
||||
- de requêtes avancées sur les chemins (traversées, contraintes de longueur, etc.)
|
||||
|
||||
|
||||
## Création
|
||||
|
||||
```gql
|
||||
INSERT (p:Person {name: "John", age: 28});
|
||||
```
|
||||
|
||||
```gql
|
||||
MATCH (a:Person {name: "Alice"}), (b:Person {name: "Bob"})
|
||||
INSERT (a)-[:KNOWS]->(b);
|
||||
```
|
||||
|
||||
## Sélection
|
||||
|
||||
Retourne le nom et l'âge des personnes.
|
||||
|
||||
```gql
|
||||
MATCH (p:Person)
|
||||
RETURN p.name, p.age;
|
||||
```
|
||||
|
||||
Avec un filtre sur l'âge
|
||||
|
||||
```gql
|
||||
MATCH (p:Person)
|
||||
WHERE p.age > 30
|
||||
RETURN p.name;
|
||||
```
|
||||
|
||||
Retourne les relations
|
||||
|
||||
```gql
|
||||
MATCH (a:Person)-[:KNOWS]->(b:Person)
|
||||
RETURN a.name, b.name;
|
||||
```
|
||||
58
docs/neo4j.md
Normal file
58
docs/neo4j.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Neo4J
|
||||
|
||||
Neo4j est une base de données orientée graphes (Graph Database).
|
||||
Contrairement aux bases relationnelles (comme PostgreSQL ou MySQL), qui organisent les données en tables et relations, Neo4j stocke les informations sous forme de nœuds (nodes) et de relations (relationships) — ce qui permet de modéliser naturellement les connexions entre entités.
|
||||
|
||||
## Noeuds
|
||||
|
||||
Les noeuds sont les entités principales du graphe.
|
||||
|
||||
```
|
||||
(:Person { name: "Sigourney", age: 30 })
|
||||
(:Film { title: "Alien", year: 1979 })
|
||||
```
|
||||
|
||||
Chaque nœud peut avoir :
|
||||
- une ou plusieurs étiquettes (labels) (:Person, :Film, etc.)
|
||||
- des propriétés sous forme de paires clé/valeur.
|
||||
|
||||
## Relations
|
||||
|
||||
Les relations relient deux nœuds et ont elles aussi un type et des propriétés :
|
||||
|
||||
```cypher
|
||||
(:Person {name: "Sigourney"})-[:JOUE { role: "Ellen" }]->(:Film {title: "Alien"})
|
||||
```
|
||||
|
||||
JOUE est le type de relation.
|
||||
|
||||
{ role: "Ellen" } est une propriété de cette relation.
|
||||
|
||||
Les relations sont orientées : elles vont d’un nœud source vers un nœud cible `-[]->`.
|
||||
|
||||
## Le langage Cypher
|
||||
|
||||
Cypher est le langage de requête de Neo4j, inspiré de SQL mais adapté aux graphes.
|
||||
|
||||
### Trouver un noeud
|
||||
|
||||
```cypher
|
||||
MATCH (p:Person { name: "Sigourney" })
|
||||
RETURN p;
|
||||
```
|
||||
|
||||
### Trouver des relations directes
|
||||
|
||||
```cypher
|
||||
MATCH (a:Person)-[:KNOWS]->(b:Person)
|
||||
RETURN a.name, b.name;
|
||||
```
|
||||
|
||||
### Trouver des chemins
|
||||
|
||||
```cypher
|
||||
MATCH path = (a:Person {name:"Alice"})-[:KNOWS*1..3]->(b:Person)
|
||||
RETURN path;
|
||||
```
|
||||
|
||||
[:KNOWS*1..3] cherche des chemins de 1 à 3 sauts.
|
||||
Reference in New Issue
Block a user