Virtuoso support for RDFLib
===========================

There is now some rudimentary support for a Virtuoso backed
store in RDFLib. Basic usage is as follows:

.. code-block:: python

    from rdflib.store import Store
    from rdflib.plugin import get as plugin

    Virtuoso = plugin("Virtuoso", Store)
    store = Virtuoso("DSN=VOS;UID=dba;PWD=dba;WideAsUTF16=Y")

and then use this store as you would any other. This has been
tested with rdflib3 only and may or may not work with rdflib2.

With RDFLib 3 there is support for using Virtuoso's SPARQL directly
from the Graph.query. There are some outstanding questions about
how this will behave with multiple sparql implementations...

**NOTE** the way Virtuoso handles cursors might be unexpected. A store
will acquire a cursor on demand but when operations with it have
finished it is important to release it. This is done by calling the
graph (or the store)'s commit or rollback methods. Be sure to do this
frequently especially for long running processes that may keep a store
around for long periods of time.

Virtuoso Storage
----------------

.. autoclass:: virtuoso.vstore.Virtuoso

SPASQL Resolution
-----------------

.. autofunction:: virtuoso.vstore.resolve
