La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linguaggio per la modellazione e presentazione web di eventi turistici a tappe. Attività progettuale per il corso di Linguaggi e Modelli Computazionali.

Presentazioni simili


Presentazione sul tema: "Linguaggio per la modellazione e presentazione web di eventi turistici a tappe. Attività progettuale per il corso di Linguaggi e Modelli Computazionali."— Transcript della presentazione:

1 Linguaggio per la modellazione e presentazione web di eventi turistici a tappe. Attività progettuale per il corso di Linguaggi e Modelli Computazionali M Professore:Studente: Enrico Denti Thomas Ricci

2 Scopo del Progetto 1.Sviluppo di un linguaggio semplice e intuitivo ma allo stesso flessibile e completo per la modellazione di un itinerario turistico riguardante un evento a tappe, al fine di automatizzare la generazione di una presentazione dellitinerario con tecnologie Web 2.0: 2.Migliorare lesperienza di navigazione degli utenti web fornendo contenuti interattivi di qualità per la presentazione di un evento (piuttosto che semplici contenuti testuali).

3 Caratteristiche del linguaggio 3 tipologie di evento a tappe: 1.RACE: Manifestazioni sportive su strada senza punti di sosta (gare ciclistiche, rally automobilistici,…). 2.TOUR: Itinerari culturali/enogastronomici che prevedono punti di sosta con eventuale visita. 3.SAIL-RACE: Regate. Il linguaggio consente di definire le informazioni generali sullevento: Periodo evento Descrizione evento Elenco delle tappe previste … e quelle specifiche in base alla tipologia, come ad esempio: Statistiche di gara nel caso di eventi sportive. Informazioni culturali e contatti nel caso di itinerari per eventi culturali.

4 La Grammatica TOKEN : A_GR : '{' ; C_GR : '}' ; fragment DIGIT : ( '0'..'9'); INT : DIGIT+; FLOAT : DIGIT+ '.' DIGIT+; DATE : DIGIT DIGIT '/' DIGIT DIGIT '/' (DIGIT DIGIT | DIGIT DIGIT DIGIT DIGIT); ORARIO : DIGIT DIGIT ':' DIGIT DIGIT; STRING: '"' ( ESC_SEQ | ~('\\'|'"') )* '"'; fragment HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ; fragment ESC_SEQ : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\') | UNICODE_ESC | OCTAL_ESC; fragment OCTAL_ESC: '\\' ('0'..'3') ('0'..'7') ('0'..'7)| '\\' ('0'..'7') ('0'..'7')| '\\' ('0'..'7'); fragment UNICODE_ESC : '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT; WS : ( | \t | \r | \n ) {$channel=HIDDEN;};

5 La Grammatica TOKEN: EVENT='event'; TOUR='tour'; RACE='race'; SAIL='sail'; BOA='boa'; DEST='dest'; STAGE='stage'; LAP='lap'; DEP='departure'; ARR='arrival'; DISLIV='disliv'; KM='km'; KM_TOT='km_tot'; MI='mi'; PEND_PRC='pend_%'; PEND_MAX='pend_max'; ALT='alt'; TEL='tel'; =' '; WEB='website'; RIST='restaurant'; MED='firstAid'; MEC='mechanic'; GAS='gas'; INFO='info'; DATA='data'; TIME='h'; BIKE='bike'; CAR='car'; IMG='img'; COORD='coordinates'; LNG='lng'; LAT='lat'; ADDR='addr';

6 La Grammatica G = PRODUZIONI: s ::= description period ( race| tour | sail_race ) Lo scopo della grammatica è il simbolo non terminale s e la relativa produzione prevede che un evento inizi con la keyword event seguita da: Nome evento Descrizione dellevento description ::= Periodo evento period ::= ( | da a ) Tipologia di evento… Esempio: event Giro dItalia 2011 { info …descrizione dellevento… data da 20/05/11 a 22/05/11 […tipo evento: tour|race|sail_race…] }

7 La Grammatica: Race race ::= ( stage| poi )+ Una race rappresenta una manifestazione sportiva a tappe che non prevede punti di sosta lungo il percorso ma solo: Tratti di gara stage ::= (by ( | ))? partenza (indirizzo)* arrivo (period)? (km_tot)? ( pend_prc )? ( pend_max )? ( disliv )? description Points of Interests (non necessariamente sul percorso) poi ::= ( | | | ) (contatti )?

8 La Grammatica: Race Esempio: race { stage by bike "Cesenatico - Polenta { departure "Portocanale di Cesenatico { addr "via Cesenatico 10, Cesenatico" h 05:00 img } addr "Via San Pellegrino 5, Cesenatico addr "Via Collinello, Bertinoro" arrival "Polenta { addr "via Polenta 477, Polenta, Bertinoro km 37 alt 287 } data 20/05/10 km_tot 34 pend_% 3.06 pend_max 13 disliv 284 info "Dopo essersi lasciati alle spalle il mare di Cesenatico,... } firstAid "Ospedale Bufalini" { addr "viale Ghirotti 286, Cesena" tel website "www.ausl- cesena.emr.it"} } stage ::= (by ( | ))? partenza (indirizzo)* arrivo (period)? (km_tot)? ( pend_prc )? ( pend_max )? ( disliv )? description km_tot ::= ( | ) alt ::= ( | ) disliv ::= ( | ) pend_prc ::= pend_max ::= partenza ::= (indirizzo | coordinates) (km)? (alt)? (time)? ( img )? arrivo ::= (indirizzo | coordinates) (km)? (alt)? (time)? ( img )? poi ::= ( | | | ) indirizzo ( contatti )? contatti ::= (tel | | web)+ tel ::= := web ::= indirizzo ::=

9 La Grammatica: Tour tour ::= ( destination | stage | poi )+ Un tour rappresenta un evento con eventuali mete da visitare lungo il percorso (esempi: tour culturali/enogastronomici, raduni dauto depoca, …). Un tour prevede la possibilità di definire: Punti di sosta di rilevanza turistica. destination ::= indirizzo (km)? (contatti)? (period)? description> ( )? Percorsi per raggiungere le destinazioni / eventuali tratti di gara (es. raduni auto depoca). stage ::= (by ( | ))? partenza (indirizzo)* arrivo (period)? (km_tot)? ( pend_prc )? ( pend_max )? ( disliv )? description Points of Interests (non necessariamente sul percorso) poi ::= ( | | | ) (contatti )?

10 Esempio: tour { dest Museo della Marineria di Cesenatico { addr "via Cesenatico 10, Cesenatico" km 10 tel date 31/10/10 info museo allestito sul portocanale di Cesenatico… img } gas Distributore ESSO { addr Statale Adriatica, Tagliata di Cervia" tel } … } poi ::= ( | | | ) indirizzo ( contatti )? destination ::= indirizzo (km)? (contatti)? (period)? description ( )? La Grammatica: Tour description ::= img ::= contatti ::= (tel | | web)+ tel ::= := web ::= km ::= ( | )

11 La Grammatica: Sail Race sail_race ::= ( lap | poi )+ Una sail race rappresenta una regata ed è costituita da una serie di: Rotte della regata: lap ::= partenza ( coordinates | boa )+ arrivo ( description )? Points of Interests (non necessariamente sul percorso) poi ::= ( | | | ) (contatti )?

12 La Grammatica: Sail Race sail{ lap "Tappa Cesenatico-Cervia { departure "Congrega Velisti Cesenatico" { coordinates { lat lng } } coordinates { lat lng } boa { coordinates { lat lng } } coordinates { lat lng } coordinates { lat lng } arrival "Portocanale di Cervia { coordinates { lat lng } } info "La prima tappa della regata prevede il raggiungimento del portocanale di Cervia." } restaurant Ristorante da Urbano" { addr "via Lungomare Ponente 1, Cesenatico" tel } lap ::= partenza ( coordinates | boa )+ arrivo ( description )? partenza ::= (indirizzo | coordinates) (km)? (alt)? (time)? ( img )? arrivo ::= (indirizzo | coordinates) (km)? (alt)? (time)? ( img )? boa ::= coordinates ( miles )? coordinates ::= lat lng lat ::= lng ::= miles ::= ( | ) coordinates ::= lat lng lat ::= lng ::= Per la costruzione del percorso della regata tramite coordinate (semplici punti intermedi) e boe. Esempio:

13 La Grammatica G = PRODUZIONI : s ::= description period ( tour | race | sail_race ) tour ::= ( destination | stage | poi )+ race ::= ( stage| poi )+ sail_race ::= ( lap | poi )+ destination ::= indirizzo (km)? (contatti)? (period)? description> ( )? stage ::= (by ( | ))? partenza (indirizzo)* arrivo (period)? (km_tot)? ( pend_prc )? ( pend_max )? ( disliv )? description lap ::= partenza ( coordinates | boa )+ arrivo (description)? partenza ::= (indirizzo | coordinates) (km)? (alt)? (time)? (img )? arrivo ::= (indirizzo | coordinates) (km)? (alt)? (time)? (img )? poi ::= ( | | | ) (contatti)? boa ::= coordinates ( miles )?

14 La Grammatica description ::= indirizzo ::= period ::= ( | da a ) time ::= coordinates ::= lat lng lat ::= lng ::= miles ::= ( | ) km ::= ( | ) km_tot ::= ( | ) alt ::= ( | ) disliv ::= ( | ) pend_prc ::= pend_max ::= img ::= contatti ::= (tel | | web)+ tel ::= := web ::=

15 Analisi della Grammatica La grammatica è di tipo 2 (context free) secondo la classificazione di Chomsky in quanto le produzioni sono vincolate alla forma: … tuttavia non sono presenti produzioni con self-embedding … pertanto il linguaggio è regolare (tipo 3) A α con α є (VT U VN)* ed A є VN A α1 A α2 con A є VN e α1, α2 є (VN U VT)+

16 Analisi della Grammatica La grammatica è LL(1)? Una grammatica context-free è LL(1) se per ogni metasimbolo che compare nella parte sinistra di più produzioni alternative, i DIRECTOR SYMBOLS relativi a tali produzioni sono disgiunti. Grammatica è LL(1) grammatica LL(1) è caratterizzata dalla possibilità di analizzare la frasi Left to right applicando la Left-most derivation utilizzando al più 1 simbolo della frase per scegliere con certezza la produzione opportuna per la riscrittura. SS( α ) se α non genera mai ε-rules DS( A α ) SS( α ) U FOLLOW( A ) se α può generare ε-rules

17 Strumenti Utilizzati Linguaggio di programmazione: C# IDE di sviluppo: Visual Studio 2010 Piattaforma web: ASP.Net 4.0 Strumento per generazione automatica di Lexer e Parser: ANTLR 3.0 Strumenti di supporto per la valutazione del linguaggio: Web Services: Google Geocoding API Google Directions API

18 Architettura: Package Il progetto è stato implementato con una Class Library, EventiATappeLib.dll, che verrà poi utilizzata allinterno di una applicazione web ASP.Net per generare contenuti.

19 Architettura: Nodi AST Package AST: alcuni nodi… Antlr 3.0 non implementa più Pattern Visitor per la valutazione dellAST… Estensione della classe CommonTree che rappresenta il generico nodo dellAST

20 Architettura del Sistema

21 Editor Web del linguaggio

22 Funzionamento del Sistema LEXER PARSER AST Tokens

23 Valutazioni AST KmlVisitor JsonVisitor HtmlVisitor Keyhole Markup Language XML based e condivide parte della grammatica di GML dellOpen Geospatial Consortium (standard ISO).Open Geospatial Consortium Linguaggio proprietario di Google per la definizione di mappe interattive utilizzate in Google Maps e Google Earth. JavaScript Object Notation Linguaggio standard IETF per la definizione di oggetti JavaScript. l'interprete JavaScript è in grado di eseguire il parsing di una stringa Json tramite una semplice chiamata alla funzione eval() che restituisce loggetto JavaScript rappresentato. Molto utilizzato in ambito Web con teconologia Ajax per lo scambio di dati al posto di XML perché più leggero.

24 Verifica Semantica delle frasi Errori lessicali e sintattici vengono rilevati direttamente da Lexer e Parser tramite le eccezioni predefinite di Antlr. Errori semantici gestiti: Verifica correttezza date e orari. Verifica esistenza indirizzo richiesto a Google Geocoding Verifica correttezza sintattica URL immagine Verifica correttezza sintattica indirizzi

25 Collaudo Per il collaudo sono stati realizzati alcuni esempi delle tre tipologie di evento… tra cui un evento ciclistico reale! I contenuti web della Nove Colli 2011 ad un mese dalla pubblicazione, hanno avuto un notevole successo: Apprezzamento degli utenti web che hanno manifestato un grande interesse per levento in termini di visite alla pagina e richieste di prenotazione nel periodo dellevento.

26 Sviluppi futuri Limiti: Contenuti attualmente presentati prevalentemente testuali… manca la possibilità di introdurre video e photogallery dellevento. Sviluppi Futuri: Estensioni del linguaggio per integrare informazioni sullevento: Mash-up con Wikipedia per integrare informazioni turistiche. Aggiunta contenuti multimediali da Youtube e Flickr Potenziamento sezione gestionale nel CMS al fine di affiancare allattuale editor del linguaggio un wizard per linserzione nuovi eventi che generi in modo trasparente allutente le frasi del linguaggio.


Scaricare ppt "Linguaggio per la modellazione e presentazione web di eventi turistici a tappe. Attività progettuale per il corso di Linguaggi e Modelli Computazionali."

Presentazioni simili


Annunci Google