==== Apache Jena 4.9.0
Released: 2023-07-08
Issues: https://s.apache.org/jena-4.9.0-issues
Announcement: 
https://lists.apache.org/thread/vhn0olwcmv755np52qqddn74d5hrnot8

In this release:

* New in-memory graph implementations

* Important update to Fuseki UI.
   Switch from TriplyDB/(yasr,yasqe) to zazuko/(yasr,yasqe)
   This changes picks up some security fixes in yasr and
   Fuseki users are advised to upgrade to get these fixes.

* Prepare for Jena5:
   Deprecate JSON-LD 1.0 constants
   Deprecate API calls that may be removed.

== Notes

All issues: https://s.apache.org/jena-4.9.0-issues

There is a CHANGES.txt in the root of the repository
with the history of previous announcement messages.

== Jena5

Plans for jena5 include:
* Require Java17
* Move from javvax.servlet.* to jakara.servlet.* (Jetty11)
* Drop JSON-LD 1.0 subsystem.

It will not happen until after Java21 is released in
keeping with the policy of supporting two java versions.

Jena 4.9.0 is built for a minimum of Java11.
It has been tested on Java17 and Java21 EA.

==== Items in this release

Arne Berdhardt
https://github.com/apache/jena/issues/1912
New implementations of in-memory graphs with better storage and performance.

See the issue for performance details.

See GraphMemFactory for access to these new graph implementations.

Arne has also provided a performance analysis and improvements for the 
existing default in-memory graphs together with a benchmarking framework
   https://github.com/apache/jena/pull/1279

-- 

Switch from TriplyDB/(yasr,yasqe) to zazuko/(yasr,yasqe)
to pick up fixes.
Thank you Zazuko!

This changes picks up some security fixes in yasr and users are advised 
to upgrade to get these fixes.

-- 

SERVICE on/off control
https://github.com/apache/jena/pull/1906

Provide the ability to switch off all SERVICE processing completely.
Use
   Code: arq:httpServiceAllowed
   or http://jena.apache.org/ARQ#httpServiceAllowed=false
to disable.

e.g.
   fuseki-server --set arq:httpServiceAllowed=false ....

-- 

Additional restrictions and control for SPARQL script functions
   https://github.com/apache/jena/pull/1908

There is a new Jena context setting
   http://jena.apache.org/ARQ#scriptAllowList
which is on the command line:
   arq:scriptAllowList
and java constant
   ARQ.symCustomFunctionScriptAllowList

Its value is a comma separated list of function names.
   "function1,function2"
Only the functions in this can be called from SPARQL.

As in Jena 4.8.0, the Java system property "jena:scripting" must also be 
set to "true" to enable script functions.
   Website (when published):
   https://jena.apache.org/documentation/query/javascript-functions

-- 

Track RDF 1.2 and SPARQL 1.2
Specific SPARQL 1.2 parser, tracking the RDF-star working group.
   All features are also available in the default SPARQL parser.

-- 

Ryan Shaw(@rybesh)
   new Turtle RDFFormat
   https://github.com/apache/jena/issues/1924

-- 

Simon Bin (@SimonBin)
   A fix for incorrect integer cast in scripting.NV
   https://github.com/apache/jena/pull/1851

-- 

Alexander Ilin-Tomich (@ailintom)
   Fix for SPARQL_Update verification and /HTTP PATCH

-- 

Ryan Shaw (@rybesh)
   Script fix for additional classpath elements
   https://github.com/apache/jena/pull/1877

-- 

FusekiModules:
Issue: https://github.com/apache/jena/issues/1897

There is a change in that the interface for automatically loading 
modules from the classpath has changed to FusekiAutoModule. The 
interface FusekiModule is now the configuration lifecycle only. This is 
to allow for programmatically set up a Fuskei server with Fuseki 
modules, including custom one from the calling application.


==== Apache Jena 4.8.0
Released: 2023-04-23
Issues: https://s.apache.org/jena-4.8.0-issues
Announcement: 
https://lists.apache.org/thread/o5x5tls77t13c3mc93dp2h4fgh1hr6kp

* The RDF/XML parser has been converted to use the
  Jena IRI abstraction IRIx.
  https://github.com/apache/jena/issues/1773

See below.

* New keyword in SPARQL : "ADJUST"
  https://github.com/apache/jena/issues/1706

ADJUST adjusts the timezone of time and date related datatypes.
It calls one of:
  fn:adjust-dateTime-to-timezone
  fn:adjust-date-to-timezone
  fn:adjust-time-to-timezone
based on argument type.

== Notes

All issues: https://s.apache.org/jena-4.8.0-issues

There is a CHANGES.txt in the root of the repository
with the history of announcement messages.

@lucasvr (Lucas C. Villa Real) provided an analysis and improvement to bulk loading operations.
  https://github.com/apache/jena/issues/1803
  https://github.com/apache/jena/pull/1819

@wjl110 - Shiro upgrade PR#1728
  https://github.com/apache/jena/pull/1728

Lucene upgrade from 9.4.2 to 9.5.0
  https://github.com/apache/jena/pull/1740
  https://lists.apache.org/thread/696xgpyg2441kzdowmp1b40tshctw25c

@dplagge (Daniel Plagge) - Delta graph fix
https://github.com/apache/jena/issue/1751

Simon Bin: Fix for sharing link in Fuseki and YASGE
  https://github.com/apache/jena/issues/1745

Improved performance of "GRAPH ?g {}" (all graph names)
Prefix scan -- GRAPH ?G
  https://github.com/apache/jena/issues/1639
  https://github.com/apache/jena/pull/1655

Custom Javascript execution checking:
  Use of javascript or Python to write custom functions
  new requires system property -Djena:scripting=true

@nichtich (Jakob Voß) jena-site improvements:
  https://github.com/apache/jena-site/pull/151

@sverholen JENA-2350 Pass JsonLdOptions to titanium for json-ld 1.1

Simon Bin: Fix for working on non-root gsp-rw endpoint
   https://github.com/apache/jena/issues/1679

== RDF/XML reader changes.

* The RDF/XML parser has been converted to use the
  Jena IRI abstraction IRIx.
  https://github.com/apache/jena/issues/1773

Uses of RDF/XML read through RIOT (RDFDataMgr, RDFParser) and from the command line "riot" should see no changes except where both WARN and ERROR were reported, now only the ERROR happens.

Code that directly calls the RDF/XML parser will encounter the behaviour seen from RIOT. Relative IRIs will not be in the parsed data. IRI errors are reported as errors.

The original RDF/XML parser is still accessible:
https://jena.apache.org/documentation/io/rdfxml-io.html

From the command line: "riot --set xmlrdf:xmlrdf0=true ..."

This is the first part of a move to convert the RDF/XML parser to be consistent with the rest of Jena parsing

1. unified IRI treatment of error handling and reporting throughout Jena
2. improve maintainability
3. allow for alternative providers of IRI functionality


==== Apache Jena 4.7.0
Released: 2023-01-03
Issues: https://s.apache.org/jena-4.7.0-issues
Announcement:
https://lists.apache.org/thread/2flk0xyz1bf0xpfmk1jgz74cvdog40z9

Major items:

* Lucene upgrade  8.11.1 to 9.4.1 - @OyvindLGjesdal
    There are changes to the stopword setting in the default
    configuration of Lucene's StandardAnalyzer
  Issue: https://github.com/apache/jena/issues/1581
  PR: https://github.com/apache/jena/pull/1582


* LATERAL joins
    This is an experimental feature.
  Documentation:
    https://jena.apache.org/documentation/query/lateral-join.html


* RDF Patch
  Documentation:
    https://jena.apache.org/documentation/rdfpatch/


* Path improvements - @SimonBin et al
  https://github.com/apache/jena/pull/1616
  https://github.com/apache/jena/pull/1638
  Plan: https://github.com/apache/jena/issues/1629

All GH issues for this release:

Contributors:
  OyvindL Gjesdal
  Simon Bin
  Alexandre Ardhuin
  Claus Stadler
  Brian Vvosburgh
  Eric Prud'hommeaux


==== Apache Jena 4.6.1
Released: 2022-09-06
Announcement:
https://lists.apache.org/thread/vrkn42nkr82wlkwyv4vlg57rqg035kx2

This release has a bug fix release for TDB2 and Fuseki.
https://github.com/apache/jena/issues/1499

Users should upgrade from 4.6.0. 


==== Apache Jena 4.6.0
Released: 2022-08-25
Issues: https://s.apache.org/jena-4.6.0-issues
Announcement:
https://lists.apache.org/thread/63vtkb9hwzzd9mrmmxr2xsmd5zvw53vv

-- Bulk retrieval and caching for SERVICE clauses

There is a new module "jena-serviceenhancer", a contribution from Claus Stadler, for federated query, including caching remote data and controlling execution order for SERVICE.

https://jena.apache.org/documentation/query/service_enhancer.html

-- GeoSPARQL: GML handling.

GH-1299 - The GeoSPARQL has acknowledged a mistake in their documentation whereby the wrong namespace was being used for "gml:".
https://github.com/opengeospatial/ogc-geosparql/pull/334

This also leads to problems with interoperation with GML data sources.
Unfortunately the change impacts impacts existing data and any spatial indexes would will need to be deleted and rebuilt.

https://github.com/apache/jena/issues/1299

-- SHACL listener

This contribution by Florian Kleedorfer adds listeners to the SHACL validation execution.

https://jena.apache.org/documentation/shacl/#validationlistener

-- Helper for authentication with a bearer token.

GH-1292: https://github.com/apache/jena/issues/1292
Add support for authentication with a bearer token

https://jena.apache.org/documentation/sparql-apis/http-auth#bearer-authentication

-- Contributions:

@swartik - script fix
@sszuev - context handling
@AtesComp - improvement to node checking.

== Details

GH issues:
https://github.com/apache/jena/issues?q=is%3Aissue+closed%3A2022-05-04..2022-08-20

JIRA Tickets this release:
https://s.apache.org/jena-4.6.0-jira


==== Apache Jena 4.5.0
Released: 2022-05-04
Issues: https://s.apache.org/jena-4.5.0-issues
Announcement:
https://lists.apache.org/thread/qgjynztx70fhz7h86o6dfopv14dtgrc2

* New, faster, streaming, more robust JSON result set reader.
   https://issues.apache.org/jira/browse/JENA-2302
   Contribution from Claus Stadler

* JENA-2315, JENA-2316 -- SHACL fixes (Jakub Wach)

* Improvement to GitHub actions :: @neilnaveen

== JSON-LD 1.1

* JSON-LD 1.1 is the default for parsing and writing JSON-LD

Apache Jena uses titanium-json-ld:
   https://github.com/filip26/titanium-json-ld

JSON-LD 1.1 is largely compatible with JSON-LD 1.0.

The JSON-LD working group listed the visible changes:
https://www.w3.org/TR/json-ld11/#changes-from-10

If you find JSON-LD has changed in the triples generated, you can test 
JSON-LD 1.0 compared to  1.1 with the json-ld.org playground:

   https://json-ld.org/playground/
   https://json-ld.org/playground/1.0/

Announcement:
https://lists.apache.org/thread/qgjynztx70fhz7h86o6dfopv14dtgrc2

== Details

GH issues:
https://github.com/apache/jena/issues?q=is%3Aissue+closed%3A2022-01-30..2022-05-04

JIRA Tickets this release:
https://s.apache.org/jena-4.5.0-jira


==== Apache Jena 4.4.0
Released: 2022-02-02
Announcement:
https://lists.apache.org/thread/6dp7ogjhj09qon25fx2jsfgk3ljff9hj

The Apache Jena development community is pleased to
announce the release of Apache Jena 4.4.0.

== New Fuseki UI

The main item in this release is the updated Fuseki UI thanks to work by 
Bruno.  The UI has been rewritten for improved maintenance and style. We 
look forward to evolving this new code base.

== Dependency Updates

   Apache log4j is at 2.17.1
   Apache Lucene: is updated to 8.10.1 -> 8.11.1
   Titanium JSON-LD updated 1.1.0 -> 1.2.0

as well as all other dependences being checked for updates.

== Community Contributions

Erich Bremer
Jan Martin Keil

== Fuseki war file

The war file for Fuseki is no longer in the apache-jena-fuseki zip 
download. Instead, it is available from the downloads page.

https://jena.apache.org/download/

This halves the size of the zip/tar.gz for the standalone server.

The Fuseki war file does not work in Tomcat10 due to the javax->jakarta 
switchover. Apache Tomcat provide a converter:
https://tomcat.apache.org/download-migration.cgi

== Fuseki: HTML file upload support

Fuseki: serviceUpload (HTML file upload only service) is no longer added 
in a default configuration.  Existing configurations are unaffected.

This is not SPARQL GSP.

GSP (POST/PUT) endpoint accepts HTML file uploads as well as the usual 
direct POST/PUT with content-type.

== Improved bulk loader

This release includes the version of the TDB2 xloader for very large 
datasets.

It has been used to load 16.6B triples (WikiData all) into TDB2 and 
loading truthy (6B) on modest hardware. Thanks to Marco, Lorenz and 
Øyvind for running Wikidata load trails.

The loader now now has "--threads=" which been reported to give improved 
load times  (if the server has the hardware!).

== Assembler for GeoSPARQL

This makes it easier to use GeoPSARQL in a plain Fuseki.

https://jena.apache.org/documentation/geosparql/geosparql-assembler.html

== All tickets in the release

https://s.apache.org/jena-4.4.0-jira


==== Apache Jena 4.3.2
Released: 2021-12-19
Annoucement:
https://lists.apache.org/thread/nh7mctmcx7yhjh3krjyy9jcfy9zdwqmb

The Apache Jena development community is pleased to
announce the release of Apache Jena 4.3.2.

This release updates the version of log4j2 used
in Fuseki to version 2.16.0 of log4j2.

Fuseki users should upgrade as soon as possible.

Uses of Jena libraries should to check their application logging 
dependences and update as necessary.

== Changes

JENA-2214: Upgrade to Log4j2 2.16.0

JENA-2216: Fuseki/GeoSPARQL startup fix.
JENA-2215: Fix inclusion of log4j in the Fuseki war file.


==== Apache Jena 4.3.1
Released: 2021-12-17
Annoucement:
https://lists.apache.org/thread/pgz3roryymvw6lf5zs43m0f8p48o11s7

This release updates the version of log4j2 used in Fuseki.

Fuseki users should upgrade as soon as possible.

Uses of Jena libraries should to check their application logging 
dependences and update as necessary.

== Changes

JENA-2211: Upgrade to Log4j2 2.15.0

JENA-2209, JENA-2210: xloader improvements

JENA-2207: Fix for SERVICE


==== Apache Jena 4.3.0
Released: 2021-12-09
Annoucement:
https://lists.apache.org/thread/j6xqhbzxw9ct0owl5ghd8zrpz9lqn5pl

* java.net.http

There is a change to use JDK java.net.http package for HTTP. This 
affects HTTP authentication.

See notes below.

* JENA-2125: Internal reorganisation of SPARQL APIs.

Coupled with the change to use java.net.http, new patterns for working 
with SPARQL have been added.

https://jena.apache.org/documentation/sparql-apis/#changes

* JENA-2175: xloader

There is a new experimental bulk loader for TDB2 "xloader" and TDB1 
tdblaoder2 is rename xloader. The TDB2 is better.

The target is being able to load large data on modest hardware. For 
example, 1B triples and beyond, loading to disk rather than SSD. It is 
reliable, rather than fast.

https://jena.staged.apache.org/documentation/tdb/tdb-xloader.html

tdb2.xloader is still in development to reduce its requirements for 
intermediate disk space - please provide feedback, positive and negative.

* All Tickets this release:
https://s.apache.org/jena-4.3.0-jira


Contributions:

Stefan Obermeier
  - Add jena-examples to modules in parent pom

Erich Bremer
  - Update EnhGraph.java

Florian Kleedorfer
  - Fix copy/paste error in validation report message

Jan-Martin Keil
  - Dataset: enable named Models with blank node name

jena-site:
   Michael Wechner
   michi AT wyona.com
   @den1s0v
   Robin Vobruba

== Notes

* HTTP usage provided by the JDK java.net.http package, with
challenge-based authentication provided on top by Jena.

* Execution objects (QueryExecution, UpdateExecution, RDFConnection)
have a companion builders for detailed configuration. Previous factory 
classes remain but builders are preferred.

This is especially important for HTTP as there many configuration
options that may be needed (including template queries).

* Timeouts - remote only supports the overall query execution. 
(connection timeout on HttpClient but due to connection caching and now 
HTTP/2 it is unclear how meaningful that is per request)

* HTTP/2 support (comes from using java.net.http package)

See notes on changes:

https://jena.apache.org/documentation/sparql-apis/#changes


==== Apache Jena 4.2.0
Released: 2021-09-16
Announcement:
https://lists.apache.org/thread/mwrdh3xtbm4ly1dk9ro2mdd82fppc9f2

* ShEx engine
   JENA-2112
   See https://jena.apache.org/documentation/shex/

* Support for reading JSON-LD 1.1
   JENA-1948
   JSON-LD 1.1 uses the Titanium system.
   https://github.com/filip26/titanium-json-ld

jsonld-java is still there for JSON-LD 1.0.
In this release, JSON-LD 1.0 is the default for reading JSON-LD.

JENA-2114: SHACL: Provide SPARQL targets

JENA-2123: Upgrade to Jetty10

Contributions:

Claus Sadler:
JENA-2132 : RDF-star fix
JENA-2154 : Custom SERVICE executors
   Experimental: Using SERVICE for extension functionality.

Erich Bremer:
JENA-2159: schema.org vocabulary
JENA-2155: Add Web Access Control vocabulary

Jan Martin Keil:
JENA-2142: Extend DatatypeFormatException

Tickets this release:
https://s.apache.org/jena-4.2.0-jira

== Notes

This release does not include binary artifacts for OSGi.

Due to problems encountered late in the development cycle, we have not 
released OSGi artifacts to maven central.

If you are able to help with the production of Jena's OSGi artifacts, 
please drop into the dev@ list.


==== Apache Jena 4.1.0
Released: 2021-06-04 
Announcement:
https://lists.apache.org/thread/m7m73dl7mgp3k5ljolc1tvrt7b202l3w

* RDF-star implementation up-to-date with community work.

* IRIx fixes

* Datasets+RDFS

JENA-2081: Add /$/compact/* endpoint to Fuseki main
Brandon Sarà

JENA-2096: Add CLI&Fuseki parameters to delete old DB after compaction
Brandon Sarà

JENA-2086: TDB2 improvement - read under load
   report and analysis : Zak Mc Kracken

JENA-1262: Sorting prefixes in pretty Turtle output
Merlin Bögershausen

Documentation edits:
Leon Poon

JENA-2110: a quick reference section to documentation/tools/
Bob DuCharme

jena-permissions
https://jena.apache.org/documentation/permissions/

Datasets+RDFS
JENA-2089
https://jena.apache.org/documentation/rdfs/

RDF-star:
JENA-2107 : Performance fix (Lorenz Bühmann)
JENA-2103 : Align to RDF-star community work
JENA-2080 : RDF-star/Trix-star

IRI cleanup:
JENA-2097 : UUID IRIs cause RiotException
JENA-2094 : Valid IRI using @ Symbol causes error

Graph API:
JENA-2909: Add Graph.stream(s,p,o)
JENA-2091: Add Graph.add(s,p,o) and Graph.delete(s,p,o)


27 tickets this release:
https://s.apache.org/jena-4.1.0-jira


==== Apache Jena 4.0.0
Released:2021-04-01
Annoucement:
https://lists.apache.org/thread/m7m73dl7mgp3k5ljolc1tvrt7b202l3w

The Apache Jena development community is pleased to
announce the release of Apache Jena 4.0.0

* Require Java11 runtime.

* RDF-star implementation up-to-date with community work.

* IRIx abstraction
   See notes about future changes.

* Add support for scripting languages other than JavaScript
   JENA-1951 - Pavel Mikhailovskii

* Model API fix Alt, Seq, Bag (Containers)
   JENA-2075

* jena-core: rename RDFReader as RDFReaderI
   and RDFWriter a RDFWriterI to avoid name clashes
   JENA-2038

* Upgrade to Apache Lucene 8.8.0
   See notes.

* Remove property functions:
         list:listMember list:listIndex, list:listLength
    Use list:member, list:index, list:length

* Retire modules SDB, jena-text-es, and jena-elephas

* The default git branch is 'main'

* Deprecation cleanup

62 tickets this release:
https://s.apache.org/jena-4.0.0-jira

== Notes

Lucene:

This is a major version number upgrade. Apache Lucene policy is 
generally "two major versions" so if your text index was created awhile 
ago, you may need to reload even if you have been upgrading Jena itself.

     https://lucene.apache.org/core/8_8_0/MIGRATE.html

IRIs:

There is a new internal API for working with different IRI implementations.

The implementation in Jena 4.0.0 is the same as Jena3 jena-iri.

There a some areas to be aware of for future changes:

+ %ZZ (%-and non-hex digits) are illegal syntax in IRIs.
   It has never been legal in the RFCs but could be read in.

+ urn: The correct form of a URN, by the RFC definition, is
   urn:NID:NSS where NID is at least two characters and NSS is at least
   one character.

   <urn:x:abcd> is illegal as is <urn:abc:>
   These are not rejected by Jena 4.0.0 but be warned!

If you have custom URIs schemes, please ensure they match the syntax of 
RFC 3986/3987.
