<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
 <channel>
  <title>RDF Database and SPARQL</title>
  <link>http://docs.openlinksw.com/virtuoso/rdfandsparql.html</link>
  <description>OpenLink Virtuoso Universal Server: Documentation</description>
  <managingEditor>virtuoso.docs@openlinksw.com</managingEditor>
  <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
  <generator>OpenLink Software Documentation Team</generator>
  <webMaster>webmaster@openlinksw.com</webMaster>
  <image>
    <title>OpenLink Virtuoso Universal Server: Documentation</title>
    <url>http://docs.openlinksw.com/virtuoso/../images/misc/logo.jpg</url>
    <link>http://docs.openlinksw.com/virtuoso/rdfandsparql.html</link>
    <description>OpenLink Virtuoso Universal Server: Documentation</description>
  </image>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfoverview.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Overview</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfoverview.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Overview</title>
    <description>The support of SPARQL in Virtuoso consists of two &quot;layers&quot; -- RDF support in SQL engine and SPARQL front-end compiler that translates SPARQL queries to SQL.

In its core, Virtuoso extends relational storage and SQL language with datatypes and language constructs required for handling RDF data like any &quot;traditional&quot; SQL datatype. There exist datatypes for RDF references (IRIs and blank nodes) and for RDF literals with types and languages. These datatypes are widely supported by built-in functions and there exists convenient conversions between RDF literals and other SQL datatypes.

SQL query language is extended with constructs that are convenient for &quot;very heterogeneous&quot; data of RDF graph. In traditional SQL queries, data types of retrieved values are mostly known in advance from the database schema via explicitly declared column types and types of return values of functions. An RDF graph contains mix of literals of all types, so cast errors are very frequent and a typical query should not terminate after some occasional type error in a huge data set.

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfdatarepresentation.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Data Representation</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfdatarepresentation.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Data Representation</title>
    <description>This section covers how Virtuoso stores RDF triples. The IRI_ID built-in data type is introduced, along with the default table structures used for triple persistency.
These details are mostly hidden from users of RDF, thus this section is not necessary reading for typical use of Virtuoso with RDF.


</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfapiandsql.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>RDF and SPARQL API and SQL</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfapiandsql.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>RDF and SPARQL API and SQL</title>
    <description>
SPARQL can be used inline wherever SQL can be used.
The only API functions that one needs to know are the ones for loading RDF data into the store.
Dynamic SQL client applications can issue SPARQL queries against Virtuoso through the regular SQL client API, ODBC, JDBC or other, simply by prefixing the SPARQL query with the SPARQL keyword. Parameters work just as with dynamic SQL.
Stored procedures can have SPARQL expressions inline and can declare cursors over SPARQL result sets.



Value conversions between SQL and SPARQL are most often automatic and
invisible. In some cases one needs to be aware of the different
SPARQL value representations (valmodes). SPARQL offers declarations
for determining if graphs to be returned are to be represented as XML
or Turtle text serialization or whether these will be hash tables of
triples. See dict_new() and related functions for a description of the hash table SQL data type.
The use of dict&#39;s is convenient for further programmatic processing of graphs.


RDF-related procedures use Virtuoso/PL vectors
and dictionaries to represent RDF triples and sets of triples.

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfsparul.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>SPARUL -- an Update Language For RDF Graphs</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfsparul.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>SPARUL -- an Update Language For RDF Graphs</title>
    <description />
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfinsertmethods.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>RDF Insert Methods in Virtuoso</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfinsertmethods.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>RDF Insert Methods in Virtuoso</title>
    <description />
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/virtuososponger.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Virtuoso Sponger</category>
    <link>http://docs.openlinksw.com/virtuoso/virtuososponger.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Virtuoso Sponger</title>
    <description>The Virtuoso Sponger is a middleware component of Virtuoso that generates RDF Linked Data from
a variety of data sources. The sponger is transparently integrated into the Virtuoso SPARQL Query
Processor, where it serves as part of the URI/IRI dereferencing functionality. It is also optionally
used by the Virtuoso Content Crawler.



A majority of the worlds data naturally resides in non RDF form at the current time. The Sponger
delivers middleware that accelerates the bootstrap of the Semantic Data Web by generating RDF
from non RDF data sources, unobtrusively.



When an RDF aware client requests data from a network accessible resource via the Sponger
the following events occur:


</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfiridereferencing.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Dereferencable IRIs and RDF Linked Data</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfiridereferencing.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Dereferencable IRIs and RDF Linked Data</title>
    <description>There are many cases when RDF data should be retrieved from remote sources only when really needed.
E.g., a scheduling application may read personal calendars from personal sites of its users.
Calendar data expire quickly, so there&#39;s no reason to frequently re-load them in hope that they are queried before expired.


Virtuoso extends SPARQL so it is possible to download RDF resource from a given IRI, parse them and store the resulting triples in a graph, all three operations will be performed during the SPARQL query execution.
The IRI of graph to store triples is usually equal to the IRI where the resource is download from, so the feature is named &quot;IRI dereferencing&quot;
There are two different use cases for this feature.
In simple case, a SPARQL query contains from clauses that enumerate graphs to process, but there are no triples in DB.DBA.RDF_QUAD that correspond to some of these graphs.
The query execution starts with dereferencing of these graphs and the rest runs as usual.
In more sophisticated case, the query is executed many times in a loop.
Every execution produces a partial result.
SPARQL processor checks for IRIs in the result such that resources with that IRIs may contain relevant data but not yet loaded into the DB.DBA.RDF_QUAD.
After some iteration, the partial result is identical to the result of the previous iteration, because there&#39;s no more data to retrieve.
As the last step, SPARQL processor builds the final result set.


</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfviews.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>RDF Views -- Mapping Relational Data to RDF</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfviews.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>RDF Views -- Mapping Relational Data to RDF</title>
    <description>
RDF Views map relational data into RDF and allow customizing RDF representation of locally stored RDF data.
To let SPARQL clients access relational data as well as physical RDF graphs in a single query, we introduce a declarative Meta Schema Language for mapping SQL Data to RDF Ontologies.
As a result, all types of clients can efficiently access all data stored on the server.
The mapping functionality dynamically generates RDF Data Sets for popular ontologies such as SIOC, SKOS, FOAF, and ATOM/OWL without disruption to the existing database infrastructure of Web 1.0 or Web 2.0 solutions.
RDF views are also suitable for declaring custom representation for RDF triples, e.g. property tables, where one row holds many single-valued properties.


</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfsparqlrule.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>RDF Inference in Virtuoso</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfsparqlrule.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>RDF Inference in Virtuoso</title>
    <description />
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfsparqlrulefulltext.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Using Full Text Search in SPARQL</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfsparqlrulefulltext.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Using Full Text Search in SPARQL</title>
    <description>Virtuoso&#39;s triple store supports optional full text indexing of RDF object values since version 5.0.
It is possible to declare that objects of triples with a given predicate or graph get indexed.
The graphs and triples may be enumerated or a wildcard may be used.


The triples for which a full text index entry exists can be found using the bif:contains
or related filters and predicates.


For example, the query:


</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfsparqlprotocolendpoint.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Virtuoso SPARQL Query Service</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfsparqlprotocolendpoint.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Virtuoso SPARQL Query Service</title>
    <description />
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/sparqlbi.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Business Intelligence Extensions for SPARQL</category>
    <link>http://docs.openlinksw.com/virtuoso/sparqlbi.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Business Intelligence Extensions for SPARQL</title>
    <description>
Virtuoso extends SPARQL with expressions in results, subqueries, aggregates and grouping.
These extensions allow a straightforward translation of arbitrary SQL queries to SPARQL.
This extension is called  &quot;SPARQL BI&quot;, because the primary objective is to match needs of Business Intelligence.
The extended features apply equally to querying physical quads or relational tables mapped through RDF views.


</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/sparqldebug.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Debugging SPARQL queries</category>
    <link>http://docs.openlinksw.com/virtuoso/sparqldebug.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Debugging SPARQL queries</title>
    <description>A short SPARQL query can be compiled into a long SQL statement,
especially if data comes from many quad map petterns. Middle-size
application with 50 tables and 10 columns per table may create
thousand of quad map patterns for subjects of hundred different
types. An attempt to &quot;select everything&quot; from RDF view of
that complexity may easily create 5000 lines of SQL code. Thus it is
known in advance that some queries will be rejected even if same
queries work fine on default storage of &quot;physical
quads&quot;.

In addition, an SQL compiler signals an error if table or column
name is unknown, efficiently catching typos. SPARQL uses IRIs that are
long and sometimes unreadable, but there is no &quot;closed
world&quot; schema of the data so a typo in an IRI is not an error, it
is simply some other IRI. So typo in a IRI or in a namespace prefix
cause missing bindings of some triple patterns of the query and
incomplete result, but no errors are usually reported. Typo in graph
or predicate IRI may cause the SPARQL compiler to generate code that
access deafult storage instead of relational source or to generate
empty code that accesses nothing.

The SQL compiler does not signal casting errors when it runs the
statement generated from SPARQL, because the generated SQL code
contains option (QUIETCAST). This means that
mismatches between expected and actual datatypes of values stay
invisible and may cause rounding errors (say, integer division instead
of floating-point) and even empty joins (due to join conditions that
silently return NULL instead of return comparison error).

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfperformancetuning.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Virtuoso RDF Performance Tuning</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfperformancetuning.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Virtuoso RDF Performance Tuning</title>
    <description>For RDF query performance, we have the following possible questions:

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfstorebenchmarks.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>RDF Store Benchmarks</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfstorebenchmarks.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>RDF Store Benchmarks</title>
    <description />
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfsparqlimplementationextent.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>SPARQL Implementation Details</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfsparqlimplementationextent.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>SPARQL Implementation Details</title>
    <description>Virtuoso&#39;s RDF support includes in-built support for the SPARQL query language. It also includes a number of powerful extensions that cover path traversal and business intelligence features. In addition, there is in-built security based on Virtuoso&#39;s support for Row Level policy based security, custom authentication, and Named Graphs.

The current implementation does not support some SPARQL features.

On the other hand, Virtuoso implements some extensions to SPARQL:

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/rdfnativestorageproviders.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Native RDF Storage Providers</category>
    <link>http://docs.openlinksw.com/virtuoso/rdfnativestorageproviders.html</link>
    <pubDate>Mon, 28 Jul 2008 11:35:38 GMT</pubDate>
    <title>Native RDF Storage Providers</title>
    <description />
  </item>
 </channel>
</rss>
