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]