基于多种转换语义的图数据库查询

1. 摘要

因为图数据库的复杂模式和不同的信息描写叙述方式,对于非专业用户来说查询复杂的图数据库是异常困难的。

一个好的图查询引擎应该支持多种转化——同义词、缩略词、简写以及本体等等,而且应该可以对搜索结果进行一个非常好地排序。

基于此问题本文提出了一种新型的查询框架来方便用户查询,解放了为构造查询图而抓耳挠腮的用户群。

2. 应用背景

2.1 应用

图数据库也是一种流行的数据存储方式。如知识图、信息网络以及社交网络等应用的数据都存储在图数据库中。由于图数据的无模式或者模式太复杂以及信息的多种描写叙述方式使得基于图数据的查询变得很困难。对于一般用户来说更是望之却步。

图2-1 a为图数据库中的一部分,若查询大约30岁而且跟“Universityof California Berkley”以及“Mission:Impssible”相关的演员。易得图2-1中绿色与黄色部分均为比較好的结果。图2-1 b为一个可以表达查询语义的查询,可是现有的图数据库查询仅仅能查询到绿色的部分或者一个都查不到。

原因在于结点的信息都不匹配。而原有查询又不支持语义转换或者仅仅支持一种转化。

图2-1 图数据库G

该文解决的问题能够描写叙述为:给定一个查询Q以及数据库G,找出图数据库中全部由Q经转换函数能够转化的图。

2.2 抽象定义

给定一个查询Q、一个图数据库G以及一系列转化函数L,求跟Q匹配的最好的k个子图。当中转化函数L包含表2-1中全部的转化。

表2-1 本文支持的转化函数

注:本文的方法能够轻松地增加其他转化函数来满足不同的需求

3 已有方法

Spark查询仅仅需用户输入keyword就可以,而无需输入复杂的图结点关系就能得到查询结果。但其仅仅能提取字符串相似匹配,通过改动能够使其支持其他转换。

NeMa支持图结构和字符串相似度匹配(Jaccard)。

4 本文的方法

4.1 离线操作

4.1.1 度量函数

下述公式中v表示结点,e表示边,φ(·)表示匹配,比如φ(v)表示图数据库G中与查询图v中匹配的结点。若v能够经过第i个转换函数变为φ(v),则fi(v,φ(v)) = 1。反之φ(v) = 0。

结点匹配代价:

边匹配代价:

图匹配函数:

且易得图匹配函数P的值越小,与Q匹配的图φ(Q)的质量越高,即查询结果应该为P值最小的k个子图。

4.1.2 參数确定

令W={α1, α2, … ; β1, β2},则

当中T表示训练集。

4.1.3 冷启动

令启动的目的在于怎样生成好的查询训练集,从而能够得到好的匹配函数的參数。冷启动步骤:

(1) 从图数据库中随机选择一些子图作为查询模板Q’;

(2) 将查询模板中的一些结点和边用转换函数进行转化得到查询Q。

(3) 提取和Q精确匹配的子图Qe

(4) (Q, Q’)与(Q, Qe)组成训练集。

4.2 在线查询

一般的图查询均属于NP-hard问题,其能够归约为子图同构问题,从而证明该问题是NP-hard的。

因此本文设计了两个启示式用于求解该问题。

4.2.1 启示式1

将图匹配的代价累加到一个结点上,则每一个结点的匹配得分能够代表包含该节点在内的图匹配代价。

每一个结点计算公式:

当中mji(t)(ui)表示第t次迭代uj结点对节点ui匹配贡献的得分。

该公式的直观理解參考图4-1。当中a、b中左边均表示数据库,右边表示查询图。

图4-1 启示式1的直观意义

4.2.2 启示式2

利用启示式1进行计算时须要计算大量的结点。由结点匹配代价计算公式可得。对于随意的查询结点v经过同样的转换函数匹配代价同样。基于此将经过同一个结点转换的结点浓缩为一个结点计算,则能够有效降低结点得分的计算个数。由浓缩结点组成的图成为概要图。若查询图中两个结点之间存在边,则连接概要图中相应的结点,而与图数据库无关。当中,边的匹配代价为图数据库中全部这类边的匹配代价的上界。

基于这样的发现问题的求解步骤为:

(1) 构造概要图;

(2) 在概要图上利用启示式1计算;

(3) 利用概要图中计算出的结果求原图中与之相应子图的得分。

循环运行直到找到k个结果。

以上为我对论文Schemaless and Structureless Graph Querying-vldb2014的个人理解。当然当中仅仅介绍了论文中的主要内容。具体的解说请查看论文解说的ppt,地址http://download.csdn.net/detail/woniu317/7391539

时间: 2024-10-17 20:27:24

基于多种转换语义的图数据库查询的相关文章

Django Mysql数据库-基于双下划线的跨表查询

一.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接模型(model)间关联字段的名称,直到最终链接到你想要的 model 为止.(相当于用sql语句用join连接的方式,可以在settings里面设置,可查看sql语句) 数据库模型: class Book(models.Model): nid = models.AutoField(primary_key=Tru

基于py3和pymysql的数据库查询,查询某几列的数据

#python3 #xiaodeng #基于py3和pymysql的数据库查询,查询某几列的数据 import pymysql conn=pymysql.connect(....) cur=conn.cursor() cur.execute("select name,age from nlist") data=cur.fethall() for name,age in data: print name,age conn.close() cur.close()

《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件

<万能数据库查询分析器>实现使用SQL语句直接高效地访问文本文件 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要    用SQL语句来直接访问文本文件?是在做梦吗? 本文详细地介绍了"万能数据库查询分析器",中文版本<DB 查询分析器>.英文版本<DB Query Analyzer>在 文本文件处理方面非常强大的功能,你可以直接用SQL语句来访问这些文本文件,访问250万条记录的文件的复杂的关联操作,也不过用时59秒钟.需要注意

十三年磨一剑,万能数据库查询分析器7.023版本 发布

中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本<DB 查询分析器>.英文版本<DB Query Analyzer>.它具有强大的功能.友好的操作界面.良好的操作性.跨越各种数据库平台乃至于EXCEL和文本文件. DB 查询分析器在中关村在线 下载量超过12万 次,位居整个数据库类排行榜中前10位. 在<程序员>2007第2期的"新产品&工具点评"部分,编辑

Google Cayley图数据库使用方法

最近在用Golang做流程引擎,对于流程图的存储,我看到了Google的Cayley图数据库,感觉它可能会比较适合我的应用,于是便拿来用了用. 项目地址在这里:https://github.com/google/cayley 系统环境 : Windows 7 1. 安装 安装的过程项目文档里写的很明白,有两种安装方式: 直接下载二进制版本.解压到你喜欢的位置. 从源码安装,遵照项目文档一步一步来即可. 2. 使用 安装完成之后,你会看到一个[cayley.exe]的文件,它就是我们要用的程序了.

Neo4j图数据库应用开发之一:Neo4j Java 工具包

1 应用开发概述 基于数据传输效率以及接口自定义等特殊性需求,我们暂时放弃使用Neo4j服务器版本,而是在Neo4j嵌入式版本的基础上进行一些封装性的开发.封装的重点,是解决Neo4j嵌入式版本EmbeddedGraphDatabase中不能同时创建多个实例指向同一个数据库的问题.如果开发人员使用Neo4j嵌入式版本作为数据库,要想实现多个程序共享一个数据库,这将是一个不可回避的问题.本手册给出的解决方案是“构建一个中间服务层,提供各种接口方法,指向同一个数据库实例:其他客户端程序通过中间服务层

转载 50种方法优化SQL Server数据库查询

原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷

转:图数据库Neo4J的介绍

,图数据库Neo4J的介绍:http://www.neo4j.org/learn/neo4jNeo4J是个开源的图数据,很好用,轻便灵活,嵌入式,功能强大,而且相关资料比较齐全.按照Neo4J官方网站公布,该数据库可以支持数十亿的节点数:massively scalable, up to several billion nodes/relationships/properties而且支持分布式部署,Master,Slave.对Neo4J的性能和可用性的介绍:http://video.neo4j.

图数据库Neo4j在GIS系统的应用

1. 概述 1.1. 图数据库简介 图数据库(Graph Database)是基于图论实现的一种新型的NoSQL数据库.他的数据存储结构和数据的查询方式都是以图论为基础的,图论中图的基本元素为节点和边,在图数据库中对应的就是节点和关系. 在图数据库中,数据与数据之间的关系通过节点和关系构成一个图结构并且在此结构上实现数据库的所有特性,如对图数据对象进行创建.读取.更新.删除(Create.Read.Update.Delete,简称CRUD)等操作的能力,还有处理事务的能力和高可用性等. 1.2.