Virtuoso 08.03.3334 Release Notes

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:

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_type definition 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-wins strategy

Faceted Search and Browsing

  • Added option to prevent bots from crawling describe and usage pages
  • Added initial support for /fct/api RESTful interfaces
  • Added max facets setting in config UI
  • Fixed issue with output:valmode "AUTO"
  • Fixed broken CXML links in page footer when the sparql_cxml package has not been installed
  • Fixed issue with zero triples on secondary storage
  • Fixed performance using same-as that 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

Cloud Edition Releases for Amazon AWS, Microsoft Azure, and Google Cloud Platform

Amazon AWS

Microsoft Azure

Google Cloud Platform

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