Ren*_*eld 2 rdf triplestore virtuoso
我目前正在调查炫技,我真的想知道的区别是原生四核RDF存储和基于RDF三元组存储在SQL之间有什么这个页面(向下滚动有点见图)上,如下所示: HTTP:// virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtJenaProvider
我知道Native RDF Quad Store使用传统的关系数据库,但是它针对使用SPARQL的更快请求进行了优化.这让我很困惑!因为我想知道SQL Based RDF Triple商店现在是什么......
提前致谢!
事实上,Virtuoso是一整套基于他们自己的SQL数据库构建的应用程序和服务层,因此是可以理解的混淆.
Native RDF Quad Store是Virtuoso自己的四元组实现,具有讽刺意味的是,你指出它实际上是基于SQL的.这完全在Virtuoso自己的SQL数据库实现中存储和实现.因此,虽然它是基于SQL的,但它具有固定的表格布局,并利用自定义数据类型来存储数据.
基于SQL的RDF三重存储是指Virtuoso的商业版本的一项功能,它允许您定义映射规则以将任意正常关系数据库(基于Virtuoso和其他后端,例如基于MySql,PostgreSQL)视为RDF存储.
性能差异来自于Native Quad商店具有已知的布局,自定义RDF数据类型以及Virtuoso堆栈中特定于其的许多软件优化.因此,当Virtuoso接收SPARQL并将其编译为等效的SQL查询时,它在数据库上运行非常高效.使用自定义RDF数据类型允许他们将所有SPARQL逻辑推送到查询引擎层,这也使评估更快.
对于基于SQL的三重存储,涉及一个映射层,它们必须调用SQL数据库(可能是外部的)并将其内容转换为RDF形式,然后进行回答SPARQL查询所需的计算.映射步骤可能非常昂贵,并且使查询更难以优化,因为它们可以访问有关RDF数据的较少前期信息.
此外,由于数据通常只是标准的SQL类型,因此它们无法将某些逻辑推送到底层查询引擎,因为在许多情况下SQL和SPARQL类型语义不对齐.因此,必须提取,适当转换值,然后在查询引擎层上方计算表达式结果,然后根据需要反馈.这会降低性能,因为引擎必须在不同的处理上下文之间切换,并且可能会使许多SQL查询回答相同的SPARQL查询.