Your SlideShare is downloading. ×
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Lo standard MPEG-7 per la definizione di metadati di oggetti multimediali

1,203

Published on

Un'introduzione allo standard MPEG-7 mostrando le caratteristiche principali. Creazione e gestione di una descrizione MPEG-7. Memorizzazione all'interno di un db XML nativo eXist. Utilizzo delle …

Un'introduzione allo standard MPEG-7 mostrando le caratteristiche principali. Creazione e gestione di una descrizione MPEG-7. Memorizzazione all'interno di un db XML nativo eXist. Utilizzo delle librerie "libxml2" e "libcURL".

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,203
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. UNIVERSITÀ DEGLI STUDI DELLAQUILA Facoltà di Scienze MM.FF.NN. Corso di Laurea di I livello in Informatica TESI DI LAUREALo standard MPEG-7 per la definizione di metadati di oggetti multimediali Laureando Relatore Stefano Delfino Prof. Vincenzo Fazio Correlatore Dott. Gianluca DAndrea Anno Accademico 2010/2011
  • 2. SommarioIntroduzione ............................................................................................................................ 31. Lo standard MPEG-7 ............................................................................................................. 51.1 I metadati ..................................................................................................................................... 51.2 MPEG-7 - Multimedia Content Description Interface .................................................................. 6 1.2.1 Componenti principali di MPEG-7 ................................................................................. 8 1.2.2 Parti di MPEG-7 ........................................................................................................... 102. Creazione di una Description .............................................................................................. 132.1 La nostra Description ................................................................................................................. 13 2.1.1 La libreria "libxml2" ..................................................................................................... 18 2.1.2 La libreria "libextractor" .............................................................................................. 193. XML e database.................................................................................................................. 213.1 Un database Open Source XML nativo ...................................................................................... 223.2 Scrivere applicazioni basate su XQuery ..................................................................................... 23 3.2.1 La libreria "libcURL" ...................................................................................................... 253.3 Ricerche con XQuery .................................................................................................................. 26 3.3.1 Full Text Index basato su Apache Lucene ..................................................................... 274. Un sistema DRM con MPEG-7 ............................................................................................. 304.1 Architettura del sistema esistente ............................................................................................. 304.2 Perché MPEG-7?......................................................................................................................... 324.3 DRM Server con eXist-db ........................................................................................................... 32 4.3.1 Configurazione di Lucene.............................................................................................. 35 4.3.2 Query utilizzate ............................................................................................................. 37Conclusioni ............................................................................................................................ 39Bibliografia ............................................................................................................................ 41 2
  • 3. Introduzione Oggi grazie alla crescente capacità di banda ed alla sempre maggiore copertura della retemondiale Internet, la diffusione di contenuti multimediali ha raggiunto un altissimo livello sia intermini di quantità che di qualità. Spesso Internet viene denominata come l "archivio eterno",questo per la sua immensa capacità di contenere e rendere disponibili risorse di ogni tipo. In ogniistante, ognuno di noi può essere sia produttore che consumatore di contenuti multimediali,questo grazie alla tecnologia che ci circonda, dalle fotocamere alle videocamere digitali, dainotebook agli smartphone, insomma tutti strumenti elettronici che ci permettono di creare e/oconsumare foto, video, immagini e tanto altro ancora. Inoltre è sempre più vasto il campo disistemi elettronici che utilizzano tali contenuti in modo automatico, non solo per lo scambio diquesti ma anche per operazioni decisamente più complesse come lindicizzazione, il filtraggio, etc. Tuttavia, il valore delle informazioni spesso dipende, non solo dalla loro qualità e quantità,ma anche dalla facilità del loro reperimento, accesso e gestione. Infatti senza un adeguatostrumento di ricerca, tutto questo patrimonio umano rischia di rimanere poco utilizzato. Perquesto motivo è necessario un processo di standardizzazione che descriva in maniera oggettiva leinformazioni multimediali. Per gestire questa grossa quantità di dati multimediali, sia da parte degli utenti, sia da partedei sistemi automatici, ci aiuta MPEG-7: formalmente chiamato "Multimedia Content DescriptionInterface", uno strumento nato per descrivere contenuti multimediali attraverso unarappresentazione testuale (XML). La descrizione del contenuto multimediale attraverso unlinguaggio strutturato testuale è un fattore molto importante per la ricerca, infatti gli attualimotori di ricerca basano la loro esplorazione esclusivamente sulla parte testuale di undocumento, tralasciando ogni contenuto multimediale presente. Lo standard MPEG-7 contribuisce al miglioramento di altri servizi come lavideosorveglianza, la TV digitale, larricchimento delle informazioni associate ad un multimedia,come ad esempio i sottotitoli di un film o la pubblicità contenuta in un video, e molti altri ancora.Inoltre, video rubati, video scaricati senza permesso da Internet, video alterati e modificati edaltro, tutto questo potrebbe diventare immediatamente tracciabile dalle compagnie diproduzione e distribuzione attraverso un riconoscimento effettuato a livello di frame nei videodescritti con lo standard MPEG-7. 3
  • 4. Il compito principale della mia tesi è quello di integrare lo standard MPEG-7 in un sistemabasato su DRM (Digital Rights Management). Questo sistema, sviluppato grazie ad altre tesiprecedenti, permette lo scambio di contenuti multimediali tutelando il diritto digitale. Lattualeversione del sistema DRM ha unarchitettura composta da un client e due server: • lAccount Server gestisce gli utenti del sistema (registrazione, cancellazione, autenticazione); ha inoltre il compito di raccogliere le richieste del client facendo intervenire, ove necessario, il DRM Server. • il DRM Server si occupa di gestire i file multimediali e la loro distribuzione nel sistema. Inoltre si occupa di codificare un nuovo file che si vuole introdurre nella rete.Il mio intervento apporta modifiche proprio su questultimo server prevedendo una struttura perlinserimento e la gestione di descrizioni MPEG-7 e per ottimizzare le operazioni di ricerca. Nel prossimo capitolo vedremo le caratteristiche dello standard MPEG-7 partendo dalladescrizione dei metadati. Nei Capitoli 2 e 3 vedremo prima la descrizione creata e le librerieutilizzate per assistere tale processo di creazione e poi vedremo il database utilizzato per gestirela collezione di descrizioni MPEG-7 in formato XML. Infine nellultimo capitolo si descrive ilprototipo realizzato, mostrando le modifiche e le scelte fatte per integrare lo standard MPEG-7allinterno dellapplicazione esistente. 4
  • 5. 1. Lo standard MPEG-71.1 I metadati La funzione principale di un sistema basato sui metadati è quella di consentire ilraggiungimento dei seguenti obiettivi: • Ricerca: accertare lesistenza di un documento; • Localizzazione: rintracciare una particolare occorrenza di un documento; • Selezione: analizzare, valutare e filtrare una serie di documenti; • Interoperabilità semantica: permettere la ricerca in ambiti disciplinari diversi grazie a una serie di equivalenze fra descrizioni; • Gestione risorse: gestire le raccolte di documenti grazie allintermediazione di banche dati e cataloghi; • Disponibilità: ottenere informazioni sulleffettiva disponibilità del documento.Nel contesto dei documenti digitali, il termine metadato adotta il significato che gli è statoaffidato dallinformatica e dalla filosofia. Dallinformatica deriva la restrizione del concetto di"dato", limitando il suo dominio semantico ai soli dati digitali e discreti che vengono gestiti da uncomputer. Dalla filosofia, e più specificatamente dalla metafisica, deriva un utilizzo particolare deltermine "meta", designandolo come un prefisso che serve per denotare un genere alternativo o disecondo ordine di relazioni fra due tipi di entità analoghe. Nei progetti di digitalizzazione e nelle attività di gestione degli archivi di oggetti digitali, imetadati rivestono unimportanza crescente, tanto da venire considerati parte costituente delladefinizione di "oggetto digitale". I metadati sono dati riguardanti le risorse, in particolare sono ledescrizioni di alcune loro caratteristiche. Queste descrizioni sono in forma testuale ecomprensibile alluomo, ma anche utile ai motori di ricerca, che oggi basano le proprie attivitàsoprattutto sulla parte testuale di una risorsa.Esistono vari tipi di metadati che possiamo raggruppare in tre principali categorie: 5
  • 6. • Metadati Descrittivi: vengono usati per descrivere le risorse sia multimediali che cartacee al fine di agevolare operazioni come la ricerca, la gestione, pubblicazione delle risorse. • Metadati Gestionali: vengono usati per il controllo daccesso alle risorse, per larchiviazione, la manutenzione e la conservazione, per la certificazione di autenticità, per lidentificazione univoca di risorse multimediali. • Metadati Strutturali: servono per descrivere la struttura delle risorse e le relazioni tra di esse o tra le loro parti. Questi metadati inoltre forniscono dati di identificazione e localizzazione del documento, come il codice identificativo, lindirizzo del file sul server, larchivio digitale di appartenenza e il suo indirizzo Internet.Oltre ad una corretta associazione tra i metadati e le risorse vi deve essere anche una giustauniformità degli stessi in modo da rendere le risorse più fruibili ai motori di ricerca e diconseguenza agli utenti. "The association of standardized descriptive metadata with networked objects has the potential for substantially improving resource discovery capabilities by enabling field-based (e.g., author, title) searches, permitting indexing of non-textual objects, and allowing access to the surrogate content that is distinct from access to the content of the resource itself." (Weibel and Lagoze, 1997)Vari progetti di ricerca hanno lavorato per rendere queste descrizioni il più uniformi possibili, perfacilitare quindi operazioni di ricerca e interoperabilità semantica. Tra i risultati più promettentitroviamo "tecniche" di descrizione come il Dublin Core, EBU Core, MPEG-7, TV Any Time, etc.Andremo a vedere, nel prossimo paragrafo, MPEG-7 standard oggetto di studio di questa tesi.1.2 MPEG-7 - Multimedia Content Description Interface Lo standard MPEG-7 [ISO/IEC 15983] è stato sviluppato ed ufficializzato nel 2001 da MPEG(Moving Picture Experts Group), organizzazione che lavora con lISO (International Organizationfor Standardization) e sviluppa le norme per la compressione audio e video digitale. A differenzadegli altri standard, quali MPEG-1 e MPEG-2 per lo sviluppo di algoritmi di compressione e MPEG-4 per lorganizzazione allinterno di oggetti multimediali, MPEG-7 nasce per la sola descrizionedellinformazione multimediale attraverso una rappresentazione testuale strutturata (XML).Questa rappresentazione permette alle risorse di essere facilmente reperite per il loro contenuto 6
  • 7. e non per la loro struttura fisica. Quindi larricchimento (Enrichment) dei contenuti audiovisivi,con le loro rappresentazioni, permetterà di indicizzare e categorizzare il materiale al fine diprodurre una ricerca più raffinata e fornire le basi per la creazione di servizi innovativi quali adesempio la capitolazione automatica e la ricerca per similarità del contenuto (ricerca perimmagine o per suono). Gli elementi che MPEG-7 standardizza forniscono un valido sostegno ad un ampio insiemedi applicazioni che utilizzano risorse multimediali. Visto che al giorno doggi è difficile trovare undominio applicativo che non faccia uso di risorse multimediali, MPEG-7 si inserisce bene in moltisettori come: • Broadcast media selection (e.g. canali radio e televisione) • Cultural services (e.g. musei e gallerie darte) • Digital libraries (e.g. cataloghi di immagini, dizionari musicali, archivi di film e musica). • E-Commerce (e.g. pubblicità personalizzata, cataloghi on-line) • Education (e.g. corsi multimediali e ricerca di materiale multimediale di supporto) • Home Entertainment (e.g. sistemi per la gestione di file multimediali personali, includendo la manipolazione dei contenuti, per esempio audio e video editing, ricerca di giochi e karaoke) • Investigation services (e.g. riconoscimento delle caratteristiche umane) • Journalism (e.g. ricerca di interventi fatti da un politico, digitando il suo nome, o inserendo la sua voce o la foto del suo volto) • Multimedia directory services (e.g. pagine gialle, informazioni turistiche, informazioni geografiche) • Multimedia editing (e.g. servizi di personalizzazione delle news) • Remote sensing (e.g. cartografia, ecologia, gestione delle risorse naturali) • Shopping (e.g. ricerca degli abiti che piacciono) • Surveillance (e.g. controllo del traffico).Lo standard non definisce come le descrizioni MPEG-7 saranno usate per rispondere alle domandedegli utenti. Il tipo di contenuto e la domanda non devono essere per forza dello stesso genere;infatti un video può essere cercato usando una musica, un discorso, etc.Alcuni scenari dinterrogazione possibili sono: • Suona poche note e riceverai una lista di pezzi musicali simili alla richiesta, o un insieme di immagini in qualche modo correlate ad esempio in termini di emozioni. 7
  • 8. • Disegna poche linee sullo schermo e trovi un insieme di immagini, "loghi" o ideogrammi simili. • Definisci oggetti includendo il colore o texture per ricevere esempi tra i quali selezionare quelli adatti al tuo design. • Descrivere i movimenti desiderati tra gli oggetti per ricevere animazioni che soddisfino quanto descritto temporalmente e spazialmente. • Descrivi unazione per trovare una lista di scenari che contengono tale azione. • Usando un estratto di voce di Pavarotti, ottieni un insieme di registrazioni, video-clip dove Pavarotti sta cantando, e materiale fotografico raffigurante Pavarotti.1.2.1 Componenti principali di MPEG-7Lo standard fornisce tre principali componenti: Description tools, Description Definition Language(DDL), System Tools. Figura 1 - Relazioni tra le componenti principali di MPEG-7Description ToolsDescription Tools è formato dai Descriptors (D) ed i Description Schemes (DS): • I Descriptors definiscono caratteristiche sia di basso livello (colore, texture, movimento, potenza sonora, etc.) sia di alto livello (un contenuto semantico, un concetto astratto). Molte di queste caratteristiche potranno essere estratte in modo automatico, soprattutto quelle di basso livello, mentre per quelle di alto livello spesso cè bisogno dellintervento umano, soprattutto per quanto riguarda i concetti semantici che sono descrizioni ad alto livello per eccellenza. 8
  • 9. • I Description Schemes aumentano le funzionalità dei descrittori MPEG-7, combinando singoli D e DS, in particolare stabilendo una relazione tra i D e DS di cui è costituito. I Description Schemes possono riguardare il dominio audio e video in maniera specifica o una descrizione multimediale generica. Tipicamente, infatti, un DS generico corrisponde a metadati immutabili che riguardano la creazione, la produzione, luso e la manutenzione di un contenuto multimediale. I Description Schemes multimediali (MDS) si riferiscono a tutti i tipi di media contenenti audio, video o dati testuali, mentre i Descriptor specifici di un dominio, come quelli per il colore, la texture, la melodia e così via, fanno riferimento soprattutto al dominio audio o video. Così come per i D, anche per i DS alcuni possono essere automaticamente generati ed altri richiedono lintervento umano.Description Definition LanguageMPEG-7 DDL costituisce il fondamento dellintero standard. In accordo con MPEG-7 RequirementsDocument è: "...un linguaggio che permette la creazione di nuovi Description Schemes (DS) e,possibilmente, i Descriptors(D). Esso inoltre permette lestensione e la modifica di DS giàesistenti". Si tratta di un linguaggio per definire la struttura ed il contenuto di documenti MPEG-7. IlDDL non è un linguaggio di modellazione (come UML) ma uno schema language perrappresentare il risultato della modellazione di dati audio-visuali attraverso una serie di vincolisintattico - strutturali e di costanti alle quali i D e DS MPEG-7 devono essere conformi. Si tratta, in sostanza, di una estensione del linguaggio XML Schema orientata al multimedia.Se il proposito di un XML Schema è quello di definire una classe di documenti XML, il proposito diun MPEG-7 Schema è quello di definire una classe di documenti MPEG-7. Le istanze MPEG-7 sono documenti XML, conformi a un particolare schema MPEG-7espresso mediante DDL che descrivono il contenuto multimediale. Con MPEG-7 DDL è possibile esprimere non solo una struttura, ma anche la gerarchia e larelazione spazio-temporale e concettuale tra gli elementi di un DS e tra i DS stessi.System ToolsSystem Tools fornisce i metodi per la rappresentazione dei contenuti in formato binario (per unamaggiore efficienza nella trasmissione e memorizzazione), i meccanismi per la trasmissione (sia alivello testuale [TeX] che binario [BiM]), le tecniche per la sincronizzazione delle descrizionirispetto ai contenuti, ecc. 9
  • 10. 1.2.2 Parti di MPEG-7Sebbene gli elementi sopra citati rappresentano il cuore dello standard, nella realtà, lo standard èformato da diverse parti. Nella Figura 2 vengono mostrate le parti che saranno brevementedescritte in seguito. Figura 2 - Organizzazione generale di MPEG-7 • MPEG-7 System [ISO/IEC 15938-1]: strumenti di supporto alla codifica binaria BiM delle descrizioni MPEG-7 ed al "Terminal Architetture", una sorta di applicazione contenente i sistemi per lencoding, il decoding, la memorizzazione, la trasmissione, etc. dellinformazione MPEG-7. • MPEG-7 Description Definition Language (DDL) [ISO/IEC 15938-2]: come già detto nel precedente paragrafo, è un linguaggio che permette la creazione di nuovi Descriptors (D) e Description Scheme (DS). Inoltre è composto da tre componenti logiche fondamentali: − XML-Schema structural language components. − XML-Schema datatype language components. − MPEG-7 specific extensions (per esempio il supporto di particolari tipi di dato come le matrici). • MPEG-7 Visual [ISO/IEC 15938-3]: i D e i DS associati esclusivamente a descrizioni di tipo Video. • MPEG-7 Audio [ISO/IEC 15938-4]: i D e i DS associati esclusivamente a descrizioni di tipo Audio. I tools audio forniti possono essere di due tipi: i Low-Level Description Tools (per la descrizione di caratteristiche di basso livello come lo spettro, caratteristiche temporali, etc.) e gli High-Level Description Tools (per la descrizione di caratteristiche di alto livello come i timbri, le melodie, il parlato, etc.) 10
  • 11. • MPEG-7 Multimedia Description Schemes (MDS) [ISO/IEC 15938-5]: fornisce un set di strutture, Descriptors(D) e Description Schemes(DS) per la descrizione di entità generiche e/o multimediali. I tools forniti possono essere raggruppati in cinque classi fondamentali: − Content Description: rappresenta linformazione percepibile (audio, video, etc.). − Content Management: descrive informazioni sulla creazione, luso e le proprietà dei media. − Content Organization: permette di creare, modellare e classificare collezioni di media e relative descrizioni. − Navigation and Access: fornisce strumenti per facilitare la navigazione, laccesso e la ricerca di materiali multimediali. − User Interaction Tools: permette di descrivere le preferenze degli utenti rispetto alla ricerca ed alla navigazione allinterno delle descrizioni multimediali.• MPEG-7 Reference Software [ISO/IEC 15938-6]: implementazione software delle parti più rilevanti dello standard. Il software, chiamato XM (eXperimentation Model), permette di utilizzare i Descriptors, i Description Schema ed il Description Definition Language (DDL) oltre che ad altre funzioni non normative ma necessarie per il corretto utilizzo di MPEG-7. Larchitettura dellapplicazione è Client/Server: la parte server permette lestrazione delle informazioni, quella client la ricerca, il filtragio e/o il transcoding dei dati multimediali.• MPEG-7 Conformance [ISO/IEC 15938-7]: linee guida e procedure per testare la conformità allo standard delle varie implementazioni.• MPEG-7 Extraction and use of Descriptions [ISO/IEC 15938-8]: materiale informativo sulluso di alcuni Description Tools e sulle tecniche di estrazione simbolica.• MPEG-7 Profiles and levels [15938-9]: fornisce profili standard e orientamenti.• MPEG-7 Schema definition [15938-10]: specifica lo schema usando il Description Definition Language.• MPEG-7 Profile Schemas [15938-11]: elenca gli schema dei profili usando il Description Definition Language.• MPEG-7 Query Format [15938-12]: il query format offre uninterfaccia standard per il recupero delle informazioni multimediali dal sistema (per esempio MPEG-7 databases). definisce tre aspetti fondamentali che sono input query format, output query format e query management format: − Linput query format specifica linterfaccia attraverso la quale lutente può descrivere i suoi criteri di scelta attraverso un set di precisi parametri di input in aggiunta si possono scegliere dei parametri di output per definire linsieme dei risultati ritornati. 11
  • 12. − Loutput query format specifica il formato dellinterfaccia per il result set.− Il query management format offre i mezzi per selezionare i servizi (es. MPEG-7 database) o aggregare i servizi (es. un fornitore di servizi che gestisce una serie di servizi diversi). 12
  • 13. 2. Creazione di una Description Nel contesto applicativo di questa tesi, siamo interessati a creare una descrizione MPEG-7per file multimediali. In particolare da unanalisi dei requisiti utente è emerso che la descrizioneda creare deve soddisfare principalmente la sola operazione di ricerca. Per questo deve contenerele informazioni per poter cercare un file multimediale dati i seguenti valori: • parole appartenenti allanagrafica del file multimediale; • parole appartenenti ad un testo che può essere in diversi contesti un abstract, un testo associato, un testo trascritto tramite un motore Speech-to-Text.Abbiamo inserito nella nostra descrizione una parte generica comune a tutte le descrizioni di filemultimediali che ci permette di descrivere sia la parte relativa ai dati anagrafici che la parterelativa al testo associato al parlato in file video o audio.2.1 La nostra Description Una descrizione MPEG-7 è scritta in XML seguendo degli schemi ben precisi. Si possonoutilizzare schemi esistenti e definiti dal MPEG oppure estendere quelli esistenti e definirne dinuovi. Nel nostro caso abbiamo utilizzato gli "schemi" definiti dal MPEG MDS Sub-group del 20011i quali contengono Description Schemes (DSs) e Descriptors (Ds) che descrivono le strutturestandard che sono utilizzate per documentare i file multimediali. Grazie a questo schema abbiamola possibilità di definire descrizioni che rispettano la struttura definita da MPEG e quindi conformiallo standard. A titolo di esempio, allinterno dello schema MDS troviamo la struttura che deveavere una data allinterno di una descrizione: <!-- ##################################### --> <!-- Definition of Time datatype (6.4.2) --> <!-- ##################################### --> <!-- Definition of Time datatype --> <complexType name="TimeType"> <sequence> <choice> <element name="TimePoint" type="mpeg7:timePointType"/>1 (MDS) Multimedia Description Schemes dal sito del (NIST) National Institute of Standard and Technologyhttp://m7itb.nist.gov/mds-2001.xsd 13
  • 14. <element name="RelTimePoint" type="mpeg7:RelTimePointType"/> <element name="RelIncrTimePoint" type="mpeg7:RelIncrTimePointType"/> </choice> <choice minOccurs="0"> <element name="Duration" type="mpeg7:durationType"/> <element name="IncrDuration" type="mpeg7:IncrDurationType"/> </choice> </sequence> </complexType> <!-- ########################################## --> <!-- Definition of timePoint datatype (6.4.3) --> <!-- ########################################## --> <!-- Definition of timePoint datatype --> <simpleType name="timePointType"> <restriction base="mpeg7:basicTimePointType"> <pattern value="(-?d+(-d{2}(-d{2})?)?)? (Td{2}(:d{2}(:d{2}(:d+)?)?)?)?(Fd+)?((-|+)d{2}:d{2})?"/> </restriction> </simpleType>Questo ci dà la possibilità di definire allinterno delle nostre descrizioni, dei metadati che fannoriferimento a date quali ad esempio la data di creazione di un video o la data di aggiornamento diuna descrizione, come quella mostrata di seguito: <Time> <TimePoint>2011-07-26T13:15:00</TimePoint> </Time>Un altro aspetto considerato in questa fase di studio è stato quello di individuare quali metadatiintrodurre nella nostra descrizione, considerato i requisiti utente e quanto definito da altristandard per la descrizione di contenuti multimediali. In particolare è stato utile al nostro scopoosservare il progetto Dublin Core [4]. Lo scopo del Dublin Core è quello di dare una rappresentazione formale alle risorseaccessibili in rete via web. Varie possono essere le risorse che si possono descrivere: testi,immagini, suoni, video, fotografie, etc. Il Dublin Core è un modello descrittivo "piatto" che nonpermette la descrizione di metadati strutturati. Esso stabilisce un insieme base di elementidescrittivi, che permettono di descrivere la parte centrale e anagrafica di una risorsamultimediale. Tra i 15 elementi definiti troviamo metadati come il Titolo, lAutore, Editore,Descrizione, etc. Di seguito si mostrano gli strumenti messi a disposizione dallo standard MPEG-7 perdescrivere le risorse multimediali sotto molti aspetti. 14
  • 15. Figura 3 - Anteprima dei "description tools" dello standard MPEG-7In particolare tra questi, abbiamo utilizzato per la nostra descrizione i seguenti strumenti: • content management: utilizzato per descrivere le informazioni generiche sulla creazione del multimedia (<CreationInformation>) come la data di creazione, il luogo, il titolo, lautore, etc. e per le informazioni riguardanti il media (<MediaInformation>) come la sua dimensione e il suo formato; • content organization: utilizzato per descrivere lorganizzazione dei multimedia in collezioni o album.Di seguito si riportano due figure rappresentanti una vista ad livello delle descrizioni di file audio evideo (*.mp3, *.mp4, *.avi, etc.) utilizzate, mostrando i description tools utilizzati (ContentManagement e Content Organization) e lorganizzazione data alle loro componenti. 15
  • 16. Figura 4 - Anteprima astratta delle nostre descrizioniDi seguito si riporta la descrizione MPEG-7 scelta relativa ad un multimedia di tipo video. <?xml version="1.0" encoding="iso-8859-1"?> <Mpeg7 xmlns="urn:mpeg:mpeg7:schema:2001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mpeg7="urn:mpeg:mpeg7:schema:2001" xsi:schemaLocation="urn:mpeg:mpeg7:schema:2001 Mpeg7-2001.xsd"> <Description xsi:type="ContentEntityType"> <!-- Parte relativa alla descrizione del video --> <MultimediaContent xsi:type="VideoType"> <Video> <MediaInformation> <MediaProfile> <!-- Informazioni sul TIPO FORMATO --> <MediaFormat> <Content href="MPEG7ContentCS" /> <FileFormat href="urn:mpeg:mpeg7:cs:FileFormatCS:2001:3"> <Name>video/mp4</Name> </FileFormat> <FileSize>3938787</FileSize> <VisualCoding> <Format href="urn:mpeg:mpeg7:cs:VisualCodingFormatCS:2001:1" colorDomain="color" /> <Frame height="352" width="288" /> </VisualCoding> </MediaFormat> <MediaInstance> <MediaLocator> <!-- Path del file --> 16
  • 17. <MediaUri> /home/user/video.mp4 </MediaUri> </MediaLocator> </MediaInstance> </MediaProfile> </MediaInformation> <CreationInformation> <Creation> <!-- TITOLO del video --> <Title>Il mondo che vorrei</Title> <Abstract> <!-- COMMENTI astratti di DESCRIZIONE --> <FreeTextAnnotation> Video musicale della canzone di Vasco Rossi </FreeTextAnnotation> </Abstract> <Creator> <Role href="creatorCS"> <Name>Autore</Name> </Role> <Agent xsi:type="PersonType"> <Name> <GivenName> VascoRossi </GivenName> </Name> </Agent> </Creator> <Creator> <Role href="creatorCS"> <Name>Casa di Produzione</Name> </Role> <Agent xsi:type="OrganizationType"> <Name>EMI</Name> </Agent> </Creator> <CreationCoordinates> <!--LUOGO di produzione del contenuto --> <Location> <Name>Italia</Name> </Location> <!-- DATA di produzione --> <Date> <TimePoint>2009</TimePoint> </Date> </CreationCoordinates> </Creation> </CreationInformation> </Video></MultimediaContent><!-- Parte relativa alla descrizione del audio --><MultimediaContent xsi:type="AudioType"> <Audio> <TextAnnotation> <FreeTextAnnotation> Testo del parlato </FreeTextAnnotation> </TextAnnotation> </Audio> 17
  • 18. </MultimediaContent> <MultimediaContent xsi:type="MultimediaCollectionType"> <Collection xsi:type="TextAnnotation" name="Nome Album"/> </MultimediaContent> </Description> </Mpeg7>Il file XML mostrato è stato validato utilizzando il seguente validatore on-line: − www.xmlvalidation.com2.1.1 La libreria "libxml2"Per manipolare un file testuale scritto in XML, abbiamo utilizzato la libreria libxml2 [5] delprogetto Gnome2. Questa libreria è scritta in C ed è estremamente portatile. Questi sono alcunipunti chiave della libreria: • libxml2 supporta completamente XPath, XPointer e XInclude; • libxml2 può fare la convalida DTD in fase di analisi; • supporto di base per i client HTTP e FTP consentendo il recupero di risorse remote; • interfaccia SAX compatibile con Expath; • rappresentazione interna del documento simile allinterfaccia DOM.Essa consente di creare dinamicamente la struttura del file XML, aggiungendo nodi ed attributialla struttura partendo dalla radice. Sono molte le API fornite dalla libreria, ma basta dare unosguardo al codice desempio fornito, per rendersi subito conto della semplicità del suo utilizzo. Nel nostro caso abbiamo usato solo un sottoinsieme di queste API con il quale primacreiamo un file XML in memoria e poi interagendo con lutente inseriamo sequenzialmente nodi eattributi per i vari metadati. In particolare utilizziamo i seguenti comandi: // creiamo un nuovo documento xmlDoc *doc = xmlNewDoc(BAD_CAST "1.0"); // creiamo e settiamo lelemento radice root_node = xmlNewNode(NULL, BAD_CAST "Mpeg7"); xmlDocSetRootElement(doc, root_node); // inseriamo gli attributi del nodo Mpeg7 xmlNewProp(root_node, BAD_CAST "xmlns", BAD_CAST "urn:mpeg:mpeg7:schema:2001"); xmlNewProp(root_node, BAD_CAST "xmlns:xsi", BAD_CAST "http://www.w3.org/2001/XMLSchema-instance"); xmlNewProp(root_node, BAD_CAST "xmlns:mpeg7", BAD_CAST "urn:mpeg:mpeg7:schema:2001"); xmlNewProp(root_node, BAD_CAST "xsi:schemaLocation",2 GNOME - GNU Object Model Environment 18
  • 19. BAD_CAST "urn:mpeg:mpeg7:schema:2001 Mpeg7-2001.xsd"); // facciamo il dumping del documento sullo stdio xmlSaveFormatFileEnc("-", doc, "UTF-8", 1);Con le istruzioni sopra riportate creiamo il semplice file XML riportato di seguito, che vienevisualizzato nello standard input/output: <?xml version="1.0" encoding="UTF-8"?> <Mpeg7 xmlns="urn:mpeg:mpeg7:schema:2001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mpeg7="urn:mpeg:mpeg7:schema:2001" xsi:schemaLocation="urn:mpeg:mpeg7:schema:2001 Mpeg7-2001.xsd"> </Mpeg7>Quelli mostrati sono i principali comandi che abbiamo utilizzato per creare la nostra descrizione.Oltre a questi abbiamo utilizzato anche la funzione xmlParseMemory() che effettua il parsing diun documento XML in memoria, poi crea e restituisce il puntatore al documento XML(xmlDocPtr). Notiamo come la libreria permette sia di creare e modificare dinamicamente lastruttura di un file XML effettuandone contemporaneamente il parsing per accettarne la validità,e sia di effettuare direttamente il parsing su un file esistente come nel caso dixmlParseMemory(), che come vedremo più avanti, viene utilizzato per controllare il risultato diuna query effettuata col linguaggio XQuery. In questa fase abbiamo utilizzato anche i metadati già presenti sulla risorsa. Per estrarliabbiamo utilizzato la libreria libextractor [6].2.1.2 La libreria "libextractor"GNU libextractor è una libreria che si pone come obiettivo quello di fornire uninterfaccia comuneper lestrazione di metadati dai file di qualsiasi tipo. I tipi di file supportati sono MP3, Ogg, RealMedia, MPEG, RIFF (avi), GIF, JPEG, PNG, TIFF, HTML, PDF, PostScript, Zip, OpenOffice.org,StarOffice, Microsoft Office, tar, DVI, man, Deb, elf, RPM. Se si necessita di supportare un nuovoformato di file è possibile farlo estendendo le funzionalità della libreria tramite appositi plugin cheforniscono il codice necessario per interpretare il nuovo formato. La libreria libextractor viene rilasciata sotto licenza GNU General Public License ed è fornitainsieme al comando extract che ne rappresenta linterfaccia da riga di comando. Tramitequestultimo è possibile visualizzare i metadati contenuti in un file sul terminale. Basta dare ilcomando seguito da un file, fornito come input, per vedere i metadati in esso contenuti. $ extract /home/user/video.mp4 format - 352x288 duration - 39s mimetype - video/mp4 19
  • 20. Libextractor utilizza il primo byte di un file per indovinare il suo mimetype. Una volta individuato iltipo del file procede nellestrarre gli altri metadati presenti, come il nome del software utilizzatoper creare il file, il nome dellautore, il titolo dellalbum, la dimensione di una immagine o ladurata di un video, naturalmente verranno estratti solo se presenti. #include <extractor.h> int main(int argc, char * argv[]) { EXTRACTOR_ExtractorList * plugins; EXTRACTOR_KeywordList * md_list; plugins = EXTRACTOR_loadDefaultLibraries(); md_list = EXTRACTOR_getKeywords(plugins, "/home/user/video.mp4"); EXTRACTOR_printKeywords(stdout, md_list); EXTRACTOR_freeKeywords(md_list); EXTRACTOR_removeAll(plugins); /* unload plugins */ return 0; }Il pezzo di codice mostra come visualizzare nel terminare lelenco dei metadati presenti nel file,utilizzando la libreria libextractor. Il risultato atteso è identico a quello mostrato inprecedenza con il comando extract. Oltre a questi comandi abbiamo utilizzato il seguente comando per lestrazione singola dimetadati come il mimetype (ad esempio video/mp4) o il format (352x288) di un video: • EXTRACTOR_extractLast(EXTRACTOR_MIMETYPE, md_list) • EXTRACTOR_extractLast(EXTRACTOR_FORMAT, md_list)Grazie a queste due librerie è stato possibile costruire la nostra descrizione riutilizzandoinformazioni già presenti e aggiungendone di nuove, assicurando che il file XML risultante siavalido. Una volta creato il nostro file descrittivo XML in memoria, bisogna memorizzarlo e quindipredisporre di una struttura capace di gestire file XML. Per questo compito abbiamo utilizzato,come vedremo nel prossimo capitolo, il database XML nativo eXist [7]. 20
  • 21. 3. XML e database I documenti XML sono per natura dei raccoglitori di informazioni, infatti al loro interno èpossibile "memorizzare" dati organizzati in forma gerarchica. Ma è possibile considerare undocumento XML come un database? [8] Un documento XML è simile ad un database, nel sensoche colleziona al suo interno dati organizzandoli secondo una struttura, ma questa caratteristica ècomune, in misura diversa, a tutti i tipi di file. XML e le tecnologie correlate ad esso, possonocostituire un database management system (DBMS)? XML fornisce molte funzionalità tipiche diun DBMS come la memorizzazione, la possibilità di definire schemi (DTD, XML schema), lapossibilità di utilizzare linguaggi di query (XPath, XQuery, XQL), ed altro. Ma nonostante questecaratteristiche che accomunano un documento XML ad un database, altre sono quelle che solo unDBMS può offrire come lindicizzazione, la sicurezza, efficienza nella memorizzazione, integrità deidati e delle transazioni, trigger ed altro ancora. Figura 5 - Possibili scenari nel utilizzo di file XML 21
  • 22. Come facciamo a scegliere se utilizzare un database o utilizzare la capacità di memorizzazione deidocumenti XML. Diversi sono gli aspetti da considerare in questa scelta; occorre un repository permemorizzare la pagine di un sito come mostrato nella Figura 5-A o il database è utilizzato perunapplicazione che utilizza XML come formato di trasporto di dati Figura 5-B. Oltre a quanto già detto, un altro fattore importante nella scelta di un database è chiedersise verranno memorizzati dati o documenti, cioè se XML è utilizzato solo come mezzo di trasportodei dati tra applicazione e database e quindi si necessita di memorizzare questi ultimi, oppure ilsuo uso è integrale come nel caso di documenti XHTML che si vogliono memorizzare. Questascelta influenza il modo nel quale poter memorizzare un file XML, data-centric o document-centrice quindi il tipo di database. Queste ed altre sono le motivazioni che devono guidare la scelta sullutilizzo di un database.Ad esempio, come nel nostro caso, se i documenti XML da gestire contengono anche informazionisemantiche, si potrebbe voler memorizzare tali documenti mantenendo intatta la loro strutturagerarchica. Se si hanno queste esigenze è consigliato lutilizzo di un database XML nativo. Questascelta oltre a preservare la struttura dei documenti consente anche di realizzare transazioni alivello di documento e eseguire query in un linguaggio di query XML. Queste sono le considerazioni che hanno portato la nostra scelta verso il database XMLnativo eXist, in quanto è un database funzionalmente completo, che supporta la maggior partedelle tecnologie che girano intorno a XML ed inoltre è Open Source.3.1 Un database Open Source XML nativo eXist-db è un database open source basato interamente sulla tecnologia XML e rilasciato alpubblico sotto licenza GNU LGPL. Esso è compatibile con molti standard web che rendono eXistuneccellente piattaforma per lo sviluppo di applicazioni web. Tra le tecnologie fornite troviamo: • XQuery 1.0 / XPath 2.0 • Interfacce HTTP: REST, WebDAV, SOAP, XMLRPCLa versione utilizzata è la 1.4 che aggiunge una gestione dellindicizzazione full text basata suApache Lucene [9] che utilizzeremo per facilitare le ricerche full text. eXist-db fornisce un potente ambiente per lo sviluppo di applicazioni web basate su XQuerye standard relativi. Intere applicazioni web possono essere scritte in XQuery, utilizzando XSLT,XHTML, CSS e JavaScript (per le funzionalità AJAX). Le pagine XQuery possono essere eseguite siase memorizzate sul file system che memorizzate sul database, ed è proprio questultimoapproccio quello che utilizzeremo. 22
  • 23. Figura 6 - eXist ArchitectureNella figura precedente viene mostrata larchitettura del database utilizzato, mettendo inevidenza la struttura three-tier, che mostra le varie componenti che caratterizzano questodatabase.3.2 Scrivere applicazioni basate su XQuery XQuery [10] non è solo un potente linguaggio di interrogazione, ma anche un linguaggio diprogrammazione funzionale con forti caratteristiche di tipizzazione, che può inoltre essereutilizzato per processare lintera parte logica di unapplicazione web. XQuery è una raccomandazione del W3C ed è compatibile con diversi standard come XML,Namespaces, XSLT, XPath, e XML Schema.eXist fornisce tre differenti modi per chiamare una XQuery sul web: XQueryServlet XQueryServlet legge uno script XQuery dal file system, di solito nella directory nella quale lapplicazione risiede, e la esegue utilizzando il corrente contesto HTTP. Il risultato della query è restituito come il contenuto della risposta HTTP. XQueryGenerator XQueryGenerator integra le funzionalità di eXist durante lesecuzione di XQuery, con il framework Apache Cocoon. Come accade con XQueryServlet, gli script XQuery sono letti dal file system, ma il risultato invece di tornare direttamente alla richiesta HTTP, è passato ad una 23
  • 24. pipeline in Cocoon. REST Server REST server può essere usata per eseguire XQuery memorizzate sul database. Questo è un concetto potentissimo che consente di memorizzare lintera applicazione nel database.Per mantenere linterfaccia REST semplice, le operazioni base di un database sono direttamentemappate su messaggi HTTP. I seguenti metodi sono supportati:GET Ricerca una rappresentazione della risorsa o della collezione nel database. Richieste XQuery e XPath possono anche essere specificate usando parametri opzionali del metodo GET.PUT Upload una risorsa sul database. Se richiesto, le collezioni sono automaticamente create e le risorse esistenti sono sovrascritte.DELETE Rimuove una risorsa (documento o collezione) dal database.POST Invia i dati sottoforma di un frammento XML nel contenuto della richiesta specificando lazione da eseguire. Richieste di questo tipo sono utilizzate per passare complesse espressioni XQuery troppo grandi per essere codificate nel URL.Per la nostra applicazione abbiamo utilizzato linterfaccia REST Server utilizzando una libreria ClibcURL [11] per comunicare con essa. Linterfaccia REST fornisce lautenticazione HTTP, quindi solo gli utenti autorizzati possonoaccedere al database. Se le credenziali daccesso (username e password) non sono fornite, ilserver assume lutilizzo da parte di un utente "guest", il quale ha delle funzionalità ridotte. Se lecredenziali sono fornite e non sono corrette viene restituita alla richiesta una pagina di errore(Status code 403 - Forbidden). Come già anticipato linterfaccia REST supporta gli script XQuery memorizzati sul server: sela risorsa di destinazione di un GET o POST è una risorsa con mime/type application/xquery,il server REST controlla sintatticamente ed esegue la XQuery richiesta. La XQuery ha accesso atutto il contesto HTTP, includendo parametri e attributi di sessione. Quando si esegue una richiesta usando GET o POST, il server può memorizzare i risultati inuna cache di sessione lato server. Il consumo di memoria di questa funzionalità è basso se si trattadi memorizzare risultati che referenziano a nodi già presenti nel database, mentre è alto se sitratta di memorizzare nodi generati dalla XQuery stessa. 24
  • 25. 3.2.1 La libreria "libcURL"LibcURL è un libreria che permette il trasferimento di file interfacciandosi con il lato client dei piùcomuni e protocolli, DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP. LibcURL supporta anche icertificati SSL, HTTP POST, HTTP PUT, i proxy, i cookie, autenticazione con username e password, emolto altro. LibcURL è altamente portatile e lavora allo stesso modo su differenti piattaforme,includendo Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, UnixWare,HURD, Windows, Amiga, OS/2, BeOs, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare,DOS, etc. LibcURL è stata rilasciata nel 2000 ed è la libreria C per il trasferimento file più utilizzata almondo. Molte sono le grandi agenzie che la utilizzano nelle loro applicazioni ad alto volume enumerose le applicazioni open source che la utilizzano. LibcURL è stata interamente realizzata thread-safety, è molto veloce ed è ampiamentedocumentata. Non è molto complicata da utilizzare, basta creare un gestore della comunicazione,impostare varie opzioni ed eseguire il gestore. Di seguito viene mostrata la sequenza di istruzioniche si deve quasi sempre rispettare per lavorare con libcURL: #include <curl/libcurl.h> ... CURL *curl; CURLcode res; curl = curl_easy_init(); ... curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/file.ext"); ... res = curl_easy_perform(curl); curl_easy_cleanup(curl); ... Possiamo osservare che il gestore viene inizializzato con curl_easy_init() che inparticolare crea uninterfaccia di tipo easy e tutte le operazioni che si possono effettuare su diessa iniziano con curl_easy_*. Esistono tre tipi di interfacce che si possono creare: easyinterface, multi interface, share interface. Noi nel nostro codice utilizzeremo solo linterfaccia easyvisto la sua estrema semplicità e completezza. Lunica opzione che viene settata è relativa allURLdi riferimento per loperazione da eseguire. In questo punto del programma si possonoaggiungere altre opzioni come ad esempio i parametri da passare con un messaggio POST, alloralistruzione sarebbe curl_easy_setopt(curl, CURLOPT_POSTFIELDS,"user=username&id=51"). Listruzione res = curl_easy_perform(curl) manda inesecuzione il gestore configurato e il risultato viene mostrato sullo standard output. Lultima 25
  • 26. espressione mostrata al contrario di curl_easy_init() serve per chiudere qualsiasiconnessione con linterfaccia creata. Naturalmente se abbiamo a che fare con un URL e con una risorsa remota significa chevogliamo in qualche modo gestire il risultato delloperazione e non accontentarci di visualizzare ilrisultato sullo stdout. Per realizzare ciò esiste lopzione CURLOPT_WRITEFUNCTION che permettedi gestire i dati risultanti dallesecuzione, ad esempio scrivendoli in un file. Parallelamente aquesta lopzione CURLOPT_READFUNCTION ci permette di leggere da un file e passare ilcontenuto al gestore della comunicazione. Naturalmente quanto detto sopra non è che una piccolissima parte del potenziale di questalibreria; bisogna considerare che molte sono le API messe a disposizione dalle tre interfacce emolti i contesti applicativi nei quali poter sfruttare libcURL in tantissimi modi differenti. Come già accennato in precedenza, utilizziamo questa libreria per interfacciarci conlinterfaccia REST del database eXist. In particolare utilizzeremo messaggi di tipo HTTP POST, HTTPPUT e autenticazione con username e password.3.3 Ricerche con XQuery Le informazioni contenute allinterno di una collezione di file XML possono essererecuperate utilizzando un linguaggio di query. Esistono diversi linguaggi per interrogare XML ediversi modi per farlo. Nel nostro caso abbiamo utilizzato XQuery sia per la sua semplicità maanche per lestrema potenzialità e completezza. Come mostrato nella Figura 3 il database eXistoffre un buon supporto a questo linguaggio. Come già accennato possiamo effettuare vari tipi di ricerca: possiamo mirare ad unparticolare nodo del file XML oppure cercare in tutto il file. Ad esempio, se consideriamo ilseguente file XML oggetto delle nostre interrogazioni: <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> 26
  • 27. <price>49.99</price> </book> ... </bookstore>Potremmo eseguire le seguenti interrogazioni: • se cerchiamo lelenco dei nomi di libri, potremmo effettuare una query del tipo doc("books.xml")/bookstore/book/title aspettandoci di ottenere come risultato un elenco di nodi <title> contenenti i nomi dei libri della biblioteca; • se cerchiamo lelenco dei nomi di libri aventi un prezzo inferiore a 30€, potremmo effettuare una query del tipo doc("books.xml")/bookstore/book[price<30];Inoltre è possibile effettuare anche una ricerca full text che cercherà una corrispondenza in tuttoil testo contenuto nel file XML. Per ottimizzare questultima operazione, il database eXist offre lapossibilità di configurare un sistema di indicizzazione con lo scopo di rendere tali operazioni piùveloci.3.3.1 Full Text Index basato su Apache LuceneDalla versione 1.4 di eXist è stato introdotto un nuovo modulo per lindicizzazione full text chesostituisce il vecchio build-in di eXist per lindicizzazione full text. Il nuovo modulo è più veloce, piùconfigurabile e più ricco di funzionalità rispetto alla vecchia indicizzazione di eXist. Basato su Apache Lucene, questo modulo è strettamente integrato con larchitetturamodulare di indicizzazione di eXist: lindice si comporta come un plugin, il quale aggiunge sestesso alle pipeline di indicizzazione del db. eXist infatti si può configurare con diversi tipi di indici:Structural Indexes, Range Indexes, NGram Indexes, Spatial Indexes, Old Legacy Full Text Indexes,New Full Text Indexes. Una volta configurato, lindice sarà notificato di ogni evento significante,come laggiunta o la rimozione di un documento, la rimozione di una collezione, olaggiornamento di un singolo nodo. Non è necessaria nessuna re-indicizzazione manuale perrendere lindice aggiornato dopo ogni modifica al "contenuto" del db. eXist associa un distinto node-id per ogni nodo in un documento XML. Questo node-id èusato per identificare il documento corrispondente allinterno dei file indice di Lucene. Questosignifica che è possibile personalizzare in maniera molto sottile il peso dato ad ognicorrispondenza. In questo modo la ricerca di una parola chiave avrà unimportanza differente inbase alla posizione della sua corrispondenza allinterno del documento XML. Per esempio, unacorrispondenza di una parola chiave allinterno di un titolo può avere unimportanza più altarispetto ad una corrispondenza allinterno del body del documento. Questo significa che i risultatiriguardanti le corrispondenze trovate allinterno del titolo di un documento, probabilmente 27
  • 28. compariranno prima tra i risultati della ricerca. Le ricerche quindi avranno maggiore Precision eRecall3 rispetto a sistemi che non conservano la struttura del documento. Per vedere meglio il funzionamento dellindice di Lucene, prendiamo in considerazione ilseguente file XML: <test> <p n="1">this paragraph tests the things made up by <name>ron</name>.</p> <p n="2">this paragraph tests the other issues made up by <name>edward</name>.</p> </test> È possibile definire un indice Lucene su un singolo attributo o elemento (qname="…") o suun path (match="…"). Se definiamo un indice nel seguente modo <text qname="test"/>, unindice viene creato solo su <test>. Così facendo a Lucene viene passata la stringarappresentativa di <test>, che include tutto il testo contenuto da <test> stesso e da tutti i suoidiscendenti; tale stringa nel nostro esempio è "this paragraph tests the things madeup by ron. this paragraph tests the other issues made up by edward.". Con un indice definito in questo modo "non è possibile" cercare solo nei nodi sotto al nodo<test>, cioè nei nodi <p> e <name> poiché tali nodi sono stati collassati allinterno del nodopadre. Se si vuole poter interrogare i nodi discendenti, si devono impostare indici addizionali suquesti, come <text qname="p"/> e <text qname="name"/>. Per definire un indice su un path di un nodo si usa come detto <textmatch="//test"/>. Questo tipo di indice mantiene la struttura dei nodi sotto il nodo <test>.Questo consente quindi di interrogare direttamente i nodi sotto <test>; in particolare questomodo di indicizzare è visto come una scorciatoia per interrogare tutti i nodi sotto <test>.Bisogna aggiungere anche, che il valore dellattributo match "//test" non è una espressioneXPath ma un semplice path. Per il nostro lavoro si è utilizzato lattributo "qname" visto chelutilizzo di "match" potrebbe essere soggetto a cambiamenti. Tra poco vedremo come abbiamosettato lindicizzazione che ci permette di effettuare interrogazioni full text sfruttando il nuovomodulo Lucene. Prima di poter effettuare delle interrogazioni full text bisogna impostare lindicizzazione deldatabase. eXist fornisce un semplicissimo modo per fare questo. Se vogliamo interrogare unanostra collezione memorizzata in db/prova, bisogna creare un file collection.xconf indb/system/config/db/prova. Quindi la configurazione dellindice è di solito memorizzata in3 Precision and Recall: due parametri ampiamente utilizzati per valutare la correttezza di un algoritmo di PatternRecognition. 28
  • 29. una directory dentro system/config/db isomorfa alla directory del db. Nel precedente caso ilfile collection.xconf è il seguente: <collection xmlns="http://exist-db.org/collection-config/1.0"> <index> <!-- Enable the legacy full text index for comparison with Lucene --> <fulltext default="all" attributes="no"/> <!-- Lucene index is configured below --> <lucene> <analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/> <analyzer id="ws" class="org.apache.lucene.analysis.WhitespaceAnalyzer"/> <text qname="test"/> <text qname="p"/> <text qname="name"/> </lucene> </index> </collection>Nel file di configurazione si ha la possibilità di impostare anche lesclusione dallindice di alcuninodi. Se per esempio si vuole escludere dallindice i nodi inline, che si trovano nel mezzo del testo,come potrebbero essere i tag <note> basta aggiungere <ignore qname="note"/> al livelloprincipale nel file di configurazione sotto il nodo <lucene> oppure sotto il nodo il cui indice sivuole "alleggerire". Questa esclusione viene solo applicata a nodi discendenti. Quanto descritto sopra sono le funzionalità che sfrutteremo nel nostro lavoro. Il moduloLucene naturalmente offre ancora molte funzionalità tra le quali la possibilità di assegnare un"Boosting Values" valore dimportanza ad ogni match trovato. Il valore viene impostato nel file diconfigurazione mediante lattributo "boost" <text qname="name" boost="2.0"/>. Ora che abbiamo visto come impostare il file di configurazione possiamo introdurrebrevemente lespressione XQuery che utilizzeremo per interrogare una collezione come quellavista sopra. Cominciamo col fare riferimento alla collezione da interrogare, per la quale è statocreato il file collection.xconf, e lo facciamo con lespressione collection(/db/prova).Per effettuare una query full text bisogna fare riferimento ad uno degli indici creato sopra (test, p,name) basta aggiungere lelemento scelto, per esempio collection(/db/prova)/test ocollection(/db/prova)/test/p o collection(/db/prova)//name. Ora è possibileeffettuare la query: collection(/db/prova)//p[ft:query(.,edward)]. Il risultatodella query precedente è il secondo paragrafo del file XML di prova. Più avanti vedremo questistrumenti applicati ad una collezione di file XML secondo lo standard MPEG-7. 29
  • 30. 4. Un sistema DRM con MPEG-74.1 Architettura del sistema esistente Come anticipato nellintroduzione, lo scopo della tesi è quello di inserire allinterno di unsistema esistente lo standard MPEG-7. Il sistema esistente permette di condividere filemultimediali tutelando gli aspetti di sicurezza tipici di unapplicazione DRM. Prima di mostrare larchitettura del sistema ed in parte il funzionamento, bisognaspecificare che il DRM Server più volte nominato, è composto da due parti principali: il DRMServer cioè la parte on-line che risponde alle richieste degli utenti, e il DRM Encoder una parteoff-line che si occupa della codifica e memorizzazione dei multimedia. Il DRM Encoder tramite un plugin di codifica di GStreamer codifica il file multimediale conunapposita chiave (MasterKey), lo memorizza sul file system, e tiene traccia della MasterKeyutilizzata e delle informazioni relative al file allinterno di un database MySQL che vedremo trabreve. Nella parte on-line, il DRM Server rimane in attesa di connessioni e per ognuna di questepermette loperazione di ricerca e download del file codificato. Il Client una volta ricevuto il filecodificato, necessita della MasterKey per decodificarlo e riprodurlo. Il Client la riceve dal DRMServer ma prima dellinvio questultimo codifica la MasterKey utilizzando unaltra chiave(UserKey). Questultima è necessaria per la riproduzione sul Client in particolare per decodificarela MasterKey ricevuta dal DRM Server; quindi attraverso lAccount Server, il DRM Server manda alClient la UserKey utilizzata per codificare la MasterKey. A questo punto il client riceve dal DRMServer la MasterKey codificata e dallAccount server la UserKey, e può quindi decodificare ilmultimedia ricevuto e riprodurlo. La seguente figura mostra larchitettura alla base del sistema realizzato finora mettendo inevidenza le tecnologie utilizzate. 30
  • 31. Figura 7 - Architettura del sistema DRMCome mostrato, tutta la comunicazione è basata su Open SSL, la gestione delle utenzesullAccount Server sfrutta Open LDAP. Nel DRM Server, la parte di codifica (DRM Encoder) utilizzaGStreamer per codificare i file multimediali mentre nel Client viene utilizzato per decodificare ilfile ricevuto. Il formato JSON4 viene utilizzato come formato di scambio dati tra i vari componentidel sistema. Come accennato, il DRM Encoder una volta effettuata la codifica dei file, memorizzaallinterno di un database MySQL il percorso dove ha codificato il file, le informazioni relative alfile e la MasterKey utilizzata. Figura 8 - Tabella relazionale del database MySQLLa tabella mostra quali dati effettivamente vengono memorizzati sul database MySQL. Inparticolare lentry media contiene una stringa descrittiva che tiene traccia delle informazioni utiliper la ricerca. Questa stringa è formata dalla semplice concatenazione delle seguenti4 JSON (JavaScript Object Notation) - http://www.json.org 31
  • 32. informazioni: artista, canzone, album. Fino a questo punto, lo sviluppo dellapplicazione si èconcentrato sulla parte di comunicazione e protezione dei dati, mettendo assieme tecnologiecome Open SSL e Open LDAP come mostrato nella Figura 7, integrando un plugin di GStreamercon il quale si codifica un file multimediale nel DRM Encoder e un altro plugin per la riproduzioneallinterno del Client, trascurando quindi tutta la parte di "gestione" dei file multimediali, dalledescrizioni semantiche dei multimedia alla ricerca basata sui contenuti semantici. Infatti lattualefunzione di ricerca, cerca un possibile match con una sottostringa dellentry media. Questo metodo di ricerca non è completo in quanto permette di cercare i file solo in base aimetadati elencati sopra, trascurando così molti altri aspetti semantici. Inoltre la concatenazionedei metadati in una stringa non è un buon metodo per strutturare e memorizzare questeinformazioni, perché si perde la struttura che collega questi metadati e quindi la semanticacontenuta in essa.4.2 Perché MPEG-7? In unapplicazione distribuita per la condivisione di file multimediali, si potrebbe volercercare i multimedia in base allanno di produzione o al luogo di creazione, o in base ad aspetti piùdescrittivi e semantici, come potrebbero essere le parole appartenenti ad una descrizione astrattadel file, o appartenenti al testo corrispondente allaudio. Un altro possibile scenario potrebbeessere la possibilità di cercare un video dando unimmagine o un audio dando la sua cover. Questi aspetti semantici devono essere quindi descritti e memorizzati dallapplicazione equindi si necessita di una struttura che contenga tutti i metadati necessari salvaguardandoneanche la semantica che lega tra di loro i vari metadati. Per questo motivo, lo standard MPEG-7 èlideale per memorizzare e strutturare le informazioni allinterno di file XML. Ecco da dove è natala necessità di sostituire il database MySQL e introdurre eXist-db dove vengono gestite lecollezioni di descrizioni XML. Di seguito mostreremo come abbiamo cambiato il sistemaportandolo così ad una versione che sfrutta lo standard MPEG-7.4.3 DRM Server con eXist-db Una delle modifiche apportate al sistema è stata quella di togliere il database relazionaleMySQL e sostituirlo col database XML nativo eXist, nel quale verranno memorizzate e gestite ledescrizioni semantiche, in XML conforme allo standard MPEG-7, dei file multimediali codificati. Lafigura seguente mostra le caratteristiche principali introdotte sul DRM Server. 32
  • 33. MPEG-7 Lucene Full-Text Index XQuery eXist-db Figura 9 - Principali caratteristiche del nuovo serverAllinterno del Server DRM abbiamo modificato la parte di codifica (la parte off-line),intervenendo su un programma chiamato drmencoder che tramite una iterazione con lutentecrea il file XML descrittivo e lo memorizza nel database, tenendo traccia così dei metadati chedescrivono il file, della Master Key e del path dove il file codificato viene memorizzato. I file XMLcreati vengono poi memorizzati nel database eXist sfruttando la sua interfaccia REST e la libreria ClibcURL, in una collezione che ha una struttura completamente speculare a quella della cartellanel file system, nella quale viene memorizzato il file codificato. Prendendo ad esempio un fileaudio codificato e memorizzato nella seguente directory: /DRM_SERVER_HOME/D/DANIELE_ROSSI/ALBUM_STORICO/yellow_song.mp3il file XML descrittivo relativo ad esso, viene memorizzato nella seguente struttura allinterno deldatabase eXist: /eXistHOME_APPLICATION/D/DANIELE_ROSSI/ALBUM_STORICO/yellow_song.xmlCome brevemente illustrato nel capitolo precedente, il database eXist una volta installato deveessere configurato per le operazioni di ricerca full text che sfruttano Lucene. Inoltre abbiamoutilizzato diversi file XML e XQuery di supporto alle varie funzionalità. Cominciamo col mostrare il file XML che verrà memorizzato nella nostra collezione. Percercare di riutilizzare gran parte del vecchio sistema DRM con il database relazionale, abbiamoesteso il file XML MPEG-7 mostrato nel Capitolo 2, in modo da tenere traccia anche dellid dellarisorsa e della master_key. <media> <id> ID </id> <mediaKey> Master key </mediaKey> <Mpeg7 xmlns="urn:mpeg:mpeg7:schema:2001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mpeg7="urn:mpeg:mpeg7:schema:2001" xsi:schemaLocation="urn:mpeg:mpeg7:schema:2001 Mpeg7-2001.xsd"> <Description xsi:type="ContentEntityType"> <!-- Parte relativa alla descrizione del video --> <MultimediaContent xsi:type="VideoType"> <Video> 33
  • 34. <MediaInformation> ... <MediaUri> /D/DANIELE_ROSSI/ALBUM_STORICO/yellow.mp4 </MediaUri> ... </MediaInformation> <CreationInformation> ... </CreationInformation> </Video> </MultimediaContent> <!-- Parte relativa alla descrizione del audio --> <MultimediaContent xsi:type="AudioType"> <Audio> ... </Audio> </MultimediaContent> <MultimediaContent xsi:type="MultimediaCollectionType"> <Collection xsi:type="TextAnnotation" name="ALBUM_STORICO"/> </MultimediaContent> </Description> </Mpeg7> </media>Come possiamo notare, non vi è un vero parallelismo tra la tabella relazionale della Figura 8 e ilfile XML mostrato sopra. Lentry real_path che sembra mancare, è invece già contenutaallinterno della descrizione MPEG-7 nel tag <MediaUri>; questo contiene la posizione del filecodificato. Il valore ID nel database eXist, assume un significato differente rispetto al databaserelazionale MySQL, infatti in eXist una risorsa XML è univocamente distinta dal suo path e quindiquesto valore è stato conservato solo per consentire una selezione rapida (numerica e non unpath testuale) dei risultati a seguito di una ricerca. Immaginate lo scenario di ricerca, nel quale unutente deve selezionare il risultato desiderato, e per fare ciò deve digitare il suo real_path.Questo approccio non è molto User Friendly, ecco perché si è deciso di lasciare la selezione delrisultato dandone il suo id. Per tenere traccia del progressivo id si è utilizzato un file XML memorizzato nel database.Quando si cerca di recuperarne il valore con una XQuery per inserire una nuova entry il valoredellid viene anche incrementato dalla query stessa. Di seguito mostriamo il file e la query. <!-- next_id.xml --> (: get_next_id.xq :) <data> xquery version "1.0"; <next-id>0</next-id> </data> let $id-file := /db/drmp2p/next_id.xml let $id := doc($id-file)/data/next-id/text() let $action := update replace doc($id-file)/data/next-id with <next-id>{$id + 1}</next-id> 34
  • 35. let $res := $id - 1 return $resLa query prende il riferimento al file next_id.xml, ed al testo contenuto allinterno del nodo<next-id>; poi modifica questo valore incrementandolo di uno e ne restituisce il valoredecrementato di uno. Questo ci permette quindi di avere sempre un progressivo numerico damemorizzare assieme al file XML.4.3.1 Configurazione di LuceneCome abbiamo accennato nel Paragrafo 3.3, le ricerche full text con XQuery sfruttano un modulodi indicizzazione di Apache Lucene. Questo crea e modifica gli indici ad ogni evento significativofatto sui file XML memorizzati; quindi ad ogni inserimento, modifica e cancellazione dei file XML,vengono parallelamente modificati anche gli indici relativi. Come già detto in precedenza, si deveconfigurare lindicizzazione tramite un file di configurazione del database eXist, con il quale sidefinisce come devono essere creati e mantenuti gli indici. <!-- //db/system/config/db/drmp2p/collection.xconf --> <collection xmlns="http://exist-db.org/collection-config/1.0"> <index xmlns:mpeg7="urn:mpeg:mpeg7:schema:2001"> <!-- Enable the legacy full text index for comparison with Lucene --> <fulltext default="none" attributes="no"/> <!-- New full text index based on Lucene --> <lucene> <analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/> <analyzer id="ws" class="org.apache.lucene.analysis.WhitespaceAnalyzer"/> <text qname="media"> <ignore qname="mpeg7:LastUpdate"/> <ignore qname="mpeg7:MediaUri"/> <ignore qname="mpeg7:Role"/> <ignore qname="mpeg7:FileSize"/> <ignore qname="mpeg7:FileFormat"/> </text> <text qname="@name"/> </lucene> </index> </collection>Grazie a questo file di configurazione sarà possibile effettuare query full text sfruttandolindicizzazione del modulo Lucene. In particolare notiamo la definizione di due indici <textqname="media"> e <text qname="@name"/>: 35
  • 36. • Media indicizza tutto il testo contenuto nel file XML tranne quello contenuto nei tag definiti dallattributo qname del tag ignore, come ad esempio <ignore qname="mpeg7:MediaUri"/>. • Name indicizza il testo appartenente allattributo name del tag Collection che descrive lalbum di appartenenza del media.La XQuery memorizzata e richiamata per la ricerca è la seguente. (: fulltext_query.xq :) xquery version "1.0"; declare namespace mp7=urn:mpeg:mpeg7:schema:2001; declare option exist:serialize "method=xml media-type=text/xml indent=yes"; <list> { let $parameter := request:get-parameter(parameters, ) let $query := <query> <wildcard>*{$parameter}*</wildcard> </query> let $my_collection := collection(/db/drmp2p/collection) let $testo := $my_collection//media[ft:query(., $query)] let $attributo := $my_collection//*[ft:query(@name, $query)]/ancestor::media for $result in $testo | $attributo let $id := $result//id/text() let $path := $result//mp7:MediaUri/text() return <item> <id>{$id}</id> <path>{$path}</path> </item> } </list>Vediamo brevemente come funziona: • per cominciare si recupera il parametro passato per la ricerca; • viene creata una "query" con elementi <wildcard> che danno la possibilità di cercare nelle sottostringhe tramite il simbolo *; • vengono poi creati due insiemi di nodi <media>: uno contenente i match con il testo dellintero file e laltro contenente i match con lattributo name di Collection; • i due insiemi vengono poi uniti e per ogni elemento <media> contenuto nellinsieme risultante, viene creato un elemento <item> che ne conterrà <id> e il <path>. 36
  • 37. Il risultato atteso dalla precedente query sarà qualcosa del genere: <list> <id> 10 </id> <path>/D/DANIELE_ROSSI/ALBUM_STORICO/yellow_song.mp3</path> <id> 23 </id> <path>/E/EMANUELE_BIANCHI/COLLEZIONE_JAZZ/the_best_jazz.mp3</path> </list>Quanto visto fin-ora riguarda principalmente la parte relativa ad eXist e alla ricerca full textutilizzando Lucene. Nel prossimo paragrafo mostriamo altre query utilizzate nelle variefunzionalità soprattutto nella parte di ricerca dei file e di recupero di informazioni relative ad unfile selezionato.4.3.2 Query utilizzateIn uno scenario di ricerca quando lutente inserisce le parole chiave da cercare, la queryrestituisce un file XML che verrà serializzato nel formato JSON nel seguente modo: [{ "id" : 10, "mediapath" : "/D/DANIELE_ROSSI/ALBUM_STORICO/yellow_song.mp3", },{ "id" : 23, "mediapath" : "/E/EMANUELE_BIANCHI/COLLEZIONE_JAZZ/the_best_jazz.mp3", }]Questi dati serializzati, arrivano sul client e lutente seleziona lid desiderato. A questo puntobisogna recuperare sul DRM Server due informazioni relative al file selezionato: • il Media Path del file allinterno del DRM Server; • la Master Key che è servita al DRM Encoder per codificare il file.Ricordiamo che questi valori sono contenuti nella collezione di descrizioni XML allinterno deldatabase eXist, in particolare allinterno dei tag <mediaKey> e <MediaUri>. Per recuperarlipartendo dallid selezionato utilizziamo le seguenti XQuery: (: get_mediapath_from_id.xq :) xquery version "1.0"; declare namespace mp7=urn:mpeg:mpeg7:schema:2001; declare option exist:serialize "method=xml media-type=text/xml indent=yes"; for $media in collection(/db/drmp2p/collection) let $id := request:get-parameter(parameters, ) where $media//id/text() = $id return <mediapath>{$media//mp7:MediaUri/text()}</mediapath> 37
  • 38. (Get_mediapath_from_id.xq) una volta individuato il media avente lid dato come parametro, sirestituisce il testo contenuto in <MediaUri> allinterno di un tag risultato <mediapath>. (: get_masterkey_from_id.xq :) xquery version "1.0"; declare namespace mp7=urn:mpeg:mpeg7:schema:2001; declare option exist:serialize "method=xml media-type=text/xml indent=yes"; for $media in collection(/db/drmp2p/collection) let $id := request:get-parameter(parameters, ) where $media//id/text() = $id return <masterkey>{$media//mediaKey/text()}</masterkey>(Get_masterkey_from_id.xq) si restituisce il testo contenuto in <masterKey> allinterno di untag <masterkey>. get_mediapath_from_id.xq 1- POST message by libcURL 2- XML with result eXist-db DRM Server (Data-Layer) (Logic-Layer) Figura 10 - Scenario dinterrogazione - Recupero Media PathLo scenario mostra la sequenza di passi allinterno del DRM Server, per il recupero del path delmedia. Allinterno del messaggio HTTP POST viene inserito il parametro id sfruttando la librerialibcURL. Viene eseguito lo stesso processo anche per il recupero della Master Key. Una voltarecuperati questi dati il media può esse codificato e mandato sul Client. 38
  • 39. Conclusioni MPEG-7 è uno standard che fornisce un valido supporto alla gestione della semantica incampo multimediale. Lo standard consente di arricchire un oggetto multimediale aggiungendometadati che consentono di aumentare la sua semantica. Il processo di arricchimento(enrichment) permette quindi di aggiungere informazioni al multimedia, come ad esempio isottotitoli o la pubblicità in un video. Questo processo ha come principale vantaggio quello direndere loggetto più gestibile in operazioni di archiviazione, di ricerca o di fruizione dei contenuti,come la capitolazione automatica (chaptering). Molti sono i settori nei quali lo standard MPEG-7 si inserisce e molte le possibili estensioni.Nella nostra applicazione lo standard offre dei vantaggi nelle ricerche dando dei risultati piùprecisi, e la possibilità di avere in futuro delle descrizioni semantiche più dettagliate estendendoquella esistente. In particolare possiamo già prevedere la possibilità di estenderle collegando traloro multimedia che hanno in comune alcuni metadati quali Autore e/o Genere, fornendoeventualmente tali multimedia alternativi tra i risultati di una ricerca. Inoltre potremmo volereffettuare ricerche per similarità, dando limmagine relativa o in qualche modo collegata ad unvideo o un audio, ed avere come risultato della ricerca tutti quei multimedia che sono collegatiallimmagine data. Nella tesi si è affrontato il tema dell’enrichment in maniera completa mentre a livelloimplementativo si è utilizzato MPEG-7 solo per migliorare il modulo di ricerca nel sistema DRMesistente. Il modello presentato è applicabile in diversi contesti ovviamente modificando imetadati di arricchimento. Molte le strade e gli sviluppi futuri, in particolare il prossimo step sarà quello di introdurrelo standard MPEG-21. Questo standard molto recente considera tutte le problematiche inerenti ladistribuzione dei contenuti in funzione dei diritti digitali, mentre gli standard come MPEG-1,MPEG-2, MPEG-4 trattano i file dal punto di vista fisico e come abbiamo visto MPEG-7 tratta laparte semantica dei multimedia. Lo scopo è quello di realizzare un framework multimediale chefornisca allutente un supporto per lo scambio, laccesso, ed altre operazioni effettuate sulmultimedia, controllando che lutente abbia i diritti per effettuare tale operazione. Vista lapossibilità di estendere larchitettura di questa applicazione al peer-to-peer, questa integrazioneva considerata per controllare il più possibile il percorso del multimedia dal produttore alconsumatore (value-chain). 39
  • 40. Attualmente lapplicazione è sprovvista di interfaccia grafica (GUI - Graphical UserInterface). A tal proposito abbiamo studiato due possibili soluzioni da adottare: le librerie graficheGtk+ e Qt4. Abbiamo realizzato per entrambe le soluzioni una piccola GUI per lautenticazione econfrontato le due soluzioni. Sebbene la libreria Qt4 manipolata in C++ è sembrata moltoimmediata, la libreria Gtk+ gestita col linguaggio C si è rivelata la soluzione migliore, per la suaversatilità, estrema semplicità e velocità. Lattuale implementazione del sistema è un prototipo che mostra le funzionalità delle variecomponenti. Si dovrebbe effettuare al più presto un lavoro di ingegnerizzazione separando laparte di logica dalla parte di presentazione, stratificando meglio larchitettura del sistema. Questaoperazione è necessaria per aumentare la leggibilità del progetto, il quale comincia ad averedimensioni discrete, non più gestibili senza una buona struttura. Concludendo, questo lavoro illustra lo standard MPEG-7 applicato ad un contesto didescrizione e ricerca di contenuti multimediali; inoltre descrive una serie di tecnologie che sonostate utilizzate nella realizzazione del prototipo. In particolare le librerie libxml2 e libextractor perla creazione di descrizioni MPEG-7 in formato XML, il database eXist per la memorizzazione dei filee per le query in XQuery, il motore Lucene per l’indicizzazione delle descrizioni e infine la librerialibcURL per la comunicazione con linterfaccia REST del database eXist. 40
  • 41. Bibliografia[1] Giancarlo Vercellesi, Tutorial su MPEG-7 [ISO/IEC 15938]. Giugno 2006.[2] Leonardo Chiariglione, MPEG-7 Overview. Ottobre 2004.[3] José M. Martínez, Rob Koenen, and Fernando Pereira, MPEG-7: the generic Multimedia Content Description Standard. Giugno 2002.[4] DCMI - Dublin Core Metadata Initiative, http://dublincore.org[5] libxml2 - The XML C parser and toolkit of Gnome, http://xmlsoft.org[6] GNU libextractor - A simple library for keyword extraction, http://www.gnu.org/software/libextractor[7] eXist-db - An Open Source Native XML Database, http://exist-db.org.[8] Federico Tonioni, Gestione di risorse per teche digitali con tecnologie MPEG-7, XML e Java.[9] Apache Lucene, http://lucene.apache.org[10] XQuery, http://www.w3.org/XML/Query[11] CURL - The multiprotocol file transfer library, http://curl.haxx.se/libcurl[12] Paolo Tatone, GStreamer mediaplayer plugin per l’integrazione in un sistema di Digital Rights Management. LAquila, Ottobre 2009.[13] Lorenzo Sfarra, Progettazione e realizzazione di un sistema DRM utilizzando SSL e GStreamer. LAquila, Marzo 2010. 41

×