Virtuoso 08.03.3334 Release Notes
We are pleased to announce the immediate availability of a new Virtuoso Maintenance Release comprising a wide variety of feature enhancements and bug fixes across the following functionality realms:
- Virtuoso DBMS Engine Core
- Web Server
- SPARQL Query Processor
- SHACL Processor
- Data Transformation Middleware Layer (“Sponger”)
- Faceted Search and Browsing
- Virtuoso Authentication Layer (VAL)
- HTML-based Admin Interface (“Conductor”)
- R2RML
- OpenLink AI Layer (OPAL)
- JDBC, Jena and RDF4j providers
- OpenLink Data Spaces
This release introduces significant improvements to the OpenLink AI Layer, a Virtuoso add-on module available through the Personal Assistant VAD package, support for ActivityPub in OpenLink Data Spaces, along with minor fixes for SQL and SPARQL query edge-case scenarios.
Also note the following sections:
Virtuoso DBMS Engine Core
- Added more informative locking info in
status() - Added watchdog function to monitor replication
- Fixed issues with sqlc_hook
- Fixed issue with engine hanging in temp table
- Fixed issue not to enter mutex again when resetting iterator
- Fixed error reporting on non-compatible db/setup
- Fixed that IRI IDs cannot be used on remote DSN
- Fixed issues with json serializer
- Fixed to signal error if remote DSN does not exist
- Fixed issue with unexpected value in vector
- Fixed issue in SQLPrepare and SQLPrepareW
- Fixed issue where the distinct with nulls in dt is not working
- Fixed compiler warnings on misleading indentation
- Fixed compiler warnings for empty body
- Removed unexpected parameter from function call
- Cleaned up prototypes and declarations for functions without arguments
HTTP (Web) Server
- Added support for
.well-known/http-message-signatures-directory - Added initial ED25519 signatures support
- Added RFC9421 HTTP messages signing
- Added missing HTTP status codes to SOAP
- Added boolean case param
__soap_typedefinition tweak - Added option to specify a title and summary in OpenAPI docs for virtual-directory–associated stored procedures and third-party services published as OpenAPI-compliant web services.
- Added option to OAS import procedure for qualifying server host component defined when creating proxies to 3rd party services for use as an OPAL tool or MCP service.
- Fixed issue with strings containing single or double quote characters
- Fixed issues with JSON serializer
- Fixed issue with grants in web services
SPARQL Query Processor
- Added flag to not inline derived table for union branches in sparql2sql
- Fixed issue with trying to call CXML PL when vad package is not installed
- Fixed issues with datatypes in JSON output
- Fixed issue with OData+JSON generating bad JSON output
- Fixed replace typed-literal with literal in JSON output
- Fixed check for DBA group instead of DBA user
- Fixed tagging of argument on txn handle for safer multithreading.
- Fixed issue with optimization that included property path handling, by reducing the path to equality filter which should only happen when there’s no property path and the variable in query body is not used in select list
- Fixed better handling of literal of type uname, eliminating mismatched treatment of literals statement objects as IRIs
- Fixed issue where virtuoso reports ID 0 (dba) has no permissions
- Fixed issue where delete/insert with a ?g clause leading to iri_to_id error with arg 0
- Fixed wrong flag when using Jena API for batch delete
- Fixed issue that stopped engine from performing graph scoped rules check
- Fixed issue with RDFviews and GraphQL
- Fixed issue when transitive node is not placed
- Fixed issue with transitive start not given
- Fixed issue with constant IRI via subquery
- Fixed issue that stopped engine from performing graph scoped rules check
- Fixed stack margin in SPARQL code
SHACL Processor
- Fixed use of physical graph references in SHACL demo
- Fixed syntax for vector of IIDs used
- Fixed issue in SHACL validation procedure
- Fixed SHACL to run on default storage
- Fixed SHACL Demo UI to accept ontology
Data Transformation Middleware Layer (“Sponger”)
- Added Large Language Model (LLM) Task Manager for scheduled (realtime or batch) interations with LLMs
- Added LLM meta cartridge for batch interactions with LLMs
- Added LLM task callback to LLM Batch Task Manager for uploading prompt responses to designated RDF Graphs
- Added check for LLM API key use in LLM cartridge
- Fixed issue with regex pattern inserting into meta queue
- XC: only HTML+V XC enabled and all reification disabled
- MC: only LLM-Batch and Post-Process enabled
- Feeds XC: Added allow-mixin config option for RSS & Atom feed types
- Feeds XC: Added separate versions of XSLT for allowing mixins or not
- Feeds XC: Rewrote both Atom and RSS to conditionally allow mixins using
most-triples-winsstrategy
Faceted Search and Browsing
- Added option to prevent bots from crawling describe and usage pages
- Added initial support for
/fct/apiRESTful interfaces - Added max facets setting in config UI
- Fixed issue with
output:valmode "AUTO" - Fixed broken CXML links in page footer when the
sparql_cxmlpackage has not been installed - Fixed issue with zero triples on secondary storage
- Fixed performance using
same-asthat drives labels rather than IRIs display feature - Fixed missing permissions of FCT service user
Virtuoso Authentication Layer (VAL)
- Added Authorization Server Metadata
- Added initial support for OAuth 2.1 restrictions
- Added scope to oauth-authorization-server
- Added support to make scopes configurable
- Added
.well-known/jwks.json - Added
.well-known/oauth-protected-resource - Fixed use of
OAUTH2.DBA.get_scopes()instead of hardcoded scopes - Fixed use of pre-configured graph IRIs instead of hardcoded VAL IRIs
- Fixed use of the HTTP host when known
- Fixed clearing of the whole config as it has graph refs
- Fixed default setup to use URN based ACL graphs
- Fixed sessions expiration after 1 day instead of 30 days
- Fixed initialization of VAL config graphs use
urn:scheme by default - Fixed issue in OAuth 2.1 where token cannot be in URL parameter
- Fixed issue detecting VDir on the same connection
- Fixed issue inserting incompatible dates
- Fixed issue with long locks after cache update
- Fixed issue with PKCE
- Fixed issue with unknown content type in POST
- Fixed issues with
oauth-protected-resource - Fixed odsui login to display correct service icons
- Fixed reporting of
invalid_client - Fixed serialization issue with single quote chars in returnto
- Fixed setting of checkbox for PKCE to always be on for OAuth 2.1
HTML-based Admin Interface (“Conductor”)
- Added DAV content callback function
- Added RDF sink folder validation option
- Added missing
<guid>to directories/collections - Fixed saving and restoring of connection variables during VAD install
- Fixed issues with RSS/Atom feed title
- Fixed issues with DAV folder RSS feeds
- Fixed issue unlinking tables from VDB; check FK constraints and drop them as well
- Fixed error reporting when unlinking VDB tables
- Fixed issues with RDFview generation
- Fixed Label handling in RDF Views
R2RML
- Fixed issue with empty
tgt_graph
OpenLink AI Layer (OPAL)
- Added support for responses API
- Added MCP resources support enhancement
- Added file list for Anthropic
- Added file support for LLM complete tool
- Added Gemini file API support
- Added PDF and images backend support for Claude models
- Added RDF Metadata Backup tool
- Added RDF Views and R2RML tools
- Added ODS tools
- Added additional checks for captured API key using session initialization
- Added support for MCP Streaming notifications
- Added client caps for MCP elicitation
- Added description in functions graph
- Added instructions for generated scripts
- Added model provider restriction
- Added multiple select enable/disable in tools
- Added Responses API SSE callback
- Added special continue prompt flag to preserve consistent output
- Added support for restricted assistants/modules
- Added support to enable/disable tool via grants
- Fixed allow PDFs or other user data files for batch input
- Fixed API keys UI
- Fixed check if ACL graphs are empty
- Fixed check status before cancelling batch as it might be finished
- Fixed datetime params, allow summary from comments
- Fixed DAV upload not setting flag to stop callbacks
- Fixed descriptions for OPAL API
- Fixed enabling of needed scopes if not already there
- Fixed issues arising from GPT-5 API changes
- Fixed issue with websearch
- Fixed to only cast blobs for inline images
- Fixed OpenAI API key testing against released LLM models
- Fixed to put resumed session at the top of the session list
- Fixed use of explicit
IRI()over graph - Fixed use physical store only
- Cleanup old oauth tokens
- Synchronized OpenAI API sync to latest version
JDBC, Jena and RDF4j connectors (providers)
The latest Virtuoso JDBC, Jena and RDF4j providers are also available via the Maven Central repository
OpenLink Data Spaces
- Added initial support for ActivityPub
- Added PL to ensure ActivityPub key
- Added JSONLD schema for ActivityPub
- Fixed issue with Location header
- Merged Conductor DAV browser changes into Briefcase
Installer Availability
On-premise Installers and Docker Containers
- On-premise Installers for Linux, macOS, and Windows
- Docker Containers
Cloud Edition Releases for Amazon AWS, Microsoft Azure, and Google Cloud Platform
Amazon AWS
- Virtuoso Virtual Machines for the Amazon AWS Cloud
- OpenLink AI Layer (OPAL) Virtual Machine for the Amazon AWS Cloud
- DBpedia Snapshot (Virtuoso PAGO) for Ubuntu on the Amazon AWS Cloud
Microsoft Azure
- Virtuoso Virtual Machines for the Microsoft Azure Cloud
- OpenLink AI Layer (OPAL) for the Microsoft Azure Cloud
- DBpedia Snapshot (Virtuoso PAGO) for Ubuntu on the Microsoft Azure Cloud
Google Cloud Platform
- Virtuoso Virtual Machines for the Google Cloud Platform
- OpenLink AI Layer for the Google Cloud Platform (GCP)
Upgrade Notes
For all upgrades
-
Always make sure the database has been properly shut down and the transaction log (
virtuoso.trx) is empty before performing any update/upgrade. This is easily done by launching Virtuoso with the extra command-line argument, “+checkpoint-only”. Virtuoso will launch, replay the transaction log, run a checkpoint (which zeroes the transaction log), and exit cleanly. -
Before upgrading any database, it is always a wise precaution to make a proper backup.
Upgrading an existing Cloud Instance Virtual Machine
Execute the relevant command for your operating system distribution:
- Ubuntu and related —
apt update && apt upgrade - RedHat and related —
yum update
Manually overwriting an older binary with the latest edition
Start with the documentation of manual upgrades.
If you choose to manually replace the Virtuoso server binary (virtuoso-iodbc-t) in-situ, you MUST also update the libraries in the Virtuoso hosting/ subdirectory due to incompatibilities between the latest binary and previous plugin versions. We also strongly RECOMMEND that you update the VAD packages in the vad/ subdirectory.
Upgrading from any previous version to the latest version
For best results with existing installations, we recommend following our simple step-by-step guide to upgrade from any previous version of Virtuoso to the latest version.
Additional Information
- OpenLink Personal Assistant — VAD Installation, Configuration, and Usage Guide
- Introducing Native GraphQL Support in Virtuoso
- Usage Guide — Virtuoso GraphQL Views Creation & Management
- Virtuoso “Encryption At Rest” (EAR) Usage Guide
- Virtuoso Database Upgrade Notes
- Virtuoso artifacts on Maven Central