1.2. Paradigmi per l`interrogazione visuale

UNIVERSITÀ DEGLI STUDI DI BARI
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Scienze dell’Informazione
___________________________________________________________________
Tesi di Laurea
Generazione automatica di metafore per le
interfacce utente di database multimediali
Relatori:
Chiar.mi Prof.ri
M.F. COSTABILE
D. MALERBA
Laureanda:
A. LOCONSOLE
_______________________________________________________________________
ANNO ACCADEMICO 1997/1998
INDICE
INTRODUZIONE
5
1. Sistemi di interrogazione visuale
8
1.1. Introduzione
8
1.2. Paradigmi per l’interrogazione visuale
9
1.3. VQS Multiparadigma
15
1.4. Realtà Virtuale
17
1.4.1. Realtà virtuale immersiva, non immersiva e aumentata
18
1.4.2. Realtà virtuale come nuovo paradigma di interazione
20
1.5. Un linguaggio per la simulazione di mondi virtuali
2. Problemi di soddisfacimento dei vincoli
22
25
2.1. Introduzione
25
2.2. Tecniche di soluzione per problemi combinatori e discreti
28
2.3. L’implementazione software
31
2.4. Applicazione del Prolog alla etichettatura di immagini
34
2.4.1. Determinazione dei vincoli
36
2
3. Un sistema di visualizzazione di dati in realtà virtuale
40
3.1. Introduzione
40
3.2. Il sistema Virgilio
41
3.3. Uso di metafore in Virgilio
45
3.4. Architettura di Virgilio
49
3.5. Architettura del Query Management Tool
53
4. Generazione dello structure tree
56
4.1. Introduzione
56
4.2. Definizione di structure tree
57
4.3. Query Repository
62
4.4. Strumenti utilizzati
64
4.4.1. Flex
65
4.4.2. Bison
67
4.5. Realizzazione dello Structure Tree Generator
70
4.6. Esecuzione del programma STG
71
4.7. Esempi di subquery create dal programma STG
75
5. Generazione automatica delle metafore in Virgilio
78
5.1. Introduzione
78
5.2. Requisiti per il mapping
79
5.3. Classificazione degli oggetti virtuali
80
3
5.3.1. Il mondo virtuale “palazzo”
83
5.4. Definizione della metafora come un problema di
soddisfacimento di vincoli
85
5.5. Il Metaphor Definition Tool
90
5.6. Esempio delle scene finali in VRML
91
5.7. Conclusioni
94
6. BIBLIOGRAFIA
96
Appendice
101
4
INTRODUZIONE
Uno dei più importanti problemi che bisogna risolvere per una
soddisfacente utilizzazione del calcolatore è l’identificazione di
appropriate modalità di comunicazione con esso. Quanto più il
calcolatore entra nella vita di tutti i giorni tanto più il problema diventa
reale. L’interfaccia utente di un sistema software è quella componente
che ha la funzione di rendere l’interazione utente-calcolatore la più
efficace possibile. Nel campo delle interfacce per basi di dati, si
propone in questa tesi di far uso di una modalità basata su una
rappresentazione a Realtà Virtuale. In generale la Realtà Virtuale ha lo
scopo di costruire un mondo virtuale, il più fedele possibile alla realtà,
in cui gli oggetti sono presi dal mondo reale e le possibili operazioni
sono simili a quelle effettuate nella realtà. L’utilizzo di Realtà Virtuale
per le interfacce di basi di dati permetterebbe quindi un approccio
alquanto immediato, visto che gli oggetti presenti nella base di dati
verrebbero rappresentati, nei limiti in cui è possibile, come sono nella
realtà o attraverso metafore molto significative per l’utente. Rispetto
ad altre forme di visualizzazione di informazioni, con la Realtà
Virtuale l’utente è agevolato perché i dati sono visualizzati mediante
oggetti familiari. Nella Realtà Virtuale infatti la percezione dell’utente
viene direttamente stimolata.
Questa tesi si inserisce nel progetto Virgilio, cui collaborano il GMD
IPSI (German National Research Center for Information Technology-
5
Integrated Publication and Information System Institute) di Darmstadt
e il Dipartimento di Informatica dell’Università di Bari.
Virgilio è un sistema basato su Realtà virtuale, sviluppato per essere
uno strumento di esplorazione general pourpose per dati altamente
strutturati. Virgilio visualizza i risultati di una query ad una base di
dati generando scene in Realtà Virtuale e sfruttando metafore
appropriate per trarre vantaggio dalla conoscenza sugli oggetti del
mondo reale, riducendo così il carico cognitivo nel processo di
assimilazione dell’informazione.
Il lavoro di questa tesi riguarda l’analisi e lo sviluppo di due
componenti dell’architettura di Virgilio, il Query Management Tool ed
il Metaphor Definition Tool. Esso è stato svolto in parte presso
l’Università di Bari e in parte presso il GMD-IPSI durante un
soggiorno di quattro mesi.
Nel primo capitolo della tesi vengono illustrati differenti paradigmi
visuali di interazione con basi di dati. In particolare viene presentato
l’approccio basato su RV ed un linguaggio (il VRML) che consente la
simulazione dei mondi virtuali.
Nel secondo capitolo si illustrano le tecniche per risolvere i problemi
di soddisfacimento dei vincoli poichè per la generazione delle
metafore si implementano delle procedure automatiche che sfruttano la
strategia di ricerca depth first degli interpreti Prolog per risolvere un
tipico problema di soddisfacimento dei vincoli.
6
Nel terzo capitolo si introduce il progetto Virgilio e si discutono le
metafore nell’interfaccia utente ed il loro utilizzo nel sistema Virgilio;
infine è presentata l’architettura di Virgilio.
Nel quarto capitolo si descrive una componente dell’architettura di
Virgilio, lo Structure Tree Generator ed il processo che produce uno
structure tree da una query SQL posta ad un database relazionale a
oggetti. Lo Structure Tree Generator calcola il risultato della query
interrogando il database, e quindi trasforma il risultato in una nested
relation attraverso l’analisi della struttura della query SQL, generando
quindi il corrispondente structure tree.
Nel quinto capitolo si descrive un’altra componente dell’architettura di
Virgilio, il Metaphor Definition Tool, che è stato sviluppato nella tesi e
si presenta una procedura completamente automatica per definire la
metafora che sarà sfruttata nella costruzione della scena in RV.
L’implementazione di questa procedura sfrutta la strategia di ricerca
depth first degli interpreti Prolog per risolvere un tipico problema di
soddisfacimento di vincoli, cioè problemi combinatori e discreti
applicati alla etichettatura di immagini.
Un sentito ringraziamento viene rivolto ai Prof.ri M. F. Costabile e D.
Malerba dell’Università di Bari, ai Prof.ri E.J. Neuhold, Dieter
Boecker e Matthias Hemmje del GMD-IPSI ed A. Paradiso, M.
L’Abbate per il loro costante aiuto e la preziosa collaborazione offerti
nella realizzazione di questo lavoro. Si ringraziano inoltre tutti coloro
che hanno fornito un supporto tecnico e morale.
7
Sistemi di interrogazione visuale
Capitolo primo
1.
Sistemi di interrogazione visuale
1.1.
Introduzione
Si avverte sempre di più la necessità di rendere le interfacce di accesso
alle basi di dati facili da usare, in modo che anche utenti poco esperti
possano accedere alle informazioni ivi contenute senza troppe
difficoltà e senza conoscerne la struttura [Catarci & Costabile, 1996].
Per accedere alle informazioni contenute nelle basi di dati, sono stati
definiti appositi linguaggi, chiamati Linguaggi di Interrogazione.
All’inizio
la
maggior
parte
di
questi
erano
linguaggi
di
programmazione. Col tempo si è cercato di definire dei linguaggi
comprensibili e usabili da gente che non è molto pratica dei calcolatori.
L’orientamento generale è stato quello di migliorare l’interfaccia che
c’è tra l’utente e la base di dati, in modo da svincolare il più possibile
l’utente dal conoscere la base di dati vera e propria ed operare solo
tramite l’interfaccia. È chiaro perciò che l’interfaccia deve poter
mostrare il contenuto della base di dati in modo chiaro e semplice da
interpretare da chiunque, e permettere di formulare interrogazioni
senza dover conoscere o imparare alcun linguaggio. Sono così nati i
Linguaggi di Interrogazione Visuale (VQL), linguaggi cioè che usano
8
Sistemi di interrogazione visuale
la rappresentazione visuale per mostrare il contenuto della base di dati
ed esprimere le relative interrogazioni. Essi sono inoltre dotati di
funzionalità per facilitare l’interazione utente-calcolatore e la
visualizzazione dei dati. Sistemi che implementano tali linguaggi
prendono il nome di Sistemi di Interrogazione Visuale (VQS) [Catarci
et al., 1997]. Attualmente, la maggior parte dei VQL si basa sui
seguenti formalismi visuali: moduli, diagrammi, icone e si sta cercando
di utilizzare una nuova tecnica di rappresentazione visuale: la Realtà
Virtuale.
1.2.
Paradigmi per l’interrogazione visuale
Si è già visto quali sono i formalismi visuali su cui si basano la
maggior parte dei VQL: moduli, diagrammi, icone [Catarci et al.,
1997]. Verranno ora descritti singolarmente.
Il paradigma basato su moduli (form based) è il primo tentativo
effettuato per lasciare lo spazio testuale monodimensionale e passare
ad una rappresentazione bidimensionale, sfruttando appunto la
bidimensionalità dello schermo [Catarci et al., 1997]. La sua principale
caratteristica è quella di essere una rappresentazione strutturata
corrispondente all’astrazione di un modulo di carta, già familiare alle
persone nelle loro attività quotidiane. Un modulo è anche visto come
una generalizzazione di una tabella, ed in questo l’utente è facilitato
nell’interazione con il calcolatore per la naturale tendenza che egli ha
9
Sistemi di interrogazione visuale
nell’uso e/o nell’organizzazione dei dati in strutture regolari come le
tabelle. Un modulo è una collezione di oggetti aventi la stessa
struttura. Può essere visto come una griglia rettangolare le cui
componenti sono una qualunque combinazione di celle o gruppi di
celle. Ogni riga rappresenta un oggetto, ogni colonna indica proprietà
comuni degli oggetti. Le relazioni possono esistere tra singoli elementi
(l’unità più piccola di informazione è una cella), tra sottoinsiemi di
elementi o tra gruppi di elementi. Tipicamente, le query in tale
paradigma si effettuano riempiendo i campi di un modulo. Si consideri
come esempio il QBE (Query By Example) [Zloof, 1976]. Sullo
schermo viene presentato all’utente lo schema della base di dati,
cosicché l’utente non deve più ricordare il nome degli attributi e/o
delle relazioni, ed interroga la base di dati riempiendo i campi di tale
schema. Una condizione di Select viene scritta nella casella
corrispondente all’attributo interessato dalla condizione (età>50 in
Figura 1.1 o sesso=F e città=Bari in Figura 1.2). Una P in una casella
indica invece una project su tale attributo.
PAZIENTE
NOME
COGNOME
DATA DI NASCITA
ETA’
P.
P.
P.
>50
SESSO
INDIRIZZO
CITTÀ’
P.
Figura 1.1 Esempio di query nel QBE: “Visualizza il nome, il
cognome, la data di nascita e la residenza di tutti i pazienti che abbiano
più’ di 50 anni”.
10
Sistemi di interrogazione visuale
PAZIENTE
NOME
COGNOME
P.
P.
DATA DI NASCITA
ETA’
SESSO
F
INDIRIZZO
CITTÀ’
BARI
Figura 1.2 Esempio di query nel QBE: “Visualizza il nome ed il
cognome di tutti i pazienti donna residenti a Bari”.
Un diagramma è una modalità di rappresentazione dell’informazione
che fa uso di elementi grafici, in genere semplici figure geometriche
(quadrati, rettangoli, cerchi, rombi, ecc....), codificando l’informazione
tramite la posizione relativa e la grandezza di tali figure geometriche
[Catarci et al., 1997]. La rappresentazione diagrammatica fa appunto
uso di diagrammi per rappresentare il contenuto della base di dati,
associando ad ogni figura geometrica uno specifico concetto. Un
diagramma è un insieme di nodi connessi da archi. In questa maniera è
possibile rappresentare un insieme di elementi e di relazioni binarie tra
essi. Tale paradigma quindi si presta bene per rappresentare le
relazioni tra oggetti, che vengono appunto esplicitate per mezzo di
connessioni tramite archi. Come conseguenza, la query può essere
naturalmente espressa manipolando direttamente gli elementi dei
diagrammi e navigando tra essi: tipicamente si selezionano gli elementi
seguendo i percorsi che li uniscono. Un diagramma, inoltre, non è
statico, ma può essere manipolato per includere altre relazioni. Il QBD
(Query By Diagram, [Angelaccio et al., 1990]) è un sistema che fa uso
del paradigma basato su diagrammi. Esso si basa su di un modello
concettuale quale il modello Entità-Relazione per rappresentare la
parte intensionale della base di dati e utilizza un ambiente
completamente grafico come interfaccia utente amichevole con il
11
Sistemi di interrogazione visuale
sistema. Sullo schermo viene presentato il diagramma rappresentante il
contenuto della base di dati e l’utente formula la query selezionando le
entità e le relazioni coinvolte in tale query. Si supponga di voler
conoscere tutte le persone che lavorano nella stessa città in cui vivono.
Per formulare tale query, si selezioneranno in sequenza l’entità città, la
relazione lavora, l’entità persona, la relazione risiede e di nuovo
l’entità città, dando luogo al diagramma di Figura 1.3. Fatto questo, si
passa ad esprimere le condizioni su ogni oggetto (nome della città in
cui lavora = nome della città in cui vive), indicando anche quali
attributi includere nel risultato.
è n a ta in
P ER SO N A
r is ie d e
C IT T A ’
la v o r a
p o s s ie d e
P R O P R IE T A ’
Figura 1.3 Diagramma dopo la selezione delle entità coinvolte nella
query.
Un’icona, nel campo dei calcolatori, è un’immagine segmentata e
stilizzata, in cui si distingue la parte pittorica da quella semantica. La
prima è ciò che viene visualizzato sullo schermo, la seconda il
significato che tale immagine rappresenta. Un’icona può rappresentare,
nel rispettivo paradigma, sia oggetti della base di dati sia operazioni
12
Sistemi di interrogazione visuale
che è possibile effettuare su di essi. Poiché si devono visualizzare
anche concetti astratti, oltre a quelli reali, per correlare le due parti,
quella pittorica e quella semantica, si ricorre a figure retoriche quali ad
esempio, l’analogia, la convenzione, la metonimia ecc.... La realtà di
interesse nel paradigma iconico viene presentata per mezzo di icone, e
la query viene effettuata selezionando e combinando tra loro le icone.
Mentre un diagramma riesce a rappresentare bene le relazioni esistenti
tra oggetti, lo scopo principale di un’icona è quello di rappresentare un
certo concetto, in modo che l’utente riesca a comprendere facilmente
ciò che tale icona sta a significare, per poterla manipolare . Un sistema
basato su icone è diretto soprattutto ai cosiddetti utenti casuali che non
hanno familiarità con un modello dei dati e potrebbero trovare difficile
interpretare un diagramma Entità Relazione. Il QBI (Query By Icons)
[Massari et al., 1995] è un sistema di interrogazione visuale per una
base di dati che fa uso di icone sia per la visualizzazione del contenuto
informativo della base di dati che per la formulazione della query. Esso
si differenzia dagli altri sistemi basati su icone sostanzialmente per il
modo in cui le icone sono definite ed usate per esprimere concetti.
Infatti per rappresentare un oggetto (entità o attributo) della base di
dati un icona nel QBI è composta dai seguenti elementi grafici :
 l’immagine: è la parte grafica che rappresenta metaforicamente
l’oggetto;
 la descrizione: è una frase in linguaggio naturale, generata
automaticamente dal sistema, che descrive l’oggetto ;
13
Sistemi di interrogazione visuale
 l’etichetta: serve per distinguere due icone che hanno la stessa
immagine (visto che la descrizione non sempre è visualizzata);
 la forma: è la figura geometrica avente dei contorni che permettono
di combinare solo icone simili (ad esempio, un’icona rappresentante
una stringa (nome di una persona) avrà una forma diversa da una
rappresentante un intero (età di una persona)).;
 la struttura: indica la cardinalità dell’oggetto .
Una query nel QBI si effettua innanzitutto selezionando le entità e gli
attributi coinvolti nella query, poi si impongono le condizioni su questi
e infine si indicano quali degli attributi stampabili faranno parte del
risultato. Nell’imporre le condizioni ci viene in aiuto la forma delle
icone. Si possono infatti porre condizioni solo su icone che hanno la
stessa forma. Per far questo, si trascinano le icone interessate nell’area
delle condizioni, e si seleziona poi l’operazione da effettuare su di
esse.
La gran parte dei VQS adottano un’unica rappresentazione visuale. In
seguito si sono sviluppati dei sistemi ibridi, che possono essere divisi
in due categorie: quelli che hanno un’unica interfaccia che fa uso di
formalismi visuali di tipi diversi; e quelli cosiddetti multiparadigma,
che permettono diversi paradigmi di interazione consentendo
eventualmente il passaggio da un paradigma all’altro durante la
formulazione della query. In alcuni sistemi è anche possibile
14
Sistemi di interrogazione visuale
mantenere una storia delle varie query parziali che porteranno poi alla
query finale.
1.3.
VQS Multiparadigma
Un sistema che utilizza un unico formalismo visuale, è un sistema
piuttosto limitativo. Esso restringe le classi di utenti che possono trarre
vantaggio da un tale sistema. L’andamento attuale è quello di costruire
sistemi che offrano più paradigmi di interazione, ognuno con
caratteristiche differenti, cosicché ogni utente, sia esso principiante o
esperto, potrà scegliere il paradigma più adatto per interagire con il
sistema. Una tale interfaccia multiparadigma, è stata proposta in
[Catarci et al, 1996], in cui la selezione di un appropriato paradigma
viene effettuata in base ad un modello di utente che descrive l’interesse
ed il livello dell’utente. Questo perché per loro natura, le persone
hanno comportamenti non prevedibili, interessi vari e abilità diverse.
Dal momento che non si possono ricavare informazioni a priori sul tipo
di utente che di volta in volta interagirà col sistema, l’interfaccia sarà
resa personalizzabile, creando un modello per ogni utente che vi
interagisce. Il sistema stesso è in grado di collezionare dati che
vengono aggiornati dinamicamente, per poter suggerire all’utente il
paradigma di interazione più appropriato in base al suo livello di
abilità e alle sue necessità. Naturalmente, l’utente ha sempre la facoltà
di cambiare il paradigma in un altro tra quelli disponibili. In Catarci et
al., (1997) è possibile trovare una suddivisione degli utenti in classi in
15
Sistemi di interrogazione visuale
base a determinati criteri (frequenza di interazione, tipo di query,
ecc...).
Gli utenti casuali e quelli inesperti, difficilmente sono in grado di
formulare direttamente la query che li soddisfa in pieno al primo
tentativo, sia perché non hanno una conoscenza precisa del contenuto
della base di dati, sia perché non hanno familiarità con il linguaggio di
interrogazione. Essi inoltre, non accettano volentieri la fase di
apprendimento di un linguaggio di interrogazione, soprattutto quando
non hanno un background tecnico per poter capire i meccanismi di
interazione con il sistema. In questo caso, l’utente preferisce formulare
la query in maniera progressiva, per passi, effettuando prima domande
più generali, ottenendo risultati preliminari, e poi rivisitando questi
ultimi per raffinare ulteriormente la query fino ad ottenere i dati che gli
interessano [Chang et al., 1994]. Questo processo prende il nome di
query progressiva, un processo in cui si ha un obiettivo iniziale da
raggiungere (ottenere specifiche informazioni), che può cambiare nel
corso della formulazione della query, o anche spostando l’obiettivo su
informazioni diverse ma collegate con quello che era l’obiettivo
iniziale.
La query progressiva è la modalità più tipica per interrogare una base
di dati per un utente novizio, occasionale, cioè un utente che utilizza il
sistema raramente. Quando una persona cerca specifiche informazioni
in una nuova città, potrebbe consultare una cartina di quella città,
probabilmente prendendo come punti di riferimento un parco (una
grande area verde) o una stazione ferroviaria (lunghe linee parallele
che rappresentano i binari), e gradualmente raggiungere l’indirizzo
cercato. Questa persona può poi tornare indietro nella ricerca di una
16
Sistemi di interrogazione visuale
fermata di autobus o metropolitana per vedere se un mezzo pubblico
può aiutarla nel raggiungimento di quel posto. Oppure, può cercare
un’area per parcheggio e decidere quindi se andare in auto o con mezzi
pubblici. Infine, può cercare altri punti di riferimento, come ad
esempio se ci sono negozi per comprare un regalo, ecc. Il processo che
è stato chiamato query progressiva, è simile al processo appena
descritto cioè una sorta di navigazione nella base di dati. Questo è un
approccio diverso da quello della teoria delle basi di dati, in cui la
query è rifinita gradatamente e i dati candidati ad essere il risultato
della query sono sempre più ridotti e specializzati. La progressione
della query è quindi monotona. Nel processo di query progressiva
invece, si vuole che la formulazione della query avvenga in
progressione, ma non in maniera monotona. Si vuole cioè che sia
possibile formulare la query in una progressione non-monotona.
1.4.
Realtà Virtuale
Negli ultimi tempi si sente sempre più spesso parlare di RV. Ma che
cosa è la RV? Per alcuni l’elemento chiave della definizione della RV
è l’interattività. In base a questa definizione, se si può usare un mouse
per navigare all’interno di un modello di una casa su uno schermo di
un calcolatore, allora si sta utilizzando la RV. Altri dicono che
l’interattività non basta e sostengono che una RV deve essere un
ambiente accessibile in rete che permetta a più persone di entrarvi
nello stesso tempo. Altri ancora limitano la RV a quegli ambienti che
17
Sistemi di interrogazione visuale
fanno uso di caschi i quali permettono agli utenti di essere “immersi”
in questi mondi artificiali. Vi sono poi quelli che affermano che anche
quel livello di immersione non è abbastanza per essere qualificato
come RV: si deve arrivare all’immersione totale dell’intero corpo.
1.4.1. Realtà virtuale immersiva, non immersiva e
aumentata
Non esiste quindi una definizione precisa di cosa sia la Realtà Virtuale.
Le idee a tale riguardo sono infatti ancora molto confuse. Più chiara e
con un consenso più unanime è invece la suddivisione di RV in base
alle varie modalità di interazione dell’utente con l’ambiente virtuale. In
base a tale modalità si parlerà di realtà virtuale immersiva, realtà
virtuale non immersiva, realtà virtuale aumentata [Del Vecchio,
1995; Robertson, 1993].
La
realtà
virtuale
immersiva
prevede
che
l’utente
venga
completamente “proiettato” in un mondo virtuale attraverso un
particolare equipaggiamento, quali un casco denominato HMD (Head
Mounted Display, dotato all’interno di due display LCD a colori, uno
per occhio e di un tracker magnetico che serve a capire dove l’utente
sta guardando) e guanti speciali o addirittura particolari dispositivi di
immersione che consentono di percepire il movimento dell’intero
corpo, che gli permettono di interagire con tale mondo come egli
18
Sistemi di interrogazione visuale
farebbe in quello reale. Si ha cioè un’immersione totale dell’utente nel
mondo virtuale.
Nel caso invece della realtà virtuale non immersiva, l’interazione
uomo-mondo virtuale avviene tramite i normali dispositivi di
input/output con i quali l’utente interagisce normalmente con il
calcolatore:
il
mondo
virtuale
viene
presentato
all’utente
visualizzandolo su normali monitor ed egli interagisce tramite tastiera,
mouse o joystick.
C’è chi sostiene che l’immersione totale da parte dell’utente nel mondo
virtuale è essenziale per garantire un’interazione utente-calcolatore
efficiente. C’è chi invece sostiene che questa possa avere effetti
negativi, perché la realtà virtuale immersiva ha come conseguenza un
isolamento dell’utente dal mondo reale e da ciò che lo circonda.
Questo isolamento può comportare un certo stress fisico e psicologico
che non tutti gli utenti potrebbero sopportare. Bisogna inoltre
considerare che un casco ha un suo peso ed un’ergonomia piuttosto
limitata, per cui dopo un certo lasso di tempo l’indossare tale casco
diventa un vero e proprio fastidio. Per di più uno dei maggiori
problemi della tecnologia attuale è che la risposta agli input dell’utente
presenta un certo ritardo, creando così confusione tra le azioni del
partecipante e quello che appare come il risultato conseguente. Questo
fenomeno causa il cosiddetto “mal di simulazione”, i cui sintomi sono
nausea, affaticamento visivo e disorientamento spaziale [Brill, 1995].
D’altronde, in molte applicazioni si può ottenere un ottimo risultato
anche con la realtà virtuale non immersiva, anche perché le tecniche di
interazione basate sull’utilizzo di tastiera e mouse sono molto più facili
19
Sistemi di interrogazione visuale
da imparare rispetto a quelle basate sull’uso di guanti speciali (come il
dataglove). Tutto questo senza contare che il costo di apparecchiature
quali elmetto e guanti non sono nemmeno paragonabili a quelli di
monitor, tastiere, mouse e joystick.
Si parla invece di realtà virtuale aumentata in quei casi in cui si fa
uso della realtà virtuale per “aumentare” la vista del mondo reale con
immagini generate dal calcolatore. Per far questo si utilizzeranno
particolari
dispositivi
denominati
HUD
(Head
Up
Display),
parzialmente trasparente, in grado di aumentare il campo visivo
dell’utente; un esempio può essere quello di un chirurgo che può
accedere in tempo reale ad immagini ed informazioni mediche relative
ad un paziente mentre lo sta operando.
1.4.2. Realtà virtuale come nuovo paradigma di
interazione
L’applicazione di tecniche di RV nel campo delle interfacce per basi di
dati hanno portato all’introduzione di un nuovo paradigma di
interazione particolarmente adatto ad utenti inesperti e/o occasionali.
Tali
tecniche
combinano
i
vantaggi
della
visualizzazione
tridimensionale con il potere della rappresentazione metaforica.
L’utente è facilitato nella navigazione in una base di dati visto che il
sistema propone un ambiente che riproduce situazioni reali e dà la
possibilità di interagire manipolando oggetti che hanno una
corrispondenza bigettiva con oggetti conosciuti. La RV infatti ha lo
20
Sistemi di interrogazione visuale
scopo di costruire un mondo virtuale, il più possibile fedele alla realtà,
in cui gli oggetti siano presi dal mondo reale, e le possibili operazioni
dovrebbero essere quelle effettuate nella realtà. Ecco quindi che in un
paradigma basato sulla realtà RV gli oggetti presenti nella base di dati
verrebbero rappresentati, nei limiti in cui è possibile, come sono nella
realtà o attraverso metafore molto significative per l’utente. Rispetto
ad altre forme di visualizzazione di informazioni, con la realtà virtuale
l’utente è agevolato perché, potendo manipolare meglio i dati che
vengono visualizzati con oggetti familiari, riesce a capire subito qual è
il contesto in cui si trova, anche perché gli scenari virtuali sono
arricchiti con molti dettagli, presi da un contesto reale; in questo modo
si riduce la possibilità che l’utente si perda nel sistema, che dopo un pò
di navigazione nella base di dati egli non sappia più dove si trova.
Non si parla di realtà virtuale immersiva, di RV cioè in cui si ha la
pretesa di immergere fisicamente l’utente negli ambienti virtuali creati;
ma si parla di RV che non prevede l’immersione dell’utente, ma che ha
come scopo principale la visualizzazione della realtà [Preece et al.,
1994], ha cioè come scopo quello di proporre un ambiente virtuale che
risulti più vicino e simile alla realtà delle persone di quanto non lo
possa essere, ad esempio, una visualizzazione basata su icone.
Anche l’interazione dell’utente con il sistema utilizzando il paradigma
basato sulla RV è molto simile al comportamento che l’utente ha nella
realtà. Ad esempio, in un ospedale reale, se si cercano dati relativi ai
pazienti, si va verso lo schedario dove sono tenute le cartelle dei
pazienti e si cerca la cartella di uno specifico paziente. Una volta
trovata, la si apre e si leggono le informazioni alle quali si è interessati,
come ad esempio il suo indirizzo, il risultato degli esami effettuati,
21
Sistemi di interrogazione visuale
ecc.... Nella stessa maniera potrebbe essere implementato un sistema di
interrogazione per una base di dati basato sulla RV. Sullo schermo
verrebbe visualizzata una scena in cui vi è uno schedario. Lo si
seleziona e questo si apre. Successivamente si cerca la cartella relativa
al paziente di cui si vogliono le informazioni. Quando essa è stata
trovata, la si seleziona per aprirla e quindi poter leggere le
informazioni alle quali si è interessati.
Appare chiaro che l’utente è molto facilitato nell’interazione con una
base di dati utilizzando un’interfaccia che fa uso della RV. L’utente
infatti, impara molto più facilmente ad usare il sistema perché gli
oggetti e le metafore sono prese dalla vita reale e la maggior parte delle
volte lui già le conosce. Lo stesso vale per la modalità di interazione.
Lui sa già dove andare a trovare le informazioni a cui è interessato
perché si trovano, nei limiti in cui è possibile, nello stesso posto in cui
si trovano nella vita reale. L’unica cosa che resta da insegnargli è a
livello fisico, cioè l’uso dei mezzi fisici di interazione (mouse,
joystick, dataglove, elmetto, ecc.).
1.5.
Un linguaggio per la simulazione di mondi virtuali
Il VRML, Virtual Reality Modeling Language [Guglielmi et al., 1996],
è un linguaggio di programmazione che consente la realizzazione di
mondi virtuali interconnessi tramite Internet, visualizzabili tramite
pagine web e contenenti riferimenti (hyperlink) ad altre risorse
disponibili sulla rete.
22
Sistemi di interrogazione visuale
Si può a ragione sostenere che tramite il VRML si possano effettuare
simulazioni tridimensionali interattive, permettendo a tale linguaggio
la gestione completa della visualizzazione dei mondi virtuali creati, di
interazione delle singole parti con le azioni intraprese dall’utente, cioè
la gestione causa-effetto dei singoli eventi, e infine l’interconnessione
tramite Internet delle varie parti nel tutt’uno della ragnatela mondiale
conosciuta come World Wide Web (WWW).
L’idea del VRML nasce dalla necessità di avere un linguaggio comune
per la descrizione di scenari 3D e dei relativi “hyperlink” con il web,
linguaggio avente le stesse funzioni di quelle ricoperte dall’HTML
all’interno del WWW.
Inizialmente VRML significava Virtual Reality Markup Language (in
analogia con HTML, HyperText Markup Language); nel seguito la
parola Markup venne variata in Modeling per meglio rappresentare
l’aspetto grafico del linguaggio. VRML allo stato attuale è quindi
sinonimo di Virtual Reality Modeling Language [Guglielmi et al.,
1996].
La prima versione del VRML è basata su Open Inventor ASCII File
Format di Sylicon Graphics Inc, completata con alcune estensioni per
il supporto delle funzioni connesse all’utilizzo della rete Internet. Essa
doveva risultare indipendente da qualsiasi piattaforma hardware
software, essere sviluppabile e duttile, ma soprattutto consentire lo
sfruttamento ottimale delle risorse 3D su connessioni a bassa velocità.
Il VRML è indipendente dall’HTML ma come linguaggio “per
Internet” ne sfrutta e ne recepisce le potenzialità e le innovazioni.
23
Sistemi di interrogazione visuale
Il VRML è un linguaggio interpretato, non compilato quindi può
essere utilizzato da qualunque browser VRML compliant, cioè in
grado di tradurne i comandi in forma grafica. Il meccanismo di utlizzo
di un sorgente WRL (l’estensione tipica di un file ASCII contenente un
sorgente VRML) è relativamente semplice; l’utente si collega, tramite
un browser tipo Netscape o Internet Explorer al sito www contenente il
file; quest’ultimo viene caricato tramite la rete in sede locale (su PC o
workstation) e qui interpretato dal browser stesso.
Si può così astrarre il concetto base del VRML affermando che esso è
un sottoinsieme dell’Inventor File Format arricchito con alcune
funzioni che ne consentono l’esecuzione dal web includendovi inoltre
funzioni di richiamo di altri URL (Uniform Resource Locator),
nell’ottica tipica della navigazione per link del World Wide Web.
Inoltre permette di costruire scene tridimensionali facendo uso di
oggetti di forma arbitraria, immagini, suoni di formati MIDI o WAV,
link a URL remoti, sorgenti luminose, filmati in formato AVI o FLI
ecc. in cui è possibile definire luci e materiali da assegnare ai vari
oggetti, proprietà ed ambienti e creare effetti realistici.
Da ciò si comprende come le potenzialità del linguaggio in quasi ogni
campo dalle applicazioni scientifiche all’ambito pubblicitario, siano
limitate esclusivamente alla fantasia umana.
24
Problemi di soddisfacimento di vincoli
Capitolo secondo
2.
Problemi di soddisfacimento dei vincoli
2.1.
Introduzione
Molti problemi del mondo reale possono essere formulati come
Problemi di Soddisfacimento di Vincoli (PSV) cioè problemi per i
quali è richiesta la determinazione del valore di un certo numero di
variabili nel rispetto di un insieme di vincoli che le coinvolgono. Si
può immaginare una serie infinita di istanze di questi problemi con
caratteristiche e difficoltà di soluzione molto diverse tra loro. Le
tecniche di soluzione vengono studiate prevalentemente nell’Analisi
Matematica e nella Ricerca Operativa, e la realizzazione pratica di
queste tecniche in termini di software rappresenta una delle più ampie
problematiche dell’informatica coinvolgendo una parte considerevole
di risorse umane sia nell’ambito della ricerca che in quello industriale
[Guidotti et al., 1994].
Una categoria importante di PSV sono i Problemi Combinatori e
Discreti (PCD). La loro caratteristica principale consiste nel fatto che
le variabili in gioco hanno un dominio costituito da un numero finito
di valori (generalmente numeri interi). Ciò comporta che, essendo le
25
Problemi di soddisfacimento di vincoli
variabili a loro volta in numero finito, esiste un numero finito di
possibili combinazioni di valori. Ad esempio date n variabili, se i loro
domini hanno cardinalità d, il numero di possibili combinazioni tra le
quali cercare quelle che soddisfano i vincoli, cioè quelle ammissibili,
sarà pari a dn, e quindi esponenziale nella dimensione dell’istanza del
problema, che generalmente viene indicata proprio con il numero delle
variabili. Questo fatto, insieme con l’impossibilità di utilizzare per la
soluzione i metodi tipici dell’analisi matematica, ha come conseguenza
che la gran parte dei PCD sono NP-completi, cioè in sostanza
richiedono una enumerazione esplicita o implicita di tutte le
combinazioni di valori per selezionare quelle ammissibili [Guidotti et
al., 1994].
Nell’ambito del PCD la ricerca operativa pone particolare attenzione ai
Problemi di Ottimizzazione Combinatoria (POC) che consistono in
PCD per i quali l’obiettivo non è trovare una o più soluzioni
ammissibili, ma trovare la migliore secondo una certa funzione (detta
funzione obiettivo) costruita sulle variabili e che in sostanza associa ad
ogni possibile combinazione, un numero reale (ad esempio un costo
totale o un profitto totale). Risolvere un POC corrisponderà a trovare la
combinazione ammissibile cui corrisponde il valore massimo o quello
minimo a seconda del significato attribuito a tale valore. Esempi di
POC sono la programmazione lineare usata per trovare delle soluzioni
ottime per un gruppo di equazioni lineari simultanee ed il metodo del
simplesso.
I POC compaiono frequentemente in campo industriale, ad esempio
per stabilire come impiegare in maniera ottima risorse discrete quali
26
Problemi di soddisfacimento di vincoli
macchinari o persone, per determinare produzioni anch’esse discrete e
con quantità limitate non considerabili approssimativamente continue
oppure per determinare la sequenza di lavorazione ottima per parti che
richiedono le stesse risorse in quantità diverse tra loro. Altre tipiche
applicazioni scaturiscono dai problemi di scheduling come, ad
esempio, l’assegnamento di un certo numero di processi ai processori
disponibili in modo da ottenere il massimo throughput possibile.
Vista l’elevata complessità computazionale dei PCD è necessario
ottimizzare ogni singolo aspetto della tecnica di soluzione e occorre
unire competenze di tipo matematico e di tipo informatico per evitare
la realizzazione di un algoritmo poco efficiente. Come si può intuire,
tutto questo costa molto in termini di risorse umane impiegate,
cosicchè nella pratica, può essere preferibile rinunciare ad una
implementazione efficiente ma costosa in favore di una meno
efficiente ma più rapida da realizzare, visto che il tempo macchina oggi
costa molto meno del tempo uomo.
I Linguaggi di Programmazione a Vincoli (LPV) hanno come obiettivo
quello di consentire il rapido sviluppo di soluzioni compatte per i PSV.
Lo scopo primario è quello di consentire all’utente di descrivere gli
oggetti del proprio dominio applicativo insieme ad una collezione di
vincoli su di essi espressa normalmente in forma relazionale. In questo
modo la progettazione della soluzione ad un PSV si traduce nella
individuazione delle relazioni tra gli oggetti nel dominio affidando alla
macchina il calcolo dei valori che assicurano la consistenza.
27
Problemi di soddisfacimento di vincoli
La forma relazionale intrinseca alla Programmazione Logica (PL),
rende questo paradigma particolarmente adatto alla espressione dei
vincoli che sono relazioni fra oggetti. Inoltre il non-determinismo della
PL costituisce un potente strumento concettuale per il progetto di
programmi capaci di ricerche autonome in uno spazio di soluzione.
Molti sforzi sono stati fatti per estendere le basi teoriche della PL in
modo da includere concetti e meccanismi per il soddisfacimento di
vincoli specifici di domini quali booleani, reali, discreti, estendendo il
concetto di unificazione.
2.2.
Tecniche di soluzione per problemi combinatori e
discreti
Le tecniche di soluzione che comunemente si utilizzano sono tutte
basate
sull’uso
di
un
albero
decisionale
per
organizzare
l’enumerazione delle combinazioni. Date n variabili x1, x2,......,xn con
dominio rispettivamente D1, D2,......, Dn, sottoposte ad un insieme V di
vincoli, un possibile procedimento di ricerca della soluzione consiste
nell’assegnare un valore alle variabili una dopo l’altra, verificando ad
ogni assegnamento, che il valore attribuito sia compatibile, secondo i
vincoli, con quelli attribuiti alle variabili già assegnate. Se ciò non è
vero, si sceglie un altro valore, e se non se ne trova nessuno, si esegue
un
backtracking
sulla
variabile
precedente,
cioè
si
revoca
l’assegnamento eseguito in precedenza su di esso effettuandone un
altro con un valore diverso. Situazioni come queste vengono denotate
28
Problemi di soddisfacimento di vincoli
con il nome di fallimenti, in quanto un tentativo di assegnamento alle
variabili si rivela infruttuoso, cioè non porta ad alcuna soluzione
ammissibile. Questa tecnica viene detta Standard Backtracking. Si può
notare come l’assegnamento di una variabile venga visto come una
decisione che può anche rivelarsi errata, e pertanto venga prevista la
possibilità di doverla modificare in futuro. Il modo migliore per gestire
questa tecnica è utilizzare un albero decisionale esplorandolo con una
strategia di tipo depth first (in profondità).
Il problema fondamentale che si pone con questa tecnica è il seguente:
se i fallimenti vengono scoperti molto in profondità nell’albero
decisionale, viene esplorato un grande sottoalbero prima di effettuare
un altra scelta per la variabile. Essa rivela la sua incapacità ad
utilizzare intelligentemente i vincoli [Guidotti et al., 1994].
Una alternativa può essere quella di propagare gli assegnamenti
eseguiti alle variabili ancora da istanziare, utilizzando i vincoli in
maniera attiva. Questo corrisponde ad escludere dai domini delle
variabili non ancora istanziate quei valori che non sono compatibili
con le variabili già assegnate. Si parla in tal caso di Forward Checking
in quanto si opera un controllo preventivo sulle variabili. Questo modo
di operare viene anche denotato con il nome di Tecnica della
Consistenza [Van Hentenrick, 1989] in quanto corrisponde ad operare
scelte che siano consistenti con le decisioni già intraprese, consentendo
di scoprire il prima possibile le cause dei fallimenti per evitare di
incorrervi.
29
Problemi di soddisfacimento di vincoli
Un’altra tecnica di consistenza è nota col nome di Looking Ahead, che
utilizza una riduzione dei domini più sofisticata. Similmente alla
tecnica Forward Checking, oltre all’esclusione dei valori non
compatibili con gli assegnamenti già eseguiti, per il dominio di ogni
variabile non ancora istanziata e per ogni valore rimasto in esso, viene
controllata l’esistenza, nei domini delle altre variabili non ancora
istanziate, di almeno un valore compatibile. Se ciò non avviene, il
valore viene escluso dal dominio. La tecnica Looking Ahead è
caratterizzata da una maggiore probabilità di scoprire anticipatamente i
fallimenti, ma ha come conseguenza un notevole aumento del carico
computazionale rispetto al Forward Checking, per questo la tecnica
Looking Ahead non è molto usata [Guidotti et al., 1994].
Si è parlato in precedenza della necessità di scoprire i fallimenti in
anticipo. E’ però possibile agire in modo che questi fallimenti si
presentino il più presto possibile. Secondo il principio del First Fail è
conveniente eseguire per prime quelle scelte che hanno maggiore
probabilità di fallire. In altre parole conviene esplorare per prima la
parte più vincolata dello spazio di ricerca della soluzione. Un modo per
farlo può esserre assegnare per prime le variabili che hanno il dominio
più piccolo, utilizzando quindi un ordine di assegnamento delle
variabili stabilito dinamicamente durante la ricerca della soluzione, in
base alle scelte eseguite ed alle conseguenti riduzioni dei domini [Van
Hentenrick, 1989]. L’applicazione di questo metodo porta in generale
ad un miglioramento dell’efficienza della soluzione.
Le tecniche Forward Checking e First Fail hanno la capacità di guidare
l’esplorazione all’interno dello spazio di ricerca della soluzione in
30
Problemi di soddisfacimento di vincoli
modo da rimanere “vicini” alle soluzioni ammissibili, senza perdersi in
esplorazioni di sottospazi improduttivi.
Una volta determinate tutte le soluzioni ammissibili, se l’obiettivo è
quello di ricercare la soluzione ottima, una delle tecniche usate è quella
del Branch and Bound che è caratterizzata da due fasi: il branching
che equivale alla generazione dell’albero decisionale, ed il bounding
che consiste nella limitazione dell’albero stesso, cioè nella
eliminazione preventiva di sottoalberi improduttivi.
2.3.
L’implementazione software
Una volta definita la tecnica per una soluzione efficiente del problema
in esame, nasce la questione di come realizzare il software che lo
implementa. I principali problemi sono:
 la gestione dell’albero decisionale;
 la gestione delle elaborazioni locali al nodo che coinvolgono i
vincoli e le variabili non ancora istanziate.
L’approccio di implementazione attualmente più utilizzato consiste
nello scrivere il software usando un linguaggio imperativo (descrive
per passi come costruire una soluzione, strettamente legato
all’architettura di Von Neumann). In particolare, in Ricerca Operativa
si utilizzano soprattutto il Fortran ed il C, per motivazioni molteplici:
31
Problemi di soddisfacimento di vincoli
1. disponibilità di compilatori molto efficienti su qualsiasi tipo
di macchina, in grado di assicurare uno sfruttamento ottimale
dell’hardware e quindi elevate prestazioni;
2. portabilità del codice;
3. disponibilità di un notevole numero di librerie;
4. massima libertà nella scrittura del codice.
Ci si rende conto però di come i problemi realizzativi elencati in
precedenza pongano grandi difficoltà se affrontati con un linguaggio
imperativo. Supponendo di scrivere del codice per la gestione di un
albero utilizzando il Fortran, l’implementazione risulterà certamente
complessa poichè si hanno a disposizione solo array e contatori e non
si può usufruire della ricorsione.
Sebbene l’utilizzo di un linguaggio imperativo permetta elevate
prestazioni del software prodotto, si deve pagare un prezzo molto alto
in termini di sviluppo e di debugging. Inoltre l’aggiornamento del
codice, ad esempio in seguito ad una modifica intervenuta nel modello
del problema da risolvere, come l’aggiunta o la eliminazione di un
certo numero di vincoli, può risultare proibitiva in quanto spesso
sconvolge l’intera struttura del codice stesso.
Si può quindi affermare che un linguaggio imperativo non rappresenta
uno strumento ideale per l’implementazione di software per la
soluzione di PCD.
Una alternativa concreta ai linguaggi tradizionali è rappresentata dai
linguaggi di Programmazione Logica ed in particolare dal Prolog. Le
32
Problemi di soddisfacimento di vincoli
caratteristiche fondamentali che rendono la Programmazione Logica
un linguaggio naturale per l’implementazione dei PCD sono le
seguenti:
 la forma relazionale che permette di dicharare i vincoli in
maniera molto chiara, essendo i vincoli delle relazioni tra
variabili;
 il non determinismo che libera l’utente dal compito di
programmare la gestione dell’albero decisionale.
La semantica dichiarativa tipica della Programmazione Logica
permette di produrre codici compatti, leggibili e di facile
manutenzione, permettendo un notevole risparmio in termini di tempi
di sviluppo. Queste potenzialità giustificano il grande interesse che
gravita attualmente intorno all’applicazione della programmazione
logica nel settore dei PCD e in quello più generale dei PSV dando
luogo ad una specifica classe di linguaggi detti di Programmazione
Logica a Vincoli, (tra i quali il linguaggio Chip) che raggruppa quelle
estensioni
del
Prolog
che
forniscono
strumenti
linguistici
appositamente studiati per le esigenze dei problemi con vincoli.
Un aspetto particolarmente critico di questi linguaggi è costituito dal
compromesso tra la flessibilità degli strumenti che mettono a
disposizione per l’approccio a certe classi di problemi e l’efficienza
degli stessi. Generalmente questi due aspetti (flessibilità ed efficienza)
sono in contraddizione fra loro, nel senso che una maggiore flessibilità
viene pagata con una minore efficienza di soluzione.
33
Problemi di soddisfacimento di vincoli
La Programmazione Logica in genere e quella a vincoli in particolare,
si rivela comunque un valido strumento di studio di algoritmi per
problemi di ottimizzazione combinatoria, grazie ai rapidi tempi di
sviluppo che permette.
E’ interessante notare una caratteristica importante della soluzione
Prolog, che può dare la misura della potenza di questo approccio:
utilizzando lo stesso programma è possibile proporre al sistema una
soluzione per sapere se è ammissibile oppure no. E’ anche possibile
proporre un assegnamento parziale per sapere in che modo possa
essere completato. Per ottenere queste ultime due funzioni utilizzando
un linguaggio imperativo sarebbe necessario scrivere delle procedure
apposite. Ciò a ulteriore conferma del fatto che la Programmazione
Logica conferisce alle applicazioni una flessibilità impensabile per la
programmazione imperativa [Guidotti et al., 1994].
2.4.
Applicazione del Prolog alla etichettatura di immagini
Il problema di soddisfacimento di vincoli che riguarda la etichettatura
di immagini (labeling) può essere risolto in molti modi diversi. Esso
può essere formulato mediante un approccio di soddisfacimento dei
vincoli, che consiste in un insieme di variabili e di predicati; la
congiunzione dei quali deve essere soddisfatta dalle variabili
istanziate. Come mostrato in [Mackworth, 1977], utilizzando la
formulazione della logica dei predicati, il problema di soddisfacimento
di vincoli che riguarda l’etichettatura di immagini è simile al problema
34
Problemi di soddisfacimento di vincoli
di fornire una dimostrazione costruttiva della validità di una formula
ben fomata:
(X1) (X2)....(Xn) [P1(X1)  P2(X2) ...... Pn(Xn) P12(X1,X2) 
P13(X1, X3) ...... Pn-1,n(Xn-1,Xn)]
dove gli Xi sono variabili e Pi, Pij sono rispettivamente vincoli unari e
binari. Una delle cose più interessanti che emerge dalla formulazione
di un problema di AI come un problema di soddisfacimento di vincoli
nella forma suddetta è l’efficienza della procedura di soluzione
[Schalkoff, 1990].
La segmentazione e l’etichettatura di regioni di una immagine
utilizzando il soddisfacimento dei vincoli, è una prova importante della
potenza dichiarativa della programmazione in Prolog, poichè il
problema è posto in termini di necessità dell’utente; il sistema Prolog
determina i passi necessari per raggiungere una etichettatura vincolata.
La etichettatura dell’immagine serve come base per la descrizione di
una immagine, poichè dopo aver determinato l’identità di ogni parte di
essa si è nella posizione di descrivere l’intera immagine sulla base
della natura e delle relazioni interne delle regioni etichettate.
In contrasto ai problemi di soddisfacimento dei vincoli numerici,
l’obiettivo dei problemi di etichettatura in generale è ottenere uno o
più assegnamenti ammissibili di etichette ad insiemi di entità. Sono
definite le seguenti quantità:
35
Problemi di soddisfacimento di vincoli
{
U = {u1, u2, ......,un} è l’insieme degli oggetti che devono essere
etichettati
 = {1, 2, ....,n} è l’insieme delle possibili etichette.
In questa formulazione si possono individuare due livelli di
compatibilità:
1. Le compatibilità delle etichette agli oggetti singoli
2. Le compatibilità delle etichette a due o più oggetti correlati.
Una definizione più succinta del problema di etichettatura diventa:
Determinare uno o più mappping tra gli elementi di  e quelli
di U tali che i vincoli di compatibilità suddetti siano soddisfatti.
Bisogna notare che dati n oggetti ed m possibili etichette, senza vincoli
si possono avere mn combinazioni possibili [Schalkoff, 1990].
2.4.1. Determinazione dei vincoli
Si cerca di formulare il problema di etichettatura di parti di immagini
come un problema di soddisfacimento dei vincoli. Si considerano solo
due tipi di vincoli, cioè:
36
Problemi di soddisfacimento di vincoli
 Vincoli unari o restrizioni su un solo argomento che possono essere
considerate delle proprietà degli oggetti. Ad esempio colore_di(a) è
un esempio di vincolo unario o proprietà dell’oggetto.
 Vincoli binari o relazioni, che coinvolgono due entità o argomenti.
Ad esempio adiacente(a,b) è un esempio di questo tipo di vincolo.
Si inizia l’approccio alla etichettatura dell’immagine, con la
determinazione di un numero di vincoli che hanno senso. Questo è
l’aspetto empirico della formulazione del problema; ci sono forse
molte formulazioni (che impiegano differenti vincoli) che portano a
soluzioni soddisfacenti. La determinazione di un insieme di vincoli che
hanno senso implica l’esame della situazione e l’estrazione di vincoli
implementabili basati su caratteristiche estraibili che non violano
l’umana intuizione. Ad esempio in una immagine raffigurante un
paesaggio, raramente il cielo compare nella parte bassa dell’immagine.
Un possibile vincolo binario su una immagine è la regione di
adiacenza, ad esempio “una automobile è adiacente ad una strada”,
oppure un altro possibile vincolo binario è una relazione di
contenimento, ad esempio “una maniglia è contenuta in una porta”.
Determinati i vincoli è necessaria una appropriata formulazione in
Prolog di essi. In particolare è necessario rappresentare questi vincoli
mediante dei predicati e soddisfare la congiunzione dei vincoli che
coinvolgono le variabili.
37
Problemi di soddisfacimento di vincoli
Il database Prolog conterrà delle clausole ground (una clausola si dice
ground quando in essa non compaiono variabili libere). che
incorporano i vincoli, ad esempio:
adiacente(automobile, strada).
adiacente(strada, alberi).
adiacente(alberi, cielo).
Si può vedere il problema di soddisfacimento dei vincoli, come la
ricerca di legami adatti (assegnamenti di etichette) sulle variabili. Il
goal (obiettivo definito cioè una formula esistenziale con una
congiunzione di letterali) su questo database è formato da una
congiunzione di clausole che coinvolgono il predicato adiacente, ad
esempio:
adiacente(R1,R2),
adiacente(R2,R3).
Una etichettatura valida sarà l’istanziazione di queste variabili con
valori (etichette) tali che la congiunzione di queste clausole sia vera,
cioè soddisfacibile attraverso il meccanismo dell’unificazione.
L’insieme dei risultati a tutte le possibili unificazioni del goal suddetto
con il database è dato da:
La regione 1 è istanziata a
La regione 2 è istanziata a
La regione 3 è istanziata a
automobile
strada
alberi
La regione 1 è istanziata a
strada
38
Problemi di soddisfacimento di vincoli
La regione 2 è istanziata a
La regione 3 è istanziata a
alberi
cielo
Per ottenere questo risultato sono state aggiunte altre clausole al goal:
write(‘La regione 1 è istanziata a
write(‘La regione 2 è istanziata a
write(‘La regione 3 è istanziata a
’), write(R1), nl,
’), write(R2), nl,
’), write(R3), nl,fail.
L’operazione del predicato write ha l’effetto collaterale di indicare un
insieme di legami sulle variabili. Si deve notare che il sistema Prolog,
a causa dell’ordine in cui avviene l’unificazione, deve aver raggiunto il
successo prima di incontrare i predicati write, così non si verifica il
problema di stampare i valori delle variabili non istanziate.
Interessante è l’uso del predicato fail: esso è un predicato predefinito
in Prolog e valutato sempre falso. Incorporando il predicato fail come
ultimo predicato nel goal si forzano tutti i possibili backtracking e
conseguentemente la generazione di tutte le unificazioni possibili
[Schalkoff, 1990].
39
Un sistema di visualizzazione di dati in realtà virtuale.
Capitolo terzo
3.
Un sistema di visualizzazione di dati in realtà
virtuale
3.1.
Introduzione
Le interfacce visuali possono aiutare anche l’utente inesperto a
formulare query restituendo una grande quantità di informazione
strutturata. Quando il database sorgente contiene molte relazioni
semantiche e molti vincoli, l’insieme dei dati che rappresentano
l’intero risultato della query possono essere composti da molti oggetti
disposti in differenti livelli di nesting.
Per fornire agli utenti uno strumento efficace di esplorazione, i sistemi
di visualizzazioni di database devono avere le seguenti caratteristiche:
 rappresentare un grande numero di oggetti complessi e le relazioni
semantiche tra di loro [Goldstain, 1994];
 visualizzare sia attributi standard che attributi multimediali;
 permettere agli utenti di esplorare un sottoinsieme dell’intero
insieme di dati risultante dalla query.
40
Un sistema di visualizzazione di dati in realtà virtuale.
I metodi di visualizzazione in 3D possono essere utilmente adottati per
organizzare grandi insiemi di oggetti. Sono efficaci le visualizzazioni
ad occhio di pesce (fish eye view) [Sarkar et al., 1994] poichè gli utenti
possono focalizzare l’attenzione su piccole parti dell’intero insieme di
dati senza perdere di vista il contesto. Inoltre gli ambienti in 3D
possono facilmente rappresentare sia dati alfanumerici che dati
multimediali, come immagini e video.
Le tecniche di visualizzazione in realtà virtuale permettono di
combinare i vantaggi delle visualizzazioni in 3D con la potenza delle
rappresentazioni metaforiche. Disponendo i dati del risultato della
query in scene virtuali, gli utenti sono facilitati nella esplorazione dei
dati poichè essi interagiscono con oggetti familiari. Sia il
comportamento del sistema che le proprietà strutturali degli oggetti in
un mondo virtuale, i.e. il modo in cui gli oggetti possono essere
composti,
sono
completamente
conosciuti
proprio
perchè
appartengono al background generale degli utenti. Di conseguenza è
più facile interagire ed esplorare l’insieme dei dati.
3.2.
Il sistema Virgilio
Virgilio è un sistema che genera visualizzazioni di oggetti complessi
che rappresentano il risultato di una query ad una generica base di dati
[Massari et al., 1997; Costabile et al., 1998]. Le rappresentazioni che
genera sono a realtà virtuale non immersiva cioè l’interazione tra
l’utente ed il mondo virtuale avviene tramite i normali dispositivi di
41
Un sistema di visualizzazione di dati in realtà virtuale.
input/output con i quali l’utente interagisce normalmente con il
calcolatore ad esempio tastiera, mouse o joystick (si veda il capitolo 1
per ulteriori dettagli).
In opposizione ad altri sistemi, esso è stato pensato per essere un
sistema general purpose per l’esplorazione di dati altamente strutturati
dove sia il dominio del database che la query dell’utente sono
considerati parametri esterni. Inoltre Virgilio è basato su concrete
metafore (i.e. metafore in cui il dominio visuale è composto da oggetti
presi dalla vita quotidiana dell’utente), in modo da aver vantaggio
dalla conoscenza degli oggetti del mondo reale riducendo così il carico
cognitivo nel processo di assimilazione dell’informazione.
Il sistema automaticamente definisce un mapping [Haber et al, 1994],
tra gli oggetti dell’insieme di dati e gli oggetti di qualche mondo
virtuale. Per permettere una appropriata visualizzazione dei dati tale
mapping deve seguire delle regole precise:
1. la struttura del risultato della query deve essere preservata, i.e. le
aggregazioni (tuple, set, sequenze) derivate dallo schema del
database devono essere mantenute nelle scene virtuali;
2. ogni dato del risultato della query deve avere un supporto fisico per
la sua visualizzazione;
3. gli oggetti virtuali scelti devono essere adatti a rappresentare il tipo
di dato che deve essere visualizzato (e.g. un oggetto “portaritratto” è
adatto per il tipo di dato immagine);
42
Un sistema di visualizzazione di dati in realtà virtuale.
4. devono essere considerate anche regole di visualizzazione che
garantiscono che attributi discriminanti sono visualizzati nel posto
giusto per permettere una esplorazione efficace dei dati. Per esempio
se un piano di un edificio rappresenta le informazioni relative ad un
tipo di musica, il piano deve contenere l’informazione sul tipo di
musica selezionato (un cartello o un poster).
Virgilio accetta come input l’insieme dei dati risultante da una query
su generiche basi di dati e crea una rappresentazione visuale composta
di una collezione di scene scritte in VRML (VR Modeling Language)
[Guglielmi et el., 1996]. Il sistema usa una libreria di oggetti del
mondo reale (ad esempio nel mondo virtuale “palazzo” gli oggetti
possono essere stanze, tavoli, ritratti ecc.) che include il loro aspetto
visuale, i tipi di dati che essi possono supportare (ad esempio, un
portafotografie è capace di visualizzare una foto o una immagine, un
foglio o un libro possono visualizzare testo scritto, stringhe ecc.) così
come relazioni di contenimento tra coppie di oggetti del tipo “A
contiene B” e/o “B è contenuto in A”. Virgilio lavora nel seguente
modo:
 i valori degli attributi dei dati risultanti dalla query sono visualizzati
su oggetti del mondo virtuale secondo la capacità di questi oggetti di
rappresentare l’appropriato tipo di dato;
 le relazioni semantiche tra gli oggetti nell’insieme dei dati che
costituiscono il risultato della query sono rappresentate usando
relazioni di contenimento.
43
Un sistema di visualizzazione di dati in realtà virtuale.
Le caratteristiche principali di Virgilio sono: 1) è parametrico rispetto
al database esplorato; 2) produce automaticamente una vista orientata
all’utente dei dati; 3) descrive i dati visualizzati attraverso il
linguaggio VRML [Guglielmi et al., 1996].
Un’altra rilevante caratteristica del sistema Virgilio è la possibilità di
usarlo come una applicazione client-server sulla rete. Le scene del
mondo virtuale sono memorizzate in formato VRML e l’utente finale
può accedere al sistema utilizzando un comune browser che supporta il
VRML [Guglielmi et al., 1996].
Sono stati condotti numerosi studi su sistemi di visualizzazioni di
database, ma essi generalmente non determinano un approccio
generale al problema. Alcuni sistemi forniscono all’utente interfacce
per esplorare insiemi di dati in uno specifico dominio applicativo (e.g.
dati statistici [Meo-Evoli et al., 1994] o database di documenti
[Hemmje et al., 1994]; altre strategie di visualizzazione (e.g. starfield
display descritto in [Alberg et al., 1994]) sembrano adattarsi meglio
per la visualizzazione di insiemi di oggetti piatti con poche relazioni
semantiche. Altri sistemi (e.g. LyberWorld [Hemmje et al., 1994])
usano
tecniche
di
visualizzazione
in
3D
per
rappresentare
l’informazione per mezzo di metafore astratte, dove gli oggetti da un
mondo astratto (e.g. coni e sfere) sono usati per comporre
rappresentazioni visuali dell’insieme di dati esplorato.
44
Un sistema di visualizzazione di dati in realtà virtuale.
3.3.
Uso di metafore in Virgilio
Il significato letterale di “metafora” (dal greco ‘metaphorein’) è
trasferire o trasportare. Uno dei più importanti aspetti della metafora è
che essa dà la possibilità di capire concetti nuovi e complessi
attraverso concetti più familiari. La definizione data da Lakoff e
Johnson dice che “una metafora è una figura retorica, la cui essenza è
capire e sperimentare un tipo di cose in termini di un altro” [Lakoff,
1980]. Per cui una metafora dà la possibilità di andare da concetti
familiari (i.e. ben-conosciuti) verso concetti sconosciuti, incorporando
così nuova conoscenza nei vecchi. Spesso, per introdurre un nuovo
concetto, lo si presenta in relazione ad un altro ben conosciuto,
semplificando così il processo di apprendimento. Ad esempio, il
modello dell’atomo è generalmente presentato con riferimento alla
struttura del sistema solare.
Alcune volte, la metafora è usata per fornire una rappresentazione
concreta di un concetto astratto (ad esempio, “quell’uomo è pauroso
come un coniglio!”; o ancora “questo luogo è freddo come una
Siberia!”). Nel campo dell’interazione utente-calcolatore, le metafore
sono state spesso usate per sfruttare la conoscenza che l’utente ha di
particolari domini della vita reale. Ad esempio, l’organizzazione del
sistema operativo per stazioni di lavoro personali usa la metafora della
scrivania, data la familiarità che l’utente ha con l’organizzazione di un
ufficio; le azioni sono basate su comportamenti tipici in un ufficio.
Sullo schermo viene presentata la visualizzazione della scrivania di un
ufficio, le varie informazioni (files, documenti) sono contenute in
45
Un sistema di visualizzazione di dati in realtà virtuale.
cartelle (che rappresentano le directory), la cancellazione di un file
avviene gettandolo, o meglio “trascinandolo” nel cestino, la stampa di
un documento con un doppio click sull’icona della stampante, ecc. Un
altro esempio è l’organizzazione di un programma di calcolo
elettronico che usa la metafora del foglio di calcolo strutturato in
forma matriciale di righe e colonne [Carrol et al., 1988].
E’ possibile individuare in ogni metafora due insiemi di concetti,
precisamente concetti sorgente e concetti destinazione [Martin, 1990].
I concetti destinazione sono i nuovi concetti da presentare, i concetti
sorgente sono quelli attraverso i quali i concetti destinazione sono
presentati. Formalmente le metafore sono rappresentate come insiemi
di associazioni, tra concetti sorgente e concetti destinazione. La
metafora specifica come i concetti sorgente corrispondono ai vari
concetti destinazione. Essa stabilisce un mapping tra il dominio
sorgente e il dominio destinazione.
La metafora è considerata uno strumento fondamentale nel progetto di
interfacce creative poichè fornisce all’utente un ambiente familiare con
cui lavorare [Mountford, 1990; Erickson, 1990]. E’ noto che una
metafora ideale non esiste, ma è estremamente importante scegliere la
metafora appropriata in accordo con la particolare situazione. Alcune
linee guida sul progetto delle metafore sono date in [Marcus, 1994;
Madsen, 1994]. Nelle interfacce per database, le metafore sono state
sfruttate per rappresentare la parte intensionale del database, cioè lo
schema dei dati; in questi casi la metafora è il mediatore tra il modello
dei dati e l’utente [Haber, 1994; Catarci et al., 1995]. La maggior parte
46
Un sistema di visualizzazione di dati in realtà virtuale.
degli utenti finali lavorano con la parte estensionale del database,
perciò è più appropriato offrire loro uno scenario dove l’informazione
contenuta nel database è metaforicamente rappresentata in un ambiente
RV, i.e. in un mondo virtuale, così che l’utente non è piu’consapevole
della presenza di un dabase strutturato, ma interagisce come nel mondo
reale.
La definizione di una “buona” metafora può essere un compito difficile
perchè è necessario prendere in considerazione un certo numero di
problemi, come:
 Familiarità degli utenti con il mondo virtuale scelto. Ad esempio,
un utente che appartiene alla classe dei marinai, avrà familiarità con
il mondo delle navi mentre non avrà familiarità con il mondo degli
uffici.
 Storia delle precedenti interazioni degli utenti con altre metafore.
Estremamente importante per la definizione di una metafora adatta
sarà la consistenza del mapping rispetto alla metafora utilizzata
precedentemente dall’utente. Per far fronte a questo problema gli
strumenti per la definizione di una metafora dovrebbero mantenere
una storia interna delle interazioni con gli utenti finali.
 Vincoli
derivanti
da
un
particolare
background
culturale
dell’utente. In un mondo virtuale di un edificio scuola, ad esempio,
un utente appartenente alla classe degli insegnanti non accetterebbe
di vedere l’oggetto virtuale “video gioco” su un oggetto virtuale
47
Un sistema di visualizzazione di dati in realtà virtuale.
“banco di una classe”. Al contrario lo stesso mapping potrebbe
essere accettato da un utente di tipo studente.
 La query attesa che l’utente vuole vedere sul sistema. Sarebbe
importante anche cercare di prevedere le richieste future dell’utente
in modo da permettere, in futuro, l’aggiunta di nuovi oggetti nelle
scene senza dover ricostruire completamente il nuovo mondo
virtuale.
Molti autori e progettisti dimostrano l’efficienza di una metafora per
mezzo di test di usabilità [Marcus, 1994; Carroll, 1988]. Essi
sottopongono una metafora ad un gruppo selezionato di differenti
utenti, studiando ed esaminando il risultato con tecniche di statistica.
Allo stato attuale non sono stati ancora fatti esperimenti formali per
valutare l’usabilità di Virgilio.
Per meglio individuare una metafora efficace potrebbe essere utile
prendere in considerazione il modello utente [Chang et al., 1993;
Catarci et al. 1996]. Una metafora è certamente più efficiente se essa è
adatta alle necessità ed alle attitudini dell’utente.
Virgilio è un sistema che supporta la definizione di una metafora come
un mapping tra i dati nel risultato di una query ad un database e gli
oggetti in un mondo virtuale. Molte metafore sono disponibili nel
sistema così che possono essere generati differenti mapping tra uno
stesso insieme di dati, che rappresentano il dominio destinazione, e
differenti mondi virtuali ognuno dei quali rappresenta il dominio
sorgente in modo da presentare all’utente l’ambiente più efficace per le
48
Un sistema di visualizzazione di dati in realtà virtuale.
sue aspettative. Uno dei mondi virtuali utilizzati in Virgilio è un
“palazzo” con una entrata principale che porta ad un ascensore che
contiene una pulsantiera. Ogni tasto ha una etichetta che può
identificare il piano da raggiungere. Il piano contiene un corridoio con
molte stanze; è possibile accedere ad una stanza aprendo una porta che
ha una etichetta su di essa. In una stanza ci sono dei mobili, come
accade nel mondo reale, ad esempio una cassettiera, una libreria
oppure un tavolo su cui può poggiare un album di foto.
3.4.
Architettura di Virgilio
L’intera architettura del sistema Virgilio come descritto in Massari et
al., (1997) è mostrata in Figura 3.1. Le componenti principali sono:
a) tre moduli chiamati Query Management Tool, un Metaphor
Definition Tool ed un Virtual World Object Editor;
b) un repository globale di informazioni che include tre meta database
contenenti le informazioni necessarie a generare le visualizzazioni
cioè il Query Repository, il Virtual World (VW) Object Repository
ed il Metaphor Repository;
c) lo Scene Constructor Server.
Le altre componenti visualizzate nella Figura 3.1 cioè un DBMS (Data
Base Management System) con il database che memorizza le
informazioni a cui gli utenti vogliono accedere, un Web browser ed
49
Un sistema di visualizzazione di dati in realtà virtuale.
una connessione in rete non specificata, sono considerate esterne a
Virgilio. Il database sorgente è un generico database con una struttura
composta da differenti tipi di classi di oggetti, molte relazioni
semantiche e contenente anche dati multimediali.
Q ue ry M anagm e nt
To o l
V irg ilio
M e ta
DB
M e ta p h o r
D e f in itio n T o o l
S y s te m
ad m in is trato r
Q ue ry
R e p o s ito ry
D a ta B a s e
DBMS
M e ta p h o r
R e p o s ito r y
V R O b je c ts
R e p o s ito ry
Scene
C o n s tr u c to r S e r v e r
V irtu al W o rld
O b je c ts e d ito r
w eb
VRML
brow se r
Figura 3.1 Architettura del sistema Virgilio.
Virgilio è stato progettato per essere un ambiente di esplorazione
general pourpose per dati altamente strutturati; esso è capace di
visualizzare grossi insiemi di oggetti con considerevole complessità
interna ed esterna e molte relazioni semantiche, attraverso efficaci
tecniche RV. I dati risultanti dall’esecuzione di una query sono
presentati in un ambiente virtuale in 3D sfruttando appropriate
metafore che si riferiscono ai vari mondi virtuali disponibili in
Virgilio.
50
E nd
U ser
Un sistema di visualizzazione di dati in realtà virtuale.
L’informazione sui mondi virtuali e tutti gli oggetti che essi includono
è memorizzata nel Virtual World Object Repository ed è fornita al
sistema attraverso il Virtual World Object Editor. Il Query Repository
memorizza sia la query eseguita che l’insieme dei dati che
costituiscono il risultato della query, informazioni necessarie per il
processo di definizione della metafora e la costruzione della scena
virtuale.
Per “definizione della metafora” si intende la definizione del mapping
tra gli oggetti nel database e gli oggetti nel mondo virtuale, che sono
scelti tra quelli disponibili nel sistema. Questo compito è svolto dal
Metaphor Definition Tool, e l’informazione su questo mapping è
memorizzata nel Metaphor Repository. La scena virtuale è generata
dallo Scene Constructor Server sulla base delle informazioni
memorizzate nei vari repository.
Come mostrato in Figura 3.1 due differenti classi di utenti possono
interagire con il sistema Virgilio:
 gli utenti finali (utenti inesperti);
 gli amministratori del sistema (utenti esperti).
Gli utenti finali interagiscono con Virgilio recuperando scene in 3D ed
effettuando l’esplorazione di informazione incapsulata attraverso un
browser VRML. Similmente ad una applicazione standard client-server
eseguita sul Web, una tipica interazione tra Virgilio e l’utente finale è
la seguente: l’utente inizia ad esplorare una scena RV contenente
51
Un sistema di visualizzazione di dati in realtà virtuale.
informazioni di interesse; quando decide di navigare in un altra scena
di un mondo virtuale, un messaggio è inviato a Virgilio, che in
risposta, effettua la query sul database sorgente ottenendo dei dati
“grezzi” i quali vengono incastrati in una scena virtuale che verrà
visualizzata sullo schermo, e così via.
Nell’architettura proposta in Massari et al. (1997), l’utente finale
accedeva al sistema effettuando una query in linguaggio naturale
mentre l’amministratore del sistema era un intermediario fondamentale
tra l’utente ed il sistema, poichè eseguiva tre importanti compiti:
1. definizione delle query in accordo alle necessità dell’utente;
2. specifica di un insieme appropriato di visualizzazioni RV di
tali query attraverso la definizione di un mapping (o metafora)
tra i dati nel risultato della query e gli oggetti di un mondo
virtuale;
3. definizione di nuovi oggetti virtuali specificando sia il loro
aspetto visuale che le relazioni di contenimento con gli altri
oggetti.
Il compito di definizione di una query su un database sarà eseguito
attraverso un qualsiasi sistema di interrogazione visuale general
pourpose.
Se si vuole che Virgilio diventi un sistema per effettuare le query su un
generico database e per effettuare l’esplorazione del risultato della
query, si dovrebbero automatizzare i primi due compiti, così che non
sia necessario nessun intermediario nel dialogo tra l’utente finale e il
sistema. Il terzo compito è l’unico che va oltre le capacità di un utente
52
Un sistema di visualizzazione di dati in realtà virtuale.
finale; la definizione di un nuovo mondo virtuale attraverso la
specifica di tutti i suoi oggetti con i loro attributi è un compito
complicato che deve essere fatto off line da una squadra di progettisti
specializzati. I nuovi oggetti virtuali sono dati in input al sistema
attraverso il Virtual World Object Editor, e memorizzati nel Virtual
World Object Repository, così che essi saranno accessibili dal
Metaphor Definition Tool e dallo Scene Constructor Server.
3.5.
Architettura del Query Management Tool
Il lavoro di questa tesi ha riguardato essenzialmente lo sviluppo di due
principali
componenti
dell’architettura
di
Virgilio:
il
Query
Management Tool la cui architettura è dettagliata in Figura 3.2, ed il
Metaphor Definition Tool.
Oltre ad una Visual Query Interface, i moduli più importanti sono lo
Structure Tree Generator e il Query Prolog Generator. Il primo prende
in input una espressione SQL (Structured Query Language, [Elmasri &
Navate, 1989]) calcola il risultato interrogando il database, trasforma il
risultato in una nested relation attraverso l’analisi della struttura della
query SQL e genera il corrispondente structure tree. Questo compito è
eseguito attraverso l’uso di due strumenti appropriati per la
trasformazione di input strutturato, cioè Flex e Bison (si vedano le
sezioni 4.5 e 4.6 per ulteriori dettagli) che sono le evoluzioni dei ben
noti Lex e Yacc [Levine et al., 1992]. Flex è usato per implementare
uno Scanner per le query SQL, mentre Bison è applicato per costruire
il corrispondente Parser.
53
Un sistema di visualizzazione di dati in realtà virtuale.
S tr u c tu r e
T re e
P a rse r
Q ue ry
R e p o s ito r y
T oken
V is u a l
Q ue ry
I n te r f a c e
SQ L
Q ue ry
Scanner
S tr u c tu r e
T re e
S tru c tu re T re e G e n e rato r
N e s te d
R e la tio n
P r o lo g
Q ue ry
Q ue ry
P r o lo g
G e n e r a to r
O p e r a tio n a l
D a ta B a s e
Figura 3.2 Architettura del Query Management Tool.
Ogni volta che una sequenza di token in input corrisponde ad una delle
regole nella grammatica della query SQL, è intrapresa una azione. Le
azioni riguardano la selezione delle relazioni e degli attributi coinvolti
nella query, l’identificazione degli attributi di Join, e la nidificazione
basata sulla clausola ORDER BY. Lo structure tree che rappresenta la
nested relation è dato in input al Prolog Query Generator che trasforma
lo structure tree in una Query Prolog che sarà utilizzata per il processo
di mapping (si veda il capitolo 5).
Il modulo Query Prolog Generator prende in input la nested relation,
poichè la query Prolog deve includere informazioni sulla cardinalità
delle relazioni che compongono la nested relation. Infine la query
Prolog è memorizzata nel Query Repository.
54
Un sistema di visualizzazione di dati in realtà virtuale.
La descrizione dello Structure Tree Generator è riportata nel capitolo
4.
55
Generazione dello structure tree.
Capitolo quarto
4.
Generazione dello structure tree
4.1.
Introduzione
In questo capitolo si descrive la realizzazione dello Structure Tree
Generator ed il processo che produce, da una query ad un database, lo
structure tree [Massari et al., 1997]. Lo Structure Tree Generator
prende in input una query SQL, calcola il risultato interrogando il
database, trasforma il risultato in una nested relation attraverso
l’analisi della struttura della query SQL e genera il corrispondente
structure tree. Questo compito è eseguito attraverso l’uso di due
strumenti appropriati per la trasformazione di input strutturato, cioè
Flex e Bison che sono le evoluzioni dei ben noti Lex e Yacc [Levine et
al., 1992]. Flex è usato per implementare uno Scanner (analizzatore
lessicale) per le query SQL, mentre Bison è applicato per costruire il
corrispondente Parser (analizzatore sintattico).
La query iniziale è data in input a Virgilio attraverso una Visual Query
Interface, la cui analisi va oltre lo scopo di questa tesi (si veda [Catarci
et al., 1997] per esempi di Visual Query Interface). Una tale interfaccia
56
Generazione dello structure tree.
traduce una query visuale in una query SQL che può essere manipolata
da un qualunque DBMS relazionale.
Il lavoro di questa tesi considera come input la query SQL che risulta
dalla traduzione della query dell’utente formulata mediante una
interfaccia visuale.
4.2.
Definizione di structure tree
Generalmente i dati che compongono il risultato della query hanno una
struttura complessa come le primitive permesse dal modello del
database. Ad esempio, nel modello relazionale, il risultato di una query
assumerà la forma di una relazione. Se il modello del database
permette l’espressione di vincoli (e.g. vincoli di cardinalità per la
partecipazione degli oggetti nelle relazioni) la struttura del risultato
della query può assumere una forma più complessa.
Nella struttura operativa di Virgilio (si veda la Figura 3.1) sarà
considerato un modello di DB più ricco del modello relazionale.
Virgilio opera con quei modelli che possono supportare, direttamente o
indirettamente, il concetto di nested relation (e.g. modelli semantici,
modelli object-oriented o modelli relazionali estesi [Atzeni & De
Antonellis, 1993]).
Informalmente una nested relation è un insieme di tuple tali che i
valori degli attributi possono essere essi stessi delle nested relation. Le
nested relation organizzano l’informazione in una struttura gerarchica,
57
Generazione dello structure tree.
che può essere rivelata anche nel risultato della query. In questo
contesto, si può dire che Virgilio è un sistema RV per la
visualizzazione e la esplorazione di nested relation in accordo col
paradigma di esplorazione.
Naturalmente, quando Virgilio opera su modelli relazionali estesi, il
risultato della query è una nested relation. Tuttavia, quando la query
visuale è trasformata in una standard query SQL, il risultato è una
relazione piatta, che non può essere esplorata. In questo caso, è
possibile applicare l’operatore “nest” che produce relazioni innestate a
partire da relazioni piatte [Atzeni & De Antonellis, 1993]. Ad esempio,
si consideri una query SQL che riguarda un database contenente
informazioni su CD musicali, cantanti, tipi di musica e canzoni ed
alcune relazioni tra queste entità. La Figura 4.1 mostra il
corrispondente diagramma E-R; si può notare che una parte
considerevole
dell’informazione
memorizzata
nel
database
è
multimediale.
Query 1:
SELECT musicType.name, musicType.notes, band.name, band.photo,
album.title, album.cover, song.title
FROM
musicType, band, album, song , tipicSings, contained, published
WHERE album.code=contained.albumCode AND
tipicSings.bandCode=band.code AND
album.code=published.albumCode AND
band.code=published.bandCode AND
song.code=contained.songCode AND
tipicSings.musicName= musicType.name
58
Generazione dello structure tree.
ORDER BY musicType.name, band.name, album.title;
Il risultato della query è una relazione piatta che può essere trasformata
in una corrispondente relazione innestata:
musicType(name: string, notes: text, band(name: string; photo:
picture, album(title:string; cover: picture, song(title:string))))
(0,N)
name
belongsTo
title
(0,N)
(0,N)
published
(1,N)
album
cover
(0,N)
(1,N)
lyricAuthor
(0,N)
(1,N)
contained
tipicSings
musicType
(1,1)
code
notes
members
person
(0,N)
title
(1,N)
musicAuthor
(0,N)
(1,N)
song
(0,N)
code
code
photo
lyric
(0,N)
name
(0,N)
band
performs
score
Figura 4.1 Diagramma E-R del database musicale di esempio.
La struttura di una nested relation è rappresentata da uno structure
tree [Massari et al., 1997]. Uno structure tree può essere descritto
componendo ricorsivamente i due costrutti “set_of” e “record”.
Informalmente un “set_of” è un insieme non ordinato di elementi dello
stesso tipo; un “record” è una lista di elementi che può essere di
differenti tipi. Uno o più elementi di un record può essere un “set_of”.
59
Generazione dello structure tree.
Così uno structure tree è composto di nodi e di archi, ogni nodo può
essere un costrutto “set_of” e “record”.
In un modo formale, uno structure tree può essere definito
ricorsivamente come segue:
I. D, dove D è un dominio atomico di valori,
II. set of(T), dove T è uno structure tree;
III. record A1:T1,.......An:Tn end, dove gli Ai sono simboli distinti
ed i Ti sono structure tree.
Un oggetto risultante è una istanza di uno structure tree che può essere
definito ricorsivamente seguendo la definizione. Sia T uno structure
tree;
 se T è un dominio atomico D, allora ogni elemento di D è una
istanza di T;
 se T ha la forma set of (T’), allora una istanza di T è un insieme
finito di istanze di T’;
 se T ha la forma: record A1:T1,.......An:Tn end, allora una istanza di T
è una tupla t su A1,.......,An tale che t[Ai] è una istanza di Ti, per
1in.
Si consideri il seguente structure tree:
T: set of
record
60
Generazione dello structure tree.
A1:T1,....Ak:Tk,.....An:Tn
end
Se l’attributo Ak è un attributo chiave ciò implica che per ogni coppia
di tuple t’ e t’’ nell’insieme t’[Ak] t’’[Ak].
Un esempio di structure tree corrispondente alla nested relation su
riportata, è descritto in Figura 4.2.
Il nodo radice è un nodo record che indica il database coinvolto nella
query, e può occasionalmente avere alcuni valori atomici che
descrivono il database stesso. Esso ha solo un figlio, cioè un nodo
set_of, il cui valore è la nested relation MUSIC TYPES risultante dalla
query. La relazione MUSIC TYPES è un insieme di record con due
valori atomici, una stringa (NAME) e un testo (NOTES) in forma di
nodi attributo. Esso contiene anche una nested relation (BANDS) cioè
un nodo set_of, che rappresenta l’insieme di tutti i gruppi che
eseguono un certo tipo di musica.
Il resto dello structure tree può essere generato facilmente perchè esso
contiene ripetizioni delle nozioni esaminate. Inoltre, osservando la
Figura 4.2, è possibile notare che sono stati inseriti anche degli pseudo
nodi "typeofData", in modo da avere un accesso diretto al tipo di dato
che un nodo attributo può supportare (i.e. testo, immagine, suono e
così via).
61
Generazione dello structure tree.
MUSIC
contains
MUSIC TYPES
collects
MUSIC TYPE
owns
owns
contains
NAME
NOTES
BANDS
collects
isof
isof
TEXT
STRING
owns
owns
NAME
isof
BAND
contains
PHOTO
isof
STRING
ALBUMS
collects
owns
Set_of
ALBUM
IMAGE
owns contains
TITLE
COVER
isof
isof
STRING
PICTURE
SONGS
collects
SONG
Record
Key Attribute
owns
TITLE
Attribute
Type of data
isof
STRING
Figura 4.2 Structure tree per la query 1.
4.3.
Query Repository
Il modulo Structure Tree Generator inserisce lo structure tree nel
Query Repository. La Figura 4.3 mostra lo schema E-R del Query
Repository. E’ possibile notare che i nomi degli archi dello structure
62
Generazione dello structure tree.
tree (Figura 4.2) corrispondono ai nomi delle relazioni contenute nello
schema E-R del Query Repository (Figura 4.3).
Prolog
Qname
Query
SQL_expression
DbId
(0,N)
(1,1)
Query
DbName
refersTo
Dbase
Qid
STNid
StructureTree
Node
belongsTo
(1,N)
(1,1)
Key
SQLscript
SQLscript
(1,1)
SetofNode
(0,1)
(1,N)
RecordNode
(1,1)
AttributeNode
owns
collects
(1,1)
(1,1)
(1,1)
(0,N)
contains
(0,N)
(0,1)
has
isof
dataid
(0,N)
(0,1)
root
description
TypeofData
Figura 4.3 Diagramma E-R del Query Repository.
Ogni query è identificata univocamente dall’attributo “Qid”, mentre
“Qname” è il nome della query e “SQL_expression” è la sua
espressione SQL. L’attributo “Prolog Query” rappresenta la query in
forma di una clausola definita di un programma in Prolog [Bratko,
1990] e costituisce l’input del Metaphor Definition Tool. Ogni nodo
dello structure tree è identificato univocamente dall’attributo “STNid”
ed è istanziato ad una delle seguenti tre classi di nodi:
 un nodo set_of;
 un nodo record;
 un nodo attribute.
63
Generazione dello structure tree.
Una query complessa può così essere descritta da una combinazione di
nodi che appartengono ad una delle classi su menzionata, legati
assieme da alcune relazioni in modo da generare differenti livelli di
nesting.
Ogni query ha come radice un nodo record (si veda la relazione "root"
in Figura 4.3), che può essere legato sia a nodi di tipo set_of
(attraverso la relazione "contains"), o a nodi di tipo “attribute”
(attraverso la relazione "owns"), o infine ad altri nodi di tipo record
(attraverso la relazione "has"). Gli oggetti recuperati dalla subquery di
un nodo set_of sono di tipo record (si veda la relazione "collects" in
Figura 4.3).
Poichè i nodi “attribute” possono essere di differenti tipi di dati in
dipendenza dal tipo di informazione che essi recuperano (i.e. testo,
immagini, suoni ecc.), essi sono legati dalla relazione "isof" ad un’altra
entità del Query Repository, chiamata typeofData. L’attributo “key”
del nodo “attribute” stabilisce se esso è chiave primaria nel database
sorgente.
4.4.
Strumenti utilizzati
Il problema di effettuare l’analisi sintattica è abbastanza difficile da
risolvere senza l’apporto di strumenti adeguati. Per questo motivo sono
64
Generazione dello structure tree.
state utilizzate delle utility che permettono la generazione automatica
di codice. Tra tutti gli strumenti disponibili (Lex e Yacc, Flex e Bison,
Sed e Awk, ecc.) sono stati scelti Flex e Bison. La scelta è stata fatta
perchè c’era una precedente conoscenza di Flex e Bison anche se in
versione Object-Oriented.
Solitamente usati in coppia, essi consentono la generazione di un
Parser data la grammatica del linguaggio e le espressioni regolari dei
token [Levine et al., 1992]. Non sono in grado di generare un
compilatore completo ma richiedono codice C di supporto per le parti
non strettamente sintattiche. Il loro campo di applicazione è abbastanza
ampio, sono utilizzabili per la costruzione di interpreti, convertitori di
formato, e in tutti i campi in cui si effettua analisi di formato.
4.4.1. Flex
Flex (Fast Lexical Analyzer Generator) è uno strumento per la
generazione di programmi che eseguono il riconoscimento di pattern
su un testo. A partire dalle regole scritte dal programmatore per
definire le caratteristiche lessicali di un linguaggio formale, Flex è in
grado di generare un analizzatore lessicale (Scanner) per quel tipo di
linguaggio formale. Flex riceve in input un file di testo (scan.l, si veda
la prima sezione dell’appendice) che contiene le regole per identificare
i simboli terminali del linguaggio che si sta considerando, in questo
caso l’SQL. Flex crea un file sorgente in C (lex.yy.c) contenente la
routine yylex che rappresenta lo Scanner che sarà utilizzato dal Parser
65
Generazione dello structure tree.
[Levine et al., 1992]. Lo schema generale del file in input a Flex è
nella Figura 4.4.
[ d e f in itio n s ]
%%
[ r u le s
%%
u s e r s u b r o u tin e s ]
Figura 4.4 Struttura del file in input a Flex.
La sezione definitions contiene codice C per la definizione di macro
pattern, dichiarazioni, direttive iniziali ed una elencazione di
espressioni regolari [Levine et al., 1992]. Nella sezione 1.1 in
appendice è possibile osservare un esempio di definitions per il file
scan.l.
La sezione rules contiene le regole per il riconoscimento dei pattern.
Le regole hanno il seguente formato:
 pattern da riconoscere sottoforma di espressioni regolari;
 azioni da compiere sottoforma di frammenti di programmi C
in corrispondenza del matching positivo tra file di input e
token.
In appendice la sezione rules del file scan.l contiene una elencazione
dei simboli terminali della grammatica da analizzare (l’SQL) e le
corrispondenti azioni che consistono nella restituzione del valore del
token.
66
Generazione dello structure tree.
La sezione user subroutines contiene routine in C usate come supporto
alle azioni attivate nella sezione precedente. Questa parte del file in
input a Flex è opzionale. Come è possibile notare in appendice, la
sezione user subroutines del file scan.l è vuota.
La routine yylex generata avrà il compito di fare lo scanning di un
testo cioè di leggere un file sorgente considerato come un semplice
flusso di caratteri e di suddividerlo in pezzi significativi detti “token”,
ottenuti raggruppando sequenze di caratteri.
4.4.2. Bison
A partire dalle regole grammaticali descritte dal programmatore
secondo il formalismo di Backus-Naur, Bison è in grado di generare un
analizzatore sintattico (Parser) che esamina e riconosce espressioni dei
linguaggi formali aderenti a quelle regole. Il Parser generato esamina
la sequenza dei token in input e automaticamente riconosce se tale
input coincide con una delle regole della grammatica definita. Inoltre
segnala errori sintattici in caso di match negativo tra le regole della
grammatica e l’input. Bison riceve in input un file di testo (parser.y)
contenente le regole della grammatica per identificare i simboli non
terminali del linguaggio che si sta considerando (in questo caso l’SQL)
e genera in output un file sorgente in C (parser.tab.c) che contiene una
particolare routine di parsing (yyparse) che riconosce istanze della
grammatica.
67
Generazione dello structure tree.
Lo schema generale di un file in input a Bison è riportato in Figura 4.5.
%{
C declarations
%}
Bison declarations
%%
grammar rules
%%
Additional C code
Figura 4.5 Struttura del file in input a Bison.
Le C declarations possono contenere definizioni di macro,
dichiarazioni di funzioni e di variabili che sono usate nelle azioni.
Nella sezione 1.2 in appendice è riportata la parte C declaration per il
file parser.y.
Nelle Bison declarations vengono dichiarati i nomi dei simboli
terminali e non terminali [Levine et al., 1992], è possibile specificare il
tipo di dato dei valori semantici dei simboli e la dichiarazione della
associatività di alcuni operatori. Il file parser.y contiene la
dichiarazione
dei
token
dell’SQL
(si
veda
la
sezione
1.2
dell’appendice).
68
Generazione dello structure tree.
Le grammar rules contengono una o più regole della grammatica da
analizzare e definiscono come costruire ogni simbolo non terminale a
partire dalle sue parti. Il formato di una grammar rule è il seguente:
simbolo non terminale: espressione regolare {azione}
Le azioni vengono eseguite in caso di match positivo con la
grammatica e sono istruzioni in C racchiuse tra parentesi graffe. In
appendice è mostrata la grammatica del linguaggio SQL.
La sezione additional C code può contenere qualsiasi routine di codice
C; generalmente in questa sezione è incluso l’analizzatore sintattico, la
routine per il report degli errori più altre procedure e funzioni che
vengono utilizzate nelle azioni. Il file parser.y contiene in questa
sezione le routines per per la generazione della nested relation.
I simboli %% , %{ e %} , appaiono in ogni file di input a Bison per
separare le varie sezioni.
Per effettuare il parsing di un linguaggio, esso deve essere descritto da
una grammatica context free; questo equivale a dire che è necessario
specificare uno o più gruppi sintattici e dare regole per costruirli. Il più
comune sistema formale per presentare tali regole è il Backus Naur
Form (BNF) ed ogni grammatica espressa in BNF è una grammatica
context free. Non tutte le grammatiche context free possono essere
manipolate da Bison ma solo quelle che sono LALR(1) (Look Ahead
token Left to Right) [Levine et al., 1992].
69
Generazione dello structure tree.
4.5.
Realizzazione dello Structure Tree Generator
Lo Structure Tree Generator (STG) è un programma il cui modulo
eseguibile è creato secondo i passi descritti nella Figura 4.6. Flex
riceve in input un file di testo che per convenzione ha estensione “.l”
(si veda la sezione 1.1 in appendice che illustra il file scan.l) che
contiene la lista dei simboli terminali del linguaggio SQL e genera il
codice sorgente dello Scanner in linguaggio C (lex.yy.c) contenente la
routine yylex che effettua l’analisi lessicale.
Specifica Flex
(*.l)
Flex
yylex()
Routine che effettua
l’analisi lessicale
Specifica Bison
(*.y)
Bison
yyparse()
Routine che effettua
l’analisi sintattica
Routines in C
Compilatore
C (GCC)
Librerie
Programma
Figura 4.6 Generazione del programma eseguibile.
Similmente Bison riceve in input un file di testo che per convenzione
ha estensione “.y” (si veda la sezione 1.2 in appendice che illustra il
file parser.y) contenente la grammatica del linguaggio SQL e genera il
70
Generazione dello structure tree.
codice sorgente di un analizzatore sintattico in linguaggio C
(parser.tab.c) contenente la routine yyparse che effettua l’analisi
sintattica.
Successivamente, i file di codice sorgente C generati verrano compilati
e linkati assieme agli header file dal compilatore Unix “GCC” per
generare il programma eseguibile.
4.6.
Esecuzione del programma STG
Il programma generato seguendo i passi descritti in precedenza,
durante l’esecuzione riceve in input un file contenente la query scritta
in SQL (in particolare la query è scritta nel linguaggio SQL dell’IUSInformix Universal Server) e crea i file “output” e “SET_OF”. Il file
“output” contiene la query ricevuta in input con gli eventuali messaggi
d’errore se la query non è corretta, mentre il file “SET_OF” contiene le
subquery per ogni entità presente nella query. La prima operazione
effettuata dal programma STG è l’analisi lessicale cioè lo Scanner
legge il file in input considerato come un semplice flusso di caratteri e
li raggruppa in token [Levine et al., 1992]; in questa fase sono
eliminati tutte le tabulazioni ed i caratteri carriage return.
La scansione viene effettuata dalla routine yylex contenuta nello
Scanner, invocata dalla routine yyparse contenuta nel Parser. La
sequenza dei token viene analizzata grammaticalmente per ricostruire
la derivazione della query dalla grammatica. Nel caso in cui l’input
non è sintatticamente corretto viene invocato il modulo yyerror che
71
Generazione dello structure tree.
visualizza un messaggio con il numero di linea in cui si è verificato
l’errore.
Ogni volta che una sequenza di token in input corrisponde ad una delle
regole nella grammatica della query SQL, è intrapresa una azione. Le
azioni riguardano la selezione delle relazioni e degli attributi coinvolti
nella query, l’identificazione degli attributi di Join, e la costruzione
della nested relation basata sulla clausola ORDER BY.
Considerando come input la query 1 del capitolo 4, ogni entità
corrisponde ad un nodo set_of, una istanza di una entità corrisponde ad
un nodo record e gli attributi delle entità corrispondono a nodi
attribute. Il primo passo effettuato dal programma STG per la
generazione della nested relation è l’individuazione dei set_of, degli
attribute e l’inserimento nella struttura sql_table dei nomi delle
relazioni presenti nella clausola Select (si veda la Figura 4.7).
sql_table
table
sql_script
song
SELECT title
musicType
SELECT name, notes
band
SELECT name, photo
album
SELECT title, cover
Figura 4.7 Sql_table dopo l’esecuzione delle azioni semantiche
associate alla clausola Select.
La sql_table è una lista formata da due campi, il primo contiene il
nome della entità del database sorgente ed il secondo contiene la
72
Generazione dello structure tree.
subquery ad essa associata (Figure 4.7 e 4.8). Nella sezione 1.4 in
appendice è riportato il file sorgente C che implementa questa tabella.
sql_table
table
sql_script
song
SELECT title FROM song
musicType
SELECT name, notes FROM musicType
band
SELECT name, photo FROM band
album
SELECT title, cover FROM album
Figura 4.8 Sql_table dopo l’esecuzione delle azioni semantiche
associate alla clausola From.
Quando il programma STG riconosce una clausola From verrà
effettuato
l’aggiornamento
delle
subquery
inserendo
“FROM
<name_table>” (si veda la Figura 4.8).
join_table
name_table1
name_attribute1
name_table2
name_attribute2
album
code
contained
albumCode
tipicSings
bandCode
band
code
album
code
published
albumCode
band
code
published
bandCode
song
code
contained
songCode
tipicSings
musicName
musicType
name
Figura 4.9 Join_table dopo l’esecuzione delle azioni semantiche
associate alla clausola Where.
73
Generazione dello structure tree.
La struttura join_table è creata quando è riconosciuta una condizione
di Join [Elmasri & Navate, 1989]. La join_table è una lista formata da
quattro campi in cui vengono inserite le relazioni ed attributi di Join
che compaiono nella clausola Where (si veda la Figura 4.9). Questa
tabella è necessaria per completare la generazione delle subquery.
Nella sezione 1.3 in appendice è riportato il file sorgente C che
implementa questa tabella.
sql_table
table
sql_script
song
SELECT title FROM song
musicType
SELECT name, notes FROM musicType ;
band
SELECT name, photo FROM band WHERE code IN (SELECT
bandCode FROM tipicSings WHERE musicName
=<musicName_selected> )
album
SELECT title, cover FROM album
Figura 4.10 Sql_table dopo l’esecuzione delle azioni semantiche
associate alla clausola Order by.
La costruzione della nested relation è effettuata quando il programma
STG riconosce la clausola Order by. Se due tabelle sono in sequenza
nella clausola Order by e se esse sono legate mediante una condizione
di Join, la prima nell’ordine sarà al top dello structure tree, mentre la
seconda sarà al bottom. Nella Figura 4.10 è possibile osservare la
subquery associata alla relazione band. Il risultato di questa subquery
contiene le informazioni (nome e foto) del cantante che esegue uno
stile di musica.
74
Generazione dello structure tree.
4.7.
Esempi di subquery create dal programma STG
Considerando la query 1 come input del programma STG, si ottengono
le seguenti subquery.
1. SELECT name, notes FROM musicType ;
2. SELECT name, photo FROM band WHERE code IN (SELECT
bandCode FROM tipicSings WHERE musicName
=<musicName_selected> )
3. SELECT title, cover FROM album WHERE code IN ( SELECT
albumCode FROM published WHERE bandCode
=<bandCode_selected>) ;
4. SELECT title FROM song WHERE code IN ( SELECT songCode
FROM contained WHERE albumCode =<albumCode_selected> ) ;
M U S IC T Y P E S
c o lle c ts
M U S IC T Y P E
o wns
NAM E
Figura 4.11.
o wns
N O TE S
Structure Tree
associato alla subquery 1.
Il risultato della prima subquery contiene le informazioni relative ai
tipi di musica. Lo structure tree associato a questa subquery è mostrato
in Figura 4.11.
75
Generazione dello structure tree.
Nel risultato della seconda subquery sono contenute le informazioni
relative ai cantanti che eseguono un tipo di musica. Il suo structure tree
è mostrato nella Figura 4.12.
M U S IC T Y P E
c o n tain s
BANDS
c o lle c ts
BAND
o wns
NAM E
o wns
P H O TO
Figura 4.12. Structure Tree associato alla subquery 2.
Il risultato della terza subquery contiene le informazioni relative agli
album incisi da un cantante. Il suo structure tree è mostrato nella
Figura 4.13.
BAND
c o n tain s
c o lle c ts
ALBUM S
ALBUM
o wns
T IT L E
o wns
COVER
Figura 4.13 Structure tree associato alla subquery 3.
Il risultato della quarta subquery contiene le informazioni relative alle
canzoni appartenenti ad un album. Il suo structure tree è mostrato nella
Figura 4.14.
76
Generazione dello structure tree.
ALBUM
c o n tain s
SO N G S
c o lle c ts
SO N G
o wns
T IT L E
Figura 4.14 Structure tree associato alla subquery 4.
Collegando gli structure tree ottenuti dalle subquery generate, si
ottiene facilmente lo structure tree mostrato in Figura 4.2.
77
Generazione automatica delle metafore in Virgilio.
capitolo 5
5.
Generazione automatica delle metafore in
Virgilio
5.1.
Introduzione
Una volta che lo structure tree della query è stato generato, come
descritto nel capitolo precedente, è necessario creare le corrispondenze
(mapping) tra lo structure tree e qualche mondo virtuale preso da un
insieme predefinito di mondi virtuali memorizzati nel VR Object
Repository in modo da presentare all’utente il risultato della query
mediante una scena virtuale che sfrutti una metafora appropriata. Tale
mapping è stato realizzato in modo automatico come un processo di
Soddisfacimento di Vincoli che sfrutta la strategia di ricerca depth first
degli interpreti Prolog che è descritto in questo capitolo.
A questo scopo, la rappresentazione dello structure tree è tradotta in
una clausola Prolog dal Prolog Query Generator mostrato in Figura
3.2.
78
Generazione automatica delle metafore in Virgilio.
5.2.
Requisiti per il mapping
Il processo di mapping deve incontrare un insieme di requisiti, ad
esempio:
 Consistenza con lo structure tree: la metafora deve permettere di
effettuare l’esplorazione dei dati in accordo con le relazioni
gerarchiche espresse nello structure tree. In realtà, l’organizzazione
dei risultati è basata sulla struttura della query SQL, cioè sul modo
in cui l’utente ha formulato le sue richieste. Quando la
corrispondenza tra la struttura della query SQL e la “struttura” del
mondo virtuale è severa, l’utente potrà effettuare l’esplorazione più
facilmente poichè già conosce le direzioni da scegliere.
 Completezza della metafora: Tutti i dati nella relazione risultante di
una query devono essere raggiungibili dal punto iniziale della
esplorazione.
 Realismo del mondo virtuale: Le scene presentate all’utente devono
essere realistiche. Ad esempio, mostrare un muro con centinaia di
poster non è il modo migliore di aggregare dati riguardanti dei testi
musicali.
 Efficacia della metafora: Le proprietà degli oggetti nel mondo
virtuale, devono corrispondere alle proprietà dei dati che essi
rappresentano. Ad esempio, se un CD in una scena virtuale
rappresenta un album musicale, clickando su di esso dovrebbe
79
Generazione automatica delle metafore in Virgilio.
essere possibile ascoltare una canzone, mentre le pagine di un libro
sono più appropriate per rappresentare il testo delle canzoni.
5.3.
Classificazione degli oggetti virtuali
Il mondo virtuale è visto come un insieme di oggetti del mondo
virtuale. Essi possono essere classificati in tre tipi differenti:
1. Aggregator, che non necessariamente rappresenta un dato per se
stesso, ma aggrega un insieme di oggetti virtuali di differenti tipi (ad
esempio un tavolo può aggregare l’oggetto “libro” e l’oggetto
“portaritratto”, il primo usato per rappresentare il testo delle canzoni
mentre il secondo mostra la foto del cantante;
2. Classifier, che assembla un insieme di oggetti Aggregator dello
stesso tipo (ad esempio un oggetto cassettiera è un classifier poichè
contiene molti cassetti). Naturalmente un classifier può essere più
appropriato di un altro per rappresentare un particolare insieme di
dati. Un importante fattore è il numero degli aggregatori che esso
contiene. Una reale cassettiera contiene da due a sei cassetti, mentre
un libro ha da ottanta a mille pagine. Perciò, per ogni classifier è
necessario definire un minimo ed un massimo numero di
aggregators da assemblare;
3. Accessory, che rappresenta uno specifico tipo di dato (ad esempio
un poster può visualizzare il tipo di dato “immagine” mentre una
80
Generazione automatica delle metafore in Virgilio.
etichetta è un esempio di accessory usato per rappresentare una
stringa).
E’ interessante notare che alcuni aggregators possono avere due
differenti rappresentazioni visuali: interno ed esterno. Il primo è
chiamato Aggrsymbol, ed è tipicamente mostrato quando l’utente
effettua il browse di un classifier, mentre il secondo è la naturale
rappresentazione dell’aggregator, ed è mostrato quando l’utente ha
scelto un aggregator da un classifier. Ad esempio, una stanza è un
aggregator a cui si accede da un corridoio (classifier). La sua
rappresentazione interna è ovvia e dipende dai dati aggregati, mentre la
sua rappresentazione esterna può essere una porta con una etichetta su
di esso. Così quando l’utente è nel corridoio vede solo molte porte, ma
quando entra in una stanza può vedere gli oggetti all’interno.
Tra gli oggetti virtuali menzionati in [Massari et al., 1997] vi è anche
un altro tipo di oggetti, cioè i "Jumpers", che possono essere usati per
linkare oggetti che non condividono relazioni di contenimento e.g, se
due oggetti che appartengono a due mondi virtuali devono essere
connessi, un jumper può fornire tale connessione. Tale tipo di oggetto
non è stato considerato durante l’implementazione di questa versione
di Virgilio, poichè ci sono ancora alcune problematiche aperte sul loro
effettivo significato ed utilizzo. Ad esempio non è chiaro se il mondo
virtuale a cui saltare dovrebbe contenere l’intera query iniziale oppure
solo una parte di essa. Inoltre non sarebbe facile prevedere la reazione
e il comportamento dell’utente se la metafora inizialmente scelta sia
sostituita da un’altra.
81
Generazione automatica delle metafore in Virgilio.
Gli oggetti descritti sono memorizzati nel Virtual World Object
Repository (VWOR), il cui schema è raffigurato in Figura 5.1.
h a s ic o n
c o lle c ts
(0, n)
(0, 1)
(1, 1)
T y p e o f D a ta
(1, 1)
has
(0, n)
M ax
(0, n)
(0, m )
is o f
M in
root
C la s s if ie r
c o n ta in s
(1, 1)
A g g r e g a to r
(0, n)
V W O b jI d
(1, 1)
ow ns
(0, n)
A c c e ssory
(0, m )
ow ns
(0, n)
A ggrsym bol
(0, m )
V W o b je c t
V R M L_FR M K
Figura 5.1 Diagramma E-R del Virtual World Object Repository.
L’entità VWobject possiede un attributo “VWObjId” che lo identifica
univocamente, ed un attributo “VRML_FRMK” cioè una descrizione
in VRML dell’oggetto. Un aggregator può contenere alcuni classifier
(legati dalla relazione "contains"), alcuni accessory (legati dalla
relazione "owns"), oppure altri aggregator (legati dalla relazione
"has"). Un aggregator è legato alla sua icona (i.e. ad un aggrsymbol)
attraverso la relazione "hasIcon". Un aggrsymbol può anche possedere
(“owns”) alcuni accessory, che possono corrispondere ad alcuni
accessory posseduti dall’aggregator associato. La relazione “collects”
lega ogni classifier con gli aggregator che esso colleziona.
Per evitare la generazione di scene non naturali con troppi oggetti
oppure con pochi oggetti (e.g. un edificio con 1000 piani o un libro
82
Generazione automatica delle metafore in Virgilio.
con una sola pagina), ogni classifier ha due attributi (Min e Max), che
rappresentano rispettivamente il minimo ed il massimo numero di
oggetti che esso può contenere.
Il tipo di dato che un oggetto Accessory può supportare è descritto
dalla entità "typeOfData", legato ad esso per mezzo della relazione
"isOf".
5.3.1. Il mondo virtuale “palazzo”
Il mondo virtuale utilizzato nel prototipo del sistema Virgilio descrive
un palazzo con una entrata principale che porta ad un ascensore che
contiene una tastiera. Premendo un tasto è possibile accedere ai piani
dell’edificio. Ogni tasto ha una etichetta che è un accessorio adatto a
rappresentare il tipo di dato stringa e può in tal modo identificare il
piano da raggiungere. Il piano contiene un cartellone con una scritta
che contiene la stessa informazione del tasto precedentemente
premuto.
83
Generazione automatica delle metafore in Virgilio.
OGGETTI VIRTUALI
ESEMPI VISUALI
Aggregator
Classifier
Accessory
Aggrsymbol
Tabella 5.1 Esempi visuali di oggetti virtuali.
Un piano aggrega anche un corridoio che può contenere delle stanze; è
possibile accedere ad una stanza aprendo una porta che ha una
etichetta su di esso. In una stanza si può trovare un poster con una
immagine, una cassettiera e un album di foto su un tavolo. Nella
tabella 5.1 si riportano degli esempi degli oggetti del mondo virtuale
“palazzo”.
84
Generazione automatica delle metafore in Virgilio.
5.4.
Definizione della metafora come un problema di
soddisfacimento di vincoli
L’approccio verso la definizione automatica di una metafora è basato
sul fatto che la conoscenza sui mondi virtuali può essere facilmente
rappresentata mediante un formalismo logico. In particolare l’universo
del discorso riguarda gli oggetti virtuali (aggregators, classifiers,
accessory), gli aggregator symbols, i types of data ed i numeri interi.
Ogni elemento dell’universo del discorso è identificato da una costante
distinta. Per esempio, se consideriamo il mondo virtuale “palazzo” si
possono definire le seguenti costanti:
 AGGREGATORS: ascensore, stanza, piano dell’edificio, cassetto,
cartella, pagina;
 CLASSIFIERS: tastiera, cassettiera, album, corridoio, collezione di
cartelle;
 ACCESSORIES: nome del piano, cartello, poster, immagine, foto,
etichetta sulla porta, immagine sul cassetto, etichetta sul cassetto;
 AGGREGATOR SYMBOLS: porta, frontale del cassetto, indice,
tasto;
 TYPES OF DATA: stringa, testo, immagine piccola, immagine
grande.
Le relazioni interne tra gli oggetti dell’universo del discorso sono
espresse da clausole ground (si ricorda che una clausola si dice ground
quando in essa non compaiono variabili libere). Alcuni predicati
riguardano le relazioni riportate nello structure tree. Esse sono:
85
Generazione automatica delle metafore in Virgilio.
1. contains(Aggregator, Classifier), vale a dire che un Classifier può
essere contenuto in un Aggregator;
2. collects(Classifier, Aggregator), vale a dire che un Classifier può
collezionare un insieme di Aggregator;
3. owns(Aggregator, Accessory) oppure owns(AggregatorSymbol,
Accessory), vale a dire che un Aggregator (Symbol) può contenere
un Accessory;
4. is-of(Accessory, TypeOfData), che definisce il tipo del dato che può
essere associato ad un Accessory.
Inoltre, il predicato hasicon(Aggregator, AggregatorSymbol) definisce
l’Aggregator Symbol associato ad un Aggregator, mentre i predicati
hasmin(Classifier, Integer) ed hasmax(Classifier, Integer) sono usati
per esprimere vincoli realistici sul numero degli oggetti aggregati da
un classifier.
Un esempio di possibili relazioni interne tra gli oggetti del mondo
virtuale “palazzo” è riportato in Figura 5.2.
Data una base di conoscenza su qualche mondo virtuale, il problema di
trovare la corrispondenza tra lo structure tree e un mondo virtuale, può
essere visto come un problema di soddisfacimento di vincoli applicato
alla etichettatura di immagini (si veda il capitolo 2 per ulteriori
dettagli).
Come mostrato da Mackworth (1977), la soluzione ad un Problema di
Soddisfacimento di Vincoli è simile al problema di fornire una
dimostrazione costruttiva della validità di una formula (senza simboli
86
Generazione automatica delle metafore in Virgilio.
di funzione) del tipo FG, dove F è la descrizione del mondo espressa
come una congiunzione di letterali ground che realizzano una lista dei
fatti nel mondo, mentre G è l’obiettivo definito, che è una formula
esistenziale con una congiunzione di letterali (i vincoli).
contains(elevator, button-table)
contains(room, chest-of-drawers)
contains(room, album)
contains(floor, corridor)
contains(drawer, folder-collection)
collects(button-table,floor).
collects(corridor,room).
collects(chest-of-drawers,drawer).
collects(folder-collection,folder).
collects(album,page).
hasmin(button-table,2).
hasmin(corridor,1).
hasmin(chest-of-drawers,0).
hasmin(folders,1).
hasmin(album,1).
hasmax(button-table,20).
hasmax(corridor,30).
hasmax(chest-of-drawers,20).
hasmax(folder-collection,10).
hasmax(album,30).
owns(floor,floor-name).
owns(floor,sideboard).
owns(folder,photo).
owns(room,door-label).
owns(drawer,drawer-label).
owns(drawer,drawer-picture).
owns(door,door-label).
owns(drawer-front, drawer-picture).
owns(drawer-front, drawer-label).
isof(floor-name,string).
isof(drawer-label,string).
isof(door-label,string).
isof(button-label,string).
isof(sideboard,text).
isof(board,text).
isof(picture,picture).
isof(drawer-picture,picture).
isof(photo,picture).
isof(poster,image).
hasicon(room, door).
hasicon(drawer, drawer-front).
hasicon(page, index).
hasicon(floor, button).
hasicon(elevator,nil).
hasicon(folder,nil).
owns(room, poster).
Figura 5.2 Un esempio di base di conoscenza sul mondo virtuale
“palazzo”.
La
dimostrazione
costruttiva
della
validità
della
formula
automaticamente porta ad una sostituzione per le variabili quantificate
esistenzialmente. Nella specifica applicazione, F è la descrizione di un
mondo virtuale (e.g. “palazzo”), mentre G è la descrizione dello
structure tree, che è rappresentato come una congiunzione di letterali
87
Generazione automatica delle metafore in Virgilio.
non ground le cui variabili sono quantificate esistenzialmente. Tali
letterali descrivono la struttura della query, e definiscono il numero
reale di elementi aggregati da un classifier. Gli stessi simboli di
predicato sono usati per descrivere uno structure tree.

contains(RecordMusic, SetofMusicTypes) 
hasicon(RecordMusic, RecordMusicIcon) 
collects(SetOfMusicTypes, RecordMusicType) 
hasicon(RecordMusicType, RecordMusicTypeIcon) 
hasmin(SetOfMusicTypes, MinMusicTypes)  5 >= MinMusicTypes 
hasmax(SetOfMusicTypes, MaxMusicTypes)  MaxMusicTypes >= 15 
owns(RecordMusicType, AttributeNameType) 
isof(AttributeNameType, string) 
owns(RecordMusicType, AttributeNotes)  isof(AttributeNotes, text) 
contains(RecordMusicType, SetOfBands) 
collects(SetOfBands, RecordBand) 
hasicon(RecordBand, RecordBandIcon) 
hasmin(SetOfBands, MinBands) 
2 >= MinBands  hasmax(SetOfBands, MaxBands)  MaxBands >= 30 
owns(RecordBand, AttributeName)  isof(AttributeName, string) 
owns(RecordBand, AttributePhoto)  isof(AttributePhoto, image) 
contains(RecordBand, SetOfAlbums) 
collects(SetOfAlbums, RecordAlbum) 
hasicon(RecordAlbum, RecordAlbumIcon) 
hasmin(SetOfAlbums, MinAlbums) 
1 >= MinAlbums  hasmax(SetOfAlbums, MaxAlbums) 
MaxAlbums >= 8  owns(RecordAlbum, AttributeTitle) 
isof(AttributeTitle, string) 
owns(RecordAlbum, AttributeCover)  isof(AttributeCover, picture) 
contains(RecordAlbum, SetOfSongs) 
collects(SetOfSongs, RecordSong) 
hasicon(RecordSong, RecordSongIcon)  hasmin(SetOfSongs, MinSong) 
1>=MinSong  hasax(SetOfSongs, MaxSong)  MaxSong >=10 
owns(RecordSong, AttributeNameSong)  isof(AttributeNameSong, string)
Figura 5.3. Formulazione logica dello structure tree in Figura 4.2.
Ad esempio, la formulazione logica dello structure tree in Figura 4.2 è
riportato in Figura 5.3. I numeri interi nella query sono le cardinalità
88
Generazione automatica delle metafore in Virgilio.
delle relazioni che compongono la nested relation determinata dalla
query.
Da un punto di vista pratico, è possibile usare gli interpreti Prolog per
provare la validità della formula [Shalkoff, 1990]. Il Programma
Logico è l’insieme dei fatti ground della base di conoscenza, mentre la
query Prolog è la formulazione logica dello structure tree. La risposta
calcolata dall’interprete Prolog definisce le istanziazioni delle variabili
nella query con qualche oggetto virtuale.
RecordMusic  elevator
RecordMusicIconnil
AttributePhotoposter
SetOfMusicTypesbutton-table
SetOfAlbumschest-of-drawers
MinMusicTypes2
MinAlbums0
MaxMusicTypes20
MaxAlbums20
RecordMusicTypefloor
RecordAlbumdrawer
RecordMusicTypeIconbutton
RecordAlbumIcondrawer-front
AttributeNameTypefloor-name
AttributeTitledrawer-label
AttributeNotessideboard
AttributeCoverdrawer-picture
SetOfBandscorridor
SetOfSongsfolder-collection
MinBands1
MinSongs1
MaxBands30
MaxSongs10
RecordBandroom
RecordSongfolder
RecordBandIcondoor
RecordSongIconnil
AttributeNamedoor-label
AttributeNameSongfolder-name
Figura 5.4. Istanziazione delle variabili della query in Figura 5.3 che
definisce il mapping tra lo structure tree e il mondo virtuale.
89
Generazione automatica delle metafore
In questo modo la corrispondenza tra lo structure tree in qualche
mondo virtuale è completamente definita, e sarà la metafora
eventualmente generata. Ad esempio, la risposta calcolata per la query
in Figura 5.3 definirà le istanziazioni riportate in Figura 5.4.
E’ interessante osservare che ci possono essere diverse risposte ad una
stessa query Prolog, cioè ci possono essere molte metafore che
possono rappresentare i risultati della stessa query SQL. Quando
questo accade, è importante avere un criterio per la scelta di una delle
possibili metafore. La scelta può essere basata sul più recente mondo
virtuale usato per rispondere ad una query dello stesso utente.
Questa assunzione è fatta perchè si presume che l’utente abbia più
familiarità con il mondo virtuale più recentemente visualizzato.
Tuttavia, non è stato definito alcun criterio per la scelta di metafore
che riguardano lo stesso mondo virtuale, poichè ogni scelta
ragionevole dovrebbe essere basata sul modello utente [Catarci et al.,
1996] non ancora disponibile in Virgilio.
5.5.
Il Metaphor Definition Tool
In Virgilio, il processo di mapping su descritto, è eseguito dal
Metaphor Definition Tool (MDT). L’MDT riceve in input sia la base di
conoscenza sui mondi virtuali che la query Prolog, e produce un
Metaphor Graph, che associa ad ogni nodo dello structure tree qualche
90
Generazione automatica delle metafore
oggetto virtuale. Il Metaphor Graph è memorizzato nel Metaphor
Repository, così che possa essere ritrovato dallo Scene Constructor
Server che costruisce la sequenza di scene del mondo virtuale scelto
che visualizza il risultato della query. Le scene sono costruite mediante
il VRML, ma il lavoro dello Scene Constructor Server va oltre lo
scopo di questa tesi (per dettagli si veda [Massari et al. 1997].
VW Object Name
Corridor
Room
Door
Label on the door
tipo
Classifier
Aggregator
Aggrsymbol
Accessory
Structure Tree Node
set_of bands
record band
record band
attribute name of the band
Tabella 5.2 Un esempio di metafora.
5.6.
Esempio delle scene finali in VRML
Si presentano adesso degli esempi di scene costruite mediante il
prototipo di Virgilio [Paradiso, 1997]. Esse riguardano la query 1,
descritta nel capitolo 4, il cui risultato è stato rappresentato dalla
metafora “Palazzo”. L’utente può effettuare l’esplorazione del risultato
della query navigando nell’edificio dalla sua entrata ai differenti piani
e dentro le stanze. La prima scena visualizzata è un palazzo, esso
rappresenta l’intero risultato della query ed il punto iniziale
dell’esplorazione. All’interno del palazzo, l’entrata aggrega differenti
oggetti decorativi ed un classifier, l’ascensore.
91
Generazione automatica delle metafore
Figura 5.5. Entrata del palazzo.
Questo contenitore classifica differenti stili musicali, fornendo un
accesso al successivo livello di aggregazione nello structure tree della
query di esempio. Si noti come i differenti tipi di musica siano stati
rappresentati dai pulsanti dell’ascensore.
Figura 5.6. Un oggetto contenitore che classifica i tipi di musica.
Dopo aver selezionato un bottone ed essere usciti dall’ascensore, un
poster sul muro ricorda il contenuto del piano scelto, ed una tavola
poggiata sul pavimento descrive le note relative al tipo di musica.
92
Generazione automatica delle metafore
Figura 5.7. Un oggetto contenitore corridoio che classifica i cantanti.
Il corridoio fornisce l’accesso alle stanze contenenti ulteriori
informazioni che riguardano i cantanti. I nomi dei cantanti sono scritti
su delle etichette sulle porte.
Figura 5.8. Una stanza e altri oggetti che visualizzano e classificano
altre informazioni sui cantanti.
Entrando in una stanza gli utenti possono vedere differenti oggetti che
rappresentano le informazioni relative al cantante scelto.
93
Generazione automatica delle metafore
Figura 5.9. Il libro posto sul tavolo è un oggetto classificatore
contente l’insieme delle canzoni che il cantante ha scritto.
Figura 5.10. Informazioni su ogni canzone sono memorizzate in
differenti cartelle all’interno di un cassetto.
5.7.
Conclusioni
In questa tesi si è presentato un nuovo approccio per generare
automaticamente le metafore che devono essere sfruttate nella
interazione tra gli utenti e i database. Il processo di definizione della
metafora è stato trattato come un processo di soddisfacimento di
vincoli che è visto come il problema di fornire una dimostrazione
costruttiva della validità di una formula.
94
Generazione automatica delle metafore
Il lavoro di questa tesi è un passo ulteriore nello sviluppo di Virgilio,
un sistema in realtà virtuale che visualizza gli oggetti in un database
attraverso efficaci tecniche in RV. Si è illustrato il processo che genera
da una query ad un database tutta l’informazione necessaria alla
costruzione della scena virtuale che visualizza i risultati della query,
permettendo all’utente di effettuare l’esplorazione di tale risultato.
Per effettuare un ulteriore passo avanti nello sviluppo di Virgilio, si
dovranno implementare le altre componenti dell’architettura di Virgilio
come lo Scene Constructor Server (si veda la Figura 3.1) ed il Query
Prolog Generator (si veda la Figura 3.2). Sarà necessario migliorare lo
Structure Tree Generator che nel prototipo attuale non accede al
database per il calcolo del risultato dell query.
Inoltre si prevede di incorporare un modello utente nel sistema che
possa fornire la conoscenza che deve essere sfruttata nella scelta della
metafora. Infine si dovrà effettuare il test dell’attuale prototipo con gli
utenti finali dai quali si dovrebbero ottenere importanti informazioni
utili allo sviluppo del progetto Virgilio.
95
Bibliografia.
6.
BIBLIOGRAFIA
Alberg C., Shneidermann B., (1994), Visual Information Seeking:
Tight Coupling of Dynamic Query Filters with Starfield
Displays, in Proc. CHI’94 Human Factors in Computing
Systems, ACM Press, pp 313-317.
Angelaccio, M., Catarci, T., Santucci, G., (1990), QBD: A Graphical
Query Language with Recursion, IEEE Transaption on Software
Engineering, 1150-1163.
Atzeni, P,. & de Antonellis, V., (1993), Relational Database Theory,
Benjamin/Cummings, Redwood City, CA.
Bratko, I., (1990), Prolog, Programming for artificial intelligence,
Addison Wesley Publishing.
Brill, L. M., Il Problema delle Interfacce, (1995), CG Computer
Gazzette, Nr 7, 27-31.
Carroll, J. M., Mack, R. L., Kellogg W.A., (1988), Interface Metaphors
and User Interface Design, Handbook of Human-Computer
Interaction, 67-85.
Catarci, T., Costabile, M.F, Matera, M., (1995), Visual Metaphors for
interacting with Databases. ACM SIGCHI Bulletin, 27(2), 1517.
Catarci, T., Costabile, M. F., Levialdi, S., Batini, C., (1997), Visual
Query Systems for Databases: A Survey, Journal of Visual
Languages and Computing, Academic Press, 8, 215-260.
Catarci, T., Chang, S. K., Costabile, M. F., Levialdi, S., Santucci, G.,
(1996) A Graph Based Framework for Multiparadigmatic Visual
96
Bibliografia.
Access to Databases, to appear in IEEE Transaction on
Knowledge and Data Engineering., June 1996, 8(3) 455-475.
Catarci, T., Costabile, M. F., (1996) Visual Query Systems Journal of
Visual Languages and Computing, Academic Press, 7, 243-245.
Chang, S., Costabile, M.F., Levialdi, S., (1994), Reality BitesProgressive Querying and Result Visualization in Logical and
VR Space, Proceedings. of IEEE Symposium on Visual
Languages, St. Louis, Ottobre 1994, 100-109.
Chang, S.K., Costabile, M.F., Levialdi, S., (1993) Modeling users in
an adaptive visual interface for database systems, Journal of
Visual Languages and computing, vol. 4.
Costabile, M.F., Malerba, D., Hemmje, M., Paradiso, A., (1998),
Building Metaphors for Supporting User Interaction with
Multimedia Databases, Proceedings of VDB4, l’Aquila, Italia,
47-65.
Elmasri, R., Navathe, S.B., (1989), Fundamentals of Database
Systems, The Benjamin/Cummings Publishing Company, Inc,
Redwood City, CA.
Erickson, T. D., (1990), Working with Interface Metaphors. In The Art
of Human-Computer Interface Design, (ed B. Laurel), Addison
Wesley, Reading, MA, 65-73.
Goldstain, J., Roth, S. F., (1994), Using aggregation and dynamic
queries for exploring large datasets, in Proceedings CHI ‘94,
Human factors in Computing Systems, ACM Press.
Guglielmi, L., Miglioli, P., (1996) VRML, Jackson Libri S.R.L., Prima
Edizione, Pavia.
97
Bibliografia.
Guidotti, P. A., Martello, S., Natali, A., (1994), La programmazione
logica nella risoluzione dei problemi combinatori e discreti, in
Rivista di Informatica, Milano, vol XXIV, Nr 2, 97-127.
Haber, E. M., Ioannidis, Y. E., & Livny, M., (1994), Foundation of
Visual Metaphors for Schema Display. Journal of Intelligent
Information Systems, 3, 1-38.
Hemmje,
M.,
Kunkel
C.,
Willet
A.,
(1994),
Lyberworld-A
Visualization User Interface Supporting Full Text Retrieval, in
Proceedings of ACM SIGIR’94, July 3-6, Dublin, 1994.
Lakoff, G., and Johnson, M., (1980), Metaphors We Live By. The
University of Chicago Press, Chicago.
Levine, J., Mason,T., Brown, D., (1992), Lex & Yacc. Second Edition.
O'Reilly and Associates, Sebastopol, CA..
Mackworth, A. K., (1977), Consistency in networks of relations.
Artificial Intelligence, 8 99-118.
Madsen, K. H., (1994), A Guide to Metaphorical Design.
Communications of the ACM, 37, 57-62.
Marcus, A., (1994), Managing Metaphors for Advanced User
Interface. Proceedings of International Workshop AVI'94, ACM
Press New York, 12-18.
Martin, J. H., (1990), A Computational Model of Metaphor
Interpretation. Academic Press, San Diego.
Massari, A., Pavani, S., Saladini, S., Chrysanthis, P. K., (1995), QBI:
Query By Icons, Proc. of The International Conference ACMSIGMOD, S Jose California USA.
Massari, A., Saladini, L., Hemmje, M. and Sisinni, F., (1997), Virgilio:
A Non-Immersive VR System To Browse Multimedia Databases,
98
Bibliografia.
In: Proceedings of the IEEE International Conference on
Multimedia Computing and Systems, IEEE Computer society
Press, Los Alamitos, CA, 573-580.
Meo-Evoli, L,. Rafanelli, M., Ricci, F. L., (1994) An interface for the
direct Manipulation of statistical Data, Journal of Visual
Languages and Computing, 5, pp. 175-202.
Mountford, S. J., (1990), Tools and Techniques for Creative Design. In
The Art of Human-Computer Interface Design, (ed B. Laurel),
Addison Wesley, Reading, MA, 17-30.
Paradiso, A., Hemmje, M., (1997), A Generic Refinement of the
Virgilio System's Design and a Prototypical Architecture. GMD
Technical Report, Nr. 1093, September 1997.
Preece, J., Rogers, Y., Sharp, H., Benyon, D., Holland, S., Carey, T.,
(1994), Human Computer Interaction, Addison Wesley,
Wakingham, England, 207-209.
Robertson G. G., Card S. K. and Mackinlay J. D., (1993),
Nonimmersive Virtual Reality, IEEE Computer, 26(2), 81-83.
Sarkar, M., Brown, M. H., (1994), Graphical Fisheye Views,
Communications of ACM, Dec 1994, vol. 37, No 12, pp. 73-83.
Schalkoff, R. J., (1990), Artificial Intelligence: An engineering
Approach, MC Graw Hill, New York.
Van Hentenrick, P., (1989), Costraint Satisfaction in Logic
Programming. MIT Press, Cambridge, Ma.
Zloof, M. M., (1976), Query By Example: Operation on the Transitive
Closure, Tecnical Report RC5526, IBM Research, Yorktown
Heights, 1976.
99