修改密码

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

v5.0
搜索
    v5.0

      路径模式

      概述

      路径模式用于匹配图中的路径,由三个连续部分组成:

      <path pattern> ::=
        [ <path variable declaration> ] [ <path pattern prefix> ] <path pattern expression>
      

      路径模式表达式

      路径模式表达式是路径模式的核心,用来指定构成路径的点和边的实际序列,该路径(1)以点开始和结束(2)点、边交替出现。路径可由单个点组成。

      路径模式表达式可以是单个路径项路径模式并集,或路径多重集合交替;后面两项组合了多个路径项。

      <path pattern expression> ::=
        <path term> | <path pattern union> | <path multiset alternation>
      

      路径项

      路径项包含单个元素模式、元素模式连接、带括号的路径模式和量化路径模式,并遵循路径的拓扑规则。

      <path term> ::= <path factor> [ <path factor>... ]
          
      <path factor> ::=
        <element pattern> | <parenthesized path pattern> | <quantified path pattern>
      

      1. 元素模式

      元素模式可通过递归方式连接以构建路径。

      以下路径模式从Brainy出发,通过标签为Joins的出边,连接到标签为Club的点,并使用p作为路径变量:

      p = (:User {name: 'Brainy'})-[:Joins]->(:Club)
      

      通过不断连接点模式和边模式,可以创建更为复杂的路径模式。这条较长的路径模式描述了Brainymochaeach均加入了一些俱乐部,这些代表俱乐部的点与变量c绑定:

      (:User {name: 'Brainy'})-[:Joins]->(c:Club)<-[:Joins]-(:User {name: 'mochaeach'})
      

      这条路径模式再次使用了变量a,用来组成起始点相同的环形结构:

      (a:Account)-[:Owns]->(:Card)-[:Transfers]->(:Card)-[:Transfers]->(:Card)<-[:Owns]-(a)
      

      当两个点模式前后出现时,它们会绑定到同一个点,并共用所有过滤条件。在本例中,u1u2自动合并为(u1|u2:User {name: "Claire"})(此处的联合运算符|仅用于说明):

      (u1:User)(u2 {name: "claire"})-[:Follows]-(u3)
      

      点模式的并列目前仅支持量化路径模式

      从理论上说,两个连续的边模式间存在一个空的点模式。在本例中,边模式自动扩展为(:User)-[]-()-[]-(u)

      (:User)-[]--[]-(u)
      

      在路径表达式里,不可将右侧带有减号的标记(]-<--)与左侧带有减号的标记(-[->-)并列放置,因为这种组合会引入注释符号--。详情请参考注释.

      2. 带括号的路径模式

      将子路径或完整路径置于一对匹配的括号()里,即可形成一个带括号的路径模式:

      <parenthesized path pattern> ::=
        "(" [ <path mode prefix> ]
            <path pattern expression>
            [ <parenthesized path pattern where clause> ] ")"
      

      带括号的路径模式目前仅可与量词一起使用,形成量化路径模式

      3. 量化路径模式

      量词可以附加在边模式或带括号的路径模式上,形成量化路径模式,从而构建长度可变的路径。

      路径模式并集&路径多重集合交替

      <path pattern union> ::=
        <path term> "|" <path term> [ { "|" <path term> }... ]
        
      <path multiset alternation> ::=
        <path term> "|+|" <path term> [ { "|+|" <path term> }... ]
      

      路径模式并集使用竖线|合并路径项,绑定到同一变量的记录会合并,重复项会删除。

      MATCH (:Club {code: "C01"})<-[:Joins]-(u:User) | (:Club {code: "C02"})<-[:Joins]-(u:User)
      RETURN COLLECT_LIST(u.name) AS names
      

      结果:

      names
      ["rowlock", "lionbower", "mochaeach"]

      路径多重集合交替使用多重集合交替运算符|+|合并路径项,绑定到同一变量的记录会合并,重复项会保留。

      MATCH (:Club {code: "C01"})<-[:Joins]-(u:User) |+| (:Club {code: "C02"})<-[:Joins]-(u:User)
      RETURN COLLECT_LIST(u.name) AS names
      

      结果:

      names
      ["rowlock", "lionbower", "lionbower", "mochaeach"]

      路径模式并集和路径多重集合交替中的每个路径项只能引用在该路径项中声明的元素变量。例如,以下查询会引发语法错误:

      MATCH (:Club {code: "C01"})<-[]-(a) | 
            (:Club {code: "C02"})<-[]-(b WHERE a.name = b.name)
      RETURN a, b
      

      路径模式前缀

      路径模式前缀共有两种:路径模式类型前缀路径搜索前缀,可用于限制或选择匹配结果。

      <path pattern prefix> ::= <path mode prefix> | <path search prefix>
      
      <path mode prefix> ::= "TRAIL" | "SIMPLE" | "ACYCLIC" | "WALK"
      
      <path search prefix> ::= <all path> | <any path> | <shortest path>
      
      <all path> ::= "ALL" [ <path mode> ]
      
      <any path> ::= "ANY" [ <non negative integer> ] [ <path mode> ]
      
      <shortest path> ::=
          "ALL SHORTEST" [ <path mode prefix> ]
        | "ANY SHORTEST" [ <path mode prefix> ]
        | "SHORTEST" <non negative integer> [ <path mode prefix> ] 
        | "SHORTEST" [ <non negative integer> ] [ <path mode prefix> ] < "GROUP" | "GROUPS" >
      

      路径模式类型前缀

      路径模式类型前缀(或限制符)控制路径的遍历方式,以及是否可以重复访问点或边。限制符可放在路径模式表达式的开头,或者带括号的路径模式的开头。

      限制符
      描述
      TRAIL 默认路径模式类型。包含重复边的路径不会被返回
      ACYCLIC 包含重复点的路径不会被返回
      SIMPLE 包含重复点的路径不会被返回,除非重复点为起点和终点
      WALK 没有限制

      暂不支持限制符ACYCLICSIMPLEWALK

      路径搜索前缀

      路径搜索前缀(或选择器)从每个分区[1]中选择一个有限的匹配集。选择器只能放在路径模式表达式的开头。

      选择器
      描述
      ALL 默认搜索设置;没有筛选条件
      ANY 从每个分区中选择一条路径;非确定性选择
      ANY k 从每个分区中选择k[2]条路径;非确定性选择
      ALL SHORTEST 从每个分区中选择所有最短路径
      SHORTEST k 从每个分区中选择k条最短路径;非确定性选择
      SHORTEST k GROUP 根据路径长度对路径分组,升序排列结果,再从每个分区中选择前k个组中的所有路径;确定性选择

      [1] 使用不同的起始点组合对路径模式匹配到的路径进行概念上的分区。
      [2] k为非负整数。若路径数少于k,将保留全部路径。若未设定k,取其默认值1。

      了解更多有关最短选择器的信息,请参阅最短路径。使用最短选择器时,路径模式类型将被强制设定为TRAIL

      暂不支持选择器ANYANY k。暂不支持显式使用ALL

      组合使用

      在路径模式中可以使用限制符或选择器,也可以同时使用两者。限制符在模式匹配中生效,而选择器在匹配之后生效。

      本条查询返回任意一条以card点C01为起点的非环路径,经过1到3条出边Transfers抵达另一个card点:

      MATCH p = ANY ACYCLIC (c:Card {_id: 'C01'})-[:Transfers]->{1,3}(:Card)
      RETURN p
      

      该路径模式表达式最多可以匹配到5条路径。首先,包含重复点C02的路径被限制符ACYCLIC移除。随后,选择器ANY从每个分区中随机选择一条路径。最终,该查询语句共返回三条路径。

      路径变量

      使用运算符=在路径模式表达式的开头声明路径变量。路径变量值表示一组绑定的边。

      路径变量p绑定由标签为Follows的出边连接任意两个点的路径:

      MATCH p = ()-[:Follows]->()
      RETURN p
      

      路径变量仅可在图模型里声明一次。以下查询会引发语法错误:

      MATCH p = ()-[:Follows]->(), p = ()-[:Purchases]->()
      RETURN p
      
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写