cours GQL

This commit is contained in:
2025-10-29 07:55:21 +01:00
parent bcbc418dc2
commit 33c0088fee
3 changed files with 144 additions and 0 deletions

48
docs/gql.md Normal file
View File

@@ -0,0 +1,48 @@
# Graph Query Language
GQL (Graph Query Language) est un langage déclaratif standardisé par lISO/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 dexprimer 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
View 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 dun 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.