Les méthodes get()
ou alias()
de la classe Response
renvoient un DataItem
, qui intègre le résultat de la requête. Vous devez utiliser la méthode as<Type>()
de DataItem
pour caster le résultat au type de pilote approprié.
Response response = client.uql("find().nodes() as n return n{*} limit 5");
List<Node> nodeList = response.alias("n").asNodes();
Le résultat n
provenant de la base de données contient cinq nodes, chacune du type NODE. La méthode asNodes()
les convertit en une liste d'objets Node
.
Méthodes de mappage de types disponibles sur DataItem
:
Type UQL | Alias UQL | Méthode | Type Pilote | Description |
---|---|---|---|---|
NODE | Any | asNodes() |
List |
Mappe DataItem de type NODE à une liste d'objets Node . |
NODE | Any | asFirstNode() |
Node | Mappe le premier node dans un DataItem de type NODE à un objet Node . Équivalent à asNodes().get(0) . |
EDGE | Any | asEdges() |
List |
Mappe DataItem de type EDGE à une liste d'objets Edge . |
EDGE | Any | asFirstEdge() |
Edge | Mappe la première edge dans un DataItem de type EDGE à un objet Edge . Équivalent à asEdges().get(0) . |
PATH | Any | asPaths() |
List |
Mappe DataItem de type PATH à une liste d'objets Path . |
GRAPH | Any | asGraph() |
Graph | Mappe DataItem de type GRAPH à un objet Graph . |
TABLE | _graph |
asGraphSets() |
List |
Mappe DataItem avec l'alias _graph à une liste d'objets GraphSet . |
TABLE | _nodeSchema , _edgeSchema |
asSchemas() |
List |
Mappe DataItem avec l'alias _nodeSchema ou _edgeSchema à une liste d'objets Schema . |
TABLE | _nodeProperty , _edgeProperty |
asProperties() |
List |
Mappe DataItem avec l'alias _nodeProperty ou _edgeProperty à une liste d'objets Property . |
TABLE | _algoList |
asAlgos() |
List |
Mappe DataItem avec l'alias _algoList à une liste d'objets Algo . |
TABLE | _extaList |
asExtas() |
List |
Mappe DataItem avec l'alias _extaList à une liste d'objets Exta . |
TABLE | _nodeIndex , _edgeIndex , _nodeFulltext , _edgeFulltext |
asIndexes() |
List |
Mappe DataItem avec l'alias _nodeIndex , _edgeIndex , _nodeFulltext ou _edgeFulltext à une liste d'objets Index . |
TABLE | _privilege |
asPriviliege() |
Priviliege | Mappe DataItem avec l'alias _privilege à un objet Priviliege . |
TABLE | _policy |
asPolicy() |
List |
Mappe DataItem avec l'alias _policy à une liste d'objets Policy . |
TABLE | _user |
asUsers() |
List |
Mappe DataItem avec l'alias _user à une liste d'objets User . |
TABLE | _statistic |
asStats() |
Stats | Mappe DataItem avec l'alias _statistic à un objet Stats . |
TABLE | _top |
asProcesses() |
List |
Mappe DataItem avec l'alias _top à une liste d'objets Process . |
TABLE | _task |
asTasks() |
List |
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 . |
Driver Types
Les objets de tous les types de pilotes prennent en charge 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
a les champs suivants :
Champ | Type | Description |
---|---|---|
uuid |
Long | UUID du node |
id |
String | ID du node |
schema |
String | Schéma du node |
values |
Value | Propriétés personnalisées du node |
Méthodes sur un objet Node
:
Méthode |
Retour |
Description |
---|---|---|
get("<propertyName>") |
Object | Obtenez la valeur de la propriété personnalisée donnée du node. |
set("<propertyName>", <propertyValue> |
Définissez la valeur pour la propriété personnalisée donnée du node ; ou ajoutez une paire clé-valeur aux values du node si le <propertyName> donné n'existe pas. |
Response response = client.uql("find().nodes() as n return n{*} limit 5");
List<Node> nodeList = response.alias("n").asNodes();
System.out.println("ID of the 1st node: " + nodeList.get(0).getID());
System.out.println("Store name of the 1st node: " + nodeList.get(0).get("storeName"));
ID of the 1st node: 47370-257954
Store name of the 1st node: Meritxell, 96
Edge
Un objet Edge
a les champs suivants :
Champ | Type | Description |
---|---|---|
uuid |
Long | UUID de l'edge |
fromUuid |
Long | Start node UUID de l'edge |
toUuid |
Long | End node UUID de l'edge |
from |
String | Start node ID de l'edge |
to |
String | End node ID de l'edge |
schema |
String | Schéma de l'edge |
values |
Value | Propriétés personnalisées de l'edge |
Méthodes sur un objet Edge
:
Méthode |
Retour |
Description |
---|---|---|
get("<propertyName>") |
Object | Obtenez la valeur de la propriété personnalisée donnée de l'edge. |
set("<propertyName>", <propertyValue> |
Définissez la valeur pour la propriété personnalisée donnée de l'edge ; ou ajoutez une paire clé-valeur aux valeurs de l'edge si le <propertyName> donné n'existe pas. |
Response response = client.uql("find().edges() as e return e{*} limit 5");
Edge edge = response.alias("e").asFirstEdge();
System.out.println("Values of the 1st edge: " + edge.getValues());
Values of the 1st edge: {distanceMeters=20, duration=21s, staticDuration=25s, travelMode=Walk, transportationCost=46}
Path
Un objet Path
a les champs suivants :
Champ | Type |
Description |
---|---|---|
nodes |
List |
Liste de nodes du path |
edges |
List |
Liste d'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 |
Méthodes sur un objet Path
:
Méthode |
Retour |
Description |
---|---|---|
length() |
Integer | Obtenez la longueur du path, c'est-à-dire le nombre d'edges dans le path. |
Response response = client.uql("n().e()[:2].n() as paths return paths{*} limit 5");
List<Path> pathList = response.alias("paths").asPaths();
System.out.println("Length of the 1st path: " + pathList.get(0).length());
System.out.println("Edge list of the 1st path: " + pathList.get(0).getEdges());
System.out.println("Information of the 2nd node in the 1st path: " + pathList.get(0).getNodes().get(1).toJson());
Length of the 1st path: 2
Edge list of the 1st path: [Edge(uuid=591, fromUuid=20, toUuid=1, from=15219-158845, to=47370-257954, schema=transport, values={distanceMeters=10521283, duration=527864s, staticDuration=52606s, travelMode=Airplane, transportationCost=21043}), Edge(uuid=599, fromUuid=21, toUuid=20, from=15474-156010, to=15219-158845, schema=transport, values={distanceMeters=233389, duration=13469s, staticDuration=1167s, travelMode=Airplane, transportationCost=467})]
Information of the 2nd node in the 1st path: {"brand":"Starbucks","storeName":"Las Palmas","ownershipType":"Licensed","city":"Pilar","provinceState":"B","timezone":"GMT-03:00 America/Argentina/Bu","point":{"latitude":-33.39,"longitude":-60.22},"_uuid":20,"_id":"15219-158845","schema":"warehouse"}
Graph
Un objet Graph
a les champs suivants :
Champ | Type |
Description |
---|---|---|
nodes |
List |
Liste de nodes du path |
edges |
List |
Liste d'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 |
Response response = client.uql("n(as n1).re(as e).n(as n2).limit(3) with toGraph(collect(n1), collect(n2), collect(e)) as graph return graph");
Graph graph = response.alias("graph").asGraph();
List<Node> nodes = graph.getNodes();
List<Edge> edges = graph.getEdges();
System.out.println("Node IDs:");
for (Node node : nodes) {
System.out.println(node.getID());
}
System.out.println("Edge UUIDs:");
for (Edge edge : edges) {
System.out.println(edge.getUUID());
}
Node IDs:
ad304833
u604131
ad534784
ad6880
Edge UUIDs:
363347
774098
527786
3
GraphSet
Un objet GraphSet
a les champs suivants :
Champ |
Type | Description |
---|---|---|
id |
Integer | ID du graphset |
name |
String | Nom du graphset |
description |
String | Description du graphset |
totalNodes |
Long | Nombre total de nodes dans le graphset |
totalEdges |
Long | Nombre total d'edges dans le graphset |
status |
String | Statut du graphset (MOUNTED, MOUNTING, ou UNMOUNTED) |
Response response = client.uql("show().graph()");
List<GraphSet> graphSetList = response.alias("_graph").asGraphSets();
for (GraphSet graphSet : graphSetList) {
if (graphSet.getStatus().equals("UNMOUNTED")) {
System.out.println(graphSet.getName());
}
}
DFS_EG
cyber
netflow
Schema
Un objet Schema
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
String | Nom du schema |
description |
String | Description du schema |
properties |
List |
Liste de propriétés du schema |
dbType |
Ultipa.DBType | Type de schema (DBNODE ou DBEDGE) |
total |
Integer | Nombre total de nodes ou d'edges du schema |
Response response = client.uql("show().node_schema()");
List<Schema> schemaList = response.alias("_nodeSchema").asSchemas();
for (Schema schema : schemaList) {
System.out.println(schema.getName() + " has " + schema.getTotal() + " nodes");
}
default has 0 nodes
user has 1092511 nodes
ad has 846811 nodes
Property
Un objet Property
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
String | Nom de la propriété |
description |
String | Description de la propriété |
schema |
String | Schéma associé à la propriété |
type |
String | Type de données de la propriété |
lte |
Boolean | Statut LTE de la propriété (true ou false) |
Response response = client.uql("show().node_property(@user)");
List<Property> propertyList = response.alias("_nodeProperty").asProperties();
for (Property property : propertyList) {
if (property.getLte()) {
System.out.println("LTE-ed property name: " + property.getName());
}
}
LTE-ed property name: cms_group_id
Algo
Un objet Algo
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
String | Nom de l'algorithme |
desc |
String | Description de l'algorithme |
version |
String | Version de l'algorithme |
detail |
String | Paramètres de l'algorithme |
Response res = client.uql("show().algo()");
List<Algo> algoList = res.alias("_algoList").asAlgos();
System.out.println(algoList.get(0).toString());
Algo(name=fastRP, desc={"name":"fastRP","description":"Fast and Accurate Network Embeddings via Very Sparse Random Projection","version":"1.0.1","parameters":{"dimension":"int,required","normalizationStrength":"float,optional, 0 as default","iterationWeights":"float[],optional,[0.0,1.0,1.0] as default","edge_schema_property":"optional,for weighted random projection","node_schema_property":"optional","propertyDimension":"int,optional, maximum value is dimension","limit":"optional,-1 for all results, >=0 partial results"},"write_to_db_parameters":{"property":"set write back property name for each schema and nodes"},"write_to_file_parameters":{"filename":"set file name"},"result_opt":"27"}, version=null, params=null)
Exta
Une exta est un algorithme personnalisé développé par les utilisateurs.
Un objet Exta
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
String | Nom de l'exta |
author |
String | Auteur de l'exta |
version |
String | Version de l'exta |
detail |
String | Contenu du fichier de configuration YML de l'exta |
Response response = client.uql("show().exta()");
List<Exta> extaList = response.alias("_extaList").asExtas();
System.out.println(extaList.get(0).getName());
page_rank
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 (done ou creating) |
size |
String | Taille de l'index en octets |
dbType |
Ultipa.DBType | Type d'index (DBNODE ou DBEDGE) |
Response response = client.uql("show().index()");
List<Index> indexList = response.alias("_nodeIndex").asIndexes();
for (Index index : indexList) {
System.out.println(index.getSchema() + " " + index.getProperties() + " " + index.getSize());
}
account name 0
movie name 2526
Response response = client.uql("show().fulltext()");
List<Index> indexList = response.alias("_edgeFulltext").asIndexes();
for (Index index : indexList) {
System.out.println(index.getName() + " " + index.getProperties() + " " + index.getSchema());
}
contentFull content review
Privilege
Un objet Privilege
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
systemPrivileges |
List |
Privilèges système |
graphPrivileges |
List |
Privilèges de graph |
Response response = client.uql("show().privilege()");
Privilege privilege = response.alias("_privilege").asPrivilege();
System.out.println(privilege.getSystemPrivileges());
[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 | Nom de la stratégie |
systemPrivileges |
List |
Privilèges système inclus dans la stratégie |
graphPrivileges |
Map<String, List |
Privilèges de graph et les graphsets correspondants inclus dans la stratégie |
propertyPrivileges |
PropertyPrivilege | Privilèges de propriété inclus dans la stratégie |
policies |
List |
Stratégies incluses dans la stratégie |
Response response = client.uql("show().policy()");
List<Policy> policyList = response.alias("_policy").asPolicies();
for (Policy policy : policyList) {
System.out.println(policy.getName());
}
manager
operator
User
Un objet User
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
username |
String | Nom d'utilisateur |
create |
String | Date de création de l'utilisateur |
systemPrivileges |
List |
Privilèges système accordés à l'utilisateur |
graphPrivileges |
Map<String, List |
Privilèges de graph et les graphsets correspondants accordés à l'utilisateur |
propertyPrivileges |
PropertyPrivilege | Privilèges de propriété accordés à l'utilisateur |
policies |
List |
Stratégies accordées à l'utilisateur |
Response response = client.uql("show().user('Tester')");
List<User> user = response.alias("_user").asUsers();
System.out.println(user.get(0).toString());
User(username=Tester, create=Fri Jul 26 14:10:06 CST 2024, systemPrivileges=[MOUNT_GRAPH, SHOW_GRAPH], graphPrivileges={Ad_Click=[FIND_EDGE, FIND_NODE], DFS_EG=[UPDATE, INSERT]}, propertyPrivileges=PropertyPrivilege(node=PropertyPrivilegeElement(read=[], write=[], deny=[]), edge=PropertyPrivilegeElement(read=[], write=[], deny=[])), policies=[operator])
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 l'entreprise |
serverType |
String | Type de serveur |
version |
String | Version du serveur |
Response response = client.uql("stats()");
Stats stats = response.get(0).asStats();
System.out.println("CPU usage: " + stats.getCpuUsage() + "%");
System.out.println("Memory usage: " + stats.getMemUsage());
CPU usage: 5.415697%
Memory usage: 9292.265625
Process
Un objet Process
a 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 | Le temps en secondes que le task a couru jusqu'à présent |
RequestConfig requestConfig = new RequestConfig();
requestConfig.setGraphName("amz");
Response response = client.uql("top()", requestConfig);
List<Process> processList = response.alias("_top").asProcesses();
for (Process process : processList) {
System.out.println(process.getProcessId());
}
a_2_569_2
a_3_367_1
Task
Un objet Task
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
taskInfo |
TaskInfo | Informations sur le task incluant taskId , serverId , algoName , startTime , etc. |
param |
Map<String, Object> | Paramètres de l'algorithme et leurs valeurs correspondantes |
result |
Map<String, Object> | Résultat de l'algorithme et statistiques et leurs valeurs correspondantes |
errorMsg |
String | Message d'erreur du task |
Response response = client.uql("show().task()", requestConfig);
List<Task> tasks = response.alias("_task").asTasks();
System.out.println(tasks.get(0).getTaskInfo().getAlgoName());
System.out.println(tasks.get(0).getParam().toString());
System.out.println(tasks.get(0).getResult().toString());
degree
{order=desc, limit=10}
{total_degree=590.000000, avarage_degree=1.940789, result_files=top10}
Table
Un objet Table
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
tableName |
String | Nom de la table |
headers |
List |
En-têtes de la table |
rows |
List<List | Lignes de la table |
Méthodes sur un objet Table
:
Méthode |
Retour |
Description |
---|---|---|
toKV() |
List |
Convertit toutes les lignes de la table en une liste clé-valeur. |
Response response = client.uql("find().nodes() as n return table(n._id, n._uuid) as myTable limit 5");
Table table = response.alias("myTable").asTable();
System.out.println("2nd row in table: " + table.toKV().get(1));
2nd row in table: {n._id=u604510, n._uuid=2}
Attr
Un objet Attr
a les champs suivants :
Champ |
Type |
Description |
---|---|---|
name |
String | Nom de l'attribut |
values |
List | Lignes de l'attribut |
type |
Ultipa.PropertyType | Type de l'attribut |
Response response = client.uql("find().nodes({@ad}) as n return n.brand limit 5");
Attr attr = response.alias("n.brand").asAttr();
System.out.println(attr.getValues());
[14655, 14655, 14655, 14655, 434760]