3.4 开源工具实践
3.4.1 三元组数据库Apache Jena
1.开源工具简介
Apache Jena 是 Apache 顶级项目,其前身为惠普实验室开发的 Jena 工具包。Jena 是语义 Web 领域主要的开源框架和 RDF 三元组库,较好地遵循 W3C 标准,其功能包括:RDF数据管理、RDFS和OWL本体管理、SPARQL查询处理等。Jena具备一套原生存储引擎,可对 RDF 三元组进行基于磁盘或内存的存储管理;同时具有一套基于规则的推理引擎,用于执行RDFS和OWL本体推理任务。本实践相关工具、实验数据及操作说明由OpenKG提供,地址为http://openkg.cn。
2.开源工具的技术架构
Apache Jena框架如图3-42所示。自底向上看,Jena的存储API为上层提供基本三元组存储和本体存储功能,支持的底层存储类型包括:基于内存的存储、基于关系数据库的SDB存储、基于原生三元组的TDB存储和用户定制的存储。推理API为上层提供本体推理服务,可以使用Jena内置基于规则的推理机进行RDFS和OWL本体上的推理任务,或者选择通过接口调用第三方外部推理机。Jena对外界应用程序的API包括实现基本三元组管理功能的RDF API、实现RDFS和OWL本体推理功能的本体API和实现查询处理功能的SPARQL API。Java应用程序代码可以通过导入类库的形式直接调用这些API。Jena还提供了支持各种 RDF 三元组格式的解析器和编写器,支持的三元组格式包括:RDF/XML、Turtle、N-Triple和RDFa。
图3-42 Apache Jena框架
实质上,Jena 是一个 Java 框架类库。在一般情况下,上述功能需要在 Java 程序中进行调用。Jena为了用户使用方便,提供了一个名为Fuseki的独立RDF数据库Web应用程序。本实践将使用Fuseki作为认识知识图谱数据库的入门工具。
Fuseki 是基于 Jena 的 SPARQL 服务器,可以作为独立的服务由命令行启动,也可以作为操作系统服务或Java Web应用程序。Fuseki底层存储基于TDB,具有SPARQL查询处理的 Web 用户界面,同时提供服务器监控和管理功能界面。Fuseki 支持最新的SPARQL 1.1版本,同时支持SPARQL图存储HTTP协议。
本实践包括:Jena Fuseki 的安装,启动 Fusek,生成知识图谱数据,将知识图谱装载到Fuseki,查询知识图谱,更新知识图谱。
访问OpenKG可以获取使用实例和整体配置细节。
3.其他类似工具
RDF4J是Eclipse基金会旗下的开源孵化项目,其前身是荷兰软件公司Aduna开发的Sesame 框架,其功能包括:RDF 数据的解析、存储、推理和查询等。RDF4J 提供内存和磁盘两种RDF存储机制,支持SPARQL 1.1查询和更新语言。
gStore是由北京大学开发的基于图的RDF三元组数据库。
AllegroGraph是Franz公司开发的RDF三元组数据库。AllegroGraph对语义推理功能具有较为完善的支持。除了三元组数据库的基本功能,AllegroGraph 还支持动态物化的RDFS++推理机、OWL2 RL推理机、Prolog规则推理系统、时空推理机制、社会网络分析库、可视化RDF图浏览器等。
GraphDB是由Ontotext软件公司开发的RDF三元组数据库。GraphDB实现了RDF4J框架的SAIL层,可以使用RDF4J的RDF模型、解析器和查询引擎直接访问GraphDB。GraphDB的特色是对于RDF推理功能的良好支持。
3.4.2 面向RDF的三元组数据库gStore
1.开源工具简介
gStore 是由北京大学计算机科学技术研究所数据管理实验室自2011年开始研发的面向RDF知识图谱的开源图数据库系统,遵循Apache开源协议。不同于传统基于关系数据库的RDF数据管理方法,gStore原生基于图数据模型,在存储RDF数据时维持并根据其图结构构建了基于二进制位图索引的新型索引结构——VS 树。本实践相关工具、实验数据及操作说明由OpenKG提供,下载链接为http://openkg.cn/tool/gstore。
2.开源工具的技术架构
如图3-43所示为gStore的整体处理流程,gStore的RDF数据管理可分为两部分:离线数据存储和在线查询处理。
图3-43 gStore的整体处理流程
在离线数据存储阶段,gStore 将 RDF 数据解析成图格式并以邻接表的方式存储在键值数据库上。同时,gStore 将 RDF 数据上的所有点和边通过二进制编码的方式编码成若干位图索引,并将这些位图索引组织成VS树。
在在线查询处理阶段,gStore也将SPARQL查询解析成查询图。然后,gStore按照对RDF 数据图的编码方式,将 SPARQL 查询图进行编码以形成一个标签图,并在 VS 树和RDF数据图的邻接表上进行检索以得到每个查询变量的候选匹配。最后,gStore将所有查询变量的候选匹配连接成最终匹配。
目前,gStore只能在Linux系统上通过Shell命令编译、安装与运行。同时,gStore官网还提供了gStore Workbench,方便用户操作RDF数据库。具体包括:
(1)环境配置。Linux 中编译、安装与运行 gStore 需要预安装一些 C++库,包括readline、curl和boost等。
可以从OpenKG网站或gStore官网上下载gStore源代码,然后通过make来编译得到gStore运行程序。
同时,通过OpenKG网站或gStore官网可以下载gStore Workbench,进行编译安装后可以得到gStore Workbench。
(2)数据导入。gStore目前支持NT格式的RDF数据,利用gStore安装路径下bin目录中gbuild或者gStore Workbench中的数据库管理页面导入数据。
gStore Workbench中的数据库管理页面还记录目前gStore包括的数据库统计信息。
(3)查询处理。gStore目前完全支持SPARQL 1.0查询语法,利用gStore安装路径下bin目录中gquery或者gStore Workbench中的图数据库查询页面,就可以输入查询然后得到结果。
gStore 同时还提供 HTTP 接口,可以利用 gStore 安装路径下 bin 目录中 ghttp 启动HTTP服务,进而接收其他机器远程通过HTTP发来的SPARQL查询请求。
访问OpenKG网站可以获取使用实例和整体配置细节。
3.其他类似工具
Jena的前身是惠普实验室(HP Labs)2000年开发的工具包。Jena从发布起就一直是语义Web领域最为流行的开源Java框架和RDF数据库之一,并始终遵循W3C标准,其提供的API功能包括:RDF数据管理、RDFS和OWL本体管理、SPARQL查询处理。针对 RDF 数据,Jena 维护了一张大的三元组表和三种属性表,包括单值属性表、多值属性表和属性类表。
Virtuoso 是 OpenLink 公司开发的知识图谱管理系统,有免费的社区版和收费的商业版。Virtuoso是可以支持包括RDF在内的多种数据模型的混合数据库管理系统。其基础源自开发了多年的传统关系数据库管理系统,因此具备较为完善的事务管理、并发控制和完整性机制。