Christian Becker has delivered the final cut of an initial iteration of his DBpedia based RDF Data Stores benchmark. This particular exercise brought some very interesting things to our attention re. Virtuoso's default mode of operation:

  1. Virtuoso is a Quad Store in a Triple Store world -- it supports RDF data set storage partitioning via Named Graphs and it requires the use of the SPARQL FROM clause to scope query patterns to appropriate data sets. Otherwise, it looks across all hosted data sets for matching patterns
  2. We should be able to use our server side configuration settings to make the Quad Store behave like a Triple Store (meaning we set the list of applicable named graphs as part of the session configuration)
  3. Provide hints to users about missing POGS, PSOG, and SOPG bitmap indexes when SPARQL query patterns received by the server are deemed suboptimal (we do know the execution costs of each query)

How Do I create the missing Bitmap Indexes?

Go to the HTML based Virtuoso Conductor, iSQL command line interface, or an ODBC / JDBC / ADO.NET / OLE DB client and execute:

CREATE BITMAP index RDF_QUAD_POGS on DB.DBA.RDF_QUAD (P,O,G,S); 
CREATE BITMAP index RDF_QUAD_PSOG on DB.DBA.RDF_QUAD (P,S,O,G);
CREATE BITMAP index RDF_QUAD_SOPG on DB.DBA.RDF_QUAD (S,O,P,G);

Related