Semantica

From arkiwi
Jump to navigation Jump to search

Abstract

Per farla breve, dopo lungo studio e confronto, nel torrido clima bolognese di fine luglio/ inizio agosto ho cominciato a scrivere seriamente del codice, dando vita alle prime alpha di WEKA [0] [Weka Enhance Knowledge in Arkiwi]: un software che dato un contenuto multimediale (ovvero i suoi metadati) sia in grado di consigliare all'utente una lista di altri contenuti semanticamente vicini all'originale.

L'idea di fondo prevedeva lo sviluppo di un sistema che non richieda manutenzione, la cui base di conoscenza sia interrogabile online e mantenuta indipendentemente dal software stesso. Questo requisito nasce dalla consapevolezza che le ontologie sono il componente che richiede maggior analisi e lavoro e, almeno per ora, si e' preferito basarsi su cio' che offre la comunita' online. In particolare per ora mi sto basando su dbpedia ma, oltre alle altre ontologie che ho visto e scartato per vari motivi, stavo pensando almeno di includere il Nuovo Soggettario della Biblioteca Nazionale di Firenze [1].

Inoltre non deve esistere alcuna knowledge base dei file multimediali indicizzati nel sistema: l'unica ricerca a disposizione si basa sui metadati dei singoli file ma non e' disponibile nessun tipo di inferenza semantica.

Data i due precedenti assunti, ovvero la mancanza di ontologie specifiche e l'assenza di un triple store dedicato ai file memorizzati, si e' optato per una soluzione che affidi tutto la computazione all'utente finale.

E quindi javascript.

Dopo un altro periodo di ricerche eseguito parallelamente alle prime fasi di sviluppo, finalmente ho trovato qualcosa che faceva al caso mio, ovvero il progetto Interactive Knowledge Stack [2] ed in particolare le sue componenti Apache Stanbol [3] e vie.js [4].


Allo stato attuale WEKA funziona pressapoco cosi':

- prende in ingresso un file owl aderente alla Media Ontology proposta dal W3C [5];

- ne analizza il contenuto estraendo le keyword precedentemente inserite dall'utente. Queste keyword corrispondono hanno la stessa funzione dei tag che si possono vedere ovunque nei blog, in youtube, flickr e dovunque nei siti web. La grossa differenza e' che le keyword non sono delle semplici etichette ma delle entita' semantiche espresse tramite un URI. Queste URI fanno riferimento alla galassia di linked data ed in particolare a dbpedia (esclusivamente per ora);

- WEKA interroga un endpoint SPARQL per ottenere il valore delle proprieta' interessanti (definite in base a vari parametri) di queste keyword;

- i valori cosi' ottenuti sono a loro volta delle URI di entita' semantiche su dbpedia di cui vado a prendermi le proprieta' che reputo utili;

- ottenuta una lista di related keyword vado ad interrogare la ricerca su arkiwi per ottenere una lista di file che contengono una o piu' di quelle keyword;

- per ogni file cosi' ottenuto estraggo le keyword definite per esso. In base a queste ed al set di keyword del file originale calcolo la semantic relatedness, riordino e restituisco una lista in owl (o xml);

- presento la lista di related files all'utente sotto forma di contenuti correlati (concettualmente la colonna di destra di youtube). Al momento questo ultimo passo deve ancora essere implementato.

Internamente WEKA utilizza pesantemente rdfQuery [6], un triple store in javascript per memorizzare le proprieta', i loro valori e le relazioni tra keyword e file.

Oltre a WEKA si sono resi necessari un paio di codici aggiuntivi per l'editing dei metadati e la loro trasformazione: - un form in cui sia possibile inserire entita' semantiche come keyword, fortemente basato su vie autocomplete [7] - un foglio di stile xslt per la trasformazione da xml a owl, ovvero la Media Ontology


A questo punto dello sviluppo mi mancano pochi fix e molti test: per ora i file xml su cui ho sviluppato erano forgiati appositamente per WEKA visto che la struttura dei medadati ancora non supportava i common tag [8] utilizzati per memorizzare le keyword. Per questo, oltre a mancare l'integrazione in arkiwi, non esiste ancora una valutazione sui risultati effettivi della misura di semantic relatedness.

Inoltre esistono n problematiche specifiche di javascript da considerare (compatibilita' con i browser in primis).

Si prova ad aggiungere informazione semantica sui contenuti dei file multimediali. Il fine ultimo e' un sistema di suggerimento basato sulla "valore semantico" del file. L'accrocchio sta prendendo forma in javascript. Potrebbe cambiare tutto, oppure esplodere.


il nome pero' dovra' cambiare visto che esiste gia' un altro software con lo stesso nome

Informazione disponibile

File rdf+xml come definito qui StrutturaXML (inconsistente per le mie modifiche? jig.) ... in realta' potrei partire dalla rappresentazione OWL, visto che c'e' e che dovrebbe essere particolarmente adatta allo scopo


Se voglio usare jOWL devo trovare il modo di includere tutta l'ontologia ma

Valore Semantico

Informazioni utili

Gli unici valori presi in considerazione sono i tag aggiunti dagli utenti (solo creatori?) Questi tag saranno memorizzati seguendo le specifiche di Common tag Questo avviene compatibilmente con il fatto che non sono sicuro se li sto utilizzando correttamente.

Inserimento dei tag

Attualmente non disponibile, si rimanda a qualche altra pagina. Un sistema di suggerimento da vocabolario controllato sta prendendo forma. Si basa su VIE.js e forse su Apache Stanbol (javammerda!!!) La base semantica e' DBPedia e forse potrebbe essere integrato il Soggettario Nazionale


Estrazione delle informazioni utili

Lavoro in javascript, lato client (ovviamente?), che informazioni ho a disposizione? A questo punto non piu' "l'xml raw" in cui saranno inseriti i ctag, ma piuttosto la renderizzazione in HTML. E quindi? Cosa mi aspetto?

Elaborazione

Considero i tag(ma:keyword,dc:subject,ctag:tag) a mia disposizione Le informazioni relative alla risorsa vengono recuperate dalla base semantica. Estraggo i valori delle proprieta' per me interessanti.

Proprieta' interessanti

Dipendo dal tipo di entita' che sto trattando

  • Person

... Interrogo pagliaio per trovare altri file con questi tag. Ordino i file in base al contenuto semantico ed alla distanza dal mio file originale, basandomi sul significato delle keyword.

Risultato/Output

Lista di file ordinata per distanza semantica (Liste di file ordinate considerando solo sei sottoinsiemi di relazioni o file)

Rappresentazione

eh, pure questo moh!

RappresentazioneOwl

Appena i commontag saranno implementati andra' resa coerente.