diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlAstBuilder.java b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlAstBuilder.java index 054d7aaed..78a10a5df 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlAstBuilder.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlAstBuilder.java @@ -439,7 +439,7 @@ private void ensureNoOpenBgp() { * Builds the AST for ASK queries. */ private AskQueryAst buildAskQueryAst(DatasetClauseAst datasetClauseAst, QueryPrologueAst prologue) { - return new AskQueryAst(datasetClauseAst, whereClause, prologue); + return new AskQueryAst(datasetClauseAst, whereClause, buildSolutionModifier(), prologue); } /** diff --git a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/ast/AskQueryAst.java b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/ast/AskQueryAst.java index ade193d8c..60f540039 100644 --- a/src/main/java/fr/inria/corese/core/next/query/impl/sparql/ast/AskQueryAst.java +++ b/src/main/java/fr/inria/corese/core/next/query/impl/sparql/ast/AskQueryAst.java @@ -15,12 +15,11 @@ * } * } */ -public record AskQueryAst(DatasetClauseAst datasetClause, GroupGraphPatternAst whereClause, QueryPrologueAst prologue) implements QueryAst { - /** - * constructor with default prefix handler - */ +public record AskQueryAst(DatasetClauseAst datasetClause, GroupGraphPatternAst whereClause, + SolutionModifierAst solutionModifier, QueryPrologueAst prologue) implements QueryAst { + public AskQueryAst(DatasetClauseAst datasetClause, GroupGraphPatternAst whereClause) { - this(datasetClause, whereClause, null); + this(datasetClause, whereClause, null, null); } public AskQueryAst { @@ -33,5 +32,8 @@ public AskQueryAst(DatasetClauseAst datasetClause, GroupGraphPatternAst whereCla if (prologue == null) { prologue = QueryPrologueAst.empty(); } + if (solutionModifier == null) { + solutionModifier = SolutionModifierAst.empty(); + } } } \ No newline at end of file diff --git a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserAskQueryTest.java b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserAskQueryTest.java index 0c0d641ef..95f2c25fb 100644 --- a/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserAskQueryTest.java +++ b/src/test/java/fr/inria/corese/core/next/query/impl/parser/SparqlParserAskQueryTest.java @@ -330,4 +330,22 @@ public void fromMultipleMixedGraphs() { assertEquals(1, queryAst.datasetClause().namedGraphs().size()); assertInstanceOf(IriAst.class, queryAst.datasetClause().namedGraphs().toArray()[0]); } + + @Test + @DisplayName("Ask short form with limit") + public void shortformWithLimit() { + SparqlParser parser = newParserDefault(); + String query = """ + ASK { + ?s ?p ?o . + } LIMIT 10 + """; + QueryAst queryAst = parser.parse(query); + assertNotNull(queryAst); + assertNotNull(queryAst.datasetClause()); + assertInstanceOf(AskQueryAst.class, queryAst); + AskQueryAst askQueryAst = (AskQueryAst) queryAst; + assertNotNull(askQueryAst.solutionModifier()); + assertEquals(10L, askQueryAst.solutionModifier().limit()); + } }