RDB2RDF工具的优缺点是什么?



我需要知道RDB2RDF工具之间的区别。 谁能告诉我RDB2RDF工具的优缺点是什么?特别是对于以下那些:Virtuoso,Ultrawrap,Ontop,Morph,Xsparql,D2RQ,....

有两种W3C标准化方法可以将关系数据转换为RDF:

  1. 直接映射 — 不可自定义的默认映射。直接映射适用于关系数据规范化良好、有主键、外键等的情况。
  2. R2RML — 可自定义的映射。

在下面的调查中,我只考虑R2RML实现。

此处列出了许多 R2RML 实现。我不认为以下工具:

  • 支付
  • 需要编程,
  • 全栈(即声称替换您已经使用的所有软件(,
  • 仅在包装模式下工作,而不是在 ETL 模式下工作。

XSPARQL

语法示例

java -jar cli-0.5-jar-with-dependencies.jar -h
java -server -jar -Dfile.encoding=utf-8 cli-0.5-jar-with-dependencies.jar --mysql --dbName=mydb --dbServer=127.0.0.1 --dbUser=root --r2rml=r2rml.ttl > result.ttl

言论

  • cli-0.5-jar-with-dependencies.jar— 命令行 jar.
    Version 0.5 更可取,您将在后者中收到"前缀不能为空"。

结论

使用XQuery的中间翻译,非常慢。

在顶部

Ontop 是一个流行的 Protégé 插件,但也可作为一组命令行实用程序使用。

语法示例

ontop materialize --url "jdbc:mysql://localhost:3306/mydb" --mapping "../r2rml.ttl" --username root --password "65536" --driver-class com.mysql.jdbc.Driver --disable-reasoning --format turtle --output result.ttl

言论

  • 在MySQL中,您必须设置SET GLOBAL SQL_MODE-ANSI_QUOTES;

结论

Ontop 是为处理本体而设计的,并生成许多本体垃圾,如... rdf:type owl:namedIndividual.

Ontop 尝试从rr:sqlQuery解析和重写 SQL 查询,不理解许多 SQL 结构,并诚实地建议您在关系数据库中创建适当的 SQL 视图。

R2RML 支持是部分的。顶部 R2RML 手册。真的很快。

RDB2RDF::R2RML

我无法安装这个Perl模块:CPAN上缺少许多依赖项。

D2RQ

D2RQ 是一个全栈解决方案,但是可以从 D2RQ 发行版中提取独立工具。

R2RML 仅在预览版中受支持。

D2RQ提供了自己的映射语言(顺便说一下,还有Ontop(。

结论

我记得,D2RQ 将 SQL 查询从rr:sqlQuery划分为许多"原子"查询,并逐个提取数据库记录,这真的很慢。

D2RQ R2RML 手册。

结论

我个人的选择是Ontop。

另请参阅:

  • RDB2RDF实施报告
  • RDB到RDF转换的调查 方法和工具

我没有像@Stanislav Kralin那样严格地考虑过这个问题,也没有在性能、优雅、表现力等方面定义我的期望。

越来越多的三元组在关系数据和语义三元组之间提供了自己的桥梁。 我特别想到Stardog和GraphDB。 我相信Stardog(和Virtuoso的?(解决方案实际上并没有具体地抛弃三元组。 相反,它们创建一个或多个表的虚拟语义视图。

D2R是我使用的第一个实例化器。 我很惊讶@Stanislav Kralin包含了它,因为它有点死了(或未维护(,它确实需要编程(或用声明性语言写出语句(。 我不知道 R2RML 预览... 我必须检查一下,因为我担心使用他们的专有语言。

我相信我的一些学术同事使用参考R2RML解析器

我对ISI的业力非常满意。 实例化表格/关系数据是我研究的重要组成部分,我当然发现了一些难以实现的边缘情况,例如链接多个单例实例。

  • 文档很好
  • 安装简单
  • 有一个不错的 Web GUI,以及一个命令行批量转换脚本

Karma不仅仅使用纯粹的R2RML:

  • 他们使用 R2RML
    • 将 JSON 工作表作为至少一个三元组的对象
      • 在 JSON 中使用 Python 数据转换

最新更新