概述
嬴图系统中,一个schema代表一类点或边。Schema是图结构的一部分,必须先定义schema,才能插入点或边数据。每个点或边仅属于一个schema。
UQL使用运算符@
指代一个schema。使用表达式@<schema>
过滤指定的schema,如@Account
。
UQL中的schema等同于GQL中的标签。
默认schema
每个图集都带有内置的点schema和边schema,均命名为default。您可自由使用这两个schema,但无法将其删除,也无法修改其名称和描述。
显示schema
获取当前图集的schema信息:
// 显示所有schema
show().schema()
// 显示所有点schema
show().node_schema()
// 显示指定的点schema
show().node_schema(@user)
// 显示所有边schema
show().edge_schema()
// 显示指定的边schema
show().edge_schema(@transfers)
Schema信息展示在不同表格中:
- 点schema:表
_nodeSchema
展示所有点schema信息,表_nodeSchema_shard_N
展示分区N
中的点schema信息。 - 边schema:表
_edgeSchema
展示所有边schema信息,表_edgeSchema_shard_N
展示分区N
中的边schema信息。
表中各字段提供了每个schema的基础信息:
字段 |
描述 |
---|---|
id |
Schema的ID |
name |
Schema名称 |
description |
对schema的描述 |
status |
Schema的当前状态,仅支持CREATED |
properties |
Schema的自定义属性,其中每个属性包含以下字段:name ,id ,type ,description ,index ,fulltext ,nullable 和lte |
另有表_graphCount
,展示了各schema下的点边总数。例如:
type | schema | from_schema | to_schema | count |
---|---|---|---|---|
total_nodes | 304 | |||
node | account | 120 | ||
node | movie | 184 | ||
total_edges | 956 | |||
edge | rate | account | movie | 568 |
edge | follow | account | account | 388 |
total_nodes
对应的count
是所有点schema下的点总数。- 每个
node
schema对应的count
是该schema下的点总数。 total_edges
对应的count
是所有所有边schema下的边总数。- 每个
edge
schema对应的count
是该schema下的边总数,即从一个from_schema
点连接到一个to_schema
点的总边数。
创建schema
使用单个create()
语句可创建一或多个schema。串联使用node_schema()
或edge_schema()
方法可指定每个schema。
create()
.node_schema("<schemaName>", "<schemaDesc?>")
.edge_schema("<schemaName>", "<schemaDesc?>")
...
方法 | 参数 | 描述 |
---|---|---|
node_schema() 或edge_schema() |
<schemaName> |
Schema名称。命名规范如下:
|
<schemaDesc?> |
可选。对schema的描述 |
创建一个点schema:
create().node_schema("user", "Self-registeration")
创建一个边schema:
create().edge_schema("likes")
创建多个schema:
create()
.node_schema("user", "Self-registeration")
.node_schema("movie")
.edge_schema("likes")
修改schema名称和描述
使用语句alter().node_schema().set()
或alter().edge_schema().set()
修改schema名称和描述。无法修改两个默认schema。
修改点schema@user
的名称和描述:
alter().node_schema(@user).set({name: "User", description: "club users"})
修改边schema@join
的名称并删除其描述:
alter().edge_schema(@join).set({name: "joins", description: ""})
修改点schema@account
的名称:
alter().node_schema(@account).set({name: "user"})
修改边schema@link
的描述:
alter().edge_schema(@link).set({description: "the link between people and event"})
删除schema
使用单个drop()
语句可以删除一或多个schema。串联使用node_schema()
或edge_schema()
方法可指定每个schema。Schema删除操作以作业形式进行,稍后可使用show().job(<id?>)
确认删除操作是否完成。
删除schema时,会同时从数据库删除该schema下的点或边。请注意,删除点时,与其相连的边也会同时删除。无法删除两个默认schema。
删除点schema@user
:
drop().node_schema(@user)
删除边schema@likes
:
drop().edge_schema(@likes)
删除多个schema:
drop().node_schema(@user).edge_schema(@likes)