Thanks Andy. I cannot directly use QueryExecution because I'm executing remotely using my own HTTP client (Jersey client).
But I suppose I can do to the query string what ExecHTTPBuilder is doing to it? Is it as simple as queryActual = QueryTransformOps.transform(queryActual, substitutionMap); ? I'm looking here: https://github.com/apache/jena/blob/main/jena-arq/src/main/java/org/apache/jena/http/sys/ExecHTTPBuilder.java#L331C13-L331C85 On Mon, Nov 25, 2024 at 12:03 PM Andy Seaborne <a...@apache.org> wrote: > > Another way is at execution time: > > QueryExecution.... > .query(query string or object) > .substitution(varName, value); > > which uses QueryTransformOps. > > Andy > > > On 25/11/2024 08:40, Martynas Jusevičius wrote: > > Hi Lorenz, > > > > thanks, but wouldn't these methods append VALUES at the end of the > > query? Which would not be equivalent to having it injected at the > > beginning? > > > > I don't want to build the whole query with Java -- I already have a > > query string. > > > > Martynas > > > > On Mon, Nov 25, 2024 at 7:58 AM Lorenz Buehmann > > <buehm...@informatik.uni-leipzig.de> wrote: > >> > >> Hi, > >> > >> you mentioned a query builder, so did you try to use the Jena query > >> builder already? If so, > >> > >> the method addWhereValueVars on the SelectBuilder[1] or directly on the > >> WhereBuilder[2] would be the way to go. > >> > >> > >> Cheers, > >> > >> Lorenz > >> > >> [1] > >> https://jena.apache.org/documentation/javadoc/extras/querybuilder/org.apache.jena.querybuilder/org/apache/jena/arq/querybuilder/SelectBuilder.html#addWhereValueVars(java.util.Map) > >> > >> > >> [2] > >> https://jena.apache.org/documentation/javadoc/extras/querybuilder/org.apache.jena.querybuilder/org/apache/jena/arq/querybuilder/WhereBuilder.html#addWhereValueVars(java.util.Map) > >> > >> > >> On 25.11.24 01:02, David Habgood wrote: > >>> Hi Martynas, > >>> > >>> Do you know ahead of time which variable(s) you're going to be injecting > >>> the VALUES clause for? > >>> > >>> I've been using a pattern where I add VALUES ?this { UNDEF } in "template" > >>> queries, then at runtime parse the query and replace "UNDEF" (where all of > >>> the DataBlockValue > >>> <https://www.w3.org/TR/sparql11-query/#rDataBlockValue>s > >>> in a binding within a InlineDataFull are "UNDEF") with a set of bindings > >>> supplied at runtime. This has the benefit that if you do not supply a > >>> binding for ?this, UNDEF means it is left unbound. > >>> > >>> Thanks, > >>> > >>> On Mon, Nov 25, 2024 at 9:40 AM Martynas Jusevičius > >>> <marty...@atomgraph.com> > >>> wrote: > >>> > >>>> Hi, > >>>> > >>>> What would be the simplest way to safely (i.e. using query builder or > >>>> algebra) to inject a VALUES block at the beginning of a query? > >>>> > >>>> For example > >>>> > >>>> SELECT * > >>>> { > >>>> ?this ?p ?o > >>>> } > >>>> > >>>> should become > >>>> > >>>> SELECT * > >>>> { > >>>> VALUES ?this <http://localhost> > >>>> ?this ?p ?o > >>>> } > >>>> > >>>> after the injection. > >>>> > >>>> Thanks, > >>>> > >>>> Martynas > >>>> > >> -- > >> Lorenz Bühmann > >> Research Associate/Scientific Developer > >> > >> Email buehm...@infai.org > >> > >> Institute for Applied Informatics e.V. (InfAI) | Goerdelerring 9 | 04109 > >> Leipzig | Germany > >> >