Built-in Virtuoso Demo License

Hugh Williams
OpenLink Virtuoso Weblog
3 min readAug 8, 2017

Why?

Challenges user have reported in accessing and installing a separate license file have detracted from the initial focus: experiencing the unique prowess of Virtuoso.

This new kind of courtesy and evaluation license offers more flexibility when evaluating the Enterprise Edition of Virtuoso.

What?

The new built-in license has the following attributes for Virtuoso version 7.xx.xxxx and later, including Virtuoso 8.x:

  • number of concurrent ODBC/JDBC/.NET connections: 1
  • number of concurrent HTTP threads: 1
  • number of records fetched in SQL: 25
  • number of records fetched in SPARQL: 25
  • expires after #minutes: 10
  • cluster module: disabled
  • column store: enabled

The courtesy license for Virtuoso 8.x has additional attributes:

  • spin module: enabled
  • replication: enabled
  • ACLs: enabled
  • VDB: enabled

How?

This courtesy license kicks in when any of the following conditions are met:

  • license manager (oplmgr) is not running
  • license manager (oplmgr) is not responding
  • license file (virtuoso.lic) is not found
  • license file (virtuoso.lic) is for an older version of Virtuoso
  • license file (virtuoso.lic) is for another platform (operating system)
  • license file (virtuoso.lic) has expired

The virtuoso.log will reflect the problem, as in the following example:

13:04:00 OpenLink Virtuoso Universal Server
13:04:00 Version 07.20.3219-pthreads for Linux as of May 8 2017
13:04:00 uses parts of OpenSSL, PCRE, Html Tidy
13:04:00
13:04:00 Unable to contact the OpenLink License Manager
13:04:00 Please make sure it is installed and running on your system
13:04:00
13:04:00 Demo license enabled
13:04:00
13:04:00 Database version 3126
13:04:00 SQL Optimizer enabled (max 1000 layouts)
13:04:01 Compiler unit is timed at 0.000128 msec

ODBC, JDBC, .NET connections

When any connection request is received by the Virtuoso server, a check is made for license expiration. After license expiration, an appropriate error message is passed to the client application to indicate the server is out of licensed connections:

$ isql 1112*** Error 08004: VD [Virtuoso Server]LI100: Number of licensed connections exceeded
at line 0 of Top-Level:

Additionally, while running with this demo license, all SQL statements (including SPASQL, or SPARQL–in–SQL) are limited to return a maximum of 25 rows.

HTTP connections

When any connection request is received by the Virtuoso server, a check is made for license expiration. After license expiration, an appropriate error message is passed to the HTTP client to indicate the server is (temporarily) not available, due to license expiration:

Error HTTP/1.1 503 Service UnavailableLicense expired    URI  = '/!sparql/'

Additionally, while running with this demo license,all SPARQL statements are limited to return a maximum of 25 triples. The X-SPARQL-MaxRows header is returned to signal a possible truncation of data.

VAD packages, such as the Conductor, will not be affected by this 25 row maximum, so users will still be able to install/upgrade VAD packages, etc., without the possibility of package truncation.

Frequently Asked Questions

How will the various triggering conditions be reported?

In the Virtuoso Log file and at startup (when foreground mode is chosen)

What if the active license permits fewer processors than are detected?

CPU Affinity doesn’t apply i.e., you get the same behavior for any number of CPUs.

Are there any other license failure conditions which do not trigger the demo license?

No

Related

--

--