RDF四元组面向动态图的优势

编者按

2020年5月,在由哥伦比亚大学主办的Knowledge Graph Conference 2020在线会议上,来自Oracle公司的三位研究院做了题为“Modeling Evolving Data in Graphs While Preserving Backward Compatibility: The Power of RDF Quads”的报告。

该报告介绍了RDF四元组作为数据模型具有的可向后兼容的优良特性,以及创建、管理、查询和分析RDF数据的基本方法。

本文作者北京大学庞悦将对该报告进行概要阐述。

文末提供获取PPT获取方式。

 

01

动态图中的向后兼容性和RDF四元组

数据的向后兼容性指的是随着数据的动态演化,旧查询能够保持其有效性的性质。处理数据演化的不同方式决定了数据是否具有向后兼容性。其中一种处理方式是在演化发生时重写数据,如下图:

显然,这种方式无法保证向后兼容性,因为随着重写的发生数据的结构发生了根本的改变。

如何在数据演化的同时保持其结构不变,从而保证向后兼容性呢?本文由此引入了RDF四元组的概念。RDF四元组由图名(graph),主语(subject),谓词(predicate)和宾语(object)构成。相比一般的RDF三元组,它多出了图名这一可选部件,用于对三元组进行命名。每条RDF四元组表示一个事实(fact)。通过命名已有的事实,数据演化产生的新事实可以由已有的事实组合而成,这样就避免了重写,数据的结构得以延续统一性。如下图的第三个事实是由第一个事实(:donation)和第二个事实(:admission)分别作为主语和宾语组合而成,第四个事实的宾语又是第三个事实(:helping):

每个RDF四元组的图名可以附带于谓词上,从而仍然写成三元组的形式,这被称为RDF#语法。下图是一个例子:

在SPARQL查询中,可以采用相同的方式对三元组进行命名,从而表示任意多层嵌套的关系(每一条边都可以成为新边的端点)。如下图左侧查询中的graph语句即是对紧随其后的大括号中的三元组进行命名:

相应地,可以将图名附带于谓词上,称为SPARQL#语法,如下:

在SPARQL更新语言中同样可以使用这种机制来添加或删除以RDF三元组为主语或宾语的三元组:

在本次教程中,使用了Oracle Database19.3演示了动态RDF数据的查询和分析功能。其他提供同种功能的软件包括:Oracle GraphServer and Client 20.1, Oracle Support for Apache Jena 3.1.0, 和Java 11.

02

RDF数据的查询语言SPARQL

主流的图数据模型包括RDF和属性图模型。RDF数据的查询语言为SPARQL系列语言,包括SPARQL 1.1, SPARQL 1.2和SPARQL*。属性图数据的查询语言包括PGQL,G-CORE,Cypher,GQP,GSQL和Gremlin等。

SPARQL的全称是SPARQL协议和RDF查询语言(SPARQL Protocol and RDF Query Language)。它包含以下部件:

  1.  查询语言(Query Language)

    用于对RDF数据进行查询,包含丰富的功能,如可选匹配、聚合函数、嵌套查询、否定式、属性路径、各种内建函数等。

  2. 更新语言(Update)

    用于创建、修改和删除RDF图。

  3. 协议(Protocol)

    用于向SPARQL端点发送查询或更新语句、通过HTTP获取返回结果的协议。

  4. 服务描述(Service Description)

    定义用于描述SPARQL端点所提供的特性的RDF词汇集和机制。

  5. JSON格式的查询结果(Query Results JSON Format)。

  6. CSV和TSV格式的查询结果(Query Results CSV andTSV Format)。

  7. XML格式的查询结果(Query Results XML Format)。

  8. 联合式查询(Federated Query)

    SPARQL的扩展,用于在多个SPARQL端点上分布式执行查询。

  9. 蕴含推理规则(EntailmentRegimes)

    SPARQL的扩展,使得显式三元组逻辑蕴含的隐式三元组也能在查询中被匹配。

  10. 图存储HTTP协议(Graph Store HTTP Protocol)

    SPARQL 1.1 更新语言的简化替代版本,为一系列HTTP操作,可用于管理未存储在SPARQL 1.1图数据库中的RDF图数据。

与属性图的查询语言相比,SPARQL具有更多针对多源数据整合场景的特性,如标准协议、可选匹配、联合式查询和蕴含推理规则。属性图的查询语言则更多地将图视为数据结构,而非三元组或四元组的集合,因此提供更多路径探索和图算法相关的特性,如取顶点度数、求最短路径等。

由于SPARQL对图分析的支持较为有限,Oracle系列产品提供了从RDF图数据中提取等价的属性图,从而在得到的属性图上使用PGQL执行图分析任务的功能。这样就能够在保持向后兼容性的同时,进行较复杂的图分析任务。

03

R2RML:将关系数据转换为RDF数据的映射语言

R2RML由W3C定义,为用于表达从关系数据库到RDF数据集的自定义映射的标准语言。运用R2RML编写映射文件,可以自定义目标RDF数据的词汇集和结构。如此一来,现有的关系数据也可具有向后兼容的优良特性,并可以使用SPARQL进行查询和更新。R2RML映射文件本身是Turtle格式的RDF数据。

构建一个R2RML映射文件至少分为以下步骤(每个步骤构成映射文件的一个部分):

1.    逻辑表(Logical table):

即为将会被转换为RDF数据的对象,它可以是一个基本表,也可以是一个视图、或一个有效的SQL查询。下图中的rr:logicalTable即为用于指定逻辑表的谓词,上下两个框中所指定的逻辑表都是基本表:(rr:为前缀<http://www.w3.org/ns/r2rml#>的缩写,ex:为前缀<http://example.com/ns#>的缩写)

 

2. 三元组映射(Triples map):

将逻辑表的每一行映射到若干RDF三元组的规则,由两部分组成:一个主语映射(Subject map),一般将逻辑表的主关键字(Primary key)映射到一系列IRI;若干个谓词-宾语映射。下面两张图分别给出PERSON表的主语映射和谓词-宾语映射:

在构建宾语映射时,还可以通过对逻辑表进行连接,构造出主体之间的关系,即主语和宾语均为IRI的RDF三元组。此时需要使用谓词rr:parentTriplesMap来指定宾语主体所在的逻辑表,使用谓词rr:joinCondition来指定连接条件,如下图:

在编写R2RML映射文件时,同样可以对生成的三元组进行命名。只需使用谓词rr:graph,即可指定由这一组映射规则生成的三元组将拥有的图名。如由下图映射生成的三元组都将属于名为:moneyMattersGraph的图,从而使:moneyMattersGraph作为整体可以成为后续三元组的主语或宾语:

 

白皮书获取可点击阅读原文,或至链接获取:

https://blogs.oracle.com/oraclespatial/kgc-2020-tutorial3a-modeling-evolving-data-in-graphs-while-preserving-backward-compatibility

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值