Skip to content

Drop support for Jena 5.3, RDF4J 4 and 5 - #711

Merged
Ostrzyciel merged 9 commits into
mainfrom
piotr/rdf4j-6
Aug 18, 2026
Merged

Ostrzyciel merged 9 commits into
mainfrom
piotr/rdf4j-6

Conversation

@Ostrzyciel

Copy link
Copy Markdown
Member

Jena 5.3 was previously required mainly for jelly-cli, but it's upgrading to Jena 6: Jelly-RDF/cli#308

I initially tried supporting both RDF4J 5 and 6, but it's a major pain, as RDF4J completely changed class hierarchies. It's possible to work around with some very complex sbt magic and by spaghettifying the test matrix, but honestly... I don't think it's worth it.

This way, we have both Jena and RDF4J on versions that support RDF 1.2.

Builds for neosemantics had to be dropped, because neosemantics is stuck on RDF4J 4 (a version released in June 2024...). Their CVEs are not my business... Anyway, Neo4j people can keep using Jelly-JVM 3.x.

Merge GH-622/drop-jena-5.3 and take RDF4J to 6.0.0, so both integrations
speak RDF 1.2 triple terms and no version-compat shims are needed anywhere.

RDF4J side:
- Bump to RDF4J 6.0.0 and use TripleTerm / ValueFactory.createTripleTerm
  directly. RDF4J 6 replaced the RDF-star API (Triple, createTriple) with
  the RDF 1.2 one, just as Jena did in 5.4.
- Drop the Rdf4jCompatHelper shim, the Rdf4jTripleTerms{,5,6} strategy
  classes, the Rdf4j6Probe, and the rdf4j-compat5 module.
- Note that Triple extended Resource while TripleTerm extends only Value:
  RDF 1.2 allows triple terms in object position only. JenaToRdf4jAdapter
  now rejects them elsewhere instead of silently building a bad term.

Tests:
- Teach the generalized N-Triples/N-Quads test parsers to skip the RDF 1.2
  version directive, in both its `VERSION "1.2"` and `@version "1.2" .`
  spellings, which RDF 1.2 writers emit.
- Mark the RDF4J test implementations as RDF 1.2 rather than RDF-star, and
  filter unsupported cases in NonDelimitedDesSpec like the sibling specs do.

Build and CI:
- RDF4J 6 ships Java 25 bytecode, so JDK 25 is now the build baseline; the
  artifacts still target Java 21. CI tests on JDK 25 and 26, against the
  oldest and newest supported Jena.
- Park jelly-neo4j-plugin: it runs beside Neosemantics, which fat-jars
  RDF4J 4.3.12, and Neo4j 5.26 targets Java 17 — it cannot follow RDF4J to
  6. Sources are kept; it is no longer aggregated, built, or released.
@Ostrzyciel
Ostrzyciel marked this pull request as draft August 17, 2026 19:57
@codecov

codecov Bot commented Aug 17, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 56.25000% with 7 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...ink/jelly/convert/rdf4j/Rdf4jEncoderConverter.java 0.00% 2 Missing ⚠️
...blink/jelly/convert/jena/JenaDecoderConverter.java 0.00% 1 Missing ⚠️
...blink/jelly/convert/jena/JenaEncoderConverter.java 0.00% 1 Missing ⚠️
...ink/jelly/convert/jena/riot/JellyStreamWriter.java 0.00% 1 Missing ⚠️
...ert/jena/riot/JellyStreamWriterAutodetectType.java 0.00% 1 Missing ⚠️
...jelly/convert/rdf4j/BaseRdf4jDecoderConverter.java 0.00% 1 Missing ⚠️
Files with missing lines Coverage Δ Complexity Δ
...everblink/jelly/core/internal/NodeEncoderImpl.java 98.58% <100.00%> (ø) 34.00 <0.00> (ø)
...k/jelly/convert/rdf4j/rio/JellyParserSettings.java 63.63% <100.00%> (ø) 0.00 <0.00> (ø)
...k/jelly/convert/rdf4j/rio/JellyWriterSettings.java 53.12% <100.00%> (ø) 0.00 <0.00> (ø)
...blink/jelly/convert/jena/JenaDecoderConverter.java 45.45% <0.00%> (ø) 0.00 <0.00> (ø)
...blink/jelly/convert/jena/JenaEncoderConverter.java 38.46% <0.00%> (ø) 0.00 <0.00> (ø)
...ink/jelly/convert/jena/riot/JellyStreamWriter.java 82.53% <0.00%> (-1.34%) 0.00 <0.00> (ø)
...ert/jena/riot/JellyStreamWriterAutodetectType.java 97.95% <0.00%> (-2.05%) 0.00 <0.00> (ø)
...jelly/convert/rdf4j/BaseRdf4jDecoderConverter.java 37.50% <0.00%> (ø) 0.00 <0.00> (ø)
...ink/jelly/convert/rdf4j/Rdf4jEncoderConverter.java 7.50% <0.00%> (ø) 0.00 <0.00> (ø)

... and 9 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Ostrzyciel
Ostrzyciel marked this pull request as ready for review August 17, 2026 20:09
@Ostrzyciel
Ostrzyciel merged commit a770de2 into main Aug 18, 2026
9 of 11 checks passed
@Ostrzyciel
Ostrzyciel deleted the piotr/rdf4j-6 branch August 18, 2026 09:48
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.

2 participants