Virtuoso Native RDF Quad Store和基于Virtuoso SQL的RDF Triple Store之间的区别

时间:2013-07-18 09:17:25

标签: rdf triplestore virtuoso

我目前正在调查Virtuoso,我真的想知道Native RDF Quad Store和基于SQL的RDF Triple Store之间的差异,如本页所示(向下滚动一下以查看图): http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtJenaProvider

我知道Native RDF Quad Store使用传统的关系数据库,但它针对使用SPARQL的更快请求进行了优化。这让我很困惑!因为我想知道SQL Based RDF Triple store现在是什么......

提前致谢!

2 个答案:

答案 0 :(得分:8)

Virtuoso实际上是在他们自己的SQL数据库之上构建的一整套应用程序和服务层,因此是可以理解的混淆。

Native RDF Quad Store是Virtuoso自己的四元组实现,具有讽刺意味的是,你指出它实际上是基于SQL的。这完全在Virtuoso自己的SQL数据库实现中存储和实现。因此,虽然它是基于SQL的,但它具有固定的表格布局,并利用自定义数据类型来存储数据。

基于SQL的RDF三重存储是指Virtuoso的商业版本的一项功能,它允许您定义映射规则以将任意正常关系数据库(基于Virtuoso和其他后端,例如基于MySql,PostgreSQL)视为RDF存储。 / p>

性能差异

性能差异来自于Native Quad商店具有已知的布局,自定义RDF数据类型以及Virtuoso堆栈中特定于其的许多软件优化。因此,当Virtuoso接收SPARQL并将其编译为等效的SQL查询时,它在数据库上运行非常高效。使用自定义RDF数据类型允许他们将所有SPARQL逻辑推送到查询引擎层,这也使评估更快。

对于基于SQL的三重存储,涉及一个映射层,它们必须调用SQL数据库(可能是外部的)并将其内容转换为RDF格式,然后进行必要的计算以回答SPARQL查询。映射步骤可能成本极高,并且使查询更难以优化,因为它们可以访问有关RDF数据的较少前期信息。

另外,由于数据通常只是标准的SQL类型,因此它们无法将某些逻辑推送到底层查询引擎,因为在许多情况下SQL和SPARQL类型语义不对齐。因此,必须提取,适当转换值,然后在查询引擎层之上计算表达式结果,然后根据需要反馈。这会降低性能,因为引擎必须在不同的处理上下文之间切换,并且可能会使许多SQL查询回答相同的SPARQL查询。

答案 1 :(得分:1)

Virtuoso是一个使用SQL RDBMS核心实现的hyrbid(关系表和RDF属性图)数据服务器[1]。只有当有关数据源在Virtuoso外部时,SQL RDBMS关系才是外部的,例如,当使用ODBC或JDBC将外部RDBMS数据库中的表附加到Virtuoso时,作为其虚拟数据库功能的一部分[2]。

[1] http://virtuoso.openlinksw.com/images/virtuoso3arch.gif - Virtuoso技术架构图。

[2] http://docs.openlinksw.com/virtuoso/vdbengine.html - 虚拟数据库引擎