修改密码

请输入密码
请输入密码 请输入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

搜索
    中文

      基础模板

      之前介绍的 AB 路径查询、K 邻查询等可以使用 node_filter()edge_filter() 对路径中的点、边进行过滤,即路径中的所有中介点都须满足相同的条件,边也同理。如果需要对路径中的中介点、边按照各不相同的条件进行过滤,则需使用模板查询。

      基础模板用来对路径中的最小单位(点、边)进行描述与过滤,组装成路径、子图后能精准的匹配应用场景中的查询需求。

      描述点、边的基础模板可分为以下 4 类:

      基础模板 模板类型
      描述
      参数别名结构
      n() 单点 某一个点的过滤条件:
      NODE
      e(), e()[1],
      le(), le()[1],
      re(), re()[1]
      单边 某一条边的过滤条件;边方向分别为忽略、向左或向右(以下同):
      EDGE
      e()[<>],
      le()[<>],
      re()[<>]
      多边 多个连续边的过滤条件:

      其中 [<>] 的格式如下(N ≥ 2):
      [N]: N 条边
      [:N]: 1~N 条边
      [0:N]: 0~N 条边(见下注释)
      [M:N]: M~N 条边
      [*:N]: 1~N 条边的最短路径
      不支持
      e().nf()[<>],
      le().nf()[<>],
      re().nf()[<>]
      多边、中介点 多个连续边、中介点的过滤条件:

      其中 [<>] 的格式同上
      不支持

      注:多边模板长度设置为 [0:N] 时,对于该多边模板的每一个起点,如果 1~N 步有结果,则返回 1~N 步情况下的结果;如果 1~N 步无结果,且多边模板的起点和终点(即多边模板的左、右两侧的单点模板)具有相同的过滤条件,则舍弃多边模板及其右侧的单点模板,此时相当于返回 0 步的结果。

      组装原则

      • 原则 1:按照以点开始、以点结尾、点边交替出现的规则组装路径

      例如,将一条含有 4 个节点、3 条边的路径表示为 n().e().n().e().n().e().n(),可为其中每一个点、边设置独立的过滤条件,且均可定义参数别名:

      n({@product}).le({@view}).n({@customer} as n1)
        .re({@has}).n({@card} as n2)
        .re({@transfer} as e1).n({@card}) as p
      return p{*}, n1{*}, n2{*}, e1{*}
      

      上面路径描述了商品被顾客 n1 浏览、顾客拥有银行卡 n2、银行卡又向其他银行卡转账 e1 的过程。

      • 原则 2:使用多边模板对路径中具有相同过滤条件的连续的边、中介点进行合并

      例如,将一条含有 3 个节点、2 条边的路径表示为 n().e().nf()[2].n(),此时类似 AB 路径查询,需注意多边模板内不可设置参数别名:

      n({@card.level == 1} as n1).re({@transfer}).nf({@card})[2].n({@card.level == 2} as n2) as p
      return p{*}, n1{*}, n2{*}
      

      上面路径描述了从级别为 1 的银行卡 n1 向外进行三步转账路径,最终到达级别为 2 的银行卡 n2 的过程。

      • 原则 3:使用步数范围代替确定的步数来灵活描述路径模式

      例如,将可包含多条不同步数的路径表示为 n().e().n().e()[:10].n()

      n({@customer} as n1).re({@has}).n({@card} as c1)
        .re({@transfer})[:10].n(c1) as p
      return p{*}, n1{*}, c1{*}
      

      上面路径描述了顾客 n1 持有银行卡 c1,并经过不超过 10 步向外转账之后最终回至 c1 卡本身的过程。

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