修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

搜索
    中文

      别名系统

      别名的结构类型

      别名,英文是 alias,用来对 UQL 执行过程中产生的数据流进行命名,使其可以被后面的语句调用。

      别名的结构类型有 6 种:

      结构类型
      别名定义举例
      句中别名
      数据结构示例
      NODE n(as nodes).e().n() nodes {id: , uuid: , schema: , values: {...}}
      EDGE n().e({time > prev_e.time})[3].n() prev_e {uuid: , schema: , from: , from_uuid: , to: , to_uuid: , values: {...}}
      PATH n().e().n() as paths paths {nodes: [<NODE>, <NODE>, ...], edges: [<EDGE>, <EDGE>, ...]}
      ATTR uncollect ["Alice","Paal"] as name
      uncollect ["1993-06-12","1989-03-26"] as birthday
      name
      birthday
      无内部结构的原子型数据,如字符串,数字等
      ARRAY n().e()[3].n() as paths
      with pedges(paths) as edgeUUIDs

      edgeUUIDs
      [<ATTR>, <ATTR>, ...]
      TABLE uncollect ["Alice","Paal"] as name
      uncollect ["1993-06-12","1989-03-26"] as birthday
      with table(name, birthday) as record


      record
      {headers: [], table_rows: [<ARRAY>, <ARRAY>, ...]}

      UQL 执行过程中如果有数据流未定义别名,或者定义了别名但未使用,可能会影响语句的合法性。在编写 UQL 语句时请避免遗漏定义别名或定义冗余别名。

      自定义别名

      自定义别名通过别名关键词 as 进行定义。上面表格中出现的 nodespathsnamebirthdayedgeUUIDs 以及 record 都是自定义别名。

      自定义别名是指由开发者定义的别名。一个 UQL 语句中的自定义别名不允许重名,其尽量避免与同一语句中要使用的点或边的属性名重名,若无法避免,必要时可使用系统别名 this 消除歧义。

      • 1 ~ 64 个字符
      • 必须以字母开头
      • 仅允许使用字母,下划线和数字(即 _ 、A-Z、a-z、0-9)
      • 不能与《背景知识》中列出的任何保留字重复

      自定义别名的结构类型:NODE,EDGE,PATH,ATTR,ARRAY,TABLE

      自定义别名的生命周期:别名定义后的任何地方。

      在极个别情况下,自定义别名可能无法被其后相隔较远的语句调用,可通过在 WITH 子句重新定义该别名来解决此问题。

      系统别名

      系统别名是系统默认存在的别名。系统别名有三个,分别是 prev_nprev_ethis,无需定义,可直接使用。

      系统别名 含义 结构类型 生命周期
      this 当前点/边 NODE 或 EDGE 所有过滤器中
      prev_n 当前点/边的前一个点 NODE 基础模板内的过滤器中
      prev_e 当前点/边的前一个边 EDGE 基础模板内的过滤器中

      更多关于 prev_nprev_e 的介绍见《模板查询》。

      在实际应用中,this 的使用相对较少,通常仅用于消除歧义;歧义是指点、边的属性名称和自定义别名重复,此时若要引用当前点、边的属性,则必须使用 this

      ... as balance
      find().nodes({this.balance > 5000})
      

      注:本例中 nodes() 中的 this.balance 表示当前节点的属性 balance;由于其前一句中定义的别名 balance 在当前语句内有效,如果在 nodes() 中直接使用 balance 则会与点属性 balance 的含义相冲突,因此需使用 this

      别名调用

      调用 ATTR,ARRAY 和 TABLE 这三类别名时,将完整的调用其所代表的数据结构。

      调用 NODE,EDGE 和 PATH 这三类别名时,根据调用形式的不同可能会调用整个 JSON 结构,或调用仅含一部分键值的 JSON 结构,或仅调用结构中的某个键值。

      假设别名 nodes、edges、paths 的类型分别为NODE,EDGE 和 PATH,有如下调用形式:

      RETURN 子句中的 NODE、EDGE、PATH 默认携带点、边的 schema 及系统属性(_uuid, _id, _from, _to, _from_uuid, _to_uuid),下表中不再赘述。

      调用形式
      调用类型
      调用途径 含义
      nodes NODE 在任何位置调用 点,不携带任何自定义属性
      nodes.<property> ATTR 在任何位置调用 点的某个属性(该指定属性不存在时,该调用的值为空,下同)
      nodes.@ ATTR 在任何位置调用 点的 schema
      nodes{<property>, ...} NODE 在 RETURN 子句中调用 点,携带若干自定义属性
      nodes{*} NODE 在 RETURN 子句中调用 点,携带全部自定义属性
      edges EDGE 在任何位置调用 边,不携带任何自定义属性
      edges.<property> ATTR 在任何位置调用 边的某个属性
      edges.@ ATTR 在任何位置调用 边的 schema
      edges{<property>, ...} EDGE 在 RETURN 子句中调用 边,携带若干自定义属性
      edges{*} EDGE 在 RETURN 子句中调用 边,携带全部自定义属性
      paths PATH 在任何位置调用 路径,其中的点、边不携带任何自定义属性
      paths{<property>, ...}{<property>, ...} PATH 在 RETURN 子句中调用 路径,其中的点、边各自携带若干自定义属性
      paths{*}{<property>, ...} PATH 在 RETURN 子句中调用 路径,其中的点携带全部自定义属性,边携带若干自定义属性
      paths{<property>, ...}{*} PATH 在 RETURN 子句中调用 路径,其中的点携带若干自定义属性,边携带全部自定义属性
      paths{*} PATH 在 RETURN 子句中调用 路径,其中的点、边携带全部自定义属性

      使用者可以在后续的阅读中逐步理解以上概念。

      更多关于 return 的使用请阅读《数据流、子句》。

      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写