Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[lyo-dev] Fwd: Jena5: what to expect

FYI

28 Dec 2023 11:41:25 Andy Seaborne <andy@xxxxxxxxxx>:

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.
Artifacts are Java17 bytecode.
Java 17 language constructs now are used in the codebase.

** Term graphs

Graphs are now term graphs in the API or SPARQL. That is, they do not match "same value" for some of the java mapped datatypes. The model API already normalizes values written.

The default in-memory graphs become term graphs.

TDB1, TDB2 keep their value canonicalization during data loading.

A legacy value-graph implementation can be obtained from GraphMemFactory.

** 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.

** RRX - New RDF/XML parser

RRX is the default RDF/XML parser. It is a replacement for ARP.
RIOT uses RRX.

* daml:collection is not supported.
* Strict rdf:parseType
* Relative namespaces supported.

The ARP parser is still temporarily available for 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

"PREFIX" and "BASE" are output by default for Turtle and TriG output.


==== 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 general QueryExecution builders are full 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.


Back to the top