<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Store 'virtuoso'</title> <meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> <link rel="home" href="index.html" title="Redland RDF Library Manual"> <link rel="up" href="redland-storage-modules.html" title="Storage Modules"> <link rel="prev" href="redland-storage-module-uri.html" title="Store 'uri'"> <link rel="next" href="redland-stream.html" title="Stream of triples (#librdf_statement)."> <meta name="generator" content="GTK-Doc V1.15 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"> <td><a accesskey="p" href="redland-storage-module-uri.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="redland-storage-modules.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">Redland RDF Library Manual</th> <td><a accesskey="n" href="redland-stream.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr></table> <div class="section" title="Store 'virtuoso'"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="redland-storage-module-virtuoso"></a>Store 'virtuoso'</h2></div></div></div> <p> The Virtuoso Redland RDF Provider is an implementation of the Storage API, Model and Query interfaces of the Redland framework for RDF. This provider enables the execution of queries via the Redland Rasqal query engine or via Virtuoso query engine directly against the <a class="ulink" href="http://virtuoso.openlinksw.com/wiki/main" target="_top">Virtuoso OpenSource</a> Quad Store. </p> <p> The Virtuoso Redland RDF Provider uses ODBC as the data access mechanism for communicating the Virtuoso Quad Store and requires the Virtuoso ODBC Driver be installed on the Redland client and a suitable ODBC DSN be configured for connecting to the target Virtuoso Quad Store instance. </p> <p> The provider has been tested against the Redland 1.0.8 version currently available for download. Virtuoso is capable of efficiently handle large amounts of data and has been tested with upto 1B triples. </p> <p>There are several options required with the virtuoso storage in order to connect to the database. These are:</p> <div class="itemizedlist"><ul class="itemizedlist" type="disc"> <li class="listitem"><p><code class="literal">dsn</code> for the ODBC datasource name</p></li> <li class="listitem"><p><code class="literal">user</code> for the database server user name</p></li> <li class="listitem"><p><code class="literal">password</code> for the database server password</p></li> <li class="listitem"><p><code class="literal">database</code> for the database name (not the storage name)</p></li> <li class="listitem"><p><code class="literal">host</code> for the database server hostname</p></li> <li class="listitem"><p><code class="literal">charset</code> for the database charset to use</p></li> </ul></div> <p>NOTE: Take care exposing the password as for example, program arguments or environment variables. The rdfproc utility can with help this by reading the password from standard input. Inside programs, one way to prevent storing the password in a string is to construct a Redland hash of the storage options such as via <code class="literal">librdf_hash_from_string</code> and use <code class="literal">librdf_new_storage_with_options</code> to create a storage. The rdfproc utility source code demonstrates this. </p> <p>The storage name parameter given to the storage constructor <code class="literal">librdf_new_storage</code> is used inside the virtuoso store to allow multiple stores inside one Virtuoso database instance as parameterised with the above options.</p> <p>This store always provides contexts; the boolean storage option <code class="literal">contexts</code> is not checked.</p> <p>Examples:</p> <pre class="programlisting"> /* A new Virtuoso store */ storage=librdf_new_storage(world, "virtuoso", "db1", "dsn='Local Virtuoso',user='demo',password='demo'"); /* A different, existing Virtuoso store in the same database as above */ storage=librdf_new_storage(world, "virtuoso", "db2", "dsn='Local Virtuoso',user='demo',password='demo'"); /* An existing Virtuoso store on a different database server */ storage=librdf_new_storage(world, "virtuoso", "http://red3", "dsn='Remote Virtuoso',user='demo',password='demo'"); /* Opening with an options hash */ options=librdf_new_hash(world, NULL); librdf_hash_from_string(options, "dsn='Local Virtuoso',user='demo'"); librdf_hash_put_strings(options, "password", user_password); storage=librdf_new_storage_with_options(world, "virtuoso", "http://red3", options); </pre> <p>In PHP:</p> <pre class="programlisting"> # An existing store $storage=librdf_new_storage($world, 'virtuoso', 'db4', "dsn='Local Virtuoso',user='demo',password='demo'"); </pre> <p>Summary:</p> <div class="itemizedlist"><ul class="itemizedlist" type="disc"> <li class="listitem"><p>Persistent</p></li> <li class="listitem"><p>Suitable for extremely large models, 1B+ triples</p></li> <li class="listitem"><p>Indexed and optimized</p></li> <li class="listitem"><p>Possibility of free text searching</p></li> <li class="listitem"><p>Contexts always provided</p></li> </ul></div> </div> <div class="footer"> <hr> Generated by GTK-Doc V1.15</div> </body> </html>