Skip to content

Next sparql/triples patterns bgp#275

Merged
abdessamad-abdoun merged 18 commits into
feature/corese-nextfrom
next-sparql/triples-patterns-bgp
Mar 4, 2026
Merged

Next sparql/triples patterns bgp#275
abdessamad-abdoun merged 18 commits into
feature/corese-nextfrom
next-sparql/triples-patterns-bgp

Conversation

@prbblrypier
Copy link
Copy Markdown
Contributor

SPARQL NEXT : Triples patterns and Basic Graph Pattern :

We add

  • the ANTLR4 Parser for SPARQL.
  • an AST for triples patterns and BGP
  • the associate TEST

Overview of the code :

  • Parser SPARQL : input (String, Reader, InputStream) → arbre de syntaxe ANTLR → AST (QueryAst).
  • AST : Immutable representation of the WHERE clause (group graph patterns, BGPs, triple patterns) with terms (variables, IRIs, literals).
  • Options : base IRI, mod strict, errors (fail-fast / collect).

Parser

For the Parser we follow the pattern and implementation of the IO Parser i.e; parser, options, and listener.

QueryParser produce a QueryAst from a String a Reader or an InputStream. We also have error handling.

SparqlParserOptions

The Options are following the same builder pattern we can find in IO.

SparqlListener

The SparqlListener follow the delegate pattern we can find in the Turtle and Trig Listerners. This is the rules we support for the moment : GroupGraphPattern, TriplesBlock, TriplesSameSubject

SparqlAstBuilder

The SparqlAstBuilder construct the AST form the listeners. It should produce a QueryAST

SparqlBgpFeature

feature of ANTLR that drive the builder for triple patterns and BGP.

AST

The AST are the Immutable representation of the query and the terms in the query. (equivalent of case class in scala)

@github-actions
Copy link
Copy Markdown

Overall Project 46.52% -0.04% 🍏
Files changed 88.08% 🍏

File Coverage
AbstractSparqlOptions.java 100% 🍏
IriAst.java 100% 🍏
GroupGraphPatternAst.java 100% 🍏
BgpAst.java 100% 🍏
SelectQueryAst.java 100% 🍏
VarAst.java 100% 🍏
LiteralAst.java 100% 🍏
TriplePatternAst.java 100% 🍏
AbstractQueryParser.java 100% 🍏
SparqlParserOptions.java 100% 🍏
SparqlListener.java 100% 🍏
SparqlParser.java 89.17% -10.83% 🍏
SparqlAstBuilder.java 83.92% -16.08% 🍏
SparqlBgpFeature.java 76.68% -23.32% 🍏
AbstractSparqlFeature.java 0%

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 18, 2026

Test Results

  340 files  + 23    340 suites  +23   50s ⏱️ +9s
1 889 tests +142  1 889 ✅ +142  0 💤 ±0  0 ❌ ±0 
1 890 runs  +142  1 890 ✅ +142  0 💤 ±0  0 ❌ ±0 

Results for commit 588d8b4. ± Comparison against base commit 5335985.

♻️ This comment has been updated with latest results.

@MaillPierre MaillPierre added the Refactoring Issue created during the 2025 refactoring effort label Feb 19, 2026
@MaillPierre MaillPierre force-pushed the next-sparql/triples-patterns-bgp branch from 4d2c8ce to 2cf1377 Compare February 19, 2026 10:51
@github-actions
Copy link
Copy Markdown

Overall Project 46.52% -0.04% 🍏
Files changed 88.08% 🍏

File Coverage
AbstractSparqlOptions.java 100% 🍏
IriAst.java 100% 🍏
GroupGraphPatternAst.java 100% 🍏
BgpAst.java 100% 🍏
SelectQueryAst.java 100% 🍏
VarAst.java 100% 🍏
LiteralAst.java 100% 🍏
TriplePatternAst.java 100% 🍏
AbstractQueryParser.java 100% 🍏
SparqlParserOptions.java 100% 🍏
SparqlListener.java 100% 🍏
SparqlParser.java 89.17% -10.83% 🍏
SparqlAstBuilder.java 83.92% -16.08% 🍏
SparqlBgpFeature.java 76.68% -23.32% 🍏
AbstractSparqlFeature.java 0%

@MaillPierre MaillPierre force-pushed the next-sparql/triples-patterns-bgp branch from 2cf1377 to 04bed7f Compare February 26, 2026 09:35
@github-actions
Copy link
Copy Markdown

Overall Project 46.65% -0.03% 🍏
Files changed 88.32% 🍏

File Coverage
SparqlListener.java 100% 🍏
SparqlParserOptions.java 100% 🍏
IriAst.java 100% 🍏
GroupGraphPatternAst.java 100% 🍏
SelectQueryAst.java 100% 🍏
VarAst.java 100% 🍏
LiteralAst.java 100% 🍏
BgpAst.java 100% 🍏
TriplePatternAst.java 100% 🍏
AbstractQueryParser.java 100% 🍏
AbstractSparqlOptions.java 100% 🍏
SparqlParser.java 89.17% -10.83% 🍏
SparqlAstBuilder.java 83.92% -16.08% 🍏
SparqlBgpFeature.java 76.68% -23.32% 🍏

Comment thread src/main/java/fr/inria/corese/core/next/query/api/sparql/ast/QueryAst.java Outdated
Comment thread src/main/java/fr/inria/corese/core/next/query/impl/parser/SparqlParser.java Outdated
@github-actions
Copy link
Copy Markdown

Overall Project 46.65% -0.03% 🍏
Files changed 88.32% 🍏

File Coverage
SparqlListener.java 100% 🍏
SparqlParserOptions.java 100% 🍏
IriAst.java 100% 🍏
GroupGraphPatternAst.java 100% 🍏
SelectQueryAst.java 100% 🍏
VarAst.java 100% 🍏
LiteralAst.java 100% 🍏
BgpAst.java 100% 🍏
TriplePatternAst.java 100% 🍏
AbstractQueryParser.java 100% 🍏
AbstractSparqlOptions.java 100% 🍏
SparqlParser.java 89.17% -10.83% 🍏
SparqlAstBuilder.java 83.92% -16.08% 🍏
SparqlBgpFeature.java 76.68% -23.32% 🍏

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 2, 2026

Overall Project 46.67% -0.07% 🍏
Files changed 82.71% 🍏

File Coverage
SparqlListener.java 100% 🍏
SparqlParserOptions.java 100% 🍏
AbstractSparqlFeature.java 100% 🍏
GroupGraphPatternAst.java 100% 🍏
IriAst.java 100% 🍏
LiteralAst.java 100% 🍏
VarAst.java 100% 🍏
TriplePatternAst.java 100% 🍏
BgpAst.java 100% 🍏
SelectQueryAst.java 100% 🍏
AbstractQueryParser.java 100% 🍏
AbstractSparqlOptions.java 100% 🍏
SparqlAstError.java 91.91% -8.09% 🍏
SparqlParser.java 88.03% -11.97% 🍏
SparqlErrorListener.java 87.72% -12.28% 🍏
SparqlAstBuilder.java 83.92% -16.08% 🍏
BgpFeature.java 76.68% -23.32% 🍏
AbstractQueryParser.java 0%
AskQueryAst.java 0%
ConstructQueryAst.java 0%
DescribeQueryAst.java 0%
CoreseQueryArtifactAdapter.java 0%
CoreseAstQueryBuilder.java 0%
AstEdge.java 0%
CoresePatternBuilder.java 0%

@MaillPierre MaillPierre force-pushed the next-sparql/triples-patterns-bgp branch from 070e1e6 to 0117c55 Compare March 2, 2026 15:55
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 2, 2026

Overall Project 46.67% -0.07% 🍏
Files changed 82.71% 🍏

File Coverage
SparqlListener.java 100% 🍏
SparqlParserOptions.java 100% 🍏
AbstractSparqlFeature.java 100% 🍏
GroupGraphPatternAst.java 100% 🍏
IriAst.java 100% 🍏
LiteralAst.java 100% 🍏
VarAst.java 100% 🍏
TriplePatternAst.java 100% 🍏
BgpAst.java 100% 🍏
SelectQueryAst.java 100% 🍏
AbstractQueryParser.java 100% 🍏
AbstractSparqlOptions.java 100% 🍏
SparqlAstError.java 91.91% -8.09% 🍏
SparqlParser.java 88.03% -11.97% 🍏
SparqlErrorListener.java 87.72% -12.28% 🍏
SparqlAstBuilder.java 83.92% -16.08% 🍏
BgpFeature.java 76.68% -23.32% 🍏
AbstractQueryParser.java 0%
AskQueryAst.java 0%
ConstructQueryAst.java 0%
DescribeQueryAst.java 0%
CoreseQueryArtifactAdapter.java 0%
CoreseAstQueryBuilder.java 0%
AstEdge.java 0%
CoresePatternBuilder.java 0%

@MaillPierre MaillPierre force-pushed the next-sparql/triples-patterns-bgp branch from 0117c55 to 88c7161 Compare March 3, 2026 10:24
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 3, 2026

Overall Project 46.76% -0.07% 🍏
Files changed 82.71% 🍏

File Coverage
SparqlListener.java 100% 🍏
SparqlParserOptions.java 100% 🍏
AbstractSparqlFeature.java 100% 🍏
GroupGraphPatternAst.java 100% 🍏
IriAst.java 100% 🍏
LiteralAst.java 100% 🍏
VarAst.java 100% 🍏
TriplePatternAst.java 100% 🍏
BgpAst.java 100% 🍏
SelectQueryAst.java 100% 🍏
AbstractQueryParser.java 100% 🍏
AbstractSparqlOptions.java 100% 🍏
SparqlAstError.java 91.91% -8.09% 🍏
SparqlParser.java 88.03% -11.97% 🍏
SparqlErrorListener.java 87.72% -12.28% 🍏
SparqlAstBuilder.java 83.92% -16.08% 🍏
BgpFeature.java 76.68% -23.32% 🍏
AbstractQueryParser.java 0%
AskQueryAst.java 0%
ConstructQueryAst.java 0%
DescribeQueryAst.java 0%
CoreseQueryArtifactAdapter.java 0%
CoreseAstQueryBuilder.java 0%
AstEdge.java 0%
CoresePatternBuilder.java 0%


/**
* if true stop the parsing and throw an exception
* @return
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'@return' tag description is missing


/**
* if true collect the error in a List
* @return
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'@return' tag description is missing

/**
* Returns collected errors as human-friendly strings.
* <p>Prefer {@link #getDiagnostics()} for structured access.</p>
* @return
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'@return' tag description is missing


/**
* Constructor
* @param kind
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'@param kind' tag description is missing
'@param severity' tag description is missing
'@param message' tag description is missing
'@param column' tag description is missing
'@param offendingText' tag description is missing
'@param source' tag description is missing

* Abstract Syntax Tree (AST) representation of a SPARQL {@code ASK} query.
* ASK WHERE { pattern } returns a boolean.
*
* PREFIX foaf: <http://xmlns.com/foaf/0.1/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link specified as plain text

* Abstract Syntax Tree (AST) representation of a SPARQL {@code CONSTRUCT} query.
* CONSTRUCT { template } WHERE { pattern }.
*
* PREFIX foaf: <http://xmlns.com/foaf/0.1/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link specified as plain text

* Abstract Syntax Tree (AST) representation of a SPARQL {@code DESCRIBE} query.
* DESCRIBE (var|uri)* WHERE { pattern } or DESCRIBE (var|uri)*.
*
* DESCRIBE <http://example.org/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link specified as plain text

package fr.inria.corese.core.next.query.impl.sparql.bridge;

public class CoresePatternBuilder {
import fr.inria.corese.core.next.query.impl.sparql.ast.BgpAst;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused import statement

public class CoreseTermAdapter {

import fr.inria.corese.core.next.query.impl.sparql.ast.IriAst;
import fr.inria.corese.core.next.query.impl.sparql.ast.LiteralAst;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused import statement

package fr.inria.corese.core.next.query.impl.sparql;

public class CoreseQueryArtifactAdapter {
import fr.inria.corese.core.next.query.impl.sparql.ast.QueryAst;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused import statement

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 3, 2026

Overall Project 46.76% -0.07% 🍏
Files changed 82.71% 🍏

File Coverage
SparqlListener.java 100% 🍏
SparqlParserOptions.java 100% 🍏
AbstractSparqlFeature.java 100% 🍏
GroupGraphPatternAst.java 100% 🍏
IriAst.java 100% 🍏
LiteralAst.java 100% 🍏
VarAst.java 100% 🍏
TriplePatternAst.java 100% 🍏
BgpAst.java 100% 🍏
SelectQueryAst.java 100% 🍏
AbstractQueryParser.java 100% 🍏
AbstractSparqlOptions.java 100% 🍏
SparqlAstError.java 91.91% -8.09% 🍏
SparqlParser.java 88.03% -11.97% 🍏
SparqlErrorListener.java 87.72% -12.28% 🍏
SparqlAstBuilder.java 83.92% -16.08% 🍏
BgpFeature.java 76.68% -23.32% 🍏
AbstractQueryParser.java 0%
AskQueryAst.java 0%
ConstructQueryAst.java 0%
DescribeQueryAst.java 0%
CoreseQueryArtifactAdapter.java 0%
CoreseAstQueryBuilder.java 0%
AstEdge.java 0%
CoresePatternBuilder.java 0%

@abdessamad-abdoun abdessamad-abdoun merged commit bf4a5e9 into feature/corese-next Mar 4, 2026
1 check passed
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 4, 2026

Overall Project 46.76% -0.07% 🍏
Files changed 82.71% 🍏

File Coverage
SparqlListener.java 100% 🍏
SparqlParserOptions.java 100% 🍏
AbstractSparqlFeature.java 100% 🍏
GroupGraphPatternAst.java 100% 🍏
IriAst.java 100% 🍏
LiteralAst.java 100% 🍏
VarAst.java 100% 🍏
TriplePatternAst.java 100% 🍏
BgpAst.java 100% 🍏
SelectQueryAst.java 100% 🍏
AbstractQueryParser.java 100% 🍏
AbstractSparqlOptions.java 100% 🍏
SparqlAstError.java 91.91% -8.09% 🍏
SparqlParser.java 88.03% -11.97% 🍏
SparqlErrorListener.java 87.72% -12.28% 🍏
SparqlAstBuilder.java 83.92% -16.08% 🍏
BgpFeature.java 76.68% -23.32% 🍏
AbstractQueryParser.java 0%
AskQueryAst.java 0%
ConstructQueryAst.java 0%
DescribeQueryAst.java 0%
CoreseQueryArtifactAdapter.java 0%
CoreseAstQueryBuilder.java 0%
AstEdge.java 0%
CoresePatternBuilder.java 0%

@MaillPierre MaillPierre deleted the next-sparql/triples-patterns-bgp branch March 5, 2026 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Refactoring Issue created during the 2025 refactoring effort

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[SPARQL 1.0] Parser and AST : Triple patterns and Basic Graph Pattern

3 participants