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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

MySQL批量替换数据库字符集的实用方法(附详细代码)

《MySQL批量替换数据库字符集的实用方法(附详细代码)》当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改,下面:本文主要介绍MySQL批量替换数据库字符集的实用方法... 目录前言为什么要批量修改字符集?整体脚本脚本逻辑解析1. 设置目标参数2. 生成修改表默认字符集的语句3

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求: