Linguaggi di schema per XML e modelli astratti di documenti

13
Linguaggi di Linguaggi di schema per XML e schema per XML e modelli astratti modelli astratti di documenti di documenti Tesi di Laurea di Daniele Tesi di Laurea di Daniele Gubellini Gubellini Relatore: Chiar.mo Prof. Relatore: Chiar.mo Prof. Fabio Vitali Fabio Vitali Bologna, 23 marzo 2005

description

Linguaggi di schema per XML e modelli astratti di documenti. Tesi di Laurea di Daniele Gubellini Relatore: Chiar.mo Prof. Fabio Vitali. Bologna, 23 marzo 2005. L’ ingegneria dei documenti. Le componenti di un documento Contenuto: informazione allo stato puro (“la mia data di nascita”). - PowerPoint PPT Presentation

Transcript of Linguaggi di schema per XML e modelli astratti di documenti

Page 1: Linguaggi di schema per XML e modelli astratti di documenti

Linguaggi di Linguaggi di schema per XML e schema per XML e modelli astratti di modelli astratti di

documentidocumentiTesi di Laurea di Daniele Tesi di Laurea di Daniele

GubelliniGubelliniRelatore: Chiar.mo Prof. Fabio Relatore: Chiar.mo Prof. Fabio

VitaliVitaliBologna, 23 marzo 2005

Page 2: Linguaggi di schema per XML e modelli astratti di documenti

L’ ingegneria dei L’ ingegneria dei documentidocumenti

Le componenti di un documentoLe componenti di un documento Contenuto: informazione allo stato puro (“la mia data di Contenuto: informazione allo stato puro (“la mia data di

nascita”).nascita”). Struttura: risponde alla domanda “dov’è” un dato e Struttura: risponde alla domanda “dov’è” un dato e

conferisce metainformazioni.conferisce metainformazioni. Esempio: 01031978 ?Esempio: 01031978 ?

Presentazione: formattazione visiva.Presentazione: formattazione visiva. Esempio: 01/03/1978.Esempio: 01/03/1978.

SintassiSintassi XML, markup descrittivo.XML, markup descrittivo.

VincoliVincoli Linguaggi di schema: DTD, XML Schema.Linguaggi di schema: DTD, XML Schema.

Page 3: Linguaggi di schema per XML e modelli astratti di documenti

L’obiettivoL’obiettivo Identificare gli schemi utili e Identificare gli schemi utili e

potenzialmente ricchi di significatopotenzialmente ricchi di significato Eliminare i costrutti sintattici non necessari Eliminare i costrutti sintattici non necessari

nella costruzione di strutture significative.nella costruzione di strutture significative. Definire un linguaggio di schema Definire un linguaggio di schema

minimale che permetta l’espressione di minimale che permetta l’espressione di tutti e soli gli schemi catalogati.tutti e soli gli schemi catalogati.

Page 4: Linguaggi di schema per XML e modelli astratti di documenti

Content model DTD inutili: Content model DTD inutili: esempiesempi

DescrizioneDescrizione Presenza di alcuni frammenti di content Presenza di alcuni frammenti di content

model come “(B|C)*” in più dichiarazioni. model come “(B|C)*” in più dichiarazioni. Aggiungendo un elemento K si Aggiungendo un elemento K si

avrebbe incoerenza semantica?avrebbe incoerenza semantica? ““(B|C)*” sono logicamente (B|C)*” sono logicamente

indissolubili o indipendenti?indissolubili o indipendenti?

Ripetizione di sequenze.Ripetizione di sequenze.Un’eventuale relazione semantica tra A e Un’eventuale relazione semantica tra A e B non è rafforzata dalla sintassi.B non è rafforzata dalla sintassi.

Sequenza di elementi non ripetibili ed Sequenza di elementi non ripetibili ed elementi ripetibili. elementi ripetibili. T sembra un’informazione unica che dice T sembra un’informazione unica che dice qualcosa sulla qualcosa sulla listalista di B. Questo fatto di B. Questo fatto nonnon è rafforzato dalla sintassi. è rafforzato dalla sintassi.

Content model Content model DTDDTD

<!ELEMENT E1 (X,(B|C)*><!ELEMENT E1 (X,(B|C)*> <!ELEMENT E2 (Y,(B|C)*><!ELEMENT E2 (Y,(B|C)*>

<!ELEMENT E (A,B)*><!ELEMENT E (A,B)*>

<!ELEMENT E (T,B*)><!ELEMENT E (T,B*)>

Page 5: Linguaggi di schema per XML e modelli astratti di documenti

NormalizzazioneNormalizzazione Documenti ben ingegnerizzatiDocumenti ben ingegnerizzati

Definizione delle dipendenze funzionali: fondamentali per Definizione delle dipendenze funzionali: fondamentali per modellare i dati in modo elegante, riutilizzabile e con una modellare i dati in modo elegante, riutilizzabile e con una semantica precisa e non ambigua.semantica precisa e non ambigua.

Normalizzazione: applicata ai contenitori logici che danno Normalizzazione: applicata ai contenitori logici che danno profonditàprofondità e e strutturastruttura al documento. al documento.

Esempio: TeiLight, elemento “div” Esempio: TeiLight, elemento “div” ((argument|byline|dateline|docAuthor|docDate|epigraph|((argument|byline|dateline|docAuthor|docDate|epigraph|

head|opener| salute|signed|anchor|gap|index|interp|head|opener| salute|signed|anchor|gap|index|interp|interpGrp|lb|milestone|pb)*,(((div|divGen),(anchor|gap|index|interpGrp|lb|milestone|pb)*,(((div|divGen),(anchor|gap|index|interp|interpGrp|lb|milestone|pb)*)+|(((eg|bibl|biblFull|ab|l|interp|interpGrp|lb|milestone|pb)*)+|(((eg|bibl|biblFull|ab|l|lg|p|sp|figure|cit|q|label|list|listBibl|note|stage|table),(anchor|lg|p|sp|figure|cit|q|label|list|listBibl|note|stage|table),(anchor|gap|index|interp|interpGrp|lb|milestone|pb)*)+,((div|divGen),gap|index|interp|interpGrp|lb|milestone|pb)*)+,((div|divGen),(anchor|gap|index|interp|interpGrp|lb|milestone|pb)*)*)),(anchor|gap|index|interp|interpGrp|lb|milestone|pb)*)*)),((byline|closer|dateline|epigraph|salute|signed|trailer),((byline|closer|dateline|epigraph|salute|signed|trailer),(anchor|gap|index|interp| interpGrp|lb|milestone|pb)*)*)(anchor|gap|index|interp| interpGrp|lb|milestone|pb)*)*)

Page 6: Linguaggi di schema per XML e modelli astratti di documenti

La soluzioneLa soluzione Adozione di PatternAdozione di Pattern

Espressione di strutture utili e potenzialmente Espressione di strutture utili e potenzialmente ricche di significati.ricche di significati.

Adozione di wrapper.Adozione di wrapper. Semplificazione della sintassi: DTD--Semplificazione della sintassi: DTD--

Rendere leciti (esprimibili) solo i Pattern.Rendere leciti (esprimibili) solo i Pattern. Conversione di strutture DTD in DTD--.Conversione di strutture DTD in DTD--.

Page 7: Linguaggi di schema per XML e modelli astratti di documenti

Pattern di design (1/2)Pattern di design (1/2) Marker “BR”:Marker “BR”:

<BR/><BR/>

Record “Persona”:Record “Persona”:<Persona><Persona>

<Nome><Nome>DanieleDaniele</Nome></Nome> <Cognome><Cognome>GubelliniGubellini</Cognome></Cognome> <Indirizzo><Indirizzo>C. Italia C. Italia 1919</Indirizzo></Indirizzo> <Comune><Comune>S.G.PersicetoS.G.Persiceto</Comune</Comune>>

</Persona></Persona>

Blocco “Testo”:Blocco “Testo”:<Testo><Testo> Questo è un testo con elementi Questo è un testo con elementi tipografici come tipografici come <bold>grassetto</bold> e <bold>grassetto</bold> e <ita>italico</ita> oppure <ita>italico</ita> oppure <bold><ita>grassetto e <bold><ita>grassetto e italico</ita></bold> <BR/>italico</ita></bold> <BR/></Testo></Testo>

Atomo “Giorno”:Atomo “Giorno”:<Giorno><Giorno>2323</Giorno></Giorno>

Tabella “Persone”:Tabella “Persone”:<Persone><Persone> <Persona><Persona>

<Nome>Daniele</Nome><Nome>Daniele</Nome> <Cognome>Gubellini</Cognome><Cognome>Gubellini</Cognome> <Indirizzo>C. Italia 19</Indirizzo><Indirizzo>C. Italia 19</Indirizzo> <Comune>S.G.Persiceto</Comune><Comune>S.G.Persiceto</Comune>

</Persona></Persona> <Persona><Persona>

<Nome>Mara</Nome><Nome>Mara</Nome> <Cognome>Serra</Cognome><Cognome>Serra</Cognome> <Indirizzo>C. Italia 19</Indirizzo><Indirizzo>C. Italia 19</Indirizzo> <Comune>S.G.Persiceto</Comune><Comune>S.G.Persiceto</Comune>

</Persona></Persona></Persone></Persone>

Page 8: Linguaggi di schema per XML e modelli astratti di documenti

Pattern di design (2/2)Pattern di design (2/2) Contesto Additivo Contesto Additivo

“Contratto”:“Contratto”:<Contratto><Contratto> ...... <Firma><Firma>Daniele Daniele GubelliniGubellini</Firma></Firma> ......</Contratto></Contratto>

Firma puFirma può apparire ò apparire ovunque all’interno di ovunque all’interno di Contratto.Contratto.

È possibile limitare ad È possibile limitare ad uno l’occorrenza uno l’occorrenza dell’elemento Firma.dell’elemento Firma.

Contesto Sottrattivo “Nota”:Contesto Sottrattivo “Nota”:<Testo><Testo><Paragrafo> <Paragrafo> Questo Questo è un paragrafo con note. è un paragrafo con note. <Nota><Nota>Una nota contiene paragrafiUna nota contiene paragrafi<Paragrafo>Una nota può <Paragrafo>Una nota può contenere contenere altre altre note</Paragrafo>note</Paragrafo> </Nota></Nota></Paragrafo></Paragrafo></Testo></Testo>

Proibisco la presenza di Proibisco la presenza di Note all’interno di Note.Note all’interno di Note.

Page 9: Linguaggi di schema per XML e modelli astratti di documenti

I wrapperI wrapper (Studente,(Studente,(Cellulare|Telefono)*(Cellulare|Telefono)*) e (Prof,) e (Prof,(Cellulare|Telefono)*(Cellulare|Telefono)*) )

Strutture logicamente indissolubili:Strutture logicamente indissolubili:(Studente,(Studente,recapitiTelefonicirecapitiTelefonici) e (Prof,) e (Prof,recapitiTelefonicirecapitiTelefonici) ) dove recapitiTelefonici=(Cellulare|Telefono)*dove recapitiTelefonici=(Cellulare|Telefono)*

Strutture logicamente separate:Strutture logicamente separate:(Studente,(Studente,recapitiTelefoniciStudenterecapitiTelefoniciStudente) e (Prof,) e (Prof,recapitiTelefoniciProfrecapitiTelefoniciProf) ) dove recapitiTelefoniciStudente=recapitiTelefoniciProf=(Cellulare|dove recapitiTelefoniciStudente=recapitiTelefoniciProf=(Cellulare|Telefono)*Telefono)*

Possibile aggiungere a recapitiTelefoniciProf un TelefonoUfficio.Possibile aggiungere a recapitiTelefoniciProf un TelefonoUfficio. (Domanda,Risposta)*(Domanda,Risposta)*

Rafforzare il legame semantico tra Domanda e Risposta: Rafforzare il legame semantico tra Domanda e Risposta: ((FAQ*FAQ*) dove FAQ=(Domanda,Risposta).) dove FAQ=(Domanda,Risposta).

(Titolo,Capitolo*) (Titolo,Capitolo*) Titolo è riferito alla lista dei capitoli: Titolo è riferito alla lista dei capitoli:

(Titolo,(Titolo,CapitoliCapitoli) dove Capitoli=(Capitolo*).) dove Capitoli=(Capitolo*).

Page 10: Linguaggi di schema per XML e modelli astratti di documenti

Il metalinguaggio DTD--Il metalinguaggio DTD-- Espressione di tutte e sole le strutture dei Espressione di tutte e sole le strutture dei

Pattern.Pattern. SintassiSintassi

Minimalità sintattica: Minimalità sintattica: SCHEMA = ISTANZA.SCHEMA = ISTANZA. L’opzionalitL’opzionalità del DTD è meno problematica.à del DTD è meno problematica. Lo schema diventa più espressivo grazie Lo schema diventa più espressivo grazie

all’astrazione dei Pattern.all’astrazione dei Pattern. Sintassi Sintassi instance basedinstance based:scrivere uno schema :scrivere uno schema

diventa semplice come scrivere un’istanza.diventa semplice come scrivere un’istanza. Literate programming.Literate programming.

Page 11: Linguaggi di schema per XML e modelli astratti di documenti

DTD--: sintassi dei DTD--: sintassi dei PatternPattern

Marker, Atomo, Record.Marker, Atomo, Record. Tabella “Persone”:Tabella “Persone”:

<Persone><Persone> <Persona><Persona> <Nome>Nome</Nome><Nome>Nome</Nome>

<Cognome>Cognome</Cognom<Cognome>Cognome</Cognome>e>

<Indirizzo>Via e <Indirizzo>Via e n.civico</Indirizzo>n.civico</Indirizzo>

<Comune>Comune</Comune><Comune>Comune</Comune> </Persona></Persona> <dtd:etc/><dtd:etc/></Persone></Persone>

Contesto Additivo “Contratto”:Contesto Additivo “Contratto”:<Contratto <Contratto dtd:includedtd:include=“!Firma”>=“!Firma”>........

<Firma>Daniele Gubellini</Firma><Firma>Daniele Gubellini</Firma>........</Contratto></Contratto>

Blocco “Testo”:Blocco “Testo”:<Testo <Testo dtd:typedtd:type=“T”> =“T”> Questo è un testo con elementi Questo è un testo con elementi tipografici come bold <bold tipografici come bold <bold dtd:typedtd:type=“T”/>=“T”/>e ita<ita e ita<ita dtd:typedtd:type=“T”/>.=“T”/>.

PuPuòò contenere anche linee contenere anche linee <BR/>.<BR/>.</Testo></Testo>

Contesto Sottrattivo “Nota”:Contesto Sottrattivo “Nota”:<Testo dtd:type=“T”> <Testo dtd:type=“T”> Questo testo contiene paragrafi Questo testo contiene paragrafi <Paragrafo dtd:type=“T”/>e note <Paragrafo dtd:type=“T”/>e note <Nota dtd:type<Nota dtd:type=“T”=“T” dtd:excludedtd:exclude=“Nota” />=“Nota” /></Testo></Testo>

Page 12: Linguaggi di schema per XML e modelli astratti di documenti

Tool di conversioneTool di conversione Da DTD a DTD--Da DTD a DTD--

Vengono semplificati e convertiti i DTD in sintassi Vengono semplificati e convertiti i DTD in sintassi DTD--.DTD--.

Test di affinità con il nuovo modello di design.Test di affinità con il nuovo modello di design. Spunto critico per una rimodellazione dello schema. Spunto critico per una rimodellazione dello schema.

Da istanze/schemi a DTD--Da istanze/schemi a DTD-- Unificazione di istanze e schemi DTD-- in un unico Unificazione di istanze e schemi DTD-- in un unico

schema.schema. Schemi (ASchemi (A|B).|B).

Da DTD-- a SchemaPathDa DTD-- a SchemaPath Tappa intermedia del processo di validazione.Tappa intermedia del processo di validazione.

Page 13: Linguaggi di schema per XML e modelli astratti di documenti

ConclusioniConclusioni Design basato su PatternDesign basato su Pattern

Abbassa l’incertezza sintattica, permette “visualizzazioni” Abbassa l’incertezza sintattica, permette “visualizzazioni” astratte, forza un design semplice e chiaro, migliora il astratte, forza un design semplice e chiaro, migliora il rapporto tra contenuto e struttura.rapporto tra contenuto e struttura.

Favorisce il processo di normalizzazione.Favorisce il processo di normalizzazione. Autoreferenzialità: la minimalità sintattica risolve in parte Autoreferenzialità: la minimalità sintattica risolve in parte

il problema dell’opzionalità del DTD.il problema dell’opzionalità del DTD. Semplifica eventuali processi di conversione.Semplifica eventuali processi di conversione. Sviluppi futuri: nuovi pattern?Sviluppi futuri: nuovi pattern?

DTD--DTD-- Linguaggio di schema semplice, basato su XML, di facile Linguaggio di schema semplice, basato su XML, di facile

apprendimento. apprendimento. Sviluppi futuri: co-constraints, tipi di dato per Atomo ecc.Sviluppi futuri: co-constraints, tipi di dato per Atomo ecc.