It has to be a basic pattern: https://www.w3.org/TR/sparql11-query/#constructWhere
On Thu, 16 Feb 2017 at 21.31, Jean-Marc Vanel <[email protected]> wrote: > Indeed adding syntaxARQ brings a progress: > QueryFactory.create(query, Syntax.syntaxARQ) > > GRAPH is tolerated, > but OPTIONAL is not: > > Exception in thread "main" org.apache.jena.query.QueryParseException: > Encountered " "optional" "OPTIONAL "" at line 9, column 11. > 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) > at > org.apache.jena.sparql.lang.ParserSPARQL11.parse$(ParserSPARQL11.java:52) > > > > 2017-02-16 17:54 GMT+01:00 Rob Vesse <[email protected]>: > > > 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) > > > > > > > > > > > > > > > > > > > > > -- > Jean-Marc Vanel > > http://www.semantic-forms.cc:9111/display?displayuri=http://jmvanel.free.fr/jmv.rdf%23me > Déductions SARL - Consulting, services, training, > Rule-based programming, Semantic Web > +33 (0)6 89 16 29 52 > Twitter: @jmvanel , @jmvanel_fr ; chat: irc://irc.freenode.net#eulergui >
