File tree Expand file tree Collapse file tree 2 files changed +33
-1
lines changed
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 2 files changed +33
-1
lines changed Original file line number Diff line number Diff line change 28
28
import org .eclipse .rdf4j .query .Dataset ;
29
29
import org .eclipse .rdf4j .query .MutableBindingSet ;
30
30
import org .eclipse .rdf4j .query .QueryEvaluationException ;
31
+ import org .eclipse .rdf4j .query .algebra .BindingSetAssignment ;
31
32
import org .eclipse .rdf4j .query .algebra .ExtensionElem ;
32
33
import org .eclipse .rdf4j .query .algebra .Group ;
33
34
import org .eclipse .rdf4j .query .algebra .MultiProjection ;
@@ -307,6 +308,19 @@ public void meet(ExtensionElem node) throws QueryEvaluationException {
307
308
super .meet (node );
308
309
}
309
310
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
+
310
324
@ Override
311
325
public void meet (Group node ) throws QueryEvaluationException {
312
326
List <String > collect = node .getGroupBindingNames ()
@@ -316,6 +330,7 @@ public void meet(Group node) throws QueryEvaluationException {
316
330
node .setGroupBindingNames (collect );
317
331
super .meet (node );
318
332
}
333
+
319
334
};
320
335
node .visit (queryModelVisitorBase );
321
336
return varNames .keySet ().toArray (new String [0 ]);
Original file line number Diff line number Diff line change 33
33
import org .eclipse .rdf4j .query .QueryResults ;
34
34
import org .eclipse .rdf4j .query .TupleQuery ;
35
35
import org .eclipse .rdf4j .query .TupleQueryResult ;
36
+ import org .eclipse .rdf4j .query .Update ;
36
37
import org .eclipse .rdf4j .rio .RDFFormat ;
37
38
import org .eclipse .rdf4j .testsuite .sparql .AbstractComplianceTest ;
38
39
import org .junit .Test ;
41
42
* Tests on SPARQL VALUES clauses.
42
43
*
43
44
* @author Jeen Broekstra
44
- *
45
45
*/
46
46
public class ValuesTest extends AbstractComplianceTest {
47
47
@@ -204,4 +204,21 @@ public void testFilterExistsExternalValuesClause() {
204
204
assertEquals ("single result expected" , 1 , result .size ());
205
205
assertEquals ("http://subj1" , result .get (0 ).getValue ("s" ).stringValue ());
206
206
}
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
+
207
224
}
You can’t perform that action at this time.
0 commit comments