---+ OpenLink Universal Integration Middleware - Frequently Asked Questions about the Virtuoso Product Family
%TOC%
---++ Virtuoso Universal Server
---+++ Why is Virtuoso described as a Universal Server?
Virtuoso is a cross-platform server that implements multiple server-side protocols
as part of a single-server product offering. There is [[VirtuosoUniversalServer][one server product]]
that offers WebDAV/HTTP, Application, and Database-server functionality
alongside Native XML Storage, Universal Data-Access Middleware, Business
Process Integration, and Web-Services Platform.
---+++ What is the difference between the Open Source and Commercial Editions?
The Open-Source Edition lacks [[https://virtuoso.openlinksw.com/features-comparison-matrix/][several features which are only available in Enterprise Edition]]:
* Sponger's Meta Cartridges
* SPARQL-GEO & GeoSpatial indexing in general
* Virtual Database Functionality
* Data replication
* Clustering & High Availability
---+++ How does Virtuoso deliver on SOA?
Virtuoso Universal Server supports the key SOA concepts including creating
composite applications from loosely coupled data, and construction of web
services from heterogeneous datasources, as well as integration, management,
and synchronization of business processes.
---+++ Can Virtuoso be considered an ESB?
Virtuoso is a Universal Server, but can be considered an Enterprise Service
Bus (ESB). By supporting of a number of web service protocols including
WS-RM, Virtuoso can act as a shared messaging layer for connecting
application logic and other web services or business processes.
---++ Enterprise Data Management
---+++ Virtual Database Engine
---++++ What does Virtuoso mean by a 'Virtual database'?
In the simplest form, a virtual database provides the ability to search
across several databases with a single query (database-federation).
Virtuoso extends this query functionality and data-transformation through
hosted logic, SQL, SQL stored procedures and XML, and Virtuoso PL.
---++++ With what types of databases does Virtuoso interface?
Virtuoso supports a number of database platforms and can simultaneously
connect your ODBC, JDBC, UDBC, OLE-DB client applications and services to
data existing in such databases as Oracle, Microsoft SQL Server, DB/2,
Informix, Progress, Ingres and as well as other ODBC-compliant database
engines.
---++++ How does Virtuoso deal with distributed transaction issues?
When running on Windows, Virtuoso can act as an MS DTC (Distributed
Transaction Coordinator) resource manager and client. This means that for a
client aware of distributed transactions, Virtuoso can be enlisted as a
participant in a 2PC transaction via ODBC, OLE/DB and .NET client
interfaces. If Virtuoso acts as a participant in a distributed transaction
and involves data from remote databases, it will propagate the enlistment
if the remote database in question supports this. A virtuoso stored
procedure can also initiate a distributed transaction into which it then
enlists multiple other resource-managers as the need may arise. The
enlistment is transparently handled by the VDB logic once the Virtuoso
transaction has been declared as distributed.
Any transactions involving updates to exactly one remote database plus
Virtuoso can be handled as single-phase commit without danger of
corruption.
On other platforms, Virtuoso can act as an XA-compatible resource manager.
In these environments Virtuoso cannot at present enlist remote databases
but can be enlisted itself. The most convenient client API for this is JDBC
with its distributed transaction support.
---++++ How does Virtuoso deal with differences in SQL dialects?
At the time of defining a remote data source, Virtuoso makes queries
concerning its capabilities. It will use these results in generating SQL
statements to pass to this data source. For example, if a remote database
does not support a specific SQL function or construct, e.g. outer join, it
will not present it with SQL statements containing these and will perform
the unsupported operation locally instead. This is entirely transparent to
the Virtuoso client.
---++++ How do you set up a virtual database?
Select a data source from the available ODBC data sources on your system,
view the tables, views and stored procedures available on each, select
which ones you want to access via Virtuoso and you are set. From now on,
you may manipulate these remote objects from Virtuoso SQL and applications.
A web-based UI takes you through this process in a few clicks.
---++++ What are the security implications of a virtual database with Virtuoso?
The Security Manager inside the Virtual Database Engine is responsible for
protecting data and data transmission through encryption. The security
manager is also responsible for managing Application, User, Group, Role and
Domain privileges as they relate to the creation, manipulation and
destruction of Virtual Database data and metadata.
---++++ Can I join data across different database engines?
Certainly; Virtuoso provides the end-user or application developer with the
ability to make single concurrent connections to multiple back-end
databases and data sources (XML and XML Web Services). It is important to
note that Virtuoso's data-access interfaces are all compliant with industry
standards (XML, Web Services, ODBC, JDBC, 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 NET client applications.
---+++ SQL Database Engine Functionality
---++++ Is Virtuoso a relational DBMS?
Virtuoso implements a traditional relational database engine's
functionality. This functionality includes SQL (Structured Query Language)
for relational data, a Query processor, View Support, Standard Datatype
support including character, number and dates, stored procedures,
concurrency support, transactions, distributed transactions, scrollable
cursor support just to name a few.
---++++ What client APIs does Virtuoso support?
ODBC, JDBC, .NET data provider, OLE/DB. The Java and .NET clients are pure
Java and .NET respectively. ODBC is Virtuoso's native low-level CLI.
---++++ What level of SQL is supported?
Virtuoso is fully SQL92-compliant and supports several of the SQL-200n
features, including:
* User-Defined Data Types with methods, inheritance etc.
* User-defined aggregates, including 20+ built-in statistical operations.
* SQLX for generating XML results in queries, including a native XML data type.
* Cubes and Rollup in GROUP BY.
---++++ What is the SQL security model supported by Virtuoso?
Virtuoso supports standard SQL role-based security and full table and
column-level granting of privileges. Additionally, Virtuoso offers
row-level security through a system of policy functions. Event hooks can be
defined for performing extra validation at login time, such as consulting
an LDAP directory for the user's credentials.
---++++ What is Virtuoso's transaction support?
Virtuoso's Transaction Manager component ensures that transactions are
Atomic, Consistent, Isolated and Durable (ACID). The Transaction Manager
ensures VDB Engines are capable of supporting Online Transaction Processing
(OLTP) and Distributed Transaction-oriented applications and services.
Virtuoso provides the 4 standard levels of isolation: dirty read, read
committed, repeatable read and serializable. Repeatable-read is the default
setting. See Virtual Database questions for a discussion of distributed
transactions.
---++++ What is Virtuoso's distributed-transaction support?
Virtuoso preserves transaction atomicity, consistency, integrity, and
durability (ACID) across it own database servers as well as heterogeneous
servers through the support of transaction commits and rollbacks using a
2-phase commit protocol.
---++++ What SQL optimization does Virtuoso perform?
Virtuoso has a cost-based SQL optimizer. It uses table row-count, data-size
and value-distribution statistics for evaluating the cost of diverse
execution plans. For each plan, loop-invariants are extracted, loop and
hash join types are evaluated, different indices are compared for access
performance and predicates are evaluated as early as possible, most
restrictive first, for any join order being contemplated. Additionally, the
programmer can explicitly specify the join order and join type (loop/hash)
for each table.
---++++ How does one administer a Virtuoso database?
Virtuoso database can be administered through the Virtuoso Conductor or
through the interactive SQL tool ISQL.
---++++ How does Virtuoso handle backups?
Backups can be handled in a variety of ways. Virtuoso has both off-line and
on-line incremental backups.
Virtuoso's transaction mechanism is based on keeping a read-only checkpoint
plus a transaction log for any committed but non-checkpointed transactions.
Virtuoso has an incremental, on-line backup function, which can backup a
running database in its checkpoint state without restricting concurrent
update activity. Virtuoso records at each checkpoint the pages, which were
changed since the last backup. Hence the next backup will only cover pages
which are changed in the checkpoint state since the last backup. Each
checkpoint can optionally start a new transaction log, leaving a full audit
trail of transaction logs. Having a series of full plus optionally
incremental backups up to a certain checkpoint and then the transaction
logs consecutive to the last backed up checkpoint will guarantee a full
recovery up to the latest transaction committed at the time of failure. The
backup function automatically compresses the backup and chunks it into
fixed-size chunks for convenience in handling large databases.
On the other hand, as long as no checkpoint intervenes, it is safe to copy
the database file(s) plus the log for an up-to-data clean image of the
database.
---++++ What is Virtuoso's support of stored procedures?
Virtuoso has a very extensive procedure language called Virtuoso PL. The
syntax of the Virtuoso PL resembles C with inline SQL-99 and PSM-96
features such as exception handlers. Stored procedures provide a
significant increase in performance over client applications on the same
machine for any application involving a number of short SQL operations, as
in the case of OLTP.
---++++ Can one extend Virtuoso's SQL?
Virtuoso can extend SQL by import Java and .NET classes and functions as
well as build-in SQL functions written in C. In addition, you can persist
instances of imported classes into Virtuoso tables. For all intents and
purposes, a hosted class instance is indistinguishable from a native SQL
user-defined type instance.
---++++ Is there full text indexing support?
Virtuoso supports full-text indexing providing the ability to choose
complex, multi-part document-ids for application-specific sorting of hits,
efficient storage of secondary, non-free-text data in the free-text index
for best retrieval performance, options for restarting searches at a
specific hit as well as ascending and descending orders of the document
id's.
---++++ What is the internationalization support of Virtuoso?
Virtuoso supports Unicode (NCHAR/LONG NVARCHAR) columns as well as a
national character set, which define how strings will get converted from
narrow to wide characters. There is a number of pre-defined character sets
included in a system table called SYS_CHARSETS. This list can be updated by
defining new characters using a build-in function called charset_define().
---++++ What encoding formats are supported?
Virtuoso supports Unicode, ASCII, and UTF.
---++++ What development environment/debugging/profiling facilities are there for SQL and stored procedures?
Virtuoso comes with a library of online tutorials which demonstrate all
salient aspects of software development in Virtuoso/PL. Examples include
XML processing, full text features, dynamic web pages, hosting Java and
.Net and various scripting languages etc.
Virtuoso has a rich set of debugging and profiling tools. The interactive
SQL utility has a debug mode in which you can set breakpoints and
single-step stored procedures with functionality similar to what gdb or dbx
offer for C.
On Windows, there is a MS Visual Studio extension package which allows
defining Virtuoso SQL projects, provides IntelliSense syntax highlighting
and completion and many other features. The Virtuoso .NET data provider has
design time interfaces to Visual Studio for drag and drop use in C#
projects.
For performance profiling, Virtuoso offers a call graph profiler and test
coverage utility. These show elapsed times and line-by-line execution
counts for stored procedure code.
For regular database statistics, Virtuoso provides index-by-index cache-hit
rates, wait times, deadlock-counts and other information for assisting
database tuning.
---++++ 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 supports the basic SQL OLAP extensions for GROUP BY, i.e. CUBE,
ROLLUP, GROUPING etc. Virtuoso does not offer specialized storage for OLAP
cubes.
---+++ Object-Relational Functionality
[[VirtuosoObjectRelationalDatabase][ Object-Relational Database ]]
---++++ What about SQL-200n Object Oriented features?
Virtuoso SQL supports SQL2000-style objects as standalone data in
procedures and as column data types. The Virtuoso Object System supports
single inheritance, late binding, polymorphism and persistence of objects
as column values in SQL tables. An object's implementation may be native
SQL, with methods in/PL, or the objects may be implemented in Java, or any
Microsoft .NET or Mono ECMA CLI bound language. Hosted and native objects
are indistinguishable from the perspective of a Virtuoso SQL application.
The native methods and data members are automatically made accessible from
SQL when the class or class hierarchy is imported into the SQL schema (data
dictionary). Virtuoso supports single inheritance between tables through the
SQL-200n UNDER clause. A subtable will inherit the supertable's columns,
primary key and indices and can for itself add new columns and indices.
Selects on supertables will also include rows that belong to subtables.
---++++ What does Virtuoso offer in terms of User Defined Types or other datatype extensions?
Virtuoso supports SQL 2K User Defined Types (UDTs) and User-Defined
Functions (UDFs) which can be defined in SQL, Java and .NET-bound
languages. Virtuoso also offers Procedure Views which are similar to
table-valued functions that allows you to define a view as a stored
procedure.
---++++ How do Third-party Runtime-Hosting modules execute?
Runtime Hosting Languages such as Perl, Python, Ruby loaded in process.
These are callable via special functions from SQL. Web pages in these
languages can be hosted without any special programming.
---++++ What types of security or privileges are provided for Third-party Runtime Hosting?
Privileges are roles based at the table, column, procedure and type levels.
Row Level security is based on table by table policy functions.
---++++ Does Virtuoso Object-Relational database support arbitrary length types?
Virtuoso supports all combinations of narrow, wide and binary strings.
---++++ What does Virtuoso offer in terms of Complex Objects like the creation of Composite Types?
Virtuoso allows you to create UDTs which can reference any other UDTs. You
can also declare columns to contain sort and long UDT instances regardless
of implementation be it SQL, Java or .NET.
---++++ How are Composite Types handled and called?
User-Defined Functions' arguments and return-values are passed by value and
by reference. OID-referenced objects have no persistent identity. Virtuoso
functions and composite types support dot-operators for data-members and
member functions like other formal languages. In addition, since the
objects are types at runtime arrays and other complex data structures can
also contain UDT instances as well as other data.
---++++ What about Data Inheritance?
Single inheritance for tables is provided via the under table and under for
UDT functionality. Function-overloading is provided via dynamic binding of
methods based on runtime type of self when there are multiple eligible
methods, discriminating on compile-time types of arguments.
---++++ Does the Virtuoso Object-relational Database Support Triggers?
Virtuoso supports SQL99 row-level triggers that can call outside code for
signalling to clients although no special client-notification mechanism is
supported by the Virtuoso client-server protocol.
---+++ XML Data Management
---++++ How does Virtuoso store XML?
Virtuoso offers the XMLType datatype. This data-type can be made from a
text representation and can again be converted into text. XPATH, XSLT,
XQuery and SQLX operations can be applied to this type. It can be stored as
either text or in a pre-parsed binary format. XMLType defined as a column
value, a XML tree can be specifically full text indexed so that XML
elements are taken into account. Besides normal text index operations, this
indexing also allows resolving occurrence of elements, inclusion of text
inside elements etc.
---++++ How does Virtuoso generate XML from relational data?
Virtuoso has several mechanisms for transforming SQL data into XML. One
option is the "FOR XML" clause, which is a SQL option that can convert the
output of a SELECT statement into a tree.
* SQLX is the standard SQL way of creating XML content from relational data.
Special aggregates and functions allow composing trees in queries
* Mapping Schemas - A mapping schema is an XML schema, which defines how
the data is to be extracted from, joins of relational tables. When an XPATH
query is evaluated against a mapping schema, Virtuoso generates an SQL
query, which will retrieve only the required rows and then generate the XML
tree.
---++++ Can Virtuoso present legacy RDBMSs as XML stores?
The SQL-based XML-generation features do not differentiate between local
and remote tables, so any relational data will be accessible via these
means as XML.
---++++ How does one combine native XML and relational data in queries?
Virtuoso SQL offers special predicates for testing stored XML against XPATH
and text conditions as well as extracting fragments from stored XML trees.
New XML can be made from these with the SQLX functions or XSLT stylesheets,
for example. A result column of a query may fully well consist of XML data.
Inside a stored procedure, further XML operations can be applied to the
data, in the case of a client the XML is seen as text via the client API.
Another approach is to write queries in XQuery and access SQL data from
there. Any XML mapping schema appears as a document accessible with the
XMLView XPATH extension function. Joins of tables can thus be accessed and
filtered as if they were XML data to begin with. Note that this does not
entail constructing XML for data, which is actually not needed by the
Xquery statement.
---++++ How do you make and transform XML inside queries and SQL procedures?
XSLT and XQuery are most convenient for extensive processing of XML. For
quickly generating simple XML trees from SQL data, SQLX functions are most
convenient. For complex mapping of relational and XML data, mapping schemas
are most convenient. For a one-to-one mapping between a foreign-key
relation in SQL and tree-hierarchy in XML, the `FOR XML' SQL extension is
most convenient.
---++++ What is the XPATH, XSLT, XQuery standard-compliance?
Virtuoso currently supports XPATH 2.0, XSLT 1.1, and XQuery 1.0.
---++++ What are the searching functions available: Standard XML languages (XQuery, XPath or/and proprietary languages)?
XPath, Xquery, Freetext queries, and, or not proximity and wildcards. A
free-text expression may be embedded inside an XPath predicate using a
special XPath expression.
---++++ What about SQLX standard support?
Virtuoso supports offers full support of SQLX which is SQL with a
collection of functions added for creating XML entities from standard
relational queries. The SQL/XML is an emerging standard driven by the H2.3
Task Group (formerly the SQLX Group). Current support for these functions
includes XMLELEMENT, XMLATTRIBUTES, XMLFOREST, XMLCONCAT, and XMLAGG when
combined with SQL result in XML that is returned in a column in a result
set.
---++++ How can one combine full text and XML structure-based queries in document-centric applications?
This is possible in either SQL or XQuery. In SQL, for example, one can join
a table of XML documents with author information by writing a SQL join
between a publications table and an authors table. The author reference
would just be extracted with XPATH after application of a free-text-based
content-filtering.
In XQuery, the documents table and authors tables would be represented as
documents via mapping schemas and the one could write flwr statements for
joining the two.
---+++ RDF Data Management
[[VirtuosoRDF][ _RDF Triple Store_ ]]
---++++ How do you load RDF data into Virtuoso RDF Triple Store?
You can load N3, Turtle, and RDF/ XML files into a Virtuoso-hosted "named
graph" using Virtuoso SQL functions. The same functionality is also
available to single triple statements.
Virtuoso also has the ability to automatically extract metadata from DAV
resources via metadata extractors. Virtuoso includes a number of
metadata-extractors for a range of known data-formats (typically
microformats and some popular binary file types). These metadata extractors
enable automatic triple-generation, graph-association, and storage in
Virtuoso's RDF Triple Store. It is also important to note that Virtuoso
actually converts WebDAV metadata into RDF providing richer query
capability against WEbDAV resources.
---++++ How do you query and perform searches with Virtuoso RDF Triple Store?
SPARQL statements can be written inside SQL statements or presented as
top-level SQL queries. This means that any ODBC, JDBC, .NET or OLE/DB
application can simply make SPARQL queries just as if they were SQL
queries.
Virtuoso also supports the SPARQL transport protocol, allowing
[[http://docs.openlinksw.com/virtuoso/rdfsparqlprotocolendpoint.html#rdfsparqlprotocolendpoint][SPARQL
queries to be executed over HTTP]]. It also supports the SPARQL XML results
serialization format.
---++++ What RDF Datatypes are supported in Virtuoso RDF Triple Store?
If an RDF type corresponds to a SQL data type, the data is stored as a
native instance of the SQL type in question. For strings with language tags
and other RDF data that has no direct SQL counterpart, a special
representation preserving the RDF semantic is used.
---++++ How many graph models can Virtuoso RDF Triple Store support?
Unlimited.
---++++ What Data Access methods are supported ?
SPARQL protocol over HTTP; any SQL client library can be used for issuing
SPARQL queries just as well as SQL queries.
---+++ Application Integration (Web Services & SOA)
---++++ Web Services
---+++++ Why is Virtuoso described as a Web Services Platform?
Virtuoso 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 is achievable
without writing a single line of new code.
---+++++ What is the benefit of Service Composition in Virtuoso?
Exposure of existing time-tested application-logic for invocation using Web
Services protocols without any code re-writes. Code format support includes
SQL Stored Procedures, .NET assemblies, Java Classes, C/C++ modules, etc.
---+++++ What is meant by Service Invocation Endpoints?
Service Invocation endpoint are HTTP/WebDAV based virtual directory and
multi-homing functionality that provides endpoints for SOAP-, WS-Security-,
WSDL-, and UDDI-compliant interactions with composite services.
---++++ Content Management, DAV, and HTTP Services
---+++++ Can Virtuoso act as a repository?
Virtuoso can act as a repository through DAV, or WebDAV, a
protocol for Web-based Distributed Authoring and Versioning. Repository
content elements are called documents, corresponding to files, and
folders/collections, corresponding to directories. Collectively these
documents and folders (collections) are known as resources.
Virtuoso implements the DAV protocol, allowing you to create and
manage resources either directly through repository manipulations or
indirectly, through a variety of WebDAV services.
---+++++ Can I host an entire website inside a Virtuoso database?
Yes, as an HTTP/WebDAV-compliant server all of the components within its
WebDAV repository are accessible by URL and WebDAV protocol using
HTTP/WebDAV-compliant clients (user agents such as web browsers). The same
applies to local operating systems files (subject to security controls of
course).
Examples of WebDAV clients include the 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 Web Site to one hosted by Virtuoso is as
simple as using the Virtuoso HTML-based UI to import the site.
---+++++ What file-transfer protocols does Virtuoso support?
Virtuoso has provided a built-in RFC-959/RFC-2389 Protocol Server for FTP
as well as an FTP client since V3.2. Virtuoso FTP Client allows
through Virtuoso PL code the ability to retrieve, submit and list
files from any FTP server and stored the results on a local file system or
in the database. The FTP Server provides FTP access to the
Virtuoso WebDAV repository using the same authentication and permissions
system as WebDAV.
---+++ Web Server
---++++ Does Virtuoso offer a Web application development language?
Yes, the Web application development language is called Virtuoso
Server Pages (VSP; file extension .vsp) which can be used in conjunction
with XML-based server side control called Virtuoso Server Pages
for XML (VSPX, file extension .vspx). VSPX offers a suite of data-bound
controls for browsing and updating SQL data, input-validation,
session-management and any other common web application development
environment features.
XSLT can be used for pre- and post-processing VSPX pages. On the
preprocessing side, it can serve to divide logic from layout by expanding
simple markup into complex controls and scripting. On the output side it
can be used to process the HTML generated by a dynamic web page to add HTML
layout and graphic elements to bare-bones data produced by the business logic.
---++++ 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 or
otherwise). 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. Ultimately you can harvest and
then index any form of text-based web data (HTML, XHTML, XML etc.) stored
in Virtuoso.
---++++ What is Virtuoso's relevance in the world of XML?
It addresses the fundamental question: from where is all the XML data going
to come? 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, which 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 accessible by URL 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
(VDB) 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 ODBC- or JDBC-accessible - 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 that supports ODBC and/or JDBC, so 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 more than likely resides in application
databases that are predominantly SQL-based.
---++++ What is the core web services protocol support?
SOAP 1.1, 1.2, WS-Security, WS-Trust and WS-Policy.
---++++ What WS-Security features are supported?
Virtuoso support of Web Services Security includes enabling the use of
symmetric and asymmetric encryption, digital signing, and identity
authentication as defined by the WS-Security specification.
---++++ How does one test web services under Virtuoso?
Published SOAP Services can be tested through VSMX which is a
Virtuoso-generated test page allowing you to test SOAP Services. The SOAP
Services can be referenced by the Server instances URL and the virtual
directory containing the logical path of the services.
---++++ How does one publish existing business logic via Web Services?
Business logic defined in stored procedures and functions can be exposed as
SOAP services whether they are native within Virtuoso or from remote data
sources. These stored procedure can be published by linking the selected
stored procedure through the Remote Procedure Interface, then creating a
new or selecting an existing Virtual Directory and finally publishing to
the Virtual Directory using the publish function in the Virtual Director
User Interface.
---++++ What is the proven interoperability of the Virtuoso Web Services implementation as compared to other vendors?
Virtuoso participates in interoperability tests rounds for different
implementations of the SOAP and WSDL specifications defined by the
[[http://groups.yahoo.com/group/soapbuilders/][SOAP Builders]] and
[[http://groups.yahoo.com/group/WS-RM-Workshops/][WS-RM Interop]]
communities. The Virtuoso SOAP server and client implements SOAP protocol
versions [[http://www.w3.org/TR/soap/][1.1]] and
[[http://www.w3.org/2000/xp/Group/][1.2]]. The SOAP services hosted in
Virtuoso can be described with an automatically generated
[[http://www.w3.org/TR/wsdl][WSDL document]] or with a user-supplied WSDL
document. The Virtuoso SOAP Server and client with protocol support version
1.1 and automatically generated WSDL documents have been tested. Interop
tests are organized into rounds and each round consists of the following
groups: (List of service endpoints and client results is available in html
form or via SOAP).
* [[http://www.xmethods.net/ilab][SOAP Interop Round 1]] - Base interop tests
are superseded by Round 2 Base test
* [[http://www.whitemesa.com/interop.htm][SOAP Interop Round 2]] - SOAP interop
base, GroupB and GroupC
* [[http://www.whitemesa.com/r3/interop3.html][SOAP Interop Round 3]] - WSDL interop
including EmptySA, Import1-3, Compound1 &2, DocLit, DocLit Parameters and RpcEncoded Tests
* [[http://www.whitemesa.net/r4/interop.html][SOAP Interop Round 4]] - Contains DIME/SwA,
Fault message processing, WSDL/XSD
* WS-RM - WS-ReliableMessaging tests to test messaging over SOAP
Virtuoso's SOAP server and client with protocol support for version 1.2
have been tested with test cases as per
[[http://www.w3.org/TR/2003/REC-soap12-testcollection-20030624/][W3C SOAP
Version 1.2 Specification Assertions and Test Collection]]. Rounds 1-4
tests are located on
[[http://demo.openlinksw.com/Interop/documents/][Virtuoso Interop]] and
through our [[http://demo.openlinksw.com/tutorial/services][SOAP on-line
tutorials]]. The WS-RM interop tests can be experienced through our
on-line
[[http://demo.openlinksw.com/tutorial/services/rm_s_1/rm_s_1.vsp?f=2#2][WS-RM
tutorials]].
---+++ Process Management & Integration (BPEL)
---++++ What is BPEL?
BPEL4WS (BPEL for short) is an XML vocabulary for orchestrating SOAP and
WSDL-compliant Web Services. It is the critical standard for creating
composite processes from a collection of Web Services using the principles
of Service Oriented Architecture (SOA).
---++++ What is Virtuoso BPEL Process Manager?
Virtuoso BPEL Process Manager (VBPM) engine is a run-time and
administration environment for executing processes based on BPEL4WS 1.1
(BPEL for Web Services), the latest version of a specification designed by
Microsoft, IBM, BEA Systems and Siebel Systems. The software vendors are
shepherding the spec through e-business standards body OASIS.
---++++ BPEL Engine and Process Manager
---+++++ Is the BPEL engine and Process Manager compliant with Web Service standards?
Virtuoso provides a number of WS protocols on the WS-I standards including
Security (WS-Security) and Reliability (WS-Reliable Messaging). Virtuoso
BPEL engine also includes a number of Web Services protocols that add
security, reliability and Enterprise scalability.
* XML
* UDDI
* SOAP
* HTTP
* BPEL4WS
* WSDL
* WS-Security
* WS-Routing
* WS-Reliable Messaging
* WS-Policy Attachment
* WS-Policy Assertions
* WS-Policy
* WS-Addressing
* XML Signature
* XML Encryption
---+++++ How is support for WS-Reliable Messaging integrated with VBPM?
Processes in can be deployed for any business-critical transactions over
the Internet using the WS-Reliable Messaging (WS-RM) specification through
guaranteed (at-most-once, at-least-once, and exactly once) messaging for
any partner via BPEL Process Manager.
---+++++ Can I use my existing BPEL files with the BPEL Process Manager?
Yes. Virtuoso BPEL Process manager fully implements the BPEL specification
and can deploy any BPEL document created using any BPEL modeling tool that
supports this specification.
---+++++ How do I monitor process activity?
The BPEL Process Manager includes a web-based user interface for testing,
debugging, and monitoring deployed business process.
---+++++ How are problems with long-running transactions handled?
The BPEL Process manager includes support for compensation, fault-handling
and event handling.
---+++++ How do I test my business processes for all of the errors?
The BPEL Process Manager product includes a debugger to test business
processes in the Debug Message Queue, which includes the state of a given
process, actions for the process and list of instances for the process.
---+++++ What does the BPEL Process Manager system tell me about my executing processes?
The BPEL Process Manager provides real-time status for all running
processes and transactions on any BPEL processes deployed on the server
including Information on bpel source, wsdl and partner links.
---+++++ What information is provided on process?
The BPEL Process manager provides statistics and reporting details on
process and instances which can be so that processes can be analyzed and
later optimized for deployment.
---+++++ What other integration does the BPEL Process Manager offer?
The BPEL Process manager has extensive database-, XML- and Web Service
integration and provides for intelligent transformation for XML and non-XML
applications and data. Virtuoso allows integration of databases into
Service-Oriented Architectures (SOAs), by automating the creation of Web
Services from multiple tables in any ODBC-, JDBC- or ADO.Net-compliant
database.
---+++++ What about support for .NET or Java?
Through the BPEL process manager any BPEL processes can directly invoke
local hosted Java or .NET logic as well as access SQL data resident in
local and remote tables.
---+++++ What about Interoperability?
Virtuoso BPEL has gone through an extensive interoperability testing
against Microsoft, Oracle, and other vendors' implementations. Virtuoso
also offers an interoperability site for testing and sharing results, which
validate the Virtuoso BPEL engine, and ensures the rapid orchestration of
existing Web services.
---+++++ Are there any special requirement to use Virtuoso BPEL?
The BPEL engine requires at least Virtuoso Universal Server 4.5 and the
BPEL Process Manager, which is compatible with any browser on any platform.
---+++ Collaboration and Network Effects FAQ
---++++ [[VirtuosoMailOverview][SMTP, POP3 and NNTP]]
---++++ Mail
---+++++ What Mail Services does Virtuoso provide?
Virtuoso includes an SMTP sink/drive that enables any SMTP-compliant Mail
Transfer Agent (MTA, such as sendmail, exim) to write its mail into a
Virtuoso database. Email data stored in Virtuoso is retrievable via the
POP3 protocol with IMAP4 support planned for a later release. SMTP and POP3
are also available as Virtuoso PL functions enabling the creation of
sophisticated mail-oriented applications.
---+++++ Can I store e-mail received by a mail server in Virtuoso?
Yes, Virtuoso provides e-mail storage drivers for popular SMTP servers such
as sendmail and Windows SMTP. This means that you can configure your mail
server such that it stores e-mails inside Virtuoso rather than in the OS.
---+++++ How do I interact with my e-mails if stored within Virtuoso?
There are two ways of doing this: the first is use Virtuoso as your POP3
server, and then let your POP3-based mail client interact directly with
Virtuoso. Secondly, you can move mail from within the Virtuoso SQL
repository into the WebDAV repository for direct access.
---+++++ 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 3rd 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.
---++++ News (NNTP)
---+++++ Can I use Virtuoso to host newsgroups?
Yes, Virtuoso implements 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 use Virtuoso to attach to newsgroups hosted on any NNTP
Server.
---++++ Data-access and Security
---+++++ What security is built into Virtuoso?
---++++++ For ODBC/JDBC Access:
* Standard SQL-92 GRANT/REVOKE statements for DB users.
* Access control lists 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 both ODBC and JDBC clients
* x509 certificates for both ODBC and JDBC
* 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 apply 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.
---+++ General
---++++ How big is a typical Virtuoso installation?
Approximately 300MB. If you exclude tutorial materials, sample
applications, demos, and documentation the installation is approximately
100MB.
---++++ How much memory does Virtuoso require?
Nothing special, it can run within an 64MB environment if this is all you
have, but 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 currently supports Windows (XP/2K/2003), Linux (Redhat,Suse) Mac
OS X, FreeBSD, Solaris, and other UNIX (32- & 64-bit platforms).
---++++ 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?
Virtuoso clients connect to Virtuoso via standard APIs and protocols. The
APIs includes ODBC, JDBC, a .NET data provider and OLE/DB. Client libraries
are provided for all these. Protocols include SOAP, most WS* protocols,
DAV, XML for Analysis (XMLA) and others. Common operating systems and
development environments offer clients for these protocols.
For adding application logic server side, one may use Virtuoso/PL, Java,
.NET bound languages or C. Examples of all these are included in the
package.
---++++ Can Virtuoso be configured to make use of multiple processors
A single query runs on single thread (plus I/O in separate thread) in Virtuoso.
Without waiting for disk, it's faster to run it in a single thread than
to parallelize and get synchronization overheads . While waiting for disk access,
CPU times does not matter as the idle CPUs are waiting for disk reads.
The key requirement to an RDBMS database is its ability to serve hundreds clients
in parallel. Having 4 or more queries from 4 or more clients, all cores of the
machine will have something to run.
When we complete the Virtuoso cluster version you will be able to parallelize
a query between boxes, in that case many boxes may simultaneously run many
threads per query; but any given box of the cluster will run no more than one
thread per query at time. The cluster wins in speed because
the total RAM is bigger, not because multi-threading per query is so useful.
---+++ Linked Data
---++++ What is Linked Data?How does Linked Data benefit me or my enterprise?
See detailed information [[LinkedDataBeginnerSPage][here]].
CategoryFAQ CategoryVirtuoso