Transcript Virtuoso
Michael Povolotsky
CMSC491s/691s
What is Virtuoso?
Virtuoso, known as Virtuoso Universal Server, is a
multi-protocol RDBMS
Includes an object-relational database engine (for sql,
xml, rdf, and free-text), includes JAVA and .NET
runtime hosting, Web Application Server, Web
Services, Web Content Management, DataPortability (
controlling, sharing, and moving data freely from
system to system)
Instead of separate servers for RDBMS, ORDBMS,
RDF, XML, Web Application Server, and File Server
functionality, Virtuoso combines the aforementioned
into a single “universal server”
Virtuoso is designed with multi-threading and multi-
CPU support
Quads
Implements a quad (graph, subject, predicate, object)
Default Layout
-
GSPO is used as the primary key
OPGS is used as a bitmap index
GPS are IRI ids (Internalized Resource Identifier) , O is any
SQL serializable object
Uses bitmap indices for efficient storage capacity
Quads
In Virtuoso, an RDF mapping schema consists of
declarations of one or more quad storages.[1]
The default quad storage declares that the system table
RDF QUAD consists of four columns (G, S, P and O)
that contain fields of stored triples, using special
formats that are suitable for arbitrary RDF nodes and
literals.[1]
Quads
“A quad map value describes how to compose one of
four fields of an RDF quad. It may be an RDF literal
constant, an IRI constant or an IRI class with a list of
columns of table aliases where SQL values come from.
Four quad map values (for G, S, P and O) form quad
map pattern that specify how the column values of
table aliases are combined into an RDF quad.”[1]
Data Manipulation
Virtuoso includes support for SPARUL SPARQL and is
compatibility with Jena
Updates can be run transactionally or with an
automatic commit after each modified triple[1]
SPARQL & SQL
SPARQL is translated into SQL when the query is
parsed.
All triples are stored in one table
RDF Inferencing
Includes an integrated capability directly in the
Virtuoso SQL execution engine to inference subclasses
and sub properties.
Asking for the class of an IRI also return any super
classes. This behavior is equivalent to having all of the
implied classes stored directly in the database.[1]
Benchmarks
Virtuoso can store over 1 billion triples
Loads 1 billion triples LUBM benchmark at a sustained
rate of 12692 triples/s and 47 million triples Wikipedia
data set at a sustained rate of 20800 triples/s (Orri
Erling, OpenLink) [4]
Applications
Dbpedia
Musicbrainz
Geonames
PingTheSemanticWeb
Features
http://virtuoso.openlinksw.com/main/featurematrix/i
ndex.htm
Protocols Implemented
API’s Implemented
HTTP, HTTPS, WebDAV,
ODBC, JDBC, OLE DB,
SOAP, UDDI, WSDL, WSPolicy, WS-Security, WSReliableMessaging, WSRouting, WS-Referral, WSAttachment, WS-BPEL,
SyncML, GData, SPARQL,
SPARUL, NNTP
ADO.NET, ADO.NET Entity
Framework, XMLA
Query Language Support
Schema Definition Lanuage
SQL
SQL’s DDL (Data Definition
SPARQL
Language)
XQuery
XPath
XSLT
XML Schema
Content Syndication and Interchange Format
Support
Atom
RSS 2.0/1.0
OPML
XBEL
FOAF
SIOC
Cross-Platform Support
Virtuoso is supported on large number of platforms,
both 32-bit and 64-bit
- Windows
- UNIX (HP, AIX, Sun, DEC, BSD, SCO)
- Linux (Red Hat, SUSE)
- Mac OS X
Licensing
In 2006 Virtuoso was available as open source
Today, Virtuoso is available in both open source and
commercial licenses
The open-source version of Virtuoso is known as
OpenLink Virtuoso
Subsequent Work
Clustering: increasing the storage of triples from the
billions to hundreds of billions and upwards[1]
Updating Relational Data by SPARUL statements:
extending SPARUL compiler and run-time in order to
make RDF views updatable[1]
Cloud Computing: for huge triple storage sets that
current data centers may not be able to handle
Bibliography
[1] Erling O., Mikhailov I.: RDF Support in the Virtuoso
DBMS
[2] Erling O.: Towards Web Scale RDF
[3] http://en.wikipedia.org/wiki/Virtuoso_Universal_Server
[4] http://virtuoso.openlinksw.com/wiki/main/Main/VOSBitmapIndexing