Vue d'ensemble
Dans Ultipa Graph, un schema représente un type de node ou d'edge. Lors de la modélisation d'un scénario réel dans un graph, les schemas de node sont généralement utilisés pour représenter différents types d'entités (comme Account, Company, Card), et les schemas d'edge représentent les types de relations entre les entités (comme Follow, Hold, Transfer).
La définition des schemas est une condition préalable à la création de toute donnée de node ou d'edge. Chaque node ou edge est affecté à un et un seul schema. Un graphset contient généralement plusieurs schemas de node et schemas d'edge.
Un schema de node et un schema d'edge nommés default sont automatiquement créés lors de la création d'un graphset. Ils peuvent être librement utilisés. Cependant, les deux schemas default ne peuvent pas être modifiés ou supprimés.
Le symbole @
est utilisé dans UQL pour désigner un schema. L'expression @<schema>
spécifie un certain schema, tel que @Account
.
Afficher Schema
// Afficher tous les schemas dans le graphset
show().schema()
// Afficher tous les schemas de node dans le graphset
show().node_schema()
// Afficher tous les schemas d'edge dans le graphset
show().edge_schema()
// Afficher le schema de node nommé movie dans le graphset
show().node_schema(@movie)
// Afficher le schema d'edge nommé filmedIn dans le graphset
show().edge_schema(@filmedIn)
Exemple de résultat :
_nodeSchema
nom |
totalNodes |
description |
properties |
---|---|---|---|
default | 0 | default schema | [] |
movie | 92 | [{name: "name", type: "string", description: "", lte: "true", extra: "{}"}, {name: "genre", type: "string", description: "", lte: "false", extra: "{}"}, {name: "rating", type: "double", description: "", lte: "false", extra: "{}"}] |
|
country | 78 | [{name: "name", type: "string", description: "", lte: "false", extra: "{}"}] |
_edgeSchema
nom |
totalEdges |
description |
properties |
---|---|---|---|
default | 0 | default schema | [] |
filmedIn | 192 | [{name: "time", type: "timestamp", description: "", lte: "false", extra: "{}"}] |
Les properties
ne contiennent que les propriétés personnalisées ; les propriétés de système ne sont pas incluses dans les résultats.
Créer Schema
// Créer un schema de node nommé movie dans le graphset et fournir une description
create().node_schema("movie", "Les films ajoutés par l'admin")
// Créer un schema d'edge nommé filmedIn dans le graphset
create().edge_schema("filmedIn")
// Créer plusieurs schemas de node/d'edge à la fois
create()
.node_schema("movie", "Les films ajoutés par l'admin")
.node_schema("country")
.edge_schema("filmedIn")
Règles de Nomination
Voici les règles de nomination pour les schemas :
- Contient entre 2 et 64 caractères.
- Ne doit pas commencer par un tilde
~
. - Ne doit pas contenir de symbole d'accent grave
`
. - Ne doit pas utiliser de mots réservés.
Tous les schemas de node dans un graphset doivent avoir des noms distincts, et il en va de même pour les schemas d'edge. Un schema de node et un schema d'edge peuvent partager le même nom.
Lorsque le nom du schema contient des caractères autres que des lettres (A-Z, a-z), des chiffres (0-9) et des underscore (_
), le nom du schema doit être entouré d'une paire d'accents graves (`
) lors de son utilisation.
find().nodes({@`movie*`}) as n
return n
Utiliser TRY
Créer trois schemas de node en même temps, mais l'un des noms (default) est dupliqué avec un schema de node existant.
create().node_schema("new_1").node_schema("default").node_schema("new_2")
La création du schema de node new_1, spécifié avant le schema dupliqué, réussit. Cependant, celui (new_2) spécifié après le schema dupliqué échoue, avec le message d'erreur Schema already exist!
retourné.
TRY create().node_schema("new_1").node_schema("default").node_schema("new_2")
La création des schemas est la même qu'auparavant, bien que le message d'erreur soit filtré par le préfixe TRY
, tout en retournant le message SUCCEED
.
Modifier Schema
// Modifier le nom et la description du schema de node actuellement nommé movie
alter().node_schema(@movie)
.set({name: "Adm_movie", description: "Les films ajoutés par l'admin"})
// Modifier la description du schema d'edge nommé filmedIn
alter().edge_schema(@filmedIn).set({description: "Le pays où un film est tourné"})
Supprimer Schema
Supprimer un schema signifie supprimer le schema, ainsi que tous les nodes ou edges appartenant à ce schema. Les deux schemas par défaut ne peuvent pas être supprimés.
// Supprimer le schema de node nommé movie
drop().node_schema(@movie)
// Supprimer le schema d'edge nommé filmedIn
drop().edge_schema(@filmedIn)
// Supprimer plusieurs schemas de node/d'edge à la fois
drop()
.node_schema(@movie)
.node_schema(@country)
.edge_schema(@filmedIn)