生成.sparql文件以备份rdf图

时间:2016-09-08 13:12:46

标签: sparql rdf virtuoso

有没有办法使用SPARQL将所有RDF图从三元组(Virtuoso)转储到包含所有.sparql查询的INSERT文件以重建图形?

mysqldump命令一样?

2 个答案:

答案 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 websitedocumentation包含此信息。

您没有获得.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,雇用我。)