|
| 1 | +--- |
| 2 | +title: "5.3.0" |
| 3 | +toc: true |
| 4 | +--- |
| 5 | +RDF4J 5.3.0 is a minor release that fixes 22 issues since 5.2.2. |
| 6 | + |
| 7 | +### Highlights |
| 8 | + |
| 9 | +* Query observability is much stronger in 5.3.0. Query explanations now carry richer runtime telemetry ([GH-5701](https://github.com/eclipse-rdf4j/rdf4j/issues/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](https://github.com/eclipse-rdf4j/rdf4j/issues/5713)). The new experimental `QueryPlanSnapshotCli` helps capture and compare plans across benchmark runs ([GH-5691](https://github.com/eclipse-rdf4j/rdf4j/issues/5691)). |
| 10 | +* Server deployment is easier. RDF4J now ships a self-contained Spring Boot distribution for Server and Workbench as `rdf4j-server-boot` ([GH-1502](https://github.com/eclipse-rdf4j/rdf4j/issues/1502)), and the Spring components now include a lightweight `rdf4j-spring-boot-sparql-web` wrapper for SPARQL-only HTTP services. |
| 11 | +* Several hot paths were optimized. LMDB writes are faster when transaction isolation is enabled ([GH-5748](https://github.com/eclipse-rdf4j/rdf4j/issues/5748)), DISTINCT evaluation and related query-engine paths were tightened ([GH-5716](https://github.com/eclipse-rdf4j/rdf4j/issues/5716)), and `AbstractMemoryOverflowModel` now uses `DynamicModel` to reduce intermediate-model overhead ([GH-5711](https://github.com/eclipse-rdf4j/rdf4j/issues/5711)). |
| 12 | +* Result export and parsing grew more capable. Tuple query results can now be written directly as `.xlsx` and `.ods` spreadsheets ([GH-5290](https://github.com/eclipse-rdf4j/rdf4j/issues/5290)), and the JSON-LD parser can be supplied with an expansion context to refine how incoming documents are interpreted ([GH-5573](https://github.com/eclipse-rdf4j/rdf4j/issues/5573)). |
| 13 | + |
| 14 | +### Query Engine And APIs |
| 15 | + |
| 16 | +* RDF4J now ships an experimental `rdf4j-queryrender` module with a more complete SPARQL renderer and IR-based algebra-to-text pipeline ([GH-5604](https://github.com/eclipse-rdf4j/rdf4j/issues/5604)). |
| 17 | +* `Var.of(...)` factories and the `Var.Provider` SPI allow libraries to plug in custom query-model variable implementations without changing call sites ([GH-5604](https://github.com/eclipse-rdf4j/rdf4j/issues/5604)). |
| 18 | +* SHACL now includes a fluent `ShaclValidator` builder API ([GH-5646](https://github.com/eclipse-rdf4j/rdf4j/issues/5646)) and more precise control over inferred statements during validation ([GH-5676](https://github.com/eclipse-rdf4j/rdf4j/issues/5676)). |
| 19 | +* Custom SPARQL aggregate functions can now accept positioned additional parameters ([GH-5626](https://github.com/eclipse-rdf4j/rdf4j/issues/5626)). |
| 20 | +* NativeStore's ValueStore now uses a write-ahead log to improve recovery from value corruption ([GH-5520](https://github.com/eclipse-rdf4j/rdf4j/issues/5520)). |
| 21 | + |
| 22 | +### Server, Workbench, And Operations |
| 23 | + |
| 24 | +* 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](https://github.com/eclipse-rdf4j/rdf4j/issues/5713)). |
| 25 | +* 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](https://github.com/eclipse-rdf4j/rdf4j/issues/5565)). The console `load` command gained the same option. |
| 26 | +* 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](https://github.com/eclipse-rdf4j/rdf4j/issues/5291)). |
| 27 | +* Docker images were updated to newer JDK baselines (JDK 21 and JDK 25) ([GH-5608](https://github.com/eclipse-rdf4j/rdf4j/issues/5608)). |
| 28 | + |
| 29 | +### Bug Fixes And Compatibility Notes |
| 30 | + |
| 31 | +* Fixed a 5.2.2 regression where `RepositoryFederatedService` could lose application-specific thread context during background SERVICE evaluation ([GH-5732](https://github.com/eclipse-rdf4j/rdf4j/issues/5732)). |
| 32 | +* `GraphPatterns.filterNotExists(...)` is no longer lost when appended to an empty `GraphPatterns.and()` in the query builder ([GH-5561](https://github.com/eclipse-rdf4j/rdf4j/issues/5561)). |
| 33 | +* Solr Sail is now deprecated for removal in the next major release ([GH-5631](https://github.com/eclipse-rdf4j/rdf4j/issues/5631)). |
| 34 | +* A broad set of Elasticsearch integration APIs were deprecated for removal in preparation for a future client refresh. |
| 35 | +* FedX now carries deprecation notices on several legacy evaluation, join, and demo APIs as federation internals move toward a more unified strategy ([GH-5663](https://github.com/eclipse-rdf4j/rdf4j/issues/5663)). |
| 36 | + |
| 37 | +For a complete overview, see [all issues fixed in 5.3.0](https://github.com/eclipse-rdf4j/rdf4j/milestone/124?closed=1). |
| 38 | + |
| 39 | +### Acknowledgements |
| 40 | + |
| 41 | +This release was made possible by contributions from [Jerven Bolleman](https://github.com/JervenBolleman), [Piotr Sowiński](https://github.com/Ostrzyciel), [Andreas Schwarte](https://github.com/aschwarte10), [Håvard M. Ottestad](https://github.com/hmottestad), [Nikita Kozlov](https://github.com/nk2IsHere), [Christian Kleinbölting](https://github.com/seakayone). |
0 commit comments