Release Notes

GraphDB release notes provide information about the features and improvements in each release, as well as various bug fixes. GraphDB’s versioning scheme is based on semantic versioning. The full version is composed of three components:

major.minor.patch

e.g., 9.11.2 where the major version is 9, the minor version is 11 and the patch version is 2.

Occasional versions may include a modifier after a hyphen, e.g., 10.0.0-RC1 to signal additional information, e.g., a test release (TR1, TR2 and so on), a release candidate (RC1, RC2 and so on), a milestone release (M1, M2 and so on), or other relevant information.

Note

Releases with the same major and minor versions do not contain any new features. Releases with different patch versions contain fixes for bugs discovered since the previous minor. New or significantly changed features are released with a higher major or minor version.

GraphDB 10 includes the following components with their version numbers:

  • RDF4J

  • GraphDB Connectors

  • GraphDB Workbench

Their versions use the same semantic versioning scheme as the whole product, and their values are provided only as a reference.

GraphDB 10.0.2

Released: 1 August 2022

Component versions

RDF4J

Connectors

Workbench

4.0.3

16.0.1

2.0.2

GraphDB 10.0.2 is a patch release that addresses an issue with migrating existing connectors created in GraphDB 9.x.

If you have already migrated from 9.x to 10.0.1, there is no need to update to 10.0.2.

GraphDB Connectors & Plugins

Bug fixing

  • GDB-7237 Existing connector with entityFilter from GraphDB 9.x prevents the connector plugin to initialize in GraphDB 10

GraphDB 10.0.1

Released: 26 July 2022

Component versions

RDF4J

Connectors

Workbench

4.0.3

16.0.0

2.0.2

GraphDB 10.0.1 is a patch release that fixes some of the issues identified in GraphDB 10.0.0, provides minor improvements, and version upgrades of various libraries to address security vulnerabilities.

It is recommended for everyone to upgrade.

GraphDB Engine & Cluster

New features and improvements

  • GDB-7153 Provide a user-friendly error message when the configured SSL certificate cannot be loaded

  • GDB-7132 As a user, I want my license to be checked when creating a cluster

Bug fixing

  • GDB-7207 Error in implicit cluster transactions leaves stale transactions

  • GDB-7184 Out-of-sync node will become follower if verification of entry is synchronous

  • GDB-7172 Cluster failed quorum transaction does not always release transaction log lock

  • GDB-7171 Named graph not shown by getContexts() when it contains an owl:sameAs statement

  • GDB-7165 The external proxy fails when you try using it for a PATCH request to the /rest/cluster/config api

  • GDB-7164 The external proxy fails to read the cluster status when GraphDB basic security is enabled

  • GDB-7158 Cluster follower does not replicate after out-of-sync

  • GDB-7148 Starting a new transaction from the transactions API returns wrong Location header

  • GDB-7104 GraphDB fails to restore from snapshot upon initialization

  • GDB-7094 Cluster report shows an error in the log file

  • GDB-7088 Cannot add a node that was previously removed and has more than one entry in its transaction log

  • GDB-7074 Removed cluster nodes cannot be added back in some cases

  • GDB-7059 GraphDB no longer allows variables over grouped value as a valid query projection

  • GDB-7048 Cannot add a node that was previously unsuccessfully added without a license

  • GDB-7033 Cluster node not responsive after all cluster nodes were stopped and some nodes were restarted

  • GDB-6952 Restoring a backup more than once may lead to stale cache and some operations not working

  • GDB-6755 Rapid cluster topology changes may lead to OverlappingFileLockException

GraphDB Workbench

Bug fixing

  • GDB-7187 Followers should be able to import files from the server

  • GDB-7168 Download SPARQL results not working for certain queries

  • GDB-7146 Workbench shows stale username after login

  • GDB-7145 Workbench login form not showing after expired login

  • GDB-7068 When in cluster, a follower Workbench shows the repositories (and locations) of the leader

GraphDB Connectors & Plugins

New features and improvements

  • GDB-6954 Improved memory usage for the MongoDB connector

GraphDB Distributions & Deployment

New features and improvements

  • GDB-7191 External proxy returns its internal address with explicit transactions and when deployed with the Helm chart

  • GDB-7138 Make the developer examples use remote GraphDB and graphdb-client-api

  • GDB-7117 Upgraded RDF4J, Spring, and various other libraries to latest stable versions

  • GDB-7110 Removed the obsolete adapter directory from the distribution

  • GDB-7109 Removed the obsolete benchmarks directory from the distribution

  • GDB-6524 Implement cluster scalability for the Helm chart

Bug fixing

  • GDB-7161 GraphDB cannot be deployed with enabled security using the Helm chart

  • GDB-7160 GraphDB cannot be migrated when security is on and deployed with the Helm chart

GraphDB 10.0.0

Released: 30 June 2022

Component versions

RDF4J

Connectors

Workbench

4.0.2

16.0.0

2.0.0

GraphDB 10.0.0 is the first major release since GraphDB 9.0 was released in September 2019 and introduces numerous improvements and changes that make GraphDB better than ever, including a new cluster implementation.

Important

New high-availability cluster

This GraphDB 10 release introduces the new high-availability cluster based on the Raft consensus algorithm. In the new cluster, any node can be either a leader or a follower. The leader is akin to the master node in the old cluster, while a follower is similar to a worker. Unlike the old cluster, each node in the new cluster contains a replica of the data.

The Raft consensus algorithm uses majority voting to determine the current leader, and consensus to confirm every write operation. This ensures a high uptime, zero data loss, fault tolerance, and smooth recovery from unexpected situations and scenarios.

While the old cluster needed to be defined at the repository level, the new cluster is defined per entire GraphDB instance, which means that once a repository is created in the cluster, it automatically becomes part of the cluster.

The new cluster also handles transactions differently, in a manner that is very similar to how transactions are handled in a non-cluster environment. This makes it possible for every transaction to see its own changes before commit and unlocks some new use cases, such as using the Sequences plugin, that were not possible with the old cluster.

Single distribution and repository type

Unlike previous versions of GraphDB, version 10 is a single distribution that can run in Free, SE, or EE mode, depending on the currently set license. In line with that, we refactored the existing GraphDB repository types (Free, SE, and EE worker) into a single new repository called simply “GraphDB repository”. It is now simpler than ever to create a repository using a GraphDB Free license and upgrade to SE or EE at any time without even a restart.

The single GraphDB distribution requires at least Java 11.

Licensing and parallelism

We changed how we handle licenses to ensure that you get the optimal performance for the purchased number of cores and we made it possible to export a repository even with an expired license so you never get locked out of your own data.

The graph path search can now run in parallel mode (depending on the number of licensed cores) so that complex path searches run 5 to 10 times faster than before. Parallel mode must be explicitly requested as part of the query. This is just one of the optimizations we are working on in order to let customers who purchased a larger number of cores benefit not only from handling a big number of concurrent requests, but also get advantage in terms of faster processing of a single complex query.

Connector filtering redesign

We listened to our users and did a major redesign of the connector filtering mechanism to allow for very fine-tuned filtering at every level of the indexing process, and we added two-variable comparison to cover numerous new use cases that were not possible with the old filtering. If you use connector filters, we urge you to get acquainted with the changes now to make sure you can benefit from them when you upgrade to the final GraphDB 10 release.

Workbench improvements

We have retouched the GraphDB Workbench to make it even easier to use and we added an experimental dark theme (accessible via Setup ‣ My settings).

GraphDB 10 also introduces a French translation of the Workbench interface. You can change the language from the language selection button in the top right corner.

Remote locations refactored

Remote locations have been simplified. They now serve mainly as a facility for easier cluster management. Remote locations in GraphDB 10 cannot be activated but the repositories from them are accessible from the Workbench together with the local repositories.

Upgraded to the latest RDF4J 4.0

RDF4J 4 introduces Java 11 as a minimum requirement, just like GraphDB 10. It includes numerous fixes and improvements that improve the overall performance.

OntoRefine removed from GraphDB

OntoRefine has been removed from GraphDB and is now developed as a separate product, part of our line of tools for data transformation. All existing OntoRefine and RDF mapping functionality will remain available in the new separate product.

Warning

The new release of OntoRefine is expected around 25 July 2022, and the OntoRefine CLI about a month later. If you need to use OntoRefine now, please hold off your upgrade from GraphDB 9.11 to 10 for a while.

GraphDB Engine & Cluster

New features and improvements

  • GDB-6904 As a user, I need to make a full GraphDB instance backup and restore through a REST API

  • GDB-6903 Support Java 17 for running GraphDB

  • GDB-6888 As a user, I want to use IPv6 with GraphDB out of the box

  • GDB-6849 Implement embedded load balancer/proxy

  • GDB-6818 Implement external load balancer

  • GDB-6762 As a user, I want to load balance Boolean & split queries in a cluster

  • GDB-6737 As a user, I want to be able to replicate SQL Views in a cluster

  • GDB-6726 Multiple cases of unclosed iterators/connections in both production and test code

  • GDB-6684 As a user, I want to be able to back up and restore an entire GraphDB instance

  • GDB-6683 Make the storage tool more user-friendly when scanning the predicate statistics

  • GDB-6679 As an admin, I want user changes to be replicated in a cluster

  • GDB-6677 As a user, I need to update the cluster configuration parameters with a PATCH request

  • GDB-6664 As a user, I want to know all GraphDB HTTP addresses for a cluster group and identify the leader node

  • GDB-6655 Remove OntoRefine from the project and the distribution

  • GDB-6602 High-availability Cluster load balancing

  • GDB-6575 Upgrade versions of various libraries

  • GDB-6541 As a user, I want to be able to secure my GraphDB cluster group

  • GDB-6540 As a user, I want to verify the GraphDB nodes state when joining cluster group

  • GDB-6539 As a user, I need to receive a response with an error message when I try to create an invalid cluster configuration

  • GDB-6533 As a security administrator, I need to provide case-insensitive usernames for user accounts

  • GDB-6521 As a DevOps, I want to be able to deploy GraphDB 10.0 using Helm

  • GDB-6494 As a user of GraphDB REST API, I need it to be intuitive, consistent, and conform to the best practices

  • GDB-6456 Migrate GraphDB to RDF4J 4.0.2

  • GDB-6407 Remove Jolokia and replace its uses with a REST API

  • GDB-6399 As a user, I want to add/remove node in a running cluster group though a REST endpoint

  • GDB-6372 Introduce automatic snapshot replication for out-of-sync followers

  • GDB-6336 Redesign command line tools to be more user-friendly and straightforward

  • GDB-6274 As a user, I want to use a Java client that would provide high availability of cluster

  • GDB-6268 As a user, I want to have cluster node defined per instance

  • GDB-6267 As a user, I want to have runtime group membership management

  • GDB-6266 As a user, I want to have automatic query load balancing

  • GDB-6265 As a user, I want to have automatic log replication between server nodes

  • GDB-6264 As a user, I want to have automatic leader election for fault tolerance

  • GDB-6236 As a user, I want to export my repository when the license is expired

  • GDB-6235 As a user, I want setting a new license to take effect without a restart

  • GDB-6189 Optimized resource closure and disposal

  • GDB-6183 As a user, I want the number of licensed cores to be used optimally

  • GDB-6055 As a user, I want to take advantage of parallel graph path query evaluation

  • GDB-5548 Allow shapes to be stored in a user specified named graph

Bug fixing

  • GDB-6777 Some easily processable Elasticsearch aggregations are not retrieved by the Elasticsearch connector

  • GDB-6770 Incorrect content type on some of the SPARQL template endpoints

  • GDB-6756 Bound variable for SERVICE endpoint not visible

  • GDB-6623 Tx-rollback-plugin packaged as a dependency of GraphDB

  • GDB-6582 License information is logged multiple times even when it has not changed

  • GDB-6544 Confusing warning when reverting to Free

  • GDB-6410 Query optimizer incorrectly selects a statement pattern with all unbound variables after arbitrary length property path

GraphDB Workbench

New features and improvements

  • GDB-6671 As a user, I want to create/edit/delete the cluster group in the Workbench

  • GDB-6517 As a user, I need a new styled and better looking Workbench

  • GDB-6493 As a user, I need to use a remote location only to manage external GraphDB

  • GDB-6401 As a user, I want to see the cluster state in the Workbench

  • GDB-6273 As a user I want to configure and view the state of the cluster group through the Workbench

  • GDB-5345 Internationalization support in the Workbench and preliminary French translation

  • GDB-4288 As a user, I need to explore nested triples in the Visual graph

Bug fixing

  • GDB-6946 GraphDB unable to find base URL when the URL is over 4,096 symbols

  • GDB-6732 There is no validation for the prefix and namespace IRI during namespace create/update

  • GDB-6462 Visual graph does not show relations direction in some cases

  • GDB-6225 When importing a directory from Import ‣ Server files, the status of the content of the directory is not updated

GraphDB Connectors & Plugins

New features and improvements

  • GDB-6772 Add cluster support to Sequences plugin

  • GDB-6744 Extend plugin API with support for adding/removing statements in a safe manner

  • GDB-6486 Introduce graph() pseudo URI that allows indexing the named graph of a connector field value

  • GDB-6487 Introduce the ability to start a connector nested document from one of the parents instead of the actual root of the nested document

  • GDB-5419 As a user, I need connector filtering with two independent variables

  • GDB-6136 As a user, I need to filter values and documents separately when I create a connector

Bug fixing

  • GDB-6742 Text Mining plugin fails to annotate document

  • GDB-6555 Nested documents merged incorrectly when using multiple property chain variants

  • GDB-3616 GraphDB JavaScript driver cannot upload .ttl files larger than 10 megabytes

GraphDB Distributions & Deployment

New features and improvements

  • GDB-3641 As a user, I want to a use a single GraphDB distribution with access to features based on my license

  • GDB-6181 Require OpenJDK 11 as a minimal version

  • GDB-6247 As a user, I want to use one repository type regardless of the license