この質問も私を燃やしました。オブジェクトとオブジェクトUpdateRequest
からを作成したかったのです。これは、Query を構築するために使用される 2 つの主要なクラスです。例えば:ElementGroup
ElementTriplesBlock
ElementGroup queryPattern = ...
ElementTriplesBlock constructTriples = ...
Query query = new Query();
query.setQueryConstructType();
// set CONSTRUCT clause
query.setConstructTemplate(new Template(constructTriples.getPattern()));
// set WHERE clause
query.setQueryPattern(queryPattern);
Jenaメーリングリストを試してみたところ、次の回答が得られました。
更新 API は、無制限に大きな無制限の INSERT および DELETE データのストリーミングを処理するように設計されているため、更新の INSERT/DELETE 部分には Element ではなく QuadAcc を使用します。
最終的に、ParametrizedSparqlString
次を使用してこれを実装しました。
ElementGroup queryPattern = ...
ElementTriplesBlock deleteTriples = ...
ElementTriplesBlock insertTriples = ...
ParameterizedSparqlString qstring = new ParameterizedSparqlString();
// Set DELETE clause
qstring.append("DELETE {");
qstring.append(deleteTriples.toString());
qstring.append("}");
// Set INSERT clause
qstring.append("INSERT {");
qstring.append(insertTriples.toString());
qstring.append("}");
// Set WHERE clause
qstring.append("WHERE {");
qstring.append(queryPattern.toString());
qstring.append("}");
// Construct an update query
UpdateRequest request = qstring.asUpdate();