有两种 W3C 标准化方法可以将关系数据转换为 RDF:
-
直接映射— 不可定制的默认映射。直接映射适用于关系数据标准化良好、有主键、外键等的情况。
-
R2RML— 可定制的映射。
在下面的调查中,我仅考虑 R2RML 实现。
许多 R2RML 实现是此处列出。我不考虑以下工具:
- dead,
- paid,
- 需要编程,
- 全栈(即声称替换您已经使用的所有软件),
- 仅在包装器模式下工作,not在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
Remarks
-
cli-0.5-jar-with-dependencies.jar
— 命令行 jar.
最好使用 0.5 版本,在后者中您将收到“前缀不能为空”。
结论
使用中间翻译成XQuery,非常慢。
ONTOP
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
Remarks
- 在MySQL中,你必须设置
SET GLOBAL SQL_MODE-ANSI_QUOTES;
结论
Ontop 设计用于处理本体,并生成许多本体垃圾,例如... rdf:type owl:namedIndividual
.
Ontop 尝试解析并重写 SQL 查询rr:sqlQuery
,不理解许多 SQL 结构,并诚实地建议您在关系数据库中创建适当的 SQL 视图。
R2RML 支持是partial. Ontop R2RML 手册。真的很快。
RDB2RDF::R2RML
我无法安装这个 Perl 模块:CPAN 上缺少许多依赖项。
D2RQ
D2RQ 是一种全栈解决方案,但是可以从 D2RQ 发行版中提取独立工具。
R2RML 支持预览版 only.
D2RQ 提供了自己的映射语言(顺便说一下,还有 Ontop)。
结论
据我所知,D2RQ 将您的 SQL 查询从rr:sqlQuery
分成许多“原子”查询并一一提取数据库记录,这确实很慢。
D2RQ R2RML 手册.
结论
我个人的选择是“On Top”。
也可以看看:
- RDB2RDF实施报告
- RDB 到 RDF 翻译的调查
方法和工具