我需要知道RDB2RDF工具之间的区别。 谁能告诉我RDB2RDF工具的优缺点是什么?特别是对于以下那些:Virtuoso,Ultrawrap,Ontop,Morph,Xsparql,D2RQ,....
有两种W3C标准化方法可以将关系数据转换为RDF:
- 直接映射 — 不可自定义的默认映射。直接映射适用于关系数据规范化良好、有主键、外键等的情况。
- 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 数据转换
- 将 JSON 工作表作为至少一个三元组的对象