[ltw-2002-musica] Draft #9

  • From: Simone Tellini <tellini@xxxxxxxxxxx>
  • To: ltw-2002-musica@xxxxxxxxxxxxx
  • Date: Thu, 16 May 2002 14:38:02 +0200

Dategli un'occhiata e commentate se necessario.

-- 
Simone Tellini
http://tellini.info
Title: Semantic Search Engine

Semantic Search Engine, Musica

Working Draft #9, 16/05/2002

Reperibilità: http://www.cs.unibo.it/~tellini/ltw/
Redattore: Simone Tellini (tellini@xxxxxxxxxxx)

Status di questo documento

Questo documento e' un Working Draft: il suo contenuto può essere aggiornato, sostituito o reso obsoleto da altri documenti in qualunque momento.

Abstract

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.

Sommario

1 Introduzione

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:

  1. Vengono individuati 50-100 documenti dalla struttura omogenea.
  2. I documenti sono trasformati (attraverso un programma o script) in una serie di documenti XML.
  3. Attraverso XSLT, dai documenti XML vengono estratte le informazioni necessarie alla creazione di un indice navigabile in formato RDF.
  4. 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:

  1. 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.
  2. 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.

2 Vocabolario dei documenti

2.1 Tag obbligatorie

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.

2.2 Tag opzionali

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>...

2.3 Estensioni

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

3 Struttura dei documenti

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.

3 Thesaurus

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

4 Gestione dei documenti

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:

  • deve essere gestito l'argomento style=URL, indicante il foglio di stile XSLT da applicare al documento richiesto. Ad esempio:

    http://www.miosito.com/progetto/serve.php?doc=doc1.xml&style=http://www.tuosito.com/style.xsl
    (nota: il valore dell'attributo deve essere opportunamente codificato secondo le specifiche HTTP, a differenza dell'esempio)

  • nel foglio di stile bisogna ricordarsi di aggiungere l'argomento style=uri_del_proprio_foglio_xslt a tutte le URI che vengono utilizzate per la navigazione tra i documenti. Le URI contenute nei documenti XML potrebbero contenere già dei parametri (es. script.php?doc=a.xml) oppure essere riferimenti diretti a documenti (es. a.xml) - il foglio di stile XSLT deve quindi aggiungere &style=URI nel primo caso e ?style=URI nel secondo (è sufficiente controllare se è presente il carattere ? nell'URI)
  • sarebbe gradito l'utilizzo di un unico foglio di stile XSLT in grado di mostrare sia i documenti sia il thesaurus, in modo da poter navigare facilmente in un sito di un gruppo diverso dal proprio utilizzando le regole precedenti; è anche possibile usare due fogli di stile, uno per il tesauro ed uno per documenti, ricordandosi che il foglio XSLT del tesauro deve produrre link con il riferimento al foglio di stile usato per i documenti quando necessario

Appendice A: Test-suite

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>

Appendice B: Cambiamenti dalla versione precedente

  • 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>

Other related posts:

  • » [ltw-2002-musica] Draft #9