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