Méthodes de Mapping
La méthode Alias() de la classe Response 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é.
var res = await ultipa.Uql("find().nodes() as n return n{*} limit 5");
var nodeList = res.Alias("n").AsNodes();
Console.WriteLine(JsonConvert.SerializeObject(nodeList));
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:
| Type UQL | Alias UQL | Méthode | Type Pilote | Description |
|---|---|---|---|---|
| NODE | Any | AsNodes() |
List<Node>? | Mappe le DataItem de type NODE en une liste d'objets Node. |
| EDGE | Any | AsEdges() |
List<Edge>? | Mappe le DataItem de type EDGE en une liste d'objets Edge. |
| PATH | Any | AsPaths() |
List<Path>? | Mappe le DataItem de type PATH en une liste d'objets Path. |
| TABLE | Any | AsGraph() |
Graph | Mappe le DataItem de type GRAPH en une liste d'objets Graph. |
| TABLE | _graph |
AsGraphSets() |
List<GraphSet>? | Mappe le DataItem avec l'alias _graph en une liste d'objets GraphSet. |
| TABLE | _nodeSchema, _edgeSchema |
AsSchemas() |
List<Schema> | Mappe le DataItem avec l'alias _nodeSchema ou _edgeSchema en une liste d'objets Schema. |
| TABLE | _nodeProperty, _edgeProperty |
AsProperties() |
List<Property> | Mappe le DataItem avec l'alias _nodeProperty ou _edgeProperty en une liste d'objets Property. |
| TABLE | _algoList |
AsAlgos() |
List<Algo> | Mappe le DataItem avec l'alias _algoList en une liste d'objets Algo. |
| TABLE | _extaList |
AsExtas() |
List<Exta> | Mappe le DataItem avec l'alias _extaList en une liste d'objets Exta. |
| TABLE | _nodeIndex, _edgeIndex, _nodeFulltext, _edgeFulltext |
AsIndexes() |
List<Index> | Mappe le DataItem avec l'alias _nodeIndex, _edgeIndex, _nodeFulltext ou _edgeFulltext en une liste d'objets Index. |
| TABLE | _privilege |
AsPrivileges() |
List<Privilege> | Mappe le DataItem avec l'alias _privilege en une liste d'objets Privilege. |
| TABLE | _policy |
AsPolicies() |
List<Policy> | Mappe le DataItem avec l'alias _policy en une liste d'objets Policy. |
| TABLE | _user |
AsUsers() |
List<User> | Mappe le DataItem avec l'alias _user en une liste d'objets User. |
| TABLE | _statistic |
AsStats() |
DatabaseStats | Mappe le DataItem avec l'alias _statistic en un objet DatabaseStats. |
| TABLE | _top |
AsProcesses() |
List<Process> | Mappe le DataItem avec l'alias _top en une liste d'objets Process. |
| TABLE | _task |
AsTasks() |
List<UltipaTask> | Mappe le DataItem avec l'alias _task en une liste d'objets UltipaTask. |
| TABLE | Any | AsTable() |
Table | Mappe le DataItem de type TABLE en un objet Table. |
| ATTR | Any | AsAttr() |
Attr | Mappe le DataItem de type ATTR en un objet Attr. |
| ATTR | Any | AsAttrOriginal() |
AttrList | Mappe le DataItem de type ATTR en un objet AttrList. |
Types de Pilote
Node
Un objet Node possède les champs suivants :
| Champ | Type | Description |
|---|---|---|
Uuid |
uint64 | Node UUID |
Id |
string | Node ID |
Schema |
string | Node Schema |
Values |
Dictionary<string, object?> | Node custom properties |
var res = await ultipa.Uql("find().nodes() as n return n{*} limit 5", requestConfig);
var nodeList = res.Alias("n")?.AsNodes();
Console.WriteLine("ID of the 1st node: " + JsonConvert.SerializeObject(nodeList[0].Id));
Console.WriteLine(
"Name of the 1st node: "
+ JsonConvert.SerializeObject(nodeList[0].Values.GetValueOrDefault("name"))
);
ID of the 1st node: ULTIPA8000000000000001
Name of the 1st node: Titanic
Edge
Un objet Edge possède les champs suivants :
| Champ | Type | Description |
|---|---|---|
Uuid |
uint64 | Edge UUID |
FromUuid |
uint64 | Start node UUID de l'edge |
ToUuid |
uint64 | End node UUID de l'edge |
FromId |
string | Start node ID de l'edge |
ToId |
string | End node ID de l'edge |
Schema |
string | Edge Schema |
Values |
Dictionary<string, object?> | Edge custom properties |
var res = await ultipa.Uql("find().edges() as e return e{*} limit 5", requestConfig);
var edgeList = res.Alias("e")?.AsEdges();
Console.WriteLine(
"Value of the 1st edge: " + JsonConvert.SerializeObject(edgeList[0].Values)
);
Value of the 1st edge: {"datetime":"2019-01-06T02:56:00Z","timestamp":"2019-01-05T18:57:57Z","targetPost":0}
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 |
object | Information de node schema |
EdgeSchemas |
object | Information de edge schema |
var res = await ultipa.Uql(
"n().e()[:2].n() as paths return paths{*} limit 5",
requestConfig
);
var pathList = res.Alias("paths")?.AsPaths();
Console.WriteLine(
"Length of the 1st path: " + JsonConvert.SerializeObject(pathList[0].Edges.Count)
);
Console.WriteLine(
"Edge list of the 1st path: " + JsonConvert.SerializeObject(pathList[0].Edges)
);
Console.WriteLine(
"Information of the 2nd node in the 1st path: "
+ JsonConvert.SerializeObject(pathList[0].Nodes[1])
);
Length of the 1st path: 2
Edge list of the 1st path: [{"Uuid":7,"FromUuid":27,"ToUuid":1,"Id":"","FromId":"ULTIPA800000000000001B","ToId":"ULTIPA8000000000000001","Schema":"follow","Values":{}},{"Uuid":99,"FromUuid":33,"ToUuid":27,"Id":"","FromId":"ULTIPA8000000000000021","ToId":"ULTIPA800000000000001B","Schema":"follow","Values":{}}]
Information of the 2nd node in the 1st path: {"Uuid":27,"Id":"ULTIPA800000000000001B","Schema":"account","Values":{"year":1988,"industry":"Transportation","name":"Sam123","stringList":[null],"int32List":[null],"float":3.72,"double":3.719999313354492}}
Graph
Un objet Graph 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 |
Dictionary<string, Schema> | Carte de tous les schémas de nodes du path |
EdgeSchemas |
Dictionary<string, Schema> | Carte de tous les schémas d'edges du path |
var res = await ultipa.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
);
var graphList = res.Alias("graph")?.AsGraph();
var nodeList = graphList.Nodes;
var edgeList = graphList.Edges;
Console.WriteLine("Node IDs: ");
foreach (var node in nodeList)
{
Console.WriteLine(node.Id);
}
Console.WriteLine("Edge UUIDs: ");
foreach (var edge in edgeList)
{
Console.WriteLine(edge.Uuid);
}
Node IDs:
ULTIPA8000000000000017
ULTIPA8000000000000001
ULTIPA8000000000000061
ULTIPA800000000000001B
Edge UUIDs:
1576
43
29
GraphSet
Un objet GraphSet possède les champs suivants :
Champ |
Type | Description |
|---|---|---|
Id |
string | Graphset ID |
Name |
string | Graphset name |
Desc |
string | Description du graphset |
TotalNodes |
ulong | Nombre total de nodes dans le graphset |
TotalEdges |
ulong | Nombre total d'edges dans le graphset |
Status |
string | Statut du graphset (MOUNTED, MOUNTING, ou UNMOUNTED) |
var res = await ultipa.Uql("show().graph()");
var graphSetList = res.Alias("_graph")?.AsGraphSets();
foreach (var graph in graphSetList)
{
if (graph.Status.Equals("UNMOUNTED"))
{
Console.WriteLine(graph.Name);
}
}
DFS_EG
cyber
cyber2
Schema
Un objet Schema possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Name |
string | Nom du schema |
Desc |
string | Description du schema |
DbType |
DBType | Type du schema (node ou edge) |
Total |
int | Nombre total de nodes/edges du schema |
Properties |
List<Property> | Liste des propriétés du schema |
var res = await ultipa.Uql("show().node_schema()", requestConfig);
var schemaList = res.Alias("_nodeSchema")?.AsSchemas();
foreach (var schema in schemaList)
{
Console.WriteLine(schema.Name + " has " + schema.Total + " nodes");
}
default has 0 nodes
user has 1092511 nodes
ad has 846811 nodes
Property
Un objet Property possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Name |
string | Nom de la propriété |
Desc |
string | Description de la propriété |
Lte |
bool | Statut de LTE de la propriété |
Read |
bool | Statut de lecture de la propriété |
Write |
bool | Statut d'écriture de la propriété |
Schema |
string | Schema associé de la propriété |
Type |
PropertyType | Type de données de la propriété |
SubTypes |
PropertyType[] | Liste de types de données de la propriété |
Extra |
string | Informations supplémentaires de propriétés |
var res = await ultipa.Uql("show().node_property(@account)", requestConfig);
var propertyList = res.Alias("_nodeProperty")?.AsProperties();
foreach (var property in propertyList)
{
if (property.Lte.Equals(true))
{
Console.WriteLine("LTE-ed property name: " + property.Name);
}
}
LTE-ed property name: year
Algo
Un objet Algo possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Name |
string | Nom de l'algorithme |
Param |
string | Paramètres de l'algorithme |
Detail |
string | Détails de l'algorithme |
var res = await ultipa.Uql("show().algo()", requestConfig);
var algoList = res.Alias("_algoList")?.AsAlgos();
Console.WriteLine(JsonConvert.SerializeObject(algoList[0]));
{"Name":"bipartite","Param":"{\"name\":\"bipartite\",\"description\":\"bipartite check\",\"version\":\"1.0.1\",\"parameters\":{},\"result_opt\":\"56\"}","Detail":"base:\r\n category: Connectivity & Compactness\r\n name: Bipartite\r\n desc: Judge if the current graph is bipartite.\r\n}
Exta
Un exta est un algorithme personnalisé développé par les utilisateurs.
Un objet Exta possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Author |
string | Auteur de l'exta |
Name |
string | Nom de l'exta |
Version |
string | Version de l'exta |
Detail |
string | Contenu du fichier de configuration YML de l'exta |
var res = await ultipa.Uql("show().exta()");
var extaList = res.Alias("_extaList")?.AsExtas();
Console.WriteLine(JsonConvert.SerializeObject("Exta name: " + extaList[0].Name));
"Exta name: page_rank"
Index
Un objet Index possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Schema |
string | Nom du schema de l'index |
Name |
string | Nom de l'index |
Properties |
string | Nom de la propriété de l'index |
Status |
string | Statut de l'index (done ou creating) |
Size |
string | Taille de l'index en octets |
var res = await ultipa.Uql("show().index()", requestConfig);
var indexList = res.Alias("_nodeIndex")?.AsIndexes();
foreach (var index in indexList)
{
Console.WriteLine("Nom du schema: " + index.Schema);
Console.WriteLine("Properties: " + index.Properties);
Console.WriteLine("Size: " + index.size);
}
Nom du schema: account
Properties: name
Size: 0
Nom du schema: movie
Properties: name
Size: 2526
var res = await ultipa.Uql("show().fulltext()", requestConfig);
var fulltextList = res.Alias("_edgeFulltext")?.AsIndexes();
foreach (var item in fulltextList)
{
Console.WriteLine("Nom du fulltext: " + item.Name);
Console.WriteLine("Nom du schema: " + item.Schema);
Console.WriteLine("Properties: " + item.Properties);
}
Nom du fulltext: nameFull
Nom du schema: review
Properties: content
Privilege
Un objet Privilege a les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Name |
string | Nom du privilège |
Level |
PrivilegeType | Type de privilège, y compris GraphLevel et SystemLevel |
var res = await ultipa.Uql("show().privilege()");
var privilegeList = res.Alias("_privilege")?.AsPrivileges();
var systemPrivilegeList = new List\<string>();
foreach (var item in privilegeList)
{
if (item.Level == PrivilegeType.SystemLevel)
{
systemPrivilegeList.Add(item.Name);
}
}
Console.WriteLine("System privileges include: ");
Console.WriteLine(JsonConvert.SerializeObject(systemPrivilegeList));
System privileges include:
["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 |
string | Nom de la stratégie |
GraphPrivileges |
Dictionary<string, List<string>> | Privilèges de graph et les graphsets correspondants inclus dans la stratégie |
SystemPrivileges |
List<string> | Privilèges système inclus dans la stratégie |
SubPolicies |
List<string> | Stratégies incluses dans la stratégie |
PropertyPrivileges |
PropertyPrivilegeMap? | Privilèges de propriété inclus dans la stratégie |
var res = await ultipa.Uql("show().policy()");
var policyList = res.Alias("_policy")?.AsPolicies();
foreach (var item in policyList)
{
Console.WriteLine("Nom de la stratégie: " + item.Name);
}
Nom de la stratégie: operator
Nom de la stratégie: manager
User
Un objet User possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Username |
string | Nom d'utilisateur |
Password |
string | Mot de passe |
CreatedTime |
string | Quand l'utilisateur a été créé |
GraphPrivileges |
Dictionary<string, List<string>>? | Privilèges de graph et les graphsets correspondants accordés à l'utilisateur |
SystemPrivileges |
List<string> | Privilèges système accordés à l'utilisateur |
PropertyPrivileges |
PropertyPrivileges | Privilèges de propriété accordés à l'utilisateur |
Policies |
List<string> | Stratégies accordées à l'utilisateur |
var res = await ultipa.Uql("show().user('Tester')");
var userList = res.Alias("_user")?.AsUsers();
Console.WriteLine("Nom d'utilisateur: " + userList[0].Username);
Console.WriteLine("Créé le: " + userList[0].CreatedTime);
Console.WriteLine(
"Privilèges de graph: " + JsonConvert.SerializeObject(userList[0].GraphPrivileges)
);
Console.WriteLine(
"Privilèges système: " + JsonConvert.SerializeObject(userList[0].SystemPrivileges)
);
Console.WriteLine(
"Privilèges de propriété: " + JsonConvert.SerializeObject(userList[0].PropertyPrivileges)
);
Nom d'utilisateur: Tester
Créé le: 7/26/2024 6:10:06 AM
Privilèges de graph: {"Ad_Click":["FIND_EDGE","FIND_NODE"],"DFS_EG":["UPDATE","INSERT"]}
Privilèges système: ["MOUNT_GRAPH"]
Privilèges de propriété: {"node":{"read":[["*","*","*"]],"write":[["*","*","*"],["miniCircle","account","name"]],"deny":[]},"edge":{"read":[["*","*","*"]],"write":[["*","*","*"]],"deny":[]}}
Stats
Un objet DatabaseStats possède 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 de CPU |
Company |
string | Nom de l'entreprise |
ServerType |
string | Type de serveur |
Version |
string | Version du serveur |
var res = await ultipa.Uql("stats()");
var statsList = res.Alias("_statistic")?.AsStats();
Console.WriteLine("Utilisation du CPU: " + statsList.CpuUsage);
Console.WriteLine("Utilisation de la mémoire: " + statsList.MemUsage);
Utilisation du CPU: 12.204036
Utilisation de la mémoire: 11348.136719
Process
Un objet Process possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Id |
string | ID du process |
Uql |
string | Le UQL exécuté avec le process |
Duration |
int | Durée en secondes pendant laquelle le task a été exécuté jusqu'à présent |
Status |
string | Statut du process |
var res = await ultipa.Uql("top()");
var processList = res.Alias("_top")?.AsProcesses();
Console.WriteLine("ID du process: " + processList[0].Id);
ID du process: a_7_14568_1
Task
Un objet UltipaTask possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Param |
object | Paramètres de l'algorithme et leurs valeurs correspondantes |
Info |
TaskInfo | Informations du task incluant TaskID, AlgoName, StartTime, TaskStatus, etc. |
result |
object | Résultat de l'algorithme et statistiques et leurs valeurs correspondantes |
ErrorMsg |
string | Message d'erreur du task |
var res = await ultipa.Uql("show().task()", requestConfig);
var taskList = res.Alias("_task")?.AsTasks();
Console.WriteLine("Algo Name: " + taskList[0].Info.AlgoName);
Console.WriteLine("Parameters: " + taskList[0].Param);
Console.WriteLine("Result: " + taskList[0].result);
Algo Name: louvain
Parameters: {"phase1_loop_num":"20","min_modularity_increase":"0.001"}
Result: {
"community_count": "10",
"modularity": "0.535017",
"result_files": "communityID,ids,num"
}
Table
Un objet Table possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
Name |
string | Nom de la table |
Headers |
[]Property | En-têtes de la table |
Rows |
[]Row | Lignes de la table |
Méthodes sur un objet Table :
Méthode |
Retour |
Description |
|---|---|---|
ToKv() |
List<Dictionary<string, object?>> | Convertit toutes les lignes de la table en une liste clé-valeur. |
var res = await ultipa.Uql(
"find().nodes() as n return table(n._id, n._uuid) as myTable limit 5"
);
var myTab = res.Alias("myTable")?.AsTable();
Console.WriteLine("2nd row in table: " + JsonConvert.SerializeObject(myTab.ToKv()[1]));
2nd row in table: {"n._id":"ULTIPA8000000000000002","n._uuid":0}
Attr
Un objet Attr possède les champs suivants :
Champ |
Type |
Description |
|---|---|---|
ResultType |
ResultType | Description du type d'Attr |
PropertyType |
PropertyType | Type d'Attr |
Nodes |
List<Node> | Liste d'objets Node |
Edges |
List<Edge> | Liste d'objets Edge |
Paths |
List<Path> | Liste d'objets Path |
Attrs |
AttrList | Liste d'objets Attr |
Value |
object | Valeur des données |
var res = await ultipa.Uql(
"find().nodes({@ad}) as n return n.brand limit 5",
requestConfig
);
var myAttr = res.Alias("n.brand")?.AsAttr();
Console.WriteLine(JsonConvert.SerializeObject(myAttr));
[14655,14655,14655,14655,434760]