[
https://issues.apache.org/jira/browse/JENA-2242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17468857#comment-17468857
]
Claude Warren commented on JENA-2242:
-------------------------------------
Proposed fix in https://github.com/apache/jena/pull/1158
> Include VALUES clause in string when stringifying a WhereBuilder
> ----------------------------------------------------------------
>
> Key: JENA-2242
> URL: https://issues.apache.org/jira/browse/JENA-2242
> Project: Apache Jena
> Issue Type: Improvement
> Components: QueryBuilder
> Affects Versions: Jena 4.3.2
> Reporter: Kelvin Qian
> Assignee: Claude Warren
> Priority: Major
>
> Currently when stringifying a WhereBuilder (e.g. for debugging), any VALUES
> clause is not included in the output of .toString:
> {code:java}
> import java.util.ArrayList;
> import java.util.HashMap;
> import org.apache.jena.graph.Node;
> import org.apache.jena.grpah.Triple;
> import org.apache.jena.arq.querybuilder.Converters;
> import org.apache.jena.arq.querybuilder.WhereBuilder;
>
> // Node creation
> Node svarNode = Converters.checkVar(NodeFactory.createVariable("s"));
> Node pvarNode = Converters.checkVar(NodeFactory.createVariable("p"));
> Node ovarNode = Converters.checkVar(NodeFactory.createVariable("o"));
> // Values map creation
> ArrayList<Node> subjColl = new ArrayList<>();
> subjColl.add(NodeFactory.createURI("http://example.org#subject"));
> HashMap<Node, ArrayList<Node>> valMap = new HashMap<>();
> valMap.put(svarNode, subjColl);
> // WhereBuilder creation
> WhereBuilder wb = new WhereBuilder();
> wb.addWhere(svarNode, pvarNode, ovarNode);
> wb.addWhereValueVars(valMap);
> wb.toString();
> // WHERE { ?s ?p ?o }
> {code}
> It is only when you add the WhereBuilder to another builder, e.g. a
> ConstructBuilder, when you are able to visualize the VALUES clause:
> {code:java}
> import org.apache.jena.arq.querybuilder.ConstructBuilder;
> ConstructBuilder cb = new ConstructBuilder();
> cb.addConstruct(new Triple(svarNode, pvarNode, ovarNode));
> cb.addWhere(wb);
> cb.toString();
> // CONSTRUCT
> // {
> // ?s ?p ?o .
> // }
> // WHERE
> // { ?s ?p ?o
> // VALUES ( ?s ) { ( <http://example.org#subject> ) }
> // }
> {code}
> Ideally we would like to visualize the VALUES clause by including it in the
> result string while stringifying the WhereBuilder, not just with the
> ConstructBuilder. This would improve the development experience by allowing
> us to focus on debugging the WHERE clause, without having to consider the
> containing query or update.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)