论文注解《Query Languages for Graph Databases》graph数据库查询语法(III)

聚合

  • 聚合运算,例如: count,sum,min,max
    Figure 3... 这里写图片描述
    Figure 4... 这里写图片描述
  • GraphLog 中,聚合项可以是可区分的边或节点的标签,一个简单的 count 查询如 Figure 3 所示:对于每个作者 x ,计算其获y奖的次数。
    ans(x,count(y))(x,hasWon,y)
  • 找出每个点对间的最短路径需要计算出沿路径各段的最小距离,再汇总(基本也就是Floyd算法),如 Figure 4 所示。查询中的变量 d 是聚集变量,sum是汇总功能, min 用于聚合汇总的距离。当汇总和聚合的操作是闭半环时,查询时间复杂度是 PTIME 。查询 Q 可悲转化为以下Datalog程序:
    len(x,x,x,0)dist(x,y,l)
    len(x,x,x,0)dist(y,x,l)
    len(x,z,y,d)sp(x,z,s),dist(z,y,l),d=s+l
    sp(x,y,min(d))len(x,z,y,d)
    谓词 len(x,z,y,d) 说明有一条长度为 d=s+l 的路径从 x 经过z y x z 的最短路径为s z y的最短路径为 l

近似匹配和排名

  • 设一条正则路径查询Q如公式 (3) ,运用正则表达式 r 。近似匹配可通过把编辑操作应用到L(r)来实现。可能的编辑操作包括符号的插入、删除、置换、移项、倒置。
  • x,yΣ ,从 x y的编辑操作被模型化为一个基于 Σ 的二元关系 ,以至于 xy 当且仅当存在 u,vΣ,a,bΣ,ab 。例如:
    x=uav,y=ubv()
    x=uav,y=uv()
    x=uv,y=ubv()
    k 代表执行 k 操作。 de(x,y) 代表 x k y 所需最小的 k
  • 每个操作的开销可能都不一样。通常来说,对于不同实例,相同操作的开销也不一定相同。
  • 假定近似值由加权正则转换器的方法指定,这种转换器能用一个基于三元组(a,k,b)的正则表达式来表示( a 能被b k 开销替换)。加权转换器 T=(ST,Σ,σT,S0T,FT):有穷状态集合 ST 、输入/输出字符集 Σ 、初始状态集合 S0T 、终止状态集合 FT 、转换关系 σTST×ΣN×Σ×ST 。转换 (s,a,k,b,t) 表示当转换器处于状态 s 读入符号a,输出符号 b 消耗k并转到状态 t
  • 从查询Q的正则表达式 r 中构造一个NFA Mr 并将 G 也作为一个NFA。得到乘积自动机 Mr×T×G (a,b,k)ansT(Q,G) 当且仅当从初始状态 (_,_,a) 到终止状态 (_,_,b) 的最短路径开销为 k 。在一种更简单的设定里,近似值由编辑操作引起,所有开销均为1,且转换器 T 只有一个状态s实现从 s s的标签 ε
    (a,1,ε),aΣ()
    (ε,1,a),aΣ()
    (a,1,b),a,bΣ,ab()

表达能力和计算复杂性

  • 我们将查询语句分类为:联合查询( CQ )、正则路径查询( RPQ )、联合路径查询( CRPQ )、扩展联合路径查询( ECRPQ )。设 FQ 为一阶逻辑,可得到
    CQFO
    RPQCRPQECRPQ

    具有传递闭包(用 FO+TC 来表示)的一阶逻辑语言,用形如公式 TC=(λx¯,y¯ϕ(x¯,y¯)) 扩展了一阶逻辑: x¯ y¯ k 元组,ϕ(x¯,y¯) FO+TC 中的公式且决定了 k 元组的二元关系。TC=(λx¯,y¯ϕ(x¯,y¯))决定了 ϕ 的传递闭包。
  • 在一个线性 Datalog 程序中,每一条规则都最多只有一个递归子目标。在一个分层 Datalog 程序中,否定谓词的使用是有层次的。

总结

  • 总的来说这是篇概述性的论文,主要铺述了各类graph数据库的查询语言,主要着重于几个功能性的层面。尽管很多语言的特性和概念已经成为学术研究的主题,但对于graph查询语言来说工作则着力于建立一个完整且一致的框架。近似查询和图的转换也值得更多研究。

个人感悟

  • graph数据库可以说是传统关系型数据库的一个特化版本,即更专注于一元|二元关系的表达。 RDF 的形式为主语 谓词 宾语,相较于 schema 化的graph数据库灵活性更强,但是在线计算的能力必然更弱。当图中的节点数多到必须分布式存储时,针对子图分割和最短路径的传统算法就完全没有什么卵用,因此必须涉及到概率性的层面。很多语言在功能和架构完善后都会引入正则表达式,正则语法应当是对原有功能的汇总表示。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值