Virtuoso Universal Server OpenSource Edition Anton Avramov Virtuoso

  • Slides: 20
Download presentation
Virtuoso Universal Server Open-Source Edition Anton Avramov

Virtuoso Universal Server Open-Source Edition Anton Avramov

Проектът Virtuoso • Virtuoso Universal Server – DB Server, WEB Server, … • Компилирана

Проектът Virtuoso • Virtuoso Universal Server – DB Server, WEB Server, … • Компилирана на 32 платформи – – – – Linux Windows Mac. OS Solaris Sun. OS Free. BSD HP-UX ….

Проектът Virtuoso - възможности • Database Server – SQL-200 n (including SQLX) – Stored

Проектът Virtuoso - възможности • Database Server – SQL-200 n (including SQLX) – Stored procedures, User Define Type, Views, Triggers, Indexes, Free-text indexes – XML Storage, XML Free text index, XSLT, XML Schema, XPath, and XQuery • Web Application Server – Hosting (PHP, Perl, Python, Java, CLR, . Net & ASPX Host, Mono, Ruby) – VSP, VSPX Web Services SOAP, WSDL, UDDI, WS-Security, WS-Routing, WS-Reliable. Messaging, WS-Policy, WS-Addressing, BPEL 4 WS • Internet & Web – HTTP, Web. DAV, SMTP, POP 3, LDAP, FTP, NNTP – Blogging & Weblogs • … и други

Application Server - VSP <html> <body> <table> <? vsp for( SELECT name, address FROM

Application Server - VSP <html> <body> <table> <? vsp for( SELECT name, address FROM customers WHERE country = ‘BG’) do{ ? > <tr> <td><? V name ? ></td><? V address ? ></td> </tr> <? vsp } if (true) { DBA. DB. myprocedure(params); } ? > </table> </body> </html> <? vsp http_xslt ('file: //my_transformation. xslt'); ? > SQL oптимизатор на заявките

Database • Начини за връзка – ISQL – Interactive SQL $isql localhost: 1111 dba

Database • Начини за връзка – ISQL – Interactive SQL $isql localhost: 1111 dba SQL> select * from my_table; … SQL> select my_procedure(); …. – Conductor – Web Interface • http: //localhost: 8889/conductor – ODBC, JDBC – Visual Studio Plugin – OPL Explorer ….

Database • Views, Triggers – Instead of INSERT INTO Customers_Orders INSTEAD OF INSERT TRIGGER

Database • Views, Triggers – Instead of INSERT INTO Customers_Orders INSTEAD OF INSERT TRIGGER INSERT INTO Customers INSERT INTO Orders View Customers_Orders Table Customers Table Orders

Database - Indexes • SQL Inverse Functions -- Създаваме view CREATE VIEW euro_item AS

Database - Indexes • SQL Inverse Functions -- Създаваме view CREATE VIEW euro_item AS SELECT id, dollar_to_euro (price) as price, name FROM item; -- Декларираме реципрочни функций db. dba. sinv_create_inverse ('euro_to_dollar', 'dollar_to_euro', 1); -- Изпълняваме запистване SELECT * FROM euro_item WHERE price > 100; -- Нормално това би означавало SELECT * FROM item WHERE dollar_to_euro (I_price) > 100; -- Но благодарение на реципрочната функция се изпълнява SELECT * FROM item WHERE price > euro_to_dollar (100);

Database – Free text indexes • Контрол върху индексираните данни CREATE TABLE channels (c_id

Database – Free text indexes • Контрол върху индексираните данни CREATE TABLE channels (c_id integer, title varchar, primary key (c_id); CREATE TABLE articles (c_id integer references channels, a_id integer, content long varchar, primary key (c_id, a_id); CREATE TEXT INDEX ON articles (content) using function ; CREATE PROCEDURE articles_content_index_hook ( inout vtb any, inout i_id any ){ vt_batch_feed (vtb, (SELECT title FROM channels WHERE a_id = i_id), 0); return 0; }; SELECT TOP 10 * FROM articles WHERE contains(content, ’sample’);

Database – XML Support CREATE TABLE my_xml (id integer, content any); INSERT INTO my_xml

Database – XML Support CREATE TABLE my_xml (id integer, content any); INSERT INTO my_xml (1, xtree_doc(’ <root><node attr=“hello”>text</node></root> ’)); SELECT * FROM my_xml WHERE xpath_eval(‘//node[@attr = “hello”]’); SELECT * FROM my_xml WHERE xpath_contains(‘//node’, ’text’); CREATE TEXT XML INDEX my_xml(content); SELECT * FROM my_xml WHERE xcontains(content, ’//node[. = “text”]’); SELECT * FROM my_xml WHERE xcontains(content, ’//node[text-contains (. , “text”) ]’);

Database – XML (FOR XML Clause) • RAW, AUTO, EXPLICIT xmla (‘ SELECT "Category.

Database – XML (FOR XML Clause) • RAW, AUTO, EXPLICIT xmla (‘ SELECT "Category. ID", "Cat. Name", "Product. ID" FROM "Categories" as "category", "Products" as "product" WHERE "product". "Category. ID" = "category". "Category. ID" FOR XML AUTO ELEMENT '); -------<category> <Category. ID>1</Category. ID><Cat. Name>Beverages</Cat. Name> <product> <Prod. Name>Chai</Prod. Name> <Product. ID>1</Product. ID> </product> <Prod. Name>Chang</Prod. Name> <Product. ID>2</Product. ID> </product> … </category> <category> …

Database – XML - SQLX SELECT XMLELEMENT ('Full. Address', XMLATTRIBUTES ( "Postal. Code", "City"),

Database – XML - SQLX SELECT XMLELEMENT ('Full. Address', XMLATTRIBUTES ( "Postal. Code", "City"), xtree_doc ('<Region>WA</Region>'), xquery_eval('//@country', xtree_doc('<a country="USA"/>')), XMLELEMENT('emp', "Last. Name")) FROM "Demo". "demo". "Employees“; --------------<Full. Address Postal. Code="98122" City="Seattle" country="USA"> <Region>WA</Region> <emp>Davolio</emp> </Full. Address> <Full. Address Postal. Code="98401" City="Tacoma" country="USA"> <Region>WA</Region> <emp>Fuller</emp> </Full. Address>. . .

UDT – User Defined Types CREATE TYPE my_udt as ( A integer default 12

UDT – User Defined Types CREATE TYPE my_udt as ( A integer default 12 ) method negative() returns integer; CREATE METHOD negative () returns integer for my_udt { return self. A * -1; } CREATE TABLE udt_table (ID integer primary key, DATA my_udt); INSERT INTO udt_table (ID, DATA) VALUES (1, new my_udt ()); SELECT C. DATA. A FROM udt_table C where C. ID = 1; SELECT C. ID FROM udt_table C WHERE C. DATA. A > 10; SELECT C. ID FROM udt_table C WHERE C. DATA. negavite() < -10;

Web. Services – SOAP CREATE TYPE “WS”. ”soap_demo”. soap_udt as () method get. Currency(

Web. Services – SOAP CREATE TYPE “WS”. ”soap_demo”. soap_udt as () method get. Currency( in cnt_code varchar) returns varchar; CREATE METHOD get. Currency ( in cnt_code varchar) returns varchar for “WS”. ”soap_demo”. soap_udt { return (SELECT amount FROM currencies WHERE code = cnt_code); }; vhost_define(vhost=>'*ini*', lhost=> '*ini*', lpath=> '/myendpoint', ppath=>'/SOAP/', soap_user=> ‘soap_demo') ); GRAND EXECUTE ON “WS”. ”soap_demo”. soap_udt TO soap_demo; http: //localhost: 8889/myendpoint/services. wsdl http: //localhost: 8889/myendpoint/services. vsmx

RDF Database • Що е то Semantic Web?

RDF Database • Що е то Semantic Web?

RDF Database. . . <rdf: RDF xmlns: rdf="http: //www. w 3. org/1999/02/22 -rdf-syntax-ns#" xmlns:

RDF Database. . . <rdf: RDF xmlns: rdf="http: //www. w 3. org/1999/02/22 -rdf-syntax-ns#" xmlns: dc="http: //purl. org/dc/elements/1. 1/" xmlns="http: //purl. org/rss/1. 0/" >. . . <item rdf: about="http: //c. moreover. com/click/here. pl? r 123"> <title>XML: A Disruptive Technology</title> <link>http: //c. moreover. com/click/here. pl? r 123</link> <dc: subject> <rdf: Description> <rdf: value>XML</rdf: value> </rdf: Description> </dc: subject> </item>. . .

SPARQL • Намери ми всичко …. PREFIX SELECT WHERE dc: <http: //purl. org/dc/elements/1. 1/>

SPARQL • Намери ми всичко …. PREFIX SELECT WHERE dc: <http: //purl. org/dc/elements/1. 1/> ns: <http: //example. org/ns#> ? title ? price { ? x ns: price ? price. FILTER (? price < 30). ? x dc: title ? title. } title "The Semantic Web" price 23

Въпроси? Контакт: Антон Аврамов aavramov@openlinksw. com Връзки: http: //virtuoso. openlinksw. com/wiki/main/Main/ http: //sourceforge. net/projects/virtuoso

Въпроси? Контакт: Антон Аврамов aavramov@openlinksw. com Връзки: http: //virtuoso. openlinksw. com/wiki/main/Main/ http: //sourceforge. net/projects/virtuoso http: //virtuoso. openlinksw. com/ http: //www. openlinksw. com/