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

本文主要是介绍论文注解《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数据库灵活性更强,但是在线计算的能力必然更弱。当图中的节点数多到必须分布式存储时,针对子图分割和最短路径的传统算法就完全没有什么卵用,因此必须涉及到概率性的层面。很多语言在功能和架构完善后都会引入正则表达式,正则语法应当是对原有功能的汇总表示。

这篇关于论文注解《Query Languages for Graph Databases》graph数据库查询语法(III)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/623851

相关文章

SpringBoot利用@Validated注解优雅实现参数校验

《SpringBoot利用@Validated注解优雅实现参数校验》在开发Web应用时,用户输入的合法性校验是保障系统稳定性的基础,​SpringBoot的@Validated注解提供了一种更优雅的解... 目录​一、为什么需要参数校验二、Validated 的核心用法​1. 基础校验2. php分组校验3

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Spring Security方法级安全控制@PreAuthorize注解的灵活运用小结

《SpringSecurity方法级安全控制@PreAuthorize注解的灵活运用小结》本文将带着大家讲解@PreAuthorize注解的核心原理、SpEL表达式机制,并通过的示例代码演示如... 目录1. 前言2. @PreAuthorize 注解简介3. @PreAuthorize 核心原理解析拦截与

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处