有没有办法使用SPARQL将所有RDF图从三元组(Virtuoso)转储到包含所有.sparql
查询的INSERT
文件以重建图形?
与mysqldump
命令一样?
答案 0 :(得分:0)
RDF数据库本质上是无模式的,这意味着像mysqldump
这样的解决方案并不是必需的:您不需要任何查询来重新创建数据库模式(表结构,约束等),一个简单的数据dump包含重新创建数据库的所有必要信息。
因此,您只需将整个数据库导出为ZF文件,采用N-Quads或TriG格式(您需要使用其中一种格式,因为其他格式,如RDF / XML或Turtle,不保留命名图形信息)
我不确定原生的Virtuoso方法(也许它在客户端UI中有导出/数据转储选项),但由于Virtuoso与Sesame / RDF4J兼容,您可以使用以下代码来以编程方式执行此操作:
Repository rep = ... ; // your Virtuoso repository
File dump = new File("/path/to/file.nq");
try (RepositoryConnection conn = rep.getConnection()) {
conn.export(Rio.createWriter(RDFFormat.NQUADS, new FileOutputStream(dump)));
}
答案 1 :(得分:0)
令人惊讶的是,Virtuoso website和documentation包含此信息。
您没有获得.sparql
文件作为输出,因为RDF始终使用相同的三(或四)“模式”,因此在这样的转储中没有模式定义;只是数据。
转储过程通过iSQL接口运行。
要转储单个图表 - 只需要很多三元组 - 您可以使用the dump_one_graph
stored procedure。
SQL> dump_one_graph ('http://daas.openlinksw.com/data#', './data_', 1000000000);
要转储整个四元组商店(除了Virtuoso内部virtrdf:
之外的所有图表),您可以使用the dump_nquads
stored procedure。
SQL> dump_nquads ('dumps', 1, 10000000, 1);
有many load options;我们通常建议Bulk Load Functions进行完全转储和重新加载。
(ObDisclaimer:OpenLink Software生成Virtuoso,雇用我。)