4.3 面向结构化数据的知识抽取
垂直领域的知识往往来源于支撑企业业务系统的关系数据库,因此,从数据库这种结构化数据中抽取知识也是一类重要的知识抽取方法。在该领域,已经有一些标准和工具支持将数据库数据转化为RDF数据、OWL本体等。W3C的RDB2RDF工作组于2012年发布了两个推荐的 RDB2RDF 映射语言:DM(Direct Mapping,直接映射)和 R2RML。DM 和 R2ML 映射语言用于定义关系数据库中的数据如何转换为 RDF 数据的各种规则,具体包括URI的生成、RDF类和属性的定义、空节点的处理、数据间关联关系的表达等。
4.3.1 直接映射
直接映射规范定义了一个从关系数据库到 RDF 图数据的简单转换,为定义和比较更复杂的转换提供了基础。它也可用于实现 RDF图或定义虚拟图,可以通过 SPARQL查询或通过RDF图API访问。直接映射将关系数据库表结构和数据直接转换为RDF图,关系数据库的数据结构直接反映在RDF图中。直接映射的基本规则包括:
●数据库中的表映射为RDF类;
●数据库中表的列映射为RDF属性;
●数据库表中每一行映射为一个资源或实体,创建IRI;
●数据库表中每个单元格的值映射为一个文字值(Literal Value);如果单元格的值对应一个外键,则将其替换为外键值指向的资源或实体的IRI。
下面给出一个简单的例子,解释直接映射的基本思路。首先,假设通过 SQL 语句创建图4-21中的两个数据库表。
创建数据库表的SQL语句如下:
图4-21 数据库表
基于直接映射标准,上述两个表可以输出如下的RDF数据:
在直接映射过程中,数据库表中的每一行(例如 People 表中的<7,“Bob”,18>)产生了一组具有共同主语(subject)的三元组。主语是由 IRI 前缀和表名(People)、主键列名(ID)、主键值(7)串联而成的 IRI。每列的谓词是由 IRI 前缀和表名、列名连接形成的IRI。这些值是从列值的词汇形式形成的RDF文字。每个外键都会生成一个三元组,其谓词由外键列名、引用表和引用的列名组成。这些三元组的宾语是被引用三元组的行标识符(例如<Addresses / ID = 18>)。直接映射不会为NULL值生成三元组。
4.3.2 R2RML
R2RML映射语言是一种用于表示从关系数据库到RDF数据集的自定义映射的语言。这种映射提供了在 RDF 数据模型下查看现有关系型数据的能力,并且可以基于用户自定义的结构和目标词汇表示原有的关系型数据。在数据库的直接映射中,生成的 RDF 图的结构直接反映了数据库的结构,目标 RDF 词汇直接反映数据库模式元素的名称,结构和目标词汇都不能改变。然而,通过使用 R2RML,用户可以在关系数据上灵活定制视图。每个 R2RML 映射都针对特定的数据库模式和目标词汇量身定制。R2RML 映射的输入是符合该模式的关系数据库,输出是采用目标词汇表中谓词和类型描述的RDF数据集。
R2RML 映射是通过逻辑表(Logic Tables)从数据库中检索数据的。一个逻辑表可以是数据库中的一个表、视图或有效的 SQL 语句查询。每个逻辑表通过三元组映射(Triples Map)映射至RDF数据,而三元组映射是可以将逻辑表中每一行映射为若干RDF三元组的规则。“逻辑表”突破了关系数据库表的物理结构的限制,为不改变数据库原有的结构而灵活地按需生成RDF数据奠定了基础。
三元组映射的规则主要包括两个部分,一个主语映射和多个谓词-宾语映射。主语映射从逻辑表生成所有 RDF 三元组中的主语,通常使用基于数据库表中的主键生成的 IRI表示。谓词-宾语映射则包含了谓词映射和宾语映射,其过程与主语映射相似。
图4-22中给出了一个示例数据库,其包含两个表,分别是雇用表和部门表。
图4-22 示例数据库
将上述数据库映射为RDF数据,期望的输出结果如下:
为了生成期望的输出结果,可以基于R2RML定义如下所示的映射文档:
在上述例子中,为了将图4-22中的DEPT表中数据转换为RDF数据,可以基于SQL语句查询定义一个R2RML视图,然后基于该视图定义R2RML映射文档。
用于创建R2RML视图的SQL语句如下所示。
用于DEPT表数据转换的R2RML映射文档如下所示。
此外,为了生成谓词ex:department的三元组,需要将EMP和DEPT表进行连接,可以通过定义下面的映射实现。
4.3.3 相关工具
目前,有许多工具支持以访问知识图谱的形式直接访问关系数据库,可以直接使用SPARQL 语句查询数据库中的信息;这类工具也常被称为基于本体的数据库访问(Ontology Based Database Access,OBDA)系统。这里介绍几种重要的OBDA系统,表4-3列出了这些系统的主要特性。
表4-3 OBDA系统的主要特性对比
(1)D2RQ[22] 。D2RQ是较早开发和发布的OBDA系统,它可以将关系数据库以RDF形式发布,其平台框架如图4-23所示。其中,D2R Server是一个HTTP Server,主要功能提供对 RDF 数据的查询访问接口,供上层的 RDF 浏览器、SPARQL 查询客户端以及HTML 浏览器调用。D2R Server 使用了一种可定制的 D2RQ 映射文件将关系数据库内容映射为RDF格式,与本章前面介绍的映射语言十分相似。基于D2RQ映射,Web 端的请求被重写为 SQL 查询,这种即时转换允许从大型实时数据库发布 RDF,而无须将数据复制到专用的RDF三元组存储中。此外,D2RQ系统还部分支持R2RML映射。
(2)Mastro[23] 。Mastro 是一个基于Java 语言开发的OBDA系统,系统中的本体使用属于 DL-Lite 轻量级描述逻辑系列的语言定义,通过数据库和本体元素之间的映射,用户可以通过SPARQL查询数据库。图4-24展示了Mastro的系统结构,其系统核心包含一个推理机,提供本体分类、一致性检查、推理和查询问答功能。Mastro数据源管理器支持与最流行的商业和非商业 DBMS 的交互。除此之外,还为 Oracle、DB2、SQLServer、MySQL和PostgreSQL提供支持。
图4-23 D2RQ平台框架[22]
图4-24 Mastro系统结构[23]
(3)Ultrawrap[24] 。Ultrawrap 是一个商业化系统,其系统结构如图4-25所示,主要包含编译器和服务器两部分。其中,编译器负责建立数据库到 RDF 和 OWL 的映射;服务器负责在数据库上执行SPARQL查询。Ultrawrap在执行SPARQL查询时可以获得与SQL语句查询相同的速度,它支持 R2RML 和 D2RQ 映射,并为用户提供图形界面个性化定制映射。
图4-25 Ultrawrap系统结构
(4)Morph-RDB[25] 。Morph-RDB 是由马德里理工大学本体工程组开发的 RDB2RDF引擎,遵循 R2RML 规范。Morph-RDB 支持两种操作模式:数据升级(从关系数据库中的数据生成 RDF 实例)和查询转换(SPARQL 到 SQL)。Morph-RDB 采用各种优化技术来生成高效的 SQL 查询,例如自连接消除和子查询消除。目前,Morph-RDB 支持MySQL、PostgreSQL、H2、CSV文件和MonetDB等数据源。
(5)Ontop[26] 。Ontop是一个将关系数据库作为虚拟的RDF图进行SPARQL查询的工具。Ontop由Bozen-Bolzano自由大学开发,是基于Apache许可证的开源工具。通过将本体中的词汇(类和属性)通过映射链接到数据源,Ontop 系统将关系数据库转换为虚拟的RDF 图。Ontop 支持 R2RML 映射,它可以将 SPARQL 查询翻译为关系数据库中的 SQL查询,从而实现在数据库上的SPARQL查询。图4-26展示的是Ontop的系统结构,可以分为四个不同的层次:输入层,包括本体、数据库、映射和查询等;Ontop 核心层负责查询翻译、优化和执行;API 层向用户提供标准的 Java 接口;应用层允许终端用户执行SPARQL查询的应用程序。
图4-26 Ontop的系统结构[26]