Méthodes de Mapping
La méthode get()
ou alias()
de la classe Response
retourne 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 conducteur approprié.
let requestConfig = <RequestType.RequestConfig>{
useMaster: true,
graphSetName: "miniCircle",
};
let resp = await conn.uql(
"find().nodes() as n return n{*} limit 5",
requestConfig
);
console.log(resp.data?.get(0).asNodes());
Le résultat n
provenant de la base de données contient cinq nodes, chacun du type NODE. La méthode asNodes()
les convertit en une liste d'objets Node
.
Méthodes de mapping de type disponibles sur DataItem
:
UQL Type | UQL Alias | Méthode | Driver Type | Description |
---|---|---|---|---|
NODE | Any | asNodes() |
Node[] | Mappe DataItem de type NODE à une liste d'objets Node . |
EDGE | Any | asEdges() |
Edge[] | Mappe DataItem de type EDGE à une liste d'objets Edge . |
PATH | Any | asPaths() |
Path[] | Mappe DataItem de type PATH à une liste d'objets Path . |
GRAPH | Any | asGraph() |
Graph | Mappe DataItem de type GRAPH à un objet Graph . |
TABLE | _graph |
asGraphInfos() |
GraphSet[] | Mappe DataItem avec l'alias _graph à une liste d'objets GraphSet . |
TABLE | _nodeSchema , _edgeSchema |
asSchemas() |
Schema[] | Mappe DataItem avec l'alias _nodeSchema ou _edgeSchema à une liste d'objets Schema . |
TABLE | _nodeProperty , _edgeProperty |
asProperties() |
Property[] | Mappe DataItem avec l'alias _nodeProperty ou _edgeProperty à une liste d'objets Property . |
TABLE | _algoList |
asAlgos() |
Algo[] | Mappe DataItem avec l'alias _algoList à une liste d'objets Algo . |
TABLE | _extaList |
asExtas() |
Exta[] | Mappe DataItem avec l'alias _extaList à une liste d'objets Exta . |
TABLE | _nodeIndex , _edgeIndex , _nodeFulltext , _edgeFulltext |
/ |
Index[] | Mappe DataItem avec l'alias _nodeIndex , _edgeIndex , _nodeFulltext ou _edgeFulltext à une liste d'objets Index . |
TABLE | _privilege |
/ |
Priviliege | Mappe DataItem avec l'alias _privilege à un objet Priviliege . |
TABLE | _policy |
/ |
Policy[] | Mappe DataItem avec l'alias _policy à une liste d'objets Policy . |
TABLE | _user |
/ |
User[] | Mappe DataItem avec l'alias _user à une liste d'objets User . |
TABLE | _statistic |
/ |
Stats | Mappe DataItem avec l'alias _statistic à un objet Stats . |
TABLE | _top |
/ |
Process[] | Mappe DataItem avec l'alias _top à une liste d'objets Process . |
TABLE | _task |
asTasks() |
Task[] | Mappe DataItem avec l'alias _task à une liste d'objets Task . |
TABLE | Any | asTable() |
Table | Mappe DataItem de type TABLE à un objet Table . |
ATTR | Any | asAttr() |
Attr | Mappe DataItem de type ATTR à un objet Attr . |
Types de Conducteurs
Les objets de tous les types de conducteurs 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 si elles ne sont pas explicitement répertoriées ci-dessous.
Node
Un objet Node
a les champs suivants :
Champ | Type | Description |
---|---|---|
uuid |
string | Node UUID |
id |
string | Node ID |
schema |
string | Node Schema |
values |
object | Node custom properties |
Méthodes sur un objet Node
:
Méthode |
Retourne |
Description |
---|---|---|
get("<propertyName>") |
Object | Récupère la valeur de la propriété personnalisée donnée de la node. |
set("<propertyName>", <propertyValue> |
Définit la valeur de la propriété personnalisée donnée de la node; ou ajoute une paire clé-valeur aux values de la node si le <propertyName> donné n'existe pas. |
let resp = await conn.uql(
"find().nodes() as n return n{*} limit 5",
requestConfig
);
let nodeList = resp.data?.alias("n").asNodes();
console.log("ID of the 1st node:", nodeList[0].getID());
console.log("Name of the 1st node:", nodeList[0].get("name"));
ID of the 1st node: ULTIPA8000000000000001
Name of the 1st node: Titanic
Edge
Un objet Edge
a les champs suivants :
Champ | Type | Description |
---|---|---|
schema |
string | Edge Schema |
from |
string | ID du node de départ de l'edge |
to |
string | ID du node d'arrivée de l'edge |
uuid |
string | Edge UUID |
from_uuid |
string | UUID du node de départ de l'edge |
to_uuid |
string | UUID du node d'arrivée de l'edge |
values |
object | Propriétés personnalisées de l'edge |
Méthodes sur un objet Edge
:
Méthode |
Retourne |
Description |
---|---|---|
get("<propertyName>") |
Object | Récupère la valeur de la propriété personnalisée donnée de l'edge. |
set("<propertyName>", <propertyValue> |
Définit la valeur de la propriété personnalisée donnée de l'edge; ou ajoute une paire clé-valeur aux valeurs de l'edge si le <propertyName> donné n'existe pas. |
let resp = await conn.uql(
"find().edges() as e return e{*} limit 5",
requestConfig
);
let edgeList = resp.data?.alias("e").asEdges();
console.log("Values of the 1st edge", edgeList[0].getValues());
Values of the 1st edge {
datetime: '2019-01-06 02:57:57',
timestamp: 1546714677,
targetPost: '703'
}
Path
Un objet Path
a les champs suivants :
Champ | Type |
Description |
---|---|---|
nodes |
Node[] | Liste des nodes du path |
edges |
Edge[] | Liste des edges du path |
length |
number | Longueur du path, soit le nombre d'edges dans le path |
let resp = await conn.uql(
"n().e()[:2].n() as paths return paths{*} limit 5",
requestConfig
);
let pathList = resp.data?.alias("paths").asPaths();
console.log("Length of the 1st path:", pathList[0].length);
console.log("Edge list of the 1st path:", pathList[0].getEdges());
console.log(
"Information of the 2nd node in the 1st path:",
pathList[0].getNodes()[1]
);
Length of the 1st path: 2
Edge list of the 1st path: [
Edge {
from: 'ULTIPA800000000000001B',
to: 'ULTIPA8000000000000001',
uuid: '7',
from_uuid: '27',
to_uuid: '1',
schema: 'follow',
values: {}
},
Edge {
from: 'ULTIPA8000000000000021',
to: 'ULTIPA800000000000001B',
uuid: '99',
from_uuid: '33',
to_uuid: '27',
schema: 'follow',
values: {}
}
]
Information of the 2nd node in the 1st path: Node {
id: 'ULTIPA800000000000001B',
uuid: '27',
schema: 'account',
values: {
year: 1988,
industry: 'Transportation',
double: '3.72'
}
}
Graph
Un objet Graph
a les champs suivants :
Champ | Type |
Description |
---|---|---|
nodes |
Node[] | Liste des nodes du path |
edges |
Edge[] | Liste des edges du path |
nodeSchemas |
map<string, schema> | Carte de tous les schémas de nodes du path |
edgeSchemas |
map<string, schema> | Carte de tous les schémas d'edges du path |
let resp = await 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
);
let graphList = resp.data?.alias("graph").asGraph();
let nodeList = graphList.getNodes();
let edgeList = graphList.getEdges();
console.log(
"Node IDs:",
nodeList.map((node) => node.getID())
);
console.log(
"Edge UUIDs:",
edgeList.map((edge) => edge.getUUID())
);
Node IDs: [
'ULTIPA8000000000000017',
'ULTIPA8000000000000001',
'ULTIPA800000000000001B',
'ULTIPA8000000000000061'
]
Edge UUIDs: [ '43', '1576', '29' ]
GraphSet
Un objet GraphSet
a les champs suivants :
Champ |
Type | Description |
---|---|---|
id |
string | Graphset ID |
name |
string | Graphset name |
description |
string | Description du graphset |
totalNodes |
string | Nombre total de nodes dans le graphset |
totalEdges |
string | Nombre total d'edges dans le graphset |
status |
string | Statut du graphset (MOUNTED, MOUNTING, ou UNMOUNTED) |
let resp = await conn.uql("show().graph()");
let graphList = resp.data?.alias("_graph").asGraphInfos();
let unmountedGraph = graphList.filter((item) => item.status == "UNMOUNTED");
console.log(unmountedGraph.map((item) => item.name));
[ 'DFS_EG', 'cyber', 'cyber2' ]
Schema
Un objet Schema
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
string | Schema name |
description |
string | Description du schema |
properties |
Property[] | Liste des propriétés du schema |
totalNodes |
string | Nombre total de nodes du schema |
totalEdges |
string | Nombre total d'edges du schema |
let resp = await conn.uql("show().node_schema()", requestConfig);
let schemaList = resp.data?.alias("_nodeSchema").asSchemas();
for (let schema of schemaList) {
console.log(schema.name, "has", schema.totalNodes, "nodes");
}
default has 0 nodes
account has 111 nodes
movie has 92 nodes
country has 23 nodes
celebrity has 78 nodes
Property
Un objet Property
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
string | Property name |
description |
string | Description de la propriété |
schema |
string | Schema associé de la propriété |
type |
string | Type de données de la propriété |
lte |
string | Statut LTE de la propriété (true, false ou creating) |
extra |
PropertyExtraInfo | Informations supplémentaires sur les propriétés |
let resp = await conn.uql("show().node_property(@user)", requestConfig);
let propertyList = resp.data?.alias("_nodeProperty").asProperties();
for (let property of propertyList) {
if (property.lte == "true")
console.log("LTE-ed property name:", property.name);
}
LTE-ed property name: location
Algo
Un objet Algo
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
clusterId |
string | ID du cluster |
name |
string | Nom de l'algorithme |
param |
object | Paramètres de l'algorithme, y compris name , description , parameters , result_opt et version |
detail |
string | Informations détaillées sur l'algorithme |
result_opt |
object | Options pour le résultat de l'algorithme |
let resp = await conn.uql("show().algo()");
let algoList = resp.data?.alias("_algoList").asAlgos();
console.log("Algo name:", algoList[0].param.name);
console.log("Algo version:", algoList[0].param.version);
console.log("Description:", algoList[0].param.description);
Algo name: lpa
Algo version: 1.0.10
Description: label propagation algorithm
Exta
Une exta est un algorithme personnalisé développé par les utilisateurs.
Un objet Exta
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
author |
string | Auteur de l'Exta |
detail |
string | Contenu du fichier de configuration YML de l'Exta |
name |
string | Nom de l'Exta |
version |
string | Version de l'Exta |
let resp = await conn.uql("show().exta()");
let extaList = resp.data?.alias("_extaList").asExtas();
console.log("Exta name:", extaList[0].name);
Exta name: page_rank 1
Index
Un objet Index
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
string | Nom de l'index |
properties |
string | Nom de la propriété de l'index |
schema |
string | Nom du schema de l'index |
status |
string | Statut de l'index (terminé ou en création) |
size |
string | Taille de l'index en octets |
dbType |
Ultipa.DBType | Type de l'index (DBNODE ou DBEDGE) |
let resp = await conn.uql("show().index()");
let indexList = resp.data?.alias("_nodeIndex");
console.log(indexList.data);
Table {
name: '_nodeIndex',
alias: '_nodeIndex',
headers: [ 'name', 'properties', 'schema', 'status', 'size' ],
rows: []
}
let resp = await conn.uql("show().fulltext()");
let indexList = resp.data?.alias("_nodeFulltext");
console.log(indexList.data);
Table {
name: '_nodeFulltext',
alias: '_nodeFulltext',
headers: [ 'name', 'properties', 'schema', 'status' ],
rows: []
}
Privilege
Un objet Privilege
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
systemPrivileges |
string[] | Privilèges système |
graphPrivileges |
string[] | Privilèges de graph |
let resp = await conn.uql("show().privilege()");
let privilegeList = resp.data?.alias("_privilege").asTable();
console.log("System privileges:", privilegeList.rows[0][1]);
[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
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
string | Policy name |
graph_privileges |
GraphPrivilege | Graph privileges and the corresponding graphsets included in the policy |
system_privileges |
string[] | Système privilèges inclus dans la stratégie |
policies |
string[] | Policies inclus dans la stratégie |
property_privileges |
PropertyPrivilege | Property privileges inclus dans la stratégie |
let resp = await conn.uql("show().policy()");
let policyList = resp.data?.alias("_policy");
console.log(policyList.data.rows[4]);
[
'policy',
'{"amz":["SHOW_ALGO","CREATE_PROPERTY","CLEAR_TASK","RESUME_TASK","CREATE_BACKUP","SHOW_PROPERTY","SHOW_FULLTEXT","SHOW_INDEX"]}',
'["GRANT","DROP_GRAPH","CREATE_USER","COMPACT","UNMOUNT_GRAPH","STAT","DROP_POLICY"]',
'{"node":{"read":[],"write":[],"deny":[]},"edge":{"read":[],"write":[],"deny":[]}}',
'["subpolicy"]'
]
User
Un objet User
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
username |
string | Nom d'utilisateur |
create |
string | Quand l'utilisateur a été créé |
lastLogin |
string | Quand l'utilisateur s'est connecté la dernière fois |
system_privileges |
string[] | Privilèges système attribués à l'utilisateur |
graph_privileges |
GraphPrivilege | Privilèges de graph et graphsets correspondants attribués à l'utilisateur |
policies |
string[] | Stratégies attribuées à l'utilisateur |
property_privileges |
PropertyPrivilege | Property privileges attribués à l'utilisateur |
let resp = await conn.uql("show().user('Tester')");
let userList = resp.data.alias("_user").asTable();
console.log(userList.headers[0], ":", userList.rows[0][0]);
console.log(userList.headers[1], ":", userList.rows[0][1]);
console.log(userList.headers[2], ":", userList.rows[0][2]);
console.log(userList.headers[3], ":", userList.rows[0][3]);
console.log(userList.headers[4], ":", userList.rows[0][4]);
username : Tester
create : 1721974206
graphPrivileges : {"Ad_Click":["FIND_EDGE","FIND_NODE"],"DFS_EG":["UPDATE","INSERT"]}
systemPrivileges : ["MOUNT_GRAPH"]
propertyPrivileges : {"node":{"read":[],"write":[["miniCircle","account","name"]],"deny":[]},"edge":{"read":[],"write":[],"deny":[]}
Stats
Un objet Stats
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
cpuUsage |
string | Utilisation du CPU en pourcentage |
memUsage |
string | Utilisation de la mémoire en mégaoctets |
expiredDate |
string | Date d'expiration de la licence |
cpuCores |
string | Nombre de cœurs CPU |
company |
string | Nom de la compagnie |
serverType |
string | Type de serveur |
version |
string | Version du serveur |
let resp = await conn.stats();
console.log("CPU usage:", resp.data.cpuUsage, "%");
console.log("Memory usage:", resp.data.memUsage);
CPU usage: 15.209929 %
Memory usage: 10418.183594
Process
Un objet Process
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
process_id |
string | Process ID |
process_uql |
string | Le UQL exécuté avec le process |
status |
string | Process status |
duration |
string | La durée en secondes pendant laquelle le task a été exécuté jusqu'à présent |
let requestConfig = <RequestType.RequestConfig>{
useMaster: true,
graphSetName: "amz",
};
let resp = await conn.uql("top()", requestConfig);
let processList = resp.data?.alias("_top");
console.log(processList.data.rows[0][0]);
a_1_3259_2
Task
Un objet Task
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
param |
object | Paramètres de l'algorithme et leurs valeurs correspondantes |
task_info |
object | Informations sur le task, y compris task_id , algo_name , start_time , TASK_STATUS , etc. |
error_msg |
string | Message d'erreur du task |
result |
object | Résultat de l'algorithme et statistiques et leurs valeurs correspondantes |
return_type |
object | Type de retour du résultat |
let requestConfig = <RequestType.RequestConfig>{
useMaster: true,
graphSetName: "miniCircle",
};
let resp = await conn.uql("show().task()", requestConfig);
let taskList = resp.data.alias("_task").asTasks();
console.log("Algo name:", taskList[0].task_info["algo_name"]);
console.log("Algo parameters:", taskList[0].param);
console.log("Result:", taskList[0].result);
Algo name: louvain
Algo parameters: { phase1_loop_num: '20', min_modularity_increase: '0.001' }
Result: {
community_count: '11',
modularity: '0.532784',
result_files: 'communityID'
}
Table
Un objet Table
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
string | Nom de la table |
headers |
object | En-têtes de la table |
rows |
object | Lignes de la table |
Méthodes sur un objet Table
:
Méthode |
Retourne |
Description |
---|---|---|
toKV() |
List |
Convertit toutes les lignes de la table en une liste clé-valeur. |
let resp = await conn.uql(
"find().nodes() as n return table(n._id, n._uuid) as myTable limit 5",
requestConfig
);
let tableInfo = resp.data.alias("myTable").asTable();
console.log("2nd row in table:", tableInfo.toKV()[1]);
2nd row in table: { 'n._id': 'ULTIPA8000000000000002', 'n._uuid': '2' }
Attr
Un objet Attr
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
alias |
string | Nom de l'attribut |
type |
number | Type de l'attribut |
type_desc |
string | Description du type de l'attribut |
values |
object | Lignes de l'attribut |
let resp = await conn.uql(
"find().nodes({@account}) as n return n.year limit 5",
requestConfig
);
let myAttr = resp.data.alias("n.year").asAttrs();
console.log(myAttr.values);
[ 1978, 1989, 1982, 2007, 1973 ]