7. OSSA. Alessio Maculani

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "7. OSSA. Alessio Maculani"

Transcript

1 7. OSSA ossa è il modulo software realizzato in questo stage di laurea. Esso aggiunge all applicazione composta da MadCow, VisualOntoGraph e FormalAnnotation, gli strumenti necessari all utente annotatore per realizzare annotazioni strutturate. Il caso più semplice consiste nell associare ad un documento un concetto appartenente ad un ontologia di riferimento. Questo caso corrisponde all annotazione semplice ed è realizzabile tramite il modulo FormalAnnotation. Il caso più complesso consiste invece nell associare ad un documento un espressione strutturata creata ad hoc su concetti appartenenti ad un ontologia di riferimento; essa rappresenta un concetto derivabile dall ontologia di riferimento ed è possibile realizzarla tramite il modulo ossa. Nello sviluppo di ossa la scelta sui modi di generare concetti strutturati è stata influenzata da quella effettuata per il sistema A* [Osi02]. Vediamo in dettaglio come in ossa si possono generare i concetti: generalizzazione di concetti dell ontologia di riferimento; la generalizzazione si può realizzare in diversi modi: - unione di concetti dell ontologia di riferimento; un concetto definito unione di due concetti eredità le proprietà di entrambi e i vincoli imposti sui due concetti sono rilassati; vedi esempio nelle figure 42 e 43 (rilassamento vincolo sul range), e nelle figure 44 e 45 (rilassamento vincolo di cardinalità); - rilascio di un vincolo di cardinalità (su una proprietà) imposto per un concetto nell ontologia di riferimento: è realizzabile quando nell ontologia di riferimento esistono concetti la cui definizione impone un vincolo di cardinalità su una proprietà p, il nuovo concetto che si definisce generalizza uno di questi concetti rilasciando il vincolo di cardinalità su p (vedi esempio nelle figure 44 e 45); 73

2 - rilascio di un vincolo sul range (di una proprietà) imposto per un concetto nell ontologia di riferimento: è realizzabile quando nell ontologia di riferimento esistono concetti la cui definizione impone un vincolo sul range di una proprietà p, il nuovo concetto che si definisce generalizza uno di questi concetti rilasciando il vincolo sul range di p (vedi esempio nelle figure 42 e 43); specializzazione di concetti dell ontologia di riferimento; la specializzazione si può realizzare in diversi modi: - intersezione di concetti dell ontologia di riferimento: un concetto definito intersezione di due concetti eredita le proprietà di entrambi e i vincoli imposti su entrambi i concetti devono essere verificati; vedi esempio nelle figure 46 e 47 (rafforzamento vincolo sul range), e nelle figure 48 e 49 (rafforzamento vincolo di cardinalità); - aggiunta di un vincolo di cardinalità (su una proprietà) nonimposto per un concetto nell ontologia di riferimento: è realizzabile quando nell ontologia di riferimento esistono concetti la cui definizione non impone vincoli di cardinalità su una proprietà p, il nuovo concetto che si definisce specializza uno di questi concetti impono un vincolo di cardinalità su p; (vedi esempio nelle figure 48 e 49); - aggiunta di un vincolo sul range (di una proprietà) non-imposto per un concetto nell ontologia di riferimento: è realizzabile quando nell ontologia di riferimento esistono concetti la cui definizione non impone vincoli sul range di una proprietà p, il nuovo concetto che si definisce specializza uno di questi concetti impono un vincolo sul range di p; (vedi esempio nelle figure 46 e 47); restrizione su una proprietà dell ontologia di riferimento: si definisce un concetto impono un vincolo su una proprietà dell ontologia di riferimento (corrisponde a definire un concetto come specializzazione del concetto più generale owl:thing); la restrizione sulle proprietà può essere realizzata in due modi: vincolando la cardinalità di una proprietà p (corrisponde a dichiarare la classe di individui su cui p assume un numero di 74

3 valori che verifica il vincolo di cardinalità esplicitato nella definizione), vedi esempio in figura 50; vincolando il range di una proprietà p (corrisponde a dichiarare la classe di individui su cui p ha valori nell insieme esplicitato come range nella definizione), vedi esempio in figura 51; combinazione dei modi precedenti (vedi esempio in figura 52). 75

4 Maestro Ontologia di Riferimento la proprietà insegnapresso su istanze di Maestro restituisce istanze di Scuola Professore Ontologia di Riferimento la proprietà insegnapresso su istanze di Professore restituisce istanze di Università Insegnante Ontologia di Riferimento viene allora definito come Maestro Professore la proprietà insegnapresso su istanze di Insegnante restituisce istanze di Scuola Università In DL equivale a: Insegnante = Maestro Professore In OWL equivale a: <owl:class rdf:id="maestro"> <owl:restriction> <owl:onproperty rdf:resource="#insegnapresso" /> <owl:allvaluesfrom> <owl:class rdf:resource="#scuola" /> </owl:allvaluesfrom> </owl:restriction> </owl:class> <owl:class rdf:id="professore"> <owl:restriction> <owl:onproperty rdf:resource="#insegnapresso" /> <owl:allvaluesfrom> <owl:class rdf:resource="#università" /> </owl:allvaluesfrom> </owl:restriction> </owl:class> <owl:class rdf:id="insegnante"> <owl:unionof rdf:parsetype="collection"> <owl:class rdf:resource="#professore" /> <owl:class rdf:resource="#maestro" /> </owl:unionof> </owl:class> Fig. 42 esempio di generalizzazione tramite unione (rilassamento vincolo sul range) Persona Università Ipotesi Un insegnante può insegnare solo: - in una o più scuole; - in una o più università; - in una o più scuole e in una o più università. Riferimento: = persona che insegna in una o più università = persona che insegna in una o più scuole Scuola = persona che insegna in una o più università e in una o più scuole = persona che non insegna = proprietà insegnapresso = classe degli Insegnanti Fig. 43 diagramma di Venn dell esempio di figura 42 76

5 MultiCorrentista Ontologia di Riferimento la proprietà titolaredi su istanze di MultiCorrentista restituisce > 1 istanze di ContoCorrente MonoCorrentista Ontologia di Riferimento la proprietà titolaredi su istanze di MonoCorrentista restituisce esattamente 1 istanza di ContoCorrente Correntista Ontologia di Riferimento viene allora definito come MultiCorrentista MonoCorrentista la proprietà titolaredi su istanze di Correntista restituisce > 0 istanze di ContoCorrente Ipotesi: la proprietà titolaredi Ontologia di Riferimento il dominio è definito sulla classe Persona il range è definito sulla classe ContoCorrente In DL equivale a: Correntista = MultiCorrentista MonoCorrentista In OWL equivale a: <owl:class rdf:id="multicorrentista"> <owl:restriction> <owl:onproperty rdf:resource="#titolaredi" /> <owl:mincardinality rdf:datatype="&xsd;nonnegativeinteger"> 2 </owl:mincardinality> </owl:restriction> </owl:class> <owl:class rdf:id="monocorrentista"> <owl:restriction> <owl:onproperty rdf:resource="#titolaredi" /> <owl:cardinality rdf:datatype="&xsd;nonnegativeinteger"> 1 </owl:cardinality> </owl:restriction> </owl:class> <owl:class rdf:id="correntista"> <owl:unionof rdf:parsetype="collection"> <owl:class rdf:resource="#multicorrentista" /> <owl:class rdf:resource="#monocorrentista" /> </owl:unionof> </owl:class> Fig. 44 esempio di generalizzazione tramite unione (rilassamento vincolo di cardinalità) Persona ContoCorrente Riferimento: = persona che è titolare di almeno 2 ContoCorrenti = persona che è titolare di esattamente 1 ContoCorrente = persona che non è titolare di alcun ContoCorrente = proprietà titolaredi = classe dei Correntisti Fig. 45 diagramma di Venn dell esempio di figura 44 77

6 ProprietarioBeniImmobili Ontologia di Riferimento la proprietà proprietariodi su istanze di ProprietarioBeniImmobili restituisce almeno un istanza di BeniImmobili ProprietarioBeniMobili Ontologia di Riferimento la proprietà proprietariodi su istanze di ProprietarioBeniMobili restituisce almeno un istanza di BeniMobili ProprietarioBeniImmobiliEMobili Ontologia di Riferimento viene allora definito come ProprietarioBeniImmobili ProprietarioBeniMobili la proprietà proprietariodi su istanze di ProprietarioBeniImmobiliEMobili restituisce almeno un istanza di BeniImmobili e almeno un istanza di BeniMobili In DL equivale a: ProprietarioBeniImmobiliEMobili = ProprietarioBeniImmobili ProprietarioBeniMobili In OWL equivale a: <owl:class rdf:id="proprietariobeniimmobili"> <owl:restriction> <owl:onproperty rdf:resource="#proprietariodi" /> <owl:somevaluesfrom> <owl:class rdf:resource="#beniimmobili" /> </owl:somevaluesfrom> </owl:restriction> </owl:class> <owl:class rdf:id="proprietariobenimobili"> <owl:restriction> <owl:onproperty rdf:resource="#proprietariodi" /> <owl:somevaluesfrom> <owl:class rdf:resource="#benimobili" /> </owl:somevaluesfrom> </owl:restriction> </owl:class> <owl:class rdf:id="proprietariobeniimmobiliemobili"> <owl:intersectionof rdf:parsetype="collection"> <owl:class rdf:resource="#proprietariobeniimmobili" /> <owl:class rdf:resource="#proprietariobenimobili" /> </owl:intersectionof> </owl:class> Fig. 46 esempio di specializzazione tramite intersezione (rafforzamento vincolo sul range) Persona BeniMobili Riferimento: = Persona che è proprietaria di uno o più BeniMobili BeniImmobili = Persona che è proprietaria di uno o più BeniImmobili = persona che è proprietaria di uno o più BeniImmobili e di uno o più BeniMobili = persona che non ha proprietà = proprietà proprietariodi = classe dei ProprietariBeniImmobiliEMobili Fig. 47 diagramma di Venn dell esempio di figura 46 78

7 PersonaConPiuDiUnaProprietà Ontologia di Riferimento la proprietà proprietariodi su istanze di PersonaConPiuDiUnaProprietà restituisce > 1 Oggetti PersonaConMenoDiTreProprietà Ontologia di Riferimento la proprietà proprietariodi su istanze di PersonaConMenoDiTreProprietà restituisce < 3 Oggetti PersonaConDueProprietà Ontologia di Riferimento viene allora definito come PersonaConPiuDiUnaProprietà PersonaConMenoDiTreProprietà la proprietà proprietariodi su istanze di PersonaConDueProprietà restituisce esattamente 2 Oggetti Ipotesi: la proprietà proprietariodi Ontologia di Riferimento il dominio è definito sulla classe Persona il range è definito sulla classe Oggetto In DL equivale a: PersonaConDueProprietà = PersonaConPiuDiUnaProprietà PersonaConMenoDiTreProprietà In OWL equivale a: <owl:class rdf:id="personaconpiudiunaproprietà"> <owl:restriction> <owl:onproperty rdf:resource="#proprietariodi" /> <owl:mincardinality rdf:datatype="&xsd;nonnegativeinteger"> 2 </owl:mincardinality> </owl:restriction> </owl:class> <owl:class rdf:id="personaconmenoditreproprietà"> <owl:restriction> <owl:onproperty rdf:resource="#proprietariodi" /> <owl:maxcardinality rdf:datatype="&xsd;nonnegativeinteger"> 2 </owl:maxcardinality> </owl:restriction> </owl:class> <owl:class rdf:id="personacondueproprietà"> <owl:intersectionof rdf:parsetype="collection"> <owl:class rdf:resource="#personaconpiudiunaproprietà" /> <owl:class rdf:resource="#personaconmenoditreproprietà" /> </owl:intersectionof> </owl:class> Fig. 48 esempio di specializzazione tramite intersezione (rafforzamento vincolo di cardinalità) Persona Oggetto Riferimento: = Persona che è proprietaria di più di 2 Oggetti = Persona che è proprietaria di 1 Oggetto = Persona che è proprietaria di 2 Oggetti + = classe delle PersoneConPiuDiUnaProprietà + = classe delle PersoneConMenoDiTreProprietà = Persona che non ha proprietaria = proprietà proprietariodi = classe delle PersoneConDueProprietatà Fig. 49 digramma di Venn dell esempio di figura 48 79

8 ProprietarioBeniImmobili Ontologia di Riferimento viene allora definito come la classe di individui su cui la proprietà proprietariodi restituisce almeno un istanza di BeniImmobili (suppono che proprietariodi,beniimmobili Ontologia di Riferimento) In DL equivale a: ProprietarioBeniImmobili = ( proprietariodi. BeniImmobili ) In OWL equivale a: <owl:class rdf:id="proprietariobeniimmobili"> <owl:restriction> <owl:onproperty rdf:resource="#proprietariodi" /> <owl:somevaluesfrom> <owl:class rdf:resource="#beniimmobili" /> </owl:somevaluesfrom> </owl:restriction> </owl:class> Fig. 50 definizione di un concetto vincolando il range di una proprietà MultiProprietario Ontologia di Riferimento viene allora definito come la classe di individui su cui la proprietà proprietariodi restituisce >1 Oggetti Ipotesi: la proprietà proprietariodi Ontologia di Riferimento il dominio è definito sulla classe Persona il range è definito sulla classe Oggetto In DL equivale a: MultiProprietario = ( 2 proprietariodi ) In OWL equivale a: <owl:class rdf:id="multiproprietario"> <owl:restriction> <owl:onproperty rdf:resource="#proprietariodi" /> <owl:mincardinality rdf:datatype="&xsd;nonnegativeinteger"> 2 </owl:mincardinality> </owl:restriction> </owl:class> Fig. 51 definizione di un concetto vincolando la cardinalità di una proprietà MultiProprietarioDiSoliBeniImmobili Ontologia di Riferimento viene allora definito come la classe di individui su cui la proprietà proprietariodi restituisce >1 istanze di BeniImmobili e 0 istanze di BeniMobili (suppono che BeniImmobili,BeniMobili Ontologia di Riferimento) Ipotesi: la proprietà proprietariodi Ontologia di Riferimento il dominio è definito sulla classe Persona il range è definito sulla classe Oggetto In DL equivale a: MultiProprietarioDiSoliBeniImmobili = ( ( 2 proprietariodi ) ( proprietariodi. BeniImmobili ) ) In OWL equivale a: <owl:class rdf:id="multiproprietariobeniimmobili "> <owl:intersectionof rdf:parsetype="collection"> <owl:restriction> <owl:onproperty rdf:resource="#proprietariodi" /> <owl:mincardinality rdf:datatype="&xsd;nonnegativeinteger"> 2 </owl:mincardinality> </owl:restriction> <owl:restriction> <owl:onproperty rdf:resource="#proprietariodi" /> <owl:allvaluesfrom> <owl:class rdf:resource="#beniimmobili" /> </owl:allvaluesfrom> </owl:restriction> </owl:intersectionof> </owl:class> Fig. 52 definizione di un concetto combinando i modi precedenti 80

9 7.1 Linguaggio L per costruire le Annotazioni In questo paragrafo è utilizzata la terminologia definita nel capitolo 4. Il linguaggio che è stato scelto per definire le espressioni di annotazione che si possono costruire con il modulo OSSA è OWL DL (-) (vedi figura 53), il quale utilizza un sottoinsieme dei costruttori OWL. Costruttore OWL Sintassi DL Esempio intersectionof A 1 A 2 Human Male unionof A 1 A 2 Abstract Physical allvaluesfrom R. A haschild.doctor somevaluesfrom R. A haschild.doctor maxcardinality n R 2 haschild mincardinality n R 2 haschild Cardinality = n R = 2 haschild Fig. 53 costruttori di OWL DL (-) La scelta di OWL DL (-) è stata influenzata dal fatto che le espressioni che costruisce un utente annotatore tramite il modulo OSSA dovrebbero essere verificate semanticamente sull ontologia di riferimento tramite l utilizzo di un reasoner. La verifica semantica impedisce di memorizzare sul server espressioni di annotazione incoerenti con l ontologia (ad esempio l espressione OggettiBianchi OggettiNeri è incoerente con un ontologia in cui la classe OggettiBianchi è definita disgiunta dalle classe OggettiNeri perché risulta una classe vuota). È vero, come detto in precedenza, che per OWL DL (corrispondente a DL SHOIN) il problema di reasoning è decidibile, ma in realtà molti dei reasoner esistenti possono gestire solo un sottoinsieme di OWL DL. Racer [HM01] ad esempio, non gestisce la possibilità di definire una classe attraverso l enumerazione delle sue istanze e consente la 81

10 restrizione di cardinalità solo su ruoli semplici 47. Visto che in ossa è previsto tra gli sviluppi futuri l utilizzo di un reasoner esterno scelto tra quelli già esistenti si è scelto di escludere costrutti come oneof e not 48 per evitare di scegliere un linguaggio non gestito da diversi reasoner. 47 Ruolo semplice: proprietà che non è transitiva e che non ha sottoproprietà transitive. 48 not: costruttore utile alla definizione del complemento di una classe. 82

11 7.2 CFG G che genera L In questo paragrafo viene descritta in dettaglio la Context Free Grammar (CFG) che è stata utilizzata nello sviluppo di OSSA. Una definizione di CFG è riportata di seguito (vedi [Sip97]): Definizione una Context-Free Grammar è una 4-tupla (V, S, R, S), dove: 1. V è un insieme finito di variabili (o non-terminali), 2. Σ è un insieme finito, disgiunto da V, di terminali, 3. R è un insieme finito di regole, ogni regola associa ad una variabile una stringa di variabili e terminali, e 4. S V è la variabile iniziale. Le regole sono della forma A x, dove A V e x ( Σ V) *. A x è applicabile ad una stringa ω (Σ V) * se esistono due stringhe y,z (Σ V) * tali che ω = yaz. Il risultato dell applicazione di A x a ω è la stringa w = yxz. In tal caso si dice che la stringa w è derivata direttamente da ω nella grammatica G, in simboli ω G w. G è una relazione binaria su (Σ V) * ; la chiusura riflessiva e transitiva di G è solitamente indicata con. Un modo compatto quindi per esprimere che possiamo ottenere w da ω in zero o più passi applicando zero o più regole di una CFG G, è scrivere: * G w * ω. G L insieme di stringhe di terminali che si può generare da una CFG G è il linguaggio L(G). Allora possiamo scrivere: L(G) = { ω S * S * G ω }. Da questo punto in poi il linguaggio OWL DL (-) descritto nel paragrafo 7.1 sarà chiamato semplicemente L. Nel realizzare la grammatica per il linguaggio L sono state fatte le seguenti semplificazioni: 1) i costruttori DL e sono due operatori binari e in una CFG che genera L vanno considerati simboli terminali; in seguito si scriverà opbin per 83

12 intere indistintamente o ; in pratica è come se opbin fosse un non-terminale da cui è possibile produrre o, e noi lo trattassimo come se fosse un terminale; in altre parole conosciamo l esistenza della regola: opbin ma la omettiamo dall insieme R della grammatica e trattiamo opbin come tratteremmo un simbolo terminale per semplificare la trattazione (si noti che questa semplificazione non influenza i ragionamenti); 2) i costruttori DL e sono due quantificatori e in una CGF che genera L vanno considerati simboli terminali; analogamente alla prima considerazione, in seguito si scriverà quant per intere indistintamente o ; conosciamo l esistenza della regola: quant ma la omettiamo dall insieme R della grammatica e trattiamo quant come tratteremmo un simbolo terminale per semplificare la trattazione (si noti che questa semplificazione non influenza i ragionamenti); 3) i costruttori DL, e = servono a vincolare la cardinalità di una proprietà e in una CGF che genera L vanno considerati simboli terminali; analogamente alla prima considerazione, in seguito si scriverà card per intere indistintamente, o = ; conosciamo l esistenza della regola: card = ma la omettiamo dall insieme R della grammatica e trattiamo card come tratteremmo un simbolo terminale per semplificare la trattazione (si noti che questa semplificazione non influenza i ragionamenti); 4) per costruire espressioni di annotazione possono essere utilizzate le proprietà definite in un ontologia di riferimento; queste sono un numero finito n; siano proprietà 1, proprietà 2,, proprietà n le proprietà definite nell ontologia di riferimento, in una CGF che genera L queste vanno considerate simboli terminali; analogamente alla prima considerazione, in seguito si scriverà property per intere indistintamente proprietà 1, o proprietà 2,, o proprietà n ; conosciamo l esistenza della regola: property proprietà 1 proprietà 2 proprietà n 84

13 ma la omettiamo dall insieme R della grammatica e trattiamo property come tratteremmo un simbolo terminale per semplificare la trattazione (si noti che questa semplificazione non influenza i ragionamenti); 5) per costruire espressioni di annotazione possono essere utilizzate le classi definite in un ontologia di riferimento; queste sono un numero finito m; siano classe 1, classe 2,, classe m le classi definite nell ontologia di riferimento, in una CGF che genera L queste vanno considerate simboli terminali; analogamente alla prima considerazione, in seguito si scriverà class per intere indistintamente classe 1, o classe 2,, o classe m ; conosciamo l esistenza della regola: class classe 1 classe 2 classe m ma la omettiamo dall insieme R della grammatica e trattiamo class come tratteremmo un simbolo terminale per semplificare la trattazione (si noti che questa semplificazione non influenza i ragionamenti); 6) per vincolare la cardinalità di una proprietà si deve inserire un numero intero nell espressione di annotazione (ad esempio 3 haschild ); in una CGF che genera L i numeri interi (utili esclusivamente a questo scopo) vanno considerati simboli terminali; analogamente alla prima considerazione, in seguito si scriverà n per intere indistintamente 0, 1, 2, ; a n è associato il linguaggio regolare delle stringhe che rappresentano numeri interi, definito dall espressione regolare: 0+[1-9][0-9] * ; conosciamo l esistenza di regole che a partire dal non-terminale n generano il linguaggio degli interi appena definito ma omettiamo tali regole dall insieme R della grammatica e trattiamo n come tratteremmo un simbolo terminale per semplificare la trattazione (si noti che questa semplificazione non influenza i ragionamenti). Le sei semplificazioni sopra elencate sono riassunte nella tabella in figura

14 terminali semplificazione regola implicita, opbin opbin, quant quant,, = card card = proprietà 1, proprietà 2,, proprietà n property property proprietà 1 proprietà 2 proprietà n classe 1, classe 2,, classe m class class classe 1 classe 2 classe m 0, 1, 2, 3, 4, n n Fig. 54 semplificazioni sulla CFG sviluppata Ora che sono state definite le semplificazioni operate (figura 54) al linguaggio L (figura 53) contenente le espressioni di annotazione generabili con OSSA, si può definire una prima CFG G tale che L(G) = L. Si noti che in questa fase del progetto è stata adottata la grammatica sviluppata per il sistema A* in [Osi02]. G = (V, S, R, S ), dove: - V = { E, Q, F }; - S = { opbin, quant, card, property, class, n, (, ),. }; - R = { E E opbin Q Q, Q quant property. F F, F ( E ) class card n property }; - S = E ; G è una grammatica non ambigua (vedi [Fac03]) con ricorsioni sinistre (vedi nota 50 e [ASU88]); precisamente G ha una sola regola ricorsiva a sinistra: E E opbin Q. In fase progettuale si è deciso di realizzare per ossa un interfaccia che permetta di costruire tutte e sole le espressioni del linguaggio L(G). Per garantire che sia verificato questo vincolo non è sufficiente realizzare un interfaccia grafica con pulsanti per l inserimento nell espressione di tutti e soli i terminali della grammatica, è necessario anche effettuare una verifica sintattica dell espressione costruita, verificare cioè che esista una sequenza di regole di G che dal simbolo iniziale E * genera l espressione w costruita dall annotatore ( E G w ). La verifica sintattica è solitamente eseguita da un analizzatore sintattico, anche detto parser. Questo strumento è il cuore delle prime fasi di un compilatore (l analisi 86

15 sintattica è eseguita dal compilatore nella seconda fase della compilazione, quella cioè immediatamente successiva all analisi lessicale). Nel nostro caso il compito del parser è quello di analizzare la struttura di un espressione di annotazione (del codice di un programma nel caso del compilatore) e di verificare l esistenza di errori. Applicando le regole di una CFG al simbolo non-terminale più a sinistra delle forme sentenziali 49 si ottiene una derivazione sinistra. Data un espressione di annotazione, vogliamo un parser che ottenga la sua derivazione sinistra. Per far ciò possiamo utilizzare un parser top-down, un parser cioè che parte dalla radice dell albero di derivazione e cerca di ricostruire la crescita dell albero che porta alla sequenza di terminali della data espressione ricostruo una derivazione sinistra. Precedentemente è stato detto che la grammatica G ha regole ricorsive a sinistra; questo è un problema perché nessun parser top-down può gestirle. Visto però che in G c è una sola regola con ricorsioni a sinistra e questa è di tipo immediata 50, non è difficile scrivere una nuova grammatica G, equivalente a G, in cui la regola ricorsiva a sinistra è sostituita da altre non ricorsive a sinistra. Il processo eseguito per eliminare tale regola è il seguente (vedi [ASU88]): 1) separare la regola ricorsiva dall altra: E E opbin Q; E Q; 2) introdurre un nuovo non-terminale Z; 3) cambiare la regola non ricorsiva in: E Q Z; 4) rimuovere la regola ricorsiva e sostituirla con: Z e opbin Q Z Si noti che Z e è la regola nulla (e è il simbolo nullo) e serve a terminare la derivazione di un espressione. La CFG G che risulta dal processo appena descritto è la seguente. 49 Una forma sentenziale di una grammatica G è una qualunque sequenza di terminali e non-terminali che può occorrere in una derivazione in G; formalmente è una qualunque sequenza α tale che * G α ( V S ) * e S α. 50 Siano A,B simboli non-terminali e a,b simboli terminali, le regole con ricorsioni sinistre immediate sono del tipo { A Aa }, le regole con ricorsioni sinistre non immediate sono del tipo { A Ba, B Ab }; le regole del tipo { B abb } o { B ab } non sono ricorsive a sinistra. 87

16 G = (V, S, R, S ), dove: - V = { E, Q, F, Z }; - S = { opbin, quant, card, property, class, n, (, ),. }; - R = { E Q Z, Z e opbin Q Z, Q quant property. F F, F ( E ) class card n property }; - S = E. 88

17 7.3 Alcune definizioni sui parser La grammatica G del paragrafo 8.2 è non-ambigua e senza ricorsioni sinistre, il che ci permette di sviluppare per essa un parser top-down. Più precisamente per G può essere sviluppato un parser top-down predittivo. Questo tipo di parser viene utilizzato per grammatiche che hanno alcune parti destre di regole che cominciano con nonterminali, ha la capacità di guardare avanti nella grammatica in modo da prevedere quali terminali sono derivabili (mediante derivazioni sinistre) da ciascuno dei vari non-terminali. I parser predittivi per prevedere i terminali derivabili dai non-terminali in una CFG G utilizzano gli insiemi dati in output dalla funzione First che è definita nel modo seguente. First(α): input: α è una forma sentenziale generata da G; output: un insieme di terminali di G; si considerino tutte le sequenze derivabili in G da α mediante derivazioni sinistre; se α * β e β inizia con un terminale, allora quel terminale appartiene a First(α). G Tutti i parser che utilizzano gli insiemi First sono detti predittivi. La tecnica appena descritta non può essere utilizzata per grammatiche con regole nulle o tali che gli insiemi First di due diverse parole non sono disgiunti. Per gestire questi casi si utilizza in aggiunta a First una seconda funzione: Follow. Nel definirla assumiamo che ogni forma sentenziale ha appeso il carattere speciale $ come segno di demarcazione ( $ è appeso alla fine di ogni parola). Follow(A): input: A è un non-terminale di G; output: un insieme di terminali; Follow(A) è l insieme di tutti i terminali che possono venire subito dopo A in una forma sentenziale derivabile da G; se (in G) A può capitare alla fine, allora Follow(A) include $. 89

18 Un parser pre in input una stringa ω e una grammatica G, quindi cerca su G una derivazione che a partire dal simbolo iniziale S produca ω. Se il parser trova una tale derivazione, allora ω L(G); se non la trova, allora ω L(G). Parser predittivi che utilizzano in questo processo le funzioni First e Follow sono detti parser LL(1), grammatiche per cui questa tecnica può essere utilizzata sono dette grammatiche LL(1). In questa notazione la prima L sta per left ed indica che la scansione è da sinistra a destra, la seconda L sta per left ed indica che la derivazione è sinistra, (1) sta ad indicare che si guarda avanti di un carattere. Le grammatiche LL(1) assicurano che guardando un carattere in avanti il carattere in arrivo determina univocamente quale parte destra della regola scegliere. Formalmente una grammatica LL(1) è definita nel modo seguente. Una grammatica è LL(1) se per ogni coppia di regole A α β si ha: 1) (First(α) {e}) (First(β) {e}) = ; 2) se α è annullabile 51, allora First(β) Follow(A) =. 51 Un simbolo è annullabile se da esso è derivabile la stringa vuota e, oppure se è esso stesso la stringa vuota e. 90

19 7.4 Parser LL(1) per la grammatica G La grammatica G è LL(1); di seguito è presentata la dimostrazione. Dimostrazione: Il simbolo iniziale E è parte sinistra di una sola regola (E Q Z), allora le condizioni 1 e 2 non devono essere verificate su E. Il simbolo non-terminale Z è parte sinistra della coppia di regole: Z ε opbin Q Z; First(ε) = ; First(opBin Q Z) = { opbin }; First(ε) First(opBin Q Z) = ; ε è annullabile; Follow(Z) = { $, ) }; First(opBin Q Z) = { opbin }; Follow(Z) First(opBin Q Z) =. Il simbolo non-terminale Q è parte sinistra della coppia di regole: Q quant property. F F ; First(quant property. F) = { quant } ; First(F) = { (, class, card } ; First(quant property. F) First(F) =. Il simbolo non-terminale F è parte sinistra delle coppie di regole: 1) F ( E ) class; First(( E )) = { ( }; First(class) = { class }; First(( E )) First(class) = ; 2) F ( E ) card n property; First(( E )) = { ( }; First(card n property) = { card }; First(( E )) First(card n property) = ; 91

20 3) F class card n property. First(class) = { class }; First(card n property) = { card }; First(class) First(card n property) =. la grammatica G è LL(1) c.v.d. Un modo di implementare un parser LL(1) è quello di racchiudere ogni insieme di regole a partire da uno stesso non-terminale in una funzione Booleana. In questo tipo di parser deve esservi una tale funzione per ogni non-terminale della grammatica. Ogni funzione dovrà tentare ciascuna parte destra finché non trova una corrispondenza. Se la corrispondenza viene trovata la funzione deve ritornare true, altrimenti deve ritornare false. Ciascuna di queste funzioni dovrà scegliere la parte destra in base agli insiemi First e Follow. Un parser LL(1) di questo tipo cerca sulla grammatica la derivazione di una stringa eseguo per prima la funzione del simbolo iniziale, la quale chiamerà ricorsivamente le altre funzioni e/o essa stessa secondo le regole della grammatica. Ogni funzione restituisce true o false e se tutte le istanze di tutte le funzioni restituiscono true allora la prima istanza della funzione del simbolo iniziale (cioè quella che è stata generata per prima ed ha generato tutte le altre) restituisce true, altrimenti restituisce false. Nella realizzazione di ossa è stato sviluppato un parser di questo tipo; nelle figure 55, 56, 57 e 58 è rappresentato lo pseudocodice delle quattro funzioni che costituiscono il parser LL(1) implementato in ossa per la grammatica G (in realtà il parser implementato in ossa è più sofisticato di quello presentato di seguito, infatti oltre a eseguire la verifica sintattica di un espressione DL di annotazione, durante il parsing costruisce e fornisce in output l espressione OWL corrispondente a quella DL data in input). 92

21 Regola: E Q Z; First(Q Z) = { quant, class, card, ( }; function E: Boolean var cc: char; E:= false; cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc { quant, class, card, ( } then sposta il cursore a sinistra di una posizione; if Q then if Z then E := true; Fig. 55 funzione E del parser LL(1) per G 93

22 Regole: Z ε opbin Q Z; First(opBin Q Z) = { opbin }; Follow(Z) = { $, ) }; function Z: Boolean var cc: char; Z:= false; cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc = opbin then if Q then if Z then Z := true; else if cc { $, ) } then sposta il cursore a sinistra di una posizione; Z := true; Fig. 56 funzione Z del parser LL(1) per G 94

23 Regole: Q quant property. F F ; First(quant property. F) = { quant }; First(F) = { (, class, card } ; function Q: Boolean var cc: char; Q:= false; cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc = quant then cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc = property then cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc =. then if F then Q := true; else if cc { (, class, card } then sposta il cursore a sinistra di una posizione; if F then Q := true; Fig. 57 funzione Q del parser LL(1) per G 95

24 Regole: F ( E ) class card n property; First( (E) ) = { ( }; First(class) = { class } ; First(card n property) = { card } ; Follow(F) = { $, opbin, ) }; function F: Boolean var cc: char; F:= false; cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc = card then cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc = n then cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc = property then cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc { $, opbin, ) } then sposta il cursore a sinistra di una posizione; F := true; else if cc = class then cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc { $, opbin, ) } then sposta il cursore a sinistra di una posizione; F := true; else if cc = ( then if E then cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc = ) then cc:= il primo carattere alla destra del cursore; sposta il cursore a destra di una posizione; if cc { $, opbin, ) } then sposta il cursore a sinistra di una posizione; F := true; Fig. 58 funzione F del parser LL(1) per G 96

25 7.5 Inizializzazione dell applicazione La fase di costruzione di annotazioni strutturate tramite ossa presuppone la precedente fase di selezione e recupero di classi e/o di proprietà da un ontologia tramite VisualOntoGraph. Senza avere un insieme di classi e/o di proprietà non è possibile infatti costruire espressioni del linguaggio L(G ) precedentemente descritto. Un utente che vuole costruire un annotazione strutturata tramite ossa è vincolato quindi a interagire prima con FormalAnnotation per lanciare VisualOntoGraph, quindi con VisualOntoGraph per selezionare classi e/o proprietà, quindi ancora con FormalAnnotation per lanciare OSSA. Si osservi che nello schema appena descritto il lato client di VisualOntoGraph e il lato client di FormalAnnotation si sincronizzano sull evento creazione nella macchina dell annotatore dei file classe.txt e properties.txt. Finché VisualOntoGraph non ha creato questi file non è possibile utilizzare l interfaccia di FormalAnnotation. Questo schema di comunicazione è ereditato da ossa, il quale quindi se è lanciato da FormalAnnotation successivamente alla selezione di concetti con VisualOntoGraph può aspettarsi di trovare localmente questi due file. Una volta che è stato lanciato ossa, esso per prima cosa va a leggere i file classes.txt e properties.txt (se non li trova avverte l utente con il corrispondente messaggio di errore). Questi sono file di testo e contengono le informazioni relative alle classi e alle proprietà selezionate precedentemente dall utente. Ossa riconosce queste informazioni grazie ad un analisi lessicale del testo contenuto nei file. I file sono creati da VisualOntoGraph secondo uno schema su cui ci si è accordati in fase di progetto (vedi figure 59 e 60). classe 1, classe 2,... classe n Fig. 59 schema file classes.txt proprietà 1 (dominio 1,codominio 1 ), proprietà 2 (dominio 2,codominio 2 ),... proprietà m (dominio m,codominio m ) Fig. 60 schema file properties.txt 97

26 I due file contengono una sequenza di caratteri che in fase di analisi lessicale ossa tokenizza, trasforma cioè in un insieme di parole (token). L analisi lessicale è eseguita durante la lettura dei file. Contemporaneamente alla tokenizzazione i token vengono ordinati alfabeticamente (tramite un algoritmo di ordinamento con ricerca binaria, simile al Merge-Sort, con complessità n log 2 n ) e ad ognuno è assegnato un codice identificativo (univoco) breve per migliorare l efficienza dell analisi sintattica che successivamente sarà eseguita dal parser. I token ordinati alfabeticamente sono memorizzati in una tabella, la quale contiene l etichetta e il codice identificativo di ogni token (vedi figura 61). Successivamente alla memorizzazione nella tabella, la lista ordinata di token è presentata all utente in un apposita finestra (vedi figura 62), la quale permette in fase di creazione dell espressione di annotazione di selezionare le classi o le proprietà e di importarle (tramite un apposito pulsante) in un altra finestra in cui è visualizzata l espressione DL e la corrispondente espressione OWL. 98

27 PermanentResidence, Woman, Human, Man, Organism, classes.txt tokenizzazione e ordinamento n log n home(human,permanentresidence), daughter(woman,human), wife(woman,man), husband(man,woman), mother(organism,organism), sister(woman,human), brother(man,human), child(human,human) properties.txt etichetta brother child daughter home Human husband Man mother Organism PermanentResidence sister wife Woman ID p0 p1 p2 p3 c0 p4 c1 p5 c2 c3 p6 p7 c4 tabella dei token in memoria Fig. 61 lettura file classes.txt e properties.txt con tokenizzazione e ordinamento (i concetti dell esempio sono presi da SUMO) 99

28 Fig. 62 interfaccia di ossa per la visualizzazione di concetti (la visualizzazione è riferita all esempio in figura 61) Si osservi che: - l esistenza dei file classes.txt e properties.txt sulla macchina utilizzata per annotare; - la lettura e la tokenizzazione del contenuto di questi file; - l ordinamento, l assegnazione di un ID e la memorizzazione dei token risultanti dalla tokenizzazione; - la creazione e l esistenza della tabella; sono completamente trasparenti all utente e realizzati automaticamente al momento del lancio dell applicazione. Quando appare sul monitor dell annotatore l interfaccia di ossa, i processi sopra elencati sono già stati eseguiti e la tabella che è stata creata risiede in memoria. Appena l interfaccia di ossa è visualizzata la fase di inizializzazione è conclusa. 100

29 7.6 Pre-Parsing e Feedback-Aiuto Durante l interazione che un utente ha con le finestre grafiche di ossa per realizzare l espressione DL di annotazione, l applicazione esegue una parziale verifica sintattica. Tale verifica precede il vero e proprio controllo sintattico che esegue il parser una volta che la costruzione dell espressione è terminata ed è stata implementata per impedire all utente di commettere errori grossolani. Questa operazione di verifica sintattica parziale è stata chiamata Pre-Parsing; essa individua gli errori al momento stesso che sono commessi e avverte l utente con una finestra di dialogo che, oltre al messaggio di errore, contiene un consiglio sulla giusta sintassi. Tali consigli sono stati chiamati Feedback-Aiuto (vedi figura 72). Fig. 72 esempio di Feedback-Aiuto Il processo di Pre-Parsing è basato su delle considerazioni fatte sulla grammatica G. Nelle regole di tale grammatica ogni categoria sintattica ha una forma ben definita che ha permesso la definizione di ulteriori regole. Queste nuove regole sono utilizzate nel Pre-Parsing ma non sono utilizzate nella verifica sintattica vera e propria. Le considerazioni che sono state fatte sono del tipo: se F card n property è una regola della grammatica, allora nella costruzione dell espressione è consentito: 1) inserire il simbolo n successivamente al simbolo card; 2) inserire il simbolo property successivamente al simbolo n. 101

30 Questo appena descritto è il caso più semplice perchè la parte destra della regola è composta solo di simboli terminali. Il caso più complesso è invece del tipo: se Q quant property. F è una regola della grammatica e First(F) = {(, class, card}, allora nella costruzione dell espressione è consentito: 1) inserire il simbolo property successivamente al simbolo quant ; 2) inserire il simbolo. successivamente al simbolo property ; 3) inserire il simbolo ( successivamente al simbolo. ; 3) inserire il simbolo class successivamente al simbolo. ; 3) inserire il simbolo card successivamente al simbolo.. Considerazioni di questo tipo sono state fatte su ogni regola della grammatica G. Si noti che da tali considerazioni è possibile stabilire per ogni simbolo terminale l insieme di simboli terminali che possono seguirlo e l insieme di simboli terminali che non possono seguirlo. Infatti se T è l insieme finito di simboli terminali in G e C T è l insieme dei simboli terminali consentiti in G successivamente al simbolo terminale t, allora l insieme dei simboli terminali non consentiti in G successivamente al simbolo terminale t è T C. L insieme di regole derivate in questo modo dalla grammatica G è rappresentato nella tabella di figura 73. T = {, =,, classe, (,,,,, ),., proprietà, numero } Token C: Token consentiti successivamente T-C:Token non consentiti successivamente classe,, ), =,, classe, (,,,., proprietà, numero proprietà,, ),., =,, classe, (,,, proprietà, numero numero proprietà, =,, classe, (,,,,, ),., numero (, =,, classe, (,,,, ),., proprietà, numero ),, ), =,, classe, (,,,., proprietà, numero,, =,, classe, (,,,, ),., proprietà, numero., =,, classe, (,,,, ),., proprietà, numero, =, numero, =,, classe, (,,,,, ),., proprietà, proprietà, =,, classe, (,,,,, ),., numero Token consentiti in prima posizione Token non consentiti in prima posizione, =,, classe, (,,,, ),., proprietà, numero Fig. 73 regole del Pre-Parsing 102

31 Il processo di Pre-Parsing è attivo durante tutta la fase di costruzione dell espressione DL di annotazione e controlla l inserimento dei token all interno dell espressione: se il token che l utente tenta di inserire è consentito (secondo la tabella di figura 73) allora l inserimento è accettato, se invece non è consentito (secondo la tabella di figura 73) allora l inserimento è rifiutato e viene mandato in esecuzione un Feedback-Aiuto in cui compare l elenco di token consentiti (secondo la tabella di figura 73) in quel momento dell interazione. Si noti che il processo di Pre-Parsing non garantisce che l espressione costruita sia sintatticamente corretta, infatti esso impedisce all utente di commettere soltanto alcuni degli errori sintattici possibili e quindi l espressione costruita deve essere comunque verificata dal parser. Al termine della costruzione dell espressione il processo di Pre-Parsing termina e va in esecuzione il parser che realizza la verifica sintattica completa dell espressione (vedi figura 74). inizio inserimento accettato si Pre-Parsing inserimento token Token consentito? costruzione espressione terminata Feedback-Aiuto inserimento rifiutato no Feedback-Aiuto no Parsing espressione derivabile da G? si codice OWL Fig. 74 Pre-Parsing e Parsing 103

32 7.7 Interfaccia GUI Successivamente alla fase di inizializzazione sul monitor dell utente vengono visualizzate le due finestre grafiche di ossa: 1) SelectedConcepts; 2) Ontological Structured Semantic Annotation. 104

33 7.7.1 SelectedConcepts SelectedConcepts è la finestra grafica secondaria dell applicazione; essa è composta da due schede: - Concepts Imports (vedi figura 62), è la scheda che propone all utente tutti i concetti (classi e proprietà) che ha precedentemente selezionato su VisualOntoGraph; i concetti sono visualizzati in colonna (colonna token) in ordine alfabetico; in corrispondenza di ognuno è riportato il tipo (colonna type): class o property. I concetti possono essere utilizzati nell espressione di annotazione. Per farlo è sufficiente un doppio click sul token desiderato (il quale lo seleziona) e quindi la pressione del pulsante Imports Selected (la quale provoca l importazione del token selezionato nell altra finestra); si noti che durante l importazione di un concetto in Ontological Structured Semantic Annotation, ossa controlla cosa si tenta di importare e permette l operazione solo se è stata selezionata una classe o una proprietà, in caso contrario viene visualizzato un messaggio di errore (vedi figura 63). - Concepts Memo (vedi figura 64), è la scheda che propone all utente le classi e le proprietà separatamente e nell ordine in cui l utente li ha precedentemente selezionati in VisualOntoGraph. Delle proprietà è riportato il dominio e il codominio, i quali dovrebbero essere già conosciuti dall utente per la precedente interazione con VisualOntoGraph, ma sono comunque riportati in questa scheda come promemoria al fine di aiutare l utente a non commettere errori semantici durante la costruzione delle espressioni di annotazione (ad esempio se il range della proprietà husband è Woman, e l utente costruisce l espressione husband. Man, egli commette un errore semantico). 105

34 Fig. 63 messaggio di errore per tentata importazione di qualcosa di diverso da una classe e da una proprietà Fig. 64 scheda Concepts Memo di SelectedConcepts 106

35 7.7.2 Ontological Structured Semantic Annotation Ontological Structured Semantic Annotation è la finestra principale di ossa, quella con cui l utente deve interagire per costruire l espressione DL di annotazione. In questa finestra viene visualizzato, tra le altre cose, il codice OWL prodotto dal parser. In figura 65 è riportata una rappresentazione di Ontological Structured Semantic Annotation in cui è aggiunto un numero di riferimento ad ogni porzione della finestra; i riferimenti richiamano i dettagli riportati di seguito. Fig. 65 interfaccia Ontological Structured Semantic Annotation (vedi note di seguito) 1) La zona dell interfaccia di colore bianco contenente il numero 1 permette la visualizzazione di testo su molteplici righe ed ha la proprietà di essere in sola lettura. In questa zona viene visualizzato il codice OWL prodotto dal parser come traduzione dell espressione DL prodotta dall utente. 2) La zona dell interfaccia di colore grigio contenente il numero 2 permette la visualizzazione di testo su un unica riga ed ha la proprietà di essere in sola lettura. In questa zona viene visualizzata la codifica dell espressione DL 107

36 costruita dall utente (i token sono rappresentati in modo abbreviato con i rispettivi ID). Questa codifica è utilizzata in fase di elaborazione da ossa ed è utile per migliorare l efficienza del parsing, infatti durante la scansione dell espressione al parser basterà leggere la prima lettera del token che incontra per capire di che tipo di token si tratti. Nel codice abbreviativo utilizzato a token di stesso tipo (vedi figura 54) corrisponde la stessa lettera, a token di diverso tipo (vedi figura 54) corrispondono diverse lettere. È possibile considerare indistintamente token diversi ma di stessa categoria sintattica perché durante il parsing sono trattati in modo analogo (vedi paragrafi 7.2 e 7.4): al parser interessa solo conoscere il tipo (cioè la categoria sintattica) del token che va ad analizzare e non l etichetta specifica. Anche se durante la verifica sintattica non è importante conoscere l etichetta specifica di un token, durante la fase di generazione del codice OWL è necessario tradurre nuovamente il codice abbreviativo di un token nell etichetta originale del token stesso. Per risolvere questo problema il codice abbreviativo non contiene solo la lettera del tipo del token codificato ma anche un numero al quale è associata univocamente l etichetta del token codificato. Per quanto riguarda i costruttori del linguaggio di annotazione la codifica è statica ed è stata definita in fase progettuale; la codifica delle classi e delle proprietà è invece dinamica ed avviene in fase di inizializzazione dell applicazione secondo lo schema descritto nel paragrafo 7.5; anche la codifica dei numeri è dinamica, ed avviene al momento dell inserimento degli stessi. In figura 66 è rappresentata una tabella che esplica il codice abbreviativo sviluppato per ossa. Si noti che la tabella della figura 66 risiede in memoria durante l utilizzo di ossa, inoltre in essa è possibile fare accessi diretti grazie al fatto che tutti i token (costruttori, numeri, classi e proprietà) sono raggruppati per categoria sintattica di appartenenza. Ne consegue che ogni accesso ha costo costante e quindi anche la codifica o la decodifica dei token ha costo costante (ad esempio per effettuare la decodifica la prima lettera di un codice identificativo individua una categoria sintattica e la porzione della tabella associata ad essa, il numero che segue nel codice identificativo individua la posizione specifica all interno della porzione della tabella precedentemente selezionata; nella locazione individuata in questo modo è possibile accedere direttamente e recuperare l etichetta del token che si va a decodificare). 108

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Analizzatore lessicale o scanner

Analizzatore lessicale o scanner Analizzatore lessicale o scanner Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner, attraverso un esame carattere per carattere dell'ingresso,

Dettagli

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti. SH.MedicalStudio Presentazione SH.MedicalStudio è un software per la gestione degli studi medici. Consente di gestire un archivio Pazienti, con tutti i documenti necessari ad avere un quadro clinico completo

Dettagli

SW Legge 28/98 Sommario

SW Legge 28/98 Sommario SW Legge 28/98 Questo documento rappresenta una breve guida per la redazione di un progetto attraverso il software fornito dalla Regione Emilia Romagna. Sommario 1. Richiedenti...2 1.1. Inserimento di

Dettagli

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu

Dettagli

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un

Dettagli

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto) Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Sede di Latina Laurea in Ingegneria dell Informazione Fasi del ciclo di vita del software (riassunto) Corso di PROGETTAZIONE DEL SOFTWARE

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 1 di 38 Portale tirocini Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 2 di 38 INDICE 1. INTRODUZIONE... 3 2. ACCESSO AL SISTEMA...

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato

Dettagli

Hub-PA Versione 1.0.6 Manuale utente

Hub-PA Versione 1.0.6 Manuale utente Hub-PA Versione 1.0.6 Manuale utente (Giugno 2014) Hub-PA è la porta d ingresso al servizio di fatturazione elettronica verso la Pubblica Amministrazione (PA) a disposizione di ogni fornitore. Questo manuale

Dettagli

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

Dettagli

ISTRUZIONI PER LA GESTIONE BUDGET

ISTRUZIONI PER LA GESTIONE BUDGET ISTRUZIONI PER LA GESTIONE BUDGET 1) OPERAZIONI PRELIMINARI PER LA GESTIONE BUDGET...1 2) INSERIMENTO E GESTIONE BUDGET PER LA PREVISIONE...4 3) STAMPA DIFFERENZE CAPITOLI/BUDGET.10 4) ANNULLAMENTO BUDGET

Dettagli

Le Macchine di Turing

Le Macchine di Turing Le Macchine di Turing Come è fatta una MdT? Una MdT è definita da: un nastro una testina uno stato interno un programma uno stato iniziale Il nastro Il nastro è infinito suddiviso in celle In una cella

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro, EXCEL PER WINDOWS95 1.Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Cos è un Calcolatore?

Cos è un Calcolatore? Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per

Dettagli

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa. La finestra di Excel è molto complessa e al primo posto avvio potrebbe disorientare l utente. Analizziamone i componenti dall alto verso il basso. La prima barra è la barra del titolo, dove troviamo indicato

Dettagli

CREAZIONE DI UN AZIENDA

CREAZIONE DI UN AZIENDA CREAZIONE DI UN AZIENDA La creazione di un azienda in Businesspass avviene tramite la funzione Aziende Apertura azienda ; dalla medesima sarà possibile richiamare le aziende precedentemente create per

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

FIRESHOP.NET. Gestione Lotti & Matricole. www.firesoft.it

FIRESHOP.NET. Gestione Lotti & Matricole. www.firesoft.it FIRESHOP.NET Gestione Lotti & Matricole www.firesoft.it Sommario SOMMARIO Introduzione... 3 Configurazione... 6 Personalizzare le etichette del modulo lotti... 6 Personalizzare i campi che identificano

Dettagli

CHIUSURE di MAGAZZINO di FINE ANNO

CHIUSURE di MAGAZZINO di FINE ANNO CHIUSURE di MAGAZZINO di FINE ANNO Operazioni da svolgere per il riporto delle giacenze di fine esercizio Il documento che segue ha lo scopo di illustrare le operazioni che devono essere eseguite per:

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Dettagli

MANUALE UTENTE Profilo Azienda Partecipata. APPLICATIVO CAFWeb

MANUALE UTENTE Profilo Azienda Partecipata. APPLICATIVO CAFWeb MANUALE UTENTE Profilo Azienda Partecipata APPLICATIVO CAFWeb CAF_ManualeUtente_Partecipate_2.0.doc Pag. 1 di 17 Sommario 1 GENERALITÀ... 3 1.1 Scopo... 3 1.2 Validità... 3 1.3 Riferimenti... 3 1.4 Definizioni

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

Manuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015]

Manuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015] Manuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015] Realizzato e distribuito da LeggeraSoft Sommario Premessa... 2 Fase di Login... 2 Menù principale... 2 Anagrafica clienti...

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

MANUALE PARCELLA FACILE PLUS INDICE

MANUALE PARCELLA FACILE PLUS INDICE MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014 LUdeS Informatica 2 EXCEL Seconda parte AA 2013/2014 STAMPA Quando si esegue il comando FILE STAMPA, Excel manda alla stampante tutte le celle del foglio di lavoro corrente che hanno un contenuto. Il numero

Dettagli

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore ARPA Fonte Dati Regione Toscana 1 Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.1 Data emissione 09/10/13 Stato FINAL 2 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 1.1 09/10/2013

Dettagli

Introduzione ai tipi di dato astratti: applicazione alle liste

Introduzione ai tipi di dato astratti: applicazione alle liste Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione

Dettagli

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1 Pagina 1 Sommario...1 Apertura...2 Visualizzazioni...2 Elenco...2 Testo sul pulsante e altre informazioni...3 Comandi...3 Informazioni...4 Flow chart...5 Comandi...6 Pulsanti Principali e Pulsanti Dipendenti...6

Dettagli

RISOLUTORE AUTOMATICO PER SUDOKU

RISOLUTORE AUTOMATICO PER SUDOKU RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Le query. Lezione 6 a cura di Maria Novella Mosciatti Lezione 6 a cura di Maria Novella Mosciatti Le query Le query sono oggetti del DB che consentono di visualizzare, modificare e analizzare i dati in modi diversi. Si possono utilizzare query come origine

Dettagli

Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento.

Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento. Guida all uso del sito E Commerce Axial Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento. Innanzitutto,

Dettagli

Programmazione dinamica

Programmazione dinamica Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)

Dettagli

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002 Tricks & Tips [Access] - Michele de Nittis - Tutorial - ActiveX - Controllo Tree View Versione: 1 Data Versione: venerdì 30 agosto 2002 1 SOMMARIO PREMESSA...3 INSERIMENTO DEL CONTROLLO...3 AGGIUNTA DELLE

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Lezione 4. Modello EER

Lezione 4. Modello EER Lezione 4 Modello EER 1 Concetti del modello EER Include tutti i concetti di modellazione del modello ER Concetti addizionali: sottoclassi/superclassi, specializzazione, categorie, propagazione (inheritance)

Dettagli

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools Una breve introduzione operativa a STGraph Luca Mari, versione 5.3.11 STGraph è un sistema software per creare, modificare ed eseguire modelli di sistemi dinamici descritti secondo l approccio agli stati

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

Esercizio data base "Biblioteca"

Esercizio data base Biblioteca Rocco Sergi Esercizio data base "Biblioteca" Database 2: Biblioteca Testo dell esercizio Si vuole realizzare una base dati per la gestione di una biblioteca. La base dati conterrà tutte le informazioni

Dettagli

(anno accademico 2008-09)

(anno accademico 2008-09) Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software Volume GESTFLORA Gestione aziende agricole e floricole Guidaall uso del software GESTIONE AZIENDE AGRICOLE E FLORICOLE Guida all uso del software GestFlora Ver. 2.00 Inter-Ware Srl Viadegli Innocenti,

Dettagli

E-mail: infobusiness@zucchetti.it. Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11

E-mail: infobusiness@zucchetti.it. Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11 Gestione Filtri InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11 INDICE Indice...2 1. GESTIONE DEI FILTRI...3 1.1. Filtri fissi...3 1.2. Filtro parametrico...5 1.3. Funzione di ricerca...6 2. CONTESTI IN CUI

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

On-line Corsi d Informatica sul web

On-line Corsi d Informatica sul web On-line Corsi d Informatica sul web Corso base di FrontPage Università degli Studi della Repubblica di San Marino Capitolo1 CREARE UN NUOVO SITO INTERNET Aprire Microsoft FrontPage facendo clic su Start/Avvio

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione

SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi

Dettagli

Università degli Studi di Messina

Università degli Studi di Messina Università degli Studi di Messina Guida alla Rendicontazione on-line delle Attività del Docente Versione della revisione: 2.02/2013-07 A cura di: Fabio Adelardi Università degli studi di Messina Centro

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

POLIAGE GUIDA RAPIDA

POLIAGE GUIDA RAPIDA www.candian.itinfo@candian.it!!"#$% &%'%$%(%)*)+,-,'!-#,%$. POLIAGE GUIDA RAPIDA I. Codifica di una prestazione Pag. 2 II. Inserimento di un nuovo professionista 4 I Creazione Profilo Agenda 6 II Gestione

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Workland CRM. Workland CRM Rel 2570 21/11/2013. Attività --> FIX. Magazzino --> NEW. Nessuna --> FIX. Ordini --> FIX

Workland CRM. Workland CRM Rel 2570 21/11/2013. Attività --> FIX. Magazzino --> NEW. Nessuna --> FIX. Ordini --> FIX Attività Attività --> FIX In alcuni casi, in precedenza, sulla finestra trova attività non funzionava bene la gestione dei limiti tra date impostati tramite il menu a discesa (Oggi, Tutte, Ultima Settimana,

Dettagli

1/15. Manuale d uso. Rev.1 del 18 Settembre 2013 Rev.2 del 24 Settembre 2013 Rev.3 del 9 Dicembre 2013

1/15. Manuale d uso. Rev.1 del 18 Settembre 2013 Rev.2 del 24 Settembre 2013 Rev.3 del 9 Dicembre 2013 1/15 Manuale d uso Rev.1 del 18 Settembre 2013 Rev.2 del 24 Settembre 2013 Rev.3 del 9 Dicembre 2013 2/15 Sommario Guida all'uso del Portale Pubblicitario di Condé Nast Italia Home Page Pagina post-login

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

Mac Application Manager 1.3 (SOLO PER TIGER)

Mac Application Manager 1.3 (SOLO PER TIGER) Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i

Dettagli

Manuale Utente Albo Pretorio GA

Manuale Utente Albo Pretorio GA Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

FPf per Windows 3.1. Guida all uso

FPf per Windows 3.1. Guida all uso FPf per Windows 3.1 Guida all uso 3 Configurazione di una rete locale Versione 1.0 del 18/05/2004 Guida 03 ver 02.doc Pagina 1 Scenario di riferimento In figura è mostrata una possibile soluzione di rete

Dettagli

SOMMARIO... 3 INTRODUZIONE...

SOMMARIO... 3 INTRODUZIONE... Sommario SOMMARIO... 3 INTRODUZIONE... 4 INTRODUZIONE ALLE FUNZIONALITÀ DEL PROGRAMMA INTRAWEB... 4 STRUTTURA DEL MANUALE... 4 INSTALLAZIONE INRAWEB VER. 11.0.0.0... 5 1 GESTIONE INTRAWEB VER 11.0.0.0...

Dettagli

Ottimizzazione delle interrogazioni (parte I)

Ottimizzazione delle interrogazioni (parte I) Ottimizzazione delle interrogazioni I Basi di Dati / Complementi di Basi di Dati 1 Ottimizzazione delle interrogazioni (parte I) Angelo Montanari Dipartimento di Matematica e Informatica Università di

Dettagli

Libero Emergency PC. Sommario

Libero Emergency PC. Sommario Emergenza PC (Garantisce le funzionalità di base delle operazioni di prestito e restituzione in caso di problemi tecnici sulla linea o di collegamento con il server) Sommario 1. Emergency PC...2 2. Iniziare

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere. UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d

Dettagli

Manuale Utente Amministrazione Trasparente GA

Manuale Utente Amministrazione Trasparente GA Manuale Utente GA IDENTIFICATIVO DOCUMENTO MU_AMMINISTRAZIONETRASPARENTE-GA_1.0 Versione 1.0 Data edizione 03.05.2013 1 Albo Pretorio On Line TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione

Dettagli

ACCESSO AL SISTEMA HELIOS...

ACCESSO AL SISTEMA HELIOS... Manuale Utente (Gestione Formazione) Versione 2.0.2 SOMMARIO 1. PREMESSA... 3 2. ACCESSO AL SISTEMA HELIOS... 4 2.1. Pagina Iniziale... 6 3. CARICAMENTO ORE FORMAZIONE GENERALE... 9 3.1. RECUPERO MODELLO

Dettagli