论文注解《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

相关文章

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更