无法使用批量上传功能将三元组批量上传到 virtuoso graph

Cannot bulk upload triples to virtuoso graph using the bulk upload functions

我正在尝试使用此处提到的批量上传功能将三元组上传到 Virtuoso:https://github.com/dbpedia/dbpedia-docs/wiki/Loading-Data-Virtuoso。有时批量上传有效,有时无效。

这就是我所做的(我在 CentOS 机器上工作):

已下载/安装 Virtuoso(最新版本)

通过指定默认 virtuoso.ini 文件在端口 8890 上启动 Virtuoso:

virtuoso -f virtuoso.ini

启动了自带的iSQL解释器:

./isql 1111

加载批量上传功能(例如可以在这里找到:https://github.com/mysema/rdfbean/blob/master/rdfbean-virtuoso/doc/rdfloader.sql):

LOAD rdfloader.sql

已上传第一个三重文件 (~500 Mb):

ld_dir('/path/to/dir1','*.gz','http://graph.1.com');
rdf_loader_run();

(我们称该交易为 1,它运作良好)

试图将另一个文件加载到另一个图表

ld_dir('/path/to/dir2','*.gz','http://graph.2.com');
rdf_loader_run();

(我们称该交易为 2)

它没有工作,即使 Virtuoso 日志文件没有指向错误的来源,SQL table 交易事件被写入到(DB.DBA.LOAD_LIST) 提到第 16061 行有问题:

37000 SP029: TURTLE RDF loader, line 16061: syntax error processed pending to here.

我相应地更正了文件,在 iSQL 解释器中输入了与事务 2 几乎相同的命令:

ld_dir('/path/to/dir2','*.gz','http://graph.3.com');
rdf_loader_run();

(我们称该交易为 3)

现在什么也没有发生。 DB.DBA.LOAD_LIST 甚至不包含该新交易。它只包含事务 1 和 2。

有没有人知道引擎盖下发生了什么以及为什么这里没有任何反应?

仅供日后参考

当批量上传操作发生错误时,您需要清除DB.DBA.LOAD_LIST table 才能继续。

private static final String clearBulkLoadTbl = "DELETE FROM DB.DBA.load_list";

private void clearBulkLoadHistory() throws SQLException {
    PreparedStatement clearBulkLoadTblStmt;
    clearBulkLoadTblStmt = virt_conn.prepareStatement(clearBulkLoadTbl);                        
    clearBulkLoadTblStmt.executeUpdate();
}

希望对大家有所帮助。