Interrogating attributes of a Virtuoso Server instance via SPARQL

Interrogating attributes of a Virtuoso Server instance via SPARQL

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:>

  ( 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 )

  {  ?s  ?p  ?o  }

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