Vue d’ensemble
Les modèles de node et d'edge servent de blocs de construction pour la création de paths et de sous-graphs. En incorporant des filtres qui définissent les nodes et edges impliquées, ces modèles peuvent correspondre avec précision à des schémas dans divers scénarios.
Modèles
Il existe quatre modèles de node et d'edge de base :
Modèle |
Nom |
Description | Alias Personnalisé |
---|---|---|---|
n() |
Node unique | Supporté, type : NODE | |
e() ,le() ,re() |
Edge unique (Direction : ignoré, gauche, droite) |
Supporté, type : EDGE | |
e()[<steps>] ,le()[<steps>] ,re()[<steps>] |
Multi-edge (Direction : ignoré, gauche, droite) |
Formats de [<steps>] : (N≥1)[N] : N edges[:N] : 1~N edges[M:N] : M~N edges[1] (M≥0)[*:N] : les paths les plus courts dans N edges |
Non supporté |
e().nf()[<steps>] ,le().nf()[<steps>] ,re().nf()[<steps>] |
Multi-edge avec nodes intermédiaires (Direction : ignoré, gauche, droite) |
Formats de [<steps>] est le même que ci-dessus |
Non supporté |
[1] Lors du paramétrage [0:N]
pour un modèle de multi-edge, l'étape 0
est valide uniquement lorsque le n()
avant le modèle de multi-edge correspond à la condition de filtrage du n()
après le modèle de multi-edge. Dans ce cas, ce modèle de multi-edge ainsi que le n()
à droite sont considérés comme ignorés.
Règles de Composition de Path
Règle 1: Un path commence et se termine par un node, et est constitué de nodes et edges alternés entre les deux.
Exemple : Les paths ci-dessous avec une longueur de 3 peuvent être exprimés comme n().e().n().e().n().e().n()
, chaque modèle de node et d'edge dans le path peut avoir son propre filtre et alias.
n({@mgr}).re({@manage}).n({@cst} as n1)
.re({@has}).n({@acct} as n2)
.re({@buy} as e1).n({@product}) as p
return n1, n2, e1, p
En particulier, il est possible d'utiliser n()
de manière indépendante.
Exemple : Trouver tous les nodes @account.
n({@account} as acc)
return acc
Règle 2: Les edges et nodes consécutifs ayant la même condition de filtrage peuvent être fusionnés en un modèle de multi-edge.
Exemple : Les paths ci-dessous ont les mêmes types d'edges et nodes de l'étape 2 à l'étape 4. Vous pouvez utiliser le modèle de multi-edge e().nf()[3]
pour représenter ces edges et nodes intermédiaires. Cependant, un alias personnalisé n'est pas applicable dans un modèle de multi-edge.
n({@cst}).re({@has}).n({@acct} as n1)
.re({@transfer}).nf({@acct})[3].n({@acct} as n2)
.le({@has}).n({@cst}) as p
return n1, n2, p
Règle 3: Définissez les étapes comme une plage au lieu d'un nombre fixe lorsque cela est applicable pour élargir le champ de la requête.
Exemple : Vous pouvez utiliser le modèle de multi-edge e().nf()[:3]
pour limiter le nombre de transactions dans les paths à 3, comme indiqué ci-dessous.
n({@cst} as n1).re({@has}).n({@acct} as c1)
.re({@transfer})[:3].n({@acct} c1)
.le({@has}).n({@cst}) as p
return c1, c2, p