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.
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>=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
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
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.
Top Related