UNIVERSITÀ DEGLI STUDI ROMA TRE Sviluppo di un
Transcript
UNIVERSITÀ DEGLI STUDI ROMA TRE Sviluppo di un
UNIVERSITÀ DEGLI STUDI ROMA TRE FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA Tesi di Laurea Sviluppo di un sistema di gestione di metadati per la descrizione dei contenuti di un archivio televisivo digitale Candidato: Donato Biscaglia Co-relatore Relatore 2° Relatore Ing. Chiar.mo Prof. Chiar.mo Prof. Francesco Romano Alessandro Neri Claudio Palma Anno Accademico 2001-2002 ABSTRACT La tesi è stata svolta presso le strutture ed i laboratori dalla Scuola di Formazione Superiore ELIS di Roma, nell'ambito del progetto Internet TV commissionato dalla Rai Radio Televisione Italiana a “Vivai D’Impresa”, una iniziativa della medesima ELIS. La RAI impiega diversi archivi multimediali per conservare e ricercare le trasmissioni, tra i quali l'archivio digitale Teca Fast. Questo enorme patrimonio può essere utilizzato con mezzi tradizionali ed ancor meglio sfruttando la rete Internet, che con la larga banda e le tecnologie legate ad essa permette di ricevere grandi quantità di dati (ad esempio i filmati). I contenuti audiovisivi di Teca Fast provengono dalle tre reti nazionali (Rai uno, Rai due e Rai tre) e sono accessibili attraverso una rete intranet ad alta velocità, che connette alcune redazioni attrezzate per la produzione di programmi come i telegiornali. I motori di ricerca utilizzati in RAI per individuare una determinata risorsa presentano alcune carenze che limitano l’efficacia delle ricerche. Tali carenze sono tra l'altro dovute alla mancanza di standardizzazione sulla struttura dei documenti di descrizione e alla presenza di numerosi campi descrittivi a testo libero nella documentazione.Partendo dai risultati ottenuti dalla prima edizione, il progetto è stato indirizzato allo sviluppo di una applicazione Mpeg-7 mirata alla diffusione di risorse audiovisive in rete geografica. Le risorse televisive, su cui utilizzare l'applicazione, sono stati i telegiornali trasmessi dalle tre reti nazionali, suddivisi in base alle notizie di ciascun servizio. Inizialmente si sono ripercorsi i passi fondamentali del lavoro precedente per comprendere la struttura di Teca Fast e per acquisire competenze sulle infrastrutture Web e sulle tecnologie XML. Infatti le tecnologie, attualmente impiegate sui metadati audiovisivi, sono per la maggior parte applicazioni del linguaggio XML (eXtensible Markup Language), perchè per la creazione di base dati XML propone strumenti più potenti e flessibili delle tradizionali tecnologie (database relazionali oppure ad oggetti). In seguito si è rivolta l'attenzione verso lo standard ISO Mpeg-7, sviluppato dal gruppo Moving Picture Expert Group (MPEG), che è indirizzato alla creazione e alla gestione di descrizioni per contenuti multimediali, a differenza dei precedenti standard Mpeg rivolti più alla loro codifica. La fase successiva del progetto è stata centrata sulle modalità di estrazione e descrizione delle informazioni. Dopo numerosi contatti con ricercatori, che lavorano intorno allo standard Mpeg7, si sono aperte alcune strade, ma solo una ha avuto alla fine una base concreta. Il centro ricerche della nota società di software RICOH Co ci ha fornito una versione del loro software, Movie Tool versione beta, in grado di descrivere la risorsa audiovisiva attraverso il documento Mpeg7 e di estrapolare alcune informazioni particolari. pag. II In seguito si è passati alla definizione di una nuova struttura dati per l'inserimento di caratteristiche di più basso livello, aumentando così il dettaglio del metadato, e all’implementazione del modello di documento in un Data Base Management System XML nativo. Nel progetto Internet TV si è definita la procedura di estrazione del metadato per la descrizione di risorse audiovisive. Per tale descrizione, si è preso spunto dalle informazioni contenute nel Catalogo Multimediale e nel Server SQL di Teca Fast. Il software Movie Tool ha consentito di automatizzare in parte la catalogazione della mediateca. La piattaforma software, in cui inserire i documenti Mpeg7, è stata Tamino XML DB della società Software AG. Oltre al Database XML, sono configurati un Web Server Apache e il Java Servlet Apache, rispettivamente per la gestione delle risorse tramite interfaccia di comunicazione http standard e per l’elaborazione, lato server, delle pagine di risposta XML. Successivamente i metadati sono stati inseriti nel DB utilizzando l'interfaccia Web di gestione, che permette sia l'inserimento che l'eliminazione dei dati. Sulla base del DataBase realizzato, si sono state progettate le interfacce per l’interrogazione del DBMS, con funzionalità di ricerca avanzate utilizzando funzioni Javascript ed oggetti ActiveX. Nel recuperare una determinata risorsa AV in un preciso campo del documento Mpeg-7, si possono utilizzare condizioni multiple, che permettono di effettuare ricerche più puntuali nella struttura dei documenti di descrizione. L’applicazione, su cui è stato possibile effettuare test dimostrativi delle funzionalità del sistema, è stata denominata "TV NEWS ARCHIVE". Il risultato delle interrogazioni mostra la descrizione della risorsa audiovisiva (informazioni di palinsesto, sul formato, sui singoli servizi....) e può visualizzare il contenuto delle singole sequenze audiovisive. Il server di streaming utilizzato per questo scopo è “Real Server”, che permette una maggiore flessibilità ed efficienza nella visualizzazione del video. Il servizio fornito all’utente prescinde da conoscenze sullo standard Mpeg-7 o sulle tecnologie XML. In conclusione l'applicazione Mpeg-7 "TV NEWS ARCHIVE" è un sistema completo per l'estrazione e la gestione di un archivio televisivo digitale dal punto di vista dei Metadati proponendosi come importante esempio di applicazione di "standard aperti". pag. III INDICE CAPITOLO 1 TECNOLOGIA, INFORMAZIONE, COMUNICAZIONE............................................................................................. 4 1.1 INTRODUZIONE....................................................................................... 4 1.2 LE TECNOLOGIE DI STREAMING...................................................... 5 1.3 LA LARGA BANDA .................................................................................. 6 1.4 IL DIGITALE TERRESTRE IN ITALIA ............................................... 7 CAPITOLO 2 GLI ARCHIVI AUDIOVISIVI...................................... 9 2.1 GLI ARCHIVI AUDIOVISIVI DIGITALI ............................................. 9 2.2 IL SISTEMA TECHE RAI ...................................................................... 12 2.2.1 IL CATALOGO MULTIMEDIALE .................................................. 16 2.2.2 L'ORGANIZZAZIONE DEL CATALOGO ...................................... 18 2.2.3 L’ACQUISIZIONE DEI DOCUMENTI MULTIMEDIALI ............. 18 2.3 L'ARCHITETTURA DELLA TECA FAST RAI.................................. 20 2.3.1 OPERAZIONI DI INSERIMENTO DEI CONTENUTI.................... 22 2.3.2 OPERAZIONI DI RICHIESTA DEI CONTENUTI .......................... 23 2.3.3 IL DATABASE DELLA TECA FAST .............................................. 24 2.4 I METADATI ............................................................................................ 25 2.4.1 INTEROPERABILITÀ DEI METADATI ......................................... 26 2.4.2 I METADATI AUDIOVISIVI............................................................ 27 2.4.3 NUOVE ESIGENZE PER I METADATI AUDIOVISIVI ................ 29 CAPITOLO 3 IL METALINGUAGGIO XML................................... 32 3.1 LE ORIGINI DEL LINGUAGGIO XML .............................................. 32 3.2 LE TECNOLOGIE XML ........................................................................ 34 3.2.1 DOCUMENT TYPE DEFINITION ................................................... 34 3.2.2 XML SCHEMA .................................................................................. 36 3.2.3 XPATH ............................................................................................... 40 3.2.4 INTERROGAZIONI IN XML............................................................ 43 3.2.5 VISUALIZZAZIONE DI DOCUMENTI XML................................. 45 3.3 IL MODELLO DEI DATI XML ............................................................. 49 3.3.1 IL MODELLO XML E IL MODELLO RELAZIONALE................. 50 3.3.2 DIFFERENZE TRA DBMS XML NATIVO E TRADIZIONALE ... 52 3.4 PROGRAMMARE CON XML ............................................................... 54 3.4.1 PARSERS STANDARD .................................................................... 55 pag. 1 CAPITOLO 4 MPEG-7 : MULTIMEDIA CONTENT DESCRIPTION INTERFACE .......................................................................... 57 4.1 CONSIDERAZIONI PRELIMINARI .................................................... 57 4.2 INTRODUZIONE ALLO STANDARD MPEG-7................................. 57 4.2.1 STRUTTURA DEI MULTIMEDIA DESCRIPTION SCHEMES .... 60 4.2.2 GLI STRUMENTI BASE DELLO SCHEMA ................................... 64 4.2.3 DECOMPOSIZIONI STRUTTURALI DEI SEGMENTI ................. 78 4.3 ESTRAZIONE DELLE INFORMAZIONI ........................................... 83 4.3.1 MODALITÀ DI ESTRAZIONE ........................................................ 83 4.4 GENERAZIONE DEL DOCUMENTO MPEG-7 ................................. 87 4.4.1 L’ELEMENTO DESCRIPTIONMETADATA.................................. 89 4.4.2 L’ELEMENTO MEDIALOCATOR: LOCALIZZAZIONE TEMPORALE E FISICA DELL’AUDIOVISIVO. ..................................... 92 4.4.3 L’ELEMENTO STRUCTURALUNIT: IL RUOLO DEL SEGMENTO AV .......................................................................................... 96 4.4.4 L’ELEMENTO CREATIONINFORMATION: CREAZIONE E CLASSIFICAZIONE.................................................................................... 97 4.4.5 L’ELEMENTO USAGEINFORMATION: USO DEL CONTENUTO AUDIOVISIVO .......................................................................................... 105 4.4.6 L’ELEMENTO MEDIATIME ......................................................... 108 4.4.7 L’ELEMENTO MEDIASOURCEDECOMPOSITION : DESCRIZIONE FISICA DEL CONTENUTO .......................................... 112 4.4.8 L’ELEMENTO TEMPORALDECOMPOSITION : DESCRIZIONE DELLE SINGOLE SEQUENZE ................................................................ 118 CAPITOLO 5 REALIZZAZIONE DI APPLICAZIONE MPEG-7 "TV NEWS ARCHIVE".................................................................................. 124 5.1 ARCHITETTURA DEL PROTOTIPO................................................ 124 5.2 IL DBMS "TAMINO": ARCHITETTURA E COMPONENTI........ 126 5.2.1 CARATTERISTICHE PRINCIPALI DEL DATABASE TAMINO XML:........................................................................................................... 127 5.2.2 LA PIATTAFORMA........................................................................ 129 5.2.3 X-MACHINE.................................................................................... 130 5.2.4 L’AMMINISTRATORE DEL SERVER ......................................... 132 5.2.5 PROCEDURA DI CREAZIONE DEL DB PROTOTIPO ............... 132 5.3 DESCRIZIONE DELLA RISORSA AUDIOVISIVA......................... 135 5.4 GESTIONE DEL DATABASE.............................................................. 136 5.4.1 INTERFACCIA INTERATTIVA DI GESTIONE DOCUMENTI.. 137 5.5 INTERFACCE DI QUERY ................................................................... 139 5.5.1 OPERAZIONI DI QUERY IN RETE ATTRAVERSO UN DBMS NATIVO XML ........................................................................................... 139 pag. 2 5.5.2 IMPLEMENTAZIONE DI XML NEL WEB................................... 141 5.5.3 COSTRUZIONE DELLE INTERFACCE........................................ 144 5.5.4 INTERFACCIA DI INTERROGAZIONE SULL’INTERO TG...... 145 5.5.5 INTERFACCIA DI INTERROGAZIONE SUI SINGOLI SERVIZI ..................................................................................................................... 149 CAPITOLO 6 CONCLUSIONI E SVILUPPI DEL PROGETTO .. 152 BIBLIOGRAFIA, RISORSE IN RETE.......................................................... 154 APPENDICE A: LISTATO DEL DOCUMENTO DESCRITTIVO REALIZZATO SECONDO MPEG-7 MDS................................................... 157 APPENDICE B LISTATI DEL CODICE DELLE INTERFACCE WEB.. 166 APPENDICE C LISTATI DEL CODICE DEI FOGLI DI STILE XSL..... 174 APPENDICE D TERMINI E DEFINIZIONI:.............................................. 188 pag. 3 CAPITOLO 1 TECNOLOGIA, INFORMAZIONE, COMUNICAZIONE 1.1 INTRODUZIONE Nel panorama economico dell’Unione Europea e in particolare dell’Italia, il settore ICT (Information and Communication Technology) ha assunto un ruolo di primo piano, e se ne può trovare agevolmente conferma nella crescente richiesta di nuovi servizi da parte degli utenti. Questo settore, nato dalla convergenza delle Telecomunicazioni e dell’Informatica, è caratterizzato da un mercato a competitività crescente e da una continua diminuzione del costo delle tecnologie di base (microprocessori, memorie, larghezza di banda delle connessioni). Oggi si sta evolvendo dai tradizionali aspetti applicativi, al nuovo ambiente Web-Oriented, rivolto al business elettronico. L’elemento trainante in questa rivoluzione è Internet che rende di fatto possibile accedere alle informazioni da qualsiasi posto in qualsiasi momento. Sono state create nuove opportunità nel campo della struttura delle reti, basti pensare alle rivoluzioni della telefonia mobile e della telefonia su reti IP o alla televisione su Internet, e parallelamente anche nel settore delle applicazioni come nel caso del commercio elettronico. Oggi si dispone di un ambiente di rete distribuito capillarmente a livello aziendale e domestico, in grado di supportare lo sviluppo e la promozione di servizi multimediali interattivi. Il telelavoro, l’e-learning, le reti tra università e centri di ricerca, i servizi telematici per le Piccole e Medie Imprese, il monitoraggio ambientale, i servizi in rete per la Pubblica Amministrazione, la telemedicina e la telediagnosi, sono solo alcune delle tecnologie che possono divenire elemento trainante per l’intero tessuto sociale e, al tempo stesso, stimolare la crescita, la competitività e l’occupazione. L’industria informatica sta attraversando una nuova fase. Dopo il primo ciclo dei grandi elaboratori e delle reti di minicomputer dipartimentali (caratterizzato dallo sviluppo di applicazioni centralizzate accessibili da terminali non intelligenti) il secondo ciclo, che ha caratterizzato sostanzialmente l’ultimo decennio, ha visto l’avvento dell’architettura client-server, con l’affermazione del personal computer, dei sistemi aperti, delle reti locali e dei sistemi distribuiti come conseguenza di una netta discontinuità tecnologica. Il nuovo ciclo è quello che vede la straordinaria crescita di Internet e del network computing, caratterizzato dall’evoluzione delle architetture distribuite, dei nuovi ambienti di sviluppo quali Java, dal consolidamento delle tecnologie object pag. 4 oriented in ambiente distribuito, da un nuovo livello di sicurezza e dalla presenza di nuove applicazioni e servizi che hanno già cominciato a rivoluzionare il nostro modello di vita. Basti guardare alla massiccia diffusione della telefonia attraverso sistemi radiomobili, o alla richiesta di connettività a crescente larghezza di banda dettata dalla diffusione di Internet e dei contenuti multimediali in formato digitale. Multimedialità e convergenza portano a ridurre le distanze tra reti di telecomuncizioni e reti informatiche destinate a fondersi progressivamente: la complessità delle reti di telecomunicazione è così destinata ad aumentare. Una gestione della complessità che permetta di mantenere un’elevata affidabilità dei servizi con un grado di qualità fornita garantito, sarà una delle sfide tecnologiche dei prossimi anni. 1.2 LE TECNOLOGIE DI STREAMING Con la diffusione delle tecnologie di streaming ha consentito una maggiore distribuzione dei contenuti multimediali in rete, in quanto hanno gradualmente arricchito Internet, da un ambiente di pagine statiche con solo testo a un ambiente real-time che offre contenuti multimediali. Le tecnologie streaming stanno cambiando profondamente il modo e le forme in cui i creatori e i proprietari di contenuti possono raggiungere il pubblico. Lo streaming consente di trasferire i dati attraverso un flusso continuo su reti ‘best effort’ e di presentarli sul client durante il trasferimento delle informazioni. Lo streaming, ovvero le applicazioni client che lo supportano, consente la fruizione di un filmato o di un brano audio, o anche di trasmissioni continue simili alla trasmissioni televisive tradizionali, di eventi sia registrati (eliminando i lunghi tempi di attesa per il downloading di dati completo) sia in diretta live. Tali tecnologie sono alla base di un’ampia gamma di servizi multimediali "a richiesta", che spaziano dalla formazione, all'informazione e all'intrattenimento: i siti commerciali possono presentare cataloghi multimediali di prodotti, i portali di formazione possono fornire lezioni basate su materiali video e audio, il pubblico può usufruire di film o video clip musicali collegandosi a servizi di intrattenimento in rete. La tecnologia streaming utilizza algoritmi avanzati di compressione di segnali audio e video ed altre tecnologie (molte delle quali sviluppate su piattaforme software proprietarie) che consentono di negoziare l’ampiezza di banda, la gestione dinamica di connessioni, la correzione di errori e il pre-buffering. Le tecnologie streaming basate su connessioni Unicast non consentono un uso efficace delle risorse di rete. Con l’IP Multicast, che consente l’invio di dati a server distribuiti su una rete speciale di router con software abilitato, si è in grado di distribuire flussi continui di dati a molti riceventi simultaneamente con minimizzazione dell’ampiezza di banda occupata sulle singole connessioni. Una pag. 5 modalità idonea per applicazioni Internet a uso intenso di dati, come videoconferenze tra diversi utenti, trasmissioni televisive. 1.3 LA LARGA BANDA Tornando allo scenario ICT ed in particolare alla connettività, uno degli elementi chiave per il futuro dei new media è la larga banda. Attualmente si registra una crescente domanda di accessi a larga banda, supportata non solo dall’aumento del traffico dati per clienti affari, ma anche dalla diffusa richiesta di servizi multimediali per i clienti residenziali (lo streaming multimediale, i brani musicali MP3 e la messaggistica personale sono solo alcuni esempi). E' ormai diffusa la possibilità di fornire servizi di trasporto dati video digitali in rete in alternativa o a complemento delle tecniche basate sulla trasmissione via etere o via satellite (vedi iniziative come quella di Fastweb che propone nelle grandi città Tv di alta qualità via Internet ad alta banda). Ed è proprio la richiesta di nuovi servizi che ha portato ad un ripensamento delle modalità di sviluppo e innovazione delle reti di accesso, alla luce delle possibilità offerte dallo sviluppo delle tecnologie pertinenti. Il mercato spinge i fornitori di accesso all’identificazione delle soluzioni infrastrutturali che permettano di contenere i costi dell’innovazione, e che garantiscano al contempo livelli di qualità adeguati alle diverse tipologie di servizi. Importante è dunque l’ottimizzazione di soluzioni per l’accesso in grado di coniugare al meglio la disponibilità di risorse delle reti in rame esistenti e le potenzialità offerte dall’impiego delle fibre ottiche. Il successo di queste soluzioni consente a gestori e costruttori la fornitura di nuovi sistemi di telecomunicazioni, in grado di fornire servizi evoluti con costi contenuti e con un conseguente stimolo del mercato. Il futuro della Rete e delle sue future applicazioni passa inevitabilmente per una radicale rivoluzione tecnologica chiamata broadband (letteralmente “banda larga”); la necessità di questa rivoluzione è evidente a tutti: la capacità attuale dei sistemi di trasmissione dei dati basati su reti sostanzialmente analogiche è insufficiente per consentire piena integrazione e convergenza tra Internet e contenuti multimediali, interattivi, audio(e)visivi. L’attuale velocità delle trasmissioni su reti tradizionali varia dai 56 Kbps (kilobit per secondo) di un comune modem ai pochi centinaia di Kbps delle linee ADSL, di fatto tali capacità trasmissive sono assolutamente insufficienti per gestire qualsiasi forma di fruizione audiovisiva e multimediale on line (streaming media, video on demand, I-TV, gaming on line). pag. 6 I “colli di bottiglia” di cui sono disseminate le classiche reti telefoniche analogiche basate sulla tecnologia del doppino in rame vengono progressivamente aggirati con tecnologie più efficienti di modulazione del segnale. Questo nuovo orizzonte tecnologico coinvolge in maniera trasversale e sinergica vari tipi di mercati ed aziende, dalle imprese di software, impegnate nella ricerca di sistemi di compressione dei file sempre più efficaci e “leggeri”, ai granddi gestori di reti di telecomunicazioni interessate a fornire servizi di connessione più mirati ed efficienti ed a decongestionare le reti telefoniche; di fatto, uno dei settori naturalmente più coinvolto nella sfida del broadband è quello dei costruttori di reti, il cosiddetto mercato del “communications equipment”. 1.4 IL DIGITALE TERRESTRE IN ITALIA Il processo di espansione del DTT (Digital Terrestial Television) è rapido e nonostante gli investimenti da sostenere le potenzialità di mercato sono favorevoli. A differenza del digitale satellitare che oggi raggiunge circa il 20% delle famiglie italiane (una quota ancora più bassa di quella stimata per Internet che connette ormai oltre il 50% dei nuclei familiari), la copertura del DTT potrebbe rapidamente raggiungere il 92% del territorio proprio in virtù di un costo per gli utenti assai contenuto, che al contrario per il digitale satellitare, è stato mantenuto artificialmente elevatissimo, riducendone la penetrazione. Le aziende TV stanno pianificando ingenti investimenti per trasformare gli impianti analogici e renderli compatibili con i nuovi standard. Il tempo previsto per sostituire completamente la trasmissione analogica dovrebbe essere di cinque anni, per essere in linea con quanto previsto in Francia e Germania che completeranno la transizione al DTT entro il 2010. Bisogna considerare che con il DTT l’etere televisivo si ampia enormemente e dove oggi passa una sola rete in futuro ne avremo cinque. Per esempio Rai e Mediaset ne potranno avere 15 a testa. Anche per le piccole emittenti cresceranno le opportunità che potranno aumentare attraverso forme consortili per la gestione di un bouquet di frequenze. La televisione commerciale potrebbe sfruttare l'ampliamento delle frequenze anche per rafforzare il circuito del commercio elettronico, sempre attraverso un maggiore sfruttamento del rapporto tra TV e Internet. La capacità di cogliere l'occasione dipenderà infatti da quanto l'azienda radiotelevisiva italiana sarà capace di innovare le proprie strategie. Anche la RAI ha investito di recente sulla presenza in Internet, per sfruttare l'immenso patrimoni di contenuti di cui dispone. Alcuni segni di vitalità ci sono e riguardano varie sperimentazioni, come RAI News o quelle su RAI Educational pag. 7 (che ai programmi educativi accompagna una sperimentazione su servizi di Internet TV e che proprio nella logica da servizio pubblico ha istallato oltre cinquemila parabole digitali nelle scuole per farne centri di formazione a distanza per docenti e cittadini sfruttando la combinazione tra web e satellite) o, ancora quelle realizzate su Rai Tre (tra cui spicca l'esperienza di okkupati.rai.it sito collegato all'omonima trasmissione settimanale dedicata ai temi del lavoro e della formazione che ormai ha mensilmente più di centoventi mila utenti mensili per oltre 1,2 milioni di pagine viste). Grazie alle tecnologie digitali potrebbero aprirsi nuovi scenari e nuovi assetti. L'evento conciliatore sembra essere legato al DTT, il Digital Terrestrial Television cioè la televisione digitale che sostituirà presto l'attuale TV analogica e che, sfruttando le antenne tradizionali, senza parabola senza altri fili e con decoder permetterà di ricevere la nuova televisione digitale. Anche se esistono numerose barriere tecnologiche che limitano il rapporto tra televisione digitale ed Internet, la diffusione storica del primo e quella esponenziale del secondo rendono il loro incontro decisivo per lo sviluppo della comunicazione. Tuttavia oggi è coscienti del fatto che i due media possano avere un sviluppo separato, e le difficoltà di oggi celano in realtà una grande vitalità che si manifesta nell'emersione di nuove soluzioni e nuovi prodotti. Il digitale terrestre rappresenta per tutto lo scenario televisivo italiano ed in particolare per la RAI una "grande occasione". Perché è Internet che fa la differenza, è la rete che potrà portare le "famiglie” a dotarsi di “televisori intelligenti" e soprattutto che permetterà loro di fruire di nuovi servizi televisivi interattivi. Sarà l'integrazione digitale nelle sue molteplici forme e canali a creare nuove opportunità e nuove prospettive per il mercato televisivo e il DTT solo uno degli spazi potenziali per sperimentare tale rapporto. pag. 8 CAPITOLO 2 GLI ARCHIVI AUDIOVISIVI 2.1 GLI ARCHIVI AUDIOVISIVI DIGITALI Gli archivi digitali sono straordinari strumenti per la conservazione ed il riordinamento dei dati. Uno dei motivi per cui i processi di archiviazione sembrano diventare, sempre più, di importanza vitale deriva dal fatto che ognuno di noi ha a che fare, ogni giorno, con una grande mole di informazioni. Inoltre con la diffusione crescente delle nuove tecnologie di accesso, della multimedialità via mobile internet, della Tv Digitale terrestre, via Internet, o via tradizionale satellitare, si è riscontrata la necessità di una semplificazione e automazione dei processi di gestione e fornitura dei contenuti audio, audiovideo, e multimediali in genere. Non si sa come gestire un enorme patrimonio appartenente a editori, produttori, emittenti televisive e radiofoniche: una grande quantità di archivi multimediali, collezioni di immagini, musica, audiovisivi, che necessitano di ambienti di sviluppo adatti alle nuove richieste da parte dei nuovi media digitali. Oltre a preservarli, è fondamentale anche la loro organizzazione e accessibilità perché poter ricercare e estrarre contenuti di archivio costi abbastanza poco da poter affrontare un discorso di commercio dei contenuti di archivio. L’organizzazione è importante anche per l’archiviazione dei nuovi contenuti che ogni giorno, in quantità enormi, vengono prodotti in tutto il mondo, basti pensare per esempio ai servizi web basati sulla fornitura di documenti o immagini, che devono essere comunque organizzati ed essere rintracciabili sulla rete. Dietro il Web, dietro i nuovi media, dietro i nuovi servizi di rete, sempre si nasconde un archivio e un sistema informativo che lo amministra e lo interfaccia con la rete. Gli archivi possono essere di tipo tradizionale (cartelle e cassetti etichettati) o digitali (quando il contenuto è disponibile sotto forma di bit), ma questi ultimi sono senza dubbio degli strumenti straordinari per la conservazione ed il riordinamento dei dati. In particolare nella rete internet si hanno innumerevoli risorse informative, ma spesso sono ingestibili. Fondamentale non è avere una quantità sterminata di informazioni e risorse, quanto strumenti efficaci per effettuare ricerche e scelte, ed è inoltre necessario dare un ordine ai dati secondo filo conduttore unico. Gli archivi indubbiamente sono di aiuto nella ricerca di un criterio di classificazione. Il corrispondente informatico di questo tipo di archivio è la base di dati, o data base: un insieme di informazioni memorizzate su supporti digitali, come l’hard disk di un personal computer. C’è un altra importante conseguenza legata all’archiviazione digitale. Con la digitalizzazione il prodotto originato su un pag. 9 qualsiasi supporto ‘fisico’ o media, dai libri, ai filmati amatoriali, alla musica e ai film cinematografici, alle fotografie, possono essere convertiti in un documento digitale e trattati come un insieme ordinato di bit, memorizzati, trasportati, codificati come bit, ovvero come una serie di 0 e di 1. Possiamo dunque disporre per tutti questi documenti ‘digitalizzati’ degli strumenti di ordinamento e gestione dei dati tipici del mondo informatico. In più con la digitalizzazione si garantisce una forte affidabilità nella conservazione dei dati. Le informazioni digitali acquisite infatti non perdono di qualità col tempo proprio perché scorrelate dal supporto. Un filmato digitalizzato manterrà per sempre la qualità con cui è stato originariamente acquisito dal supporto analogico originale e potrà essere agevolmente conservato grazie alla possibilità di effettuare copie perfette dell’informazione digitale. Rapidità di accesso, facilità nella consultazione, vasta documentazione disponibile in uno spazio ristretto sono quindi i vantaggi più cospicui dell’archiviazione digitale su quella tradizionale. A tutto ciò va aggiunto, naturalmente, l’uso multimediale in senso tecnico che questo tipo di catalogazione ci offre: la possibilità di rendere utilizzabile, dentro un unico supporto digitale, l’intera attività di un medium, dalle sue origini ad oggi. Un esempio è proprio quello che sta avvenendo per i programmi della televisione e della radio pubbliche in Italia, attraverso la realizzazione delle Teche Rai. A quasi mezzo secolo di attività la Rai Radio Televisione Italiana ha messo a punto un complesso sistema di archiviazione digitale di tutto il materiale radiofonico e televisivo prodotto sino ad oggi. Essa sta concentrando i propri sforzi sulla messa a punto di processi di archiviazione e gestione dei contenuti giornalmente prodotti nonché del vasto archivio storico esistente. Teche Rai, una nuova struttura creata ad hoc alcuni anni fa per gestire i processi di conservazione, catalogazione e digitalizzazione sia degli archivi che dei programmi quotidianamente prodotti, prevede di terminare la trasformazione in formato digitale di tutto il patrimonio video e audio dell'azienda entro pochi anni. Tra gli obiettivi delle Teche Rai c’è quello di favorire una produzione televisiva digitale più veloce ed economica (abbassamento dei costi e tempi di richiesta, consegna e lavorazione dei materiali audiovisivi dall’archivio originali). Il progetto di archiviazione digitale delle Teche Rai è molto ambizioso e in linea con le più importanti linee progettuali dei maggiori broadcaster in tutto il mondo. Con la razionalizzazione e digitalizzazione degli archivi la televisione pubblica italiana si Le innovazioni dell’archivio si ripercuotono direttamente sulla produzione dei programmi: la regia può connettersi in rete informatica direttamente con l'archivio pag. 10 digitale Teca Fast di Rai e richiedere le risorse, intese come sequenze video, necessarie alla produzione. Il cambiamento interessa dunque anche la confezione dei programmi stessi, e il montaggio. Attualmente con il Catalogo Multimediale di Teche Rai è possibile attingere a documenti testuali, foto digitalizzate, programmi radio e sequenze video codificate in MPEG-4 (un archivio sull’archivio o sistema di archivi di diversi media). I giornalisti e gli operatori possono visionare i video digitalizzati e archiviati in un database centrale interrogabile e direttamente accessibile attraverso le postazioni delle redazioni connesse alla intranet aziendale e cercare negli archivi tutti i video per i quali sono disponibili delle descrizioni o una qualche catalogazione, utilizzando un normale web browser. Una volta individuati e raccolti i video i giornalisti potranno richiedere una copia degli originali (per materiali su supporto audiovisivo tradizionale) o editarli e trasmetterli ad alta qualità televisiva attraverso i video server disponibili (per materiali presenti nella teca digitale, la Teca Fast). E sempre in Italia anche la società Mediaset ha investito per la convergenza tra tv e web. Con l’implementazione di un sistema di archiviazione e gestione dei video ,esso permette di indicizzare in un data base centrale i video trasmessi dalle testate Mediaset previa trasformazione degli stessi in un formato video MPEG4 che può essere facilmente diffuso attraverso Internet. L’esempio seguito è quello dell'americana CNN, impegnata da tempo nello sviluppo di nuovi processi per la gestione e l'archiviazione dei contenuti in formato digitale, utilizzando i sistemi di Virage. Un altro archivio audiovisivo di grande importanza, tornando in Italia, è quello dell’istituto LUCE, dove sono conservati numerosi cinegiornali e documentari, con materiale che va dagli albori della cinematografia fino agli anni ottanta della cronaca italiana e già da decenni è aperto a storici, registi e ricercatori nazionali e internazionali. La catalogazione digitale dell’archivio, con la parallela digitalizzazione dei supporti filmici, consente alla LUCE di dare un ordinamento alle centinaia di migliaia di notizie che formano la trama di un immenso tessuto di immagini. Il mercato dei contenuti per un archivio audiovisivo (RAI e LUCE ne sono solo due esempi) è naturalmente orientato alla vendita di diritti su materiali da destinare a diversi media, dai diritti di trasmissione televisiva, di packaging home video, di utilizzo in montaggi cinematografici, confezionamento di CD-ROM e applicazioni multimediali, diritti di trasmissione via satellite, pay tv, web. In generale l’industria dei media ha scoperto nel Web un formidabile strumento per gestire e condividere anche a distanza il proprio tesoro più prezioso - gli archivi di programmi, articoli, musiche, effetti speciali e così via (le mediateche pag. 11 insomma) - consentendo in tal modo un decentramento e uno snellimento notevole dei cicli di programmazione. 2.2 IL SISTEMA TECHE RAI Il patrimonio di archivio della televisione pubblica nazionale si trova distribuito su diverse strutture sul territorio nazionale. L’archivio principale è l’archivio Teca Master o Teca Centrale, che raccoglie nella sede di Roma una quantità impressionante di supporti audiovisivi di diverso tipo, dalle pellicole alle cassette video analogiche e digitali. L’archivio è di dimensioni ragguardevoli e viene gestito attraverso un sistema automatico che movimenta i contenitori di supporti archiviati con delle gru robotizzate. Nelle tre tabelle che seguono è possibile conoscere alcuni dati indicativi della consistenza del patrimonio storico della Rai, secondo quanto riportato in un documento divulgativo distribuito lo scorso ottobre da Rai Teche: Tabella 1 : CONSISTENZA PATRIMONIO TELEVISIVO Anno 2000 TRASMESSO STORICO TECA CENTRALE – CSS1 (1954/1997) 368.000 Ore ca. TECA NAZIONALE SPORT (C/O CPTV MI 1954/1997) TRASMESSO QUOTIDIANO PROGRAMMI, TELEVISIONE SPORT DAL 1998 TECHE DI SEDE REGIONALE 137.000 Ore ca. E oltre 52.000 Ore oltre 97.000 Ore ca. TOTALE oltre 654.000 Ore GREZZO GIRATO TG NAZIONALI 15.000 Ore ca. TG REGIONALI 40.000 Ore ca. pag. 12 Tabella 2: PATRIMONIO AREA RADIOFONICA NAZIONALE Anno 2000 ARCHIVIO NASTRI ESECUZIONI MUSICALI 30.000 Ore ca. GIORNALE RADIO 60.000 Ore ca. PROGRAMMI 200.000 Ore ca. 290.000 Ore ca. TOTALE ARCHIVI CARTACEI DISCHI D’ACQUISTO 900.000 Brani ca. COPIONI 50.000 Documenti ca. SPARTITI, PARTITURE, PARTI 120.000 Documenti ca. D’ORCHESTRA e LIBRETTI Tabella 3 : PATRIMONI DI BIBLIO-MEDIATECA RAI – Anno 2000 ALTRI MATERIALI LIBRI 60.000 unità ca. RIVISTE 500 RACCOLTE GIORNALI QUOTIDIANI 50 RACCOLTE PRODOTTI EDITORIALI SU CD- Oltre 150 PRODOTTI ROM FOTOTECA NAZIONALE ARCHIVIO RAI 300.000 Foto ARCHIVIO EX RADIOCORRIERE 900.000 Foto pag. 13 Oltre ad una serie di iniziative di recupero dei materiali di archivio, come il riversamento su supporti video digitali delle vecchie cassette deteriorate, parallelamente le Teche RAI perseguono l’obiettivo del completamento di un Catalogo Multimediale. Il Catalogo Multimediale è un sistema che offre funzionalità di ricerca sul palinsesto televisivo Rai, riportando documentazione testuale e anteprime di immagini, audio e video estratti in bassa qualità dai materiali televisivi stessi, ed è interfacciato opportunamente ad un sistema informatico che è in grado di effettuare richieste di materiali filmati di archivio alle diverse sedi connesse alla rete aziendale. Si tratta di un sistema accessibile on-line con un comune browser dall’interno della rete intranet RAI per fini produttivi, purtroppo solo in piccola parte i suoi contenuti sono resi accesibili al pubblico esterno, attraverso il sito internet delle teche. Ogni archivio delle Teche RAI presenta un sistema informativo interno per la gestione delle risorse, spesso si tratta di sistemi diversi che adottano modelli di descrizione dei materiali differenti. Con il Catalogo Multimediale e il sistema Octopus sempre di Rai è possibile effettuare ricerche dalla intranet Rai sui contenuti catalogati dai diversi archivi nazionali. Il Catalogo Multimediale, progettato dal Centro Ricerche Rai, è stato uno dei primi sistemi evoluti di catalogazione di materiale audiovisivo di un grande broadcaster in Europa, basato su un data base relazionale a oggetti, e in buona parte automatizzato (le operazioni di documentazione e di correzione dei tagli delle scene sono affidate a operatori esperti e società di documentazione). La Teca Fast, parte integrante del sistema Teche, è la videoteca digitale di Rai, inizialmente progettata per contenere materiale digitalizzato a media qualità, è stata poi elevata al rango di unica teca digitale per l’accesso “veloce” a risorse di archivio. Questa comprende una architettura di codifica automatica del materiale televisivo trasmesso in diretta dai tre canali nazionali di Rai, con una connessione ai banchi di messa in onda e al riferimento temporale dell’Istituto Galileo Ferraris, che insieme consentono di riconoscere automaticamente l’inizio di ogni programma trasmesso (escludendo le pubblicità) e codificando esattamente anche l’orario di trasmissione. La Teca Fast offre funzionalità di accesso on-line ai contenuti, tramite un’architettura client-server e reti ad alta capacità in fibra ottica per il trasporto delle sequenze codificate, e ha l'obiettivo di fornire il materiale in qualità utilizzabile per le hard news, per le produzioni tematiche e ad uso broadband, con funzioni anche di disaster recovery, di premontaggio, e obiettivi di evoluzione verso il montaggio virtuale dalla stessa consolle del ricercatore o montatore. Il formato utilizzato per la codifica e l’archiviazione di materiale audiovisivo nella Teca Fast è MPEG-2 a 10 Mbit/s. pag. 14 Il lavoro di recupero, documentazione e catalogazione multimediale di quello che è stato trasmesso in passato richiede ancora alcuni anni di lavoro, e quindi saranno importanti le strategie e le tecniche adottate per i processi intrapresi, importanti per consentire alla Rai di disporre integralmente del patrimonio audiovisivo che il servizio pubblico italiano ha trasmesso in televisione e in radio dalle sue origini. Questo patrimonio, la cui consistenza è indicata nelle tabelle sopra riportate, potrà essere reso consultabile con estrema facilità attraverso la rete con un comune browser con funzionalità multimediali, strumento sul quale dovrà essere possibile non solo effettuare ricerche testuali efficienti, ma anche ricerche basate sul contenuto mediale, oltre ad una estrema semplicità nell’accesso e ottenimento delle risorse dei diversi archivi di storico e trasmesso. Per facilitare il lavoro anche nelle fasi transitorie è stato realizzato un motore di ricerca integrato (Octopus) in grado di connettersi in contemporanea a tutti gli archivi testuali tradizionali aziendali. Il sistema consente anche di salvare le ricerche in un proprio profilo utente. Soffre ovviamente di un problema basilare: la diversità non solo dei sistemi informativi dei vari archivi, ma anche dei modelli di descrizione, catalogazione, identificazione delle numerose risorse. Figura 1 : IL SISTEMA TECHE RAI La riorganizzazione delle Teche e la creazione del Catalogo sono finalizzati a fornire a programmisti, autori, giornalisti strumenti sempre migliori per eliminare i lunghi tempi di visione del materiale sui videoregistratori o nelle salette dedicate pag. 15 e, attraverso le funzionalità messe a disposizione dalla Teca Fast della Divisione Produzione, è possibile richiedere le sequenze dei programmi di loro interesse. La valorizzazione dei materiali di teca si traduce in vantaggi sulla produzione: per i canali via etere l'uso dell'archivio già lo scorso anno era aumentato oltre del 10%. Altro aspetto è la valorizzazione dei materiali di teca per le offerte della Rai sui nuovi media: l'archivio oggi alimenta interi canali tematici satellitari. Per quanto riguarda l'offerta satellitare in chiaro vediamo alcuni esempi: l'archivio contribuisce per circa il 50 % a formare il palinsesto del canale satellitare RAI Educational, con l'offerta per le mediateche scolastiche attraverso il programma integrato con internet Mosaico e con le due intere giornate del sabato e della domenica, in cui viene offerto il meglio della programmazione di prosa. Anche per il canale sat Sport vengono preparate due ore settimanali di repertorio sportivo storico. La Rai ha la possibilità di far fruttare al meglio il suo archivio sul nuovo mercato digitale, grazie al suo grande patrimonio di contenuti in costante crescita è decisamente in una posizione di forza rispetto a tutti i suoi competitori, non soltanto italiani. Questo significa anche per l’azienda un grande impegno e la necessità di organizzare con tecniche sempre più all’avanguardia la gestione del complesso sistema teche. Di archivio e di documentazione all’interno dell’azienda non si è parlato per molti anni in passato, quando l'unico concetto in vigore era quello di magazzino, da utilizzare per le emergenze e da movimentare il meno possibile. Adesso la Rai si trova in condizioni di poter affermare il recupero quasi completo del suo materiale dopo alcuni anni di lavoro organizzativo e di ricerca. 2.2.1 IL CATALOGO MULTIMEDIALE Negli anni scorsi, è stato avviato un progetto interdipartimentale con lo scopo di digitalizzare e ricatalogare tutti i materiali posseduti e prodotti dalla RAI. Il progetto è stato suddiviso in diversi sotto-progetti, tra i quali lo sviluppo del sopra citato Catalogo Multimediale e di una teca televisiva digitale - la Teca Fast. I tempi di accesso all’archivio Centrale tradizionale e la procedura complessiva, dalla consultazione del catalogo per la documentazione fino alla consegna dei programma, vengono ora ridotti drasticamente con l’implementazione e uso del Catalogo Multimediale e della Teca Fast automatizzata. Il sistema è disponibile agli utenti interni come produttori, registi, giornalisti e, in generale, a tutti coloro che operano nel settore della produzione. Il catalogo è nato come strumento di ricerca che consenta agli utenti di individuare le sequenze audiovisive desiderate nell’immensa mole di materiali archiviati, in grado di scendere alla singola inquadratura del filmato, sempre nel tentativo di eliminare progressivamente la necessità di visionare i materiali su supporto video per la scelta dei brani. pag. 16 Per tale motivo, all’interno del catalogo non sono contenute solo informazioni di tipo testuale, ma anche le fotografie correlate ai programmi televisivi e i segmenti audio associati. La descrizione del Catalogo fa riferimento di solito alla documentazione del materiale televisivo ma può essere applicata anche, con piccole modifiche, alla radio e alle fotografie. Il catalogo e le teche devono inoltre essere mantenute “allineate” in modo che l’utente, dopo avere consultato il catalogo ed individuato i segmenti dei programmi di interesse, possa inviare i codici di identificazione relativi alla teca appropriata (“ordini di lavoro”) e ricevere una copia del materiale scelto eliminando completamente la necessità di visionare i materiali. Risulta tuttavia più facile ottenere l’allineamento tra il catalogo e le teche per quelle parti del catalogo che vengono realizzate utilizzando i materiali di documentazione già presenti nelle teche, nel qual caso l’identificazione del materiale e i riferimenti temporali corretti possono essere determinati immediatamente. Invece, nel caso di un inserimento parallelo nel catalogo e nelle teche di materiale registrato in precedenza, o di contributi trasmessi in diretta, l’allineamento tra il catalogo e le teche rappresenta un’operazione molto complessa. Il catalogo prevede la consultazione contemporanea da parte di numerosi utenti, attraverso interfacce web accessibili dalla rete intranet della RAI mediante un comune browser. L’accesso alle risorse di Teche (cioè alle funzionalità di richiesta on-line di materiali di Teca Fast e Teca Master) è ristretto a un numero limitato di persone che operano nell’ambiente della produzione, questo sia per motivi di tutela del materiale, che allo scopo di mantenere sotto controllo il carico della rete. I materiali selezionati possono essere consegnati all’utente richiedente in diversi formati, a seconda del collegamento disponibile: sotto forma di file (Teca Fast) o sotto forma di nastri video (Teca Master). In contrasto con la Teca Master, che contiene video in formato digitale e analogico memorizzati su supporti video convenzionali e non è gestita in modo completamente automatico, l’archivio Teca Fast Utilizza una tecnologia completamente digitale e automatizzata . Si è scelto un modo versatile e sicuro di memorizzazione e di gestione dei materiali audiovisivi, in grado di garantire per esempio l’indipendenza dai formati, difficilmente ottenibile con le apparecchiature audio-video dedicate. Nella Teca Fast il materiale è organizzato in file e memorizzato su due diversi livelli di memoria, Il primo livello è rappresentato dallo memorizzazione su hard disk accessibili on-line, mentre il secondo livello è costituito da memorie su nastro automatiche. Un processo di caching gestisce il trasferimento tra il primo e il secondo livello di memoria. pag. 17 L’utilizzazione di due livelli della memoria è stata suggerita in fase di progettazione del sistema dall’analisi costi-prestazioni. Infatti, a causa della grande quantità di materiale video, una memoria basata solamente su hard disk audiovideo risulterebbe estremamente costosa. In questo modo però i tempi di accesso del materiale immagazzinato su nastri possono risultare molto più lenti e non soddisfacenti in taluni casi, come in quello particolare di un grande numero di accessi contemporanei alle risorse archiviate. 2.2.2 L'ORGANIZZAZIONE DEL CATALOGO I compiti che attualmente deve svolgere il Catalogo Multimediale sono essenzialmente due: l’interazione coi documentatori, per svolgere il ruolo fondamentale di deposito degli oggetti multimediali e delle informazioni raccolte e generate durante le diverse fasi del processo di documentazione, e il supporto alle funzioni di ricerca, navigazione e visione veloce della documentazione e delle anteprime per arrivare fino all’ordine di consegna del prodotto finale all’utente. In conseguenza delle diverse limitazioni correlate ai due ruoli assegnati al catalogo, è stata scelta un’architettura basata su due sottosistemi accoppiati: • il primo sottosistema, detto Catalogo di Documentazione, si occupa dell’acquisizione dell’oggetto multimediale (estrazione dei cambi scena dal flusso televisivo trasmesso dai canali nazionali) e delle fase di documentazione e della convalida; • il secondo sottosistema, detto Catalogo delle Pubblicazioni, è il sistema visibile agli utenti, che riceve i documenti di palinsesto opportunamente descritti e convalidati, e offre le funzionalità di ricerca, navigazione e anteprima audio e immagini, con le sopramenzionate connessioni in rete alle teche per l’invio delle richieste di ordine o download del contenuto selezionato (funzione detta di grabber). 2.2.3 L’ACQUISIZIONE DEI DOCUMENTI MULTIMEDIALI L’acquisizione dei materiali multimediali di descrizione dei programmi, come le immagini di cambio-scena delle sequenze video o l’anteprima in formato audio compresso a bassa qualità, è un’operazione affidata ad apposite workstation biprocessore che, ricevendo come input un segnale video composito e un riferimento temporale, svolgono in tempo reale la digitalizzazione e compressione dell’audio, rivelazione delle modifiche delle inquadrature, estrazione di un fotogramma principale per ciascuna inquadratura, associazione del tempo di inizio e della durata dell’inquadratura a ogni fotogramma principale. Quando la stazione di acquisizione è alimentata con il segnale in diretta relativo a un canale di trasmissione tv, e non è disponibile in tale fase alcuna informazione sul programma, l’identificazione dei fotogrammi principali e dell’audio avviene sulla base dei loro tempi di acquisizione ed è, quindi, spesso necesaria pag. 18 un’elaborazione e una lavorazione ulteriore da parte di personale specializzato per le operazioni di suddivisione del flusso di immagini estratte dallo stream in opportuni item di programma. Il flusso di documenti di descrizione o item di programma viene poi inviato ad una serie di server connessi in rete ad alta velocità con le società di documentazione. Queste ultime si occupano della documentazione (inserimento delle informazioni sul titolo del programma riconosciuto, autori, partecipanti, contributori, e una serie di altre informazioni come riassunti testuali dei contenuti). Qui si trova un fattore critico del sistema, che richiederebbe l’implementazione di un modello di descrizione unico e standard, e di tesauri e dizionari per limitare la dispersione terminologica delle descrizioni. In effetti l’assenza di uno standard per la descrizione dei metadati audiovisivi rende ancora eterogenee e poco consistenti le operazioni di documentazione, che presentano gradi di approfondimento molto variabili a seconda del tipo di programma, delle informazioni in possesso di ogni operatore o società che realizza l’immissione dei dati e che rimanda indietro i documenti completati destinati ai server del Catalogo di Documentazione. Chi si occupa dello sviluppo del catalogo riconosce la necessità di studiare soluzioni per l’implementazione di strutture dati di descrizione conformi ad un modello standard, consistente e portabile che faccia da base ottimale per l’implementazione delle informazioni di descrizione, garantendone un valore anche maggiore in vista di possibili riutilizzi del materiale di catalogo per servizi di ricerca e produzione accessibili anche dall’esterno della rete aziendale, e inoltre che consenta l’interoperabilità con diversi sistemi di ricerca. In casi come questo si comprende immediatamente l’importanza dell’uso di strutture dati e linguaggi di descrizione puntualmente definiti, potenti nella ricchezza espressiva, ma anche stabili sufficientemente da garantire la completa comprensibilità e accessibilità anche a sistemi di ricerca esterni, pilotati da sistemi automatici o da esseri umani che effettuano ricerche. Mpeg-7 offre una buona parte delle soluzioni. In più standardizza e diffonde una serie di strumenti su cui basare applicazioni per la descrizione molto accurata degli oggetti multimediali. Secondo il punto di vista proposto da Mpeg-7, tutte le sequenze audiovisive possono essere scomposte e descritte ai minimi termini e in diverse modalità. Dal punto di vista delle caratteristiche di basso livello, come i segnali, le texture, i colori, le forme degli oggetti riconoscibili, il moto e le relazioni di questi oggetti, fino alle caratteristiche di più alto livello, come la descrizione di strutture semantiche, la descrizione strutturata dei concetti, delle azioni descritte in un pag. 19 contenuto multimediale, e molto altro, oltre naturalmente ad una lunga serie di strumenti per la descrizione basata sui metadati tradizionali testuali. Tali metadati sono appunto l'oggetto dello studio e della realizzazione del progetto descritto in questa tesi, e delineati nella parte riguardante i Multimedia Description Schemes (MDS) dell’Mpeg-7. Un’altra necessità è quella di stabilire (creandolo ex-novo od utilizzandone uno preesistente) l’uso di uno o più tesauri per l’utilizzo di terminologia e dizionari ad hoc per l’applicazione. Tornando al catalogo multimediale, come accennato il flusso continuo di oggetti multimediali acquisiti dal sistema di estrazione cambi-scena e anteprime è preventivamente elaborato prima del passaggio ai documentatori e al Catalogo di Documentazione, con lo scopo di creare le item di programma da inserire nel database. Attualmente, questa operazione è eseguita manualmente, supportata dalle informazioni riguardo ai tempi di inizio e di fine della trasmissione di ogni programma, caricati in modo automatico da un database amministrativo. La precisione disponibile nelle informazioni temporali, sufficiente per le operazioni amministrative, non è adeguata a una segmentazione completamente automatica dei programmi; per tale motivo, è necessaria la presenza di un operatore allo scopo di selezionare in modo preciso i punti di taglio. Questo passo è semplificato nella catena di digitalizzazione per materiali di repertorio in quanto esiste molto spesso una corrispondenza biunivoca tra i nastri e i programmi, anche se non sempre è cosi’ (spesso si incontrano casi di singoli supporti video di archivio che contengono più programmi differenti). 2.3 L'ARCHITETTURA DELLA TECA FAST RAI La Teca Fast Rai opera la digitalizzazione dei materiali audiovisi di Archivio e di materiali trasmessi dalle tre reti televisive nazionali RAI, costantemente. Gli utenti del sistema, in una prima fase solo operatori che accedono agli studi di montaggio attrezzati in azienda, possono usufruire di funzionalità di accesso in rete ad alta velocità alle risorse digitalizzate, con un servizio chiamato di VTR (Video Tape Recorder) virtuale. Tra i servizi che la Teca Fast fornisce vi è l’interfacciamento con i sistemi di descrizione del palinsesto dell’emittente (l’interfaccia di “Palinsesto” accessibile sul sito intranet di ricerca), e con i banchi di messa in onda per il recupero del segnale audiovideo e delle informazioni di identificazione del programma. Il sistema impiega inoltre dei video server per consentire l’accesso simultaneo di più utenti ad una stessa risorsa di archivio. Il formato utilizzato per la codifica digitale e l’archiviazione dei filmati è l’algoritmo di compressione MPEG2 ML@MP 4:2:2 a 10 Mbit/s, che consente di mantenere una qualità audiovisiva più che sufficiente per la produzione broadcast, pag. 20 insieme ad una considerevole riduzione dei costi di archiviazione (minor spazio occupato anche fisicamente dai supporti di memorizzazione e dagli archivi robotizzati che li gestiscono). Per garantire un allineamento con il materiale presente nell’archivio Teca Master analogico viene utilizzato il riferimento al time code assoluto riferito all’orologio nucleare dell’Istituto Galileo Ferraris di Torino, sia per quanto concerne i filmati di archivio sia per quelli generati dal sistema automatico che si occupa di digitalizzare i segnali di messa in onda in diretta sui canali nazionali. Con i servizi implementati nell’architettura dell’archivio Teca Fast l’utente connesso al sistema può visionare o riversare le sequenze audiovisive, con comandi tipici di un videoregistratore, con le tipiche funzionalità di visualizzazione del time code sincrono con il filmato, oltre alla visualizzazione delle sequenze video a schermo pieno, con audio di qualità elevata. Non è il sistema di Teca Fast a fornire direttamente funzionalità di editing in remoto, che spetta alla attrezzature di edizione nelle workstation di studio, nella fase successiva al riversamento delle risorse di teca. Il modello del sistema utilizzato è client-server e destinato alla fornitura del servizio alla rete interna aziendale di Rai, con possibili estensioni web. La distribuzione del video digitale compresso in alta qualità è infatti limitata al livello di area locale. Le tre sedi Rai di Roma sono connesse in fiber channel via TCP/IP e dispongono di propri apparati di codifica e decodifica in locale. Il sistema di acquisizione è composto da un video server collegato alla libreria (dei dati su cassette digitali) robotizzata, a un sistema di archiviazione gerarchico in architettura SAN (Storage Area Network) e dalle apparecchiature specializzate nella codifica dei canali audiovisivi nel formato prescelto MPEG2. La libreria dati a nastri digitali è gestita automaticamante da un server Sun, attraverso dei silos robotizzati, ognuno in grado di gestire circa 6.000 supporti a nastro digitale, con una dotazione di dieci drive di accesso ad alto bit rate (circa 10 MB/s). Le connessioni ad alta velocità per il trasporto del video codificato avviene tramite una dozzina di schede per il collegamento a una rete di codific e visualizzazione in modalità fiber channel switched. La codifica dei flussi audiovideo di sorgente viene eseguita da una o più apparecchiature Tektronix Profile, nel formato MPEG-2 4:2:2 previsto. Il compito del video server si limita al solo trasferimento dei dati da e verso i Tektronix Profile ai quali è demandata la funzione di encoding e decoding. pag. 21 2.3.1 OPERAZIONI DI INSERIMENTO DEI CONTENUTI Nel caso dell’operazione di inserimento di contenuti audiovisivi nell’archivio Teca Fast, lo schema di processo è quello esemplificato nella figura seguente, dove il modulo Tektronix Profile del video server viene alimentato dalla sorgente audio/video preesistente, effettua la codifica dei dati raccolti in formato MPEG 4:2:2 in opportuni file che vengono trasferiti attraverso la propria scheda fiber al modulo Silicon Graphics Origin 2000 del sistema di gestione DHSM (Dynamic Hierarchical Storage Management). Figura 2 : SISTEMA TECA FAST: SCHEMA CONCETTUALE DELLE OPERAZIONI DI INSERIMENTO Qui i files vengono trasmessi attraverso un’altra scheda fiber channel Genroco al sistema RAID, dal quale passa ai dispositivi di scrittura-lettura su nastro digitale per l’archiviazione. Quindi per la comunicazione viene impiegata la rete fiber channel, mentre nella fase finale di trasferimento dei file dal sistema RAID ai lettori a nastro viene impiegato un canale SCSI differenziale. pag. 22 2.3.2 OPERAZIONI DI RICHIESTA DEI CONTENUTI Nel caso della richiesta di play-out di risorse dell’archivio, il modulo Tektronix Profile del video server si va ad alimentare con i file conservati sul sistema RAID e prelevati dalla libreria a nastri robotizzata. Confrontando i dati di controllo presenti nelle tabelle del DBMS, il file richiesto viene trasmesso al Tektronix Profile , all’ingresso il file viene preso da un’altra scheda fiber channel e inviato tramite un cavo audio/video in uscita agli apparati di saletta e da qui eventualmente ad un’uscita su monitor PAL di sala. La comunicazione avviene su rete fiber channel, e come nel processo inverso di inserimento di contenuti in archivio, il trasferimento dei file dalla libreria a nastri robotizzata al sistema RAID avviene invece su canale SCSI differenziale. Il flusso di play-out è schematizzato nella figura seguente. Figura 3 : SISTEMA TECA FAST : SCHEMA CONCETTUALE OPERAZIONI DI RICHIESTA DEI CONTENUTI DALL’ARCHIVIO I supporti di memorizzazione utilizzati sono di tipo gerarchico-dinamico (DHSM): una libreria di nastri, un sistema di dischi, un sistema di database. L’archivio di tutti i file video è memorizzato nella libreria di nastri. I dischi sono invece utilizzati come supporto di memorizzazione dei file video più richiesti (Video Cache), per evitare di doverli ricaricare tutte le volte dal nastro con conseguente saturazione della banda di uscita della libreria di nastri, compensando in tal modo il ritardo dovuto ai lunghi tempi di accesso dei nastri. pag. 23 Il sistema di dischi RAID alloca per la componente di codifica e paly-out dischi in grado di contenere fino a 72 GB, corrispondenti a circa 12 ore effettive di registrazione video. A livello del software, il sistema centrale è ripartito su quattro ambienti distinti in comunicazione tra loro attraverso un software demone definito come “Agente” che ha il controllo delle comunicazioni con i Tektronix Profile. L’Agente intercetta e reinstrada tutte le richieste che pervengono alla Teca Fast. Le richieste provenienti dagli utenti attraverso l’interfaccia al DBMS e il Query Manager vengono reinstradate verso un Device Manager per il prelievo dei dati dalla libreria dati robotizzata ovvero al Profile Manager per il trasferimento dei dati richiesti. Viceversa le richieste provenienti dal Profile Manager, tipicamente di ingestion vengono reinstradate al DHSM per il trasferimento su disco e da qui al Device Manager per l’archiviazione su nastro. Il Device Manager, a sua volta, è composto dal Tape Manager che contiene il vero e proprio driver che pilota il lettore, TMFBASE. La gestione del sistema RAID e del traffico I/O su relativi moduli, dischi e partizioni è affidata al DHSM (Dynamic Hierarchical Storage Manager) al cui interno è contenuta l’applicazione che genera il processo Main da cui si origina il software demone Agente. Sia l’inserimento di audiovisivo che il play-out video per l’utente vengono gestiti da un software realizzato appositamente. Il riversamento del materiale avviene in maniera automatica con codifica in tempo reale. 2.3.3 IL DATABASE DELLA TECA FAST Il database che si interfaccia col sistema di acquisizione e codifica della Teca Fast è un database SQL relazionale puro e contiene informazioni sui contenuti della Teca Fast e sullo stato delle attività (vale a dire come memoria temporanea del sistema). Quest’ultima funzione permette di evitare il ricorso a protocolli di comunicazione per la sincronizzazione e la gestione di tutti i computer riservando banda. I vari elementi del sistema agiscono quindi come macchine “disaccoppiate” con funzionalità che possono svolgersi in modo indipendente dagli eventi che si verificano al di fuori del proprio campo di azione. La gestione di questo DBMS è affidata anch’essa al DHSM. Sui client della Teca Veloce è installato un software realizzato appositamente che consente di visionare e riversare sequenze video e di ascoltare l’audio associato, impiegando le principali funzioni disponibili per un VTR (play, stop/still, fast forward/rewind, ecc.) comparabili a quelli ottenibili dall’impiego di strumenti tradizionali (visualizzazione time code, video a schermo pieno, a 25 frame/sec. garantiti, audio stereo di qualità elevata - MPEG Layer II - , etc.). pag. 24 Il software installato sulle postazioni client prevede anche un’applicazione per la manipolazione del clip su Tektronix Profile con la possibilità di impiegare un modulo di controllo per postazioni dotate di centralina video e uno per postazioni prive di centralina video. L’interrogazione dell’archivio e la richiesta di informazioni sullo stato delle richieste avviene attraverso un’interfaccia grafica, e il software client si interfaccia con il DBMS relazionale, un Microsoft SQL Server 7. Per effettuare richieste di contenuti audiovisivi archiviati, il client deve inviare al DBMS solamente poche informazioni riguardanti, per quanto riguarda i contenuti codificati dai tre canali televisivi nazionali di Rai, la data di trasmissione sulla rete, l’identificatore della rete di emittenza, l’orario di inizio trasmissione della sequanza di interesse (un istante qualsiasi della giornata di trasmissione, con la precisione del secondo) e l’orario di fine della sequenza da estrarre. Sono queste le informazioni che forniscono all’atto della richiesta di materiale in Teca Fast anche i sistemi di ricerca accessibili con Octopus e Catalogo Multimediale. Il prototipo di Repository di Metadati Mpeg-7 richiesto nell’ambito di questo lavoro di tesi, deve essere anch’esso in grado di effettuare richieste a Teca Fast fornendo la quadrupletta di dati sopra indicata al sistema DBMS SQL Server. 2.4 I METADATI I metadati favoriscono la ricerca e il reperimento delle risorse, informative o materiali nel senso più stretto, ecco perché stanno assumendo un'importanza critica, quasi paragonabile a quella del contenuto che descrivono o che permettono di gestire. Ogni tipo di contenuto o collezione ( che sia un libro o una biblioteca, un archivio di applicazioni software di pubblico dominio, i miliardi di pagine web memorizzate nei web server dislocati su tutta la rete Internet, gli stock alimentari di un grande magazzino) ha la necessità di essere catalogata per poterla ricercare. In particolare i metadati favoriscono lo scambio di dati e risorse, necessarie sia per il commercio tradizionale e che per quello elettronico. Proprio il commercio elettronico dipende maggiormente rispetto al commercio tradizionale dal modo con cui le cose vengono identificate e dai termini in cui queste vengono descritte (i cosidetti metadati o dati sui dati). I metadati devono fornire una grande affidabilità, fino ad oggi pressoché assente, per l'identificazione e descrizione di risorse e diritti d'uso, visto che con la crescita dello scambio di informazioni nell'e-commerce si verifica un crescente interesse per la promozione e standardizzazione di diversi modelli di descrizione basati sui metadati. pag. 25 Molto spesso la risorsa in gioco (un film, un'opera multimediale, un software) presenta una certa complessità, e con essa diventa sempre più difficile identificare i diritti d'autore (ad esempio se in un film vi sono degli spezzoni presi da un archivio audiovisivo, o se in un programma tv vengono utilizzate sequenze video di diverse fonti e proprietari). Per esempio una singola opera audiovisiva digitale può essere divisa in centinaia o addirittura migliaia di componenti separati.Ognuna di queste è identificata da una diversa proprietà intellettuale, che potrebbe avere dei diritti d’uso e contenere informazioni riguardanti l'autore, i contributori, l'organizzazione che si occupa della distribuzione, i collegamenti ad uno o più archivi. Possono esservi foto, audio registrato, filmati, grafica sintetica, testo e applicazioni software, alcune magari presenti solo in parte o in forma modificata. La modularità delle informazioni contenute negli schemi di descrizione è una delle caratteristiche che sono dunque importanti per un insieme di metadati utili a descrivere risorse di archivio. Si individuano delle entità di base per la descrizione di un oggetto che contengono informazioni specifiche su di esso (ad esempio le informazioni di creazione e produzione, quelle di pubblicazione). Ognuna di queste necessita della propria sintassi e di un insieme di identificatori per ciascuna proprietà. I metadati nell'ambiente digitale possono quindi essere visti come un insieme di moduli informativi, magari anche prodotti in posti diversi e per scopi diversi, che devono anche essere facilmente riutilizzabili e connessi in qualche modo con il contenuto cui si riferiscono. 2.4.1 INTEROPERABILITÀ DEI METADATI L'interoperabilità è ritenuta un'altra caratteristica fondamentale per dei set di metadati, e consente di utilizzare le informazioni di descrizione create in diversi contesti e di scambiarle nei modi il più possibile automatizzati. I metadati (dati di tutti i tipi relativi alle creazioni, ai ruoli che le creano e utilizzano, e alle transazioni che supportano tali utilizzi).devono poter interoperare liberamente anche in questi casi per facilitare lo scambio di informazioni e la loro salvaguardia. Per esempio chi inserisce i metadati riguardanti la proprietà intellettuale (il responsabile della documentazione di un filmato di archivio per esempio) potrebbe volere la certezza che l'accuratezza e la veridicità delle informazioni allegate (spesso con costi ingenti) sopravvivano intatte attraverso varie negoziazioni. Un altro problema riscontrato è quello dell'identità semantica che non si risole con strumenti nati nell'ambito del web, come il metalinguaggio XML (eXtensible Markup Language) e RDF (Resource Description Framework) e i loro derivati, pag. 26 ma solo con lo sviluppo di identificatori unici e l'impiego massiccio e standardizzato di metadati, si potranno superare le barriere al commercio dei contenuti. Sistemi per l'identificazione univoca delle risorse sono in via di sviluppo da parte di alcuni degli organismi come il gruppo Mpeg. 2.4.2 I METADATI AUDIOVISIVI Rispetto al settore bibliografico, lo sviluppo di dizionari di metadati e schemi di metadati per i supporti audiovisivi è un'ambito applicativo relativamente giovane, nel quale non si è raggiunto uno standard formale. Sono già stati sviluppati degli schemi standard specializzati e in certi casi questi sono già operativi, ma sono modelli non comunemente accettati nella totalità del settore audiovisivo. E' necessario individuare due aspetti correlati per poter definire uno schema di metadati per un sistema di gestione di media nell'ambito della produzione. In primo luogo il sistema deve soddisfare i requisiti specifici dell'organizzazione operante nel campo audiovisivo per cui il sistema stesso dovrà operare; in secondo luogo gli stessi protocolli e gli stessi standard andrebbero modellati tenendosi il più vicino possibile agli schemi internazionali e agli standard per poter aumentare il grado di interoperabilità e facilitare lo scambio di documenti audiovisivi scala nazionale ed internazionale. Alcune aziende hanno provato ad imporre il loro standard, ma senza successo. Vedremo adesso alcuni esempi di metadati sviluppati da diverse compagnie che operano nel settore audiovisivo. Per la produzione e la distribuzione di prodotti digitali televisivi e radio il dizionario dei metadati SMPTE e le funzioni guida fornite per l'ingegnerizzazione di sistemi sono un possibile punto di riferimento. Per la categoria di metadati descrittivi un importante punto di riferimento sono anche le funzioni di Dublin Core, di cui se ne parlerà in seguito. Lo Standard Media Exchange Framework (SMEF) della BBC viene a volte utilizzato con modello di dati di riferimento per gli ambienti della produzione broadcast e per i sistemi di gestione dei media. Forse con le attività del gruppo MPEG-7, oramai standard internazionale, e che sono state oggetto di approfondito studio per la parte riguardante i metadati nell’ambito di questo lavoro, si è giunti allo sviluppo di schemi per il contenuto audiovisivo in ambiente professionale. L’uso di strutture dati Mpeg-7 per metadati audiovisivi è ampiamente illustrato nel capitolo 4. pag. 27 Attualmente non vi è uno scambio di informazioni centralizzato, sistematico e efficiente tra i vari progetti e comunità locali, internazionali e nazionali che riguardano e contribuiscono allo sviluppo di schemi per i metadati audiovisivi. I comitati di standardizzazione lavorano lentamente e i broadcaster e i produttori dall'altro lato - a causa del rapido avanzare delle tecnologie - hanno necessità di mettere qualcosa in atto e non possono attendere ogni nuova versione degli standard. Nasce così la difficoltà di tenere di pari passo il lavoro che viene svolto dai vari organismi di standardizzazione, i progetti pilota e le altre iniziative sul piano del tempo, dei risultati e degli scopi. Un altro problema è la comunicazione tra le varie comunità che contribuiscono alla creazione degli schemi, spesso inadeguata, sia all'interno, a livello di una stessa azienda, che a livello internazionale. Problemi di comunicazione possono essere causati dalle diverse professionalità in gioco (degli ambiti tecnico, archivista, di produzione), i diversi background dei contributori che necessitano di integrare i requisiti per arrivare ad uno schema interoperabile. Altre problematiche più specifiche sono facilmente riconoscibili: • Soddisfare le richieste dell'utenza attraverso i vari settori della produzione audiovisiva. • Standardizzare i processi di produzione, distribuzione e archiviazione di audiovisivi e le procedure di lavorazione. • Standardizzare le strutture dati e i modelli dei dati, le entità e gli attributi. • Standardizzare i campi di tipo e i valori ammessi. • Sviluppare identificatori unici globalmente riconosciuti, per il contenuto audiovisivo da collegare al materiale immagazzinato con la relativa documentazione nel processo di produzione audiovisiva. • Rendere gli schemi interoperabili compatibili con piu’ lingue. • Comprendere ed integrare le varie categorie e tipi di metadati nell'ambito dell'audiovisivo, inclusi i metadati riguardanti il processo di registrazione, i metadati tecnici, i metadati relativi alla produzione e le categorie descrittive. • Integrare gli archivi e i cataloghi preesistenti nel settore digitale. pag. 28 2.4.3 NUOVE ESIGENZE PER I METADATI AUDIOVISIVI Ogni ambiente di produzione audiovisiva spesso possiede delle procedure e requisiti particolari e questi devono essere inclusi negli schemi e nei modelli di dati dell'azienda. Oltre a questo, le realtà possono differire nelle modalità con cui avviene lo scambio di informazioni dal punto di vista dei diritti di copyright e dello sfruttamento commerciale. In altri casi gli schemi ad uso interno contengono informazioni dettagliate sulle procedure aziendali interne e i processi di lavorazione e possono quindi risultare non condivisibili liberamente in altri ambienti. E' per ragioni come questa che iniziative come EBU P/Meta (di European Broadcaster Union), che lavorano per trovare una connessione ai requisiti, schemi e modelli di vari broadcaster con gli standard internazionali, sono di importanza fondamentale. Per poter promuovere l'interoperabilità da subito, sarebbe davvero utile stabilire piattaforme professionali in cui i broadcaster e gli altri produttori di audiovisivi possano acquisire informazioni dettagliate ed obiettive su quale lavoro è già stato svolto e quali schemi sono disponibili come modello di riferimento. Attualmente gran parte dei progetti pilota che si stanno portando avanti all'interno delle emittenti includono lo sviluppo e l’uso di schemi di metadati. Spinti dalla rapida crescita della produzione digitale di materiali audiovisivi e dalla mancanza di schemi e standard comuni utilizzabili, gran parte delle compagnie televisive stanno sviluppando i propri schemi di metadati. Durante questo processo spesso queste partono dalla formulazione di specifiche locali e definiscono i processi e flussi di dati del proprio caso particolare. Successivamente devono cercare delle estensioni per poter armonizzare e mappare i propri modelli proprietari con gli standard esistenti o in via di rilascio. Nuovi broadcaster commerciali che non posseggono archivi o cataloghi pregressi, attualmente tendono a posizionarsi in prima linea nello sviluppo dei sistemi, lavorando spesso in ambienti completamente digitali, e utilizzando modelli proprietari e dizionari di metadati. Tra broadcaster, produttori di audiovisivi, e altri soggetti nel campo degli audiovisivi cresce rapidamente la consapevolezza che l'interoperabilità tra strumenti di descrizione aziendali di questo e di altri settori sia un requisito importante. Si è registrato più volte il fallimento nell'adozione degli standard internazionali nella prima fase di sviluppo dei sistemi, ad indicare l'effettiva inadeguatezza e inefficienza dei sistemi proprietari sviluppati localmente. pag. 29 Adattare successivamente i sistemi sviluppati in ambito proprietario risulta un impegno intensivo e costoso e la graduale implementazione degli standard in casi come questo tende spesso a seguire più la tecnologia che le necessità dell'utente dei sistemi. L’obiettivo del nuovo standard MPEG-7 ("Multimedia Content Description Interface") è proprio quello di specificare un set standard di descrittori e schemi di descrizione (e un linguaggio per crearne di nuovi o estenderli) per descrivere il contenuto delle informazioni audiovisive, e multimediali in genere. Dalla letteratura sullo standard e sulle base richieste maturate nell’ambito delle applicazioni illustrate, si sono riconosciute alcune delle specifiche necessarie per uno schema di metadata per il video: 1- La Definizione di strutture gerarchiche: lo schema deve ad esempio consentire la definizione di una struttura in cui il documento “descrizione dell’audiovisivo”, o “descrizione di una collezione audiovisiva” siano posizionati ad un livello alto. Questi a loro volta possono contenere sequenze, ognuna delle quali può essere costituita da scene, che contengono shots (riprese), a loro volta costituite da frames, costituiti da oggetti o attori. In MPEG-7 si può scendere ad una descrizione di livello davvero basso, con degli strumenti di descrizione per segmenti spazio temporali individuati all’interno delle sequenze o delle singole immagini, e delle caratteristiche dei segnali audio e video. 2- Ogni livello (o classe) nella gerarchia deve poter possedere solo degli attributi specifici. 3- Deve essere possibile specificare sottoclassi con l’ereditarietà degli attributi e degli elementi dalle classi superiori nelle inferiori. Inoltre le sottoclassi devono essere in grado di avere i loro attributi ed elementi addizionali. Questo consente un efficiente riutilizzo e customizzazione degli schemi di documento. 4- Deve essere possibile limitare i valori degli attributi a certi tipi di dati. I tipi di dati supportati devono includere tipi di dati primitivi come gli schemi, i tipi di dato enumerato, i vocabolari controllati, i tipi di files, i localizzatori di risorsa come le URI e i tipi di dato complessi (istogrammi del colore, vettori 3D, grafi, valori RGB, etc..) così come tipi di dato e schemi alternativi per particolari attributi. 5- Deve essere rappresentabile la cardinalità degli attributi, ad esempio se un attributo può avere zero, uno o più valori. 6- Lo schema deve essere in grado di supportare la specifica di caratteristiche Spazio-Temporali come l’inizio e la fine di segmenti video e la loro durata. In maniera simile deve essere in grado di supportare pag. 30 rappresentazioni spaziali, come delle regioni di un’immagine o il moto lungo una traiettoria. 7- La possibilità di rappresentare relazioni di tipo spaziale, temporale e concettuale. Relazioni spaziali come la vicinanza di due oggetti e temporali come segmenti in sequenza o parallelo. 8- Una delle specifiche che si richiedono è che le descrizioni e lo schema stesso siano comprensibili alla lettura da parte di un essere umano. 9- Non da ultimo la disponibilità di tecnologie di supporto come parsers (in grado di validare le descrizioni inserite), databases e linguaggi di query. Questi requisiti sono stati utilizzati nella definizione dei requisiti dello standard MPEG-7, e nello specifico della seconda parte, la MPEG-7 DDL Description Definition Language che definisce il linguaggio per la definizione ed estensione degli schemi di descrizione e descrittori, basato essenzialmente sull’ XML Schema versione 1.0 di W3C da cui si discosta esclusivamente per la definizione di alcuni tipi di dato aggiuntivi per la rappresentazione del tempo e della durata. pag. 31 CAPITOLO 3 IL METALINGUAGGIO XML 3.1 LE ORIGINI DEL LINGUAGGIO XML Affrontiamo ora le tecnologie alla base della diffusione del web e dei contenuti multimediali in rete, partendo dal nuovo standard per lo scambio di informazioni sul quale si basa anche la specifica di Mpeg-7. Si entra nel vasto dominio di applicazione XML, l’eXtensible Markup language che ha preso origine dall’SGML (Standard Generalized Markup Language). Parlando di XML si deve affrontare anche la sua Document Type Definition (DTD) che è quasi identica alle SGML DTD. Lo standard SGML, pubblicato nel 1986, definisce un metalinguaggio per un formato di documenti portabile e indipendente dalla piattaforma con l’enfasi posta sui documenti. L’XML, rilasciato nel febbraio del 1998, è stato progettato per ovviare alle carenze di HTML, viene utilizzato molto spesso come lingua franca nell’ambiente Internet, come un formato comune per scambiare e immagazzinare non solo documenti ma ogni tipo di contenuto. Nel mercato del commercio elettronico in particolare, XML non ha a che fare – come SGML – principalmente con documenti destinati alla lettura da parte di esseri umani: i documenti XML devono essere leggibili e comprensibili da parte dei sistemi informatici oltre che dall’uomo. Nella gestione elettronica della catena del valore i documenti XML che sono trasmessi da diversi partners commerciali sono generati da un sistema informatico e interpretati da un altro sistema informatico diverso dal primo. Nei mercati digitali aperti, si prevede che i cataloghi e la lista dei prezzi debbano essere presentati in una forma tale che li renda accessibili alla ricerca da parte degli agenti software. Quello che XML deve gestire in questi ambiti è una combinazione di un punto di vista del “documento” insieme ad un punto di vista dei “dati”, che è proprio dei database tradizionali. I documenti XML hanno una sintassi semplice. Seguendo poche semplici regole sull’uso dei tag è possibile costruire documenti ben-formati, e viene richiesto ad un processore XML di processare un documento ben-formato (segnalando e rifiutando ogni documento che non lo sia). Grazie alla sua estensibilità, l’XML consente l’aggiunta di etichette – i tag – al documento che descrive il contenuto degli elementi del documento stesso. Questo consente ad esempio ai motori di ricerca di effettuare ricerche su specifici pag. 32 elementi, come per esempio il titolo di un libro, la descrizione del libro,l’autore del libro etc. Al contrario, i tag in HTML descrivono le modalità di presentazione di un elemento: se è grassetto o corsivo, se deve avere il carattere di testa,etc. In XML un elemento che contiene le informazioni sul autore può ad esempio essere etichettato con i tag <Autore></Autore>. Questa viene chiamata etichettatura semantica poiché i tag e i nomi degli attributi descrivono il significato di ogni elemento e attributo, che sono comprensibili anche ad un lettore umano. Per un generico processore XML il nome di un tag non ha alcun significato. Un tag è solo un tag, ed un elemento di testo è solo un elemento di testo. Questo perché un generico processore XML non ha conoscenza della semantica del documento. Paradossalmente, i processori HTML come ad esempio i browser web, conoscono la semantica dei tag HTML molto bene: essi devono ad esempio sapere che il testo racchiuso tra i tag <b> </b> deve essere visualizzato in grassetto. Attualmente l’HTML (Hyper Text Markup Language) ha la diffusione maggiore rispetto a qualunque altro formato di codifica documenti per il grande numero di documenti prodotti. Il World Wide Web Consortium (W3C) ha infatti rilasciato come raccomandazione successiva le specifiche di XHTML 1.0 (eXtensible HyperText Markup Language), che si potrebbe definire come un ponte tra il mondo HTML e quello di XML: XHTML non è altro se non un’applicazione di XML, definita attraverso una XML DTD (Document Type Definition) e un XML namespace. XHTML 1.0 ripropone le funzionalità di HTML in un modello XML. Allo stesso tempo XHTML costituisce l’inizio di un processo di convergenza per i documenti sul web. Si prevede infatti di combinare XHTML e WML (Wireless Markup Language) in un unico standard consistente. WML è il formato dei documenti utilizzati nel protocollo WAP per gli apparati cellulari, e anche quest’ultimo, come XHTML, si basa su XML. Questo significa che tutte le tecnologie ed applicazioni XML attualmente in sviluppo, come Browsers, Parsers, software di editing, API (Application Program Interface), server Database, si rivelano utili a supportare anche XHTML e WAP. La tecnologia XML sarà dunque una tecnologia chiave della prossima generazione delle applicazioni web, su reti mobili e fisse. Diversamente da quanto previsto da HTML, per XML la presentazione del contenuto non è l’unica applicazione (come pure nel caso della raccomandazione XHTML). Inoltre ci sono diversi standard relativi all’XML che si stanno imponendo, e l’XML è la tecnologia che ben si sposa con la ricerca di soluzioni pag. 33 efficaci per l’interoperabilità di sistemi per l’immagazzinamento e la gestione dei dati. Sono presenti standard come XSL per la visualizzazione dei contenuti, XPATH per la navigazione delle strutture dati, XPOINTER per la creazione di link evoluti, o XML Schema per la definizione di tipi di documenti, e rappresentano solo alcuni degli strumenti creati sulla base di XML e che ne fanno un metalinguaggio potente. 3.2 LE TECNOLOGIE XML In questa parte verranno introdotti i concetti principali riguardanti le tecnologie XML e la loro applicazione alle Basi di Dati. Le tradizionali pagine HTML sono solitamente memorizzate come in file “piani”, cosa che non è certo adeguata alle potenzialità di XML. L’accesso a parti di documento (tramite gli elementi), le ricerche su caratteristiche qualificate, la composizione dinamica da documenti originali interconnessi, tutte queste operazioni richiedono la potenza elaborativa di un DBMS (Data Base Management System). Per aiutare nella gestione di documenti XML vengono introdotte delle tecnologie, ognuna delle quali permette di approfondire un aspetto sull’elaborazione dei documenti XML. 3.2.1 DOCUMENT TYPE DEFINITION Un metodo molto comune per dichiarare la semantica degli oggetti di dati ad una generica applicazione informatica è quello di definire dei vincoli sui dati. (In SQL, per esempio, i vincoli sono definiti attraverso le regole di integrità e le limitazioni. Questo consente ad un processore SQL di rifiutare le operazioni di aggiornamento non valide. In un certo senso il processore SQL comprende la semantica dei dati.) In XML la possibilità di inserire dei vincoli nei documenti è minima. Un documento XML senza un Document Type Definition (DTD) non ha alcun vincolo. In questo caso il processore XML verifica solamente la correttezza sintattica: il documento si dice quindi “ben-formato”. Se viene fornito un DTD con il documento, allora il processore XML può verificare se il documento aderisce alla struttura definita nella DTD. Se la verifica è positiva il documento si dice “Valido”. Le DTD consentono la definizione di alcuni vincoli strutturali. Per esempio esse possono stabilire che un certo elemento o attributo devono esistere nel documento. Si può dare un vincolo ad esempio per un elemento di Autore, stabilendo che esso possa contenere solo dati di tipo carattere. pag. 34 Si può inoltre stabilire che abbia un attributo “nato_il” : <Autore nato_il=’1704-05-19’> Dante Alighieri </prezzo> Per la maggior parte delle applicazioni tuttavia questi vincoli non sono sufficienti. Le DTD infatti riconoscono solo i dati di tipo carattere generici (PCDATA), le enumerazioni di valori (potrebbe ad esempio essere possibile enumerare tutte le possibili valute di denaro), e possono anche essere usati alcuni tipi di dati specifici di XML (ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS, NOTATION) . Questa è un’eredità del passato SGML con il suo approccio orientato al documento. Si possono riassumere alcuni dei problemi che sorgono quando tutti gli elementi vengono considerati come testo. Per esempio: • Il numero a virgola mobile “7.3e-6” sarebbe riconosciuto come maggiore di “1.6e+19”. • Il numero negativo “-3” sarebbe considerato più piccolo di “-6”. • Due elementi numerici con lo stesso valore ma diversa formattazione non verrebbero considerati uguali. Per esempio il numero di telefono (011) 732878 sarebbe considerato diverso da 011-732 878. • Il confronto dei valori delle date e date aritmetiche è praticamente impossibile. • Se si incontra un elemento <prezzo> 150,000 </prezzo> non è possibile sapere come interpretarlo. In un contesto internazionale sarebbe interpretato come “CentoCinquantaMila”, ma in un contesto europeo dovremmo leggerlo come “CentoCinquanta”. Vi sono severe restrizioni, soprattutto nell’ambito del commercio elettronico, per cui gran parte dei dati contiene numeri, date, e altri dati con un tipo particolare. L’introduzione dei tipi di dato in XML risulta quindi di grande aiuto alla creazione ed interpretazione dei dati per il business. Questo serve a potenziare anche l’usabilità di un linguaggio di query. Ma oltre alla mancanza dei tipi di dato la DTD soffre di altre mancanze. Essa infatti non fornisce un supporto adeguato per la modularizzazione e il riuso degli schemi di documento. Le stesse definizioni devono essere inserite ogni volta, cosa che non rende tanto difficile la creazione di schemi con DTD quanto piuttosto il loro mantenimento. pag. 35 Infine le DTD non sono documenti XML ma seguono una sintassi diversa. Quindi tutti gli strumenti software utilizzati per i documenti XML non possono essere impiegati per creare, editare, effettuare il parsing o l’interpretazione delle DTD. 3.2.2 XML SCHEMA Tutte le motivazioni esposte sulle carenze delle DTD hanno spinto allo sviluppo di un nuovo metodo di definizione per gli schemi XML. Negli ultimi tre anni sono stati presentati e messi in discussione alcuni linguaggi per la definizione di schemi per XML. Come risultato si è giunti al rilascio dell’ XML Schema pubblicato dal W3C. Adesso XML Schema è definitivo e considerato stabile (è stata da poco rilasciata la raccomandazione dal W3C) ma anche il Working Draft, rilasciato nell’aprile del 2000 era sufficientemente stabile. Analizzando il punto di vista adottato da XML Schema per i tipi di dato si può osservare che il sistema dei tipi di XML schema si basa sul concetto duale dello Spazio dei Valori e dello Spazio Lessicale: uno Spazio dei Valori è una collezione astratta di valori permessi per i tipi di dato. Ogni valore nello spazio dei valori può avere diverse rappresentazioni testuali nello spazio lessicale. La rappresentazione lessicale è ciò che appare nel documento XML. La definizione dei tipi di dato definisce appunto la corrispondenza tra i due spazi di valori e lessicale. Ogni tipo di dato è definito da un certo numero di sfaccettature: • Le caratteristiche fondamentali definiscono le proprietà di base di ogni tipo di dato. Sono “facet” fondamentali ad esempio Equal, Order, Bounds, Cardinality, Numeric. • Caratteristiche di vincolo o non fondamentali sono lenght, minLenght, maxLenght, pattern, enumeration, maxInclusive, maxExclusive, minInclusive, minExclusive, precision, scale, encoding, duration, period. • XML Schema definisce anche un ricco insieme di tipi di dato predefiniti. Alcuni di questi tipi di dato sono primitive, ad esempio non fanno riferimento alla definizione di altri tipi di dato. Altri sono derivati da preesistenti tipi primitivi o da altri tipi di dato derivati. • I tipi di dato primitivi predefiniti comprendono i tipi già noti nelle DTD (come ID, IDREF, etc. per gli attributi) ma introducono anche nuovi tipi di dato sia per gli attributi che per gli elementi: string, boolean, float, double, decimal, timeDuration, recurringDuration, binary, uriReference, QName. • I tipi di dato predefiniti di tipo derivato sono language, Name, NCName, integer, nonPositiveInteger, negativeInteger, long, int, short, byte, nonNegativeInteger, unsignedLong, unsignedInt, unsignedShort, pag. 36 unsignedByte, positiveInteger, timeInstant, time, timePeriod, date, month, year, century, recurringDate, recurringDay ma includono anche tipi di dato presi dalle DTD (IDREFS, NMTOKEN, etc. per gli attributi) Figura 4 : LA GERARCHIA DEI TIPI IN XML SCHEMA I tipi di dato definiti dagli utenti consentono ai progettisti di schemi di creare tipi di dato personalizzati. Questi possono essere definiti in diversi modi: Per enumerazione: per esempio è possibile definire un tipo di dato “colorePerNome” enumerando i possibili valori: rosso, verde, blu, etc. <simpleType name=”colorePerNome” base=”string”> <enumeration value=”rosso”/> <enumeration value=”verde”/> <enumeration value=”blu”/> <!-- tutti gli altri colori a seguire .. --> </simpleType> pag. 37 Si noti che una enumerazione si basa sempre sul vincolo di un altro tipo di dato preesistente, in questo caso “string”. Per derivazione di un tipo di dato da un tipo di dato predefinito e da un altro tipo di dato definito dall’utente. Metodi possibili per la derivazione sono la “restrizione” (consiste nell’aggiungere altri vincoli alle caratteristiche di un tipo) e la “lista” (consiste nel costruire una lista da diversi valori atomici). Per esempio è possibile definire un tipo di dato coloreRgb derivandolo dal tipo di dato predefinito unsignedShort. <simpleType derivedBy=”list”/> name=”unsignedShortList” base=”unsignedShort” <simpleType name=”coloreRgb” base=”unsignedShortList”> <lenght value=”3”/> </simpleType> Questa definizione permette di utilizzare la rappresentazione del colore nella forma di terne: per esempio 0 255 0. In questo modo i tipi di dato definiti dall’utente sono sempre derivati da altri tipi di dati. La loro definizione deve far riferimento ad un tipo predefinito o ad un atro tipo definito dall’utente. I tipi di dato complesso sono specificati come definizioni di elemento. Queste mettono in relazione le definizioni di elementi come date nelle DTD, ma introducono vincoli aggiuntivi. I tipi di dato complessi possono essere definiti anche per: Estensione. In questo caso elementi o attributi addizionali vengono aggiunti ad un elemento base. Nell’esempio riportato il tipo di dato base è “decimal”. Il tipo di dato complesso “prezzo” è costruito aggiungendo un attributo “valuta” del tipo “string”. La definizione di sopra permette l’uso di elementi XML come <prezzo valuta=’ITL’>10000</prezzo> Restrizione. In questo caso si costruiscono tipi complessi aggiungendo vincoli ad una definizione di elemento preesistente. Per esempio è possibile limitare il numero delle occorrenze di un elemento o specificare un tipo per un sottoelemento dove non sono stati fissati precedentemente dei vincoli. La definizione di tipi di dato complessi in XML Schema include le possibilità che sono messe a disposizione con il modello dei gruppi conosciuto nei DTD. Gli pag. 38 elementi possono essere definiti come: Empty. L’elemento non deve avere contenuto, ma può avere degli attributi. Gruppi “choice” e “sequence”. L’elemento può contenere solamente una o più occorrenze di un elemento o di un modello di gruppo. Un modello di gruppo consiste di un tipo di composizione (sequence, choice, all) che combina le definizioni di altri elementi. "Mixed" consente la definizione di elementi che contengono sia dati a caratteri che elementi figli. Gli elementi “mixed” di XML Schema differiscono dagli elementi mixed del DTD in quanto essi definiscono un ordine ed un numero degli elementi figli. I tipi di dato definiti con XML Schema possono essere utilizzati nelle definizioni di elementi ed attributi di uno schema di documento XML. Ma è anche possibile usare i tipi di dati nei documenti XML in maniera più dinamica e mirata: è possibile far riferimento a definizioni di tipi di dato direttamente dall’interno di un tag di elemento. Questo consente di utilizzare i tipi di dato anche per i documenti XML per i quali non sono stati definiti schemi o DTD. Questo viene fatto specificando un attributo “xsi:type” (il prefisso xsi identifica il namespace o spazio dei nomi per le istanze di XML Schema) nel tag dell’elemento e fornendo come valore la URL che si riferisce alla definizione dei tipi: <?xml version="1.0"?> <ordine xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' dataOrdine="2000-04-07"> <inviareA xsi:type='http://www.grtn.it/schemaordine/indirizzo'> <nome>Davide Spadoni</nome> <via>via tomino 79</via> <citta>Roma</citta> <CAP>00142</CAP> </inviareA> </ordine> pag. 39 In questo esempio nel documento non viene specificato uno schema. Vi è invece un riferimento alla definizione di tipo complesso “indirizzo” dato per l’elemento “inviareA”. Questo consente ai processori XML di verificare l’elemento con la definizione del tipo “indirizzo”. 3.2.3 XPATH A causa della struttura annidata dei documenti XML e per il fatto che XML consente la ripetizione degli elementi, il linguaggio XPath deve fornire dei mezzi per specificare le relazioni gerarchiche, le relazioni di sequenza, e le posizioni. XPath ha anche degli specificatori di asse, come parent::, ancestor::, child::, descendant::, following::, namespace::, etc. La sintassi di XPath permette di definire le parti di un documento XML. Tuttavia quella che viene impiegata maggiormente nelle query è la sintassi abbreviata, che è possibile vedere nella tabella successiva. Alcuni operatori di XPath (esempi tratti dal documento XML precedente) (prima parte) Espressione Semantica di Query Esempio del /libro Risultato /Q1 Nodo radice documento //Q1 Un elemento //edizione arbitrario del documento Tutti gli elementi <edizione> in ogni documento Q1/Q2 Relazione figlio Tutti gli elementi <edizione> che sono figli diretti del nodo radice <libro> Q1//Q2 Relazione antenato/discendent e /libro//isbn Tutti gli elementi <isbn> che sono discendenti del nodo radice <libro> @ Attributo @anno Tutti gli attributi anno= . Nodo corrente .//@ANNO Tutti gli attributi anno che sono discendenti del nodo corrente .. Nodo genitore ..//@ANNO Tutti gli attributi anno che sono discendenti del nodo genitore padre- /libro/edizione Tutti i documenti con il nodo radice <libro> pag. 40 Oltre agli operatori XPath supporta una serie di funzioni, per verificare delle condizioni, per tradurre e confrontare il contenuto. Poiché Xpath riconosce solo quattro tipi di dato (insieme di nodi o node-set, stringa, numerico, booleano) ci sono funzioni diverse per ognuno di questi tipi di dato. Poiché ogni contenuto in un documento XML è costituito di caratteri, i confronti lavorano basandosi ‘di default’ sulle stringhe. Per esempio l’espressione “24” < “7” risulta vera secondo questa logica, perchè è il valore della stringa ad essere confrontato e non i numeri. Per confrontare i nodi sulla base dei numeri è necessario convertirli precedentemente ai valori numerici: number(“24”) < number(“7”) risulta allora falso. Il confronto tra stringhe si basa su Unicode. Questo vuol dire anche che i confronti tra stringhe sono sempre case sensitive. Tutti questi operatori e funzioni possono essere utilizzati per formulare i criteri di selezione specificati in filtri. I filtri ([]) sono paragonabili alla clausola WHERE in SQL. Per esempio: /libro[contains(titolo, ‘Zero’)]//isbn Qui il criterio di selezione tra le parentesi quadre è applicato al nodo radice (libro). Questo fa si che Xpath restituisca gli elementi <isbn> di tutti i documenti <libro> che hanno un elemento figlio diretto <titolo> che contiene la sottostringa ‘Zero’. L’espressione del filtro tra le parentesi quadre è essa stessa una espressione Xpath. In modo simile ad SQL, Xpath consente l’annidamento delle espressioni di query. Ogni espressione Xpath è applicata riferendosi al contesto attuale come definito dalla posizione dell’espressione del filtro. Nell’esempio di sopra l’espressione filtro viene applicata al nodo <libro>, quindi tutte le espressioni Xpath contenute nelle parentesi quadre sono relative al nodo <libro>. Segue una tabella con alcuni esempi di uso delle funzioni di Xpath. Gran parte dei linguaggi di query utilizzati oggi per XML fanno riferimento in qualche modo ad XPath. Poiché XPath non è in grado di caratterizzare i costrutti tipici che si trovano nei linguaggi di query dei database, le implementazioni pratiche del linguaggio di query estendono le funzionalità di Xpath. Ad esempio nel DBMS XML utilizzato in questa realizzazione viene fornito il supporto ad una versione di XQL che utilizza gran parte della sintassi base di XPath. pag. 41 Infine è opportuno introdurre i tipi di dato. Come è stato detto tutti i dati in XML sono sotto forma di stringhe. La Document Type Definition (DTD) non permette la definizione di tipi di elementi o attributi. Alcune funzioni di Xpath (con esempi tratti dal documento XML precedente) Espressione Query di Semantica Esempio Risultato last() /libro/edizione[1, last()] Numero dell’ultimo nodo nel contesto corrente position () Posizione del nodo /libro/edizione[position() Terza edizione di un corrente nel = 3] libro contesto del genitore count (insieme- Numero dei nodi Count(/libro/edizione) di-nodi) nell’insieme di nodi Prima ed ultima edizione di un libro Numero delle edizioni not (oggetto) i nodi Tutti i nodi del /libro/edizione[not(@ann Tutti <edizione> esclusi contesto attuale o=‘1978’)] quelli del 1978 escludi quelli contenuti nell’operando true(), false() Valori booleani /libro/edizione[false()] vero e falso number (oggetto) Converte al valore Number(@anno) > 1997 numerico Restituisce una lista di nodi vuota Vero se l’attributo anno contiene un numero maggiore di 1997 Sum (insieme-di- Somma i valori Sum(/libro//prezzo) div Calcola il prezzo nodi) numerici di un count(/libro//prezzo) medio di tutti i libri insieme di nodi pag. 42 3.2.4 INTERROGAZIONI IN XML In questa parte si introducono i metodi di interrogazione (o Query) per le sorgenti di dati in XML. Come sopra anche in questo caso verrà analizzato un semplice esempio. I documenti XML che verranno analizzati negli esempi successivi sono i seguenti: <?XML version="1.0"?> <!DOCTYPE librocat SYSTEM "http://www.libri.it/librocat.dtd"> <libro> <titolo> Doppio Sogno </titolo> <autore> Arthur Schnitzler </autore> <edizione anno=1998> <casaeditrice> Adelphi </casaeditrice> <isbn>0-0703-2809-76</isbn> <prezzo valuta=EUR>6.5</prezzo> </edizione> <edizione anno=1977> <caseditrice> Morgante </casaeditrice> <isbn>0-41-524089-4</isbn> <prezzo valuta=ITL>1376</prezzo> </edizione> </libro> Di solito quando si parla di “query” si fa riferimento ad SQL. SQL viene utilizzato come abbiamo visto per accedere alle tabelle o a combinazioni di esse in database relazionali. Ma con XML la situazione è molto diversa. Un documento XML combina già di per se diversi elementi informativi in un’unica entità fisica. Mentre in SQL l’enfasi si pone sulla capacità di combinare dati da differenti tabelle normalizzate in un unico risultato, in XML l’enfasi si pone nell’estrazione dei singoli elementi in un documento. Esiste uno standard in grado di fare proprio questo. XPath è la raccomandazione attuale del W3C e viene usata in molti altri standard come XSL, Xpointer, Xlink, pag. 43 etc., come la tecnologia base per l’indirizzamento di singoli elementi all’interno di un documento. Una semplice query effettuata secondo lo standard Xpath è ad esempio la seguente: /libro/edizione/casaeditrice che indirizza tutti gli elementi casaeditrice contenuti negli elementi edizione nel documento libro. Si può notare la familiarità dell’espressione con il tradizionale path dei file utilizzato in UNIX o nella specifica delle URL (Uniform Resource Locator). L’unica differenza è che qui si indirizza un elemento in un documento e non un file in una struttura a directory o una pagina web in un sito web. Le somiglianze sintattiche di un’espressione Xpath con un file path o una URL suggeriscono che Xpath può essere utilizzato non solo per l’estrazione degli elementi in un documento ma anche essere ben impiegata per effettuare ricerche di documenti in un server nativo XML. Nei paragrafi successivi si vedrà che un intero sito web o il contenuto di un server XML potrebbe essere visto come un singolo documento XML. Una sorgente di dati può essere vista come un grande documento contenente tutti gli altri documenti come suoi elementi. Basti ricordare che una directory per un sito web costituisce una struttura ad albero, così come ogni documento presenta anch’esso una struttura ad albero. La ricerca di documenti da un sito può essere espressa in linguaggio simile selezionando gli elementi da un documento. Si ha dunque una visione consistente dei dati dal livello del sito web fino al livello del documento. Questo rende Xpath un linguaggio di query eccellente. Un esempio: www......it/serverxml/libreria/libro/edizione/casaeditrice In questo caso “www.....it” specifica un dominio web, “serverxml” il server db che gestisce i documenti XML nativi, “libreria”è una collezione di documenti XML, e i restanti elementi del Path sono quelli visti precedentemente. Se si possiede una cospicua libreria di libri, il risultato di una query del genere è sostanzialmente il seguente: prendi gli elementi casaeditrice di tutti i libri immagazzinati nella libreria. Alcune caratteristiche del linguaggio XPath vengono utilizzate proprio per effettuare query. Una implementazione di XPath è supportata dall’interfaccia pag. 44 DOM di Microsoft, da XSL e da altri standard vicini a XML, ed è utilizzata nel prototipo, come vedremo in seguito. 3.2.5 VISUALIZZAZIONE DI DOCUMENTI XML Si è introdotto già il concetto secondo il quale in XML il contenuto informativo è separato dalla sua rappresentazione. Progettato per includere le funzionalità dei CSS (Cascading Stile Sheets) e DSSSL (Document Style Semantic & Specification Language), l’XSL (eXtensible Stylesheet Language) ha come compito specifico quello di essere il linguaggio di formattazione per XML. Formattare le informazioni è un compito fondamentale. Nel trasferire certe informazioni ad un’altra persona attraverso un documento (a anche attraverso la voce), abbiamo bisogno di formattare le nostre informazioni in un qualche modo che dipende dal mezzo che intendiamo impiegare. Nel fare ciò rendiamo più comprensibile e leggibile il materiale al destinatario. L’informazione ricevuta differisce quasi sempre dall’informazione originale in quanto il canale informativo (il supporto) potrebbe non essere adatto a trasferire tutte le sfumature dell’informazione originale, o perchè le conoscenze di base di mittente e destinatario sono diverse. Il processo di comunicazione è in realtà molto più complesso: prima di inviare informazione, il mittente applica una trasformazione ai dati per poterli rendere maggiormente comprensibili al destinatario. Questa trasformazione dipende dal modello che lui possiede del destinatario. Basti pensare al modo con cui generalmente un adulto si rivolge ad un bambino piccolo, ben diverso dal modo con cui un politico si rivolge ai giornalisti. Quindi la formattazione e l’abbellimento sono processi applicati non all’informazione originale ma ad una sua forma trasformata. In questo si riconosce il modello di processamento dell’XSL: XSL = transformation + formatting Questi compiti vengono svolti separatamente in XSL. Sono tre i documenti rilasciati dal W3C per XSL, i primi due riguardano la trasformazione e l’ultimo la formattazione: • Xpath definisce le modalità di selezione degli elementi in un documento XML. • XSLT definisce la modalità di trasformazione dell’albero XML sorgente in un albero richiesto. pag. 45 • XSL FO definisce la parte restante, cioè gli strumenti di formattazione. In XSLT gli elementi di controllo principali sono le regole di modello, dei “template”. Per comprendere come funzionano queste regole, è utile conoscere come lavora un sistema esperto basato su regole: XSLT è un linguaggio dichiarativo. Ogni regola di modello consta di un elemento di intestazione e di un corpo. L’elemento intestazione (match=) specifica una espressione Xpath per il confronto con un modello. Quando un processore XSL elabora un documento, esso parte dal nodo radice della struttura ad albero del documento. Esso verifica che le regole del modello siano verificate o meno dal nodo radice. Se si riconoscono più regole verificate dal nodo, viene selezionata la regola che combacia meglio: I Formatting Objects (il cui prefisso è “fo:” ) vengono trascritti sul canale di uscita. Insieme con le decorazioni questi vengono elaborati dal processore di formattazione. Le istruzioni XSL (il cui prefisso è “xsl:” ) vengono eseguite. In particolare, l’istruzione “xsl:apply-templates” ripete il processo di confronto per la lista di nodi corrente (o per una lista di nodi specificata esplicitamente). Altre istruzioni “xsl:” forniscono strutture di controllo addizionali come esecuzione condizionale o loop. L’istruzione “xsl:value-of” scrive il contenuto del nodo corrente (o di un nodo esplicitamente specificato) sull’uscita. Listato di esempio <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0" <xsl:template match="/"> <!—intestazione della regola template, percorso per il nodo radice --> <HTML> <!-- qui inizia l’output generato --> <BODY> <TABLE BORDER="2" CELLPADDING="6" STYLE="margin-left:1.5cm;"> <TR> <TH>Anno</TH> <TH>Mese</TH> pag. 46 <TH>Giorno</TH> </TR> <!—segue il loop sui prodotti attraverso dettaglioProdotto --> <xsl:for-each select="Data"> <TR> <TD STYLE="letter-spacing:8pt; font-size:24pt;"> <xsl:value-of select="/Data/Anno/"/> </TD> <!-- inserisce l'anno --> <TD><xsl:value-of select="mese"/> </TD> <!-- inserisce il mese--> <TD><I><xsl:value-of select="giorno"/></I> </TD> <!-- inserisce il numero del giorno --> </TR> < /xsl:for-each> <!-- termina il loop --> </TABLE> </BODY> </HTML> </xsl:template> </xsl:stylesheet> Questo esempio trasforma un elenco di date in una tabella HTML. Il foglio di stile contiene solamente una singola regola di template che si confronta con il nodo radice. Viene usato una dichiarazione for-each per effettuare il vaglio di tutte le date con un loop. Poichè l’uscita è in HTML, gli fo , formatting objects, non sono usati ma viene applicata della formattazione CSS. XSLT consente la parametrizzazione delle regole di template con le variabili. Questo permette il riutilizzo delle regole esistenti per diversi scopi , fornendo differenti parametri. Possono essere definite delle variabili a livello di regola o a livello globale. pag. 47 L’uso delle variabili in XSLT dimostra anche le limitazioni dell’XSLT stesso: in effetti non si tratta di un linguaggio di programmazione “general purpose”. Il modello elaborativo di XSLT è privo di stato e i valori sono assegnati ad una variabile quando questa variabile viene definita (variabile di default), oppure quando un parametro viene passato ad una regola di template. In particolare, non è presente in XSLT un operatore di assegnazione. Questo rende il modello di elaborazione semplice, ma non permette di utilizzare le variabili per effettuare conteggi. Formatting Objects Questa parte della specifica è la più ampia in termini di documentazione, ma è anche quella con la struttura più semplice. XSL definisce più di cinquanta formatting object. Questi descrivono gli elementi dell’uscita formattata e sono organizzati in gruppi: • Pagination e Layout Formatting Objects: Questi oggetti definiscono i master di pagina e le sequenze di pagine. Sono possibili più master di pagina (per la prima pagina, l’ultima, pagine pari e dispari, pagine vuote). Si ricordi che XSL non è usato solo per formattare l’uscita su di uno schermo ma anche per formati di uscita su stampa. • Block Formatting Objects: Questi sono oggetti che sono utilizzati al di fuori dei blocchi di oggetti e che includono il blocco oggetto stesso, ma anche grafica e regole. I block object tipicamente contengono linee di testo, simili ad un paragrafo di un word processor, ma sono molto più versatili. • Inline Formatting Objects: Questi sono oggetti inseriti all’interno dei block object. Essi includono testo, grafica o regole. Vengono applicate delle parole di intestazione a tutti i f.o. inline. • List Formatting Objects: Sono oggetti usati per costruire liste. • Table Formatting Objects: Oggetti usati per costruire tabelle. • Link e Multi Formatting Objects: Questi oggetti comprendono il semplice oggetto “link” (simile ad un link HTML) ed un insieme di oggetti “multi” che consentono al contenuto di venire nascosto o visualizzato, di cambiarne le proprietà, etc. a seconda dell’interazione con l’utente. Per esempio potrebbe essere possibile ampliare la piccola stampa (solo) di un contratto di licenza quando l’utente clicca con il puntatore del mouse sull’icona di una lente di ingrandimento, o cliccare su un nodo per far collassare un braccio dell’albero, nascondere una tabella dei contenuti quando lo richiede l’utente, o leggere un paragrafo ad alta voce con un sintetizzatore quando l’utente seleziona la funzione di lettura audio. pag. 48 • Out-of-Line Formatting Objects: Questi sono oggetti che non appaiono nella posizione dove sono definiti ma nella posizione subito successiva. Questi comprendono gli oggetti flottanti e le note a piè di pagina. Nel confronto con il preesistente standard CSS, si vede che XSL fornisce una gestione migliore e specializzata per i documenti XML. Tra le nuove caratteristiche vi sono la paginazione, il supporto per l’internazionalizzazione, e le trasformazioni dipendenti dal contenuto (come nell’esempio sopra riportato). Con HTML e CSS tali funzionalità richiedono l’uso di JavaScript o di pagine web dinamicamente generate dal server. Il supporto dell’XSL da parte dei browser è tuttavia ancora poco diffuso. Sulla versione 5 di Internet Explorer di Microsoft viene implementata una versione working draft di XSLT, mentre la raccomandazione finale XSLT 1.0 viene implementata nella versione più recente IE5.5. Quest’implementazione si basa su modulo MSXSL.DLL che rende effetivamente XSL un servizio del sistema operativo. Qui non sono supportati tuttavia i Formatting Objects. Ci vorranno alcuni anni perché la maggior parte dei browser web installati siano in grado di elaborare XSL. Questo rende XSL di interesse soprattutto dal lato server per i prossimi anni. I fogli di stile XSLT saranno utilizzati per convertire le pagine XML ad HTML prima di inviarle al client. Il codice HTML così generato può contenere elementi di formattazione CSS ulteriori per fornire un output più sofisticato. 3.3 IL MODELLO DEI DATI XML Abbiamo precedentemente discusso le caratteristiche del linguaggio Xpath, ora è necessario chiarire alcuni aspetti del modello dei dati XML. Le seguenti caratteristiche differenziano il modello dei dati XML dal modello dei dati relazionale: • Metadati come le etichette (tags) e i nomi degli attributi sono contenuti nei documenti. • I documenti XML hanno una struttura ad albero. • Gli elementi dei documenti possono essere annidati e contenere degli attributi. • Sono permessi più elementi con stessi tag in uno stesso documento. • Sono rilevanti la sequenza e la posizione. pag. 49 Diversamente da SQL, un linguaggio di query per XML deve essere dunque in grado di navigare la gerarchia degli elementi e indirizzare gli elementi tramite la posizione e la sequenza. Nell’accedere ad un documento, XPath guarda al documento come ad una struttura ad albero fatta di nodi. Sul livello concettuale un nodo può essere l’entità stessa del documento, ogni elemento o attributo, una processing instruction (PI) o un commento. Il documento stesso costituisce il nodo radice, che contiene una lista di nodi che sono figli diretti del nodo radice. Questi nodi possono a loro volta contenere una lista di nodi e così via. Questo approccio unificante alla struttura dei documenti XML rende XPath semplice e potente. Figura 5 : STRUTTURA DELL’ESEMPIO DEL <LIBRO>. Nella figura riferite alla struttura del "LIBRO" è stato evidenziato <edizione> con un segno + per indicare l’occorrenza di più edizioni. Gli attributi sono presentati come figli degli elementi che li possiedono e sono identificati dal carattere @. Sul livello fisico XPath non prescrive un formato fisso per i nodi. Un nodo può essere rappresentato da testo XML, da un sottoalbero DOM (Document Object Model), da alcune strutture dati che descrivono delle sottoregioni nel documento, etc. 3.3.1 IL MODELLO XML E IL MODELLO RELAZIONALE Il modello dei dati relazionale si basa sulle tabelle. Le tabelle contengono i dati relazionati, anche chiamati “Relazioni”, ed è proprio per questo che i DBMS che si basano su questa teoria si indicano con l’acronimo RDBMS (Relational DBMS). pag. 50 Le relazioni rappresentano le entità che si ritiene essere interessanti nel database. Ogni istanza dell'entità troverà posto in una tupla della relazione, mentre gli attributi della relazione rappresenteranno le proprietà dell'entità. Per strutturare un Database relazionale sono necessarie delle operazioni di normalizzazione delle tabelle, ad esempio per la rimozione di alcune anomalie. Ma la normalizzazione è un processo oneroso dal punto di vista della progettazione e manutenzione dello schema della base di dati, ed inoltre introduce dei problemi di integrità dei dati. Dopo la normalizzazione il RDBMS non ha informazioni riguardo la struttura dei complessi oggetti informativi originali e non può controllare la loro integrità strutturale. Gli RDBMS (Relational DataBase Management System) risolvono questo problema reintroducendo informazioni strutturali nella forma di vincoli di integrità e limitatori, che consentono al RDBMS di controllare l’integrità delle relazioni chiave mentre vengono effettuate operazioni di aggiornamento. Comunque, questo introduce un “overhead” cioè aumento della complessità elaborativa. La modalità con cui XML memorizza le informazioni non richiede uno schema perché tutti gli elementi informativi hanno un loro nome. In XML i dati sono modellati come in un albero ordinato ed etichettato. I nodi dell’albero sono gli elementi informativi, i dati, ma possono anche consistere di attributi, processing information (PI), o commenti. Gli oggetti XML sono auto descrittivi: essi contengono tutte le informazioni necessarie per le interrogazioni e per la navigazione nei singoli elementi. In tal modo XML richiede una quantità di spazio molto maggiore rispetto al modello relazionale, ma è possibile effettuare una compressione. L’uso dei “tags” comporta però grandi vantaggi quando si deve aggiungere un elemento. Per un RDBMS, al contrario, si rende necessario modificare lo schema relazionale, operazione che nei casi più complessi comporta una onerosa reiterazione dei passi di normalizzazione e il progetto di un nuovo database può rendersi necessario. In XML, quindi, non c’è bisogno della normalizzazione. Di fatto un oggetto XML potrebbe da solo contenere l’intero database, ma comunque è consigliabile solo per database di dimensioni molto piccole. Nel database di un’impresa è tuttavia necessario spezzare un insieme molto ampio di dati in diversi oggetti più piccoli e connetterli con dei link. Un link è un riferimento diretto, mentre un JOIN relazionale deve richiedere il confronto del contenuto di una chiave esterna e di una chiave primaria. Dunque XML consente agli elementi ridondanti di essere isolati e di sostituire le loro occorrenze con dei link. La forza di XML tuttavia sta nella capacità di immagazzinare in modo flessibile le informazioni complesse e strutturate. Si può comprendere il dilemma con cui ci si pag. 51 deve confrontare oggi nella scelta e utilizzo di un RDBMS per documenti di tipo XML.: un intero documento XML può essere memorizzato in un unico oggetto, rendendo in tal caso impossibile indicizzare i singoli elementi. Oppure il documento può essere decomposto in singoli elementi che sono indicizzati separatamente. Le operazioni di retrieval dei dati devono quindi leggere tutti gli elementi separatamente e riunirli insieme, con un’operazione costosa in termini prestazionali. L’RDBMS deve dunque ricostruire il “puzzle” dei dati ogni volta. Inoltre le regole di integrità e l’imposizione di limiti sono necessari per conservare l’integrità dell’oggetto. Un altro problema è il “locking”: durante un processo di aggiornamento un documento deve essere bloccato (locked) per evitare che altri utenti tentino l’accesso ad esso. In un RDBMS in cui un documento (come ad esempio un documento XML) è spezzato in numerosi pezzi, ogni singolo pezzo deve essere bloccato separatamente. Ecco perché diverse aziende di software hanno proposto la commercializzazione di server nativi XML. Un server nativo XML (ovvero XDBMS) può offrire operazioni di ricerca note all’ambiente degli RDBMS. Un XDBMS offre una maggiore flessibilità in quanto è possibile inserire nuovi tags XML “al volo” – nessun aggiornamento dello schema è richiesto. Allo stesso tempo il server può mantenere un livello di performance pari ad una lettura per ogni documento (o anche meno grazie a tecniche di caching). I Benchmarks dimostrano che i servers XML nativi possono superare gli RDBMS nelle prestazioni di un ordine di grandezza, ovviamente nel caso in cui vengano utilizzati per la memorizzazione di complessi oggetti XML. 3.3.2 DIFFERENZE TRA DBMS XML NATIVO E TRADIZIONALE L’introduzione e l’integrazione delle tecnologie XML rappresentano uno dei maggiori passi avanti nella gestione e nello scambio dei dati attraverso ambienti internet-intranet. Per questi aspetti, già analizzati nei capitoli precedenti, prendiamo in esame solo quelli applicativi necessari per l’implementazione del prototipo. In passato XML è stato spesso incompreso e etichettato come semplice successore di HTML. In realtà questo linguaggio è destinato a permanere (sotto forma ad esempio di XHTML) nella parte di formattazione e visualizzazione di documenti web. Mentre XML si occupa della gestione dei dati relativi alla pubblicazione (pubblicazione via web, wap, set-top-box, terminali di vario tipo o anche formati di stampa etc.). XML ha grandi vantaggi immediati nella gestione e scambio di risorse di archivio, con particolare riferimento alla rappresentazione di ogni tipo di struttura dati. Nel seguito si riportano alcune considerazioni sull’uso di una piattaforma per la gestione dei metadati basata su XML nativo. • XML è un metalinguaggio che può definire e descrivere ogni tipo di informazione ed è per definizione estensibile. Utenti singoli, gruppi di lavoro, e organismi di standardizzazione utilizzano XML come un tipo di grammatica indipendente dalla piattaforma per definire linguaggi basati sui marcatori. pag. 52 • Si basa sul testo ed è facile da leggere: i documenti possono essere compresi sia dalle applicazioni che da utenti umani. Sempre per definizione il contenuto di documenti XML è etichettato con i tag, che specificano quale tipo di informazione è contenuta all’interno di un elemento del documento. Con l'utilizzo di questi tag i documenti XML possono essere compresi anche se non si dispone dell’applicazione che li ha generati. • E’ ideale per i documenti contenenti informazioni strutturate gerarchicamente. Gli elementi dei documenti XML possono essere annidati per costruire strutture informative complesse. In linea di principio è possibile convertire documenti XML con una struttura complessa in modo da utilizzare DBMS a tecnologia relazionale, ma si tratta di un’operazione tutt’altro che ottimale. Per esempio, mappare elementi XML con il contenuto di tabelle relazionali è un processo molto spesso lento e che richiede un grande sforzo di normalizzazione e ottimizzazione. Figura 6 : CONFRONTO TRA UN DBMS RELAZIONALE E UN DBMS XML NATIVO PER LA GESTIONE DI DATI DESCRITTI IN LINGUAGGIO XML • XML è indipendente dalla modalità di presentazione: separa il contenuto del documento dalla sua visualizzazione. I fogli di stile definiscono come gli elementi del documento devono essere formattati per l’uscita verso una varietà di terminali o supporti di visualizzazione. Gli standard associati ad XML consentono, come abbiamo visto nei capitoli precedenti, la personalizzazione di un dato elemento informativo senza la necessità di modificare il contenuto del documento originale. • XML è multilingua, basato sulla codifica UNICODE. La capacità di rappresentare caratteri in quasi tutti i linguaggi mondiali – inclusi il Cinese e il Giapponese – facilita enormemente lo scambio di dati e documenti in un comunità globale. • L’uso di un linguaggio standard come XML favorisce l’integrazione degli aspetti di business abbattendo gran parte delle barriere al commercio elettronico: Le attuali soluzioni di Electronic Data Interchange (EDI) sono pag. 53 difficili e costose da implementare e mantenere. Con l’uso di tecnologie XML ci si avvantaggia della flessibilità nella definizione di vocabolari specifici per settori industriali, e diviene anche possibile per le piccole e medie imprese accedere alle reti EDI utilizzando standard semplici ed economici basati su Internet. • E’ un metalinguaggio aperto e lo standard viene supportato da tutti i grandi produttori software: compagnie come IBM, Microsoft, Oracle, Sun Microsystem, e la stessa Software AG che è stata una delle prime a realizzare un sistema con un engine XML nativo. Tutte queste aziende hanno pesantemente investito sull’XML e sono attive nel contribuire al processo di standardizzazione. Questi sono solo alcuni degli aspetti che giustificano l’impiego di un Server XML nativo per la gestione di strutture dati basate completamente su XML, poiché, come abbiamo ampliamente visto, lo standard Mpeg-7 e in particolare il Description Definition Language e il Multimedia Description Schemes sono completamente basati su questo linguaggio. La piattaforma software, Tamino di Software AG, è proprio un Information Server basato su XML, che gestisce in modo nativo il formato XML per memorizzare ed estrarre dati di ogni tipo. Utilizzando l’XML come una “metaStruttura”, il server DBMS XML Tamino consente di comporre le informazioni da dati che possono essere originati da differenti sistemi di memorizzazione e DBMS. 3.4 PROGRAMMARE CON XML Si è visto come il linguaggio di stile XSL possa essere utilizzato per trasformare e formattare un documento XML. Esso risulta di particolare interesse nelle operazioni di visualizzazione o stampa di documenti XML, ma non consente la comprensione di un documento XML da parte di un programma. Discutiamo le Application Program Interface (API) per XML. Non è infatti di interesse esclusivo dei web browser ma anche delle applicazioni poter elaborare XML. Attualmente risulta difficile utilizzare diffusamente XML, come abbiamo detto, nella maggioranza dei browser web. XML risulta di grande aiuto per la sua portabilità e la flessibilità con cui il formato dei documenti può essere cambiato: è uno strumento ideale per l’interoperabilità delle applicazioni, utilissima nell’ambito del business. Mentre i dati sono formattati solitamente in formato binario (come nel caso dei dati EDI o dei dati provenienti da un database relazionale), i dati XML sono testuali. Per valutare un documento XML è quindi necessario effettuare il parsing del documento e convertirlo in formato binario che possa essere elaborato più agevolmente da un’applicazione. Questo procedimento può essere equiparato al parsing del codice sorgente del programma di un elaboratore: le informazioni pag. 54 testuali sono tradotte in formato binario che può essere interpretato dalla macchina. 3.4.1 PARSERS STANDARD Ci sono due diversi metodi di base standardizzati per effettuare il parsing di un documento XML. Uno è il Simple API for XML (SAX) e un secondo è il Document Object Model (DOM). La Simple API for XML (SAX) La SAX una API (Application Program Interface lo standard per il parsing eventbased di XML. SAX non è uno standard W3C ma è stato sviluppato congiuntamente dai membri della mailing-list XML-DEV. Sono di pubblico dominio le versioni Java e C++ dei parser SAX. Essendo un parser basato sugli eventi, SAX scansiona un documento in maniera sequenziale. Quando una unità sintattica viene riconosciuta il parser informa il chiamante (callback) di questo evento. Il gestore del documento che chiama il SAX e che viene informato di questi eventi può decidere cosa fare: ignorare l’evento, modificare lo stato dell’applicazione, o fermare il parsing. Gli eventi supportati da SAX sono: startDocument, endDocument, startElement, characters, ignorableWhitespace, e processingInstruction. Il vantaggio della tecnica SAX è che il parser non richiede molte risorse: non necessita di tenere tutto il documento in memoria, in quanto lo legge in maniera sequenziale, carattere per carattere. Per il programmatore la API di SAX è la più semplice non c’è un gran numero di tipi di evento da dover gestire. Comunque, per il parsing un documento complesso può essere richiesto un certo sforzo di programmazione. Document Object Model (DOM) DOM è una interfaccia di programmazione completa per documenti HTML e XML. Utilizzando DOM i programmatori possono creare o caricare documenti XML, navigare la loro struttura, e ricercare, aggiungere, modificare, o cancellare elementi e contenuto. DOM è progettato per essere usato con qualunque linguaggio di programmazione. DOM lavora in maniera completamente diversa rispetto al SAX. Quando DOM legge un documento esso analizza la struttura completa del documento e costruisce un albero di tutti i nodi del documento nella memoria. Il controllo viene restituito al processo chiamante solo dopo aver elaborato tutto il documento. L’applicazione può allora usare la API DOM per navigare l’albero e ricercare ed estrarre contenuto, modificare i nodi, cancellarli, o inserirne di nuovi. pag. 55 Il vantaggio del DOM è che l’intera struttura del documento viene presentata alla applicazione chiamante, che può dunque navigare avanti e indietro liberamente nei nodi del documento, cosa impossibile con SAX. Le applicazioni possono anche modificare i documenti o creare nuovi documenti. La API DOM è molto ricca di funzionalità (l’interfaccia Element da sola ha 27 metodi diversi e DOM ha 17 diverse interfacce, vedremo il dettaglio successivamente). Sia SAX che DOM sono parser standard che trattano i documenti XML al livello di XML generico, così che il processo di parsing è indipendente dalla specifica classe di documento. Alcune implementazioni di SAX e DOM possono verificare il documento elaborato per la sua validità verificandolo assieme alla specifica DTD o XML Schema. pag. 56 CAPITOLO 4 MPEG-7 : MULTIMEDIA CONTENT DESCRIPTION INTERFACE 4.1 CONSIDERAZIONI PRELIMINARI Il primo obiettivo dell’MPEG-7, chiamato “Multimedia Content Description Interface” (ISO/IEC 15938), è quello di definire gli schemi per la descrizione del contenuto o degli standards di metadati adatti a risorse multimediali anche complesse al fine di consentire una agevole ricerca di documenti audiovisivi all’interno di un archivio digitale. Nell’ambito del progetto Internet TV fase2 Vivai D’Impresa-Elis, si è approfondito il problema dell’identificazione di un set base di strumenti dello standard MPEG-7 necessari alla descrizione dei contenuti di un archivio video digitale, come TecaFast della RAI si è sviluppata l'architettura di un sistema di descrizione Mpeg-7 iniziato nella prima fase di progetto In questo capitolo si mostrerà la producedura utilizzata per descrivere i servizi giornalistici trasmessi dalle tre reti nazionali della RAI. 4.2 INTRODUZIONE ALLO STANDARD MPEG-7 Lo standard MPEG-7 fornisce una serie di strumenti (descrittori, schemi di descrizione, un linguaggio per la definizione di descrittori, sistemi per la codifica, trasporto, aggiornamento e navigazione di descrizioni strutturate, etc..) per lo sviluppo di applicazioni di descrizione multimediale che possono essere immagazzinate (on-line oppure off-line) o trasmesse (ad es. broadcasting). MPEG-7 si propone di operare indifferentemente in ambiente real-time (Inline nella semantica dello standard) o non real-time (in documenti esterni alla risorsa multimediale che viene descritta). Agire in un ambiente real-time o Inline vuol dire associare le descrizioni MPEG-7 direttamente al codice che rappresenta il contenuto nel momento in cui quest'ultimo viene catturato o codificato opportunamente. Per sfruttare tutte le potenzialità delle descrizioni MPEG-7 sono indubbiamente necessari degli applicativi per l’estrazione automatica degli attributi, una modalità che non sempre è possibile. Più alto è il livello di astrazione, più difficoltosa si rivela l'estrazione automatica degli attributi, fino a diventare impossibile (un esempio sono le informazioni sulla creazione del contenuto, come autore, titolo, contributori, che non possono essere estratte dal contenuto stesso); diventa quindi di chiara utilità l’uso di eventuali pag. 57 strumenti di estrazione interattivi, ma solo per un dato tipo di attributi di basso livello. Comunque gli algoritmi di estrazione automatica degli attributi, non compaiono all'interno del campo di azione dello standard. La principale ragione di questa scelta è che la standardizzazione di tali algoritmi non è richiesta per garantire l'interoperabilità. Allo stesso tempo si lascia spazio, in questo modo, alla competizione industriale. Anche i motori di ricerca non sono specificati all'interno del campo di azione dello standard, sta agli svlippatori di applicazioni Mpeg-7 definire le modalità. Consideriamo l'esempio di una informazione visiva: un livello di astrazione più basso, potrebbe essere rappresentato dalla descrizione di forma, dimensioni, texture, colore, movimento (traiettoria) e posizione. Per l'audio lo stesso si può dire per tonalità, ritmo, cambi di ritmo. Ad un livello di astrazione più alto possiamo trovare informazioni sulla semantica: potremmo descrivere uno scenario, dove compare un signore che parla sulla destra, una foglia che cade a terra sulla sinistra, ed infine un sottofondo sonoro frutto del passaggio di un jet nel cielo. Tutte queste descrizioni sono ovviamente codificate in maniera da rendere efficiente la ricerca dello scenario. Lo standard, al di là di questo esempio, prevede anche livelli di astrazione intermedi. Il livello di astrazione va messo in relazione con le differenti modalità di estrazione degli attributi: molti attributi di basso livello possono essere estratti in modo completamente automatico, mentre attributi di alto livello necessitano di una più alta interazione umana. Dopo aver fornito una descrizione del materiale, può essere richiesto di includere altre informazioni sui dati multimediali in nostro possesso. Alcune informazioni rilevanti sono ad esempio quelle di: FORMATO: Un esempio di formato è il tipo di codifica usato (JPEG, 1. MPEG2, altri), oppure la mole totale di dati. Queste informazioni permettono di stabilire se l'utente è in grado di leggere il materiale. ACCESSO AL MATERIALE: Questa voce può tenere in considerazione 2. aspetti quali informazioni sul copyright o prezzo del materiale. CLASSIFICAZIONE: Può includere la catalogazione del contenuto 3. all'interno di categorie predefinite. LINKS AD ALTRO MATERIALE RILEVANTE: Questo tipo di 4. informazione può velocizzare la ricerca da parte di un utente di materiale correlato. CONTESTO: Nel caso di contenuti di natura non cinematografica o più 5. in generale non fittizia, se questi sono registrati è molto importante conoscere in pag. 58 quale occasione è avvenuta la registrazione (per esempio una determinata partita di pallavolo delle olimpiadi del 2002). In molti casi è utile ricorrere ad informazioni testuali per le descrizioni di un materiale audiovisivo. Un esempio dell'utilità di tale accorgimento è dato dall'aggiunta di metadati fondamentali come il nome dell'autore, il titolo di un film, l'indicazione di un luogo, la data di trasmissione o pubblicazione. Come preannunciato i dati di tipo Mpeg-7 possono essere fisicamente localizzati assieme al materiale audiovisivo cui si riferiscono: in particolare essi si possono trovare nello stesso flusso di dati, o possono essere memorizzati nella stessa periferica, ma le descrizioni degli oggetti di interesse potrebbero essere situate da qualche altra parte sul globo. Lo standard Mpeg-7 è stato programmato in 7-parti: Parte 1 2 3 4 5 6 7 Titolo Systems Description Definition Language Visual Audio Multimedia Description Schemes Reference SW Conformance Il contenuto tecnico delle parti è il seguente: • System fornisce la struttura dello standard, il trasporto del contenuto Mpeg-7 ed il formato binario del contenuto Mpeg7 • Description Definition Language permette generare i descrittori e gli schemi di descrizione • Visual fornisce i descrittori standard e gli schemi di descrizione che sono puramente visivo • Audio fornisce i descrittori e gli schemi standard di descrizione che sono puramente audio • Multimedia Description Schemes (MDS) fornisce i descrittori e gli schemi standard di descrizione che non sono nè visivi nè audio • Reference software ha lo stesso valore normativo di quello di Mpeg-4 e possono essere usati per i prodotti alle stesse circostanze La parte di interesse dello standard per la nostra applicazione è il MDS, che fornisce i descrittori necessari sia per descrivere la struttura logica della risorsa audiovisiva sia per identificare le sue caratteristiche. pag. 59 Le librerie digitali (cataloghi di immagini, dizionari musicali…), i servizi di multimedia directory (una sorta di Pagine Gialle multimediali), la selezione di servizi di broadcasting (canali radio e televisivi) e il Multimedia editing (servizi di informazione elettronica personalizzati) possono trarre indubbio vantaggio dall’utilizzo degli strumenti dello standard MPEG-7. I descrittori MPEG-7 consentono di costruire applicazioni per la gestione di contenuti multimediali anche molto complessi, costituiti da oggetti diversi relazionati tra di loro tramite relazioni di tempo e di spazio (sequenze o presentazione di contenuti in parallelo, esempio audio, video immagini e animazioni 3d) o relazioni di struttura (è possibile definire una collezione di contenuti multimediali come immagini con delle relazioni descritte da un grafo) e relazioni di tipo semantico (descrivere le azioni degli oggetti in un video ad esempio un’azione di “dribbling” in una sequenza che riprende un goal su un campo di calcio) o anche descrivere dei concetti. In realtà la vera potenzialità di un’infrastruttura multimediale sta proprio nel fornire degli automatismi e meccanismi intelligenti di elaborazione e comunicazione tra dispositivi elettronici, come nel caso dell'elaborazione intelligente delle immagini (per applicazioni di sorveglianza, visione intelligente, riconoscimento di forme), della conversione del formato dei dati (ad esempio la conversione automatica del parlato di un filmato in testo per gli audiolesi, la ricerca di informazione di vario tipo su documenti multimediali di particolare interesse per l'utente secondo un profilo, oppure operazioni di controllo e filtraggio per ricevere solo quei dati che soddisfano le scelte dell'utente). Sarà necessaria una forma di rappresentazione delle informazioni multimediali che possa permettere un certo grado di interpretazione sul significato delle informazioni che sono trasmesse ad un dispositivo. 4.2.1 STRUTTURA DEI MULTIMEDIA DESCRIPTION SCHEMES Gli strumenti di descrizione, mostrati nella figura seguente, sono strutturati principalmente sulla base delle funzionalità che forniscono. Al livello inferiore della figura seguente si possono trovare gli elementi base. Si tratta degli Schema Tools (elemento radice, elemento di livello superiore e packages), i tipi di dato basilari (basic datatypes), le strutture matematiche, collegamenti e localizzatori di supporto (linking and media localization) , e strumenti come Schemi di Descrizione (DSs) di base, che si possono trovare come componenti elementari o DSs più complessi. Partendo da questo livello, possono essere definiti gli elementi di descrizione del contenuto e di gestione (content description & management). Questi strumenti di descrizione descrivono il contenuto di un singolo documento multimediale da diversi punti di vista. Attualmente cinque punti di vista sono definiti: creazione e Produzione, Media, Utilizzo, Aspetti Strutturali e Aspetti Semantici. I primi tre strumenti di descrizione indirizzano principalmente le informazioni relative alla pag. 60 gestione del contenuto (content management) mentre le ultime due sono più dedicate alla descrizione di informazione percepibile (content description). Content organization Models Collections User interaction Navigation & Access Creation & Production Media Content management Usage Structural aspects Summaries Views Views Content description Semantic aspects User Preferences User History Variations Basic elements Schema Tools Basic datatypes Links & media Basic Tools Figura 7 : VISTA D’INSIEME DEGLI STRUMENTI DI MPEG-7 MDS Vediamo più in dettaglio gli strumenti generali di Mpeg-7: • Basic Element fornisce specifici data-types e strutture matematiche come vettori e matrici che sono importanti per la descrizione di contenuto audio – video. Sono anche inclusi in Basic Elements costrutti per il collegamento ai media files e per localizzare i segmenti, regioni e altro. Molti dei basic elements specificano elementi necessari alla descrizione del contenuto come la descrizione di tempo, persone, individui, gruppi, organizzazioni e altre annotazioni testuali. • Content Management descrive differenti aspetti della creazione e produzione, codifica del media, formati di files, memorizzazione e uso del contenuto. • Content description specifica elementi per descrivere la struttura ( regions, video frames, segmenti audio) e la semantica (oggetti, eventi, nozioni astratte). • Navigation and Access definisce decomposizioni, partizioni e sommari per facilitare la navigazione e il reperimento del contenuto multimediale. pag. 61 • Content Organization fornisce gli strumenti per modellare e organizzare collezioni di contenuti audio-video e collezioni di descrizioni. • User Interaction definisce gli strumenti per descrivere le preferenze dell’utente e la storia dell’uso del materiale multimediale. Con la seguente tabella si definiscono in maniera più precisa le funzionalità di ogni gruppo di strumenti di descrizione per il Content Management e il Content description: Insieme di strumenti di descrizione Funzionalità Media Descrizione del supporto di memorizzazione: formato di memorizzazione, la codifica del contenuto multimediale, l’identificazione del supporto. Creazione e Produzione (Creation) Metadati che descrivono la creazione e produzione del contenuto: tipiche caratteristiche sono il titolo, il creatore, la classificazione, lo scopo della creazione, etc. Questa informazione è in gran parte generata dall’autore dal momento che non è possibile estrarla dal contenuto. Utilizzo (Usage) Metadati relativi all’uso del contenuto: caratteristiche tipiche sono i proprietari dei diritti, i diritti di accesso, pubblicazione, e le informazioni finanziarie. Tale informazione è molto probabilmente soggetta a variazioni nel ciclo di vita del contenuto multimediale. Aspetti Strutturali Descrizione del contenuto multimediale dal punto di vista della sua struttura: la descrizione è strutturata intorno ai segmenti che rappresentano i componenti fisici spaziali, temporali o spazio-temporali del contenuto multimediale. Ogni segmento può essere descritto da caratteristiche basate sui segnali (signal based: come colore, texture, forma, moto, e caratteristiche audio) e alcune elementari informazioni semantiche. Aspetti Semantici Descrizione del contenuto multimediale dal punto di vista della sua semantica e delle nozioni concettuali. Questo si basa sui concetti di oggetti, eventi, concetti astratti e loro relazioni. Questi cinque insiemi di strumenti di descrizione sono stati presentati come entità distinte. Come vedremo nel seguito, questi sono correlati e possono essere parzialmente incluse in ogni altro. Per esempio gli elementi Media, Utilizzo o pag. 62 Creazione e Produzione possono essere allegati a singoli segmenti coinvolti nella descrizione strutturale del contenuto. A seconda dell’applicazione, alcune aree della descrizione del contenuto possono essere enfatizzate ed altre possono essere minimizzate o scartate. Accanto alla diretta descrizione del contenuto fornita dai cinque insiemi di strumenti di descrizione appena descritti, sono stati definiti anche strumenti per la navigazione e l’accesso: il Browsing è supportato dagli strumenti di descrizione di riassunto o “summary description tools” ed è anche fornita informazione circa le possibili variazioni del contenuto. Variazioni del contenuto multimediale possono sostituire l’originale, se necessario, per adattare diverse presentazioni multimediali alle capacità dei terminali clienti, alle condizioni della rete o alle preferenze dell’utente. La tabella seguente riporta la terminologica considerata e ne specifica il significato nell’ambito di Mpeg-7 MDS. Terminologia Base Descrizione Datatype indica un elemento di descrizione del dominio multimediale e che corrisponde a un tipo di base riutilizzabile Descriptor (D) indica un elemento di descrizione che rappresenta una caratteristica multimediale o un attributo o un gruppo di attributi di un’entità multimediale. Description Schemes un elemento di descrizione che rappresenta entità o (DS) relazioni nel dominio multimediale. Uno Schema di Descrizione possiede informazioni descrittive e può partecipare a relazioni molti-a-uno con altri elementi di descrizione Audio-visivo (Audio- Si riferisce al contenuto che consiste sia in audio che visual) video Caratteristica (Feature) Proprietà del contenuto multimediale che significa qualcosa per un osservatore umano, come ad esempio il colore “color” o la trama “texture”. Multimedia Fa riferimento al contenuto che comprende un contenuto o sua modalità o tipi di contenuto, come immagini, audio, video, modelli 3D, inchiostro elettronico, e altro. pag. 63 4.2.2 GLI STRUMENTI BASE DELLO SCHEMA Il primo elemento dei Basic Element, Schema Tools, specifica l’organizzazione del tipo di gerarchia base dei Descriptors e dei Descriprion Schemes, gli elementi di MPEG-7, sia a livello di radice che ad alto livello, i cosidetti “task-oriented”. Oltre agli element radice e di alto livello, in questa parte si definiscono strumenti di descrizione di diverse entità di contenuto multimediale che dovrebbero essere usati in congiunzione con lo specifico tipo di livello superiore della descrizione del contenuto per formare delle descrizioni complete di diversi tipi di contenuto multimediale, come ad esempio immagini, video, audio, miscellanea multimediale, collezioni, e così via. Infine, viene specificato uno strumento Package che dovrebbe essere usato per descrivere un’organizzazione dei Descriptors e dei Descrition Schemes per un’applicazione, così come uno strumento Description Metadata da usare per descrivere i metadati riguardanti la descrizione stessa. Gli strumenti specificati in questa parte dell’MPEG-7 MCD sono indicati nella tabella seguente. Lista degli Schema Tools Strumento Funzionalità Tipi di base (Base Forma la gerarchia di tipo base per gli strumenti di Types) descrizione – Descriptors, Descrition Schemes, e Header. Elemento Radice Descrive il Wrapper (intestazione) iniziale o l’elemento (Root Element) radice dei documenti e delle unità di descrizione (description units) che rappresentano istanze valide dello schema. Tipi di livello Forma i modelli di contenuto degli elementi di livello superiore (Top- superiore che seguono l’elemento radice per le descrizioni. level Types) Multimedia Content Entities Descrivono diversi tipi di contentuo multimediale come ad esempio immagini, video, audio, loro combinazioni, collezioni, e altro. Packages Descrivono un’organizzazione o confezionamento dei Descriptors e Description Schemes per un’applicazione. Description Metadata Descrivono i metadati riguardanti le descrizioni. pag. 64 I concetti di elemento radice, elementi di livello superiore, elementi globali, tipi globali, e altri concetti sono definiti come segue: • Schema valid description: una descrizione che è sintatticamente valida in accordo con lo schema definito in ISO/IEC 15938-5. • Description document: una completa descrizione che è completa nel senso di provvedere una completa, indipendente descrizione del contenuto multimediale per un’applicazione. • Description unit: una unità di descrizione valida secondo lo schema e che trasporta informazione parziale o aggiuntiva per un’applicazione. Le unità descrittive possono essere usate in specifiche applicazioni dove il client richiede in maniera additiva parti di una descrizione completa da un server. Le “description units” possono anche essere usate nel contesto della distribuzione in streaming delle descrizioni. • Root element (elemento radice): l’elemento iniziale di una istanza di documento o una description unit valida secondo lo schema. • Top-level type (tipo di livello superiore): serve come intestazione di definizione di strumenti per un particolare “task” di descrizione. • Top-level element (elemento di livello superiore): un elemento che immediatamente segue l’elemento radice, che determina se la descrizione fornisce una istanza di documento o una description unit validi secondo lo schema. • Global element: un elemento dello schema che è dichiarato al livello globale. • Global Type: un modello o tipo di contenuto definito immediatamente trasformando l’elemento <schema>. • Package: un’organizzazione di Descriptors e di Description Schemes che impacchetta gli strumenti per un’applicazione. E' possibile osservare nella figura seguente l’organizzazione gerarchica dei tipi di base degli strumenti di descrizione. Nella sottosezione Mpeg7RootType sono definiti i seguenti tipi di base: • Mpeg7RootType: fornisce il tipo astratto di base della gerarchia dei tipi. Description Schemes, Descriptors e Header derivano da Mpeg7RootType. L’elemento radice Mpeg7 contiene un elemento del tipo Mpeg7RootType. o Dtype: estende Mpeg7RootType per fornire un tipo astratto di base per Descriptors visuali e audio. Tutti gli Mpeg7 Descriptors si basano su Dtype. VisualDType: estende Dtype per fornire un tipo astratto di base per i Descriptors visuali. Tutti i “visual descriptors” che devono essere usati nel descrivere segmenti visuali derivano da VisualDType. pag. 65 AudioDType: estende Dtype per fornire un tipo astratto base per i Descriptors Audio. Tutti i Descriptors audio che vengono usati nella descrizione di segmenti audio derivano da AudioType. o DSType: estende Mpeg7RootType per fornire un tipo astratto base per i Description Schemes visuali e audio. Tutti i Description Schemes derivano da DSType. VisualDSType: estende DSType per fornire un tipo astratto base per i Description Schemes di tipo “visual”. Tutti i Description Schemes che sono usati nel descrivere i segmenti visivi derivano da VisualDSType. AudioDSType: estende DSType per fornire un tipo astratto base per i Description Schemes di tipo “audio”. Tutti i Description Schemes audio che sono usati per descrivere segmenti audio derivano da AudioDSType. o HeaderType: estende Mpeg7RootType per fornire un tipo astratto base per descrivere le intestazioni nelle descrizioni. L’intestazione è destinata a raccogliere l’informazione comune ai componenti (chiamata “body part”) della descrizione e può essere istanziata senza alcun elemento DSType Figura 8 : ORGANIZZAZIONE DEI TIPI DI BASE DI MPEG7ROOTTYPE, DSTYPE, DTYPE, E HEADERTYPE. Mpeg-7 fornisce un elemento radice per ogni tipo di descrizione, da utilizzare come elemento iniziale di una descrizione. Segue il listato con la definizione del tipo dell’elemento radice Mpeg7. pag. 66 Definizione di Mpeg7Type e dichiarazione dell’elemento Mpeg7 <!-- ################################################ --> <!-- Definizione di Mpeg7Type --> <!-- ################################################ --> <complexType name="Mpeg7Type" abstract="true"> <sequence> <element name="DescriptionMetadata" type="mpeg7:DescriptionMetadataType" minOccurs="0"/> </sequence> <attribute ref="xml:lang" use="optional"/> </complexType> <!-- ################################################ --> <!-- Dichiarazione dell’elemento Mpeg-7 --> <!-- ################################################ --> <element name="Mpeg7"> <complexType> <complexContent> <extension base="mpeg7:Mpeg7Type"> <choice> <element name="DescriptionUnit" type="mpeg7:Mpeg7RootType"/> <choice minOccurs="1" maxOccurs="unbounded"> <element name="ContentDescription" type="mpeg7:ContentDescriptionType"/> <element name="ContentManagement" type="mpeg7:ContentManagementType"/> </choice> </choice> <attribute name="type" use="default" value="descriptionUnit"> <simpleType> <restriction base="string"> <enumeration value="descriptionUnit"/> <enumeration value="complete"/> </restriction> </simpleType> </attribute> </extension> </complexContent> pag. 67 </complexType> </element> La semantica di Mpeg7Type: Nome Definizione Mpeg7Type Utilizzato come tipo dell’elemento radice di MPEG-7. DescriptionMetadata Descrive i metadati per le descrizioni contenute all’interno dell’elemento radice (opzionale). I metadati della descrizione si propagano (si applicano) alle descrizioni contenute all’interno dell’elemento radice, finchè non vengono specificati nuovi metadati della descrizione per qualche parte interna. xml:lang Identifica il linguaggio del contenuto della descrizione (è opzionale). Identifica il tipo della descrizione. Questo attributo può avere uno dei seguenti valori: Type descriptionUnit – la descrizione è una unità descrittiva con una struttura valida. complete – la descrizione è una descrizione completa con una struttra valida secondo lo schema. Il valore di default, descriptionUnit. ove non specificato, è I due tipi di descrizioni di schema validi sono: la descrizione completa di documenti (complete), oppure quelle parzioali tramite istanze che portano informazioni parziali o aggiuntive per un’applicazione, che sono chiamate unità di descrizione o “description units”. Vengono ora descritti i tipi di livello superiore, che vengono impiegati per la definizione degli elementi ‘Top level’. Questi fanno la loro comparsa subito dopo l’elemento radice Mpeg7 in un’istanza di documento valida secondo lo schema Mpeg7 MDS. I tipi di livello superiore includono in maniera selettiva alcuni strumenti dello schema che sono adatti ad alcuni compiti di descrizione specifici. pag. 68 La semantica dell’elemento radice Mpeg7: Nome Definizione Mpeg7 Fa da elemento radice di una descrizione. DescriptionUnit Descrive una istanza di uno degli strumenti Mpeg-7. ContentDescription Descrive dati multimediali o astrazioni di contenuto multimediale (opzionale). ContentDescription corrisponde al tipo di base astratto di differenti modelli per la descrizione dei diversi tipi e astrazioni di contenuto multimediale. ContentManagement Descrive la gestione dei dati multimediali (è opzionale). ContentManagement corrisponde al tipo astratto di base dei differenti modelli per la descrizione della gestione di contenuto multimediale. Figura 9 : DIAGRAMMA DELL’ELEMENTO RADICE MPEG7. Vengono definiti i seguenti elementi "Top Level": • BasicDescription (astratto): fornisce la specifica di una base astratta per i tipi di livello superiore ContentDescription e ContentManagement. • ContentDescription (astratto): fornisce la specifica di una base astratta per i tipi di livello superiore ContentEntity e ContentAbstraction per la descrizione di contenuto multimediale. • ContentEntity: fornisce un modello di contenitore per descrivere diversi tipi di entità di contenuto multimediale come immagini, video, audio, collezioni, etc. • ContentAbstraction (astratta): fornisce la specifica di una base astratta per vari tipi di livello superiore per la descrizione di contenuti multimediali pag. 69 (questi tipi sono WorldDescription; ModelDescription; SummaryDescription; ViewDescription; VariationDescription) • ContentManagement (astratto): fornisce la specifica di una base astratta per i tipi di livello superiore seguenti per la descrizione delle operazioni di gestione dei contenuti multimediali: • UserDescription: fornisce un modello di contenitore per la descrizione di un utente in un sistema multimediale. • CreationDescription: fornisce un modello di contenitore per la descrizione del processo di creazione del contenuto multimediale. • UsageDescription: fornisce un modello di contenitore per la descrizione dei modi d’uso di un contenuto multimediale. • ClassificationDescription: fornisce un modello di contenitore per la descrizione di uno schema di classificazione relativo al contenuto multimediale. I tipi di livello superiore sono organizzati secondo la gerarchia mostrata nella figura seguente. B asic D escriptio n (astratto) C ontent D escriptio n (astratto) C ontent E ntity C ontent M anag em ent (astratto) C ontent A bstractio n (astratto) - UserD escription - CreationDescription - UsageDescription - ClassificationDescription Audio-Visual - Imtaget - W orldDescription - V ideo - Sum m aryDescription - View Description - A udio - A udioV isual - M ixedC ontent - C ontentC ollection Figura 10 : - M odelDescription - VariationDescription ORGANIZZAZIONE DELLA GERARCHIA DEI TIPI PER I TIPI DI LIVELLO SUPERIORE. Gli elementi Mpeg7 utilizzano i tipi di livello superiore per ContentDescription e ContentManagement. I tipi di dato BasicDescription costituiscono i tipi di dato pag. 70 astratto base della gerarchia. Al di sotto di BasicDescription, i tipi di livello superiore (top-level types nella documentazione originale) sono divisi in due percorsi di derivazione: Content Description e Content Management. ContentDescription descrive il contenuto multimediale e le sue astrazioni, fornendo una specifica di base per i tipi top-level ContentEntity e ContentAbstraction. Nel listato finale dello schema MDS è possibile trovare tutte le definizione dei tipi, e anche la sintassi del tipo ContentDescription. La semantica di ContentEntityType: Nome Definizione ContentEntityType Descrive un contenuto multimediale. MultimediaContent Descrive l’istanza di un contenuto multimediale. Figura 11 : DIAGRAMMA DI CONTENTENTITYTYPE Da MultimediaContent derivano i diversi strumenti di descrizione che corrispondono ad altrettanti diversi tipi di contenuto multimediale: immagini, video, audio, audiovisivi, mix di contenuti multimediali, programmi e segnali. Analizziamo ora la semantica di MultimediaContentType e dei tipi derivati di nostro interesse per l’applicazione oggetto di studio. Nelle tabelle sequenti viene definito MultimediaContentType, quindi i tipi e dli elementi che possono essere instanziati. Tra questi troviamo: pag. 71 VideoType: Nome Definizione VideoType Descrive un video. Video Descrive un’istanza di un video. AudioType: Nome Definizione AudioType Descrive l’audio. Audio Descrive un’istanza di contenuto audio. AudioVisualType: Nome Definizione AudioVisualType Descrive contenuto audiovisivo. AudioVisual Descrive un’istanza di contenuto audiovisivo. Nello schema MultimediaType sono inoltre presenti MultimediaCollectionType, MultimediaProgramType, SignalType, ElectronikInkType, VideoEditingType sempre derivati da MultimediaContentType. Il seguente esempio illustra l’uso di MultimediaContent per la creazione della descrizione di un audiovisivo. In seguito è riportato il codice xml che definisce i MultimediaContent DS di interesse. pag. 72 Sintassi di MultimediaContent DS <!-- ################################################################ --> <!-- Definizione dei Multimedia Content Entity DSs di interesse --> <!-- ################################################################ --> <complexType name="MultimediaContentType" abstract="true"> <complexContent> <extension base="mpeg7:DSType"> </extension> </complexContent> </complexType> <!-- . . . segue . . . --> <!-- il codice completo si trova nel listato di MDS Schema --> <!-- presente in appendice --> <!-- . . . segue . . . --> <complexType name="AudioVisualType"> <complexContent> <extension base="mpeg7:MultimediaContentType"> <sequence> <element name="AudioVisual" type="mpeg7:AudioVisualSegmentType"/> </sequence> </extension> </complexContent> </complextype> L'elemento principale della parte di Content Description è il Segment DS che indirizza la descrizione degli aspetti fisici e logici del contenuto audiovisuale. I Segment DSs possono essere usati per formare strutture ad albero dei segmenti. Un segmento rappresenta una sezione di un istanza di contenuto audiovisivo. Il Segment DS è definito come una classe astratta (nel senso della programmazione ad oggetti) ed ha nove sotto classi principali: Multimedia Segment DS, AudioVisual Region DS, AudioVisual Segment DS, Audio Segment DS, Still Region DS, Still Region3D DS, Moving Region DS, Video Segment DS e Ink Segment DS. Ogni segmento può essere descritto da informazioni sulla sua creazione (Creation Information), sull'uso (Usage Information), sul media (Media Information) e da annotazioni testuali (Textual Annotation), ed inoltre un segmento può essere decomposto in sotto-segmenti attraverso Segment Decomposition DS. Il description scheme di tipo astratto Segment DS è ricorsivo e può essere suddiviso in sottosegmenti e questi possono formare una gerarchia (struttura ad albero). La struttura ad albero dei segmenti che ne risulta viene utilizzata per pag. 73 definire il media sorgente, e la struttura temporale e/o spaziale del contenuto audiovisivo. Per esempio un programma video può essere segmentato temporalmente in vari livelli di scene, shots, e microsegmenti; una tavola dei contenuti può essere generata basandosi su questa struttura. E strategie simili possono essere usate per i segmenti spaziali e spazio-temporali. Un segmento può inoltre essere suddiviso in vari media sorgenti come per esempio diverse tracce audio o vari punti di vista da diverse inquadrature. La suddivisione gerarchica è utile per delineare efficienti strategie di ricerca (ricerche globali o ricerche locali) e permette inoltre alla descrizione di essere scalabile: un segmento può essere descritto dal suo diretto set di descrittori e DSs (schemi di descrizione) ma può anche essere descritto dall'unione dei descrittori e delle DSs relativi ai suoi sottoelementi. Da notare è che un segmento può essere suddiviso in diversi sottosegmenti di diverso tipo, per esempio un segmento video può essere decomposto in regioni in movimento che possono essere a loro volta decomposte in regioni statiche. Nell’ambito di questo lavoro si fa riferimento al tipo di dato complesso AudioVisualType, che, come possiamo vedere dal codice che lo definisce (in xml secondo il linguaggio DDL di Mpeg-7) istanzia un elemento “AudioVisual” di tipo AudioVisualSegmentType. Nel seguente listato è riportata la sintassi di AudioVisualSegment DS. Sintassi di AudioVisualSegment DS <!-- ############################################### --> <!-- Definizione di AudioVisualSegment DS --> <!-- ############################################### --> <complexType name="AudioVisualSegmentType"> <complexContent> <extension base="mpeg7:SegmentType"> <sequence> <element name="MediaTime" type="mpeg7:MediaTimeType" minOccurs="0"/> <element name="TemporalMask" type="mpeg7:TemporalMaskType" minOccurs="0"/> <choice minOccurs="0" maxOccurs="unbounded"> <element name="SpatialDecomposition" type="mpeg7:AudioVisualSegmentSpatialDecompositionType"/> <element name="TemporalDecomposition" type="mpeg7:AudioVisualSegmentTemporalDecompositionType"/> <element name="SpatioTemporalDecomposition" type="mpeg7:AudioVisualSegmentSpatioTemporalDecompositionType"/> pag. 74 <element name="MediaSourceDecomposition" type="mpeg7:AudioVisualSegmentMediaSourceDecompositionType"/> </choice> </sequence> </extension> </complexContent> </complexType> La semantica di AudioVisualSegmentType è riportata nella tabella successiva. Nome Definizione AudioVisualSegmentType Descrive un intervallo temporale o un segmento di informazione audiovisiva, che corrisponde all’insieme di campioni audio e frames video nello stesso intervallo temporale o segmento (il segmento audiovisivo può anche non essere connesso temporalmente). MediaTime Descrive la localizzazione temporale del segmento audiovisivo attraverso la specifica del tempo di inizio e della durata del segmento. Se il segmento non è connesso temporalmente, la durata dovrebbe essere pari o maggiore alla somma delle durate dei segmenti temporali connessi all’interno del segmento audiovisivo complessivo. L’elemento MediaTime include a sua volta un elemento MediaTimePoint e un elemento MediaDuration opzionale. TemporalMask Descrive la composizione di componenti connessi che formano un segmento audiovisivo non-connesso (è opzionale). Se è assente, il segmento è composto dal solo intervallo connesso nel tempo definito dall’elemento MediaTime. Se presente, il segmento fa riferimento all’insieme di sotto intervalli non sovrapposti nel tempo definiti dall’elemento TemporalMask. SpatialDecomposition Descrive una decomposizione spaziale del segmento pag. 75 Nome Definizione audiovisivo in uno o più sotto-segmenti (opzionale). TemporalDecomposition Descrive una decomposizione temporale del segmento audiovisivo in uno o più sotto-segmenti (opzionale). SpatioTemporalDecomposition Descrive una decomposizione spazio-temporale del segmento audiovisivo in uno o più sotto-segmenti (opzionale). MediaSourceDecomposition Descrive una decomposizione in sorgenti di diversi media del segmento audiovisivo in uno o più sottosegmenti (opzionale). Figura 12 : DIAGRAMMA DI AUDIOVISUALSEGMENTTYPE. pag. 76 Nel seguente esempio viene illustrato l’uso di AudioVisualSegment DS per la descrizione di un segmento audiovisivo costituito da due tracce audio ed una traccia video. In questo esempio, il segmento audiovisivo Domenica_In_AVS rappresenta l’intera sequenza video che è scomposta in due segmenti audio, Domenica_In _Track1AS e Domenica_In _Track2AS, e una sequenza video, TelegiornaleTG1_VS, che corrispondono rispettivamente alle sorgenti audio e video. Ogni segmento è connesso nel tempo e/o nello spazio. <!-— Esempio di decomposizione temporale del segmento audiovisivo --> <!-- chiamato Domenica_In _AVS --> <AudioVisualSegment id=" Domenica_In _AVS"> <TextAnnotation> <FreeTextAnnotation> Varietà televisivo nazionale </FreeTextAnnotation> </TextAnnotation> <MediaTime> <MediaTimePoint>T00:00:00</MediaTimePoint> <MediaDuration>PT1H20M30S</MediaDuration> </MediaTime> <!-- descrizione di MediaSourceDecomposition: Domenica_In _AVS è la sorgente scomposta in segmenti video e audio: * Domenica_In _VS: start = 0:0:0, duration =1 h, 20 mins, 30 secs * Domenica_In _AS: start = 0:0:0, duration =1 h, 20 mins, 30 secs--> <MediaSourceDecomposition gap="false" overlap="false"> <VideoSegment id=" Domenica_In _VS "> <MediaTime> <MediaTimePoint>T00:00:00</MediaTimePoint> <MediaDuration>PT1H20M30S</MediaDuration> </MediaTime> <GOFGOPColor> ... </GOFGOPColor> </VideoSegment> <AudioSegment id=" Domenica_In _Track1AS"> <MediaTime> <MediaTimePoint>T00:00:00</MediaTimePoint> <MediaDuration>PT20M30S</MediaDuration> </MediaTime> </AudioSegment> <AudioSegment id=" Domenica_In _Track2AS"> <MediaTime> <MediaTimePoint>T00:20:30</MediaTimePoint> pag. 77 <MediaDuration>PT1H0M0S</MediaDuration> </MediaTime> </AudioSegment> </MediaSourceDecomposition> </AudioVisualSegment> 4.2.3 DECOMPOSIZIONI STRUTTURALI DEI SEGMENTI Questa parte specifica gli strumenti per la descrizione delle decomposizioni strutturali dei segmenti. Come abbiamo accennato in precedenza, il Segment DS può essere suddiviso in sottosegmenti e questi possono formare una gerarchia (struttura ad albero). La struttura ad albero dei segmenti che ne risulta viene utilizzata per definire il media sorgente, e la struttura temporale e/o spaziale del contenuto audiovisivo. A seconda del tipo di decomposizione si intende adottare, cambiano gli strumenti di descrizione. La figura in basso mostra l'organizzazione degli strumenti per la descrizione delle decomposizioni strutturali dei segmenti. Segment Decomposition DS (abstract) SpatialSegment Decomposition DS (abstract) StillRegionSpatialDecomposition DS StillRegion3DSpatialDecomposition DS VideoSegmentSpatialDecomposition DS MovingRegionSpatialDecomposition DS AudioVisualSegmentSpatialDecomposition DS TemporalSegment Decomposition DS (abstract) VideoSegmentTemporalDecomposition DS MovingRegionTemporalDecomposition DS InkSegmentTemporalDecomposition DS AudioSegmentTemporalDecomposition DS AudioVisualSegmentTemporalDecomposition DS AudioVisualRegionTemporalDecomposition DS AnalyticEditedVideoSegmentTemporalDecomposition DS MediaSource SegmentDecomposition DS (abstract) SpatioTemporal SegmentDecompositio n VideoSegmentMediaSourceDecomposition DS MovingRegionMediaSourceDecomposition DS InkSegmentMediaSourceDecomposition DS AudioSegmentMediaSourceDecomposition DS AudioVisualSegmentMediaSourceDecompositio n DS MultimediaSegmentMediaSourceDecomposition VideoSegmentSpatioTemporalDecomposition DS MovingRegionSpatioTemporalDecomposition DS AudioVisualSegmentSpatioTemporalDecomposition DS AudioVisualRegionSpatioTemporalDecomposition DS AnalyticEditedVideoSegmentSpatioTemporalDecomposition DS Figura 13 : VISIONE GENERALE DEGLI STRUMENTI PER LA DECOMPOSIZIONE DEI SEGMENTI. pag. 78 Il SegmentDecomposition DS è un tipo astratto che descrive una decomposizione gerarchica di un segmento. Il SpatialSegmentDecomposition DS, il TemporalSegmentDecomposition DS, lo SpatioTemporalSegmentDecomposition DS ed il MediaSourceSegment-Decomposition DS sono SegmentDecomposition specializzati e sono definiti come tipi astratti che descrivono decomposizioni spaziali, temporali, spatio-temporali e di media sorgente rispettivamente. Possono, inoltre, descrivere le decomposizioni gerarchiche ad albero di segmento tale da formare un indice di contenuti per il video. Di seguito si definisce la semantica di SegmentDecompositionType. Name Definition SegmentDecompositionType Questo tipo è il tipo astratto che descrive una decomposizione gerarchica di un segmento. Una decomposizione di segmento richiede che l'unione dei limiti definiti dai sub-segments non si estende oltre i limiti definiti dal segmento del genitore. Criteria Indica il criterio usato nella decomposizione di segmento (facoltativa). Per esempio, il criterio poteva essere "color" o " camera motion and texture ". Overlap Indica se i segmenti che derivano dalla decomposizione di segmento coincidono o meno a tempo e/o lo spazio. Il valore dell’ attributo di default è "falso". Gap Indica se i segmenti che derivano dalla decomposizione di segmento lasciano gap rispetto al segmento genitore. Una decomposizione di segmento si dice che ha un gap se l'unione dei sub-segments decomposti del figlio non corrisponde esattamente al segmento genitore. Il valore di questo attributo è "falso" di default. Semantica di TemporalSegmentDecompositionType: Name Definition TemporalSegmentDecompositionType E' un tipo astratto che descrive una decompositione temporale pag. 79 Semantics of the MediaSourceSegmentDecompositionType: Name Definition MediaSoruceSegmentDecompositionType E' un tipo astratto che descrive una decompositione dal punto del media. Il SegmentDecomposition DSs specializzato descrive la decomposizione ricorsiva di un segmento che può formare una gerarchia dell'albero dei segmenti. Per esempio, la descrizione dell'albero di segmento di un video è in grado di descrivere la segmentazione temporale gerarchica del video in scene, nei shot e nei sub shot per formare un indice basato sulla struttura relativa. Il SegmentDecomposition DSs specializzato inoltre descrive la decomposizione di un segmento in diverse tracce, per esempio si consideri il contenuto multimediale che contiene le tracce audio multiple per stereo surround e tracce video multiple per differenti punti di vista della macchina fotografica. Il SegmentDecomposition DSs specializzato può descrivere la decomposizione del contenuto multimediale nelle diverse fonti audio e video dei media. Sono previsti quattro tipi di base di decomposizioni di segmento, cioè, spaziale, temporale, spatio-temporale e di media source, definiti come tipi derivati di SegmentDecomposition DS: lo SpatialSegmentDecomposition, il TemporalSegmentDecomposition, lo SpatioTemporalSegmentDecomposition ed il MediaSourceSegmentDecomposition DSs, rispettivamente. Nelle decomposizioni temporali il SegmentDecomposition DS richiede di verificare le dimensioni dal segmento figlio rispetto a quelle del segmento genitore. Per esempio, nella decomposizione temporale del segmento genitore nella la figura 18.a in tre segmenti figli, i segmenti figli non si estendono oltre l'intervallo temporale specificato per il segmento genitore. Tuttavia, la decomposizione di un segmento può avere le lacune o sovrapposizioni fra i segmenti derivando dalla decomposizione come segue: a) No gaps, no overlaps b) No gaps, overlaps c) Gaps, no overlaps d) Gaps, overlaps La figura 18 mostra esempi di esposizioni delle decomposizioni dei segmenti temporali che illustrano i concetti delle lacune e delle sovrapposizioni. La figura 18.a e la figura 18.b descrivono le decomposizioni che non hanno le lacune o sovrapposizioni. In entrambi i casi l'unione dei sub-segmenti figli corrisponde esattamente al segmento genitore e l'intersezione fra i sub-segmenti del bambino è vuota. Ciò si applica anche in questo caso come appare la figura 18.b, in cui il genitore non è collegato con se stesso. La figura 18.c mostra una decomposizione con le lacune ma nessun sovrapposizioni. Per concludere, la pag. 80 figura 18.d illustra un caso più complesso dove il genitore si compone di due componenti collegati ed è decomposto con le lacune e le sovrapposizioni dei tre figli: il primo è composto di due componenti collegati, mentre i due figli restanti si compongono di singolo segmento collegato. Questi esempi inoltre dimostrano il fatto che la connettività di segmento è indipendente dalla decomposizione di segmento: un segmento non-collegato può essere decomposto senza le lacune e un segmento collegato può essere decomposto con le lacune. Segmento padre: segmento unico Segmento padre:due segmenti connessi Tempo Tempo seg.Padre. seg.Padre. seg. figlio seg. figlio a) c) Decomposizione in 3 segmenti senza gap ne overlap b) Decomposizione in 4 segmenti senza gap ne overlap Tempo Tempo seg.Padre seg.Padre seg. figlio. seg. figlio. Decomposizione in 3 segmenti con gap ma senza overlap Decomposizione in 3 segmenti con gap e overlap d) Figura 14 : ESEMPIO DI DECOMPOSIZIONI TEMPORALI: A) E B) DECOMPOSIZIONI SENZA GAPS O OVERLAPS; C) E D) DECOMPOSIZIONI CON GAPS O OVERLAPS. Si noti che un segmento può essere decomposto in uno o più sub-segmenti di tipi differenti, per esempio un video segmento può essere decomposto nelle still regions and moving regions , che possono essere decomposte nelle still regions allo stesso tempo. Tuttavia, non tutte le combinazioni del tipo di segmento genitore, del tipo di decomposizione e del tipo di segmento figlio sono valide. Per esempio, un segmento audio può essere decomposto soltanto nel tempo o nel media in altri segmenti audio; la decomposizione spaziale di un segmento audio nelle still regions è non valida. Un altro esempio una still region può essere decomposta soltanto nello spazio in altre still region incluse i testi di immagine. Il pag. 81 Mosaic DS è un caso speciale di StillRegion DS, che non può essere il risultato di alcuna decomposizione di segmento. Gli strumenti di decomposizione di un segmento AV si estendono da quelli base di decomposizione di segmento. Gli strumenti di decomposizione di segmento AV descrivono la decomposizione di un segmento AV in uno o più sub-segments nello spazio, nel tempo, o in entrambe o e nel media source. Sintassi degli strumenti di decomposizione degli AudioVisual Segment: <!-- ######################################################### --> <!-- Definizione di AudioVisualSegmentTemporalDecomposition DS --> <!-- ######################################################### --> <complexType name="AudioVisualSegmentTemporalDecompositionType"> <complexContent> <extension base="mpeg7:TemporalSegmentDecompositionType"> <choice minOccurs="1" maxOccurs="unbounded"> <element name="AudioVisualSegment" type="mpeg7:AudioVisualSegmentType"/> <element name="AudioVisualSegmentRef" type="mpeg7:ReferenceType"/> <element name="AudioVisualRegion" type="mpeg7:AudioVisualRegionType"/> <element name="AudioVisualRegionRef" type="mpeg7:ReferenceType"/> </choice> </extension> </complexContent> </complexType> <!-- ################################################################ --> <!-- Definizione di AudioVisualSegmentMediaSourceDecomposition DS --> <!-- ################################################################ --> <complexType name="AudioVisualSegmentMediaSourceDecompositionType"> <complexContent> <extension base="mpeg7:MediaSourceSegmentDecompositionType"> <choice minOccurs="1" maxOccurs="unbounded"> <element name="AudioVisualSegment" type="mpeg7:AudioVisualSegmentType"/> pag. 82 <element name="AudioVisualSegmentRef" type="mpeg7:ReferenceType"/> <element name="VideoSegment" type="mpeg7:VideoSegmentType"/> <element name="VideoSegmentRef" type="mpeg7:ReferenceType"/> <element name="AudioSegment" type="mpeg7:AudioSegmentType"/> <element name="AudioSegmentRef" type="mpeg7:ReferenceType"/> </choice> </extension> </complexContent> </complexType> 4.3 ESTRAZIONE DELLE INFORMAZIONI La risorsa audiovisiva scelta per la nostra descrizione è un telegiornale. L'obbiettivo principale è, secondo le problematiche di documentezione dagli archivi Rai, la possibilità di riuscire a catalogare ogni sottosequenza logica importante del contenuto audiovisivo preso come esempio (es. Servizio), così da poter ricercarle individualmente e in un secondo momento riutilizzarle. Nella definizione di una struttura dati Mpeg-7 MDS adatta allo scopo si è individuato come fondamentale la necessità di riconoscere gli strumenti per l’identificazione e localizzazione della risorsa base memorizzata in un archivio digitale. Gli strumenti di Mpeg-7 consentono , quindi, di fare riferimento direttamente ai files audiovisivi codificati in MPEG. La catalogazione verrà effettuata sul contenuto del singolo servizio, dando una completa descrizione con diversi livelli di astrazione. Saranno presenti sia informazione necessarie per identificare l'intero programma televisivo ( il Telegiornale) sia una descrizione delle singole sequenze. 4.3.1 MODALITÀ DI ESTRAZIONE Per la descrizione della risorsa audiovisiva è stato scelto Movie Tool, nato per aiutare ricercatori o disegnatori di applicazioni Mpeg7. Movie Tool è uno strumento in fase di primo rilascio per la sperimantazione in grado di per creare descrizioni di un contenuto video conforme alla sintassi Mpeg7. Ricoh vuole in questo modo contribuire all’avanzamento delle attività di ricerca relative a Mpeg7 e incoraggiarne l’uso distribuendo Movie Tool alla comunità di Mpeg7, per supportare ricercatori o disegnatori di applicazioni Mpeg7. Usando MovieTool, l'utente (amministratore o documentatori di archivi digitale) può generare la struttura logica di descrizione mentre visiona il video. Inoltre si pag. 83 hanno funzioni per editare file XML contenenti la descrizione Mpeg-7. Sarà necessario inserire manualmente tutte le informazioni riguardanti il contenuto, l’utilizzo e la produzione della risorsa audiovisiva grazie all'aiuto di un Mpeg7 editor che permette di aggiungere altri descrittori secondo lo schema MDS. Le informazioni che possono essere ricavate in modo automatico sono gli intervalli temporali generati dalla segmentazione video, la struttura di decomposizione del video e le informazioni sul profilo del media. Un vantaggio importante nell’integrare MovieTool in questa fase di sviluppo è che il documentatore può vedere rapidamente e facilmente la corrispondenza fra le descrizioni Mpeg-7 e la struttura di ogni sequenza video. Le descrizioni possono essere aggiunte per ogni sequenza e diventare parti del file Mpeg-7. Inoltre è possibile caricare un'istanza Mpeg-7 conforme allo Schema e visualizzarne la struttura logica, cioè il modo in cui si è descritto un particolare contenuto video. Si elencano di seguito tutte le funzionalità ricercate in questa integrazione: • La generazione di una descrizione Mpeg-7 al caricamento di file video. • L'ottenimento di indizi visivi per aiutare l'utente nella generazione della struttura del video. • ·Inserimento automatico della struttura nella descrizione Mpeg-7. • ·Assistenza visiva nel mostrare le relazioni fra la struttura e la descrizione Mpeg-7. • Scelta tra diverse etichette Mpeg-7 disponibili. • ·Controllo della convalida delle descrizioni Mpeg-7 in conformità con lo schema Mpeg-7. • Possibilità di descrivere tutti i metadati definiti in Mpeg-7. • Capacità di accoglire tutti i cambiamenti ed estensioni futuri fatti per lo schema Mpeg-7. Nella figura viene illustrato il componente Composer Window in cui si possono visualizzare tre diversi aspetti dello stesso file Mpeg: pag. 84 Figura 15 : COMPOSER WINDOW Le informazioni fisiche del file (per esempio dimensioni e formato del file) sono visualizzate nella Physical File View. Il valore dell'attributo “criteria” AudioVisualSegmentMediaSourceDecompositionType è in questo caso “physical”. Le informazioni sulla struttura logica di un video sono visualizzate nella `Logical Structure File View’. Il punto importante è che il valore dell'attributo “criteria” di AudioVisualSegmentTemporalDecompositionType è "structure" e questo elemento ha Audio-VisualSegmentType come elemento figlio. In MovieTool, la struttura gerarchica di descrizione è individuata tramite l’ uso ricorsivo di AudioVisualSegmentTemporalDecompositionType e di AudioVisualSegmentType (in figura abbiamo tre livelli gerarchici B,C e D ). E' possibile accedere ad informazioni sui frame chiave, visualizzate nella `Spatial Key View’. Fondamentale notare che il valore dell'attributo "criteria" VideoSegmentTemporalDecomposi-tionType è “spatialkey” ed il rapporto fra il frame chiave e la struttura logica è descritto usando BinaryOtherSegmentRelationType e BinaryTemporalSegmentRelation Type. pag. 85 Figura 16 : COMPOSER WINDOW Dopo aver caricato un file video nella Composer Window, si può segmentarlo e visualizzarne l'operazione, come mostrato nella figura precedente. Abbiamo vari livelli nella struttura logica. Il primo di questo rappresenta l'intero video senza modifiche alcune. I livelli inferiori indicano quali modifiche sono state apportate alla struttura logica del file Mpeg. Per generare una tal struttura, MovieTool fornisce le seguenti funzioni: • Segmentazione automatica basata sul confronto della caratteristica dei singoli frame all'interno di una scena.(cambio scena) • Segmentazione manuale mentre si osservava il video.· • Segmentazione basata sulle informazioni posizionali quali il numero di frame o il tempo della struttura. E' possibile, quindi, operare una qualsiasi segmentazione video e generare in maniera assistita il documento Mpeg7, in quanto il componente interpreterà automaticamente la struttura logica generata come descrizione Mpeg-7. In riferimento alla figura 21 a destra c’è la descrizione Mpeg-7, a sinistra c’è lo schema che definisce la sintassi Mpeg-7. Con questo avanzato software è possibile documentatore di cambiare la struttura logica di descrizione nella Video Composer Window, di visualizzare subito il documento Mpeg-7 senza dovere riferirsi ai particolari della sintassi Mpeg-7. pag. 86 Figura 17 : MPEG-7 EDITOR WINDOW Quando la descrizione è completa, il file è conservato come un file Mpeg-7 con una estensione "xml". Mpeg-7 fornisce un'ampia varietà di tag per risolvere tutte le circostanze possibili. La sintassi per questi tag è data nel file dello schema Mpeg-7. Il tool integrato può inoltre rispondere ai cambiamenti futuri o espansioni allo schema Mpeg-7. Questo rappresenta un importante passo avanti nello sviluppo di un progetto che nella sua prima fase non prevedeva la codifica da estrazione assistita o semiautomatica di informazioni Mpeg-7. 4.4 GENERAZIONE DEL DOCUMENTO MPEG-7 Sulla base delle argomentazioni affrontate è stato costruito un primo esempio di descrizione che potrà servire da base per le possibili estensioni utili allo sviluppo di un archivio di contenuti audiovisivi secondo le esigenze riscontrate nell’ambiente applicativo della Teca Fast Rai. Tale esempio di descrizione è stato applicato a tre telegiornali trasmessi e codificati dalle reti nazionali RAI. La struttura gerarchica del documento Mpeg-7, come viene interpretata da Movie Tool nella Composer Window, è mostrata in figura. pag. 87 Figura 18 : DESCRIZIONE DELLA DDL (DESCRIPTION DEFINITION LANGUAGE) DI MPEG-7 IN MOVIE TOOL La figura di seguito mostra in modo particolareggiato la struttura del documento di descrizione Mpeg-7 del programma televisivo (Telegiornale) preso in esame: pag. 88 Figura 19 : SCHEMA SEMPLIFICATO CHE ILLUSTRA LA STRUTTURA DATI AD ALBERO PER LA DESCRIZIONE BASATA SU METADATI DEL PROGRAMMA CREATO. Facendo riferimento all’introduzione fatta sui tipi di dato, i descrittori e i DS (description schemes) base impiegati da Mpeg-7 MDS Schema, vediamo ora nel dettaglio i singoli strumenti di descrizione che sono stati implementati nella costruzione della struttura dati del documento. 4.4.1 L’ELEMENTO DESCRIPTIONMETADATA Partendo dall’elemento radice analizziamo tutta la struttura e il tipo di informazioni che sono state inserite. Dopo l’elemento radice MPEG7, si trova l’elemento DescriptionMetadata. pag. 89 Figura 20 : STRUTTURA DATI DEL DOCUMENTO DI DESCRIZIONE: DETTAGLIO DELL'ELEMENTO DESCRIPTIONMETADATA DescriptionMetadata fa riferimento a DescriptionMetadata DS per descrivere le informazioni riguardanti la descrizione stessa (metadati sui metadati). Il DescriptionMetadata DS può essere inserito in uno strumento di descrizione nel modo mostrato nello schema di figura, e riporta informazioni riguardanti l’identificazione della descrizione (privata o pubblica), la creazione della descrizione, e i diritti associati alla descrizione stessa (che diventa un contenuto di valore). La semantica di DescriptionMetadata DS viene riportata nella seguente tabella. pag. 90 Nome Descrizione Version Specifica la versione della descrizione alla quale questo DS viene allegato. Il formato per l’informazione di versione è dipendente dal tipo di applicazione (e comunque opzionale). LastUpdated Specifica l’istante in cui è stato aggiornato per l’ultima volta l’informazione di descrizione alla quale questo DS viene allegato (è opzionale). Comment Descrive i commenti riguardo alla descrizione a cui viene allegato tale DS, utilizzando una annotazione di tipo testuale (Opzionale). PublicIdentifier Identifica la descrizione alla quale viene allegato questo DS utilizzando un identificatore pubblico, unico a livello globale (è opzionale). Questo identificatore può essere usato per identificare univocamente le descrizioni e non dipende dal file o dal flusso in cui la descrizione compare, o ogni altro incorporamento fisico di metadati. Diversi identificatori pubblici possono essere associati ad una descrizione. Creator Descrive un autore della descrizione cui viene alegato questo DS (è opzionale). Questo può essere una persona, un’organizzazione, o un’applicazione software che genera automaticamente i metadati. Diversi creatori sono consentiti se i metadati sono stati creati come risultato della cooperazione di diversi soggetti. CreationLocation Descrive la località in cui la descrizione cui è allegato tale DS è stata creata. CreationTime Descrive l’istante in cui la descrizione cui tale DS è allegato è stata creata. Instrument Le apparecchiature/procedure e I parametri di settaggio utilizzati per la creazione dei metadati, così come gli strumenti utilizzati per l’estrazione dei metadati o i parametri di estrazione (è opzionale). Rights Descrive I diritti associati con la descrizione cui tale DS (Description Metadata DS) è allegato e come tale descrizione può essere utilizzata (è opzionale). pag. 91 Il codice implementato nel documento DescriptionMetadata nel seguente listato: è visibile per la parte di <DescriptionMetadata id="descriptionMetadata-36"> <Comment> <FreeTextAnnotation>Descrizione delle contenuto audiovisivo di un telegiornale RAI</FreeTextAnnotation> informazioni descrittive del </Comment> <Creator> <Agent xsi:type="PersonType" id="agent-37"> <Name> <GivenName>Donato Biscaglia </GivenName> </Name> </Agent> <Instrument> <Tool id="tool-38" href="urn:ricoh:mmVISION:DescriptionToolCS:2"> <Name>MovieTool</Name> </Tool> </Instrument> </Creator> <CreationTime>2002-06-10T11:13:00:000:00</CreationTime> </DescriptionMetadata> 4.4.2 L’ELEMENTO MEDIALOCATOR: LOCALIZZAZIONE TEMPORALE E FISICA DELL’AUDIOVISIVO. Il descrittore MediaLocator è stato inserito per contenere le informazioni sulla localizzazione temporale o fisica della risorsa multimediale. Come mostrato in precedenza, il primo degli elementi figli di AudioVisual, nella struttura dati costruita per il prototipo, è MediaLocator, nel quale vengono racchiuse informazioni sulla localizzazione temporale dell'intero telegiornale come la data e l’ora di trasmissione sulla rete nazionale pubblica (uno dei tre canali televisivi RAI ad esempio). In seguito verrà utilizzato per collegare fisicamente il contenuto multimediale, come l’indirizzo del server dove risiede la risorsa fisica. pag. 92 Figura 21 : STRUTTURA DATI DEL DOCUMENTO DI DESCRIZIONE: DETTAGLIO DELL'ELEMENTO MEDIALOCATOR Le informazioni di inizio trasmissione (data e ora) e sulla locazione fisica della sequenza sono fondamentali per l’individuazione della risorsa attraverso gli attuali sistemi di richiesta audiovisivi all’interno degli archivi RAI. In particolare per specifica di progetto dettata dai responsabili dell’archivio digitale Teca Fast le due informazioni temporali di time code di inizio e data di trasmissione sono necessarie per poter effettuare una richiesta del programma individuato attraverso una connessione intranet al sistema Teca Fast (assieme all’altra informazione fondamentale dell’identificatore del canale televisivo sul quale è stato trasmesso il programma). In questo particolare caso il descrittore è utilizzato per indicare le informazioni di inizio trasmissione (data e ora). Come si vedrà in seguito , quando si analizzerà la struttura logica (divisione in sequenze), MediaLocator potrà indicare invece l’indirizzo del server dove risiede la risorsa fisica. pag. 93 L’elemento AudioVisual consente di istanziare un elemento figlio proprio di tipo MediaLocator, che risulta quindi molto utile per l’identificazione ad un livello gerarchico sufficientemente elevato di queste informazioni fondamentali. Media Locators Per collegare fisicamente le descrizioni al contenuto in generale, un meccanismo di riferimento denominato il MediaLocatorType è specificato. Il MediaLocator permette di riferirsi alla descrizione del media con due meccanismi: il MediaUri ed l'InlineMedia. Il MediaUri è usato per individuare un media esterno, mentre l' InlineMedia include il contenuto in se stesso. Nel caso di una localizzazione del media esterno dal MediaUri lo StreamID può essere specificato per identificare un flusso all'interno del contenuto multimediale. Per localizzare temporalmente la risorsa audiovisiva si utilizza il TemporalSegmentLocatorType che può instaziare ulteriormente MediaTime o BytePosition per individuare le parti del media. Inoltre una combinazione di TemporalSegmentLocatorType può essere usata per localizzare i segmenti di audiovisivi. Analizziamo la semantica di MediaLocatorType e di TemporalSegmentLocator Datatype che è considerata un espansione di MediaLocator Datatype. Semantica di MediaLocatorType: Nome Definizione MediaLocatorType Specifica la posizione del media. La posizione del media può essere o specificata facendo riferimento ad media esterno usando l'elemento di MediaUri o includendo i dati all'interno della descrizione come l' InlineMedia. Un flusso particolare all'interno del media costituito da flussi multipli può essere specificato usando l'elemento di StreamID. Se non c'è nessuno StreamID presente, è presupposto che il media contenga soltanto un singolo flusso, o che tutti i flussi nei dati di mezzi sono individuati simultaneamente. MediaUri Specifica la posizione dei dati esterni di mezzi di media (facoltativi). InlineMedia Specifica i dati in-linea di mezzi inclusi nella descrizione (facoltativa). StreamID Identifica un flusso particolare contenuto nel media che è costituito da flussi multipli (facoltativi). pag. 94 Semantica di TemporalSegmentLocatorType: Nome Definizione TemporalSegmentLocatorType Specifica la posizione dei dati temporali del media come il video e l'audio. Una localizzazione del media all'interno di una data informazione temporale del media può essere specificata usando il MediaTime o l'elemento di BytePosition. Se nè il MediaTime nè l'elemento di BytePosition sono instaziati, un intero dato temporale del media è localizzato. MediaTime Specifica la localizzazione di un parziale segmento temporale all'interno di una data informazione temporale del media usando un punto temporale o un punto temporale e una durata (facoltativa). Se soltanto il punto temporale è specificato, il segmento è “open-ended ", cioè, il periodo di fine del segmento corrisponde al periodo di conclusione del contenuto della risorsa multimediale. Esempio di MediaLocator Datatype <myTemporalSegmentLocator> <MediaUri>http://www.mpeg7.org/demo.mpg</MediaUri> <MediaTime> <MediaRelTimePoint timeBase="../../MediaUri"> PT3S</MediaRelTimePoint> <MediaDuration>PT10S</MediaDuration> </MediaTime> </myTemporalSegmentLocator> <myMediaLocator> <MediaUri>http://www.mpeg7.org/demo.mp4</MediaUri> <StreamID>1</StreamID> </myMediaLocator> <myImageLocator> <MediaUri>http://www.mpeg7.org/demo.ppm</MediaUri> <BytePosition offset="1024"/> </myImageLocator> pag. 95 Nel primo esempio la posizione di video segmento è specificata dal URI di video file e del relativo tempo di inizio rispetto all'inizio del file e della durata del segmento. Nel secondo esempio, il MediaLocator si riferisce ad un flusso particolare all'interno di un file Mpeg-4. Nel terzo esempio, il media è semplicemente localizzato usando un byte-offset hanno dall'inizio del file conosciuto. 4.4.3 L’ELEMENTO STRUCTURALUNIT: IL RUOLO DEL SEGMENTO AV StructuralUnit descrive il ruolo del segmento nella struttura dell' intero contenuto multimediale a cui appartiene. Le unità strutturali del contenuto multimediale dipendono dalla classificazione del contenuto multimediale, notizie o per esempio, di movie, (veda la forma nella classificazione DS). Per esempio, la notizia, il sommario ed il rapporto possono essere le unità strutturali in un programma di notizie; la storia, la scena ed il colpo hanno potuto essere le unità strutturali in un movie. Figura 22 : STRUTTURA DATI DEL DOCUMENTO DI DESCRIZIONE: DETTAGLIO DELL'ELEMENT STRUCTURALUNIT pag. 96 I possibili valori di StructuralUnit: “logical” : si riferisce all’intera struttura logica individuata nella Composer Window “phisical” : si riferisce al file fisico individuato nella Composer Window “description”: si riferisce alla descrizione vera e propria della risorsa audiovisiva creata nel Mpeg-7 Editor “structure” : si riferisce alla descrizione della struttura logica in cui è stata divisa le risorsa audiovisiva L'elemento StructuralUnit del prototipo di documento costruito <StructuralUnit id="structuralUnit-27" href="urn:ricoh:mmVISION:SegmentTypeCS:4"> <Name xml:lang="en"> logical</Name> </StructuralUnit> 4.4.4 L’ELEMENTO CREATIONINFORMATION: CREAZIONE E CLASSIFICAZIONE I metadati riguardanti la creazione (titolo, regia, produttore, etc.) e la classificazione (format, genere, etc.) del programma televisivo sono contenuti nell’elemento CreationInformation della struttura dati progettata. Nella figura seguente si vede in un primo dettaglio che tali informazioni sono suddivise in due sottoblocchi separati, inglobate negli elementi Creation e Classification. pag. 97 Figura 23 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO CREATIONINFORMATION. Si fa riferimento agli strumenti di descrizione necessari alla descrizione di metadata generati da operatori umani o estratti da altri database riguardanti il processo di generazione/produzione del contenuto multimediale, nel nostro caso del programma televisivo. Gli strumenti specificati in questa parte dal documento MDS Schema Mpeg-7 (versione FCD) sono i seguenti: Il CreationInformation DS contiene: • Informazioni riguardanti il processo di creazione che non possono essere percepite nel materiale audiovisivo o multimediale ( ad esempio l’autore della sceneggiatura, il regista, il personaggio, il target di utenza, etc.) e informazioni sul processo di creazione che si percepisce nel contenuto multimediale ( ad esempio gli attori nel video, i musicisti in un concerto). • Le informazioni di classificazione ( ad esempio l’audience, il genere, la fasci di età consigliata, etc.) pag. 98 Questo DS può essere allegato ad ogni elemento di tipo Segment DS. Invece, una descrizione completa può contenere segmenti che sono annotati con un dettaglio maggiore e questi segmenti possono essere stati prodotti e utilizzati indipendentemente e/o in diversi materiali multimediali e segmenti. Sintassi di CreationInformation DS <!-- ################################################ --> <!-- Definizione CreationInformation DS --> <!-- ################################################ --> <complexType name="CreationInformationType"> <complexContent> <extension base="mpeg7:DSType"> <sequence> <element name="Creation" type="mpeg7:CreationType"/> <element name="Classification" type="mpeg7:ClassificationType" minOccurs="0"/> <element type="mpeg7:RelatedMaterialType" minOccurs="0" maxOccurs="unbounded"/> name="RelatedMaterial" </sequence> </extension> </complexContent> </complexType> Semantica di CreationInformationType: Nome Definizione CreationInformationType Descrive le caratteristiche legate alla creazione del contenuto multimediale. Creation Descrive da chi, quando, dove, etc. il contenuto multimediale è stato creato. Classification Descrive la classificazione orientata all’utente e orientata al servizio del contenuto multimediale. RelatedMaterial Descrive informazioni addizionali circa il materiale cui si fa riferimento nel contenuto multimediale. pag. 99 Un diagramma di CreationType viene riportato nella seguente figura: Figura 24 : DIAGRAMMA DI CREATIONTYPE Di seguito viene riportata la struttura dell'elemento Creation del documento di descrizione. Figura 25 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO : DETTAGLIO DELL’ELEMENTO CREATION. pag.100 La semantica di CreationType: Nome Definizione CreationType Descrive la creazione del contenuto, incluse location, date, azioni, materiali, personale dello staff (tecnico e artistico) e organizzazioni coinvolte. Title Descrive un titolo testuale del contenuto multimediale. Sono consentiti diversi titoli. Questi possono corrispondere a differenti tipi (indicati dall’attributo tipo) o a differenti linguaggi (indicati dall’attributo xml:lang). TitleMedia Descrive un titolo non testuale, ma multimediale del contenuto multimediale stesso. Questo serve da identificatore multimediale della risorsa descritta. Può contenere un titolo sotto forma di una immagine, un clip audio, e/o un video. Abstract Descrive un abstract del contenuto multimediale. Creator Descrive un creatore del contenuto multimediale. Esso consente di descrivere persone, organizzazioni, gruppi, etc. coinvolti nella creazione assieme col ruolo ricoperto. CreationCoordinates Descrive il posto e la data di creazione del contenuto multimediale. CreationLocation Descrive la location in cui è stato creato il contenuto multimediale. CreationDate Descrive la data o il periodo in cui il contenuto multimediale è stato creato. Semantica di TitleType: Nome Definizione TitleType Indica il titolo testuale del contenuto multimediale. type Attributo di Title che indica il tipo di titolo testuale, secondo pag.101 Nome Definizione la lista di valori seguente: main – Il titolo è il titolo principale dato dal creatore. Questo è il tipo predefinito per il titolo. secondary – Il titolo è il titolo secondario dato dal creatore. alternative – Il titolo è un titolo alternativo dato dal creatore. original – Il titolo è quello originale dato dal creatore. popular – Il titolo è un titolo popolare dato dal pubblico e dai media. Semantica di CreatorType: Nome Definizione CreatorType Descrive il creatore del contenuto multimediale o della descrizione. Il creatore può essere una persona (o più), o un gruppo (o più gruppi), o una o piu’ organizzazioni coinvolte nel processo di creazione. Role Descrive il ruolo giocato dal creatore nel processo di creazione. Un esempio di schema di classificazione per questo elemento è MPEG7RoleCS. Agent Descrive l’agente (persona, organizzazione o gruppo) coinvolto nella creazione. Character Descrive il nome di un personaggio di finzione (character) che è parte del contenuto multimediale o che specifica un ruolo interpretato da un attore. Può essere associato ad un creatore piu’ di un descrittore di personaggio (character). Instrument Descrive l’apparecchiatura o lo strumento impiegato dal creatore. pag.102 Figura 26 : DIAGRAMMI DEL TIPO DI DATO CREATORTYPE E DELL’ELEMENTO ISTANZIATO CREATOR. Passando all’elemento Classification, lo schema di descrizione a cui si riferisce all’interno di Mpeg-7 Multimedia Description Shemes è Classification DS. Questo descrive le informazioni di classificazione del contenuto multimediale. Le descrizioni risultanti facilitano la ricerca e filtraggio di contenuti multimediali basandosi sulle preferenze dell’utente ( come ad esempio lingua, stile, genere, etc.) e le classificazioni orientate al servizio ( come ad esempio scopo, fasce d’età, segmentazione del mercato, recensione da parte dei media, etc.). Nella figura seguente si vede un primo dettaglio dei componenti dell’elemento Classification istanziati nel documento del prototipo. Figura 27 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO CLASSIFICATION. pag.103 La semantica di ClassificationType, per la parte di interesse per l’applicazione, è la seguente: Nome Definizione ClassificationType Descrive la classificazione del contenuto multimediale. Form Descrive il tipo di produzione del documento, come ad esempio, film, telegiornale (news), programma, magazine, documentario, etc. Un esempio di schema di classificazione reale è TVAnytime_v0.1FormatCS. Genre Descrive di cosa si occupa il contenuto multimediale (classificazione piu’ ampia) come ad esempio sport, politica, economia, etc. Subject Descrive il soggetto (classificazione specifica) del contenuto multimediale. Il soggetto consente una annotazione testuale per la classificazione del contenuto. Language Descrive una lingua dei dialoghi del programma. Release Descrive la data e la nazione cui fa riferimento la release del contenuto multimediale. Date Indica la data in cui il contenuto è stato rilasciato per la prima volta. Questa data può essere diversa dalla data o date in cui è stato creato. Target Descrive il target del contenuto multimediale in termini di classificazione di mercato, età e nazionalità. Age Descrive l’intervallo di età del target di utenti per il contenuto. Country Descrive la nazione alla quale il contenuto è destinato. Semantica di GenreType: Nome Definizione GenreType Descrive il genere (classificazione più ampia) del contenuto multimediale. Un esempio di schema di classificazione è TVAnytime_v0.1ContentCS. Type Indica il tipo del genere del contenuto. I tipi di genere sono pag.104 Nome Definizione definiti come segue: main – Il genere è il principale, o primario. Questo è il valore di default. secondary – Il genere specificato è un genere secondario, come un sottogenere. other – Il genere specificato è un genere alternativo, come un genere definito o utilizzato da terze parti. 4.4.5 L’ELEMENTO USAGEINFORMATION: USO DEL CONTENUTO AUDIOVISIVO L’elemento UsageInformation fa riferimento alla parte di descrizione che specifica le informazioni riguardo l’uso del contenuto multimediale. Nella figura seguente è possibile vedere la collocazione gerarchica di tale elemento nella struttura del documento Mpeg-7 di descrizione del programma di esempio . Figura 28 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO USAGEINFORMATION. Si fa riferimento agli strumenti di descrizione della parte Usage di MDS Schema, che sono: Gli Usage Tool descrivono I metadati riguardo all’uso del contenuto multimediale. UsageInformation DS include un descrittore Rights, uno o nessun FinancialResults DS, e diversi Availability DSs e associati UsageRecord DS. • Rights D contiene riferimenti ai proprietari dei diritti per poter ottenere informazioni sui diritti. pag.105 • Financial D contiene la descrizione dei costi e dei ricavi generati dal contenuto multimediale. • Availability DS descrive i dettagli riguardanti la disponibilità del contenuto multimediale per l’uso. • UsageRecord DS descrive i dettagli concernenti l’uso del contenuto multimediale. E’ importante notare che la descrizione di UsageInformation DS incorporerà nuove descrizioni ogni volta che il contenuto multimediale verrà utilizzato (ad esempio in UsageRecord DS, in Income nel Financial D), o quando vi saranno nuove modalità di accesso al contenuto stesso (Availability DS). Potenzialmente gli strumenti messi a disposizione consentono l’aggiunta di nuove descrizioni ogni volta che il contenuto viene usato (ad esempio UsageRecord, Income), o quando vi sono nuove modalità di accesso disponibili per il contenuto per alcuni tipi di applicazioni, se richiesto. In tal caso, la dimensione della descrizione potrebbe crescere in modo significativo. Queste informazioni dovrebbero essere tenute in conto nel progettare sistemi e applicazioni che usano tali descrizioni. Nel seguente listato è riportata la definizione di UsageInformation DS: Sintassi di UsageInformation DS <!-- ################################################ --> <!-- definizione di UsageInformation DS --> <!-- ################################################ --> <complexType name="UsageInformationType"> <complexContent> <extension base="mpeg7:DSType"> <sequence> <element name="Rights" type="mpeg7:RightsType"/> <element name="FinancialResults" type="mpeg7:FinancialType" minOccurs="0"/> <element name="Availability" type="mpeg7:AvailabilityType" minOccurs="0" maxOccurs="unbounded"/> <element name="UsageRecord" type="mpeg7:UsageRecordType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> pag.106 La semantica di UsageInformationType è la seguente: Nome Definizione UsageInformationType Descrive le caratteristiche d’uso del contenuto multimediale. Rights Descrive le informazioni riguardanti I proprietari dei diritti del contenuto multimediale descritto, e come tale contenuto può essere fruito. FinancialResults Descrive il costo della creazione del contenuto multimediale e il ricavo che esso ha generato. I ricavi variano col tempo. Availability Descrive dove, quando, come, e da parte di chi il contenuto multimediale può essere utilizzato. UsageRecord Descrive dove, quando, come, e da chi il contenuto multimediale è stato usato in precedenza. Il descrittore Rights D descrive le connessioni coi proprietari dei diritti d’autore del contenuto multimediale (IPR, Intellectual Property Rights) e i diritti di accesso (Access Rights). La proprietà dei diritti è dinamica e in quanto tale può passare da un proprietario ad un altro. Per esempio, i diritti per una produzione televisiva (o parte di essa) sono spesso licenziati e assegnati. Per consentire a dei sistemi informatici di rilevare la situazione attuale dei diritti, Rights DS trasporta un identificatore che può essere interpretato attraverso una apposita agenzia. Per gli scopi della gestione dei diritti (peraltro oggetto di un successivo lavoro di sviluppo da parte dei committenti di questa sperimentazione) tali agenzie e sistemi devono progressivamente essere in grado di abilitare i proprietari di diritti d’autore a dichiarare l’identità del proprietario attuale dei diritti stessi. In questa prima fase si intende la proprietà dei diritti come un’entità trattata staticamente, prevedendo inizialmente che tali informazioni vengano inserite all’atto della creazione della descrizione del contenuto audiovisivo di un programma. Si prevede in successive revisioni di approfondire questa tematica di grande interesse per i proprietari di diritti sui contenuti di grandi dimensioni come la RAI. Un esempio di implementazione dell’elemento UsageInformation, con gli elementi selezionati per il prototipo, è indicato del seguito. pag.107 Elemento usageInformation <UsageInformation> <Rights> <RightsId> <IDOrganization> <Name>Rai Produzione Radio Televisiva (esempio)</Name> </IDOrganization> <IDName> <Name>Rai TV Rights (esempio)</Name> </IDName> <UniqueID>RAICANALE1-TV001-ITALY335666548(esempio)</UniqueID> </RightsId> </Rights> </UsageInformation> 4.4.6 L’ELEMENTO MEDIATIME Come mostrato dalla seguente figura, l’ultimo degli elementi figli di AudioVisual, nella struttura dati costruita per il prototipo, è MediaTime, nel quale vengono racchiuse informazioni temporali per la corretta descrizione del programma televisivo. Le informazioni temporali vengono inserite automaticamente inserite dal software Movie Tool ; infatti quando si costruisce la struttura logica, vengono automaticamente mappati i segmenti nel documento MPEG7 inserendo i riferimenti di inizio e durata della sequenza. Figura 29 : STRUTTURA DATI DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO MEDIATIME. pag.108 Le informazioni di inizio e durata della sequenza sono fondamentali per l’individuazione della risorsa attraverso il motore di ricerca implementato nel corso di questo progetto . In particolare per specifica di progetto le due informazioni temporali sono necessarie per poter visualizzare un determinato sevizio del TG individuato attraverso una connessione remota al Server di streaming. Passando ad una descrizione generale del tipo MediaTime, esso specifica una nozione del tempo che è codificato con il media descritto. Per l’individuazione degli intervalli di tempo, il tipo di dato MediaTime è composto di due elementi, il tempo di inizio e la durata. Se deve essere specificato un solo riferimento temporale, la durata può essere omessa. La semantica di MediaTimeType è la seguente: Nome Definizione MediaTimeType Uno schema di descrizione per la specifica di un riferimento temporale del media o di un intervallo temporale del media, che utilizza I descrittori seguenti per specificare il tempo. MediaTimePoint Un elemento che specifica un riferimento temporale del media utilizzando la data Gregoriana e il tempo giornaliero. MediaRelTimePoint Un elemento che specifica un riferimento temporale del media utilizzando un numero di giorni e l’ora giornaliera. MediaRelIncrTimepoint Un elemento che specifica un riferimento temporale nel media relativo ad una base dei tempi che conta le unità temporali. MediaDuration Un elemento che specifica la durata di un periodo di tempo del media fornendo i giorni e l’orario (opzionale). MediaIncrDuration Un elemento che specifica la durata di un periodo di tempo del media contando le unità temporali. pag.109 Il tipo di dato MediaTime utilizza due diverse modalità per descrivere un riferimento temporale o un periodo: • Utilizzando il formato Gregoriano di data e orario (MediaTimePoint, MediaRelTimePoint, MediaDuration). • Contando le unità temporali specificate attraverso degli attributi (MediaRelIncrTimePoint, MediaIncrDuration). Nel caso di segmanti video, queste unità temporali possono corrispondere al frame rate. Un diagramma della struttura di mediaTimeType viene riportato nella seguente figura: Figura 30 : DIAGRAMMA DEL TIPO DI DATO MEDIATIMETYPE. Il tipo di dato MediaRelTimePoint specifica l' istante di inizio, secondo l’orario Gregoriano. Il formato si basa sulla norma ISO 8601. Le frazioni di secondo sono specificate secondo il tipo di dato timePoint. Sintassi del tipo di dato mediaRelTimePointType <!-- ################################################ --> <!-- Definizione del tipo di dato mediaRelTimePointType --> <!-- ################################################ --> <simpleType name="mediaRelTimePointType"> <restriction base="mpeg7:basicTimePointType"> <pattern value="-?(\d+(\-\d{2}(\-\d{2})?)?)? (T\d{2}(:\d{2}(:\d{2}(:\d+)?)?)?)?(F\d+)?"/> </restriction> </simpleType> Il tipo di dato mediaRelTimePointType specifica un riferimento temporale del media utilizzando la data e l’orario Gregoriani senza specificare il TZD, Time Zone Difference (a questo proposito si rimanda alla definizione del tipo di dato TimePoint nel listato completo di MDS Schema Mpeg-7 documento FCD N3966). Il formato del valore di MediaRelTimePoint è: YYYY-MM-DDThh:mm:ss:nnn FNNN. pag.110 I simboli utilizzati per le cifre dei corrispondenti elementi di data e tempo sono i seguenti: • Y: Year, Anno che può essere un numero variabile di cifre, (la data può anche essere omessa) • M: Month, Mese. • D:Day, Giorno. • h: hour, ora. • m: minute, minuto. • s: second, secondo. • n: numero di frazioni, nnn può essere un numero arbitrario di cifre tra 0 e NNN-1 (NNN e con esso nnn possono avere un numero di cifre arbitrario). • N: numero di frazioni di un secondo che vengono tenute in conto da nnn. NNN può avere un numero arbitrario di cifre non limitato a tre. Vengono utilizzati anche dei delimitatori per la specifica dell’orario (T) e il numero delle frazioni di secondo (F). Parallelamente alla specifica della data Gregoriana, per consentire una precisione maggiore del secondo, è disponibile la specifica del time code di orario con il conteggio del numero (nnn) delle frazioni di secondo (FNNN). Se viene utilizzato il conteggio delle frazioni, il numero di frazioni che costituiscono un singolo secondo (FNNN) deve essere specificato insieme al numero di conteggio delle frazioni (nnn). Attraverso FNNN si definisce intervallo di valori del numero conteggiato di frazioni di secondo (nnn). Quindi l’intervallo di valori di ‘nnn’ è limitato tra 0 e FNNN-1. Il tipo di dato MediaIncrDuration specifica viene utilizzato sia per definire la durata dell'intero video sia per le singole sequenze. Il suo valore è espresso in frame. Per poter ottenere un formato di tempo compatibile con i parametri utilizzati da Real Server è necessario convertire il valore espresso da MediaIncrDuration. Il formato fa riferimento ad un sottoinsieme della norma ISO 8601 (per ridurre i problemi di conversione). Le frazioni di secondo sono specificate in accordo al tipo di dato timePoint. Sintassi del tipo di dato mediaIncrDuration <!-- ################################################ --> <!-- Definition of the MediaIncrDuration Datatype --> <!-- ################################################ --> <complexType name="MediaIncrDurationType"> <simpleContent> <extension base="integer"> <attribute name="timeUnit" type="mpeg7:mediaDurationType" use="optional"/> pag.111 </extension> </simpleContent> </complexType> La sua semantica è riportata nella tabella seguente: Name Definition MediaIncrDurationType E’ un tipo di dato che specifica la durata di un periodo di tempo rispettando l’unita di misura del tempo utilizzata. TimeUnit Questo attributo specifica la durata del più piccolo intervallo temporale che si può avere. Il MediaIncrDuration specifica la durata di un intervallo temporale con multipli di questo time unit. L’elemento MediaTime implementato nel prtotipo di documento è il seguente: <MediaTime> <MediaRelTimePoint> P0DT0H28M7S0N25F</MediaTimePoint> <MediaDuration timeunit=” P0DT0H0M0S1N25F”>5302</MediaDuration> </MediaTime> 4.4.7 L’ELEMENTO MEDIASOURCEDECOMPOSITION : DESCRIZIONE FISICA DEL CONTENUTO Le informazioni fisiche del file (per esempio dimensioni e formato) vengono individuate con l'uso di AudioVisualSegmentMediaSourceDecomposition Type. Queste permettono di visionare il tipo formato e supporto, oltre ad una serie di parametri sulla codifica ( es. frame rate), del contenuto video. Viene distinta dal resto del documento Mpeg7 ed individuata grazie a MediaSourceDecomposition. I suoi attributi sono, come per gli altri descrittori di decomposizione, “criteria”, il cui valore è “physical” (utilizzato per identificare che le informazioni descrittive riguardano il file fisico), “overlap” e ”gap”. Per descrivere tali informazioni si utilizza l’elemento MediaInformation, elemento figlio di AudioVisual, che viene instanziato subito dopo MediaSourceDecomposition. pag.112 E’ possibile vedere in dettaglio nello schema di figura: Figura 31 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO MEDIAINFORMATION. Il contenuto delle descrizione MPEG-7 può essere disponibile in diverse modalità, formati, schemi di codifica, e di esso possono essere disponibili diverse istanze. Per esempio un evento sportivo può essere registrato in due diverse modalità, audio e audiovideo. Ognuna di queste due modalità può essere codificata con diversi algoritmi di codifica. Questo comporta la creazione di diversi profili del media. Inoltre possono essere rese disponibili diverse istanze o copie di uno stesso contenuto multimediale per una data codifica. La figura seguente illustra i concetti di modalità, profilo e istanza. pag.113 Usage Information Creation Information Media Information Media Instance Descriptions Content Entity Usage Information Creation Information Media Information Record Original Instance Reality Record Copy (in the same profile) Content Entity Copy Original Instance Copy (to a different profile) Copied Instance Master Profile (to a different profile) Copy Copied Instance Copied Instance (in the same profile) Copied Instance describes Media Profile describes Media Instance Figura 32 : PUNTO DI VISTA DI MPEG-7 PER LA DESCRIZIONE (MODELLO DI CONTENT ENTITY, PROFILO E ISTANZA) I Media Information Tools descrivono le informazioni riguardanti il media specifico della risorsa multimediale. Il MediaInformation DS è incentrato attorno ad un identificatore per l'entità di contenuto e ad un set di parametri di codifica raggruppati in profili. Il MediaIdentification DS permette la descrizione dell'entità del contenuto. Le diverse istanze di MediaProfile DS permettono la descrizione di diversi parametri di codifica per differenti profili. La descrizione del supporto o media viene dunque incapsulata in MPEG-7 attraverso il MediaInformation DS. Questo è composto da un MediaIdentification DS opzionale e da uno o più MediaProfile DSs.I Il MediaProfile DS è composto di: un descrittore MediaFormat opzionale, un MediaTrascodingHints D opzionale, un MediaQuality D opzionale, e zero o più MediaInstance DSs. E’ presente anche uno schema di descrizione (DS) ComponetMediaProfile che permette la descrizione di profili di media multiplexati, che sono Media Profiles di contenuti multimediali composti da altri contenuti mediali come ad esempio i differenti oggetti multimediali in uno stream MPEG-4 o il video stream e gli stream audio multilingue in un DVD; un altro esempio possono essere i differenti video streams che provengono da diverse telecamere in un video stream multiplexato. Lo strumento utilizzato è dunque in questa parte il descrittore MediaInformation, che identifica e descrive le informazioni specifiche del supporto e del formato del pag.114 contenuto multimediale. Il listato con la sintassi di MediaInformation DS è il seguente: Sintassi di MediaInformation DS <!-- ################################################ --> <!-- definizione di MediaInformation DS --> <!-- ################################################ --> <complexType name="MediaInformationType"> <complexContent> <extension base="mpeg7:DSType"> <sequence> <element name="MediaIdentification" type="mpeg7:MediaIdentificationType" minOccurs="0"/> <element minOccurs="1" maxOccurs="unbounded"/> name="MediaProfile" type="mpeg7:MediaProfileType" </sequence> </extension> </complexContent> </complexType> La semantica di MediaInformationType: Nome Definizione MediaInformationType Descrive il multimediale. formato fisico dell’informazione MediaIdentification Identifica l’entita di contenuto multimediale che rappresenta una realtà. MediaProfile Descrive un Media Profile del contenuto multimediale. Il descrittore MediaIdentification identifica il contenuto multimediale indipendentemente dalle differenti istanze che sono disponibili. I diversi Media Profile di un contenuto multimediale sono descritti attraverso il loro elemento di descrizione MediaProfile e per ogni profilo ci possono essere diverse istanze di media disponibili (come vedremo tra poco). Il description scheme MediaProfile descrive un profilo del contenuto multimediale oggetto della descrizione. pag.115 Il concetto di profilo fa riferimento alle diverse variazioni che possono essere prodotte da un supporto mediale originale o master, a seconda dei valori scelti di volta in volta per la codifica, il formato di memorizzazione, etc. Il profilo corrispondente al documento multimediale originale o ad una sua copia master viene considerato come il profilo master o “master media profile”. Per ogni profilo possono esserci una o piu’ istanze del profilo master. La semantica di MediaProfileType è la seguente: Nome Definizione MediaProfileType Descrive il profilo del supporto del contenuto multimediale oggetto della descrizione. ComponentMediaProfile Descrive uno dei Media profile componenti di un Media Profile multiplexato, tale cioè da descrivere un contenuto multimediale che si presenta composto di diversi contenuti multimediali. MediaFormat Descrive il formato del Media Profile. MediaTranscodingHints Descrive i suggerimenti di trascodifica per il Media Profile. MediaQuality Descrive la qualità del segnale corrispondente al dato profilo. MediaInstance Identifica e localizza una istanza (Media Instance) del Media Profile. Master Indica se il Media Profile corrisponde all’originale o al profilo master dell’entità di contenuto multimediale. La ricorsività del MediaProfile consente la descrizione di flussi multiplexati, vale a dire flussi multimediali composti di diversi flussi componenti. Tipici esempi includono: • I diversi oggetti multimediali in un flusso MPEG-4. • I diversi flussi audio presenti in un DVD da sincronizzare con il video per il supporto ai vari lunguaggi Un flusso video multiplexato contenente diversi flussi audio e video (sincronizzati nel loro insieme) che provengono da differenti microfoni e videocamere, che possa consentire all’utente di selezionare diversi punti di vista di uno stesso evento. pag.116 Il descrittore MediaFormat (il tipo che definisce l’omonimo elemento MediaFormat istanziato nel nostro documento di descrizione) fornisce informazioni relative al formato del file e ai parametri di codifica del MediaProfile. Nella figura seguente si mostra in dettaglio l'elemento MediaFormat instaziato : Figura 33 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO MEDIAFORMAT. Importante è analizzarne la semantica, ricca di elementi che descrivono il formato dell’istanza di contenuto multimediale (nel nostro caso del programma audiovisivo codificato nell’archivio digitale Teca Fast): Semantica di MediaFormatType: Nome Definizione MediaFormatType Descrive il formato e i parametri di codifica del MediaProfile. Content Identifica il media presente nel contenuto multimediale. Medium Descrive il supporto di memorizzazione fisica sul quale il Mediaprofile è memorizzato. Un esempio di schema di classificazione è MPEG7MediumCS. FileFormat Descrive il formato file del MediaProfile. Esempi di schemi di classificazione per i valori di questo elemento sono pag.117 Nome Definizione MPEG7FileFormatCS e IPTCMimeTypeCS. FileSize Indica la dimensione in bytes del file in cui il MediaProfile è memorizzato. System Descrive il formato del profilo del media a livello broadcast, un esempio di valore è il sistema televisivo “PAL”, un esempio di schema di classificazione è MPEG7SystemCS. BitRate Indica il bit rate nominale in bit/s del Media Profile. VisualCoding Descrive la codifica MediaProfile. della componente visiva del Se una entità di contenuto è audiovisiva, VisualCoding e AudioCoding sono entrambe utilizzati. VisualCoding/For mat Descrive il formato di codifica della componente video del MediaProfile. Come sopra, se una entità di contenuto multimediale è audiovisiva, VisualCoding e AudioCoding sono entrambe utilizzati. Un esempio di schema di classificazione è MPEG7VisualCodingFormatCS. aspectRatio Descrive l’aspect ratio (fattore di forma) dei pixel (larghezza/altezza). Frame Descrive il frame dell’immagine e i frame video. height Indica l’altezza delle immagini e dei frames in pixel. Width Indica la larghezza delle immagini e dei frames in pixel. Il quoziente di larghezza e altezza è il fattore di forma del campionamento, che è come il fattore di forma dell’immagine ottica se il pixel è quadrato. Rate Indica il frame rate in Hz. La sintassi completa di MediaInformation D è presente e nel capitolo 8 (Media Description Tools) del documento. 4.4.8 L’ELEMENTO TEMPORALDECOMPOSITION : DESCRIZIONE DELLE SINGOLE SEQUENZE Analizziamo adesso in dettaglio come è possibile descrivere le singole sequenze video che vengono individuate nella Composer Window del tool di estrazione. E’ pag.118 fondamentale riuscire ad avere una struttura flessibile e semplice così da permette query il più possibile precise. Nel nostro caso le sequenze individuano il singolo servizio giornalistico. La possibilità di ricercare e visualizzare singole sequenze video rende questa applicazione, come da specifiche RAI, utilizzabile come prototipo di riferimento, il cui scopo è quello di dare un'alternativa ai vecchi motori di ricerca. La struttura logica del video viene dinamicamente mappata nel documento Mpeg7. I riferimenti temporali di inizio e durata della sequenza sono automaticamente inseriti nel documento Mpeg7. TemporalDecompositionDs è il descrittore che identifica come vogliamo dividere la risorsa audiovisiva. In questo caso l’attributo “criteria” ha come valore “structure” in quanto identifica la struttura logica. Seguono anche gli atributi “overlap” e “gap” il cui valore per entrambi è “true”, ciò significa che non vi è né sovrapposizione tra le sequenze presenza di spazi vuoti tra le sequenze. Sono instaziati, dopo l’elemento Temporal Decomposition, sei Audio Visual Segment che individuano le singole sequenze video. Si è scelto di descrivere in questo test tre servizi e le tre introduzioni relative. Negli AudioVisualSegment si immagazzinano le informazioni sulle singole sequenze utilizzando, come per l’intera risorsa, gli strumenti CreationInformation, Mediatime, MediaLocator, TextAnnotation. Si mostrerà nei listati XML sola una delle sei sequenze (le altre descrizioni sono visionabili in APPENDICE) Figura 34 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO TEMPORALDECOMPOSITION. Analizziamo in dettaglio i singoli elementi che descrivono il servizio giornalistico. Si mostrerà la struttura di ogni singolo descrittore e un listato di esempio in XML di un servizio: pag.119 1. MediaLocator: contiene informazioni sulla localizzazione della risorsa fisica. Si inserisce il collegamento al video e al frame chiave. Figura 35 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO MEDIALOCATOR. L’elemento MediaLocator nel prototipo di documento: <MediaLocator type="TemporalSegmentLocatorType"> <Image>http://62.110.204.10/tecaprova/Frame/tg1/tg1serv1.jpg</Image> <MediaUri>rtsp://62.110.204.10:554/tg1.rm</MediaUri> </MediaLocator> 2. StructuralUnit: descrive il ruolo del segmento nella struttura del documento, in questo caso si attribuisce il valore “description” in quanto il segmento AV si riferisce proprio alla descrizione. L’elemento StructuralUnit nel prototipo di documento: <StructuralUnit id="structuralUnit-27" href="urn:ricoh:mmVISION:SegmentTypeCS:4"> <Name xml:lang="en"> structure </Name> </StructuralUnit> 3. CreationInformation: contiene informazioni sulla creazione (nome giornalista ed emittente) e sulla classificazione ( genere del servizio ). pag.120 Figura 36 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO CREATIONINFORMATION. L’elemento CreationInformation nel prototipo di documento: <CreationInformation id="creationInformation-57"> <Creation id="creation-58"> <Title>Servizio 1</Title> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Giornalista</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>Dino Corgona' </GivenName> </Name> </Agent> </Creator> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Emittente</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> pag.121 <GivenName>RAI_UNO </GivenName> </Name> </Agent> </Creator> <CreationCoordinates> <CreationDate> <TimePoint>2002-06-04T14:10:00:000:00 </TimePoint> </CreationDate> </CreationCoordinates> </Creation> <Classification id="classification-61"> <Genre id="genre-62" href="TecaFastXmGenreCS"> <Name>Politica Estera</Name> </Genre> </Classification> </CreationInformation> 4. TextAnnotation : Contiene un abstract del singolo servizio Figura 37 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO TEXTANNOTATION. pag.122 L’elemento TextAnnotation nel prototipo di documento: <TextAnnotation> <FreeTextAnnotation>A Kanasky in Canada vertice del G8 </FreeTextAnnotation> </TextAnnotation> 5. MediaTime : Descrive l’intervallo temporale in cui si trova il singolo servizio. L'inizio (rispetto all'intero telegiornale) e la durata del servizio giornalistico vengono inserite automaticamente dal tool di acquisizione. 6. Questi parametri vengono successivamente passati al server di streaming per poter visualizzare la singola sequenza (servizio giornalistico) descritta. Figura 38 : STRUTTURA DEL DOCUMENTO DI DESCRIZIONE IMPLEMENTATO: DETTAGLIO DELL’ELEMENTO MEDIATIME. L’elemento MediaTime nel prototipo di documento: <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime">P0DT0H0M2 0S20N25F</MediaRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">1596</MediaIncrDuration> </MediaTime> pag.123 CAPITOLO 5 REALIZZAZIONE DI APPLICAZIONE MPEG-7 "TV NEWS ARCHIVE" Nel Capitolo precedente sono state esposti lo standard di descrizione Mpeg-7 e le modalità di costruzione del modello di descrizione, con gli strumenti del Multimedia Description Scheme Mpeg-7 (MDS Schema versione FCD). Applicando lo standard Mpeg-7 al nostro progetto, il risultato è la creazione di una struttura dati e la definizione di un profilo applicativo per la descrizione e gestione di metadati audiovisivi, riferiti all’entità “telegiornale” Successivamente, come verrà mostrato in questo capitolo, si è passati alla implementazione del prototipo. Il sistema creato completa il lavoro iniziato nella prima edizione dei Vivai d’Impresa e ne aumenta le potenzialità, rendendolo un sistema completo e applicabile ad una prima sperimentazione sul campo. Data la complessità della struttura dati individuata è stato utilizzato come software il Tamino XML DataBase Server, un DBMS (Database Management System) che implementa tecnologie native XML; invece per la distribuzione dei contenuti audiovisivi si è utilizzato un server di streaming, Real Server. 5.1 ARCHITETTURA DEL PROTOTIPO Per lo realizzazione del progetto i passi principali sono stati i seguenti: 1) Descrizione della risorsa audiovisiva secondo lo standard Mpeg-7 2) Implementazione del DB XML nativo 3) Inserimento dei documenti Mpeg-7 nel database nativo XML 4) Costruzione delle interfacce di interrogazione del database Il sistema prevede l'estrazione dei metadati delle risorse audiovisive, secondo le specifiche Mpeg-7, ed il loro inserimento nel DB. E’ stato possibile interagire con il server DB XML utilizzando le interfacce Web implementate, che possono anche recuperare le informazioni con query su parametri precisi. Il risultato, visualizzato dal browser Web, mostra la descrizione sulle risorse audiovisive trovate, con la possibilità di visualizzare il contenuto audiovisivo in video streaming. Il server di streaming utilizzato per questo scopo è “Real Server 8”, che permette una maggiore flessibilità ed efficienza nel collegamento e nella visualizzazione del video rispetto ad un Web Server. L’obiettivo principale raggiunto è stato di rendere l’applicazione completamente trasparente alla piattaforma, così da poter essere adattata anche per altre esigenze. Un altro obiettivo raggiunto è stato quello di fornire all’utente documentatore o utente di archivio un servizio facile da utilizzare senza la necessità di avere conoscenze sullo standard Mpeg-7 o sulle tecnologie XML. pag.124 Figura 39 : L’ARCHITETTURA DEL SISTEMA PROTOTIPALE MPEG-7 Nell'implementare le interfacce di query si è pensato a definire una struttura a più livelli. I due tipi di query sono mostrati nella figura seguente. pag.125 Figura 40 : STRUTTURA MULTILIVELLO (TELEGIORNALE-SERVIZI) PER LE INTERROGAZIONI La prima query sul telegiornale recupera tutti i documenti Mpeg-7 che rispondono ai parametri della form. La pagina Web di risposta, processando lato server il file XML con un foglio di stile XSL, visualizza l'elenco dei TG. Il foglio di stile costruisce il link (estraendo l'"id" del documento) che permette di visualizare la scheda del TG trovato. La seconda query sul servizio recupera tutte le parti dei documenti Mpeg-7 (i singoli servizi) che rispondono ai parametri della form. La pagina Web di risposta mostra una tabella con l'elenco dei servizi. Il foglio di stile XSL compone il link che permette di visualizare la scheda del TG a cui il servizio appartiene. 5.2 IL DBMS "TAMINO": ARCHITETTURA E COMPONENTI Tamino, che sta per “Transaction Architecture for the Management of INternet Objects” offre da subito un ambiente di sviluppo completamente orientato ai servizi Internet/Intranet (una delle specifiche principali di progetto). Le informazioni memorizzate nel server DB XML vengono da subito rese disponibili come “Internet Objects” accessibili non solo tramite comandi innestati nella URL, ma anche con delle URL assolute che puntano direttamente ai documenti XML archiviati come se fossero memorizzati direttamente nel file system del server web. Inoltre la piattaforma implementa funzionalità avanzate di accesso e scambio dati con tutti i principali DBMS, oltre ad avere un DBMS SQL interno oltre al DBMS XML nativo, risultando anche in questo senso un sistema preferenziale per le esigenze dell’azienda committente del prototipo, come le Teche Rai, che necessitano di accedere e scambiare dati con i diversi sistemi preesistenti nei vari archivi e con le organizzazioni verso le quali si intendono offrire applicazioni web pag.126 based (nel caso specifico acquirenti di contenuti e diritti televisivi, società di documentazione e operatori della produzione audiovisiva). Nella figura seguente viene mostrata schematicamente l’architettura della piattaforma software Tamino utilizzata per il prototipo, a livello di componenti di sistema e protocolli, linguaggi e standard impiegati. Figura 41 : INTERFACCE (DOM – DOCUMENT OBJECT MODEL), PROTOCOLLI STANDARD (HTTP) E COMPONENTI (X-PORT) 5.2.1 CARATTERISTICHE PRINCIPALI DEL DATABASE TAMINO XML: La parte di elaborazione XML utilizza HTTP come protocollo di comunicazione per lo scambio dati. Tamino offre anche il supporto a connessioni sicure con un suo server sicuro HTTP, ma può lavorare anche con server HTTP preesistenti. Tamino supporta ISAPI, NSAPI, cosi come le Apache API per la comunicazione via web. Il linguaggio di query implementato nella versione attuale è X-Query, che ha una sintassi basata sulle specifiche di Xpath. Inoltre supporta l’elaborazione dei fogli di stile utilizzando oggetti XML (XSL, CSS) in modalità server side (attraverso l’impiego di servlet Java). Supporta l’uso degli XML namespace. Implementa il Document Object Model (DOM) standard ed esteso (funzionalità specifiche della piattaforma). Interfaccia i DBMS esterni tramite il componente X-Node che utilizza ODBC. Supporta anche SQL dinamico ed embedded (per programmi C) con il SQL Engine interno. pag.127 Nella figura seguente si vede la struttura a strati della piattaforma impiegata. Figura 42 : VISTA A LIVELLI DELLA PIATTAFORMA Diverse API consentito di accedere a Tamino da differenti ambienti di programmazione (Java, C++, ...). Alcune forniscono i comandi di elaborazione e inserimento documenti, definizione schemi di struttura ed elaborazione di query, che verranno in seguito mostrate nell’implementazione delle interfacce web realizzate per il prototipo. E‘ possibile eseguire in remoto tutte le classiche funzioni di amministrazione grazie ad esempio al System Management Hub che vedremo successivamente in dettaglio. Il componente principale del Server XML è X-Machine composto a sua volta di un Parser, un interprete di interrogazioni in linguaggio Xquery-Xpath, un Object Processor e un Object Composer, rispettivamente per l’elaborazione e costruzione di oggetti dati in formato XML, il Data Map per la descrizione delle strutture dati, ed un XML Data Store nativo. Le loro funzionalità verranno approfondite in seguito nell’analisi di X-Machine, e sono riportate nella figura seguente. pag.128 Figura 43 : COMPONENTI E PROTOCOLLI DI COMUNICAZIONE DELLA PIATTAFORMA TAMINO SERVER. La comunicazione con il sistema Tamino avviene tramite una interfaccia http standard. Al momento dell’installazione il DBMS Tamino viene connesso con il web server (nel nostro caso Apache WebServer 1.3.12) attraverso il modulo XPort. Tamino viene richiamato attraverso una URL della forma << http://webserver/tamino/taminodbname >> dove al posto di “webserver” nel nostro caso viene utilizzato l’indirizzo IP del server su cui è installato Tamino e gli altri componenti, ma che generalmente indica il nome di dominio del server web, mentre “tamino” è un nome fissato durante l’installazione, e “taminodbname” è il nome del DataBase Tamino a cui viene indirizzata la richiesta sotto forma di URL. Alla chiamata, il server web attiva il modulo X-Port che passa la richiesta con una comunicazione TCP/IP al database indirizzato. Il numero di porta IP per la comunicazione tra il componente X-Port e il database viene definito all’atto dell’installazione del database e non dovrebbe essere utilizzato da nessun’altra applicazione. 5.2.2 LA PIATTAFORMA La piattaforma hardware/software impiegata per il server su cui gira il DBMS XML Tamino e gli altri servizi come il web server e i servlet Java è la seguente. pag.129 Configurazione del Server impiegato (Progetto Internet Tv 2– Vivai d’Impresa) per il prototipo: Hardware: Processore Pentium III 800 Mhz di clock, Memoria RAM 512 Mbytes, Disco fisso Eide Ultra Ata 10 Gbytes, Monitor 17 pollici flat panel HP-LG, Connessione a rete di alimentazione con backup, Scheda di rete Ethernet 10/100 Mbit/sec, Connessione di rete con linea HDSL 2 Mbit/sec dedicata verso la dorsale Interbusiness con indirizzo IP pubblico. Software: Sistema operativo Microsoft Windows 2000 Professional, Web server: Apache WebServer 1.3.12, Servlets: Apache Jserv 1.1, Ambiente Java: JRE 1.2.2, Browser HTML: Microsoft Internet Explorer 5.5, Parser XML : Microsoft MSXML v.3.0, TAMINO XML DB Server Development Edition v.2.2.9 di Software AG, System Management HUB di Software AG, XTS Proxy Server, Real Server 8.0, Software di editing codice HTML: Macromedia Dreamveawer 3.0, Software editing e validazione XML, DTD e XML Schema: XML SPY v.3.5, Software di editing codice testuale: UltraEdit v.8.1, Ricoch Movie Tool β Il server possiede un proprio indirizzo IP pubblico ed è connesso alla rete internet tramite una linea HDSL dedicata, con velocità di connessione 2 Mbit/sec, interconnessa alla dorsale di rete Interbusiness di Telecom Italia. 5.2.3 X-MACHINE Tra le funzionalità base del server DBMS Tamino c’è l’immagazzinamento di dati in formato XML, che non subisce operazioni di conversione in altri formati dati, come ad esempio le tabelle relazionali. Questa funzionalità è fornita dal componente fondamentale della piattaforma, chiamato X-Machine. Esso si occupa di memorizzare e gestire oggetti XML (ben formati o validi) all’interno di XML Data Store. X-Machine è in grado di gestire anche dati non-XML (come testo, file binari) e integra le informazioni contenute in sorgenti dati e applicazioni esterne attraverso il componente X-Node. L’accesso ai documenti XML archiviati avviene utilizzando il linguaggio di interrogazione Xpath, con alcune estensioni. E’ possibile vedere uno schema dell’architettura di X-Machine nella figura seguente: pag.130 Figura 44 : ARCHITETTURA DI X-MACHINE E VISTA DEI COMPONENTI CHE GESTISCONO I DOCUMENTI XML E NON-XML. Tornando alle funzionalità di X-Machine, quella principale è l’elaborazione di documenti XML, che passano attraverso diversi passi e componenti. Gli oggetti XML che devono essere memorizzati da X-Machine sono descritti dal relativo schema (il DTD) inserito nel Data Map di Tamino. Il componente Data Map contiene tutte le informazioni per la memorizzazione, l’indicizzazione e l’elaborazione di oggetti XML per un’efficiente gestione dei dati. Tra le sue funzionalità la costruzione e configurazione di parametri di indicizzazione standard e testuali, l’integrazione con applicazioni esterne, la memorizzazione di strutture dati in tabelle SQL e file Adabas. Il primo passo è l’elaborazione da parte del parser interno ad X-Machine, che controlla la correttezza sintattica degli schemi e si assicura che gli oggetti XML in ingresso siano ben formati. Successivamente gli oggetti XML vengono passati all’ Object Processor per la memorizzazione. Gli schemi contenuti nel Data Map consentono all’Object Processor di ottenere le informazioni necessarie a memorizzare dati nell’ XML Store, e/o in tabelle SQL o file Adabas esterni. Queste sorgenti dati esterne sono integrate attraverso il componente X-Node di Tamino. Utilizzando le regole di memorizzazione e richiesta definite nel Data Map, Object Composer costruisce gli oggetti informativi e li restituisce come documenti XML, anche se si tratta di dati non memorizzati all’interno ma provenienti da altre sorgenti dati. Nel caso più semplice, quello previsto da questa prima implementazione, gli oggetti richiesti tramite un’interrogazione sono memorizzati internamente come oggetti XML. Nei casi più complessi viene richiesta la comunicazione con il componente X-Node per costruire un documento di risultato pag.131 in XML da dati non-XML (ad esempio per l’estrazione-caricamento di dati in altri DBMS non XML nativi). Le interrogazioni sui dati vengono processate dal Query Interpreter prima di agire sull’Object Composer. Il Query Interpreter infatti riceve le richieste X-Query e interagisce con l’Object Composer per richiedere oggetti XML in accordo a quanto specificato dalla struttura degli schemi dei DocType memorizzati nel Data Map. 5.2.4 L’AMMINISTRATORE DEL SERVER Il componente Tamino Manager è una applicazione client/server che consente l’amministrazione del server Tamino (e di altri server Tamino eventuali). Il componente client è l’interfaccia web dell’utente chiamata System Management Hub. Con l’installazione del server XML e del System Management Hub si configurano sulla postazione server anche degli agenti software chiamati Tamino Agents, come l’Administration Agent che, da componente attivo, effettua operazioni di controllo come: creazione e cancellazione di Database, avvio e stop di processi software sul server, gestione operazioni di backup e restore, controllo dei parametri. Nella figura seguente viene mostrato lo schema di comunicazione dell’interfaccia del Tamino Manager: Figura 45 : INTERFACCIA DI TAMINO MANAGER E COMUNICAZIONE CON L’ADMINISTRATION AGENT E IL SERVER XML. 5.2.5 PROCEDURA DI CREAZIONE DEL DB PROTOTIPO Il procedimento di creazione del database, come ogni altra operazione di amministrazione, avviene attraverso il System Management Hub connesso al Tamino Manager, un software applicativo accessibile tramite un comune browser web (può gestire diversi nodi server Tamino dislocati in rete locale o su internet). Per la creazione del database, dopo aver installato i componenti del server Tamino, è possibile utilizzare il Tamino Manager: l’operazione di “Create pag.132 Database” configura il kernel del server e alloca e inizializza gli spazi di memorizzazione fisica del database. Per distinguere le diverse istanze di Database Tamino ad ognuno viene assegnato un nome unico (nel caso del prototipo “tecafast”). Tamino utilizza il concetto di locazione (location) che identifica i contenitori (spazi fisici) allocati. E’ possibile settare anche diversi parametri riguardanti le risorse del server (dimensioni della cache, accessi, etc.) e le dimensioni del database (dimensione degli spazi di memoria allocati su disco), oltre a parametri di ottimizzazione. In seguito alla procedura di creazione del database, il nuovo nome del Tamino DB Server diviene visibile nel sottoalbero dei Database del Tamino Manager. Figura 46 : IMMAGINE DEL SYSTEM MANAGEMENT HUB E DELLA LISTA DEI DATABASE CREATI E ATTIVI NEL SERVER DB.Il database Tamino risulta in grado di memorizzare documenti XML anche se non viene definita una struttura nella mappa dati (Data Map). Il server XML Tamino utilizza le definizioni di struttura di documenti xml (chiamati DocType) nella Data Map oltre che per controllare la correttezza dei documenti inseriti, anche per migliorare le prestazioni di ricerca. La definizione della DocType all’interno del Data Map consente infatti l’indicizzazione dei dati contenuti nei documenti XML, abilitando anche il controllo sui tipi di dato, sulla mappatura nella struttura di dati contenuti in DB esterni (SQL, Adabas, etc.). L’interfaccia che viene fornita per accedere alla definizione dei DocType e degli elementi della struttura è il Tamino Schema Editor. Essa consente di caricare le Document Type Definition dei documenti xml, di definire tali DTD come DocType nella Data Map, definendo anche le collection che raggruppano le DocType all’interno di ogni DB. Per quanto riguarda la struttura dati del prototipo di documento di metadati Mpeg7, esso è stato costruito facendo riferimento alle specifiche di MDS Schema, utilizzato per validare i documenti costruiti per il test del DB (la descrizione dei tre telegiornali trasmessi sulle reti nazionali della RAI). E' stata quindi impiegata il codice della DTD della struttura del documento di descrizione Mpeg-7, non ricavabile automaticamente da un processo di conversione da XML a DTD (implementato ad esempio nel software XML Spy). Manualmente sono stati ricostruiti nella sintassi DTD i vincoli e le regole sui tipi pag.133 e le strutture di dato previsti dall’MDS Schema, con i limiti di descrizione di struttura analizzati nel capitolo III. I documenti di descrizione dei quattro programmi TV di test sono stati dunque validati nuovamente per verificare la correttezza della DTD che definisce l’albero della struttura dati. La definizione della DocType o Schema del documento di descrizione metadati nel DB avviene utilizzando l’applicazione Schema Editor di Tamino. Questa applicazione consente non solo di definire le gerarchie di Collection (che raggruppano gli schemi-DocType di documento) e la DocType stessa, ma anche di navigare nella struttura dati con un’interfaccia grafica che mostra l’intero albero e consente di controllare i parametri per ogni elemento e attributo della schema, compresi aspetti di mappatura dei dati con DB e applicazioni esterne. Figura 47 : INTERFACCIA GRAFICA DELL’APPLICAZIONE TAMINO SCHEMA EDITOR. Una Collection raggruppa logicamente i Doctypes (schemi di documento) che consentono di raggruppare i dati riguardanti diverse aree di applicazione (ad esempio i documenti di descrizione separatamente dalle immagini o dai fogli di stile). I doctype possono avere gli stessi nomi in diverse Collection. Per questo ad ogni accesso alle risorse del Server DB deve essere indicato il nome della Collection oltre che del Doctype. Tutti i documenti per i quali non viene definito uno schema nella Data Map vengono memorizzati in una Collection speciale chiamata ino:etc. Un documento viene riconosciuto come appartenente ad un dato Doctype confrontando il nome di quest’ultimo con il nome dell’elemento radice. Per creare lo schema di documento e definire il Doctype in Tamino, utilizzando lo Schema Editor, è stato processato il file della DTD realizzato in precedenza con la definizione della struttura. Alle informazioni contenute nella DTD lo Schema Editor aggiunge alcune opzioni specifiche. pag.134 Figura 48 : PROCEDURA DI DEFINIZIONE DELLO SCHEMA/DOCTYPE A PARTIRE DALLA DTD, UTILIZZANDO LO SCHEMA EDITOR O L’INTERFACCIA WEB. Nel prototipo all’interno del database chiamato “tecafast” è stata definita la Collection “teca2002collection” come predefinita. In questa Collection è stato definito lo schema/Doctype principale “Mpeg7” e uno secondario “immagini” per effettuare dei test sulla gestione di documenti non-XML (nello specifico file di immagini) all’interno del DB. Un ulteriore Doctype può contenere documenti del tipo fogli di stile, e nella figura seguente si vede un esempio di raggruppamento degli schemi di definizione struttura all’interno della collection definita (nel Data Map del server). 5.3 DESCRIZIONE DELLA RISORSA AUDIOVISIVA Il primo passo per la realizzazione del progetto, come abbiamo accennato nel capitolo 4, è stato la descrizione del contenuto audiovisivo .L’uso del software sperimentale fornito dalla Ricoh denominato Movie Tool è stato fondamentale per la creazione della struttura dati. Esso ha permesso una descrizione real-time dei file Mpeg1 rappresentanti delle trasmissione televisive prese dalle reti televisive RAI . Per costruire una credibile descrizione di tali risorse audiovisive, che rientrano tra i programmi già codificati e archiviati nella Teca Fast Rai, si è fatto riferimento alle informazioni di palinsesto (per gli orari di trasmissione), a quelle di documentazione del Catalogo Multimediale e ai dati di gestione dei file codificati con relativi parametri del sistema di gestione (SQL Server) di Teca Fast Rai. Questa integrazione di dati mette in luce la diversità dell’approccio di un sistema di gestione metadati basato su strutture Mpeg-7: non solo la gestione di metadati descrittivi di alto livello (titolo, autori, location, argomenti, etc. come avviene nel Catalogo Multimediale) ma anche di parametri di più basso livello (tipo di codifica, formato audio e video, campionamento, fattore di forma del frame, pag.135 dimensioni in byte del programma archiviato in formato digitale, time code di inizio e fine assoluti, etc. gestiti dal sistema di Teca Fast), il prototipo intende evidenziare la capacità di gestire in maniera integrata entrambe gli aspetti, utilizzando standard portabili e dettagliati come Mpeg-7. La fase di raccolta dati e realizzazione dei documenti descrittivi dei tre telegiornali impiegati per il primo sviluppo è avvenuta utilizzando gli strumenti di ricerca sulla intranet aziendale. Con l'utilizzo di procedure specifiche illustrate nel capitolo 4 l'operazione di indicizzazione è stata resa facilitata rispetto ai metodi di descrizione tradizionali, diminuendo sia il tempo e sia il numero di risorse umane che servono per effettuare una completa analisi del contenuto. Con l'uso di metadati e tecnologie standard si rende l’applicazione distaccata dalla piattaforma e dall’ambiente di sviluppo. La procedura di descrizione è mostrata in figura, in cui si possono apprezzare tutti i vantaggi . Figura 49 : PROCEDURA DI DESCRIZIONE 5.4 GESTIONE DEL DATABASE Per accesso alla applicazione web e l’interazione con il prototipo è stato realizzato un sito web, denominato “TV News Archive”. La home page del sito (http://62.110.204.10/tvnew.htm) è visibile nella seguente immagine: pag.136 Figura 50 : HOME PAGE DELL’INTERFACCIA INTERATTIVA PER L'ACCESSO ALLE FUNZIONALITÀ DI RICERCA E GESTIONE DEL DB. Attraverso collegamenti ipertestuali si accede alle Web Interactive Interface sviluppate per il prototipo. Il sistema ha tutte le funzionalità necessarie per una completa gestione del DB: inserimento, cancellazione e ricerca dei dati. Si è introdotta. Lo scopo del sistema è mostrare le proprie potenzialità e la facilità di accesso alle risorse attraverso l’impiego di un web browser di ultima generazione (si richiede almeno la versione 5 di Microsoft internet Explorer, abilitato alla visualizzazione di documenti XML). 5.4.1 INTERFACCIA INTERATTIVA DI GESTIONE DOCUMENTI Le funzioni necessarie per la gestione del DB che sono state implementate prevedono l’inserimento e l’eliminazione di un documento Mpeg7, come la possibilità di definire e cancellare una Doctype. L’interfaccia di gestione è costituita da codice Javascript, in grado di eseguire le funzioni capaci di interagire con il DB, e da 5 form fondamentali per inviare i comandi e i dati al Server XML. L’invio della richiesta di operazione avviene attraverso il protocollo standard http. Analizziamo prima di tutto le fasi di inserimento ed eliminazione di un documento. Nella pagina Web viene utilizzata una funzione Javascript e una form per consentire all’utente di impostare l’indirizzo del DB Server con il quale si vuole pag.137 interagire (funzione utile in fase di sviluppo). E’ necessaria per consentire all’utente di impostare l’indirizzo del DB, il suo nome e la collection in cui inserire o eliminare un documento. Per l’inserimento di documenti di descrizione nel DB vengono utilizzate una funzione Javascript e una form per consentire all’utente di scegliere un file contenente il codice XML con la descrizione del programma TV Telegiornale basata sulla struttura di metadati Mpeg-7 implementata. L’invio della richiesta avviene attraverso il metodo POST del protocollo standard HTTP, invocando il comando “_PROCESS” delle Application Program Interface di Tamino, con il passaggio dell’indirizzo del server, del DB e della collection su cui memorizzare il file inviato. Il risultato dell’operazione ( che viene visualizzato nel Frame sottostante nella finestra browser) consente all’utente di verificare la bontà della sua operazione. Il server XML invierà, se l’operazione è andata a buon fine, il numero dell’ “ino:id”che identifica il documento (ogni documento inserito in una Doctype viene associato con un identificatore, chiamato ino:id, unico all’interno del DB. “ino” è il namespace di default per gli elementi xml definiti da Tamino); se si sono verificati degli errori nell’invio della richiesta, verranno visualizzati i relativi messaggi di errori per permettere eventualmente all’utente di correggere alcuni parametri. L’eliminazione di documenti dal Database sul server XML richiede l’invio di una query in sintassi X-Query/Xpath per l’individuazione del documento da eliminare. Viene impiegata nuovamente una richiesta http di tipo POST che invia il comando “_DELETE” al server passando la query come parametro. Il messaggio della risuscita dell’eliminazione del documento verrà visualizzato nel Frame sottostante. Le altre due funzioni importanti per una completa gestione del DB sono la possibilità di definire o eliminare una DTD(è la struttura dei documenti che vogliamo inserire nel DB) di documento in remoto. Per definire e cancellare una Doctype, è necessario impostare l’indirizzo del DB e il suo nome utilizzando sempre la form vista in precedenza, naturalmente non è necessario identificare la collezione perché essa verrà inserita con l’opportuna operazione. Per poter effettuare questa operazione utilizzando il browser web senza installare l’applicativo Tamino Schema Editor, si impiegano funzioni Javascript e form HTML che consentono all’utente l’invio di file (già pronti nel formato Tamino Schema) al server XML, tramite una POST HTTP che invoca il comando “_DEFINE” oppure “_UNDEFINE” passando il file selezionato con un form. pag.138 5.5 INTERFACCE DI QUERY Per poter effettuare il recupero delle informazioni contenute nel DB sono state realizzate due interfacce web per la richiesta dei documenti di test attualmente caricati nel server DB. Alla richiesta il server risponde con un documento XML (la struttura generica di un documento di risposta del server viene illustrata successivamente contestualmente all’analisi delle interfacce di interrogazione) a cui viene associato un foglio di stile XSL per trasformare il risultato in una pagina HTML facilmente consultabile. 5.5.1 OPERAZIONI DI QUERY IN RETE ATTRAVERSO UN DBMS NATIVO XML Il server XML nella versione attuale (quella configurata è la v.2.2.9) utilizza per le interrogazioni il Query Language XML di Tamino, che segue buona parte delle specifiche dello standard Xpath del W3C, analizzato nel capitolo III. In più esso presenta delle estensioni per la ricerca di testo, l’ordinamento e altre operazioni. Le interrogazioni vengono eseguite dal server XML utilizzando il comando “_XQL”, e si richiede di indicare sempre il nome della Collection in cui deve essere effettuata la ricerca, che può essere indicata in due modi diversi: Nella URL: ad esempio http://localhost/tamino/tecafast/teca2002collection?_xql=/Mpeg7 Oppure come parametro addizionale del comando: http://localhost/tamino/tecafast?_xql=/Mpeg7&_collection=teca2002collection L’elaborazione della richiesta di interrogazione avviene da parte del Request Interpreter secondo i seguenti passi mostrati anche nella figura successiva: • Request Parser: controlla sintatticamente l’interrogazione XML che arriva al server. • Optimizer: controlla se nel Data Map esiste uno schema di documento per il tipo di documento cui si riferisce l’interrogazione, ed effettua il parsing dello schema per tutte le informazioni di indicizzazione presenti. • Object composer: se le informazioni richieste sono indicizzate, segue l’elaborazione standard da parte del componente X-Machine. Questo significa che l’Object Composer si occupa di costruire il documento di risposta XML in accordo con le informazioni fornite dallo schema di documento nel Data Map. • Postprocessor: si occupa di elaborare la richiesta per i nodi per i quali non ci sono informazioni di indicizzazione. Esso localizza le informazioni rilevanti, costruisce un albero in DOM (Document Object Model) che poi l’Object Composer utilizza per costruire il documento XML di risposta. pag.139 Figura 51 : PASSI DI ELABORAZIONE DELLE RICHIESTE DI INTERROGAZIONE AL SERVER XML La tipica espressione di una query ha la forma: _xql=/NodoDiPartenza[NodoDaControllare=‘Valore’]/NodoDaRestituire dove all’interno delle parentesi quadre sono inserite le condizioni di filtraggio sui dati. Rispetto a quanto visto per la sintassi di Xpath standard ci sono alcune variazioni, come la presenza dell’operatore di confronto di stringhe di testo “~=” che combinato con il wildcard “*” consente di cerca sottostringhe all’interno di informazioni testuali. Nelle figura seguenti viene mostrata la struttura del documento XML di risposta alle query da parte del server, in cui risalta l'aasegnazione da parte di Tamino di un unico "id" per ciascun documento. pag.140 Figura 52 : OGNI DOCUMENTO MEMORIZZATO NEL DB XML VIENE IDENTIFICATO DA UN IDENTIFICATORE UNIVOCO “INO:ID” Figura 53 : STRUTTURA GENERALE DI OGNI DOCUMENTO XML DI RISPOSTA COSTRUITO ALL’ATTO DELL’ELABORAZIONE DEI RISULTATI DI UNA QUERY SUL SERVER XML 5.5.2 IMPLEMENTAZIONE DI XML NEL WEB In termini di implementazione c’è una grande differenza se si usa un linguaggio come Xpath per il processamento di documenti (come nel caso di XSL) o se si usa per la ricerca di documenti da una sorgente di dati XML. Innanzitutto, la ricerca di documenti è una tecnologia server, quindi un client web come ad esempio un browser invia una query XML. Il server allora retituisce il risultato della query ad esempio sotto forma di una pagina XML generata dinamicamente. Il client può quindi applicare una qualche formattazione al risultato ricevuto utilizzando un foglio di stile XSL. pag.141 Figura 54 : CASO IN CUI SI DISPONE DI UN BROWSER IN GRADO DI LEGGERE DOCUMENTI XML/XSL. Questa configurazione richiederebbe l’uso di un browser abilitato alla visualizzazione di documenti XML/XSL. In un ambiente aperto non si può fare un assunto del genere. Invece in un ambiente l’XSL basato sul server può essere usato insieme alle query XML. La figura di seguito mostra questo aspetto. Figura 55 : CASO DI UTILIZZO DI UN COMUNE BROWSER HTML CON SUPPORTO CSS (CASCADING STYLE SHEET) pag.142 Nella figura precedente il processore XSL server based (servlet) converte le pagine XML e i fogli di stile XSL in formato HTML (possibilmente con formattazione CSS), che può essere visualizzato da gran parte dei web browser. Un possibile compromesso è quello di supportare i vecchi client e i client compatibili con XSL separatamente fornendo i fogli di stile in due versioni diverse. Esistono attualmente alcune implementazioni sperimentali di servlet XSLT, realizzate da Lotus, James Clark (che ha lavorato alla realizzazione del W3C XSL Working Draft), e altri. In ambiente intranet tuttavia le cose cambiano. Qui il supporto lato client all’XSL può essere introdotto in tempi relativamente brevi e può essere utilizzata una formattazione completamente XSL. Figura 56 : DOCUMENTI XML INSTRADATI FINO AL CLIENT PER BROWSER ABILITATO ALL'XSL L’uso di XSL lato server può ridurre il tempo di trasmissione solo se una piccola parte di informazione deve essere estratta da un documento XML, mentre può aumentare il tempo di trasmissione se viene richiesta l’aggiunta di molti elementi decorativi. Si può sempre far riferimento al contenuto non formattato della sorgente dei dati. I risultati restituiti come risposta ad una query sono delle pagine XML generate dinamicamente. Queste possono anche subire una formattazione, con XSL. Tornando ad Xpath, una seconda modalità di implementazione (vedi Figura sopra) prevede che il meccanismo di accesso fisico per reperire e richiedere un pag.143 documento in una sorgente dati sia completamente differente dal meccanismo utilizzato per selezionare gli elementi da un singolo documento. In particolare in un ambiente aziendale, un archivio XML può ospitare un enorme numero di pagine XML, possibilmente milioni. In tali condizioni si richiede l’uso di tecnologie di database sofisticate per gestire efficientemente le query. L’ottimizzazione delle query, il caching, e le tecniche di indicizzazione sono alcune delle parole chiave conosciute nel mondo delle tecnologie relazionali e che sono importanti anche per i server XML. L’indicizzazione in particolare, una tecnologia chiave in tutti i sistemi di database, pone alcune problematiche di interesse. Innanzitutto vanno identificati gli elementi adatti a fare da chiavi. Il DBMS a questo punto costruisce tabelle indici o alberi indici che consentono di trovare rapidamente un oggetto secondo una certa chiave. Utilizzando gli indici il carico elaborativo e il tempo richiesti per il reperimento di un oggetto vengono ridotti da n a log(n). L’indicizzazione è la principale ragione per cui i DBMS (inclusi i server XML) sono molto più performanti dei file system cosidetti “flat”. Un repository XML d’altra parte lavora in un ambiente aperto. I client possono inviare query di ogni tipo, cosi che tipicamente non è prevedibile determinare i migliori tag da prendere in considerazione per l’indicizzazione. Si potrebbe pensare di indicizzare tutti i tag ed attributi. Ma in questo modo si comporterebbe un grande overhead, rendendo lente le operazioni di aggiornamento. Inoltre i processori XML devono essere in grado di processare qualsiasi documento XML ben-formato, anche se la definizione dello schema (ad es. la DTD) non si conosce o viene perduta. Poiché sia la struttura dei documenti che la natura delle query non sono prevedibili per l’archivio XML, è davvero difficile pianificare in anticipo una struttura di indicizzazione. Alcuni XML information server sono a volte in grado di utilizzare un misto di tecniche di indicizzazione adattative. Queste tecniche includono la tradizionale indicizzazione controllata dall’amministratore in combinazione con tecniche di indicizzazione avanzate derivate dai sistemi di ricerca nei testi ad alta capacità che hanno dovuto affrontare da più tempo un problema simile. 5.5.3 COSTRUZIONE DELLE INTERFACCE Le interfacce web realizzate per l’invio di interrogazioni in sintassi XPath al DB del prototipo utilizzano programmazione Javascript e delle form in cui inserire i parametri della query. I parametri chiave utilizzati per la ricerca possono essere dei menu a discesa o campi a testo liberi in cui inserire stringhe di testo . La ricerca è effettuata in elementi specifici della struttura di descrizione basata su metadati Mpeg-7. In questo caso viene mascherata la sintassi Xpath per avere una applicazione trasparente all’utente. pag.144 Nel caso del menu a discesa i valori della query sono già inseriti dentro la pagina Web. Inoltre queste interfacce mostrano la possibilità di effettuare la ricerca specifica di una stringa di caratteri o una parola all’interno dei alcuni campi come il “Titolo” (elemento Title nella struttura di descrizione Mpeg-7 implementata), o “Nome e cognome del giornalista” (elementi GivenName in Creation nella struttura dati), o nel campo di descrizione a testo libero (elementi freeTextAnnotation nella struttura dati). La possibilità offerta di combinare criteri di ricerca molto articolati rende l’applicazione di facile integrazione nel mondo Web. Utilizzando condizioni multiple sul nome degli autori, sul titolo, sulla data e orario e su altre caratteristiche di un dato TG è possibile avere una elevata puntualità nelle ricerche. Grazie alla struttura del DocType definita nel Data Map, le ricerche di questo tipo risultano comunque gestite efficientemente da Tamino, mostrando un altro dei vantaggi di un sistema di gestione dati strutturati completamente basato su XML nativo. Per i documenti risultanti dalla query si utilizza una trasformazione basata su un foglio di stile XSL. Non viene impiegata l’elaborazione lato client, ma viene utilizzato un Java Servlet per il processamento lato server del documento xml per la trasformazione dei risultati della query restituita dal DB del prototipo. Ciò permette di non caricare con inutili operazioni il client. L’URL stessa non si riferisce direttamente al DB Tamino ma alla Servlet configurata (in questo caso il path è preceduto dall’indicazione di “servlet” e dal nome del servlet specifico chiamato “tecafaststyle” per il processamento del foglio di stile XSL). Inoltre l’utilizzo di un parser SAX (affrontato nel capitolo III) completamente standard implementato nella servlet consente di implementare tutte le potenti funzioni dello standard XSL di trasformazione (il linguaggio XSL supportato dal DOM Microsoft ha ancora delle limitazioni rispetto allo standard, ad esempio non è in grado di gestire xsl:variable). L’impiego di un’interfaccia “leggera” come quella illustrata di seguito consente alcuni vantaggi rispetto all’impiego dell’interfaccia Javascript-DOM di processamento lato client, uno dei principali è la compatibilità: il servlet elabora lato server il codice xml con la XSL, restituendo al client web una pagina HTML standard, consentendo così l’impiego di un browser standard HTML (o altro browser, ad esempio wap, se il foglio di stile viene programmato opportunamente). 5.5.4 INTERFACCIA DI INTERROGAZIONE SULL’INTERO TG Viene mostrata in figura la prima interfaccia web realizzata per fornire funzionalità di ricerca su risorse di telegiornale. Si utilizza una funzione Java Script per costruire e inviare la query e una form per l’inserimento i parametri dell’interrogazione. Come si vede dalla figura, il sistema nasconde all’utente le tecnologie XML implementate, essendo semplice da usare come un interfaccia Web. pag.145 Figura 57 : INTERFACCIA DI RICERCA AVANZATA SULL'INTERO TG La scelta dei parametri della Query impiegati per il recupero delle informazioni è secondo le specifiche esigenze di progetto, prendendo spunto dagli strumenti di ricerca sulla intranet aziendale, così da rendere l’applicazione il più possibile da subito attuabile. In questa prima interfaccia si possono effettuare ricerche con parametri multipli come la data, l’ora, l’emittente e lo speaker; i risultati sono dei documenti XML e vengono visualizzati associandoli un foglio di stile XSL. Si utilizza per questa operazione un Java Servlet che permette di costruire dinamicamente la pagina Web dei risultati, processando i documenti XML con fogli di stile XSL, e visualizza tutti i TG che rispondono ai parametri della Query. Nella figura sotto è mostrata una pagina di risposta ad una query(trasformata in HTML dal foglio di stile XSL A), dove si trova l’elenco dei TG che corrispondono ai parametri dell’interrogazione. pag.146 Figura 58 : RISPOSTA DEL SERVER A CUI È STATO ASSOCIATO UN FOGLIO DI STILE XSL A (VEDI APPENDICI) Le informazioni di ogni TG recuperato sono il Titolo (es. TG1), l’emittente, lo speaker, la data e la durata. Il Titolo e la scritta MEDIAPROFILE contengono due link costruiti dinamicamente che puntano allo stesso documento XML; ad esso , però, gli viene ancora associato un altro foglio di stile necessario per estrarre altre informazioni aggiuntive. Questi contengono il riferimento alla scheda di ogni TG e alle informazioni di palinsesto e sul profilo del media (es. formato e dimensione del file). Analizziamo, adesso, la scheda del TG che contiene le informazioni generali sul TG. Si costruisce dinamicamente (richiamando il documento XML di descrizione e trasformandolo con il foglio di stile XSL descritto nell'appendice B), a seconda del numero dei servizi, una tabella che visualizza le loro informazioni. pag.147 Figura 59 : SCHEDA TG (FOGLIO DI STILE XSL B VEDI APPENDICI) Le informazioni visualizzate sono l’ordine del servizio all’interno del TG, la durata del servizio, il giornalista, il tipo di servizio un abstract e una preview. Questa rappresenta un frame chiave del singolo servizio ed è stata estratta durante la descrizione del servizio utilizzando Movie Tool. Viene costruito un link che permette la visualizzazione del singolo servizio. Una funzione Java Script che crea dinamicamente il link prendendo le informazioni necessarie direttamente dal documento XML. Le informazioni estratte sono la locazione della risorsa che si trova in MediaUri, l’inizio e la durata del singolo servizio necessarie per comunicare al server di streaming l’intervallo temporale del file AV. Il formato del tempo espresso nella descrizione Mpeg-7 deve essere adattato al formato di Real Server, per questo motivo è stato necessario inserire il javascript nel foglio di stile per operare questa trasformazione. Real Server permette la gestione dei file audiovisivi in modo semplice e flessibile, le informazioni inviate al server sono i parametri di tempo necessari per poter visualizzare solo una parte del video. pag.148 Figura 60 : VISUALIZZAZIONE DEL SINGOLO SERVIZIO CON REALPLAYER Con il link MediaProfile visualizziamo (con il foglio di stile XSL C) informazioni di palinsesto e sul profilo del media. Inoltre si mostrerranno quelle generali sul TG, sulla produzione e la regia (sono state inserite prendole da Catalogo Multimediale), sui diritti televisivi della risorsa audiovisiva ( questo è un esempio di come Mpeg-7 può affrontare questo problema) e sul file fisiche (che vengono inserite automaticamente da Movie Tool). 5.5.5 INTERFACCIA DI INTERROGAZIONE SUI SINGOLI SERVIZI Viene mostrata in figura la seconda interfaccia web realizzata per fornire funzionalità di ricerca sul singolo servizio. Si utilizza una funzione Java Script per costruire e inviare la query e delle form per l’inserimento i parametri dell’interrogazione. Come si vede dalla figura, il sistema permette una completa trasparenza dell’utente dalle tecnologie XML implementate. La scelta dei parametri della Query impiegati per il recupero delle informazioni è avvenuta in collaborazione con i responsabili di Teca Fast Rai, prendendo spunto dagli strumenti di ricerca della intranet aziendale. Nella pagina si possono effettuare ricerche multiple per aumentare la puntualità sul tipo di servizio, sull’emittente, su parole chiave e sul giornalista; il risultato contiene le parti dei documenti Mpeg-7(le singole sequenze) che soddisfano i parametri della query. La pagina di risosta è costruita associando al documento XML il foglio di stile XSL descritto nell'appendice D. Si utilizza per questa operazione un Java Servlet che permette di costruire dinamicamente una tabella in cui verranno visualizzati tutti i servizi risultanti dalla Query. pag.149 Figura 61 : INTERFACCIA DI RICERCA AVANZATA SUL SINGOLO SERVIZIO Figura 62 : RISPOSTA, RESTITUITA DEL SERVER, SOTTO FORMA DI DOCUMENTO XML CON ASSOCIATO UN FOGLIO DI STILE XSL D La query, quindi, è costruita in modo tale che come risultato visualizza una tabella con le informazioni sui servizi giornalistici estratti dalle descrizione dei singoli TG. Le informazioni di ogni servizio recuperato sono l’ordine del servizio rispetto al suo intero TG, l’emittente, il giornalista, l’abstract, il tipo di servizio, la data e la durata. Inoltre vengono costruiti due link uno che contiene il riferimento alla scheda di ogni TG e l'altro invece permette di vedere il servizio. pag.150 La scritta “Scheda TG” è documento XML di descrizione del programma da cui deriva il singolo servizio( esso viene ancora associato ad un altro foglio di stile necessario per visualizzare le informazioni aggiuntive) e l’ altra “Video” permette di connettersi al server di Streaming per visualizzare il singolo servizio. La scheda del TG è la stessa che si è incontrato nella prima interfaccia di query. pag.151 CAPITOLO 6 CONCLUSIONI E SVILUPPI DEL PROGETTO Lo scopo del progetto Internet TV fase 2 è la realizzazione di un sistema informativo per la gestione di metadati audiovisivi, basato sulle tecnologie più innovative, che si stanno imponendo in questo settore, e finalizzato alla diffusione di risorse audiovisive in rete geografica. Partendo dai risultati ottenuti dalla prima edizione, si sono ripercorsi tutti i passi fondamentali del lavoro precedente, quali conoscere la struttura di Teca Fast e acquisire competenze sulle tecnologie XML, a cui fa riferimento Mpeg-7, e sulle infrastrutture Web, quali ad esempio DBMS nativo XML. In particolare le tecnologie XML propongono una serie di strumenti molto potenti per la creazione di basi di dati più accessibili, portabili e flessibili delle tradizionali tecnologie. Le finalità del progetto Internet TV si possono sintetivamente riassumere in quattro punti: 1) Ricerca puntuale e interoperabilità con i sistemi preesistenti 2) Accesso attraverso interfacce Web 3) Gestione dei Metadati 4) Collegamento alla risorsa fisica (video streaming su richiesta) La prima differenza sostanziale rispetto al progetto precedente è stata migliorare la ricerca puntuale, introducendo query con condizioni multiple, così da puntare alla singola audiovisiva. Giovandosi dello stesso Server XML che permette di interfacciarsi con numerosi database tradizionali tra cui SQL Server, l'interoperabilità con i sistemi preesistenti è ancora presente nell'applicazione. Oltre alla gestione dei metadati, è stata introdotta una procedura per la loro estrazione adoperando lo strumento Movie Tool fornito dalla società giapponese Ricoh. La descrizione della risorsa audiovisiva risulta facilitata rispetto alla prima sperimentazione, inoltre sono state introdotte informazioni di più basso livello per aumentare il dettaglio nel metadato. Nel primo progetto il modello della struttura dati (descrizioni Mpeg-7) prevedeva la descrizione del contenuto audiovisivo al livello di “programma” inteso come puntata di programma televisivo trasmesso. La nuova struttura dati implementata prevede inoltre la descrizione delle singole sequenze e l'inserimento delle informazioni necessarie per la loro visualizzazione. I passi successi sono stati la definizione della architettura dell'applicazione Mpeg7 e l'integrazione di funzionalità di pubblicazione in video streaming su richiesta. Il prodotto finale è un sistema completo per l'estrazione e la gestione di un archivio televisivo digitale dal punto di vista dei metadati. Per il prosieguo del lavoro nell'ambito delle attività formative "Vivai d'Impresa", si sono individuati alcuni sviluppi che si possono riassumere in tre punti fondamentali. In primo luogo si studierà come potenziare la funzionalità per pag.152 l’estrazione automatica di Metadati. In secondo luogo si potranno implementare tecnologie per la gestione dei diritti d'autore integrando funzionalità per la gestione degli accessi e per la protezione della connessione e la sicurezza dei dati contenuti. Infine si propone di ricercare soluzioni adatte a portare il sistema verso architetture "open source". pag.153 BIBLIOGRAFIA, RISORSE IN RETE • "Speciale broadband: la rivoluzione della larga banda" di Andrea Petrucci disponibile all'indirizzo web: http://www.goa.it/speciali/largabanda.htm • "La televisione che non c'è e quella che ci sarà" di M.S. - disponibile all'indirizzo web: http://www.goa.it/speciali/webtv/ • “Il Multimedia nelle organizzazioni: Nuovi modelli di conoscenza e comunicazione - DOSSIER DI INGENIUM” di:Beppe Croce – Rivista Ingenium Anno XII n. 25 • Rapporto Settore 1 - INFORMATICA E TELECOMUNICAZIONI MEMBRI DEL GRUPPO DI LAVORO http://web.tiscalinet.it/GianlucaRipa/personal/ecom/convergenza.htm. • Sito web della SIAE: http://www.siae.it/Site2/SiaeMainSite.nsf/html/It_MMLicenza.html • “Archivi digitali” di Tommaso Russo – da “Archivi e Database”- Servizio del programma Mediamente – disponibile all’indirizzo internet http://www.mediamente.rai.it/home/tv2rete/mm9899/98122801/s981228.htm • “Sistema Teche – Patrimonio Rai – Catalogo Multimediale” - testo divulgativo rieditato da Barbara Scaramucci (Direttore Teche Rai), da un testo di Roberto del Pero, Giorgio Dimino e Mario Stroppiana del Centro Ricerche Rai. • “<indecs> Metadata Framework: Principles, model and dictionary”, ID WP1a-006-2.0, Godfrey Rust, MUZE inc; Mark Bide, EDItEUR. • “Metadata Watch Report #3”, Makx Dekkers, PrincewaterhouseCoopers, 20 Novembre 2000, SCHEMAS-PwC-WP2-D24-Final-20001120 • C. Oppenheim. “Legal issues associated with Electronic Copyright Management Systems”. • A. Ramsden. “Copyright Management Technologies”. • B. Tuck. “Electronic Copyright Management Systems”. • “Unique identifiers : a brief introduction” / by G. Greene and Mark Bide. • Sito web del W3C Consortium http://www.w3.org/ o Metadati: http://www.w3.org/metadata • Nell’ambito dell’UKOLN http://ukoln.ac.uk/ o Interoperabilità: http://ukoln.ac.uk/interop-focus pag.154 o Metadati: http://ukoln.ac.uk/metadata o E-lib Standards Guidelines http://www.ukoln.ac.uk/services/elib/papers/other/standards/versio n2/intro.html • IFLA - Digital Libraries http://ifla.inist.fr/II/index.htm • Dublin Core, siti ufficiali: http://purl.org/dc/ , http://dublincore.org • “XML and Related Technologies” distribuito da Software Ag sul sito www.softwareag.com/xml. • “Microsoft XML Document Object Model” di Gianluca Musella – articolo pubblicato sullo Speciale XML della rivista “Computer Programming” n.90 di Aprile 2000. • Document Object Model Level 1 Specification Version 1.0, reperibile all’indirizzo http://www.w3.org/TR/REC-DOM-Level-1/ • " XML passo passo" • " XML SPY" documetazione del software diponibile all''indirizzo http://www.xmlspy.com • “Architetture software per oggetti formativi definiti con XML” Tesi di Laurea di Paolo Diomede Tesi, sviluppata presso la Scuola Superiore G. Reiss Romoli (Telecom Italia, L'Aquila) • S.Land, XML: The ASCII of the future, MSDN News n.3, Maggio/Giugno 1999. • S.Mohr, Designing Distribuited Applications with XML, Wrox Press, 1999. • Per XQL: http://www.w3.org/TandS/QL/QL98/pp/ibmpos.html). • “MPEG: Il presente ed il futuro del multimediale”A cura di Gianfranco Giannini – Pixel Magazine, indirizzo web http://www.pixelmagazine.com/pag32.htm. • “Una rete d’ingegno” di Leonardo Chiariglione – Focus “Libri e copyright: la sfida digitale” dal sito web de “IlSole24Ore” indirizzo http://sole.ilsole24ore.com/cultura/domenica/focus7_05/06.htm • Hunter J., Iannella R., "The Application of Metadata Standards to Video Indexing", Second European Conference on Research and Advanced Technology for Digital Libraries, Crete, Greece, September, 1998. • Movie Tool: manuale e documentazione elettronica fornita con il prodotto. • Overview of the MPEG-7 Standard, Version 5.0, Marzo 2001, ISO/IEC JTC1/SC29/WG11 N4031 pag.155 • Documento Mpeg-7 ISO/IEC 15938-5 Multimedia Description Schemes Versione FCD N3966, 12 Marzo 2001, Singapore, ISO/IEC JTC 1/SC 29/WG 11/N3966. • "Mpeg-7 project" diponibile http://ipsi.fhd.de/delite/Projects/MPEG7/ • J. Hunter, L. Armstrong, "A Comparison of Schemas for Video Metadata Representation", WWW8, Toronto, May 10-14, 1999 - link : http://archive.dstc.edu.au/RDU/staff/jane-hunter/www8/paper.html • “Accesso a database via Web” di Luca Mari, edizioni Apogeo, 2002. • Tamino DB Server Developer edition v.2.2.9 manuale e documentazione elettronica fornita con il prodotto. all'indirizzo web : pag.156 APPENDICE A: LISTATO DEL DOCUMENTO DESCRITTIVO REALIZZATO SECONDO MPEG-7 MDS Descrizione di un programma Tv archiviato in Teca (caso studio del telegiornale “TG1”) basata su metadati e su strutture di descrizione Mpeg-7 MDS Multimedia Description Schemes. <?xml version="1.0" encoding="Shift_JIS"?> <!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com) by () --> <Mpeg7 type="complete" xmlns="http://www.mpeg7.org/2001/MPEG-7_Schema" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"> <DescriptionMetadata id="descriptionMetadata-36"> <Comment> <FreeTextAnnotation>Descrizione delle informazioni descrittive del contenuto audiovisivo di un telegiornale della RAI</FreeTextAnnotation> </Comment> <Creator> <Agent xsi:type="PersonType" id="agent-37"> <Name> <GivenName>Donato Biscaglia e Gianluca Cicero</GivenName> </Name> </Agent> <Instrument> <Tool id="tool-38" href="urn:ricoh:mmVISION:DescriptionToolCS:2"> <Name>MovieTool</Name> </Tool> </Instrument> </Creator> <CreationTime>2002-06-14T15:13:00:000:00</CreationTime> </DescriptionMetadata> <ContentDescription xsi:type="ContentEntityType"> <MultimediaContent xsi:type="AudioVisualType" id="multimediaContent-1"> <AudioVisual id="logical-2"> <MediaLocator type="TemporalSegmentLocatorType"> <MediaTime> <MediaTimePoint> 2002-06-04 T20:00:00:000:00</MediaTimePoint> <MediaDuration>P0DT0H4M29S13N25F</MediaDuration> </MediaTime> </MediaLocator> <StructuralUnit id="structuralUnit-3" href="urn:ricoh:mmVISION:SegmentTypeCS:1"> <Name xml:lang="en">logical</Name> </StructuralUnit> <CreationInformation id="creationInformation-39"> <Creation id="creation-40"> <Title>TG1</Title> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Emittente</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>RAI_UNO</GivenName> </Name> </Agent> </Creator> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Speaker</Name> </Role> <Agent type="PersonType" id="agent-88"> pag.157 <Name> <GivenName>Filippo Gaudenzi</GivenName> </Name> </Agent> </Creator> <Creator> <Role href="TecaFastXmCreatorCS"> <Name>Regia</Name> </Role> <Agent xsi:type="PersonType"> <Name> <GivenName>Simone Morrettii</GivenName> </Name> </Agent> </Creator> <Creator> <Role href="TecaFastXmCreatorCS"> <Name>Direttore di produzione</Name> </Role> <Agent xsi:type="PersonType"> <Name> <GivenName>Franco Campanna</GivenName> </Name> </Agent> </Creator> <Creator> <Role href="TecaFastXmCreatorCS"> <Name>Direttore fotografia</Name> </Role> <Agent xsi:type="PersonType"> <Name> <GivenName>Mauro Durante</GivenName> </Name> </Agent> </Creator> <CreationCoordinates> <CreationLocation id="creationLocation-43"> <Name xsi:type="TextualType">Roma, Lazio</Name> <Role id="role-44"> <Name>Studi di produzione</Name> </Role> <Country>it</Country> <AdministrativeUnit>Studi Rai Saxa Rubra-3</AdministrativeUnit> </CreationLocation> <CreationDate> <TimePoint>2002-06-15T20:00:00:000:00</TimePoint> </CreationDate> </CreationCoordinates> </Creation> <Classification id="classification-45"> <Form type="GenreType" id="form-46" href="urn:mpeg:TVAnytime_v0.1FormatCS:1.3"> <Name>Magazine</Name> </Form> <Genre id="genre-47" href="TecaFastXmGenreCS"> <Name>Cultura , Attualita'</Name> </Genre> <Target> <Age min=">10"/> </Target> </Classification> </CreationInformation> <UsageInformation id="usageInformation-48"> <Rights> <RightsId> <IDOrganization> <Name>Rai Produzione Radio Televisiva(esempio)</Name> </IDOrganization> <IDName> pag.158 <Name>Rai TV Rights(esempio)</Name> </IDName> <UniqueID>RAICANALE3-TV001-ITALY-3758696(esempio)</UniqueID> </RightsId> </Rights> </UsageInformation> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime"> P0DT0H0M0S0N25F</MediaRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">6738</MediaIncrDuration> </MediaTime> <MediaSourceDecomposition id="mediaSourceDecomposition-4" criteria="physical" overlap="true" gap="true"> <AudioVisualSegment id="physical-5"> <StructuralUnit id="structuralUnit-6" href="urn:ricoh:mmVISION:SegmentTypeCS:2"> <Name xml:lang="en">physical</Name> </StructuralUnit> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime"> P0DT0H0M0S0N25F</MediaRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">6738</MediaIncrDuration> </MediaTime> <MediaSourceDecomposition id="mediaSourceDecomposition-7" criteria="description" overlap="true" gap="true"> <AudioVisualSegment id="description-8"> <MediaInformation id="mediaInformation-9"> <MediaProfile id="mediaProfile-10"> <MediaFormat> <Content>audiovisual</Content> <Medium id="medium-11" href="urn:mpeg:MPEG7MediumCS:2.1.1"> <Name xml:lang="en">HardDisk</Name> </Medium> <FileFormat id="fileFormat-12" href="urn:mpeg:MPEG7FileFormatCS:3"> <Name xml:lang="en">mpeg</Name> </FileFormat> <FileSize>37687948</FileSize> <System id="system-13" href="urn:mpeg:MPEG7SystemCS:1"> <Name xml:lang="en">PAL</Name> </System> <BitRate>178400</BitRate> <VisualCoding> <Format id="format-14" href="urn:mpeg:MPEG7VisualCodingFormatCS:2"> <Name xml:lang="en">MPEG-1</Name> </Format> <Frame height="288" width="352" aspectRatio="1.22222222222222" rate="25"/> </VisualCoding> </MediaFormat> <MediaInstance id="mediaInstance-15"> <InstanceIdentifier type="mmVISION/PhysicalFileID" organization="src.ricoh.co.jp">Undefined</InstanceIdentifier> <MediaLocator xsi:type="TemporalSegmentLocatorType"> <MediaUri> file://alfa/d.biscaglia/desktop/ProveVideo/tglaziompg.mpg</MediaUri> <MediaTime> <MediaRelTimePoint timeBase="../../MediaUri"> P0DT0H0M0S0N25F</MediaRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F"> 5302</MediaIncrDuration> </MediaTime> </MediaLocator> </MediaInstance> </MediaProfile> </MediaInformation> pag.159 <StructuralUnit id="structuralUnit-16" href="urn:ricoh:mmVISION:SegmentTypeCS:2.2"> <Name xml:lang="en">description</Name> </StructuralUnit> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime"> P0DT0H0M0S0N25F</MediaRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">6738 </MediaIncrDuration> </MediaTime> </AudioVisualSegment> </MediaSourceDecomposition> </AudioVisualSegment> </MediaSourceDecomposition> <TemporalDecomposition id="temporalDecomposition-20" criteria="structure" overlap="true" gap="true"> <AudioVisualSegment id="structure-21"> <StructuralUnit id="structuralUnit-22" href="urn:ricoh:mmVISION:SegmentTypeCS:4"> <Name xml:lang="en">structure</Name> </StructuralUnit> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime"> P0DT0H0M0S0N25F</MediaRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">6738</MediaIncrDuration> </MediaTime> <TemporalDecomposition id="temporalDecomposition-23" criteria="structure" overlap="true" gap="true"> <AudioVisualSegment id="structure-24"> <MediaLocator type="TemporalSegmentLocatorType"> <Image>http://62.110.204.10/tecaprova/Frame/tg1/tg1introd.jpg</Image> <MediaUri>rtsp://62.110.204.10:554/tg1.rm</MediaUri> </MediaLocator> <StructuralUnit id="structuralUnit-25" href="urn:ricoh:mmVISION:SegmentTypeCS:4"> <Name xml:lang="en">structure</Name> </StructuralUnit> <CreationInformation id="creationInformation-49"> <Creation id="creation-50"> <Title>Servizio1:Introduzione</Title> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Giornalista</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>Filippo Gaudenzi</GivenName> </Name> </Agent> </Creator> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Emittente</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>RAI_UNO </GivenName> </Name> </Agent> </Creator> <CreationCoordinates> <CreationDate> <TimePoint>2002-06-04T14:10:00:000:00</TimePoint> </CreationDate> </CreationCoordinates> </Creation> <Classification id="classification-53"> <Genre id="genre-56" href="TecaFastXmGenreCS"> pag.160 <Name>Politica Estera</Name> </Genre> </Classification> </CreationInformation> <TextAnnotation> <FreeTextAnnotation/> </TextAnnotation> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime">P0DT0H0M0S0N25F</MediaR elTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">520</MediaIncrDuration> </MediaTime> </AudioVisualSegment> <AudioVisualSegment id="structure-26"> <MediaLocator type="TemporalSegmentLocatorType"> <Image>http://62.110.204.10/tecaprova/Frame/tg1/tg1serv1.jpg</Image> <MediaUri>rtsp://62.110.204.10:554/tg1.rm</MediaUri> </MediaLocator> <StructuralUnit id="structuralUnit-27" href="urn:ricoh:mmVISION:SegmentTypeCS:4"> <Name xml:lang="en">structure</Name> </StructuralUnit> <CreationInformation id="creationInformation-57"> <Creation id="creation-58"> <Title>Servizio 1</Title> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Giornalista</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>Dino Corgona'</GivenName> </Name> </Agent> </Creator> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Emittente</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>RAI_UNO </GivenName> </Name> </Agent> </Creator> <CreationCoordinates> <CreationDate> <TimePoint>2002-06-04T14:10:00:000:00</TimePoint> </CreationDate> </CreationCoordinates> </Creation> <Classification id="classification-61"> <Genre id="genre-62" href="TecaFastXmGenreCS"> <Name>Politica Estera</Name> </Genre> </Classification> </CreationInformation> <TextAnnotation> <FreeTextAnnotation>A Kanasky in Canada vertice del G8</FreeTextAnnotation> </TextAnnotation> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime">P0DT0H0M20S20N25F</Medi aRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">1596</MediaIncrDuration> </MediaTime> </AudioVisualSegment> pag.161 <AudioVisualSegment id="structure-28"> <MediaLocator type="TemporalSegmentLocatorType"> <Image>http://62.110.204.10/tecaprova/Frame/tg1/tg1introd.jpg</Image> <MediaUri>rtsp://62.110.204.10:554/tg1.rm</MediaUri> </MediaLocator> <StructuralUnit id="structuralUnit-29" href="urn:ricoh:mmVISION:SegmentTypeCS:4"> <Name xml:lang="en">structure</Name> </StructuralUnit> <CreationInformation id="creationInformation-63"> <Creation id="creation-64"> <Title>Servizio2:Introduzione</Title> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Giornalista</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>Filippo Gaudenzi</GivenName> </Name> </Agent> </Creator> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Emittente</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>RAI_UNO </GivenName> </Name> </Agent> </Creator> <CreationCoordinates> <CreationDate> <TimePoint>2002-06-04T14:10:00:000:00</TimePoint> </CreationDate> </CreationCoordinates> </Creation> <Classification id="classification-67"> <Genre id="genre-68" href="TecaFastXmGenreCS"> <Name>Economia</Name> </Genre> </Classification> </CreationInformation> <TextAnnotation> <FreeTextAnnotation/> </TextAnnotation> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime">P0DT0H1M24S16N25F</Medi aRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">274</MediaIncrDuration> </MediaTime> </AudioVisualSegment> <AudioVisualSegment id="structure-30"> <MediaLocator type="TemporalSegmentLocatorType"> <Image>http://62.110.204.10/tecaprova/Frame/tg1/tg1serv3.jpg</Image> <MediaUri>rtsp://62.110.204.10:554/tg1.rm</MediaUri> </MediaLocator> <StructuralUnit id="structuralUnit-31" href="urn:ricoh:mmVISION:SegmentTypeCS:4"> <Name xml:lang="en">structure</Name> </StructuralUnit> <CreationInformation id="creationInformation-69"> <Creation id="creation-70"> <Title>Servizio 2</Title> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> pag.162 <Name>Giornalista</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>Marzio Quaglino</GivenName> </Name> </Agent> </Creator> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Emittente</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>RAI_UNO </GivenName> </Name> </Agent> </Creator> <CreationCoordinates> <CreationDate> <TimePoint>2002-06-04T14:10:00:000:00</TimePoint> </CreationDate> </CreationCoordinates> </Creation> <Classification id="classification-73"> <Genre id="genre-74" href="TecaFastXmGenreCS"> <Name>Economia</Name> </Genre> </Classification> </CreationInformation> <TextAnnotation> <FreeTextAnnotation>Borsa: attenuati i ribassi dovuti agli scandali finanziari americani. Nuovo record dell' Euro sul Dollaro </FreeTextAnnotation> </TextAnnotation> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime">P0DT0H1M35S15N25F</Medi aRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">1725</MediaIncrDuration> </MediaTime> </AudioVisualSegment> <AudioVisualSegment id="structure-32"> <MediaLocator type="TemporalSegmentLocatorType"> <Image>http://62.110.204.10/tecaprova/Frame/tg1/tg1introd.jpg</Image> <MediaUri>rtsp://62.110.204.10:554/tg1.rm</MediaUri> </MediaLocator> <StructuralUnit id="structuralUnit-33" href="urn:ricoh:mmVISION:SegmentTypeCS:4"> <Name xml:lang="en">structure</Name> </StructuralUnit> <CreationInformation id="creationInformation-75"> <Creation id="creation-76"> <Title>Servizio3:Introduzione</Title> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Giornalista</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>Filippo Gaudenzi</GivenName> </Name> </Agent> </Creator> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Emittente</Name> </Role> <Agent type="PersonType" id="agent-88"> pag.163 <Name> <GivenName>RAI_UNO </GivenName> </Name> </Agent> </Creator> <CreationCoordinates> <CreationDate> <TimePoint>2002-06-04T14:10:00:000:00</TimePoint> </CreationDate> </CreationCoordinates> </Creation> <Classification id="classification-79"> <Genre id="genre-80" href="TecaFastXmGenreCS"> <Name>Sport</Name> </Genre> </Classification> </CreationInformation> <TextAnnotation> <FreeTextAnnotation/> </TextAnnotation> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime">P0DT0H2M44S15N25F</Medi aRelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">425</MediaIncrDuration> </MediaTime> </AudioVisualSegment> <AudioVisualSegment id="structure-34"> <MediaLocator type="TemporalSegmentLocatorType"> <Image>http://62.110.204.10/tecaprova/Frame/tg1/tg1serv2.jpg</Image> <MediaUri>rtsp://62.110.204.10:554/tg1.rm</MediaUri> </MediaLocator> <StructuralUnit id="structuralUnit-35" href="urn:ricoh:mmVISION:SegmentTypeCS:4"> <Name xml:lang="en">structure</Name> </StructuralUnit> <CreationInformation id="creationInformation-81"> <Creation id="creation-82"> <Title>Servizio 3</Title> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Giornalista</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>Maurizio Colantoni</GivenName> </Name> </Agent> </Creator> <Creator> <Role type="GenreType" id="role-87" href="TecaFastXmCreatorCS"> <Name>Emittente</Name> </Role> <Agent type="PersonType" id="agent-88"> <Name> <GivenName>RAI_UNO </GivenName> </Name> </Agent> </Creator> <CreationCoordinates> <CreationDate> <TimePoint>2002-06-04T14:10:00:000:00</TimePoint> </CreationDate> </CreationCoordinates> </Creation> <Classification id="classification-85"> <Genre id="genre-86" href="TecaFastXmGenreCS"> <Name>Sport</Name> pag.164 </Genre> </Classification> </CreationInformation> <TextAnnotation> <FreeTextAnnotation>Mondiali 2002: la finale sar_ Germania - Brasile . Vittoria del Brasile nelle semifinali contro la Turchia grazie ad un gol di Ronaldo</FreeTextAnnotation> </TextAnnotation> <MediaTime> <MediaRelTimePoint timeBase="/Mpeg7/ContentDescription/MultimediaContent[1]/AudioVisual[1]/MediaTime">P0DT0H3M1S15N25F</Media RelTimePoint> <MediaIncrDuration timeUnit="P0DT0H0M0S1N25F">2198</MediaIncrDuration> </MediaTime> </AudioVisualSegment> </TemporalDecomposition> </AudioVisualSegment> </TemporalDecomposition> </AudioVisual> </MultimediaContent> </ContentDescription> </Mpeg7> pag.165 APPENDICE B LISTATI DEL CODICE DELLE INTERFACCE WEB Codice dell’interfaccia di gestione del DB. <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <TITLE>Tamino TECA FAST Interface (Input Part)</TITLE> <script Language="JavaScript"> var defaultDB="/tecafast/teca2002collection"; var defaultPath="/tamino"; var suggestedDatabaseURL=null; var mylocation=null; var host="62.110.204.10"; var protocol="http:"; var server=""; var port=80; suggestedDatabaseURL="http://62.110.204.10"+defaultPath+defaultDB; if (window) { mylocation=window.location; if (mylocation.protocol.match(/^http/)!=null) { protocol=mylocation.protocol; host=mylocation.host; port=mylocation.port; } } server=protocol+"//"+host; suggestedDatabaseURL=server+defaultPath+defaultDB; function setup() { if (suggestedDatabaseURL) document.forms[0].xxxdbname.value=suggestedDatabaseURL; } function setAction(){ var xxaction= document.forms[0].xxxdbname.value; //alert("Database name will be changed " + xxaction ); document.forms[1].action = xxaction; defaultStatus = "Database URL set to " + xxaction; } </script> <style type="text/css"> <!-.unnamed1 { font-family: Arial, Helvetica, sans-serif; font-size: xx-small; font-style: normal; line-height: normal; fontweight: normal; text-transform: capitalize; color: #000066; background-color: #99CCFF; text-align: center; verticalalign: middle; word-spacing: normal; white-space: normal; border-style: groove} --> </style> </head> <BODY BGCOLOR="#99CCFF" LINK="#0000ff" VLINK="#800080" onload="setup()"> <table width="96%" cellpadding="0" cellspacing="0" bgcolor="#FFFFCC" bordercolor="#FF9900" align="center"> <tr> <td width="7%" height="34"><img src="http://images.elis.org/vivai/vivai120x40.gif" width="120" height="40"></td> <td width="83%" height="34"> <div align="center"> <p> <font color="#000066"><i><b><font size="4">TV NEWS ARCHIVE </font> pag.166 Gestione DB</b></i></font></p> </div> </td> <td align="right" width="10%" height="34"><img src="http://images.elis.org/logo/rai-83x49.gif"> </td> </tr> </table> <table cellspacing="10" align="center" width="882" bordercolor="#FFCC66" bgcolor="#FFFFCC" height="300"> <tr> <td bgcolor="#99CCFF" height="231" width="858"> <form> <b> <font face="Arial, Helvetica, sans-serif" size="2" color="#000066">URL del DataBase XML</font><font face="Arial, Helvetica, sans-serif" size="2"></font><i><font face="Arial, Helvetica, sans-serif" size="2"> </font></i></b><font face="Arial, Helvetica, sans-serif" size="2"><font size="1" color="#FF0000">(selezionare il DB e la collezione: impostare prima di eseguire):</font></font><b><br> </b> <input type=text size=52 name=xxxdbname value="http://62.110.204.10/tamino/tecafast/teca2002collection"> <input type="button" value="Imposta DB" onclick="setAction()"> <br> </form> <form action="http://localhost/tamino/my-database" method=POST enctype="multipart/form-data" target=xqlout.htm> <input type="hidden" name="_encoding" value="utf-8"> <table width="519"> <tr> <td width="279"> <tr> <td bgcolor="#FFFFCC" width="279"> <div align="center"><font size="1" face="Arial, Helvetica, sans-serif" color="#330033"><b>Processa File:</b></font></div> <td width="169"> <input type=file size=30 name=_Process> <td width="51"> <tr> <td bgcolor="#FFFFCC" width="279"> <div align="center"><font size="1" face="Arial, Helvetica, sans-serif" color="#330033"><b>Cancella:</b></font></div> <div align="center"><font size="1" face="Arial, Helvetica, sans-serif" color="#330033"><b>(//Mpeg7[@ino:id=])</b></font></div> <td width="169"> <input type=text size=30 name=_Delete> <td width="51"> <tr> <td bgcolor="#FFFFCC" width="279"> <div align="center"><font face="Arial, Helvetica, sans-serif" size="1" color="#000066"><b>Definisci Schema:</b></font></div> <td width="169"> <input type=file size=30 name=_Define> <td width="51"> </tr> <tr> <td bgcolor="#FFFFCC" width="279"> <div align="center"><font face="Arial, Helvetica, sans-serif" size="1" color="#000066"><b>Elimina Schema:</b></font></div> <td width="169"> <input type=text size=30 name=_Undefine> <td width="51"> </tr> <tr> <td bgcolor="#FFFFCC" width="279"> <td width="169"> <td width="51"> </tr> <tr> <td width="279"> <input type=submit value=Esegui name="submit"> pag.167 <input type=reset value=Cancella name="reset"> <td width="169"> <td width="51"> </tr> </table> </form> </table> </body> </html> <!-- ..... --> <form name="form_parametri"> <!-- ..... --> <input name="campoutente1" type="text"/> <!-- ..... --> <select name="select_criterioutente" size="1"> <option value="//AudioVisual//Title" selected>su Titolo</option> <option value="//AudioVisual//Creator//GivenName">su Autori</option> <option value="//AudioVisual//FreeTextAnnotation">su Descrizioni</option> </select> <!-- ..... --> <input type="button" value="invia" onClick="sendQueryServlet()" name="button"/> <input type="reset" value="azzera" name="reset"/> </form> <!-- ..... --> </BODY> </HTML> pag.168 Codice dell’interfaccia di ricerca sull'intero TG. <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <TITLE>Tamino TECA FAST Interface (Input Part)</TITLE> <script language="JavaScript"> function sendQuery() { var temp=document.form_parametri; var flag; var query="http://62.110.204.10/servlets/tecafast2style/tamino/tecafast/teca2002collection/Mpeg7?_xql="; var xsltransf="&_xslsrc=http://62.110.204.10/tecaprova/xsl/TGdisplay.xsl"; var criteriostart="Mpeg7[//Creator[Role/Name='Emittente']//GivenName"; var criteriostart2="//Creator[Role/Name='Speaker']//GivenName"; var criteriostart1="//MediaTimePoint"; var criteriovalorestart="'*"; var criteriovaloreend="*'"; var criterioconfronto="~="; flag=0; if (temp.emittente.value!="" || temp.speaker.value!="" || temp.anno.value!="" || temp.mese.value!="" || temp.giorno.value!="" || temp.ora.value!="") { flag++; query= query + criteriostart + criterioconfronto + criteriovalorestart + temp.emittente.value + criteriovaloreend + "and" + criteriostart2 + criterioconfronto + criteriovalorestart + temp.speaker.value + criteriovaloreend + "and" + criteriostart1+ criterioconfronto + criteriovalorestart + temp.anno.value +temp.mese.value+temp.giorno.value+ temp.ora.value+ criteriovaloreend + "]"+ xsltransf ; } switch (flag) { case 0:{ alert("Inserisci almeno un valore!"); break; } case 1:{ <!-- alert("Sto inviano la query: " + query); --> window.open(query); break; } default: alert("Hai inserito pi?i un valore!"); } } </script> </head> <BODY BGCOLOR="#99CCFF" LINK="#0000ff" VLINK="#800080" > <table width="96%" cellpadding="0" cellspacing="0" bgcolor="#FFFFCC" bordercolor="#FF9900" align="center"> <tr> <td width="7%" height="34"><img src="http://62.110.204.10/tecaprova/immagini/tr_vivai168x70.gif" width="120" height="40"></td> <td width="83%" height="34"> <div align="center"> <p> <font color="#000066"><i><b><font size="4">TV NEWS ARCHIVE </font> </b></i></font></p> </div> </td> <td align="right" width="10%" height="34"><img src="http://62.110.204.10/tecaprova/immagini/rai-83x49.gif"> </td> </tr> </table> <form name="form_parametri" > <table cellspacing="10" align="center" width="882" bordercolor="#FFCC66" bgcolor="#FFFFCC" height="300"> <tr> <td bgcolor="#99CCFF" height="231" width="858"> <div style="position: absolute; top: 75; left: 54; width: 764; height: 316"> <table width="764" height="185"> <tr> <td width="1650" height="71"><i><b> EMITTENTE</b></i> & nbsp; pag.169 <select name="emittente" size="1"> <option value=""></option> <option value="RAI_UNO">RAI UNO</option> <option value="RAI_DUE">RAI DUE</option> <option value="RAI_TRE">RAI TRE</option> </select> </tr> <tr> <td width="983" height="67"><i><b> DATA</b></i> & nbsp; <select name="anno" size="1"> <option value=""></option> <option value="2001">2001</option> <option value="2002">2002</option> </select> <select name="mese" size="1"> <option value=""></option> <option value="-01-">GENNAIO</option> <option value="-02-">FEBBRAIO</option> <option value="-03-">MARZO</option> <option value="-04-">APRILE</option> <option value="-05-">MAGGIO</option> <option value="-06-">GIUGNO</option> <option value="-07-">LUGLIO</option> <option value="-08-">AGOSTO</option> <option value="-09-">SETTEMBRE</option> <option value="-10-">OTTOBRE</option> <option value="-11-">NOVEMBRE</option> <option value="-12-">DICEMBRE</option> </select> <select name="giorno" size="1"> <option value=""></option> <option value="01">1</option> <option value="02">2</option> <option value="03">3</option> <option value="04">4</option> <option value="05">5</option> <option value="06">6</option> <option value="07">7</option> <option value="08">8</option> <option value="09">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> </tr> <tr> <td width="478" height="54"><i><b> ORA</b></i> &nb sp; pag.170 <select name="ora" size="1"> <option value=""></option> <option value="08">8:00</option> <option value="14">14:00</option> <option value="20">20:00</option> </select> </tr> <tr> <td width="478" height="53"><p><i><b> SPEAKER</b></i> &nbs p; <input name="speaker" type="text" size="35"/> </p> </tr> <tr> <td width="849" height="27"> <p> <p> <p> <input type=submit value=invia onClick="sendQuery()" name="button" > <input type=reset value=azzera name="reset" > </tr> </table> </div> </form> </table> </body> </html> pag.171 Codice dell’interfaccia di ricerca sul singolo servizio giornalistico <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <TITLE>Tamino TECA FAST Interface </TITLE> <script language="JavaScript"> function sendQuery() { var temp=document.form_parametri; var flag; var query="http://62.110.204.10/servlets/tecafast2style/tamino/tecafast/teca2002collection/Mpeg7?_xql="; var xsltransf="&_xslsrc=http://62.110.204.10/tecaprova/xsl/TGservizi.xsl"; var criteriostart="Mpeg7//AudioVisual/TemporalDecomposition/AudioVisualSegment/TemporalDecomposition/AudioVisua lSegment[//GivenName"; var criteriostart1="//Name"; criteriostart2="//GivenName"; var criteriostart3="//FreeTextAnnotation"; var criteriovalorestart="'*"; var criteriovaloreend="*'"; var criterioconfronto="~="; flag=0; if (temp.emittente.value!="" || temp.servizio.value!="" || temp.descrizione.value!="" || temp.giornalista.value!="") { flag++; query= query + criteriostart + criterioconfronto + criteriovalorestart + temp.emittente.value + criteriovaloreend + "and" + criteriostart1+ criterioconfronto + criteriovalorestart + temp.servizio.value + criteriovaloreend +"and"+ criteriostart2 + criterioconfronto +criteriovalorestart+ temp.giornalista.value+ criteriovaloreend + "and"+criteriostart3+criterioconfronto+ criteriovalorestart+temp.descrizione.value + criteriovaloreend + "]"+ xsltransf ; } switch (flag) { case 0:{ alert("Inserisci almeno un valore!"); break; } case 1:{ <!-- alert("Sto inviano la query: " + query); --> window.open(query); break; } default: alert("Hai inserito pi?i un valore!"); } } </script> </head> <BODY BGCOLOR="#99CCFF" LINK="#0000ff" VLINK="#800080" > <table width="96%" cellpadding="0" cellspacing="0" bgcolor="#FFFFCC" bordercolor="#FF9900" align="center"> <tr> <td width="7%" height="34"><img src="http://images.elis.org/vivai/vivai120x40.gif" width="120" height="40"></td> <td width="83%" height="34"> <div align="center"> <p> <font color="#000066"><i><b><font size="4">TV NEWS ARCHIVE </font> eX</b></i></font><font color="#000066"><i><b>perimental Metadata Engine</b></i></font></p> </div> </td> <td align="right" width="10%" height="34"><img src="http://images.elis.org/logo/rai-83x49.gif"> </td> </tr> </table> <form name="form_parametri" > pag.172 <table cellspacing="10" align="center" width="882" bordercolor="#FFCC66" bgcolor="#FFFFCC" height="300"> <tr> <td bgcolor="#99CCFF" height="231" width="858"> <table width="576" height="1"> <tr> <td width="279" height="65"><b><i>EMITTENTE </i></b> <td width="226" height="65"> <select name="emittente" size="1"> <option value=""></option> <option value="RAI_UNO">RAI UNO</option> <option value="RAI_DUE">RAI DUE</option> <option value="RAI_TRE">RAI TRE</option> </select> </tr> <tr> <td width="279" height="77"> <p><b><i>TIPO DI SERVIZIO</i></b></p> <td width="226" height="77"> <p> <select name="servizio" size="1"> <option value=""></option> <option value="attualit">ATTUALITA'</option> <option value="cronaca">CRONACA</option> <option value="economia">ECONOMIA</option> <option value=" politica">POLITICA</option> <option value="sport">SPORT</option> <option value="storia">STORIA</option> </select> </p> </tr> <tr> <td width="279" height="1"><b><i>DESCRIZIONE dei SERVIZI</i></b> <p><font size="1">(INSERISCI UNA PAROLA O UNA STRINGA) </font> <p> <td width="226" height="1"> <input name="descrizione" type="text" / size="44"> </tr> <tr> <td width="279" height="8"><b><i>GIORNALISTA</i></b> <p><font size="1">(INSERISCI IL NOME) </font> </p> <p> <td width="226" height="8"> <input name="giornalista" type="text" / size="44"> </tr> </table> </form> </table> <p> <input type=submit value=invia onClick="sendQuery()" name="button" > <input type=reset value=azzera name="reset" > </p> </body> </html> pag.173 APPENDICE C LISTATI DEL CODICE DEI FOGLI DI STILE XSL Codice del foglio di stile XSL A <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmlns:xql="http://metalab.unc.edu/xql/" xmlns:mpeg="http://www.mpeg7.org/2001/MPEG-7_Schema" exclude-result-prefixes="xql ino mpeg" version="1.0"> <xsl:template match="/"> <!-- si definiscono i parametri di formattazione al livello radice --> <html> <body alink="#ff3300" link="#ffcc00" text="#ffffff" vlink="#ff9900" background="/SITOTECA/foglie.jpg"> <div align="center"> <table cellpadding="5" cellspacing="0" border="0" width="100%" height="104" vspace="0" hspace="0"> <tbody> <tr> <td width="15" height="100%" align="right" valign="top"><img src="/leftline01.jpg" width="15" height="100%"/></td> <td valign="top"><img src="/SITOTECA/rai-83x49.gif" width="83" height="49" /> <br /><br /><img src="/SITOTECA/elisicon.gif" width="67" height="56" /> <br /><br /><img src="/SITOTECA/tr_vivai168x70.gif" width="137" height="49" /> <br /> <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFCC66"><b><font color="#000066"><font color="#990000"></font><font color="#990000"></font> <br /><font color="#990000" size="5">TV </font><font color="#990000" size="5"> NEWS</font> <br /><font color="#990000" size="5"> ARCHIVE</font></font></b></font> <br /> <br /> <br /> <br /> <br /> <font color="#000000">Internet TV Project <br />Vivai d'Impresa <br />Elis - RAI </font> </td> <td width="100%"> <div align="center"> <table width="500"> <tr> <td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="4" color="#330033">Risultati trovati:</font></td> </tr> </table> <br /> <xsl:for-each select="//mpeg:Mpeg7"> <table bgcolor="#330033" bordercolor="#000000" cellpadding="5" cellspacing="0" border="0" width="500"> <xsl:variable name="number"> <xsl:value-of select="./@ino:id"/> </xsl:variable> <xsl:variable name="query">http://62.110.204.10/servlets/tecafast2style/tamino/tecafast/teca2002collection?_xql=Mpeg7[ @ino:id=</xsl:variable> <xsl:variable name="style">&_xslsrc=http://62.110.204.10/tecaprova/xsl/tglazioProva.xsl</xsl:variable> <xsl:variable name="style1">&_xslsrc=http://62.110.204.10/tecaprova/xsl/TGmediaprof.xsl</xsl:variable> <tr> <td valign="top" bgcolor="#330033"> <font color="#ffcc00" size="2"><xsl:value-of select="position()"/> )</font></td> <td bgcolor="#330033" valign="top" width="80%"> <font color="#ffcc00" face="Verdana, Arial, Helvetica, sans-serif" size="2"> pag.174 <b> <font color="#999999"> Titolo: </font></b> <a target="_blank"> <xsl:attribute name="href"> <xsl:value-of select="concat($query,$number,']',$style)"/> </xsl:attribute> <xsl:value-of select="mpeg:ContentDescription//mpeg:Title"/> </a> </font> <br/> <font color="#ffcc00" face="Verdana, Arial, Helvetica, sans-serif" size="2"> <b><font color="#999999" size="2"> Emittente: </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:Creator[mpeg:Role/mpeg:Name='Emittente']/mpeg:Agent/mpeg:Nam e/mpeg:GivenName"/></b> <br /> <b><font color="#999999" size="2"> Speaker </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:Creator[mpeg:Role/mpeg:Name='Speaker']/mpeg:Agent/mpeg:Name /mpeg:GivenName"/></b> <b><font color="#999999" size="2"> <br /> Data e ora di trasmissione: </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:MediaTime/mpeg:MediaTimePoint"/> </b> <b><font color="#999999" size="2"> <br /> Durata: </font> <script language="JavaScript"> var temp = "<xsl:value-of select="mpeg:ContentDescription//mpeg:MediaTime/mpeg:MediaDuration"/>"; var minuti; var secondi; if(temp.substr(7,1) == "M" ){minuti = temp.substr(6,1); if(temp.substr(9,1) == "S"){secondi = temp.substr(8,1)} else{secondi = temp.substr(8,2)} } else {minuti = temp.substr(6,2); if(temp.substr(10,1) == "S"){secondi = temp.substr(9,1)} else{secondi = temp.substr(9,2)}} TIME=minuti + ":" + secondi document.write(TIME) </script> </b> </font> <br /> <a target="_blank"> <xsl:attribute name="href"> <xsl:value-of select="concat($query,$number,']',$style1)"/> </xsl:attribute> MEDIA PROFILE </a> </td> </tr> </table> <br /> </xsl:for-each> </div> </td> <td width="15" align="right" valign="top"><img src="/leftline01.jpg" width="15" height="550"/></td> </tr> </tbody> </table> <br /> <br /> <br /></div> </body> </html> </xsl:template> <xsl:template match="/ino:response/ino:message"/> <xsl:template match="/ino:response/xql:query"/> </xsl:stylesheet> pag.175 Codice del foglio di stile XSL B <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmlns:xql="http://metalab.unc.edu/xql/" xmlns:mpeg="http://www.mpeg7.org/2001/MPEG-7_Schema" exclude-result-prefixes="xql ino mpeg" version="1.0"> <xsl:template match="/"> <xsl:variable name="query" select="mpeg:MediaLocator/mpeg:MediaUri"></xsl:variable> <html> <head> <title>Nuova pagina 1</title> </head> <body background="http:\\62.110.204.10\tecaprova\immagini\foglie.jpg"> <xsl:for-each select="//mpeg:Mpeg7"> <table border="1" bordercolor="#00003299" width="75%" height="40" bgcolor="#99CCFF" align="center" cellpadding="1"> <tr> <td width="100%" bgcolor="#00003299"><strong><font color="yellow"><xsl:value-of select="mpeg:ContentDescription/mpeg:MultimediaContent/mpeg:AudioVisual/mpeg:CreationInformation/mpe g:Creation/mpeg:Title"/></font></strong> </td> </tr> <tr> <td width="100%" bgcolor="#99CCFF"><strong>Emittente:</strong><xsl:value-of select="mpeg:ContentDescription//mpeg:Creator/mpeg:Agent/mpeg:Name/mpeg:GivenName"/><br></br> <strong> Speaker:</strong><xsl:value-of select="mpeg:ContentDescription//mpeg:Creator[mpeg:Role/mpeg:Name='Speaker']/mpeg:Agent/mpeg:Name /mpeg:GivenName"/><br></br><strong> Data e ora:</strong><xsl:value-of select="mpeg:ContentDescription//mpeg:MediaTime/mpeg:MediaTimePoint"/><br></br> <strong>Durata: </strong> <script language="JavaScript"> var nframeE = "<xsl:value-of select="mpeg:ContentDescription//mpeg:MediaTime/mpeg:MediaIncrDuration"/>"; var tempE; var secondiE; var minutiE; var TIME; var frameE; tempE = Math.floor(nframeE/25) frameE= nframeE - tempE*25 if (tempE > 60 ) { minutiE= Math.floor(tempE/60); secondiE=tempE - minutiE*60;} else{ secondiE = tempE; minutiE=0;} TIME=minutiE + ":" + secondiE document.write(TIME) </script> </td> </tr> </table> <br></br> <br></br> <table border="1" bordercolor="#00003299" width="75%" height="40" bgcolor="#99CCFF" align="center" cellpadding="1"> <tr bgcolor="#00003299"> <td width="25%" height="17" align="center"><strong><font color="yellow">Servizio n</font></strong></td> <td width="30%" height="17" align="center"><strong><font color="yellow">Descrizione</font></strong></td> <td width="30%" height="17"><strong><font color="yellow">Giornalista</font></strong></td> <td width="25%" height="17"><strong><font color="yellow">Durata</font></strong></td> pag.176 <td width="25%" height="17"><strong><font color="yellow">Genere</font></strong></td> <td width="70%" height="70" align="center"><strong><font color="yellow">Filmato</font></strong></td> </tr> <xsl:for-each select="mpeg:ContentDescription/mpeg:MultimediaContent/mpeg:AudioVisual/mpeg:TemporalDecomposition /mpeg:AudioVisualSegment/mpeg:TemporalDecomposition/mpeg:AudioVisualSegment"> <tr> <td width="35%" height="17"><xsl:value-of select="mpeg:CreationInformation/mpeg:Creation/mpeg:Title"/></td> <td width="50%" height="17"><br></br> <xsl:value-of select="mpeg:TextAnnotation/mpeg:FreeTextAnnotation"/></td> <td width="70%" height="17"><br></br> <xsl:value-of select="mpeg:CreationInformation//mpeg:Creator/mpeg:Agent/mpeg:Name/mpeg:GivenName"/></td> <td width="70%" height="17" align="center"><br></br> <script language="JavaScript"> var nframeE = "<xsl:value-of select="mpeg:MediaTime/mpeg:MediaIncrDuration"/>"; tempE = Math.floor(nframeE/25) frameE= nframeE - tempE*25 if (tempE > 60 ) { minutiE= Math.floor(tempE/60); secondiE=tempE - minutiE*60; } else{ secondiE = tempE; minutiE=0; } TIME=minutiE + ":" + secondiE document.write(TIME) </script> </td> <td width="70%" height="17"><br></br> <xsl:value-of select="mpeg:CreationInformation/mpeg:Classification/mpeg:Genre/mpeg:Name"/></td> <td width="70%" height="17"> <script language="JavaScript"> var tempS = "<xsl:value-of select="mpeg:MediaTime/mpeg:MediaRelTimePoint"/>"; var minutS=0; var secondiS=0; var minut=0; var secondi=0 var video = "Video"; var secondiE; var tempE ; var minutiE; nframeE= <xsl:value-of select="mpeg:MediaTime/mpeg:MediaIncrDuration"/> var collegamento = "<xsl:value-of select="mpeg:MediaLocator/mpeg:MediaUri"/>"; if(tempS.substr(7,1) == "M" ){minutiS = tempS.substr(6,1); if(tempS.substr(9,1) == "S"){secondiS = tempS.substr(8,1)} else{secondiS = tempS.substr(8,2)} } else {minutiS = tempS.substr(6,2); if(tempS.substr(10,1) == "S"){secondiS = tempS.substr(9,1)} else{secondiS = tempS.substr(9,2)} } tempE = Math.floor(nframeE/25) frameE= nframeE - tempE*25 if (tempE > 60 ) { minutiE= Math.floor(tempE/60); secondiE=tempE - minutiE*60;} else{ secondiE = tempE; minutiE=0;} minuti=Math.floor(minutiS); secondi= Math.floor(secondiS); if (secondi > 60 ) { minuti++; secondi=secondi-60;} minutiE= minutiE + minuti secondiE= secondiE + secondi if (secondiE > 60 ) { minutiE++; secondiE=secondiE-60;} pag.177 TIME= collegamento+ "?start="+ minutiS + ":" + secondiS +"&end=" + minutiE +":" + secondiE+ "," + frameE document.write(video.link(TIME)) </script> <br></br> <img border="0" width="100" height="70"> <xsl:attribute name="src"> <xsl:value-of select="mpeg:MediaLocator/mpeg:Image"/></xsl:attribute> </img></td> </tr> </xsl:for-each> </table> </xsl:for-each> </body> </html> </xsl:template> <xsl:template match="/ino:response/ino:message"/> <xsl:template match="/ino:response/xql:query"/> </xsl:stylesheet> <td valign="top"><img src="/SITOTECA/rai-83x49.gif" width="83" height="49" /> <br /><br /><img src="/SITOTECA/elisicon.gif" width="67" height="56" /> <br /><br /><img src="/SITOTECA/tr_vivai168x70.gif" width="137" height="49" /> se/xql:query"/> </xsl:stylesheet> pag.178 Codice del foglio di stile XSL C <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xql="http://metalab.unc.edu/xql" xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmlns:mpeg="http://www.mpeg7.org/2001/MPEG-7_Schema" exclude-result-prefixes="xql ino mpeg"> <xsl:template match="/"> <!-- si definiscono i parametri di formattazione al livello radice --> <html> <head> <title>Scheda Programma</title> </head> <body alink="#ff3300" link="#ffcc33" text="#ffffff" vlink="#ff9900" background="/SITOTECA/foglie.jpg"> <div align="center"> <table cellpadding="5" cellspacing="0" border="0" width="100%" height="104" vspace="0" hspace="0"> <tbody> <tr> <td width="15" height="100%" align="right" valign="top"><img src="/leftline01.jpg" width="15" height="100%"/></td> <td valign="top"><img src="/SITOTECA/rai-83x49.gif" width="83" height="49" /> <br /><br /><img src="/SITOTECA/elisicon.gif" width="67" height="56" /> <br /><br /><img src="/SITOTECA/tr_vivai168x70.gif" width="137" height="49" /> <br /> <br /> <br /> <br /> <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFCC66"><b><font color="#000066"><<font color="#990000">M</font>peg-<font color="#990000">7</font>/> <br /><font color="#990000">M</font>etadata e<font color="#990000">X</font>perimental <br /><font color="#990000">R</font>epository </font></b></font> <br /> <br /> <br /> <font color="#000000">Internet TV Project <br />Vivai d'Impresa <br />Elis - RAI </font> </td> <td width="100%"> <div align="center"> <xsl:for-each select="//mpeg:Mpeg7"> <table bgcolor="#330033" bordercolor="#000000" cellpadding="5" cellspacing="1" border="0" width="500"> <tbody> <tr bgcolor="#330033"> <td align="left" colspan="2" width="574"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <b> <font color="#ffcc00"> DESCRIZIONE: </font> </b> </font> <br /> </td> </tr> <tr bgcolor="#000066"> <td bgcolor="#330033"> <font color="#999999" size="2"> </font> </td> <td valign="top" width="80%" bgcolor="#330033"> <font color="#ffcc00" face="Verdana, Arial, Helvetica, sans-serif" size="2"> <b> <font color="#999999"> Titolo: </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:Title"/> </b> </font> <br /> <font color="#ffcc00" face="Verdana, Arial, Helvetica, sans-serif" size="2"> </font> <font color="#ffcc00" face="Verdana, Arial, Helvetica, sans-serif" size="2"> <b><font color="#999999" size="2"> Emittente: </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:Creator[mpeg:Role/mpeg:Name='Emittente']/mpeg:Agent/mpeg:Nam e"/></b> <b><font color="#999999" size="2"> <br /> pag.179 Data e ora di trasmissione: </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:MediaTime/mpeg:MediaTimePoint"/> </b> <b> </b> </font> </td> </tr> </tbody> </table> <br /> <hr width="500" color="black" size="1"/> <br /> <table border="0" cellpadding="5" width="500"> <tr bgcolor="#000066"> <td align="center" valign="top" width="20%" colspan="2"> <b> <font color="#00ccff" face="Verdana, Arial, Helvetica, sans-serif" size="2"> CREATION INFORMATION </font> </b> </td> </tr> <xsl:for-each select="//mpeg:ContentDescription//mpeg:AudioVisual/mpeg:CreationInformation/mpeg:Creation/mpeg:Creat or"> <tr> <td valign="top" width="20%" bgcolor="#000066"> <b> <font color="#00ccff" face="Verdana, Arial, Helvetica, sans-serif" size="2"> <xsl:value-of select="mpeg:Role/mpeg:Name"/> </font> </b> </td> <td width="80%" bgcolor="#330033"><font color="#00ccff" face="Verdana, Arial, Helvetica, sans-serif" size="2"> <xsl:value-of select="mpeg:Agent/mpeg:Name"/></font> </td> </tr> </xsl:for-each> </table> <br /> <table border="0" cellpadding="5" width="500"> <tr bgcolor="#000066"> <td colspan="2" align="center" valign="top" width="20%"> <b> <font color="#00ccff" face="Verdana, Arial, Helvetica, sans-serif" size="2"> MEDIA INFORMATION </font> </b> </td> </tr> <tr> <td valign="top" width="20%" bgcolor="#000066"> <b> <font color="#00ccff" face="Verdana, Arial, Helvetica, sans-serif" size="2"> Media Format: </font> </b> </td> <td width="80%" bgcolor="#330033"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <font color="#808080">[Content]] </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:MediaFormat/mpeg:Content"/> <br /> <font color="#808080">[File Format] </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:MediaFormat/mpeg:FileFormat"/> <br /> <font color="#808080">[System] </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:MediaFormat/mpeg:System"/> <br /> <font color="#808080">[Medium] </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:MediaFormat/mpeg:Medium"/> <br /> <font color="#808080">[FileSize] </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:MediaFormat/mpeg:FileSize"/> bit <br /><font color="#808080">[BitRate] </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:MediaFormat/mpeg:BitRate"/> <br /> [VisualCoding] : <br /><font color="#808080">[Format] </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:VisualCoding/mpeg:Format"/> <br /><font color="#808080">[FrameWidth] </font> <xsl:value-of select="mpeg:ContentDescription//mpeg:VisualCoding//@width"/> <br /><font color="#808080">[FrameHeight]</font> <xsl:value-of select="mpeg:ContentDescription//mpeg:VisualCoding//@height"/> <br /><font color="#808080">[AspectRatio] Width:</font> <xsl:value-of select="mpeg:ContentDescription//mpeg:VisualCoding//@aspectRatio"/> <br /><font color="#808080">[FrameRate] </font> pag.180 <xsl:value-of select="mpeg:ContentDescription//mpeg:VisualCoding//@rate"/> <br /> </font> </td> </tr> </table> <br /> <table border="0" cellpadding="2" width="500"> <tr bgcolor="#000066"> <td colspan="2" align="center" valign="top" width="20%"> <b> <font color="#00ccff" face="Verdana, Arial, Helvetica, sans-serif" size="2"> USAGE INFORMATION </font> </b> </td> </tr> <tr> <td valign="top" width="20%" bgcolor="#000066"> <b> <font color="#00ccff" face="Verdana, Arial, Helvetica, sans-serif" size="2"> Rights: </font> </b> </td> <td width="80%" bgcolor="#330033"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <font color="#808080">[IDOrganization] </font> <xsl:value-of select="//mpeg:ContentDescription//mpeg:UsageInformation/mpeg:Rights/mpeg:RightsId/mpeg:IDOrganizatio n/mpeg:Name"/> <br /> <font color="#808080">[IDName] </font> <xsl:value-of select="//mpeg:ContentDescription//mpeg:UsageInformation/mpeg:Rights/mpeg:RightsId/mpeg:IDName/mpe g:Name"/> <br /><font color="#808080">[UniqueID] </font> <xsl:value-of select="//mpeg:ContentDescription//mpeg:UsageInformation/mpeg:Rights/mpeg:RightsId/mpeg:UniqueID"/> <br /><br /> </font> </td> </tr> </table> <br /><br /> </xsl:for-each> </div> </td> <td width="15" align="right" valign="top"><img src="/leftline01.jpg" width="15" height="550"/></td> </tr> </tbody> </table> <br /> <br /> <br /> </div> </body> </html> </xsl:template> </xsl:stylesheet> pag.181 Codice del foglio di stile XSL D <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmlns:xql="http://metalab.unc.edu/xql/" xmlns:mpeg="http://www.mpeg7.org/2001/MPEG-7_Schema" exclude-result-prefixes="xql ino mpeg" version="1.0"> <xsl:template match="/" > <html> <head> <title>Nuova pagina 1</title> </head> <body background="/SITOTECA/foglie.jpg"> <div align="center"> <table cellpadding="5" cellspacing="0" border="0" width="100%" height="104" vspace="0" hspace="0"> <tbody background="/SITOTECA/foglie.jpg"> <tr> <td width="15" height="100%" align="right" valign="top"><img src="/leftline01.jpg" width="15" height="100%"/></td> <td valign="top"><img src="/SITOTECA/rai-83x49.gif" width="83" height="49" /> <br /><br /><img src="/SITOTECA/elisicon.gif" width="67" height="56" /> <br /><br /><img src="/SITOTECA/tr_vivai168x70.gif" width="137" height="49" /> <br /> <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFCC66"><b><font color="#000066"><font color="#990000"></font><font color="#990000"></font> <br /><font color="#990000" size="5">TV </font><font color="#990000" size="5"> NEWS</font> <br /><font color="#990000" size="5"> ARCHIVE</font></font></b></font> <br /> <br /> <br /> <br /> <br /> <font color="#000000">Internet TV Project <br />Vivai d'Impresa <br />Elis - RAI </font> </td> <td width="100%"> <div align="center"> <table width="500"> <tr> <td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="4" color="#330033">Risultati trovati:</font></td> </tr> </table> <br /> <table border="1" bordercolor="#00003299" width="100%" height="40" bgcolor="#99CCFF" align="center" cellpadding="1"> <tr bgcolor="#00003299"> <td width="25%" height="17" align="center"><strong><font color="yellow">Servizio n°</font></strong></td> <td width="30%" height="17" align="center"><strong><font color="yellow">Descrizione</font></strong></td> <td width="25%" height="17" align="center"><strong><font color="yellow">Scheda TG</font></strong></td> <td width="30%" height="17"><strong><font color="yellow">Giornalista</font></strong></td> <td width="25%" height="17"><strong><font color="yellow">Durata</font></strong></td> <td width="25%" height="17"><strong><font color="yellow">Genere</font></strong></td> <td width="70%" height="70" align="center"><strong><font color="yellow">Filmato</font></strong></td> pag.182 </tr> <xsl:for-each select="//AudioVisualSegment"> <tr> <td width="25%" height="17"><xsl:value-of select="CreationInformation/Creation/Title"/></td> <td width="30%" height="17"><br></br> <xsl:value-of select="TextAnnotation/FreeTextAnnotation"/></td> <td width="25%" height="17"><a target="_blank"> <xsl:variable name="valore"> <xsl:value-of select="./@ino:id"/> </xsl:variable> <xsl:variable name="query">http://62.110.204.10/servlets/tecafast2style/tamino/tecafast/teca2002collection?_xql=Mpeg7[ @ino:id=</xsl:variable> <xsl:variable name="style">]&_xslsrc=http://62.110.204.10/tecaprova/xsl/tglazioProva.xsl</xsl:variable> <xsl:attribute name="href"> <xsl:value-of select="concat($query,$valore,$style)"/> </xsl:attribute> scheda TG </a></td> <td width="30%" height="17"><br></br> <xsl:value-of select="CreationInformation//Creator/Agent/Name/GivenName"/></td> <td width="25%" height="17"><br></br> <script language="JavaScript"> var nframeE = "<xsl:value-of select="MediaTime/MediaIncrDuration"/>"; tempE = Math.floor(nframeE/25) frameE= nframeE - tempE*25 if (tempE > 60 ) { minutiE= Math.floor(tempE/60); secondiE=tempE - minutiE*60; } else{ secondiE = tempE; minutiE=0; } TIME=minutiE + ":" + secondiE document.write(TIME) </script> </td> <td width="25%" height="17"><br></br> <xsl:value-of select="CreationInformation/Classification/Genre/Name"/></td> <td width="70%" height="17"> <script language="JavaScript"> var tempS = "<xsl:value-of select="MediaTime/MediaRelTimePoint"/>"; var minutiS; var secondiS; var minuti=0; var secondi=0; var video = "Video"; var secondiE; var tempE ; var minutiE; nframeE= "<xsl:value-of select="MediaTime/MediaIncrDuration"/>" var collegamento = "<xsl:value-of select="MediaLocator/MediaUri"/>"; if(tempS.substr(7,1) == "M" ){minutiS = tempS.substr(6,1); if(tempS.substr(9,1) == "S"){secondiS = tempS.substr(8,1)} else{secondiS = tempS.substr(8,2)} } else {minutiS = tempS.substr(6,2); if(tempS.substr(10,1) == "S"){secondiS = tempS.substr(9,1)} else{secondiS = tempS.substr(9,2)} } tempE = Math.floor(nframeE/25) frameE= nframeE - tempE*25 if (tempE > 60 ) { minutiE= Math.floor(tempE/60); secondiE=tempE - minutiE*60; } else{ secondiE = tempE; minutiE=0; } minuti=Math.floor(minutiS); secondi= Math.floor(secondiS); if (secondi > 60 ) { minuti++; secondi=secondi-60;} minutiE= minutiE + minuti pag.183 secondiE= secondiE + secondi if (secondiE > 60 ) { minutiE++; secondiE=secondiE-60;} TIME= collegamento+ "?start="+ minutiS + ":" + secondiS +"&end=" + minutiE +":" + secondiE+ "," + frameE document.write(video.link(TIME)) </script> <br></br> <img border="0" width="100" height="70"> <xsl:attribute name="src"> <xsl:value-of select="MediaLocator/Image"/></xsl:attribute> </img></td></tr></xsl:for-each> </table></div> </td> </tr> </tbody> </table> </div> </body> </html> </xsl:template> <xsl:template match="/ino:response/ino:message"/> <xsl:template match="/ino:response/xql:query"/> </xsl:stylesheet> pag.184 Codice del foglio di stile XSL D <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmlns:xql="http://metalab.unc.edu/xql/" xmlns:mpeg="http://www.mpeg7.org/2001/MPEG-7_Schema" exclude-result-prefixes="xql ino mpeg" version="1.0"> <xsl:template match="/" > <html> <head> <title>Nuova pagina 1</title> </head> <body background="/SITOTECA/foglie.jpg"> <div align="center"> <table cellpadding="5" cellspacing="0" border="0" width="100%" height="104" vspace="0" hspace="0"> <tbody background="/SITOTECA/foglie.jpg"> <tr> <td width="15" height="100%" align="right" valign="top"><img src="/leftline01.jpg" width="15" height="100%"/></td> <td valign="top"><img src="/SITOTECA/rai-83x49.gif" width="83" height="49" /> <br /><br /><img src="/SITOTECA/elisicon.gif" width="67" height="56" /> <br /><br /><img src="/SITOTECA/tr_vivai168x70.gif" width="137" height="49" /> <br /> <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFCC66"><b><font color="#000066"><font color="#990000"></font><font color="#990000"></font> <br /><font color="#990000" size="5">TV </font><font color="#990000" size="5"> NEWS</font> <br /><font color="#990000" size="5"> ARCHIVE</font></font></b></font> <br /> <br /> <br /> <br /> <br /> <font color="#000000">Internet TV Project <br />Vivai d'Impresa <br />Elis - RAI </font> </td> <td width="100%"> <div align="center"> <table width="500"> <tr> <td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="4" color="#330033">Risultati trovati:</font></td> </tr> </table> <br /> <table border="1" bordercolor="#00003299" width="100%" height="40" bgcolor="#99CCFF" align="center" cellpadding="1"> <tr bgcolor="#00003299"> <td width="25%" height="17" align="center"><strong><font color="yellow">Servizio n°</font></strong></td> <td width="30%" height="17" align="center"><strong><font color="yellow">Descrizione</font></strong></td> <td width="25%" height="17" align="center"><strong><font color="yellow">Scheda TG</font></strong></td> <td width="30%" height="17"><strong><font color="yellow">Giornalista</font></strong></td> <td width="25%" height="17"><strong><font color="yellow">Durata</font></strong></td> <td width="25%" height="17"><strong><font color="yellow">Genere</font></strong></td> <td width="70%" height="70" align="center"><strong><font color="yellow">Filmato</font></strong></td> pag.185 </tr> <xsl:for-each select="//AudioVisualSegment"> <tr> <td width="25%" height="17"><xsl:value-of select="CreationInformation/Creation/Title"/></td> <td width="30%" height="17"><br></br> <xsl:value-of select="TextAnnotation/FreeTextAnnotation"/></td> <td width="25%" height="17"><a target="_blank"> <xsl:variable name="valore"> <xsl:value-of select="./@ino:id"/> </xsl:variable> <xsl:variable name="query">http://62.110.204.10/servlets/tecafast2style/tamino/tecafast/teca2002collection?_xql=Mpeg7[ @ino:id=</xsl:variable> <xsl:variable name="style">]&_xslsrc=http://62.110.204.10/tecaprova/xsl/tglazioProva.xsl</xsl:variable> <xsl:attribute name="href"> <xsl:value-of select="concat($query,$valore,$style)"/> </xsl:attribute> scheda TG </a></td> <td width="30%" height="17"><br></br> <xsl:value-of select="CreationInformation//Creator/Agent/Name/GivenName"/></td> <td width="25%" height="17"><br></br> <script language="JavaScript"> var nframeE = "<xsl:value-of select="MediaTime/MediaIncrDuration"/>"; tempE = Math.floor(nframeE/25) frameE= nframeE - tempE*25 if (tempE > 60 ) { minutiE= Math.floor(tempE/60); secondiE=tempE - minutiE*60; } else{ secondiE = tempE; minutiE=0; } TIME=minutiE + ":" + secondiE document.write(TIME) </script> </td> <td width="25%" height="17"><br></br> <xsl:value-of select="CreationInformation/Classification/Genre/Name"/></td> <td width="70%" height="17"> <script language="JavaScript"> var tempS = "<xsl:value-of select="MediaTime/MediaRelTimePoint"/>"; var minutiS; var secondiS; var minuti=0; var secondi=0; var video = "Video"; var secondiE; var tempE ; var minutiE; nframeE= "<xsl:value-of select="MediaTime/MediaIncrDuration"/>" var collegamento = "<xsl:value-of select="MediaLocator/MediaUri"/>"; if(tempS.substr(7,1) == "M" ){minutiS = tempS.substr(6,1); if(tempS.substr(9,1) == "S"){secondiS = tempS.substr(8,1)} else{secondiS = tempS.substr(8,2)} } else {minutiS = tempS.substr(6,2); if(tempS.substr(10,1) == "S"){secondiS = tempS.substr(9,1)} else{secondiS = tempS.substr(9,2)} } tempE = Math.floor(nframeE/25) frameE= nframeE - tempE*25 if (tempE > 60 ) { minutiE= Math.floor(tempE/60); secondiE=tempE - minutiE*60; } else{ secondiE = tempE; minutiE=0; } minuti=Math.floor(minutiS); secondi= Math.floor(secondiS); if (secondi > 60 ) { minuti++; secondi=secondi-60;} minutiE= minutiE + minuti pag.186 secondiE= secondiE + secondi if (secondiE > 60 ) { minutiE++; secondiE=secondiE-60;} TIME= collegamento+ "?start="+ minutiS + ":" + secondiS +"&end=" + minutiE +":" + secondiE+ "," + frameE document.write(video.link(TIME)) </script> <br></br> <img border="0" width="100" height="70"> <xsl:attribute name="src"> <xsl:value-of select="MediaLocator/Image"/></xsl:attribute> </img></td></tr></xsl:for-each> </table></div> </td> </tr> </tbody> </table> </div> </body> </html> </xsl:template> <xsl:template match="/ino:response/ino:message"/> <xsl:template match="/ino:response/xql:query"/> </xsl:stylesheet> pag.187 APPENDICE D TERMINI E DEFINIZIONI: AV: AudioVisual CIF: Common Intermediate Format CS: Classification Scheme D: Descriptor Ds: Descriptors DDL: Description Definition Language DS: Description Scheme DSs: Description Schemes IANA: Internet Assigned Numbers Authority IPMP: Intellectual Property Management Protocol JPEG: Joint Photographic Experts Group MDS: Multimedia Description Scheme MPEG: Moving Picture Experts Group MPEG-7: standard ISO/IEC 15938 QCIF: Quarter Common Intermediate Format SMPTE: Society of Motion Picture and Television Engineers TZ: Time Zone TZD: Time Zone Difference URI: Uniform Resource Identifier (IETF Standard is RFC 2396) URL: Uniform Resource Locator (IETF Standard is RFC 2396) XM: eXperimentation Model XML: eXtensible Markup Language pag.188 Ringraziamenti Si ringraziano per la collaborazione alla tesi il Prof. Alessandro Neri e il Prof. Claudio Palma dell’Università degli Studi Roma Tre. Si ringrazia per la collaborazione nella realizzazione del progetto e della tesi, l’Ing. Francesco Romano (DNT Dipartimento Nuove Tecnologie ELIS ). Si ringrazia la struttura ELIS per le infrastrutture e le risorse messe a disposizione nell’ambito del progetto Vivai D’Impresa. Si ringrazia la società giapponese Ricoh per averci permesso di partecipare alla sperimentazione del suo prodotto. Un ringraziamento va anche tutte le persone in ELIS che in questi mesi sono stati disponibili a soddisfare le necessità non solo di progetto. Un particolare ringraziamento va a Gianluca Cicero e Arianna D. Ringrazio di cuore la mia famiglia che mi sono stati vicini con sincerità in questi anni. pag.189