Chapter 1. Overview
Abstract
A quick overview on Virtuoso providing answers to simple questions that may already be in mind.
Table of Contents
- 1.1. What is Virtuoso?
- 1.2. Why Do I Need Virtuoso?
- 1.3. Key Features of Virtuoso
-
- 1.3.1. XML Document Storage & Creation
- 1.3.2. Web Page Hosting
- 1.3.3. Web Services Creation & Hosting
- 1.3.4. WebDAV Compliant Web Store
- 1.3.5. Content Replication & Synchronization
- 1.3.6. Transparent Access To Heterogeneous Data
- 1.3.7. Mail Delivery & Retrieval Services
- 1.3.8. NNTP Aggregation & Serving
- 1.4. Virtuoso FAQ
-
- 1.4.1. What is the storage cost per triple?
- 1.4.2. What is the cost to insert a triple (for the insertion itself, as well as for updating any indices)?
- 1.4.3. What is the cost to delete a triple (for the deletion itself, as well as for updating any indices)?
- 1.4.4. What is the cost to search on a given property?
- 1.4.5. What data types are supported?
- 1.4.6. What inferencing is supported?
- 1.4.7. Is the inferencing dynamic, or is an extra step required before inferencing can be used?
- 1.4.8. Do you support full-text search?
- 1.4.9. What programming interfaces are supported? Do you support standard SPARQL protocol?
- 1.4.10. How can data be partitioned across multiple servers?
- 1.4.11. How many triples can a single server handle?
- 1.4.12. What is the performance impact of going from the billion to the trillion triples?
- 1.4.13. Do you support additional metadata for triples, such as time-stamps, security tags etc?
- 1.4.14. Should we use RDF for our large metadata store? What are the alternatives?
- 1.4.15. How multithreaded is Virtuoso?
- 1.4.16. Can multiple servers run off a single shared disk database?
- 1.4.17. Can Virtuoso run on a SAN?
- 1.4.18. How does Virtuoso join across partitions?
- 1.4.19. Does Virtuoso support federated triple stores? If there are multiple SPARQL end points, can Virtuoso be used to do queries joining between these?
- 1.4.20. How many servers can a cluster contain?
- 1.4.21. How do I reconfigure a cluster, adding and removing machines, etc?
- 1.4.22. How will Virtuoso handle regional clusters?
- 1.4.23. Is there a mechanism for terminating long running queries?
- 1.4.24. Can the user be asynchronously notified when a long running query terminates?
- 1.4.25. How many concurrent queries can Virtuoso handle?
- 1.4.26. What is the relative performance of SPARQL queries vs native relational queries?
- 1.4.27. Does Virtuoso Support Property Tables?
- 1.4.28. What performance metrics does Virtuoso offer?
- 1.4.29. What support do you provide for concurrent/multithreaded operation? Is your interface thread-safe?
- 1.4.30. What level of ACID properties is supported?
- 1.4.31. Do you provide the ability to atomically add a set of triples, where either all are added or none are added?
- 1.4.32. Do you provide the ability to add a set of triples, respecting the isolation property (so concurrent accessors either see none of the triple values, or all of them)?
- 1.4.33. What is the time to start a database, create/open a graph?
- 1.4.34. What sort of security features are built into Virtuoso?
- 1.5. Tips and Tricks
-
- 1.5.1. How Can I convert triples with geo properties to geometries to use spartial query?
- 1.5.2. How Can I execute SPARQL queries containing '$' character using ISQL?
- 1.5.3. How can I find on which table deadlocks occur?
- 1.5.4. How Can I configure parameters to avoid out of memory error?
- 1.5.5. What are "Generate RDB2RDF triggers" and "Enable Data Syncs with Physical Quad Store" Linked Data Views options?
- 1.5.6. How to Manage Date Range SPARQL queries?
- 1.5.7. How can I see which quad storages exist and in which quad storage a graph resides?
- 1.5.8. Can I drop and re-create the DefaultQuadStorage?
- 1.5.9. How to display only some information from RDF graph?
- 1.5.10. Is it possible to have the SPARQL endpoint on a different port than the Conductor?
- 1.5.11. How to enable the Virtuoso Entity Framework 3.5 ADO.Net Provider in Visual Studio 2010?
- 1.5.12. How Can I Control the normalization of UNICODE3 accented chars in free-text index?
- 1.5.13. How Can I define graph with virt:rdf_sponger option set to "on"?
- 1.5.14. How do I use SPARUL to change a selection of property values from URI References to Literals?
- 1.5.15. How is a Checkpoint performed against a Virtuoso Clustered Server?
- 1.5.16. How can I use CONSTRUCT with PreparedStatements?
- 1.5.17. How can perform SPARQL Updates without transactional log size getting exceed?
- 1.5.18. How can I write custom crawler using PL?
- 1.5.19. How Can I Get an exact mapping for a date?
- 1.5.20. How Can I Get certificate attributes using SPARQL?
- 1.5.21. How can I make Multi Thread Virtuoso connection using JDBC?
- 1.5.22. How Do I Perform Bulk Loading of RDF Source Files into one or more Graph IRIs?
- 1.5.23. How to exploit RDF Schema and OWL Inference Rules with minimal effort?
- 1.5.24. How can I dump arbitrary query result as N-Triples?
- 1.5.25. How do I bind named graph parameter in prepared statement?
- 1.5.26. How can I insert binary data to Virtuoso RDF storage in plain queries and with parameter binding via ADO.NET calls?
- 1.5.27. How can I insert RDF data from Visual Studio to Virtuoso?
- 1.5.28. How does default describe mode work?
- 1.5.29. What should I do if the Virtuoso Server is not responding to HTTP requests?
- 1.5.30. What CXML params are supported for the SPARQL URL pattern?
- 1.5.31. How can I replicate all graphs?
- 1.5.32. What is best method to get a random sample of all triples for a subset of all the resources of a SPARQL endpoint?
- 1.5.33. How can I replicate all graphs?
- 1.5.34. How can I use SPARQL to make Meshups?
- 1.5.35. How can I use the net_meter utility before starting the ingestion to a cluster?
- 1.5.36. How can I use the LOAD command to import RDF data?
- 1.5.37. How can I delete graphs using stored procedure?
- 1.5.38. How can I use SPARUL to add missing triples to a Named Graph?
- 1.5.39. How can I use the SPARQL IF operator for SPARQL-BI endpoint?
- 1.5.40. How can I handle checkpoint condition?
- 1.5.41. How can I incorporate Content Negotiation into RDF bulk loaders?
- 1.5.42. Virtuoso Linked Data Deployment In 3 Simple Steps?
- 1.5.43. What are the differences between create, drop, clear and delete Graph?
- 1.5.44. How can I perform search for predicate values?
- 1.5.45. How can I use INSERT via CONSTRUCT Statements?
- 1.5.46. How to clear graphs which are related to empty graphs?
- 1.5.47. How can I use sub-queries to enable literal values based joins?
- 1.5.48. How can I execute query with labels preference order?
- 1.5.49. How can I get object datatype?
- 1.5.50. How Can I Backup and Restore individual table(s) and individual index(s)?
- 1.5.51. What bif:contains free-text options can I use?
- 1.5.52. What SPARQL Endpoint Protection Methods can I use?
- 1.5.53. How do I assign SPARQL role to SQL user?
- 1.5.54. How Do I Gecode Data?
- 1.5.55. How Can I Delete a Specific Triple Across Graphs?
- 1.5.56. How Do I Use NOT EXISTS in SPARQL Query?
- 1.5.57. How Do I Use MINUS in SPARQL Query?
- 1.5.58. How Do I Use Transitive SPARQL Query Options and Exploit Inference Rules?
- 1.5.59. What is the difference between the functions SAMPLE, GROUP_CONCAT and GROUP_DIGEST?
- 1.5.60. How Do I use CONSTRUCT with objects which are value of aggregate function?
- 1.5.61. How Do I Clean Up Errant Data using SPARQL Update Language?
- 1.5.62. How to Use SPARQL to add missing isDefinedBy relations to an Ontology?
- 1.5.63. How Can I execute load of sql dump from jdbc?
- 1.5.64. How Can I Use MODIFY to update triples?
- 1.5.65. How Can I execute INSERT/DELETE (SPARUL) statements against a WebID? protected SPARQL endpoint?
- 1.5.66. How can I make HTTP Logging and Recording in Virtuoso?
- 1.5.67. Quad Store Data Loading via Virtuoso's In-built Content Crawler?
- 1.5.68. What is the ShortenLongURIs Virtuoso configuration parameter?
- 1.5.69. How Can I send SOAP requests to Virtuoso SPARQL Endpoint?
- 1.5.70. How Can I Delete Triples containing blank nodes?
- 1.5.71. How Can I Get a full explain plan for a simple SPARQL query?
- 1.5.72. How Can I Use Expressions inside CONSTRUCT, INSERT and DELETE {...} Templates?
- 1.5.73. How to optimize bif:dateadd in SPARQL query using selective index-friendly filter?
- 1.5.74. How can I Determine the data usage across a Virtuoso instance?
- 1.5.75. How to discover the capabilities of a SPARQL endpoint to enhancing SPARQL-FED usage from Virtuoso instances?
- 1.5.76. How to split a urlencoded ";-" separated list of urls in a SPARQL query?
- 1.5.77. How to Update Large SPARQL Data avoiding due to database checkpoint abortion?
- 1.5.78. How to Manage SSL Protocols and Ciphers used with Virtuoso?
1.1. What is Virtuoso?
OpenLink Virtuoso is the first CROSS PLATFORM Universal Server to implement Web, File, and Database server functionality alongside Native XML Storage, and Universal Data Access Middleware, as a single server solution. It includes support for key Internet, Web, and Data Access standards such as: XML, XPATH, XSLT, SOAP, WSDL, UDDI, WebDAV, SMTP, SQL-92, ODBC, JDBC, and OLE-DB. Virtuoso currently supports the following Operating systems - Windows 95/98/NT/2000, Linux (Intel, Alpha, Mips, PPC), Solaris, AIX, HP-UX, Unixware, IRIX, Digital UNIX, DYNIX/PTX, FreeBSD, SCO, MacOS X.
Virtuoso is a revolutionary, next generation, high-performance virtual database engine for the Distributed Computing Age. It is a core universal data access technology set to accelerate our advances into the emerging Information Age.
Virtuoso provides transparent access to your existing data sources, which are typically databases from different database vendors.
Through a single connection, Virtuoso will simultaneously connect your ODBC, JDBC, UDBC, OLE-DB client applications and services to data within Oracle, Microsoft SQL Server, DB/2, Informix, Progress, CA-Ingres and other ODBC compliant database engines. All your databases are treated as single logical unit.
The diagram below depicts how applications that are built in conformance with industry standards (such as ODBC, JDBC, UDBC, and OLE-DB) only need to make a single connection via Virtuoso's Virtual Database Engine and end up with concurrent and real-time access to data within different database types.
Further still, Virtuoso exposes all of its functionality to Web Services. This means that your existing infrastructure can be used support Web Services directly without any hint of replacement.