File tree Expand file tree Collapse file tree
core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/impl
testsuites/sparql/src/main/java/org/eclipse/rdf4j/testsuite/sparql/tests Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2828import org .eclipse .rdf4j .query .Dataset ;
2929import org .eclipse .rdf4j .query .MutableBindingSet ;
3030import org .eclipse .rdf4j .query .QueryEvaluationException ;
31+ import org .eclipse .rdf4j .query .algebra .BindingSetAssignment ;
3132import org .eclipse .rdf4j .query .algebra .ExtensionElem ;
3233import org .eclipse .rdf4j .query .algebra .Group ;
3334import org .eclipse .rdf4j .query .algebra .MultiProjection ;
@@ -307,6 +308,19 @@ public void meet(ExtensionElem node) throws QueryEvaluationException {
307308 super .meet (node );
308309 }
309310
311+ @ Override
312+ public void meet (BindingSetAssignment node ) throws QueryEvaluationException {
313+ Set <String > bindingNames = node .getBindingNames ();
314+
315+ Set <String > collect = bindingNames .stream ()
316+ .map (varName -> varNames .computeIfAbsent (varName , k -> k ))
317+ .collect (Collectors .toSet ());
318+
319+ node .setBindingNames (collect );
320+
321+ super .meet (node );
322+ }
323+
310324 @ Override
311325 public void meet (Group node ) throws QueryEvaluationException {
312326 List <String > collect = node .getGroupBindingNames ()
@@ -316,6 +330,7 @@ public void meet(Group node) throws QueryEvaluationException {
316330 node .setGroupBindingNames (collect );
317331 super .meet (node );
318332 }
333+
319334 };
320335 node .visit (queryModelVisitorBase );
321336 return varNames .keySet ().toArray (new String [0 ]);
Original file line number Diff line number Diff line change 3333import org .eclipse .rdf4j .query .QueryResults ;
3434import org .eclipse .rdf4j .query .TupleQuery ;
3535import org .eclipse .rdf4j .query .TupleQueryResult ;
36+ import org .eclipse .rdf4j .query .Update ;
3637import org .eclipse .rdf4j .rio .RDFFormat ;
3738import org .eclipse .rdf4j .testsuite .sparql .AbstractComplianceTest ;
3839import org .junit .Test ;
4142 * Tests on SPARQL VALUES clauses.
4243 *
4344 * @author Jeen Broekstra
44- *
4545 */
4646public class ValuesTest extends AbstractComplianceTest {
4747
@@ -204,4 +204,21 @@ public void testFilterExistsExternalValuesClause() {
204204 assertEquals ("single result expected" , 1 , result .size ());
205205 assertEquals ("http://subj1" , result .get (0 ).getValue ("s" ).stringValue ());
206206 }
207+
208+ @ Test
209+ public void testMultipleValuesClauses () {
210+ Update update = conn .prepareUpdate ("PREFIX ex: <http://example.org/>\n " +
211+ "\n " +
212+ "INSERT DATA { ex:sub ex:somePred \" value\" . };\n " +
213+ "\n " +
214+ "INSERT { ?s ?newPred ?newObj }\n " +
215+ "WHERE {\n " +
216+ " # If one combines these into a single VALUES clause then it also works\n " +
217+ " VALUES ?newPred { ex:somePred2 }\n " +
218+ " VALUES ?newObj { \" value2\" }\n " +
219+ " ?s ex:somePred [] .\n " +
220+ "}" );
221+ update .execute ();
222+ }
223+
207224}
You can’t perform that action at this time.
0 commit comments