Méthodes de Mapping
La méthode get()
ou alias()
de la classe UltipaResponse
renvoie un DataItem
, qui intègre le résultat de la requête. Vous devez utiliser la méthode as<Type>()
de DataItem
pour convertir le résultat au type de pilote approprié.
response = Conn.uql("find().nodes() as n return n{*} limit 5")
nodeList = response.alias("n").asNodes()
Le résultat n
provenant de la base de données contient cinq nodes, chacun de type NODE. La méthode asNodes()
les convertit en une liste d'objets Node
.
Méthodes de mappage de type disponibles sur DataItem
:
Type UQL | Alias UQL | Méthode | Type de Pilote | Description |
---|---|---|---|---|
NODE | Any | asNodes() |
List[Node] | Mappe un DataItem de type NODE sur une liste d'objets Node . |
NODE | Any | asFirstNode() |
Node | Mappe le premier node d'un DataItem de type NODE sur un objet Node . Équivalent à asNodes().get(0) . |
EDGE | Any | asEdges() |
List[Edge] | Mappe un DataItem de type EDGE sur une liste d'objets Edge . |
EDGE | Any | asFirstEdge() |
Edge | Mappe le premier edge d'un DataItem de type EDGE sur un objet Edge . Équivalent à asEdges().get(0) . |
PATH | Any | asPaths() |
List[Path] | Mappe un DataItem de type PATH sur une liste d'objets Path . |
GRAPH | Any | asGraph() |
Graph | Mappe un DataItem de type GRAPH sur un objet Graph . |
TABLE | _graph |
asGraphSets() |
List[GraphSet] | Mappe un DataItem avec l'alias _graph sur une liste d'objets GraphSet . |
TABLE | _nodeSchema , _edgeSchema |
asSchemas() |
List[Schema] | Mappe un DataItem avec l'alias _nodeSchema ou _edgeSchema sur une liste d'objets Schema . |
TABLE | _nodeProperty , _edgeProperty |
asProperties() |
List[Property] | Mappe un DataItem avec l'alias _nodeProperty ou _edgeProperty sur une liste d'objets Property . |
TABLE | _algoList |
asAlgos() |
List[Algo] | Mappe un DataItem avec l'alias _algoList sur une liste d'objets Algo . |
TABLE | _extaList |
asExtas() |
List[Exta] | Mappe un DataItem avec l'alias _extaList sur une liste d'objets Exta . |
TABLE | _nodeIndex , _edgeIndex , _nodeFulltext , _edgeFulltext |
asIndexes() |
List[Index] | Mappe un DataItem avec l'alias _nodeIndex , _edgeIndex , _nodeFulltext ou _edgeFulltext sur une liste d'objets Index . |
TABLE | _privilege |
asPriviliege() |
Priviliege | Mappe un DataItem avec l'alias _privilege sur un objet Priviliege . |
TABLE | _policy |
asPolicy() |
Policy/List[Policy] | Mappe un DataItem avec l'alias _policy sur un ou une liste d'objets Policy . |
TABLE | _user |
asUsers() |
User/List[User] | Mappe un DataItem avec l'alias _user sur un ou une liste d'objets User . |
TABLE | _statistic |
asStats() |
Stats | Mappe un DataItem avec l'alias _statistic sur un objet Stats . |
TABLE | _top |
asProcesses() |
List[Process] | Mappe un DataItem avec l'alias _top sur une liste d'objets Process . |
TABLE | _task |
asTasks() |
List[Task] | Mappe un DataItem avec l'alias _task sur une liste d'objets Task . |
TABLE | Any | asTable() |
Table | Mappe un DataItem de type TABLE sur un objet Table . |
ATTR | Any | asAttr() |
Attr | Mappe un DataItem de type ATTR sur un objet Attr . |
Types de Pilote
Les objets de tous types de pilotes supportent les méthodes getter pour récupérer la valeur d'un champ et les méthodes setter pour définir la valeur d'un champ, même s'ils ne sont pas explicitement listés ci-dessous.
Node
Un objet Node
possède les champs suivants:
Champ | Type | Description |
---|---|---|
uuid |
int | Node UUID |
id |
str | Node ID |
schema |
str | Node Schema |
values |
dict | Node custom properties |
Méthodes sur un objet Node
:
Méthode |
Retourne |
Description |
---|---|---|
get("<propertyName>") |
Any | Obtenir la valeur de la propriété personnalisée donnée du node. |
set("<propertyName>", <propertyValue> |
Définir la valeur pour la propriété personnalisée donnée du node; ou ajouter une paire clé-valeur aux values du node si la <propertyName> donnée n'existe pas. |
response = Conn.uql("find().nodes() as n return n{*} limit 5")
nodes = response.alias("n").asNodes()
print("ID du 1er node:", nodes[0].getID())
print("Nom du magasin du 1er node", nodes[0].get("storeName"))
ID du 1er node: 47370-257954
Nom du magasin du 1er node: Meritxell, 96
Edge
Un objet Edge
possède les champs suivants:
Champ | Type | Description |
---|---|---|
uuid |
int | Edge UUID |
from_uuid |
int | UUID du node de départ de l'edge |
to_uuid |
int | UUID du node d'arrivée de l'edge |
from_id |
str | ID du node de départ de l'edge |
to_id |
str | ID du node d'arrivée de l'edge |
schema |
dtr | Edge Schema |
values |
dict | Edge custom properties |
Méthodes sur un objet Edge
:
Méthode |
Retourne |
Description |
---|---|---|
get("<propertyName>") |
Any | Obtenir la valeur de la propriété personnalisée donnée de l'edge. |
set("<propertyName>", <propertyValue> |
Définir la valeur pour la propriété personnalisée donnée de l'edge; ou ajouter une paire clé-valeur aux valeurs de l'edge si la <propertyName> donnée n'existe pas. |
response = Conn.uql("find().edges() as e return e{*} limit 5")
edges = response.alias("e").asEdges()
print("Valeurs du 1er edge:", edges[0].getValues())
Valeurs du 1er edge: {'distanceMeters': 20, 'duration': '21s', 'staticDuration': '25s', 'travelMode': 'Walk', 'transportationCost': 46}
Path
Un objet Path
possède les champs suivants:
Champ | Type |
Description |
---|---|---|
nodes |
List[Node] | Liste de nodes du path |
edges |
List[Edge] | Liste d'edges du path |
nodeSchemas |
Dict[str, Schema] | Carte de tous les schemas de nodes du path |
edgeSchemas |
Dict[str, Schema] | Carte de tous les schemas d'edges du path |
Méthodes sur un objet Path
:
Méthode |
Retourne |
Description |
---|---|---|
length() |
int | Obtenir la longueur du path, c.-à-d. le nombre d'edges dans le path. |
response = Conn.uql("n().e()[:2].n() as paths return paths{*} limit 5")
paths = response.alias("paths").asPaths()
print("Longueur du 1er path:", paths[0].length())
print("Edges dans le 1er path:")
edges = paths[0].getEdges()
for edge in edges:
print(edge)
print("Informations du 2e node dans le 1er path:")
nodes = paths[0].getNodes()
print(nodes[1])
Longueur du 1er path: 2
Edges dans le 1er path:
{'schema': 'transport', 'from_id': '15219-158845', 'from_uuid': 20, 'to_id': '47370-257954', 'to_uuid': 1, 'values': {'distanceMeters': 10521283, 'duration': '527864s', 'staticDuration': '52606s', 'travelMode': 'Airplane', 'transportationCost': 21043}, 'uuid': 591}
{'schema': 'transport', 'from_id': '15474-156010', 'from_uuid': 21, 'to_id': '15219-158845', 'to_uuid': 20, 'values': {'distanceMeters': 233389, 'duration': '13469s', 'staticDuration': '1167s', 'travelMode': 'Airplane', 'transportationCost': 467}, 'uuid': 599}
Informations du 2e node dans le 1er path:
{'id': '15219-158845', 'schema': 'warehouse', 'values': {'brand': 'Starbucks', 'storeName': 'Las Palmas', 'ownershipType': 'Licensed', 'city': 'Pilar', 'provinceState': 'B', 'timezone': 'GMT-03:00 America/Argentina/Bu', 'point': 'POINT(-33.390000 -60.220000)'}, 'uuid': 20}
Graph
Un objet Graph
possède les champs suivants:
Champ | Type |
Description |
---|---|---|
node_table |
List[Node] | Liste de nodes du path |
edge_table |
List[Edge] | Liste d'edges du path |
response = Conn.uql("n(as n1).re(as e).n(as n2).limit(3) with toGraph(collect(n1), collect(n2), collect(e)) as graph return graph", requestConfig)
graph = response.alias("graph").asGraph()
print("ID des nodes:")
nodes = graph.node_table
for node in nodes:
print(node.getID())
print("UUID des edges:")
edges = graph.edge_table
for edge in edges:
print(edge.getUUID())
ID des nodes:
24604-238367
34291-80114
47370-257954
29791-255373
23359-229184
UUID des edges:
344
320
346
GraphSet
Un objet GraphSet
possède les champs suivants:
Champ |
Type | Description |
---|---|---|
id |
int | Graphset ID |
name |
str | Nom du graphset |
description |
str | Description du graphset |
totalNodes |
int | Nombre total de nodes dans le graphset |
totalEdges |
int | Nombre total d'edges dans le graphset |
status |
str | Statut du graphset (MOUNTED, MOUNTING, ou UNMOUNTED) |
response = Conn.uql("show().graph()")
graphs = response.alias("_graph").asGraphSets()
for graph in graphs:
if graph.status == "UNMOUNTED":
print(graph.name)
DFS_EG
cyber
netflow
Schema
Un objet Schema
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
name |
str | Nom du schema |
description |
str | Description du schema |
properties |
List[Property] | Liste de propriétés du schema |
DBType |
DBType | Type du schema (0 pour nodes, 1 pour edge) |
total |
int | Nombre total de nodes ou d'edges du schema |
response = Conn.uql("show().node_schema()")
schemas = response.alias("_nodeSchema").asSchemas()
for schema in schemas:
print(schema.name, "a", schema.total, "nodes")
default a 0 nodes
member a 7 nodes
organization a 19 nodes
Property
Un objet Property
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
name |
str | Nom de la propriété |
description |
str | Description de la propriété |
schema |
str | Schema associé à la propriété |
type |
PropertyTypeStr | Type de données de la propriété, par défaut PropertyTypeStr.PROPERTY_STRING |
subTypes |
List[PropertyTypeStr] | Sous-types des données de la propriété |
lte |
bool | Statut LTE de la propriété (true ou false) |
response = Conn.uql("show().property()")
properties = response.alias("_nodeProperty").asProperties()
for property in properties:
print(property.name)
title
profile
age
name
logo
Algo
Un objet Algo
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
name |
str | Nom de l'algorithme |
description |
str | Description de l'algorithme |
version |
str | Version de l'algorithme |
parameters |
dict | Paramètres de l'algorithme |
write_to_file_parameters |
dict | Paramètres de l'écriture dans un fichier de l'algorithme |
write_to_db_parameters |
dict | Paramètres de l'écriture des propriétés dans la base de données |
result_opt |
str | Le code définit les méthodes d'exécution supportées par l'algorithme. |
response = Conn.uql("show().algo()")
algos = response.alias("_algoList").asAlgos()
print(algos[0])
{'name': 'celf', 'description': 'celf', 'version': '1.0.0', 'result_opt': '25', 'parameters': {'seedSetSize': 'size_t,optional,1 as default', 'monteCarloSimulations': 'size_t,optional, 1000 as default', 'propagationProbability': 'float,optional, 0.1 as default'}, 'write_to_db_parameters': {}, 'write_to_file_parameters': {'filename': 'set file name'}}
Exta
Un exta est un algorithme personnalisé développé par les utilisateurs.
Un objet Exta
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
name |
str | Nom de l'exta |
author |
str | Auteur de l'exta |
version |
str | Version de l'exta |
detail |
str | Contenu du fichier de configuration YML de l'exta |
response = Conn.uql("show().exta()")
extas = response.alias("_extaList").asExtas()
print(extas[0].name)
page_rank
Index
Un objet Index
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
name |
str | Nom de l'index |
properties |
str | Nom de la propriété de l'index |
schema |
str | Nom du schema de l'index |
status |
str | Statut de l'index (done ou creating) |
size |
str | Taille de l'index en octets |
DBType |
DBType | Type de l'index (DBNODE ou DBEDGE) |
response = Conn.uql("show().index()")
indexList = response.alias("_nodeIndex").asIndexes()
for index in indexList:
print(index.schema, index.properties, index.size)
account name 0
movie name 2526
response = Conn.uql("show().fulltext()")
indexList = response.alias("_edgeFulltext").asIndexes()
for index in indexList:
print(index.schema, index.properties, index.schema)
contentFull content review
Privilege
Un objet Privilege
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
systemPrivileges |
List[str] | Privilèges système |
graphPrivileges |
List[str] | Privilèges de graph |
response = Conn.uql("show().privilege()")
privilege = response.alias("_privilege").asPrivilege()
print(privilege.systemPrivileges)
["TRUNCATE","COMPACT","CREATE_GRAPH","SHOW_GRAPH","DROP_GRAPH","ALTER_GRAPH","MOUNT_GRAPH","UNMOUNT_GRAPH","TOP","KILL","STAT","SHOW_POLICY","CREATE_POLICY","DROP_POLICY","ALTER_POLICY","SHOW_USER","CREATE_USER","DROP_USER","ALTER_USER","GRANT","REVOKE","SHOW_PRIVILEGE"]
Policy
Un objet Policy
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
name |
str | Nom de la stratégie |
systemPrivileges |
List[str] | Privilèges système inclus dans la stratégie |
graphPrivileges |
dict | Privilèges de graph et les graphsets correspondants inclus dans la stratégie |
propertyPrivileges |
dict | Privilèges de propriété inclus dans la stratégie |
policies |
List[str] | Stratégies incluses dans la stratégie |
response = Conn.uql("show().policy()")
policyList = response.alias("_policy").asPolicies()
for policy in policyList:
print(policy.name)
manager
operator
User
Un objet User
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
username |
str | Nom d'utilisateur |
create |
str | Date de création de l'utilisateur |
systemPrivileges |
List[str] | Privilèges système accordés à l'utilisateur |
graphPrivileges |
dict | Privilèges de graph et les graphsets correspondants accordés à l'utilisateur |
propertyPrivileges |
dict | Privilèges de propriété accordés à l'utilisateur |
policies |
List[str] | Stratégies accordées à l'utilisateur |
response = Conn.uql("show().user('Tester')")
user = response.alias("_user").asUsers()
print(user.toJSON())
{"create": 1721974206, "graphPrivileges": "{}", "policies": "[]", "propertyPrivileges": "{"node":{"read":[],"write":[["miniCircle","account","name"]],"deny":[]},"edge":{"read":[],"write":[],"deny":[]}}", "systemPrivileges": "[]", "username": "Tester"}
Stats
Un objet Stats
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
cpuUsage |
str | Utilisation CPU en pourcentage |
memUsage |
str | Utilisation de la mémoire en mégaoctets |
expiredDate |
str | Date d'expiration de la licence |
cpuCores |
str | Nombre de cœurs CPU |
company |
str | Nom de l'entreprise |
serverType |
str | Type de serveur |
version |
str | Version du serveur |
response = Conn.uql("stats()")
stats = response.get(0).asStats()
print("Utilisation CPU (%):", stats.cpuUsage)
print("Utilisation de la mémoire:", stats.memUsage)
Utilisation CPU (%): 5.415697
Utilisation de la mémoire: 9292.265625
Process
Un objet Process
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
processId |
String | ID du process |
processUql |
String | Le UQL exécuté avec le process |
status |
String | Statut du process |
duration |
String | La durée en secondes durant laquelle le process a été exécuté jusqu'à présent |
requestConfig = RequestConfig(graphName="amz")
response = Conn.uql("top()", requestConfig)
processList = response.alias("_top").asProcesses()
for process in processList:
print(process.processId)
a_2_569_2
a_3_367_1
Task
Un objet Task
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
task_info |
Task_info | Informations sur la tâche y compris task_id , algo_name , start_time , writing_start_time , end_time , etc. |
param |
dict | Paramètres de l'algorithme et leurs valeurs correspondantes |
result |
dict | Résultat de l'algorithme et statistiques ainsi que leurs valeurs correspondantes |
requestConfig = RequestConfig(graphName="miniCircle")
response = Conn.uql("show().task()", requestConfig)
tasks = response.alias("_task").asTasks()
print(tasks[0].task_info)
print(tasks[0].param)
print(tasks[0].result)
{'task_id': 77954, 'server_id': 2, 'algo_name': 'louvain', 'start_time': 1728543848, 'writing_start_time': 1728543848, 'end_time': 1728543848, 'time_cost': 0, 'TASK_STATUS': 3, 'return_type': <ultipa.types.types_response.Return_Type object at 0x0000025E53C0F940>}
{"phase1_loop_num":"20","min_modularity_increase":"0.001"}
{'community_count': '10', 'modularity': '0.535017', 'result_files': 'communityID,ids,num'}
Table
Un objet Table
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
name |
str | Nom de la table |
headers |
List[dict] | En-têtes de la table |
rows |
List[List] | Lignes de la table |
Méthodes sur un objet Table
:
Méthode |
Retourne |
Description |
---|---|---|
headerToDicts() |
List[Dict] | Convertir toutes les lignes de la table en une liste de paires clé-valeur. |
response = Conn.uql("find().nodes() as n return table(n._id, n._uuid) as myTable limit 5")
table = response.alias("myTable").asTable()
rows = table.headerToDicts()
print("2e ligne dans la table:", rows[1])
2e ligne dans la table: {'n._id': 'u604510', 'n._uuid': 2}
Attr
Un objet Attr
possède les champs suivants:
Champ |
Type |
Description |
---|---|---|
name |
str | Nom de l'Attr |
values |
any | Lignes de l'Attr |
type |
ResultType |
Type de l'Attr |
response = Conn.uql("find().nodes({@ad}) as n return n.brand limit 5")
attr = response.alias("n.brand").asAttr()
print(attr.values)
[14655, 14655, 14655, 14655, 434760]