ElementTriplesBlock is only triple patterns ElementPathBlock is a mix of triple patterns and property paths
In SPARQL 1.1 mode ElementPathBlock is always used, ElementTriplesBlock primarily exists from SPARQL 1.0 days and is kept for backwards compatibility Generally it is better to use ElementPathBlock because it is more flexible and an ElementPathBlock with only triple patterns is equivalent to a ElementTriplesBlock with the same triple patterns once we compile to algebra anyway Rob On 23/09/2015 14:03, "Claude Warren" <[email protected]> wrote: >I have a fix for he missing operation using a pattern already found >elsewhere (basically queryBuilder.addOptional( queryBuilder )) but I was >working on the testing and thought I would try the suggestion to clean up >the querybuilder tests by running the same query through the standard >queryFactory.create( string ) method. > >The textual output of the 2 looked the same but the equality failed >because >the querybuilder used an ElementTriplesBlock and the queryFactory used an >ElementPathBlock. > >So my questions are: > >What is the difference between the ElementTripleBlock and the >ElementPathBlock? > >When should one be used over the other? > >Thx, >Claude > >On Mon, Sep 21, 2015 at 5:55 PM, Andy Seaborne <[email protected]> wrote: > >> On 20/09/15 11:18, Claude Warren wrote: >> >>> Andy, >>> >>> I started to work on a solution which was fairly simple until I >>>started to >>> run the test. I tried creating a query with the same optional block. >>> However, while they both looked like: >>> {noformat} >>> >>> OPTIONAL >>> { ?s <urn:q> "123"^^<http://www.w3.org/2001/XMLSchema#int> ; >>> <urn:v> ?x >>> FILTER ( ?x > 56 ) >>> } >>> >>> {noformat} >>> >>> the one built by querybuilder is using an ElementTriplesBlock for the: >>> {noformat} >>> >>> ?s <urn:q> "123"^^<http://www.w3.org/2001/XMLSchema#int> ; >>> <urn:v> ?x >>> >>> {noformat} >>> >>> while the queryFactory version uses an ElementPathBlock. >>> >>> I suspect this is as defect in the querybuilder but can you explain the >>> difference and when one or the other should be used? >>> >> >> ElementGroup >> >> This is unit for OPTIONAL and other compound structures. It can hold >> several ElementPathBlock, ElementFilter, ElementOptional. Indeed, it >>can >> hold other ElementGroup. >> >> Do not confuse with GROUP BY - unrelated. ElementGroup is SPARQL 1.0 and >> then the term "group" was free. >> >> WhereHandler, other than it's name, looks (by inspection) to be close in >> concept. >> >> It needs "addPattern(WhereHandler)" which is why the name looks odd to >>me. >> >> This gives the inner {} in: >> { ?s1 ?p1 ?o1 >> { ?s ?p ?o } >> ?s2 ?p2 ?o2 >> } >> >> so maybe: untested: >> >> WhereHandler -> PatternHandler >> without setVars >> ?? addAll(PatternHandler) >> >> WhereHandler becomes subclass of PatternHandler. >> with setVars - the only action that only applies to WHERE >> >> WhereHandler::addAll looks odd - only considers ElementTriplesBlock in >> some cases. >> >> Andy >> >> >>> Claude >>> >>> On Sun, Sep 20, 2015 at 10:19 AM, Claude Warren <[email protected]> >>>wrote: >>> >>> No there isn't. It is an oversight. Looks like QueryBuilder needs to >>>> have a group pattern. I think that this could be done by using a >>>> SelectBuilder as a container the group pattern as we can get a >>>> WhereHandler >>>> from it and that seems to have all the bits that are needed. >>>> >>>> Claude >>>> >>>> On Sat, Sep 19, 2015 at 3:10 PM, Andy Seaborne <[email protected]> >>>>wrote: >>>> >>>> how do I add >>>>> >>>>> OPTIONAL { >>>>> ?s <q> 123 . >>>>> ?s <v> ?x . >>>>> FILTER(?x>56) >>>>> } >>>>> >>>>> i.e a compound OPTIONAL pattern? >>>>> >>>>> There seems to be no concept of a group pattern (do not confuse with >>>>> GROUP BY). >>>>> >>>>> (This applies all places group patterns occur, which is quite a few >>>>>in >>>>> SPARQL) >>>>> >>>>> Andy >>>>> >>>>> >>>> >>>> >>>> -- >>>> I like: Like Like - The likeliest place on the web >>>> <http://like-like.xenei.com> >>>> LinkedIn: http://www.linkedin.com/in/claudewarren >>>> >>>> >>> >>> >>> >> > > >-- >I like: Like Like - The likeliest place on the web ><http://like-like.xenei.com> >LinkedIn: http://www.linkedin.com/in/claudewarren
