Sometimes you need to know the version or other details about the Virtuoso instance you're running SPARQL queries against, and only have access to the SPARQL interface, possibly through a proxy page that strips out the server version information included on the default /sparql page.
You can leverage Virtuoso's built-in-functions, such as sys_stat, and the associated bif: SPARQL prefix, to interrogate the server for various details, such as --
PREFIX bif: <bif:>
SELECT
( bif:sys_stat('st_dbms_name') AS ?name )
( bif:sys_stat('st_dbms_ver') AS ?version )
( bif:sys_stat('st_build_date') AS ?build_date )
## The following line must be commented for execution on
## builds produced before the switch from `cvs` to `git`;
## it only works on versions later than v6.1.5
# ( bif:sys_stat('git_head') AS ?git_head )
( bif:sys_stat('st_build_thread_model') AS ?thread )
( bif:sys_stat('st_build_opsys_id') AS ?opsys )
## The following two lines must be commented for execution
## on VOS; these only work on Enterprise Edition
# ( bif:sys_stat('st_lic_owner') AS ?owner )
# ( bif:sys_stat('st_lic_serial_number') AS ?serial )
WHERE
{ ?s ?p ?o }
LIMIT 1
As noted in the SPARQL above, the st_lic_owner and st_lic_serial_number arguments are only valid on the Commercial Edition, and will produce a SPARQL error on the Open Source Edition.
Similarly, the git_head argument is only valid on builds produced after source code management was switched from cvs to git, circa v6.1.5, in March, 2012.
The query output will resemble the following --
| name | version | build_date | git_head | thread | opsys | owner | serial |
|---|---|---|---|---|---|---|---|
OpenLink Virtuoso VDB Server | 07.20.3228 | Apr 10 2018 | 7913e54 | -pthreads | Linux | LOD operated by OpenLink Software | opl-lod |