I just added the ability to create lists to the QueryBuilder. It should be in the next snapshot build.
https://issues.apache.org/jira/browse/JENA-1057 You should be able to add to the where clause by def aVar = Var.alloc('a') def bVar = Var.alloc('b') def cVar = Var.alloc('c')Node abc = selectBuilder.list(aVar, bVar, cVar); selectBuilder.addWhere(abc, ':hasMagicProperty', thisVar) selectBuilder.addWhere(aVar, ':hasACode', 'code A') selectBuilder.addWhere(bVar, ':hasBCode', 'code B') selectBuilder.addWhere(cVar, ':hasCCode', 'code C') Alternatively you can do: def aVar = Var.alloc('a') def bVar = Var.alloc('b') def cVar = Var.alloc('c') selectBuilder.addWhere(selectBuilder.list(aVar, bVar, cVar), ':hasMagicProperty', thisVar) selectBuilder.addWhere(aVar, ':hasACode', 'code A') selectBuilder.addWhere(bVar, ':hasBCode', 'code B') selectBuilder.addWhere(cVar, ':hasCCode', 'code C') On Wed, Oct 28, 2015 at 4:02 PM, Morrisey, Russell < [email protected]> wrote: > Claude, > > Thanks for offering to help! > > The expression: > (?a ?b ?c) :hasMagicProperty ?this . > > Is SPARQL 1.1 syntactic sugar for: > _:b0 rdf:first ?c ; > rdf:rest rdf:nil . > _:b1 rdf:first ?b ; > rdf:rest _:b0 . > _:b2 rdf:first ?a ; > rdf:rest _:b1 ; > :hasMagicProperty ?this . > > See the RDF Collections section of the spec: > http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#collections > > For my use case, I don't need to know about the expanded form; I just want > to render a SPARQL query that uses the "(?a ?b ?c)" list syntax. > > In the example query, I am using a magic property to identify values of > "?this", based on a SPIN magic property which has 3 input arguments. I have > updated the SPARQL in my stackoverflow post slightly so the intent is more > clear. > > I figured out a workaround, which uses "addWhere()" recursively to write > out the expanded form of the RDF collection construct (using the anonymous > nodes, as above). > > I posted this workaround code as an answer on stackoverflow, but it's a > stopgap solution. A querybuilder enhancement to support the sugary list () > syntax would be awesome. =) > > Please let me know if this gives you enough info. > > James and Andy, thanks for your help, too. > > Russell Morrisey > Java Developer | CLS Platform Team > [email protected] > cscglobal.com > > Making Business Possible – Worldwide > > > -----Original Message----- > From: Andy Seaborne [mailto:[email protected]] > Sent: Wednesday, October 28, 2015 8:38 AM > To: [email protected] > Subject: Re: How do I build a SPARQL list input using jena querybuilder? > > and to see the same locally, > > qparse --print=op --file <query> > > Andy > > > On 28/10/15 12:03, james anderson wrote: > > good morning; > > > >> On 2015-10-28, at 12:41, Claude Warren <[email protected]> wrote: > >> > >> I replied on stackoverflow but am wondering exactly how would ARQ > >> parse the statement > >> > >> SELECT * WHERE { > >> (?a ?b ?c) :hasMagicProperty ?result . > >> } > > > > sparql.org says, as to be expected: > > > > 1 (base <http://example/base/> > > 2 (prefix ((: <http://spinning/onwards>)) > > 3 (bgp > > 4 (triple ??0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> > ?a) > > 5 (triple ??0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> > ??1) > > 6 (triple ??1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> > ?b) > > 7 (triple ??1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> > ??2) > > 8 (triple ??2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> > ?c) > > 9 (triple ??2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> > <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil>) > > 10 (triple ??0 :hasMagicProperty ?result) > > 11 ))) > > > >> > >> what is the expected query? > > > > to find some sort of computed relation between a three-element list(s) > and some other node. > > > >> > >> > >> On Tue, Oct 27, 2015 at 7:58 PM, Morrisey, Russell < > >> [email protected]> wrote: > >> > >>> I have a bunch of code that uses SelectBuilder to build up a complex > >>> SPARQL query. In my query, I want to use a SPIN magic property > >>> that’s invoked like this: > >>> > >>> > >>> > >>> (?a ?b ?c) :hasMagicProperty ?result . > >>> > >>> > >>> > >>> I can’t figure out how to represent the list syntax (?a ?b ?c) using > >>> SelectBuilder. I’ve tried several approaches using java lists, > >>> strings and trying to figure out RDFList, but I’m still struggling. > >>> > >>> > >>> > >>> I posted the problem in more detail on stackoverflow: > >>> > >>> > >>> http://stackoverflow.com/questions/33351102/how-to-i-build-a-sparql- > >>> list-input-using-jena-querybuilder > >>> > >>> > >>> > >>> > >>> > >>> *Russell Morrisey* > >>> *Java Developer | CLS Platform Team* > >>> *Phone* *302-636-5400 <302-636-5400> x62899* > >>> > >>> [email protected] > >>> cscglobal.com > >>> > >>> [image: > >>> http://wiki/download/attachments/13879359/CSC+logo+for+sig+line.jpg? > >>> version=1&modificationDate=1411058694237] > >>> > >>> *Making Business Possible – Worldwide* > >>> > >>> *New York Law Journal** Reader Rankings* > >>> > >>> *CSC named* *#1 for Entity Management* *and* *#1 for Matter > >>> Management* > >>> *by* *The New York Law Journal.* Click here > >>> <https://www.cscglobal.com/global/web/csc/nylj-rankings.html> *to > >>> learn > >>> more!* > >>> > >>> > >>> > >>> ------------------------------ > >>> > >>> NOTICE: This e-mail and any attachments is intended only for use by > >>> the > >>> addressee(s) named herein and may contain legally privileged, > >>> proprietary or confidential information. If you are not the intended > >>> recipient of this e-mail, you are hereby notified that any > >>> dissemination, distribution or copying of this email, and any > attachments thereto, is strictly prohibited. > >>> If you receive this email in error please immediately notify me via > >>> reply email or at (800) 927-9800 and permanently delete the original > >>> copy and any copy of any e-mail, and any printout. > >>> > >> > >> > >> > >> -- > >> I like: Like Like - The likeliest place on the web > >> <http://like-like.xenei.com> > >> LinkedIn: http://www.linkedin.com/in/claudewarren > > > > > > > > --- > > james anderson | [email protected] | http://dydra.com > > > > > > > > > > > > > ________________________________ > > NOTICE: This e-mail and any attachments is intended only for use by the > addressee(s) named herein and may contain legally privileged, proprietary > or confidential information. If you are not the intended recipient of this > e-mail, you are hereby notified that any dissemination, distribution or > copying of this email, and any attachments thereto, is strictly prohibited. > If you receive this email in error please immediately notify me via reply > email or at (800) 927-9800 and permanently delete the original copy and > any copy of any e-mail, and any printout. > -- I like: Like Like - The likeliest place on the web <http://like-like.xenei.com> LinkedIn: http://www.linkedin.com/in/claudewarren
