Vue d’ensemble
Les propriétés sont associées à un schema pour décrire différents attributs du schema. Par exemple, un node schema @card
peut avoir des propriétés comme balance et openedOn, tandis qu'un edge schema @transfersTo
peut avoir des propriétés comme amount et time.
L'expression @<schema>.<property>
spécifie une certaine propriété d'un schema, tel que @company.name
.
Propriété Système
Chaque node ou edge schema est accompagné de plusieurs propriétés système, qui sont créées automatiquement avec le schema et dont les noms ou types ne peuvent être modifiés. Elles ne peuvent pas non plus être supprimées.
Propriété Système | Type de Donnée | Description | |
---|---|---|---|
Node | _id |
Chaîne, avec une longueur maximale de 128 octets | Identifiant unique en chaîne d'un node |
_uuid |
Uint64 | Identifiant unique numérique d'un node | |
Edge | _uuid |
Uint64 | Identifiant unique numérique d'un edge |
_from |
Chaîne | _id du node de départ d'un edge |
|
_to |
Chaîne | _id du node d'arrivée d'un edge |
|
_from_uuid |
Uint64 | _uuid du node de départ d'un edge |
|
_to_uuid |
Uint64 | _uuid du node d'arrivée d'un edge |
Identifiant Unique (UID)
Chaque node a deux propriétés système, _id
et _uuid
, qui servent d'identifiants uniques. Les valeurs de _id
pour tous les nodes sont distinctes, tout comme celles de _uuid
. De plus, il existe une correspondance un-à-un entre _id
et _uuid
.
Chaque edge a une propriété système, _uuid
, comme son identifiant unique. Les valeurs de _uuid
pour tous les edges sont distinctes.
Un node et un edge peuvent partager la même valeur de _uuid
.
Propriété Personnalisée
Vous pouvez créer des propriétés personnalisées pour chaque schema, telles que name, type, et time. Pour plus de détails, veuillez consulter Créer une Propriété.
Afficher la Propriété
// Afficher les propriétés de tous les schemas dans le graphset
show().property()
// Afficher les propriétés de tous les node schemas dans le graphset
show().node_property()
// Afficher les propriétés de tous les edge schemas dans le graphset
show().edge_property()
// Afficher les propriétés des nodes @user dans le graphset
show().node_property(@user)
// Afficher les propriétés des edges @like dans le graphset
show().edge_property(@like)
Exemple de résultat :
_nodeProperty
name |
type |
lte |
read |
write |
schema |
description |
extra | encrypt |
---|---|---|---|---|---|---|---|---|
name | string | true | 1 | 1 | user | {} | AES128 | |
rate | decimal | false | 1 | 1 | user | Moyenne des évaluations des utilisateurs | {"precision":65,"scale":30} |
_edgeProperty
name |
type |
lte |
read |
write |
schema |
description |
extra | encrypt |
---|---|---|---|---|---|---|---|---|
time | timestamp | false | 1 | 0 | like | {} |
Le résultat retourné ne contient que des propriétés personnalisées; les propriétés système ne sont pas incluses.
Créer une Propriété
Syntaxe
// Créer une propriété pour un node schema dans le graphset
create().node_property(@<schema>, "<name>", <type?>, "<desc?>").encrypt()
// Créer une propriété pour tous les node schemas dans le graphset
create().node_property(@*, "<name>", <type?>, "<desc?>").encrypt()
// Créer une propriété pour un edge schema dans le graphset
create().edge_property(@<schema>, "<name>", <type?>, "<desc?>").encrypt()
// Créer une propriété pour tous les edge schemas dans le graphset
create().edge_property(@*, "<name>", <type?>, "<desc?>").encrypt()
// Créer plusieurs propriétés de node/edge en une fois
create()
.node_property(@<schema>, "<name>", <type?>, "<desc?>").encrypt()
.edge_property(@<schema>, "<name>", <type?>, "<desc?>").encrypt()
- Paramètres pour la méthode
node_property()
ouedge_property()
:@<schema>
: Spécifie le node ou edge schema ;@*
désigne tous les node ou edge schemas.<name>
: Nom de la propriété.<type?>
: Type de donnée de la propriété ; s'il est omis, le type string est utilisé par défaut.<desc?>
: Description de la propriété, c'est optionnel.
- Chaînage de la méthode
encrypt()
lorsque vous souhaitez crypter les valeurs de cette propriété :- La méthode de cryptage est AES128.
- Seules les propriétés de type textuel (string ou text) permettent le cryptage.
Conventions de Nommage
Voici les conventions de nommage des propriétés :
- Contient de 2 à 64 caractères.
- Ne doit pas commencer par un symbole tilde
~
. - Ne doit pas contenir de symbole de guillemet inverse
`
. - Ne doit pas utiliser de mots réservés.
Toutes les propriétés sous un schema doivent avoir des noms distincts. Différents schemas peuvent contenir des propriétés du même nom.
Lorsque le nom de la propriété contient des caractères autres que des lettres (A-Z, a-z), des chiffres (0-9) et des underscores (_
), le nom de la propriété doit être entouré d'une paire de guillemets inverses (`
) lors de son utilisation.
find().nodes({`Last-name` == "White"}) as n
return n
Créer une Propriété Entière
Les types de données entières supportés incluent int32
, uint32
, int64
et uint64
.
create().node_property(@course, "credits", int32, "Crédits du cours")
Créer une Propriété Décimale
Les types de données décimales supportés incluent float
, double
et decimal
.
create()
.node_property(@record, "score", float, "Score de l'enregistrement")
.edge_property(@connects, "weight", "decimal(25,10)", "Poids de la relation")
Le decimal(25,10)
spécifie un type décimal avec une précision de 25 chiffres (total des chiffres) et une échelle de 10 chiffres (chiffres après la virgule). Vous pouvez définir la précision entre 1 à 65, et l'échelle entre 0 à 30.
Spécifiquement, le type de decimal(<precision>, <scale>)
doit être déclaré entre deux guillemets lors de la création de la propriété.
Créer une Propriété Textuelle
Les types de données textuelles supportés incluent string
et text
.
create()
.node_property(@post, "title")
.node_property(@post, "content", text, "Contenu principal du post").encrypt()
String est utilisé par défaut si aucun type n'est spécifié. La méthode encrypt()
s'applique uniquement aux propriétés avec le type string ou text.
Créer une Propriété Temporelle
Les types de données temporelles supportés incluent timestamp
et datetime
.
create()
.node_property(@post, "createdOn", timestamp, "Quand le post est d'abord créé")
.node_property(@post, "publishedOn", datetime, "Quand le post est publié")
Créer une Propriété Point
Le type de donnée point supporté est point
.
create().node_property(@city, "position", point, "Emplacement de la ville : latitude et longitude")
Créer une Propriété Blob
Le type de donnée blob supporté est blob
.
create()
.node_property(@user, "profileImg", blob, "Stocker l'image de profil de l'utilisateur comme un objet binaire volumineux")
Créer une Propriété de Liste
Les types de données de liste supportés incluent int32[]
, int64[]
, uint32[]
, uint64[]
, float[]
, double[]
, string[]
, text[]
, datetime[]
et timestamp[]
.
create()
.node_property(@user, "interests", "string[]", "Stocker les tags d'intérêt de l'utilisateur sous forme de liste de chaînes")
Spécifiquement, le type de liste <element_type>[]
doit être déclaré entre deux guillemets lors de la création de la propriété.
Créer une Propriété d'Ensemble
Les types de données d'ensemble supportés incluent set(int32)
, set(int64)
, set(uint32)
, set(uint64)
, set(float)
, set(double)
, set(string)
, set(text)
, set(datetime)
et set(timestamp)
.
create()
.node_property(@user, "heights", "set(float)", "Stocker l'historique des hauteurs de l'utilisateur comme un ensemble")
Spécifiquement, le type d'ensemble set(<element_type>)
doit être déclaré entre deux guillemets lors de la création de la propriété.
Créer une Propriété pour Tous les Schemas
create().edge_property(@*, "time", datetime)
Au lieu de spécifier un nom de schema spécifique, utilisez @*
pour désigner tous les node ou edge schemas.
Utiliser TRY
Créer trois propriétés d'edge en même temps, mais l'un des noms (time) est dupliqué avec une propriété existante.
create()
.edge_property(@default, "weight", int32)
.edge_property(@default, "time", datetime)
.edge_property(@default, "status", string)
La création de la propriété weight, qui a été spécifiée avant la propriété dupliquée, réussit. Cependant, celle (status) spécifiée après la propriété dupliquée échoue, avec le message d'erreur Property exists!
retourné.
TRY create()
.edge_property(@default, "weight", int32)
.edge_property(@default, "time", datetime)
.edge_property(@default, "status", string)
La création des propriétés est la même qu'au-dessus, bien que le message d'erreur soit masqué par le préfixe TRY
, tout en retournant le message SUCCEED
.
Modifier la Propriété
// Modifier le nom et la description de la node property @user.status dans le graphset
alter().node_property(@user.status).set({name: "Status", description: "Active ou Inactive"})
// Modifier le nom de la propriété status de tous les node schemas (si elle existe) dans le graphset
alter().node_property(@*.status).set({name: "state"})
// Modifier le nom et la description de la edge property @registers.time dans le graphset
alter().node_property(@registers.time)
.set({name: "createdOn", description: "Temps de création"})
// Modifier la description de la propriété time de tous les edge schemas (si elle existe) dans le graphset
alter().edge_property(@*.time).set({description: "Temps de création"})
Le type de donnée ne peut pas être modifié une fois la propriété créée.
Supprimer la Propriété
Supprimer une propriété implique de supprimer la propriété ainsi que toutes les valeurs associées, les valeurs LTE enregistrées en mémoire, et les index et index en texte intégral créés sur le disque pour cette propriété.
// Supprimer la node property @card.branch du graphset
drop().node_property(@card.branch)
// Supprimer la propriété branch de tous les node schemas (si elle existe) du graphset
drop().node_property(@*.branch)
// Supprimer la edge property @flows.time du graphset
drop().edge_property(@flows.time)
// Supprimer la propriété time de tous les edge schemas (si elle existe) du graphset
drop().edge_property(@*.time)
// Supprimer plusieurs propriétés de node/edge en une fois
drop()
.node_property(@card.branch)
.edge_property(@*.time)