Как указано в комментариях, блок данных для обновления INSERT DATA
SPARQL внутренне сохраняется как (не разбирается) строка. Если вы хотите обработать его дальше, у вас есть несколько вариантов.
Один из вариантов - просто выполнить обновление, например, для временного / пустого хранилища в памяти, а затем просто извлечь операторы из этого хранилища:
String update = "INSERT DATA { .... }";
Repository tempRep = new SailRepository(new MemoryStore());
tempRep.init();
try(RepositoryConnection conn = tempRep.getConnection()) {
conn.prepareUpdate(update).execute());
Model statements = QueryResults.asModel(conn.getStatements(null, null, null));
}
Другой вариант, который, возможно, является более масштабируемым, состоит в том, чтобы просто извлечь блок данных в виде строки и передать его через анализатор. SPARQLUpdateDataBlockParser
специально существует для этой цели:
InsertData insertDataExpr = (InsertData)updateExpr;
RDFParser parser = new SPARQLUpdateDataBlockParser();
StatementCollector handler = new StatementCollector();
parser.setRDFHandler(handler);
parser.parse(new StringReader(insertDataExpr.getDataBlock()), "");
Collection<Statement> stmts = handler.getStatements();