You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by rvesse <gi...@git.apache.org> on 2018/08/02 09:05:20 UTC
[GitHub] jena pull request #449: JENA-1578
Github user rvesse commented on a diff in the pull request:
https://github.com/apache/jena/pull/449#discussion_r207147377
--- Diff: jena-arq/src/main/java/org/apache/jena/query/ParameterizedSparqlString.java ---
@@ -1734,4 +1739,250 @@ public String toString() {
}
}
+
+ /**
+ * Assign a VALUES varName with a multiple items.<br>
+ * Can be used to assign multiple values to a single variable or single
+ * value to multiple variables (if using a List) in the SPARQL query.<br>
+ * See setGroupedValues to assign multiple values to multiple variables.<br>
+ * Using "var" with list(prop_A, obj_A) on query "VALUES (?p ?o) {?var}"
+ * would produce "VALUES (?p ?o) {(prop_A obj_A)}".
+ *
+ *
+ * @param varName
+ * @param items
+ */
+ public void setValues(String varName, Collection<? extends RDFNode> items) {
+ items.forEach(item -> validateParameterValue(item.asNode()));
+ this.valuesReplacements.put(varName, new ValueReplacement(varName, items));
+ }
+
+ /**
+ * Assign a VALUES varName with a single item.<br>
+ * Using "var" with Literal obj_A on query "VALUES ?o {?var}" would produce
+ * "VALUES ?o {obj_A}".
+ *
+ * @param varName
+ * @param item
+ */
+ public void setValues(String varName, RDFNode item) {
+ setValues(varName, Arrays.asList(item));
+ }
+
+ /**
+ * **
+ * Sets a map of VALUES varNames and their items.<br>
+ * Can be used to assign multiple values to a single variable or single
+ * value to multiple variables (if using a List) in the SPARQL query.<br>
+ * See setGroupedValues to assign multiple values to multiple variables.
+ *
+ * @param itemsMap
+ */
+ public void setValues(Map<String, Collection<? extends RDFNode>> itemsMap) {
+ itemsMap.forEach(this::setValues);
+ }
+
+ /**
+ * Allocate multiple lists of variables to a single VALUES varName.<br>
+ * Using "vars" with list(list(prop_A, obj_A), list(prop_B, obj_B)) on query
+ * "VALUES (?p ?o) {?vars}" would produce "VALUES (?p ?o) {(prop_A obj_A)
+ * (prop_B obj_B)}".
+ *
+ * @param varName
+ * @param groupedItems
+ */
+ public void setGroupedValues(String varName, Collection<List<? extends RDFNode>> groupedItems) {
--- End diff --
I wonder if these should be named `setRowValues()` since you are effectively substituting several rows of data and that terminology more closely matches how the SPARQL spec and Jena algebra treats VALUES
---