Skip to content

feat(query): support BIND and VALUES in the next SPARQL pipeline (#562) - #584

Merged
remiceres merged 1 commit into
feature/corese-nextfrom
feature/562-bind-values-inline-data
Sep 10, 2026
Merged

feat(query): support BIND and VALUES in the next SPARQL pipeline (#562)#584
remiceres merged 1 commit into
feature/corese-nextfrom
feature/562-bind-values-inline-data

Conversation

@remiceres

Copy link
Copy Markdown
Contributor

Closes #562

Summary

Support SPARQL 1.1 inline data (VALUES / Table) and variable assignment (BIND / Extend) in core.next.query.

Key Changes

  • VALUES Clause:
    • Preserve VALUES headers, UNDEF and bag semantics.
    • Compile trailing VALUES as a join in WhereCompiler.
    • Support both inline data in WHERE graph patterns and trailing query-level VALUES.
  • BIND Clause:
    • Implement Extend(mu, var, expr) evaluation to assign computed values to variables.
    • Correctly enforce scope across basic graph patterns, UNION, GRAPH, and subqueries.
  • Repository API & Base IRIs:
    • Expose query-document base IRI prepare overloads on RepositoryConnection and CoreseRepositoryConnection.
  • Quality & Verification:
    • All 2,816 local unit tests passing.
    • Headless SonarLint scan reports 0 issues across all changed Java files.
    • Strict modular boundaries verified by NextModuleBoundaryTest.

Preserve VALUES headers, UNDEF and bag semantics; compile trailing VALUES as a join. Fix group, UNION, GRAPH and subquery scope, and expose query-document base IRIs through the repository API.

Validate 2816 local tests and all 21 W3C bind/bindings cases. Fresh SonarLint analysis reports no issues in changed Java files.

Closes #562
@github-actions

Copy link
Copy Markdown
Overall Project 53.71% -0.02% 🍏
Files changed 94.65% 🍏

File Coverage
AbstractAstVisitor.java 100% 🍏
SparqlAntlrDispatcher.java 100% 🍏
GraphAst.java 100% 🍏
WhereCompiler.java 97.04% 🍏
ValueMappingAst.java 94.44% -5.56% 🍏
CoreseAstQueryBuilder.java 93.09% 🍏
ValuesAst.java 93.07% -6.93% 🍏
CoreseTupleQueryResult.java 92.06% 🍏
ValuesAstListener.java 91.97% -2.01% 🍏
NextSparqlPipelineExecutor.java 89.15% 🍏
SparqlAstBuilder.java 87.74% -0.71% 🍏
CoreseBindingSet.java 87.13% -6.93% 🍏
EvalGraph.java 84.36% 🍏
SparqlQueryAstBuilder.java 83.85% -1.26% 🍏
CoreseRepositoryConnection.java 82.62% 🍏
VariableScopeAnalyzer.java 80.83% -0.57% 🍏
SparqlTermBuilder.java 77.43% 🍏
NodeImpl.java 74.76% 🍏
SparqlTermResolver.java 68.59% 🍏
Exp.java 46.8% -0.21%
BgpAstListener.java 46.67% 🍏
Eval.java 44.52% -0.21% 🍏

@github-actions

Copy link
Copy Markdown

Test Results

  425 files    425 suites   21s ⏱️
2 797 tests 2 797 ✅ 0 💤 0 ❌
2 816 runs  2 816 ✅ 0 💤 0 ❌

Results for commit 93f42ae.

@remiceres
remiceres merged commit c079df7 into feature/corese-next Sep 10, 2026
2 checks passed
@remiceres
remiceres deleted the feature/562-bind-values-inline-data branch September 10, 2026 06:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant