5.3.0
RDF4J 5.3.0 is a minor release that fixes 22 issues since 5.2.2.
Highlights
- Query observability is much stronger in 5.3.0. Query explanations now carry richer runtime telemetry (GH-5701), can be requested and cancelled over HTTP, and are exposed in Workbench with text, JSON, and DOT views plus side-by-side comparison support (GH-5713). The new experimental
QueryPlanSnapshotCli helps capture and compare plans across benchmark runs (GH-5691). - Server deployment is easier. RDF4J now ships a self-contained Spring Boot distribution for Server and Workbench as
rdf4j-server-boot (GH-1502), and the Spring components now include a lightweight rdf4j-spring-boot-sparql-web wrapper for SPARQL-only HTTP services. - Several hot paths were optimized. LMDB writes are faster when transaction isolation is enabled (GH-5748), DISTINCT evaluation and related query-engine paths were tightened (GH-5716), and
AbstractMemoryOverflowModel now uses DynamicModel to reduce intermediate-model overhead (GH-5711). - Result export and parsing grew more capable. Tuple query results can now be written directly as
.xlsx and .ods spreadsheets (GH-5290), and the JSON-LD parser can be supplied with an expansion context to refine how incoming documents are interpreted (GH-5573).
Query Engine And APIs
- RDF4J now ships an experimental
rdf4j-queryrender module with a more complete SPARQL renderer and IR-based algebra-to-text pipeline (GH-5604). Var.of(...) factories and the Var.Provider SPI allow libraries to plug in custom query-model variable implementations without changing call sites (GH-5604).- SHACL now includes a fluent
ShaclValidator builder API (GH-5646) and more precise control over inferred statements during validation (GH-5676). - Custom SPARQL aggregate functions can now accept positioned additional parameters (GH-5626).
- NativeStore’s ValueStore now uses a write-ahead log to improve recovery from value corruption (GH-5520).
Server, Workbench, And Operations
- Workbench query pages can run asynchronous EXPLAIN requests, cancel long-running explanations, and render plans as text, JSON, or DOT graphs. Compare mode makes it easier to inspect plan changes side by side (GH-5713).
- Server and Workbench data-import flows can now choose a transaction isolation level during upload, instead of always relying on the repository default (GH-5565). The console
load command gained the same option. - LuceneSail no longer has to fsync on every transaction commit. Applications can now choose between
commit() and flush() behavior to trade raw durability against much better ingest throughput (GH-5291). - Docker images were updated to newer JDK baselines (JDK 21 and JDK 25) (GH-5608).
Bug Fixes And Compatibility Notes
- Fixed a 5.2.2 regression where
RepositoryFederatedService could lose application-specific thread context during background SERVICE evaluation (GH-5732). GraphPatterns.filterNotExists(...) is no longer lost when appended to an empty GraphPatterns.and() in the query builder (GH-5561).- Solr Sail is now deprecated for removal in the next major release (GH-5631).
- A broad set of Elasticsearch integration APIs were deprecated for removal in preparation for a future client refresh.
- FedX now carries deprecation notices on several legacy evaluation, join, and demo APIs as federation internals move toward a more unified strategy (GH-5663).
For a complete overview, see all issues fixed in 5.3.0.
Acknowledgements
This release was made possible by contributions from Jerven Bolleman, Piotr Sowiński, Andreas Schwarte, Håvard M. Ottestad, Nikita Kozlov, Christian Kleinbölting.