78
Della Rocca Alessandro matr. 0522500091 Corso di Integrazione Dati su Web Prof. Gennaro Costagliola A.A. 2014-2015 Università degli Studi di Salerno

Opera Integration System Application

Embed Size (px)

Citation preview

Della Rocca Alessandro matr. 0522500091

Corso di Integrazione Dati su Web

Prof. Gennaro Costagliola

A.A. 2014-2015

Università degli Studi di Salerno

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Scenario tipico - Un utente vuole conoscere le opere in cartellone in uno dei teatri italiani,

oppure cercare quali sono le rappresentazioni in programma di una data opera.

- L’utente vorrebbe poi avere informazioni e contatti sul teatro scelto, visualizzare il cast degli interpreti e ,se musicista, vorrebbe poter consultare, scaricare o acquistare lo spartito di una data opera.

- Se l’utente non conosce bene l’opera potrebbe voler vedere una anteprima video oppure acquistare un cd, dvd, scaricare mp3 da iTunes.

PROBLEMI - Assenza di un punto di riferimento web per gli appassionati d’opera. - Informazioni disperse su differenti siti. - Molto tempo per reperire tutte le informazioni.

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Applicazione di integrazione dati (OISApp) - Informazioni sempre aggiornate su:

- Rappresentazioni in programma - Teatri. - Arie celebri di ogni opera. - Migliori anteprime video per ogni opera. - Ultime e migliori uscite discografiche (CD,DVD,iTunes/MP3) - Ultime uscite editoriali (spartiti) - Spartiti reperibili in rete.

- User friendly. - Tempi di risposta accettabili. - Cross-browser. - Facilmente implementabile su mobile (Android, iOS), successivamente.

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Descrizione del problema e specifica funzionale

Della Rocca Alessandro – Matr. 0522500091

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Architettura

• Alcune tipologie di dati risultano altamente volatili(video, novità discografiche).

• Altre tipologie risultano mediamente volatili(rappresentazioni, spartiti).

• Altre ancora sono quasi statiche (teatri, arie).

• La scelta migliore, in teoria, sarebbe un’architettura ibrida.

• Tuttavia……

Della Rocca Alessandro – Matr. 0522500091

Architettura

• Abbiamo scelto una architettura Virtual Mediator con una piccola componente Data-Warehouse perchè:

• I database con dati statici risultano essere di dimensioni notevoli.

• Mantenere l’applicazione ‘leggera’

– Possibile implementazione su dispositivi mobile.

- Aperta all’ingresso di nuove fonti.

• Le prestazioni non degradano troppo e le informazioni sono sempre aggiornate.

Della Rocca Alessandro – Matr. 0522500091

Architettura

Architettura Virtual Mediator

- Schema globale non è materializzato.

- Interrogazioni sullo schema globale.

- Query riformulate sulle relazioni locali.

- Dati estratti direttamente dalle sorgenti.

- Estrazione dati solo a “query – time”.

- Informazioni sempre aggiornate.

Della Rocca Alessandro – Matr. 0522500091

Architettura

Della Rocca Alessandro – Matr. 0522500091

User Interface

Virtual Mediator

Wrapper Operabase

Wrapper

Wrapper

Wrapper

Wrapper

Wrapper

imslp

Aria-database

youtube

Arkivmusic

sheetmusic

XML

PDF google

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Fonti utilizzate

Della Rocca Alessandro – Matr. 0522500091

Operabase.com

Caratteristiche Fonte - Database online

accessibile tramite pagina web.

- Dati soggetti a cambi periodici e mediamente volatili.

- Dati sui teatri di tipo statico

WrapperRappresentazioni.php

Fonti utilizzate

Della Rocca Alessandro – Matr. 0522500091

Aria-database.com

Caratteristiche Fonte - Database online

accessibile tramite pagina web.

- Dati di tipo statico e a basso grado di volatilità.

Wrapper_Aria.php

Fonti utilizzate

Della Rocca Alessandro – Matr. 0522500091

imslp.com

Caratteristiche Fonte - Database online

accessibile tramite pagina web.

- Dati mediamente volatili.

Wrapper_Imslp.php

Fonti utilizzate

Della Rocca Alessandro – Matr. 0522500091

youtube.com

Caratteristiche Fonte - Sito web

- Dati altamente

volatili

Wrapper_Youtube.php

Fonti utilizzate

Della Rocca Alessandro – Matr. 0522500091

arkivmusic.com

Caratteristiche Fonte - Sito web

- Dati altamente

volatili. Wrapper_Products.php

Fonti utilizzate

Della Rocca Alessandro – Matr. 0522500091

sheetmusicplus.com

Caratteristiche Fonte - Sito web

- Dati mediamente

volatili.

WrapperSheetMusic.php

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Descrizione Datalog Fonti

Operabase rappresentazione(titolo, compositore,

teatro,cod_teatro,data_inizio,data_fine, num_repliche,cast).

teatro(nome, teatro, codice, indirizzo, telefono,sito_web).

Della Rocca Alessandro – Matr. 0522500091

Aria-database aria(titolo, compositore,nome_aria).

Imslp

free_sheet(titolo,compositore,url_pdf,imslp_link).

Descrizione Datalog Fonti

Arkivmusic media(titolo_p,composer,performers,conductor,orchestra,label,num

_catalogo,release,num_discs,formato,prezzo,img_link,page_link).

Della Rocca Alessandro – Matr. 0522500091

SheetMusicPlus shop_sheet(titolo, descrizione,prezzo,img,info_link).

Youtube

video(titolo_video,link).

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Wrappers

- Le sorgenti sono pagine web. (dati semistrutturati)

- Manual Wrapper Construction

- Rappresentazione DOM Tree

- Script che utilizza Xpath

- Creazione manuale di

- Tw (target schema)

- Ew (extraction program)

Della Rocca Alessandro – Matr. 0522500091

Wrapper_Rappresentazioni.php $this->url = "http://operabase.com/oplist.cgi?id=none&lang=it&is=".$this->space_plus_sub($this->qtitolo)."&by=".$this->qcompositore."&loc=".$this->qlocalità."&stype=abs&sd=16&sm=12&sy=2014&etype=abs&ed=13&em=3&ey=2015&sort=D"; //Tabella Rappresentazioni $query = "/html/body/table/tr/td[3]/table[3]/tr"; $q = $xPath->query($query); $x=$q->item($i); //Data Inizio $sd = $x->getElementsByTagName('td')->item(0)->nodeValue; $sm = $x->getElementsByTagName('td')->item(1)->nodeValue; $sy = $x->getElementsByTagName('td')->item(2)->nodeValue; //Data fine $sd = $x->getElementsByTagName('td')->item(3)->nodeValue; $sm = $x->getElementsByTagName('td')->item(4)->nodeValue; $sy = $x->getElementsByTagName('td')->item(5)->nodeValue;

Della Rocca Alessandro – Matr. 0522500091

Query(titolo, compositore, località = ‘ITALIA’).

Tw = (Data Inizio, Data Fine, Numero_repliche, teatro, titolo, link, compositore, teatro, codTeatro, cast)

Wrapper_Rappresentazioni.php

//Numero repliche, teatro, titolo, link_altre info

$numRepliche = $x->getElementsByTagName('td')->item(6)->nodeValue;

$scittà = $x->getElementsByTagName('td')->item(7)->nodeValue;

$stitolo = $x->getElementsByTagName('td')->item(8)->getElementsByTagName('a')->item(0)->nodeValue;

$x->getElementsByTagName('td')->item(8)->getElementsByTagName('a')->item(0)->getAttribute('href');

//Compositore

$queryCompositore = "/html/body/table/tr/td[3]/table[3]/tr/td[1]/font";

$q = $xPath->query($queryCompositore);

$compositore = $q->item(0)->nodeValue;

//Teatro

$queryTeatro = "/html/body/table/tr/td[3]/table[4]/tr[2]/td/font";

//Cod Teatro

$queryCodTeatro = "/html/body/table/tr/td[3]/table[2]/tr[2]/td[1]/a";

$q = $xPath->query($queryCodTeatro);

preg_match_all("/&house=([a-z]+)/",$q->item(0)->getAttribute('href'),$match);

$codTeatro = $match[1][0];

//Cast-> Ruolo:Interprete

$queryRuolo = "/html/body//i";

$queryInterprete = "/html/body//i/ancestor::td/following-sibling::td";

Della Rocca Alessandro – Matr. 0522500091

Extract_theatres.php

- Le informazioni sui teatri sono, fondamentamentalmente statiche.

- file xml “Teatri.xml”

- Piccola componente di Data-Warehousing nella nostra applicazione.

- DTD Teatri.xml

<!DOCTYPE teatri[

<!ELEMENT teatri(teatro*)

<!ELEMENT teatro(nome*|città|cod|indirizzo|tel|sito)>

<!ELEMENT nome(#PCDATA)>

<!ELEMENT città(#PCDATA)>

<!ELEMENT cod(#PCDATA)>

<!ELEMENT indirizzo(#PCDATA)>

<!ELEMENT tel(#PCDATA)>

<!ELEMENT sito(#PCDATA)>

Della Rocca Alessandro – Matr. 0522500091

Extract_theatres.php

//Lista dei teatri italiani

$teatri = $xPath->query("/html/body/table/tr/td[3]/table[3]/tr");

//città

$città= $teatro->getElementsByTagName('font')->item(0)->nodeValue;

//cod

$addr = $l->getAttribute('href');

preg_match_all("/&house=([a-z]+)/",$addr,$match);

$codText = $xml->createTextNode($match[1][0]);

//nome

$nomeText = $xml->createTextNode($l->nodeValue);

//Altre info

$basequery = "/html/body/table/tr/td[3]/table[3]/tr/td/table/";

$q = $xPath->query($basequery."tr[1]/td[2]");

//Sito

$sito= $q->item(0)->getElementsByTagName('a')->item(0)->getAttribute('href');

$q = $xPath->query($basequery."tr[2]");

//Indirizzo

$indirizzo= $q->item(0)->nodeValue;

//Telefono

$q = $xPath->query($basequery."tr[3]");

$telefono = $q->item(0)->nodeValue;

Della Rocca Alessandro – Matr. 0522500091

Tw = (città, cod, nome, sito, indirizzo, telefono)

Wrapper_Teatri.php

//Estrazione di sito e telefono del teatro.

$query = "//teatro";

$q = $this->xPath->query($query);

$toReturn .= $q->item($i)->getElementsByTagName('sito')->item(0)->nodeValue;

$telReturn .= $q->item($i)->getElementsByTagName('tel')->item(0)->nodeValue;

Della Rocca Alessandro – Matr. 0522500091

Query(codice).

Tw = (sito, telefono)

Wrapper_Aria.php

$this->base_url = "http://www.aria-database.com/search.php?&fC=7&f0=keyword&s0=&b0=AND&f1=operaName&s1=".$t."&b1=AND&f2=composerName&s2=".$c."&b2=AND&f3=librettistName&s3=&rPP=25&dT=Full&f6=synopsis&t6=exact&b5=AND&s4=&s5=&f4=dateWritten&t4=LT&b3=AND&f5=dateWritten&GT=exact&b4=AND&t0=all&t1=all&t2=all&dS=operas&searching=yes";

$xPath = $util->getXPathObj($this->base_url);

$query = //*[@id='browseCheckboxes']/table/tr[4]/td[2]/div/div[@class='recordExtra']";

$q = $xPath->query($query);

//nome_aria (elenco)

$results[] =$q->item($i)->getElementsByTagName('a')->item(0)->nodeValue;

Della Rocca Alessandro – Matr. 0522500091

Query(titolo, compositore).

Tw = (nome_aria)

Wrapper_Imslp.php

$query = $t." ".$c;

$url_google = "http://www.google.it/search?q=site:imslp.org+".$this->space_plus_sub($query)."&gws_rd=cr,ssl&ei=4daSVJ29EI7LaO_rgpgP";

$xPathg = $util1->getXPathObj($url_google);

$queryg = "//cite"; //risultato link

$qg = $xPathg->query($queryg);

$imslp_link = $qg->item(0)->nodeValue;

$imslp_link = preg_replace("/([.][.][.])/","wiki",$imslp_link);

$res="http://www.".$imslp_link; //imslp_link

$queryid = "//*[@class='we_file_first']";

$q = $xPath->query($queryid);

$stringid = $q->item(0)->getAttribute('id');

preg_match_all("/IMSLP([0-9]+)/",$stringid,$match);

$idspartito = $match[1][0];

$url_pdf = "http://imslp.org/wiki/Special:IMSLPDisclaimerAccept/".$idspartito;

Della Rocca Alessandro – Matr. 0522500091

Query(titolo, compositore). Tw = (imslp_link, url_pdf)

Wrapper_Youtube.php

$base_url = "https://www.youtube.com/results?search_query=".$t."+".$c;

$query = "//*[@id='section-list']/li/ol[@class='item-section']/li";

$qr = $xPath->query($query);

$item_link = $cn->getElementsByTagName('a')->item(0)->getAttribute('href');

preg_match_all("/v=([a-z|A-Z|0-9|\W\_]+)/",$item_link,$match);

$suffix = $match[1][0];

Della Rocca Alessandro – Matr. 0522500091

Query(titolo, compositore). Tw = (video_url)

Wrapper_Sheetmusic.php

$base_url =

“http://www.sheetmusicplus.com/search/genres/opera/700032?Ntt=".$opera;

$xPath = $util->getXPathObj($base_url);

$query = "//*[@id='mainSection']/div/div[2]/article";

$r = $xPath->query($query);

//img

$img_link = $cn->getElementsByTagName('img')->item(0)->getAttribute('src');

//titolo

$title = $cn->getElementsByTagName('h2')->item(0)->nodeValue;

//info_link

$page_link = $cn->getElementsByTagName('h2')->item(0)->getElementsByTagName('a')

->item(0)->getAttribute('href');

//descrizione

$description = $cn->getElementsByTagName('p')->item(0)->nodeValue;

//prezzo

$price = $cn->getElementsByTagName('rt')->item(0)->nodeValue;

Della Rocca Alessandro – Matr. 0522500091

Query(opera). Tw =(img, titolo, info_link, descrizione, prezzo)

Wrapper_Products.php

$base_url = "http://www.arkivmusic.com/classical/MusicList?search_term=".$opera."&searching=1&role_wanted=8&x=20&y=16"; $query1 = "//*[@id='container']/ul[2]/li/a[1]"; //titolo $x = $xPath->query("//div[@class='albuminfo-bold album_title']/a",$cn); $title = $x->item($i-1)->nodeValue; //info $pageLink = "http://www.arkivmusic.com/classical/".$x->item($i-1)->getAttribute('href'); $x = $xPath->query("//div[@class='albumlistcover']/a/img",$cn); //img_link $img = $x->item($i-1)->getAttribute('src'); $x = $xPath->query("//*[@id='results']/li[".$i."]//div[@class='format_and_price']/span"); preg_match_all("/(.+):/",$x->item(0)->nodeValue ,$match); //formato $format = $match[1][0]; preg_match_all("/([0-9]+\D[0-9]+)/",$x->item(1)->nodeValue ,$match); //prezzo $price = $match[1][0];

Della Rocca Alessandro – Matr. 0522500091

Query(opera,formato). Tw = (titolo, info, img_link, formato, prezzo, label, num_catalogo, release, num_discs)

Wrapper_Products.php

//label

$x = $xPath->query("//div[@class='albumchunk_data']/div[2]",$cn);

preg_match_all("/Label:([A-Za-z\W]+)Catalog:/",$x->item($i-1)->nodeValue,$match);

$label = $match[1][0];

//num_catalogo

preg_match_all("/Catalog:([0-9\W]+)Release/",$x->item($i-1)->nodeValue,$match);

$numCatalog = $match[1][0];

//release

preg_match_all("/Date:([0-9\W]+)Number/",$x->item($i-1)->nodeValue,$match);

$release = $match[1][0];

//num_discs

preg_match_all("/Discs:([0-9\W]+)/",$x->item($i-1)->nodeValue,$match);

$numDiscs = $match[1][0];

Della Rocca Alessandro – Matr. 0522500091

Query(opera,formato).

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Schema globale

Relazioni globali

- rappresentazione(titolo, compositore, teatro, data_inizio, data_fine, repliche, cast).

- teatro(nome, città, indirizzo, telefono, sito_web)

- opera(titolo, compositore, arie, link_video, link_sheet)

- sheets_pay(titolo, descrizione, img_link, prezzo, info_link)

- cd_dvd(titolo,conductor, orchestra, performers, label, release, num_discs, formato, prezzo, img_link, page_link)

Relazioni locali - Operabase_r(titolo, compositore, teatro, data_inizio, data_fine, repliche, cast)

- Operabase_t(nome, città, indirizzo, telefono, sito_web).

- aria-database(titolo, compositore, arie)

- Youtube(titolo_video, link)

- Imslp(titolo, compositore,url_pdf, imslp_link)

- Arkivmusik(titolo_p,composer,performers,conductor,orchestra,label,release,num_discs,formato,prezzo,img_link,page_link)

- SheetMusicPlus(titolo, descrizione,prezzo,img,info_link)

Della Rocca Alessandro – Matr. 0522500091

Schema globale – Mapping GAV

Della Rocca Alessandro – Matr. 0522500091

Global – as-View

rappresentazione(titolo, compositore, teatro, data_inizio, data_fine, repliche, cast) :- Operabase_r(titolo, compositore, teatro, data_inizio, data_fine, repliche, cast).

teatro(nome, città, indirizzo, telefono, sito_web)

:- Operabase_t(nome, città, indirizzo, telefono, sito_web).

opera(titolo, compositore, arie, link_video, link_sheet) :- aria-database(titolo, compositore, arie), Youtube(titolo_video, link_video),

Imslp(titolo, compositore,url_pdf, link_sheet), titolo_video contains titolo.

sheets_pay(titolo, descrizione, img_link, prezzo, info_link) :- SheetMusicPlus(titolo, descrizione,img_link, prezzo, info_link).

cd_dvd(titolo,conductor, orchestra, performers, label, release, num_discs, formato,

prezzo, img, page_link) :-

Arkivmusik(titolo_p,composer,performers,conductor,orchestra,label,release,num_discs,formato,prezzo,img,page_link), titolo_p contains titolo.

Schema globale – Mapping LAV Local – as - View

- Operabase_r(titolo, compositore, teatro, data_inizio, data_fine, repliche, cast)

:- rappresentazione(titolo, compositore, teatro, data_inizio, data_fine, repliche, cast). - Operabase_t(nome, città, indirizzo, telefono, sito_web) :- teatro(nome, città, indirizzo, telefono, sito_web). - aria-database(titolo, compositore, arie) :- opera(titolo, compositore, arie, link_video, link_sheet). - Youtube(titolo_video, link) :- opera(titolo, compositore, arie, link_video, link_sheet). - Imslp(titolo, compositore,url_pdf, imslp_link) :- opera(titolo, compositore, arie, link_video, link_sheet). -Arkivmusik(titolo_p,composer,performers,conductor,orchestra,label,release, num_discs,formato,prezzo,img_link,page_link):- cd_dvd(titolo,conductor, orchestra, performers, label, release, num_discs, formato, prezzo, img_link, page_link) SheetMusicPlus(titolo, descrizione,prezzo,img,info_link) :- sheets_pay(titolo, descrizione, img, prezzo, info_link)

Della Rocca Alessandro – Matr. 0522500091

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Descrizione delle query

1) Cercare tutte le rappresentazioni,e relative info, dell’opera ‘La Boheme’ nei teatri italiani con sito e numero di telefono del teatro.

q1(compositore, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- rappresentazione(‘La Boheme’ , compositore, teatro, data_inizio, data_fine, repliche, cast),

teatro(nome, teatro, indirizzo, sito, telefono).

Della Rocca Alessandro – Matr. 0522500091

Descrizione delle query

2) Cercare tutte le rappresentazioni, con relative info, delle opere di ‘Verdi’ con sito e numero di telefono del teatro.

q2(titolo, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- rappresentazione(titolo, ‘Verdi’ , teatro, data_inizio, data_fine, repliche, cast),

teatro(nome, teatro, indirizzo, sito, telefono).

Della Rocca Alessandro – Matr. 0522500091

Descrizione delle query

3) Ricercare, per ogni opera in cartellone al teatro La Scala di Milano, le informazioni sulle rappresentazioni, un’anteprima video, un link allo spartito online, e il sito del teatro.

q3(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :-

rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito), opera(titolo, compositore, arie, link_video, link_sheet)

Della Rocca Alessandro – Matr. 0522500091

Descrizione delle query

4) Ricercare per l’opera ‘La Traviata’, le arie celebri, le ultime novità discografiche in formato DVD e gli spartiti in vendita.

q4(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :-

opera(‘La Traviata’ , compositore, aria, link_video, link_sheet),

sheets_pay(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p), cd_dvd(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info), titolo_cd contains = ‘La Traviata’ .

Della Rocca Alessandro – Matr. 0522500091

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Riformulazione GAV

q1(compositore, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- rappresentazione(‘La Boheme’ , compositore, teatro, data_inizio, data_fine, repliche, cast), teatro(nome, teatro, indirizzo, sito, telefono).

q1(compositore, teatro, data_inizio, data_fine, repliche, cast, sito, telefono) :-

Operabase_r(‘La Boheme’ , compositore, teatro, data_inizio, data_fine, repliche, cast), Operabase_t(nome, teatro, indirizzo, telefono, sito).

q2(titolo, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- rappresentazione(titolo, ‘Verdi’ , teatro, data_inizio, data_fine, repliche, cast), teatro(nome, teatro, indirizzo, sito, telefono).

q2(titolo, teatro, data_inizio, data_fine, repliche, cast, sito, telefono):-

Operabase_r(titolo, ‘Verdi’, teatro, data_inizio, data_fine, repliche, cast), Operabase_t(nome, teatro, indirizzo, telefono, sito).

Della Rocca Alessandro – Matr. 0522500091

Riformulazione GAV

q3(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :-rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito), opera(titolo, compositore, arie, link_video, link_sheet).

rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) => Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) .

teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito) => Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito).

opera(titolo, compositore, arie, link_video, link_sheet)

=> aria-database(titolo, compositore, arie)

=> Youtube(titolo_video, link_video) , titolo_video contains titolo

=> Imslp(titolo, compositore, link_sheet,imslp_link)

Della Rocca Alessandro – Matr. 0522500091

Riformulazione GAV

q3(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :-rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito), opera(titolo, compositore, arie, link_video, link_sheet).

qr1(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video):- Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito), aria-database(titolo, compositore, arie).

qr2(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video):- Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito), Youtube(titolo_video, link_video) , titolo_video contains titolo.

qr3(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video):- Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito), Imslp(titolo, compositore, link_sheet,imslp_link).

Della Rocca Alessandro – Matr. 0522500091

Riformulazione GAV q4(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- opera(‘La Traviata’ , compositore, aria, link_video, link_sheet), sheets_pay(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p), cd_dvd(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info), titolo_cd contains = ‘La Traviata’ . qr1(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- aria-database(‘La Traviata’ , compositore, aria), SheetMusicPlus(‘La Traviata’ , link_sheet_p, descrizione, prezzo_sheet, img_sheet), Arkivmusik(titolo_cd, composer, performers, conductor, orchestra,label,release,num_discs,formato, prezzo_cd, img_cd, link_info k), titolo_cd contains ‘La Traviata’ . qr2(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- Youtube(titolo_video, link_video), SheetMusicPlus(‘La Traviata’ , link_sheet_p, descrizione, prezzo_sheet, img_sheet), Arkivmusik(titolo_cd, composer, performers, conductor, orchestra, label, release,num_discs,formato, prezzo_cd, img_cd, link_info), titolo_cd contains ‘La Traviata’ , titolo_video contains ‘La Traviata’ . qr3(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- Imslp(titolo, compositore,url_pdf, link_sheet) , SheetMusicPlus(‘La Traviata’ , link_sheet_p, descrizione, prezzo_sheet, img_sheet), Arkivmusik(titolo_cd, composer, performers,conductor,orchestra,label,release,num_discs,formato, prezzo_cd, img_cd, link_info), titolo_cd contains ‘La Traviata’ .

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV QUERY GLOBALE

q1(compositore, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- rappresentazione(‘La Boheme’ , compositore, teatro, data_inizio, data_fine, repliche, cast), teatro(nome, teatro, indirizzo, sito, telefono).

BUCKET ALGORITHM (PASSO 1: VIEW ATOMS)

rappresentazione(‘La Boheme’ , compositore, teatro, data_inizio, data_fine, repliche, cast), => Operabase_r (‘La Boheme, compositore, teatro ,data_inizio, data_fine, repliche, cast) .

teatro(nome, teatro, indirizzo, sito, telefono) => Operabase_t(nome, teatro, indirizzo, sito, telefono).

BUCKET ALGORITHM (PASSO 2: CANDIDATES REWRITINGS)

qr1(compositore, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- Operabase_r (‘La Boheme, compositore, teatro ,data_inizio, data_fine, repliche, cast) , Operabase_t(nome, teatro, indirizzo, sito, telefono).

BUCKET ALGORITHM (PASSO 3: VALIDITA’ REWRITINGS)

Exp_qr1(compositore, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- rappresentazione(‘La Boheme’ , compositore, teatro, data_inizio, data_fine, repliche, cast), teatro(nome, teatro, indirizzo, sito, telefono).

qr1 è un rewriting valido.

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV QUERY GLOBALE

q2(titolo, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- rappresentazione(titolo, ‘Verdi’ , teatro, data_inizio, data_fine, repliche, cast),

teatro(nome, teatro, indirizzo, sito, telefono).

BUCKET ALGORITHM (PASSO 1: VIEW ATOMS)

rappresentazione rappresentazione(titolo, ‘Verdi’ , teatro, data_inizio, data_fine, repliche, cast), => Operabase_r (titolo, ‘Verdi’ , teatro ,data_inizio, data_fine, repliche, cast)

teatro(nome, teatro, indirizzo, sito, telefono) => Operabase_t(nome, teatro, indirizzo, sito, telefono).

BUCKET ALGORITHM (PASSO 2: CANDIDATES REWRITINGS)

qr2(titolo, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- Operabase_r (titolo, ‘Verdi’ , teatro ,data_inizio, data_fine, repliche, cast) , Operabase_t(nome, teatro, indirizzo, sito, telefono).

BUCKET ALGORITHM (PASSO 3: VALIDITA’ REWRITINGS)

Exp_qr2(titolo, teatro, data_inizio, data_fine, repliche, cast, sito, telefono)

:- rappresentazione(titolo, ‘Verdi’ , teatro, data_inizio, data_fine, repliche, cast), teatro(nome, teatro, indirizzo, sito, telefono).

qr2 è un rewriting valido.

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV QUERY GLOBALE

q3(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :-rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito), opera(titolo, compositore, arie, link_video, link_sheet).

BUCKET ALGORITHM (PASSO 1: VIEW ATOMS)

rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) => Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) .

teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito) => Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito).

opera(titolo, compositore, arie, link_video, link_sheet)

=> aria-database(titolo, compositore, arie)

=> Youtube(titolo_video, link_video) , titolo_video contains titolo

=> Imslp(titolo, compositore, link_sheet,imslp_link)

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV QUERY GLOBALE

query(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :-rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito), opera(titolo, compositore, arie, link_video, link_sheet).

BUCKET ALGORITHM (PASSO 2: CANDIDATES REWRITINGS)

q1(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :- Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) , Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito), aria-database(titolo, compositore, arie).

q2(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video):- Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) , Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito), Youtube(titolo_video, link_video) , titolo_video contains titolo.

q3(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video):- Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) , Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito), Imslp(titolo, compositore, link_sheet,imslp_link).

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV

BUCKET ALGORITHM (PASSO 3: VALIDITA’ REWRITINGS)

query(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :-rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito), opera(titolo, compositore, arie, link_video, link_sheet).

q1(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :- Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) , Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito), aria-database(titolo, compositore, arie).

Exp_q1(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :- rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito_web), opera(titolo, compositore, arie, link_video, link_sheet)

Applicando l’Algoritmo di Query Contaiment si vede che

Exp_q1 query

e quindi q1 è un rewriting valido .

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV

BUCKET ALGORITHM (PASSO 3: VALIDITA’ REWRITINGS)

query(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :-rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito), opera(titolo, compositore, arie, link_video, link_sheet).

q2(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video):- Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) , Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito), Youtube(titolo_video, link_video) , titolo_video contains titolo.

Exp_q2(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :- :- rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito_web), opera(titolo, compositore, arie, link_video, link_sheet)

Applicando l’Algoritmo di Query Contaiment si vede che

Exp_q2 query

e quindi q2 è un rewriting valido .

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV

BUCKET ALGORITHM (PASSO 3: VALIDITA’ REWRITINGS)

query(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :-rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito), opera(titolo, compositore, arie, link_video, link_sheet).

q3(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video):- Operabase_r(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast) , Operabase_t(nome, Milano(Scala)’, indirizzo, telefono, sito), Imslp(titolo, compositore, link_sheet,imslp_link).

Exp_q3(titolo, compositore, sito, data_inizio, data_fine, repliche, cast, link_sheet, link_video) :- :- rappresentazione(titolo, compositore, ‘Milano(Scala)’, data_inizio, data_fine, repliche, cast), teatro(nome, ‘Milano(Scala)’, indirizzo, telefono, sito_web), opera(titolo, compositore, arie, link_video, link_sheet)

Applicando l’Algoritmo di Query Contaiment si vede che

Exp_q3 query

e quindi q3 è un rewriting valido .

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV QUERY GLOBALE

q4(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- opera(‘La Traviata’ , compositore, aria, link_video, link_sheet),

sheets_pay(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p),

cd_dvd(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info), titolo_cd contains = ‘La Traviata’ .

BUCKET ALGORITHM (PASSO 1: VIEW ATOMS)

sheets_pay(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p)

=> SheetMusicPlus(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p).

cd_dvd(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info)=> Arkivmusik(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info). titolo_cd contains ‘La Traviata’

opera(‘La Traviata’, compositore, aria, link_video, link_sheet)

=> aria-database(La Traviata, compositore, arie)

=> Youtube(titolo_video, link_video) , titolo_video contains ‘La Traviata’.

=> Imslp(La Traviata, compositore, link_sheet,imslp_link)

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV QUERY GLOBALE

query(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- opera(‘La Traviata’ , compositore, aria, link_video, link_sheet),

sheets_pay(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p),

cd_dvd(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info), titolo_cd contains = ‘La Traviata’ .

BUCKET ALGORITHM (PASSO 2: CANDIDATES REWRITINGS)

qr1(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- SheetMusicPlus(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p), Arkivmusik(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info).,titolo_cd contains ‘La Traviata’, aria-database(La Traviata, compositore, aria).

qr2(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- SheetMusicPlus(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p), Arkivmusik(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info). titolo_cd contains ‘La Traviata’, Youtube(titolo_video, link_video) , titolo_video contains ‘La Traviata’.

qr3(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- SheetMusicPlus(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p), Arkivmusik(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info), titolo_cd contains ‘La Traviata’, Imslp(La Traviata, compositore, link_sheet,imslp_link).

Della Rocca Alessandro – Matr. 0522500091

Riformulazione LAV

BUCKET ALGORITHM (PASSO 3: VALIDITA’ REWRITINGS)

query(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- opera(‘La Traviata’ , compositore, aria, link_video, link_sheet), sheets_pay(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p), cd_dvd(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info), titolo_cd contains = ‘La Traviata’ . qr1(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- SheetMusicPlus(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p), Arkivmusik(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info).,titolo_cd contains ‘La Traviata’, aria-database(La Traviata, compositore, aria). Exp_qr1(aria, titolo_cd, link_info, img_cd, conductor, orchestra, performers, label, release, numdiscs, prezzo_cd, link_sheet_p, descrizione, prezzo_sheet, img_sheet) :- sheets_pay(‘La Traviata’, descrizione, img_sheet, prezzo_sheet, link_sheet_p), cd_dvd(titolo_cd,conductor, orchestra, performers, label, release, numdiscs,’ DVD’, prezzo_cd, img_cd, link_info), titolo_cd contains = ‘La Traviata’ , opera(‘La Traviata’ , compositore, aria, link_video, link_sheet).

Applicando l’Algoritmo di Query Contaiment si vede che Exp_qr1 query

e quindi q1 è un rewriting valido .

Della Rocca Alessandro – Matr. 0522500091

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Schema di implementazione

Della Rocca Alessandro – Matr. 0522500091

index.php

query1.php query2.php query3.php

Query1_mediator.php

Query2_mediator.php

Query3_mediator.php

Mediator

Wrapper Rappresentazioni

Wrapper Teatrii

Wrapper Rappresentazioni

Wrapper Teatri

Wrapper Imslp

Wrapper Youtube

Wrapper Products

Wrapper Aria

Wrapper Sheetmusic

WEB

Teatro Rappresen

tazione

Utility

Problemi

Tra le maggiori problematiche incontrate segnaliamo:

- Alcune fonti non utilizzano CSS (espressioni XPath complesse).

- Problemi di codifica caratteri.

- Dati di una singola relazione distribuiti su più pagine web.

(Wrappers che lavorano su più livelli di collegamenti)

Della Rocca Alessandro – Matr. 0522500091

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Tecnologie Utilizzate

Della Rocca Alessandro – Matr. 0522500091

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Conclusioni e sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Prestazioni

Query Fonti integrate

Numero risultati

Tempo

Query 1 (‘Aida’) 2 2 4.30 s

Query 2(‘Verdi’) 2 10 15,21 s

Query3 (‘Roma(Opera)’)

4 3 12,13 s

Query4 (‘La Traviata’)

3 35 9.18 s

Testing

Sommario

• Descrizione del problema e specifica funzionale.

• Architettura

• Fonti utilizzate

• Descrizione Datalog delle fonti

• Wrappers

• Schema globale

• Descrizione delle query

• Riformulazione GAV e LAV delle query

• Codice e implementazione

• Tecnologie utilizzate

• Prestazioni

• Sviluppi futuri.

Della Rocca Alessandro – Matr. 0522500091

Sviluppi futuri

• Possibilità di espandere la ricerca ai teatri di tutto il mondo modificando un solo parametro.

• Possibilità di integrare nuove fonti.

• Offrire un servizio di geolocalizzazione.

• Implementazione su dispositivi mobile.

• Integrazione con i social network.

Grazie per l’attenzione!