Skip to content

feat(query): implement SPARQL 1.1 Property Paths (/, ^, *, +, !) - #590

Merged
remiceres merged 1 commit into
feature/corese-nextfrom
feature/566-property-paths
Sep 16, 2026
Merged

remiceres merged 1 commit into
feature/corese-nextfrom
feature/566-property-paths

Conversation

@remiceres

Copy link
Copy Markdown
Contributor

Closes #566

Summary

  • Implements SPARQL 1.1 Property Paths (/, ^, *, +, ?, !) in the corese-next query engine.
  • Introduces PropertyPath domain model (Sequence, Alternative, Inverse, Repetition, Negated) in fr.inria.corese.core.next.query.impl.engine.path with zero AST leakage.
  • Compiles path expressions via PropertyPathCompiler and encapsulates paths into PropertyPathEdge.
  • Evaluates paths with NativePropertyPathEvaluator implementing W3C ALP (Arbitrary Length Path) cycle-safe semantics, multiset cardinality preservation for sequences/alternatives, and proper zero-length handling.
  • Wires property path edges through StorageManagerProducer.
  • Passes 100% of W3C SPARQL 1.1 Property Path conformance suite (31/31 tests).

- Introduce PropertyPath model (Sequence, Alternative, Inverse, Repetition, Negated)
- Add PropertyPathEdge and PropertyPathCompiler in sparql bridge
- Implement NativePropertyPathEvaluator with cycle-safe ALP and bag semantics
- Wire PropertyPathEdge into StorageManagerProducer
- Add unit and integration tests in NextSparqlPipelineExecutorTest

Closes #566
@remiceres
remiceres merged commit a250db3 into feature/corese-next Sep 16, 2026
@remiceres
remiceres deleted the feature/566-property-paths branch September 16, 2026 13:34
@github-actions

Copy link
Copy Markdown
Overall Project 54.87% -0.01% 🍏
Files changed 95.44% 🍏

File Coverage
PropertyPath.java 100% 🍏
PropertyPathCompiler.java 100% 🍏
WhereCompiler.java 97.34% 🍏
NativePropertyPathEvaluator.java 97.25% -2.75% 🍏
StorageManagerProducer.java 66.98% 🍏
PropertyPathEdge.java 50% -50%

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