Questo documento contiene le specifiche che dovranno essere seguite dai gruppi
che realizzeranno il progetto di LTW 2002 nella categoria "musica".
Il progetto prevede la costruzione di un sistema di navigazione semantica all'interno
di una banca documentaria di grandi dimensioni ed omogenea per contenuto. Il sistema
deve essere parzialmente interoperabile tra basi di dati della stessa categoria.
Per raggiungere tale obbiettivo i documenti dovranno essere convertiti in formato
XML utilizzando le specifiche descritte in questo testo. Verranno inoltre fornite
indicazioni per la costruzione del thesaurus necessario per la navigazione tra i documenti.
|
|
Questo documento nasce per permettere l'interoperabilità tra i progetti di
gruppi diversi, sia per quanto riguarda la visualizzazione dei documenti, sia per la
navigazione tra essi.
Lo schema concettuale del lavoro necessario per la realizzazione di un progetto è
il seguente:
- Vengono individuati 50-100 documenti dalla struttura omogenea.
- I documenti sono trasformati (attraverso un programma o script) in una
serie di documenti XML.
- Attraverso XSLT, dai documenti XML vengono estratte le informazioni
necessarie alla creazione di un indice navigabile in formato RDF.
- Sempre utilizzando XSLT è possibile visualizzare gli indici
per la navigazione ed i documenti XML.
Il livello di interoperabilità richiesto prevede che si possa prendere la base
documentaria di un gruppo (XML + RDF), applicargli il meccanismo di visualizzazione
di un altro gruppo (i fogli XSLT) ed ottenere un risultato soddisfacente, cioè
che riesca a mostrare una parte significativa dei contenuti dei documenti.
Questo è possibile solo se tutti i gruppi concordano su due punti:
- un vocabolario comune da adottare per i loro documenti XML, in modo che tutti
i fogli XSLT possano assumere la presenza di certe tag e quindi essere in
grado di mostrare almeno il loro contenuto.
- una struttura comune per la creazione del thesaurus per la navigazione dei
documenti, in modo da permettere al foglio XSLT di un gruppo di visualizzare
il thesaurus di un altro gruppo.
Verranno pertanto stabilite delle tag obbligatorie che tutti i documenti XML dovranno
avere: saranno il nucleo minimo di informazioni che tutti i meccanismi di visualizzazione
riusciranno a mostrare se applicati a basi documentarie di altri gruppi. Inoltre verrà
proposto un insieme di tag opzionali: non è richiesto che tutti i documenti le
contengano, ma se un documento presenta quelle informazioni deve usare quelle tag per evidenziarle
e non altre.
|
Tutti i documenti devono avere queste tag (non prive di contenuto):
Nome |
Tipo |
Descrizione |
role |
attributo |
Identifica alcuni elementi fondamentali del documento, per garantire un livello
minimo di interoperabilità tra i diversi gruppi.
I valori che può assumere questo attributo sono:
id - identifica l'oggetto del documento.
Ogni documento deve contenere almeno un elemento
marcato con l'attributo role="id" . L'elemento può
contenere testo semplice o altri elementi inline. In fase di visualizzazione
verrà mostrato il contenuto dell'elemento (nel caso sia solo testo),
o la concatenazione del testo dei suoi figli.
description - identifica il testo principale del documento.
Ogni documento deve contenere un solo elemento
marcato con l'attributo role="description" .
|
topic |
elemento |
Contiene la categoria di appartenenza del documento (ad esempio "Gruppi musicali", "Chitarre", ...).
L'elemento deve contenere un nodo testuale; le implementazioni possono aggiungere
altri nodi figli che potranno essere ignorati da chi non li conosce.
|
Non è richiesto che i documenti contengano queste tag. Tuttavia, nel caso
in cui i documenti posseggano queste informazioni sono tenuti ad utilizzare queste
tag per individuarle e non altre.
Dove non è specificato diversamente, le tag seguenti devono racchiudere del testo
semplice; possono racchiudere al loro interno altri elementi che verranno ignorati
dalle implementazioni che non li hanno previsti.
Nome |
Tipo |
Descrizione |
artist |
elemento |
E' un elemento strutturato: contiene vari elementi contenenti varie informazioni su un certo artista
(ad es. artist_name , artist_picture , etc...).
E' necessario che contenga almeno l'elemento artist_name .
|
artist_name |
elemento |
Contiene il nome di un musicista. Può essere una stringa semplice
oppure essere composto da sotto-elementi (ad es. <nome> e <cognome>),
nel qual caso deve essere possibile visualizzare la concatenazione del loro
contenuto mantenendo il senso.
|
artist_picture |
elemento |
Contiene l'URI (relativa o assoluta) della foto di un artista |
label |
elemento |
Contiene l'etichetta discografica |
genre |
elemento |
Contiene il genere musicale |
album |
elemento |
E' un elemento strutturato: contiene vari elementi contenenti varie informazioni su un certo album
(ad es. album_type , tracklist , etc...).
E' necessario che contenga almeno l'elemento album_title .
|
album_title |
elemento |
Contiene una stringa indicante il titolo di un album.
|
album_type |
elemento |
Contiene una stringa che specifica il tipo di album (es. LP, colonna sonora, ...). |
guitar
piano
drums
bass
keyboards
sax
trumpet
|
elemento |
Sono elementi strutturati che contengono ulteriori elementi con informazioni
relative ad un particolare strumento (ad es. potrebbe contenere un elemento
descrittivo ed un elemento di tipo immagine).
|
guitar_img
piano_img
drums_img
bass_img
keyboards_img
sax_img
trumpet_img
|
elemento |
Contiene l'URI (relativa o assoluta) dell'immagine del relativo strumento. |
song |
elemento |
Elemento strutturato. Contiene almeno un elemento song_title ed altri elementi,
che possono essere ignorati, con ulteriori informazioni sul brano musicale.
|
song_title |
elemento |
Contiene una stringa che specifica il titolo di un brano musicale |
tracklist |
elemento |
Contiene una sequenza di elementi song |
date |
elemento |
Contiene una data. Bisogna precisare la data contenuta dall'elemento
nell'attributo norm , in forma normalizzata (AAAA-MM-GG).
Se si vuole indicare solo un anno, o un anno ed un mese, bisogna
impostare a 00 i valori non utilizzati.
Esempi:
- <date norm="2002-05-07">7/05/2002</date>
- <date norm="2002-00-00">2002</date>
|
cover |
elemento |
Contiene l'URI (relativa o assoluta) dell'immagine di una copertina di un album |
manufacturer |
elemento |
Contiene il nome di un produttore di strumenti musicali |
series |
elemento |
Contiene la serie di uno strumento musicale |
model |
elemento |
Contiene il modello di uno strumento musicale |
group |
elemento |
Elemento strutturato; contiene ulteriori elementi che specificano le informazioni
del gruppo musicale.
Un elemento obbligatorio è group_name .
|
group_name |
elemento |
Contiene una stringa indicante il nome di un gruppo musicale |
biography |
elemento |
Contiene la biografia di un gruppo o di un musicista.
Può avere un content model misto; in ogni caso la concatenazione del contenuto
di tutte le sue foglie deve formare un testo di senso compiuto, ad esempio:
Nel <date norm="1953-00-00">1953</date> nacque <artist_name>Caio</artist_name>...
|
Ogni implementatore può decidere di utilizzare nuove tag/attributi
qualora quelli discussi nei paragrafi precedenti non fossero sufficienti e/o
adatti ai suoi bisogni (rispettando comunque le indicazioni riportate nella
descrizione delle tag obbligatorie/opzionali).
Per cercare di migliorare l'interoperabilità anche con elementi non
conosciuti è possibile specificare alcuni attributi che ne individuino
alcune caratteristiche utili.
L'uso di elementi non standardizzati, seppur dotati di questi attributi, è
sconsigliato qualora esistesse già una tag con la stessa funzione semantica.
Attributo |
Valori possibili |
Descrizione |
href |
movie | image | audio | document | link |
Indica che l'elemento contiene l'URI (relativo od assoluto) di:
-
movie - un filmato
-
image - un'immagine
-
audio - un file audio
-
document - un altro documento
-
link - un link di altro tipo
|
|
Non rientra nello scope del working group definire esattamente la struttura dei documenti
XML prodotti dai vari gruppi.
Vi sono però alcune linee guida che tutti i documenti
devono rispettare per garantire un certo livello di interoperabilità tra i vari
progetti:
- la root dei documenti non può essere un elemento qui descritto, è necessario
introdurre un altro elemento
- tutti i documenti dovranno contenere un elemento marcato con l'attributo
role="description" , contenente il testo principale del documento
(potrebbe un elemento biography per chi tratta di artisti o
gruppi musicali, review per chi tratta di recensioni, ecc...)
- tutti i documenti dovranno contenere almeno un elemento significativo marcato
con l'attributo
role="id"
- tutti i documenti dovranno contenere almeno un elemento
topic
- se non specificato altrimenti, le tag opzionali descritte nel paragrafo 2.2 dovrebbero
contenere solo testo o tag che possono essere ignorate
- è fortemente sconsigliato costruire strutture complesse (liste, tabelle, ...) utilizzando
soltanto delle tag descritte in questo documento, a meno che ciò non sia previsto (ad es.
in
tracklist )
poichè potrebbe causare notevoli problemi di interoperabilità.
Per esempio, è scorretta una lista costruita in questo modo e posta nella root di un
documento:
<artist>Jimi Hendrix</artist>
<artist>Mark Knopfler</artist>
<artist>Steve Vai</artist>
mentre invece è corretto racchiuderla in un elemento apposito:
<guitarists>
<artist>Jimi Hendrix</artist>
<artist>Mark Knopfler</artist>
<artist>Steve Vai</artist>
</guitarists>
in questo modo chi non conosce <guitarists> può semplicemente ignorarlo
evitando di mostrare all'utente una serie di dati confusa (non conoscendo la struttura
dei dati è difficile visualizzarli in modo utile).
Nell'appendice A sono presenti una serie di documenti d'esempio (aderenti alle specifiche illustrate in questo
documento) che possono essere usati per testare i propri meccanismi di visualizzazione.
|
Il thesaurus deve essere organizzato come una serie di record class
così specificati:
Elemento |
Descrizione |
<a:class rdf:ID="cat_id"> |
Contiene le relazioni di una categoria del thesaurus con altre categorie e
la lista di documenti appartenenti alla categoria.
|
<a:label> |
Contiene l'etichetta associata ad ogni class . E' una foglia obbligatoria
dell'elemento class e dev'essere unica per ogni categoria.
|
<a:subClassOf rdf:resource="#cat_id"/> |
Indica che la classe è una sottoclasse di quella specificata. Ogni
classe può essere sottoclasse di 0, 1 o più classi.
|
<a:partOf rdf:resource="#cat_id"/> |
Indica che la classe ha una relazione di appartenenza ad un'altra classe.
|
<a:seeAlso rdf:resource="#cat_id"/> |
Indica l'affinità della classe con un'altra specificata. Rappresenta il
"vedi anche" delle Pagine Gialle.
|
<a:see rdf:resource="#cat_id"/> |
Rimanda la descrizione della classe ad un'altra specificata. Rappresenta il
"vedi" delle Pagine Gialle.
|
<a:related a:label="relazione" rdf:resource="#cat_id"/> |
Permette di specificare ulteriori relazioni con altre classi. L'attributo obbligatorio
a:label deve contenere una stringa indicante il tipo di relazione, ad esempio:
<a:class rdf:ID="sc">
<a:label>Stratocaster</a:label>
<a:subClassOf rdf:resource="#fender"/>
<a:related a:label="usate da" rdf:resource="#hendrix"/>
</a:class>
|
<a:doc rdf:resource="URI"/> |
Indica che il documento "URI" fa parte della classe.
|
Nota: i nomi sopra descritti col prefisso "a:" fanno parte del namespace individuato dall'URI
http://www.cs.unibo.it/~tellini/ltw/thesaurus/1.0
|
Al fine di poter applicare facilmente il meccanismo di visualizzazione di un
gruppo alla base documentaria di un altro, si consiglia di gestire (server-side)
le richieste dei documenti seguendo queste indicazioni:
|
Documento minimale
Il minimo indispensabile per essere aderente alle specifiche:
<doc>
<titolo role="id">titolo</titolo>
<testo role="description">bla bla bla</testo>
<topic>Pigrizia</topic>
</doc>
Un esempio completo
Un esempio di documento completo, contenente alcune tag private oltre a quelle
descritte in questo documento:
<?xml version="1.0" encoding="UTF-8"?>
<musica xmlns:html="http://www.w3.org/HTML/1998/html4">
<topic>Recensioni Musicali</topic>
<artist_name role="id">Queen</artist_name>
<album_title role="id">Greatest Hits</album_title>
<date mask="yyyy" role="id">1992</date>
<rating href="">images/Queen/Greatest_Hits/st_r9.gif</rating>
<genre>Rock</genre>
<tones>Elaborate, Outrageous, Complex,
Freewheeling, Rousing, Witty, Rowdy, Campy, Theatrical, Silly</tones>
<styles>Album Rock, Pop/Rock, Glam Rock, Prog-Rock/Art Rock, Hard Rock</styles>
<type>compilation</type>
<time>57:24</time>
<cover>images/Queen/Greatest_Hits/d359525l4av.jpg</cover>
<review role="description">
<html:P>Queen released an album called Greatest Hits (Elektra 564),
which contained 14 songs that chronicled singles from 1973 to 1981.</html:P>
<html:P> In 1990, Hollywood Records acquired CD rights to Queen's
catalog, by which time the Elektra Greatest Hits had gone out of print on
vinyl.</html:P>
<html:P> Hollywood released Classic Queen, a compilation that
covered Queen's hits from 1982 to its demise in 1991, with a few older
songs thrown in.</html:P>
<html:P> Then it released this album, its version of Greatest Hits,
which is a 17-track
album that deletes the songs from the first Greatest Hits that appeared
on Classic Queen (among them Queen's biggest hit, "Bohemian Rhapsody") and
adds a few tracks from the
1973-1982 era that did not appear on the original release.</html:P>
<html:P> The Elektra Greatest Hits LP had a superior selection,
but it's gone now,
so you're stuck with this.</html:P>
<html:P> (New fans don't seem to have minded, as this new Greatest
Hits sold better than the first one.</html:P>
<reviewer>William Ruhlmann</reviewer>
</review>
<tracklist>
<song>
<song_title>We Will Rock You</song_title>
<tracknumber>1.</tracknumber>
<trackautor>May</trackautor>
<tracktime>2:01</tracktime>
</song>
<song>
<song_title>We Are the Champions</song_title>
<tracknumber>2.</tracknumber>
<trackautor>Mercury</trackautor>
<tracktime>3:00</tracktime>
</song>
<song>
<song_title>Another One Bites the Dust</song_title>
<tracknumber>3.</tracknumber>
<trackautor>Deacon</trackautor>
<tracktime>3:32</tracktime>
</song>
</tracklist>
<related>
<cover>images/Greatest_Hits/d13359e34q5.jpg</cover>
<cover>images/Greatest_Hits/d11180xp4x2.jpg</cover>
<album>
<artist_name>Blue Murder</artist_name>
<album_title>Nothin' But Trouble</album_title>
</album>
<album>
<artist_name>The Big F</artist_name>
<album_title>Is</album_title>
</album>
</related>
<credits>
<person credit="Producer">Roy Thomas Baker
</person>
<person credit="Annotation">Jim Jenkins
</person>
<person credit="Design">Richard Gray
</person>
</credits>
</musica>
Esempio di thesaurus
<rdf:RDF xmlns:a="http://www.cs.unibo.it/~tellini/ltw/thesaurus/1.0"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns">
<a:class rdf:ID="fender">
<a:label>Fender</a:label>
<a:seeAlso rdf:resource="#gibson"/>
</a:class>
<a:class rdf:ID="sc">
<a:label>Stratocaster</a:label>
<a:subClassOf rdf:resource="#fender"/>
<a:related a:label="usate da" rdf:resource="#hendrix"/>
<a:doc a:label="Stratocaster" rdf:resource="cgi.php?doc=stratocaster.xml"/>
</a:class>
<!-- vari altri nodi a:class qui... -->
</rdf:RDF>
|
- Trasformato l'elemento artist in elemento strutturato
- Aggiunto l'elemento artist_name
- Cambiato <a:class rdf:about="id"> in <a:class rdf:ID="id">
- Aggiunto un esempio di tesauro nella test-suite
- Cambiate le specifiche di <date>
|