Skip to content

feat(update): implement SPARQL 1.1 Update execution engine - #591

Merged
remiceres merged 1 commit into
feature/corese-nextfrom
feature/567-sparql-update
Sep 18, 2026
Merged

remiceres merged 1 commit into
feature/corese-nextfrom
feature/567-sparql-update

Conversation

@remiceres

Copy link
Copy Markdown
Contributor

Closes #567

Summary

  • Implements the complete SPARQL 1.1 Update execution engine (INSERT DATA, DELETE DATA, DELETE WHERE, MODIFY, CREATE, CLEAR, DROP, ADD, COPY, MOVE, LOAD).
  • Adds AST support for MODIFY requests (ModifyRequestAst) and quad templates with validation (UpdateTemplateValidator, ModifyUpdateAstListener, SparqlQuadTemplateBuilder).
  • Introduces NextSparqlUpdateExecutor orchestrating update requests, re-using NextSparqlPipelineExecutor for WHERE pattern evaluation.
  • Resolves the Halloween problem by materializing all deletions and insertions before mutating storage.
  • Adds request-level transactions and savepoints for SILENT operations via UpdateTransaction.
  • Implements optimistic snapshot isolation and transaction management in MemoryStorageManager (MemoryTransactionManager, InMemoryStatementStore versioned snapshots).
  • Integrates updates with CoreseRepositoryConnection (auto-commit and caller-managed transactions).
  • Increases SPARQL 1.1 W3C conformance to 98.8% (489/495 passing, 100% of W3C update suite passing).

- Implement parser and AST for MODIFY requests and quad templates
- Introduce NextSparqlUpdateExecutor supporting all SPARQL 1.1 Update operations
- Ensure snapshot isolation to prevent Halloween problem during MODIFY execution
- Add UpdateTransaction with request-level commit/rollback and SILENT savepoints
- Add optimistic snapshot isolation and transaction support in MemoryStorageManager
- Integrate update execution with RepositoryConnection auto-commit and active transactions
- Add comprehensive test coverage in CoreseUpdateExecutionTest and MemoryTransactionManagerTest

Closes #567
@remiceres
remiceres merged commit 3db673b into feature/corese-next Sep 18, 2026
1 check passed
@remiceres
remiceres deleted the feature/567-sparql-update branch September 18, 2026 09:55
@github-actions

Copy link
Copy Markdown
Overall Project 55.48% -0.03% 🍏
Files changed 95.1% 🍏

File Coverage
StorageManager.java 100% 🍏
UpdateGraphStore.java 100% 🍏
SparqlAntlrDispatcher.java 100% 🍏
UpdateTemplateValidator.java 100% 🍏
ModifyRequestAst.java 100% 🍏
MemoryStorageManager.java 100% 🍏
ModifyUpdateAstListener.java 100% 🍏
InMemoryStatementStore.java 99.79% -0.21% 🍏
SparqlQuadTemplateBuilder.java 99.61% -0.39% 🍏
UpdateTemplate.java 98.75% -1.25% 🍏
UpdateLoader.java 98.53% -1.47% 🍏
SparqlUpdateAstBuilder.java 95.03% -0.83% 🍏
SparqlQueryAnalyzer.java 95.02% 🍏
MemoryTransactionManager.java 94.5% -5.5% 🍏
UpdateSnapshot.java 93.07% -6.93% 🍏
NextSparqlUpdateExecutor.java 92.93% -7.07% 🍏
NextSparqlPipelineExecutor.java 89.39% 🍏
UpdateTransaction.java 88.57% -11.43% 🍏
MutationOperations.java 85.29% -14.71%
CoreseRepository.java 84.8% 🍏
GraphMutationOperations.java 83.82% -2.31% 🍏
CoreseUpdate.java 82.67% -17.33% 🍏
CoreseRepositoryConnection.java 82.26% 🍏
MemoryMutationOperations.java 81.68% 🍏
UpdateRequestAst.java 74.65% -22.54%
UpdateDatasetView.java 58.67% -41.33%

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