Jena5 is the next planned release for Apache Jena.
** All issues for Jena5:
https://github.com/apache/jena/issues?q=is%3Aissue+label%3AJena5
** Java Requirement
Java 17 or later is required.
Java 17 language constructs now are used in the codebase.
** Language tags
Language tags become are case-insensitive unique.
"abc"@EN and "abc"@en are the same RDF term.
Internally, language tags are formatted using the algorithm of RFC 5646.
Examples "@en", "@en-GB", "@en-Latn-GB".
SPARQL LANG(?literal) will return a formatted language tag.
Data stored in TDB using language tags must be reloaded.
** Term graphs
The default in-memory graphs become term graphs for consistency across
all Jena storage options; they do not match "same value" for some of the
java mapped datatypes e.g int 1 does not match "001"^^xsd:int. The model
API has always normalized values written, e.g. "1"^^xsd:int
TDB1, TDB2 keep their value canonicalization during data loading.
A legacy value-graph implementation can be obtained from GraphMemFactory.
** RRX - New RDF/XML parser
RRX is a new RDF/XML parser. It is a replacement for ARP and will be the
default.
Differences to ARP:
* daml:collection is not supported.
* Strict rdf:parseType
* Relative namespaces supported.
The ARP parser will, temporarily, still available for any
transition assistance.
** Remove support for JSON-LD 1.0
JSON-LD 1.1, using Titanium-JSON-LD, is the supported version of JSON-LD.
https://github.com/filip26/titanium-json-ld
** Turtle/Trig Output
The "PREFIX" and "BASE" forms are output by default for Turtle and TriG
output. See RIOT.symTurtleDirectiveStyle.
==== API Users
** Deprecation removal
There has been a general clearing out of deprecated functions, methods
and classes. This includes deprecations in Jena 4.10.0 added to show
code that is being removed in Jena5.
** QueryExecutionFactory
QueryExecutionFactory is simplified to cover commons cases only; it
becomes a way to call the more general QueryExecution builders which
support custom query execution setup.
Local execution builder:
QueryExecution.create()...
Remote execution builder:
QueryExecution.service(URL)...
** QueryExecution variable substitution
Using "substitution", where the query is modified by replacing one or
more variables by RDF terms, is now preferred to using "initial
bindings", where query solutions include (var,value) pairs.
"substitution" is available for all queries, local and remote, not just
local executions.
==== Fuseki Users
Fuseki: Uses the jakarta namespace for servlets and Fuseki has been
upgraded to use Eclipse Jetty12.
Apache Tomcat10 or later, is required for running the WAR file.
Tomcat 9 or earlier will not work.