本文由学者Lei Zou, M. Tamer Özsu, Lei Chen, Xuchuan Shen, Ruizhe Huang & Dongyan Zhao于2014/08/01在《The VLDB Journal 》联合发表
原文下载链接文末自取

给定SPARQL查询Q,先将其编码为查询签名图Q*。然后,在G*上找到Q的匹配。最后,验证是否每个在G*上的Q*匹配也是Q相对于G的匹配。在VS*-tree中自上而下查找匹配项,基本查询处理算法1如下:

首先,在VS
-tree中找到G1上的Q*2匹配并插入队列H,得出其摘要匹配并压入队列H。从H弹出摘要匹配并将其扩展到其子状态(子状态=自身做笛卡尔积运算)。从H迭代弹出摘要匹配项,重复此过程直到叶节点。最后,在VS*-tree的叶结点上找到Q*的匹配。

基本BVS-Query算法通过减少Q中每个查询顶点的候选项,而不是改进在非叶子级别查找摘要匹配项,改进算法称为VS*-Query(即算法2)。给定Q中的顶点vi,节点di ∈GI)VS*-tree不能匹配vi,当且仅当下列条件之一成立:

使用了算法2优化了VS*-tree中的引入,使用算法3找到了Q*的匹配项:

T-index
T-index是实体化视图的结构化组织,用于处理聚合的SPARQL查询。对于RDF图G中的每个实体顶点u,将聚合与u相邻的所有不同属性形成事务。频率排序会导致插入的节点更少。如果多个维度具有相同的频率,则顺序任意定义。两种关联的数据结构:维度列表DL和实体化MS(O)。维度列表DL记录事务数据库中的所有维度。将节点引入T-index时,根据节点维度,在DL中将节点注册相应维度。 DL中的维数按频率降序排列。每个节点O具有一个集合集MS(O)。根据O.L可找到到达该节点的路径部分所代表的所有事务。 MS(O)是一组三元组,基于维度上的共享值分组事务。 T-index有两个重要结果:

  • T-index中的非叶节点O具有n个子节点Oi,如果到达至少一个Oi的路径是A的前缀,则到达节点O的路径也是A的前缀;
  • T-index的结构不依赖于向该结构中插入事务的顺序。

根据与其子节点关联的聚合集计算聚合集MS(O),基于后遍历的算法实现算法7(如下)中T-index的MS(O)。
首先,扫描DB后导出DB及其频率中所有维度的列表,并构造维度列表DL。然后,将DB的所有事务逐个插入T-index。

汇总查询处理
将GA查询Q分解为多个SA查询Si,使用星聚集查询计算每个Si(R( Si))。 然后结合R(Si)计算Q的结果。

星聚合查询处理

给定SA查询S,通过算法4使用T-index应答S:

一般汇总查询处理
计算所有R(Si),计算最终结果R(Q)= oni R(Si):

J是连接子图,所有实体顶点通过链接属性连接。 对于每个R(Si),找到顶点列表Li。Ti中的所有顶点都是vi的候选匹配顶点。要计算R(Q),需找到RDF图上J的所有子图匹配项,子图匹配定义如下:

链接结构J具有查询签名图Q*的结构,由于J中的每个星心vi对应于SPARQL查询图Q中的实体顶点,J中的边是两个实体顶点之间的边。给定聚合查询,将其查询模式图表示为Q,将Q编码为签名查询图Q*。对于Q*中的每个顶点vi,使用算法2中的第1-15行找到候选列表C(vi),使用算法3在RDF图G上找到J的匹配。为了提高性能,使用星聚合查询结果R(Si)对子图匹配分区,有利于减少I / O访问。扫描T-index中的聚合集要需顺序访问。R(Si)根据与查询Q中每个顶点vi相关的分组维对子图匹配进行分区,再使用R(Si)查找最终分区(过程省略)。

链接属性聚合
按组维度对应特征属性边,允许对应于链接属性边的分组维度,如汇总查询Q5:
处理链接属性聚合查询的方案
将其设置为维度列表DL中的最后一个元素,使其始终对应于T索引中的叶节点。
对于GA查询,所有分组依据维度都是特征属性边,通过算法5应答:

维护索引结构更新gStore的数据,所以对邻接表的更新主要是维护G*、VS*-tree和T-index,即如下内容:

  • 签名图G\∗的更新
    两种情况:插入三元组和删除三元组。
    插入三元组:新三元组<s,p,o>插入RDF数据集。如果s在插入前存在于G*中,则将从G*中删除顶点s及其所有相邻边。然后重新编码顶点,并重新将s及邻边插入G*。
    删除三元组:从RDF数据集删除三元组<s,p,o>,s对应实体顶点或类顶点。如果o是实体或类顶点,则遵循上述方法,删除一个三元组。如果o是一个文字,则需重新编码,而G*结构不变。从VS*-tree中删除s,并将重新编码的s插入到树;如果o是实体或类顶点,则首先重新编码s。然后,删除G*中s和o间的边。删除了VS*-tree中的s,并根据更新的G*的结构将重新编码的s插入到树。
  • 更新VS*-tree
    • 插入:顶点u的插入从VS*-tree的根开始,并迭代选择一个子节点,直到可以插入u的叶节点,VS*-tree的叶结点摘要图也会更新。如果u在另一个叶节点中的另一个端点附近有一条边,则将超边设为d,或者更新与该超级边相关的边签名。如果叶签名和叶摘要图已更改,则在VS*-tree中向上传播。S树中的选择取决于u签名与树中节点之间的汉明距离。在VS*-tree中,修改插入规则使位置取决于节点签名和G*结构。选择一个节点使两个顶点签名的更新和新引入的超边数量最小。插入顶点u后,叶节点和与其相邻的超边签名会更新,更改必须在VS*-tree内向上传播,还可根据G*中与u的邻边更新与叶节点相邻的超边。
    • 拆分:节点的B+1个实体被划分为两个新节点。采用节点分裂方法,从B+1实体中确定两个新节点,每次迭代从B+1中选择两个实体作为子节点。每对B+1个实体,并保留导致Max(α,β)最小值的实体对。
    • 删除:从VS*-tree中删除顶点u,需找到存储u的叶节点d,然后删除u。采用自下而上更新节点的签名和相关超边。删除后,如果某个节点d的条目少于b,则删除d并将其条目重新插入VS*-tree。
  • 更新T-index:所有维度在DL中降序排列,提高SA查询性能。根据DL中维度顺序是否变化,考虑两种情况的T-index更新。
    • 维度列表DL顺序不变:考虑新三元组<s,p,o>,如果p是链接属性,则不需更新T-index。如果在现有RDF数据中未出现s,则引入a将新事务插入D,将新事务插入T-index的一个路径。
    • 维度列表DL顺序改变:某些三元组删除和插入会改变DL中维度顺序。由于插入或删除三元组<s,p,o>,需在DL中交换二维pi和pj。更新分两阶段:首先,忽略DL中的顺序改变。其次,在DL中交换pi和pj,并修改T-index的结构和相关实例化集。

余下部分是实验评估内容,不再赘述。

原文下载链接

gStore:A Graph-based SPARQL Query Engine---part2相关推荐

  1. 关于jena-fuseki SPARQL query版本问题的解决方案

    我自己搭建了博客,以后可能不太在CSDN上发博文了,https://www.qingdujun.com/ . 在做"Apache jena SPARQL endpoint及推理"时 ...

  2. 【论文笔记】Revisiting graph based collaborative Filtering:一种线性残差图图卷积网络方法

    Revisiting Graph based Collaborative Filtering:A Linear Residual Graph Convolutional Network Approac ...

  3. 论文阅读:A Novel Graph based Trajectory Predictor with Pseudo Oracle

    A Novel Graph based Trajectory Predictor with Pseudo Oracle 摘要 1 引言 2 相关工作 3 PROPOSED METHOD IV. EXP ...

  4. Bipartite Graph Based Multi-View Clustering

    Bipartite Graph Based Multi-View Clustering 基于二部图的多视图聚类 abstract 对于基于图的多视图聚类,一个关键问题是通过两阶段学习方案捕获共识聚类结 ...

  5. Graph Based SLAM 基本原理

    ©作者 | Alex 01 引言 SLAM 基本框架大致分为两大类:基于概率的方法如 EKF, UKF, particle filters 和基于图的方法 .基于图的方法本质上是种优化方法,一个以最小 ...

  6. gStore:A Graph-based SPARQL Query Engine---part1

    本文由学者Lei Zou, M. Tamer Özsu, Lei Chen, Xuchuan Shen, Ruizhe Huang & Dongyan Zhao于2014/08/01在< ...

  7. 【论文笔记】Revisiting Graph based Collaborative Filtering: A Linear Residual Graph Convolutional Network

    LR-GCCF 1. Abstract 2. Introduction 3. LR-GCCF 3.1 模型总体结构(Overall Structure of the Proposed Model) 3 ...

  8. Behavior Language Processing with Graph based Feature Generation for Fraud Detectionin OnlineLending

    节点的度描述了与这个信息节点相连的申请节点的个数,也遵循幂律.以公司为例的话就是大规模的公司例如顶尖保险公司和主要的物流公司通常与大量的贷款申请相关联. 全局欺诈传播的传播算法是度相关的,有大的度的节 ...

  9. Behavior Language Processing with Graph based Feature Generation for Fraud DetectioninOnline Lending

    欺诈检测存在很多挑战:信用相关特征的稀疏性,例如社会保险,工作认证,然而这些对于目标人群来说都是稀疏的.数据的速率.种类和容量.设备的行为数据在容量和维度上有爆炸性的增长,而且行为数据对说明一个人的金 ...

最新文章

  1. 多线程使用SO_REUSEPORT来实现多个socket监听同一个端口
  2. 计算机mooc操作测试视频,计算机基础课MOOC视频的制作方法.doc
  3. 利用CSS、JavaScript及Ajax实现图片预加载的三大方法
  4. 关于外键,再唠叨一下下
  5. xp的guest访问
  6. 微服务在微信的架构实践
  7. 用data.table语句批量处理变量
  8. Android支付实践(三)之银联支付功能(客户端+服务端)
  9. 阿里巴巴P3C java编程规范(最新版github下载)
  10. swing打地鼠游戏_幼儿园里的室内徒手游戏(二)
  11. 2018年春季学期《软件工程》班级讨论群中开放性问题群聊记录
  12. 华为智慧屏V55升级鸿蒙2,华为智慧屏s55和v55对比参数_华为智慧屏s55和v55哪个好...
  13. 网络表示学习(Graph Embedding)简述
  14. Python 爬虫实战(1)
  15. Windows 文件夹修改为exe的原理和解决办法
  16. Doxygen+Graphviz生成函数调用流程图
  17. 如何下载jdk源码、hotspot源码
  18. 微信公众号会替代手机APP吗?
  19. VSS 2005 安装,配置简明手册 及VSS2005下载地址
  20. CSP202012-5 星际旅行(满分代码)

热门文章

  1. 给女朋友写的h5(移动端)小游戏,超简单
  2. 13.0_[Java 面向接口]-类和接口
  3. pytorch测试报错:RuntimeError: cuda runtime error (10) : invalid device ordinal at torch/csrc/cuda/Module
  4. Cannot locate the chosen ObjectFactory implementation: spring - [unknown locati
  5. show processlist 命令详解
  6. Django 学习记录
  7. QT ui界面设置总结
  8. 注重医院患者院后随访提高医疗质量
  9. Raspberry Pi OS_ Raspbian安装教程
  10. 苹果基带坏了怎么办_iPhone8/8plus无服务怎么办?