映射方法
Response
类的get()
方法或alias()
方法返回一个DataItem
,内嵌在查询结果中。您需使用DataItem
的as<Type>()
方法将结果转换成合适的驱动类型。
response = Conn.uql("find().nodes() as n return n{*} limit 5")
nodeList = response.alias("n").asNodes()
从数据库返回的结果n
包含5个节点,均为NODE类型。asNodes()
方法将这些节点转换成Node
列表。
DataItem
的类型映射方法:
UQL类型 | UQL别名 | 方法 | 驱动类型 | 描述 |
---|---|---|---|---|
NODE | 任意 | asNodes() |
List[Node] | 将NODE类型的DataItem 映射为Node 对象列表 |
NODE | 任意 | asFirstNode() |
Node | 将NODE类型的DataItem 中第一个点映射为一个Node 对象。等同于asNodes().get(0) |
EDGE | 任意 | asEdges() |
List[Edge] | 将EDGE类型的DataItem 映射为Edge 对象列表 |
EDGE | 任意 | asFirstEdge() |
Edge | 将EDGE类型的DataItem 中第一条边映射为一个Edge 对象。等同于asEdges().get(0) |
PATH | 任意 | asPaths() |
List[Path] | 将PATH类型的DataItem 映射为Path 对象列表 |
GRAPH | 任意 | asGraph() |
Graph | 将GRAPH类型的DataItem 映射为一个Graph 对象 |
TABLE | _graph |
asGraphSets() |
List[GraphSet] | 将别名为_graph 的DataItem 映射为GraphSet 对象列表 |
TABLE | _nodeSchema , _edgeSchema |
asSchemas() |
List[Schema] | 将别名为_nodeSchema 或_edgeSchema 的DataItem 映射为Schema 对象列表 |
TABLE | _nodeProperty , _edgeProperty |
asProperties() |
List[Property] | 将别名为_nodeProperty 或_edgeProperty 的DataItem 映射为Property 对象列表 |
TABLE | _algoList |
asAlgos() |
List[Algo] | 将别名为_algoList 的DataItem 映射为Algo 对象列表 |
TABLE | _extaList |
asExtas() |
List[Exta] | 将别名为_extaList 的DataItem 映射为Exta 对象列表 |
TABLE | _nodeIndex , _edgeIndex , _nodeFulltext , _edgeFulltext |
asIndexes() |
List[Index] | 将别名为_nodeIndex 、_edgeIndex 、_nodeFulltext 或_edgeFulltext 的DataItem 映射为Index 对象列表 |
TABLE | _privilege |
asPriviliege() |
Priviliege | 将别名为_privilege 的DataItem 映射为一个Priviliege 对象 |
TABLE | _policy |
asPolicy() |
Policy/List[Policy] | 将别名为_policy 的DataItem 映射为Policy 对象列表 |
TABLE | _user |
asUsers() |
User/List[User] | 将别名为_user 的DataItem 映射为一个或多个User 对象列表 |
TABLE | _statistic |
asStats() |
Stats | 将别名为_statistic 的DataItem 映射为一个Stats 对象 |
TABLE | _top |
asProcesses() |
List[Process] | 将别名为_top 的DataItem 映射为Process 对象列表 |
TABLE | _task |
asTasks() |
List[Task] | 将别名为_task 的DataItem 映射为Task 对象列表 |
TABLE | Any | asTable() |
Table | 将TABLE类型的DataItem 映射为一个Table 对象 |
ATTR | Any | asAttr() |
Attr | 将ATTR类型的DataItem 映射为一个Attr 对象 |
驱动类型
所有驱动类型的对象均支持使用getter方法获取字段值,以及使用setter方法设定字段值,即便这些对象并未在下文中明确列出。
Node
Node
对象包含以下字段:
字段 | 类型 | 描述 |
---|---|---|
uuid |
int | 点的UUID |
id |
str | 点的ID |
schema |
str | 点的schema |
values |
dict | 点的自定义属性 |
作用在Node
对象上的方法:
方法 |
返回值 |
描述 |
---|---|---|
get("<propertyName>") |
任意 | 获取点的指定自定义属性的值 |
set("<propertyName>", <propertyValue>) |
设置点的指定自定义属性的值;若指定的<propertyName> 不存在,则为点的values 增加一个键值对 |
response = Conn.uql("find().nodes() as n return n{*} limit 5")
nodes = response.alias("n").asNodes()
print("ID of the 1st node:", nodes[0].getID())
print("Store name of the 1st node", nodes[0].get("storeName"))
ID of the 1st node: 47370-257954
Store name of the 1st node: Meritxell, 96
Edge
Edge
对象包含以下字段:
Field | Type | Description |
---|---|---|
uuid |
int | 边的UUID |
from_uuid |
int | 边的起点的UUID |
to_uuid |
int | 边的终点的UUID |
from_id |
str | 边的起点的ID |
to_id |
str | 边的终点的ID |
schema |
dtr | 边的schema |
values |
dict | 边的自定义属性 |
作用在Edge
对象上的方法:
方法 |
返回值 |
Descr描述iption |
---|---|---|
get("<propertyName>") |
任意 | 获取边的指定自定义属性的值 |
set("<propertyName>", <propertyValue> |
设置边的指定自定义属性的值;若指定的<propertyName> 不存在,则为边的values 增加一个键值对 |
response = Conn.uql("find().edges() as e return e{*} limit 5")
edges = response.alias("e").asEdges()
print("Values of the 1st edge:", edges[0].getValues())
Values of the 1st edge: {'distanceMeters': 20, 'duration': '21s', 'staticDuration': '25s', 'travelMode': 'Walk', 'transportationCost': 46}
Path
Path
对象包含以下字段:
字段 | 类型 |
描述 |
---|---|---|
nodes |
List[Node] | 路径中的Node列表 |
edges |
List[Edge] | 路径中的Edge列表 |
nodeSchemas |
Dict[str, Schema] | 路径中全部点schema的映射 |
edgeSchemas |
Dict[str, Schema] | 路径中全部边schema的映射 |
作用在Path
对象上的方法:
方法 |
返回值 |
描述 |
---|---|---|
length() |
int | 获取路径的长度,即路径中的边数 |
response = Conn.uql("n().e()[:2].n() as paths return paths{*} limit 5")
paths = response.alias("paths").asPaths()
print("Length of the 1st path:", paths[0].length())
print("Edges in the 1st path:")
edges = paths[0].getEdges()
for edge in edges:
print(edge)
print("Information of the 2nd node in the 1st path:")
nodes = paths[0].getNodes()
print(nodes[1])
Length of the 1st path: 2
Edges in the 1st 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}
Information of the 2nd node in the 1st 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
Graph
对象包含以下字段:
字段 | 类型 |
描述 |
---|---|---|
node_table |
List[Node] | 路径中的Node列表 |
edge_table |
List[Edge] | 路径中的Edge列表 |
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("Node IDs:")
nodes = graph.node_table
for node in nodes:
print(node.getID())
print("Edge UUIDs:")
edges = graph.edge_table
for edge in edges:
print(edge.getUUID())
Node IDs:
24604-238367
34291-80114
47370-257954
29791-255373
23359-229184
Edge UUIDs:
344
320
346
GraphSet
GraphSet
对象包含以下字段:
字段 |
类型 | 描述 |
---|---|---|
id |
int | 图集ID |
name |
str | 图集名称 |
description |
str | 图集描述 |
totalNodes |
int | 图集总点数 |
totalEdges |
int | 图集总边数 |
status |
str | 图集状态,包括MOUNTED,MOUNTING和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
Schema
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
name |
str | Schema名称 |
description |
str | Schema描述 |
properties |
List[Property] | Schema属性列表 |
DBType |
DBType | Schema 类型(点为0,边为1) |
total |
int | Schema的总点数或总边数 |
response = Conn.uql("show().node_schema()")
schemas = response.alias("_nodeSchema").asSchemas()
for schema in schemas:
print(schema.name, "has", schema.total, "nodes")
default has 0 nodes
member has 7 nodes
organization has 19 nodes
Property
Property
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
name |
str | 属性名称 |
description |
str | 属性描述 |
schema |
str | 属性的关联schema |
type |
PropertyTypeStr | 属性数据类型, 默认为 PropertyTypeStr.PROPERTY_STRING |
subTypes |
List[PropertyTypeStr] | 属性数据类型的子类 |
lte |
bool | 属性LTE状态,包括true和false |
response = Conn.uql("show().property()")
properties = response.alias("_nodeProperty").asProperties()
for property in properties:
print(property.name)
title
profile
age
name
logo
Algo
Algo
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
name |
str | 算法名称 |
description |
str | 算法描述 |
version |
str | 算法版本 |
parameters |
dict | 算法参数 |
write_to_file_parameters |
dict | 算法文件回写参数 |
write_to_db_parameters |
dict | 算法属性回写 parameters |
result_opt |
str | 该代码定义了算法支持的执行方法。 |
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
Exta是由用户开发的自定义算法。
Exta
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
name |
str | Exta名称 |
author |
str | Exta作者 |
version |
str | Exta版本 |
detail |
str | Exta的YML配置文件内容 |
response = Conn.uql("show().exta()")
extas = response.alias("_extaList").asExtas()
print(extas[0].name)
page_rank
Index
Index
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
name |
str | 索引名称 |
properties |
str | 索引属性名称 |
schema |
str | 索引的schema名称 |
status |
str | 索引状态,包括done和creating |
size |
str | 索引大小,单位为字节 |
DBType |
DBType | 索引类型,包括DBNODE和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
Privilege
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
systemPrivileges |
List[str] | 系统权限 |
graphPrivileges |
List[str] | 图权限 |
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
Policy
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
name |
str | 策略名称 |
systemPrivileges |
List[str] | 策略中的系统权限 |
graphPrivileges |
dict | 策略中的图权限和对应图集 |
propertyPrivileges |
dict | 策略中的属性权限 |
policies |
List[str] | 策略中的策略 |
response = Conn.uql("show().policy()")
policyList = response.alias("_policy").asPolicies()
for policy in policyList:
print(policy.name)
manager
operator
User
User
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
username |
str | 用户名 |
create |
str | 用户创建时间 |
systemPrivileges |
List[str] | 授予用户的系统权限 |
graphPrivileges |
dict | 授予用户的图权限和对应图集 |
propertyPrivileges |
dict | 授予用户的属性权限 |
policies |
List[str] | P授予用户的策略 |
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
Stats
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
cpuUsage |
str | CPU使用百分比 |
memUsage |
str | 内存使用,单位为兆字节 |
expiredDate |
str | 许可证过期时间 |
cpuCores |
str | CPU核数 |
company |
str | 公司名称 |
serverType |
str | 服务器类型 |
version |
str | 服务器版本 |
response = Conn.uql("stats()")
stats = response.get(0).asStats()
print("CPU usage (%):", stats.cpuUsage)
print("Memory usage:", stats.memUsage)
CPU usage (%): 5.415697
Memory usage: 9292.265625
Process
Process
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
processId |
String | 进程ID |
processUql |
String | 与进程一起运行的UQL |
status |
String | 进程状态 |
duration |
String | 任务已运行时长,单位为秒 |
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
Task
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Task_info |
Task_info | 任务信息包括task_id , algo_name , start_time , writing_start_time , end_time 等 |
param |
dict | 算法参数和对应值 |
result |
dict | 算法结果和统计数据及对应值 |
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
Table
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
name |
str | 表格名称 |
headers |
List[dict] | 表头 |
rows |
List[List] | 表格行 |
作用在Table
对象上的方法:
方法 |
返回值 |
描述 |
---|---|---|
headerToDicts() |
List[Dict] | 将表的所有行转换成键值列表 |
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("2nd row in table:", rows[1])
2nd row in table: {'n._id': 'u604510', 'n._uuid': 2}
Attr
Attr
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
name |
str | Attr名称 |
values |
任意 | Attr行 |
type |
ResultType |
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]