As a general comment the short form of construct is very constrained. Anything other than that simple triple patterns is illegal in the short form
Rob On 16/02/2017 16:45, "Andy Seaborne" <[email protected]> wrote: Hi, The result of a CONSTRUCT is an RDF graph and the template must be a "triples template" [10] ConstructQuery ::= 'CONSTRUCT' ... 'WHERE' '{' TriplesTemplate? '}' ... and [52] TriplesTemplate ::= TriplesSameSubject ( '.' TriplesTemplate? )? No GRAPH. Jena accepts CONSTRUCT WHERE { GRAPH .... } in extended mode (Syntax.syntaxARQ) and returns a Dataset. Andy On 16/02/17 14:52, Jean-Marc Vanel wrote: > Hi > > I tested with 3.2.0. > > The short form for the CONSTRUCT query > https://www.w3.org/TR/sparql11-query/#constructWhere > works, at least syntactically ( I have nothing in the default graph in my > TDB ) : > CONSTRUCT WHERE > { ?X ?P ?O . } > LIMIT 10 > > But adding GRAPH pattern gives a synyax error: > CONSTRUCT WHERE { > GRAPH ?G { > ?X ?P ?O . > } > } LIMIT 10 > > Which does not occur e.g. with Virtuoso. > > org.apache.jena.query.QueryParseException: Encountered " "graph" "GRAPH "" > at line 2, column 1. > Was expecting one of: > <IRIref> ... > <PNAME_NS> ... > <PNAME_LN> ... > <BLANK_NODE_LABEL> ... > <VAR1> ... > <VAR2> ... > "true" ... > "false" ... > <INTEGER> ... > <DECIMAL> ... > <DOUBLE> ... > <INTEGER_POSITIVE> ... > <DECIMAL_POSITIVE> ... > <DOUBLE_POSITIVE> ... > <INTEGER_NEGATIVE> ... > <DECIMAL_NEGATIVE> ... > <DOUBLE_NEGATIVE> ... > <STRING_LITERAL1> ... > <STRING_LITERAL2> ... > <STRING_LITERAL_LONG1> ... > <STRING_LITERAL_LONG2> ... > "(" ... > <NIL> ... > "}" ... > "[" ... > <ANON> ... > > at > org.apache.jena.sparql.lang.ParserSPARQL11.perform(ParserSPARQL11.java:100) > >
