= doc.FAQ.vfaqs %TOC% Why is Virtuoso described as a Universal Server? It''s a cross-platform server that implements multiple server-side protocols as part of a single server product offering. You basically get one server product that offers WebDAV/HTTP, Application, and Database server functionality alongside Native XML Storage, Universal Data Access Middleware, and a Web Services Platform. What is Virtuoso''s Third-Party Runtime Hosting? Runtime Hosting describes Virtuoso''s transparent integration with third-party runtime environments such as Microsoft .NET, Mono, and Java. This feature is an enhancement of existing Object-Relational database functionality that enables the creation of User Defined Types, Functions, Stored Procedures, Triggers, and SOAP compliant XML Web Services using Java, and any Microsoft .NET or Mono ECMA-CLI bound programming language(C#, Java, VB.NET, C++, Cobol, and others). What Is Frameworks Hosting? Framework hosting describes how Virtuoso delivers Virtual Web Application Server functionality by supporting a variety of Web Application scripting and programming environments - which may or may not accompany one of the hosted run-times. The supported environments include: ASP.NET for Microsoft .NET/Mono, Java Server Pages for Java, and PHP. The implications are that you can deploy any Web Application to Virtuoso that has been developed using any of these environments. You do not have re-write your web applications in order to take advantage of the benefits offered by Virtuoso. It is also important to note that Apache isn''t a requirement in order for any of this to happen. What Does ASP.NET Frameworks Hosting Give Me? Separation of the web application development environment and the deployment application server. ASP.NET and IIS are no longer inextricably linked -as many assume- on the Windows platform. Secondly, because ASP.NET is a Microsoft .NET Framework, and the fact that Mono is an Open Source and CROSS Platform .NET CLR implementation, you also get a decoupling of ASP.NET from Windows as a deployment platform. What Does Java Server Pages (JSP) Container Integration Give Me? Virtuoso currently integrates transparently with the Tomcat servlet container (a future release will act as a container in its own right), and a result it acts as an alternative deployment platform for JSP-based web applications. What Does PHP Integration Give Me? Virtuoso is a Zend Engine host, which by implication means that Virtuoso is a deployment server for PHP4-based web applications. Again, no other applications are required in order for you to deploy your PHP applications through Virtuoso. What is Virtuoso''s relevance in the world of XML? It addresses the fundamental question; where is all the XML data going to come from? You can''t exploit the benefits of XML without XML data, likewise you can''t manually recreate XML data in an attempt to address this reality. Virtuoso enables you to create XML data from existing data sources such as your SQL databases. It also enables the creation of XML data from data external URL accessible data. An in-built validating XML parser and an XSL-T engine lie at the root of Virtuoso''s XML Services offerings. Does Virtuoso store XML Data Natively? Yes, XML documents are stored in an XML repository. These documents may be parsed or unparsed at time of storage; in either case indexes are built which provide rapid access to these documents. Why is XML Data Storage Important? A major benefit of XML is its ability to provide an open format for data representation, exchange, protocol and application modeling. By using XML as a uniform data interface to disparate data sources, it becomes much easier to cost-effectively develop and deploy next generation web applications; increasingly these applications will depend on data hosted in a variety of databases and data-sources. Can I create Dynamic XML documents from SQL Data? Yes, Virtuoso implements SQL extensions that enable the results of standard SQL queries to be transformed into XML documents, these documents are openly accessible to user agents such as Web Browsers via HTTP and/or [[WebDAV]] . It is important to note that these SQL-XML documents are URI-accessible, and sensitive to the underlying changes that occur in the underlying database tables from which they have been derived. Can Dynamic XML documents be built using SQL data from different databases? Yes, the SQL to XML functionality sits above Virtuoso''s virtual database functionality, which enables a unified logical and physical representation of database tables and views that reside in disparate database engines from different database vendors. The only requirement is that these databases have to be accessible over ODBC or JDBC - implying the existence of data-access drivers for these databases. Which databases are supported by Virtuoso''s SQL to XML functionality? It supports any database accessible via ODBC and/or JDBC, implying pretty much every database. Why is creation of XML documents from SQL important? A lot of data that you would typically like to use as the foundation of your web-application initiatives is likely to reside in application databases that are predominantly SQL- based. Why is Virtuoso described as a Web Services Platform? It is described as such because it implements the complete stack of Web Services foundation protocols; SOAP, WSDL, and UDDI. It enables SQL Stored Procedures, Microsoft .NET, Mono, and Java based application logic to be invoked using SOAP. These SOAP compliant services are automatically described using WSDL, and advertised for binding via UDDI. This entire process can be achieved without writing a single line of new code. Can I host an Entire Web Site inside a Virtuoso Database? Yes, as an HTTP/WebDAV-compliant server all of the components within its [[WebDAV]] repository are URL and [[WebDAV]] protocol API accessible by HTTP/WebDAV compliant clients (user agents such as web browsers). The same applies to local operating systems files (subject to security controls). Examples of [[WebDAV]] clients include Windows (via Web Folders feature), Mac OS X, Nautilus Desktop (Linux and Solaris). An ever-increasing pool web development tools and content management systems include in-built support for [[WebDAV]] . Migrating your existing website to one hosted by Virtuoso is as simple as using the Virtuoso HTML-based UI to import the non-Virtuoso-hosted site. Does Virtuoso offer a Web application development language? Yes, the Web-application development language is called Virtuoso Server Pages (file extensions .vsp) and can be used in conjunction with XML-based server-side controls called Virtuoso Server Pages for XML (file extension .vspx), and a server-side module container called Virtuoso Server Modules for XML (.vsmx files). This Web-application development architecture provides a clear separation of Data (data-bound .vspx controls), Programming Logic (.vsmx files for application logic), and Formatting (.vsp for HTML display). Your Virtuoso installation includes a collection of data-bound controls for browsing and updating SQL data, input validation, session-management and any other common web-application development environment features. Can Virtuoso be used as Search Engine? Yes, like any search-engine it possesses Free-Text Search capabilities that leverage its ability to produce Free Text indexes on all text data (SQL and non SQL). Virtuoso free text search includes word-proximity searches and the ability to combine XPATH, Free Text, and Regular Expressions, if required, in the same query. This facilitates harvesting and indexing of any form of text-based web data (HTML, XHTML, XML etc.) stored in Virtuoso. Can I join data across different database engines? Certainly, Virtuoso provides the end-user or application developer with the ability to make a single concurrent connection to multiple back-end databases and data sources (XML and XML Web Services). Importantly, Virtuoso''s data-access interfaces are all industry standards-compliant (XML, Web Services, ODBC, JDBC, ADO.NET, and OLE DB) thereby broadening the number of applications, tools, and application-development environments capable of exploiting this Virtual Database functionality. A simple heterogeneous join scenario could involve joining the "Customers" table in an Oracle database with the "Orders" tables in a Microsoft SQL Server database, and then making this available for ODBC and/or XML application consumption. A more complex scenario could involve joining data across Oracle, SQL Server, and an XML URI (such as an RDF or RSS data feed from a web log, content syndicate, or web service), and then making this available to ODBC, XML, Web Services, JDBC, OLE DB and ADO.NET client applications. Is Virtuoso a database in its own right? Yes, it is a full blown SQL-92 relational database possessing all the functionality that you would expect in a modern-day relational database management system. It is also a Native XML database, and an Object-Relational Database in its own right. Does Virtuoso support stored procedures across different database engines? Yes, Virtuoso enables you to write stored procedures that reference tables hosted in different database engines. This has two major benefits: *You can store more of your database-centric application logic within Virtuoso and then leverage the performance advantages that stored procedures have over dynamic SQL. *Your stored procedures no longer have to be database-specific, a major reason why stored procedures are not used in when writing database independent applications. Does Virtuoso support VIEWS that include tables hosted different database environments? Yes, you can create logical VIEWS that include joins across tables within different database engines and data sources (XML and Web Services). What tools does Virtuoso support for analyzing data? Virtuoso 3.0 has added support for OLAP Clusters and XML for Analysis (XMLA) which is a SOAP based data access to tabular data hosted in Virtuoso (support for Multi-Dimensional data support in Virtuoso and 3rd party databases is currently being developed). What Replication Services does Virtuoso provide? Virtuoso enables bi-directional replication of all its contents with other Virtuoso server instances. It also provides transactional replication in similar fashion. A future release of Virtuoso will include bi-directional heterogeneous replication and [[SyncML]] -compliant content synchronization (across Virtuoso and other [[SyncML]] -compliant servers). What Mail Services does Virtuoso provide? Virtuoso includes an SMTP sink/drive that enables any SMTP-compliant Mail Agent to write its mail into a Virtuoso database. Mail data stored in Virtuoso can be retrieved via the POP3 protocol (IMAP4 support is also planned for a later release). SMTP and POP3 are also available as Virtuoso PL functions enabling the creation of sophisticated mail-oriented applications. What about Spam-Filtering and Mail Services? Virtuoso enables you to combine the functionality of a mail system and database so that you can custom develop spam-filters or customize Virtuoso (via its server extensions kit) to work with third-party Spam filter tools. Virtuoso can enable Spam filtering to occur immediately after mails are deposited in your mailbox, and prior to POP3 mail retrieval. Can I use Virtuoso to host newsgroups? Yes, Virtuoso implements the NNTP (Network News Transport Protocol) allowing a very simple interface for creating your own newsgroups. Can I use Virtuoso to communicate with other news servers? Yes, you can attach Virtuoso to newsgroups hosted on any NNTP Server What security is built into Virtuoso? For ODBC/JDBC Access *Standard SQL-92 GRANT/REVOKE statements for DB users. *Access control lists (ACLs) for incoming clients based on source IP. *Each incoming connection can be passed to a hook function (a Virtuoso/PL stored procedure) for custom security measures. *SSL TLS is available for ODBC clients (and being implemented for JDBC clients). *For HTTP/DAV/SOAP Access *By default, requests for resources contained within the DAV repository are checked using HTTP/1.1 Digest authentication, using credentials stored in system-users tables. *A Unix-like permission mechanism is used to control access to contents of DAV repository, these permissions applying to users and groups of users. *BASIC and HTTP/1.1 Digest authentication. *Custom authentication methods may be implemented via an authentication hook API. Database *Role-Based Security Web Services *WS-Security - enabling the use of symmetric and asymmetric encryption, digital signing, and identity authentication as defined by the WS-Security specification. Visit the online tutorials. How big is a typical Virtuoso installation? Approximately 15MB. If you exclude tutorial materials, sample applications, demos, and documentation the installation is approximately 3MB. How much memory does Virtuoso require? Nothing special, it can run within an 8MB environment if this is all you have, it can also take advantage of large system memory, providing you with the ability configure Virtuoso as an In-Memory database if you so desire. What operating systems does Virtuoso support? Virtuoso is available for GNU/Linux ("glibc2" and "libc5"-based distributions), Windows 95/98/NT/2000, Unix (all flavors) and Mac OS X. There are plans to port Virtuoso to the OS390, OS400, and VMS platforms subject to demand. How is Virtuoso Commercially Packaged? Virtuoso comes in two distinct formats: Standard Edition and Enterprise Edition. The Enterprise Edition includes out of the box bindings for third-party distributed-transaction management environments such as MTS/COM+ and J2EE. Does your product have an API and/or an SDK? Yes, but unconventional in the sense that industry standards are the way to consume Virtuoso''s services on the client side. On the server side Virtuoso can be extended in a number of ways: *Creating User-Defined Types and Functions using Microsoft .NET and Mono bound languages such as C++, C#, VB.NET etc. *Creating User Defined Types using Java *Virtuoso ''C'' based server extension kit ----