universita federico ii di napoli dipartimento di scienze matematiche fisiche e naturali corso di...

Post on 02-May-2015

217 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

UNIVERSITA’ FEDERICO II DI NAPOLI

Dipartimento di Scienze Matematiche Fisiche e Naturali

Corso di Laurea in Informatica

“Strumenti per la gestione di DataBase XML nativi: estrazione automatica della base dei metadati e generazione di query

complesse”

Relatori:

Prof. Francesco Cutugno

Dott. Leandro D’Anna

Laureando:

Antonio Vuolo

2

Introduzione

Xgate è un Software realizzato in collaborazione con il gruppo NLP del Dipartimento di Scienze Fisiche dell’Università Federico II e con il DSLL dell’Università di Salerno.

Xgate è un software per la gestione ed interrogazione di database semistrutturati basati su XML e Xpath.

Le tecnologie di base utilizzate sono DotNET 2.0 e C#, sfruttando in particolare le potenzialità offerte dalle DOM (Document Object Model).

3

Obiettivi

Realizzazione di un modulo per l’estrazione di una DTD (Document Type Definition) da un documento XML.

Implementazione di metodi per la ricostruzione di un documento XML valido per una specifica DTD modificata.

Sviluppo di metodi per la realizzazione di Query complesse su documenti XML.

4

Estrazione di una DTD da un documento XML

Elementi

Dipendenze

Ricorsioni dirette

Struttura tipica di in documento utilizzato nella rappresentazione AN.ANA.S

5

Estrazione di una DTD da un documento XML(2)

DTD

DTD XML

XML

XML

Una DTD può essere associata ad n documenti XML diversi

Schema XML (XSD)

Schema XML

XSDXML

Uno Schema XML rappresenta la struttura di un unico Documento XML

Problematiche: Descrivere il documento XML in termini di vincoli.

• DTD• Schema XML (XSD)

6

Estrazione di una DTD da un documento XML(3)

Struttura tipica di uno Schema XML (XSD)<!-- anche questo è un documento XML --><?xml version="1.0"?><!-- iniziamo lo schema --><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.abc.it/Guida_XSD" xmlns="http://www.abc.it/Guida_XSD" elementFormDefault="qualified"><!-- definiamo l'elemento libro -->

<xs:element name="libro“ maxOccurs="3" minOccurs="1" > <xs:complexType> <xs:all> <!-- definiamo i vari elementi figli di libro --> <xs:element name="titolo" type="xs:string“ /> <xs:element name="autore" type="xs:string" /> <xs:element name="numeroDiPagine" type="xs:integer" /> </xs:all> </xs:complexType> </xs:element></xs:schema>

ELEMENTI

OCCORRENZE

TIPI

7

Estrazione di una DTD da un documento XML(4)

SCHEMI XML DTDminOccurs=”1”maxOccurs=”unbounded” Corrisponde al simbolo +minOccurs=”0”maxOccurs=”unbounded” Corrisponde al simbolo *minOccurs=”0”[maxOccurs=”1”] Corrisponde al simbolo ?minOccurs=”10” Nessuna espressione

corrispondente

maxOccurs=”10” Nessuna espressione corrispondente

Principali differenze tra Schemi XML e DTD: Occorrenze

SCHEMI XML DTD

String #PCDATA

Date #PCDATA

Boolean #PCDATA

Decimal #PCDATA

Integer #PCDATA

Tipi

8

Estrazione di una DTD da un documento XML(5)

Documento Xml

Schema XML

XSD DTD

Analisi del Problema

• Passaggio da XML a Schema:

1. Inferenza Restricted sulle occorrenze dei nodi

2. Inferenza Relaxed sui tipi

• Passaggio da XSD a DTD

1. Decodifica degli elementi complessi

2. Decodifica degli elementi semplici

3. Decodifica degli attributi

9

Estrazione di una DTD da un documento XML(6)

Struttura logica del programma Funzione CreaSchema()

InserisciDocumentoXML()

InferenzaDocumentoXML(XML)

Funzione CreaDTD(Schema)

creaSchema(XML)

decodificaComplex(schema) ricercaElemento(eleme nto)

modificaOcc(nodo)inserisciElem(nodo)

controllaOcc(nodo)

ricercaAttributo(attributo)

decodificaSimplex(schema)

decodificaAttributi(schema)controllaImpost(attributo)

inserisciAttr(attributo)

si

no

Verifica se il nodo è già stato inserito nella DTD

si

no

Verifica l’occorrenza del nodo nella DTD

no

si

modificaImp(attributo)

no

si

Verifica l’attributo è gia stato inserito

Verifica l’impostazione dell’attributo

Lettura dell’albero XSD

Lettura dell’albero XSD

Lettura dell’albero XSD

10

Estrazione di una DTD da un documento XML (7)

La modalità Narrow prevede l’estrazione di una DTD che si avvicini alla struttura del documento

La modalità Broad prevede la definizione delle occorrenze in modo più libero

11

Estrazione di una DTD da un documento XML (8)

Differenze tra le DTD estratte con le modalità Narrow e Broad e la DTD originaria

<?xml version="1.0" encoding="UTF-8"?>

<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by francesco cutugno (cirass) and DSLL -->

<!ELEMENT root (text+)> <!ELEMENT text (paragraph+)><!ATTLIST text type (nz | dz | ie | ee | vi | prt | arg | prs | dg) #REQUIRED

text_id CDATA #REQUIRED><!ELEMENT paragraph (sentence+)><!ATTLIST paragraph paragraphid CDATA #REQUIRED><!ELEMENT sentence (sentence+ | clause+)+><!ATTLIST sentence uni (t | f) #REQUIRED

n_of_clauses CDATA #REQUIRED>

<!ELEMENT corr (VP | NP | PP | PNP | UNP)+>

<!ELEMENT clause (sentence+ | clause+ | corr | VP | NP | PP | UNP | PNP | REP)+>

<!ATTLIST clause type (m | dep | ufo) #REQUIRED>

<?xml version="1.0" encoding="utf-8"?><!-- Edited with xGate 1.0 Beta --><!ELEMENT root (text+)><!ELEMENT text (paragraph)><!ELEMENT paragraph (sentence+)><!ELEMENT sentence (clause+)+><!ELEMENT clause (UNP | PP | VP | sentence | NP | clause )+><!ATTLIST text type CDATA #REQUIRED text_id CDATA #REQUIRED><!ATTLIST paragraph paragraphid CDATA #REQUIRED><!ATTLIST sentence uni CDATA #REQUIRED n_of_clauses CDATA #REQUIRED><!ATTLIST clause type CDATA

#REQUIRED>

NARROW<?xml version="1.0" encoding="utf-8"?><!-- Edited with xGate 1.0 Beta --><!ELEMENT root (text+)><!ELEMENT text (paragraph*)+><!ELEMENT paragraph (sentence+)*><!ELEMENT sentence (clause+)+><!ELEMENT clause (UNP* | PP* | VP* | sentence* | NP* | clause* )+><!ATTLIST text type CDATA #REQUIRED text_id CDATA #REQUIRED><!ATTLIST paragraph paragraphid CDATA #REQUIRED><!ATTLIST sentence uni CDATA #REQUIRED n_of_clauses CDATA #REQUIRED><!ATTLIST clause type CDATA #REQUIRED>

BROAD

12

Estrazione di una DTD da un documento XML (9)

Differenze tra le DTD estratte con le modalità Narrow e Broad e la DTD originaria(2)

DTD ORIGINARIA

NARROW BROAD

<!ELEMENT root (text+)> <!ELEMENT root (text+)> <!ELEMENT root (text+)>

<!ELEMENT text (paragraph+)>

<!ELEMENT text (paragraph)> <!ELEMENT text (paragraph*)+>

<!ELEMENT paragraph (sentence+)>

<!ELEMENT paragraph (sentence+)>

<!ELEMENT paragraph (sentence+)*>

<!ELEMENT sentence (sentence+ | clause+)+>

<!ELEMENT sentence (clause+)+>

<!ELEMENT sentence (clause+)+>

<!ATTLIST text type (nz | dz | ie | ee | vi | prt | arg | prs | dg) #REQUIRED

<!ATTLIST text type CDATA #REQUIRED

<!ATTLIST text type CDATA #REQUIRED

13

Ricostruzione di un documento XML valido per una specifica DTD modificata

Documento

XML

DTD

associata

DOCUMENTO

VALIDO

MODIFICA

DELLA

DTD

DOCUMENTO

VALIDO

Modulo di

correzioneassistita

14

Ricostruzione di un documento XML valido per una specifica DTD modificata (2)

Le modifiche che vengono effettuate tramite il modulo di correzione assistita sono:

• Aggiunta di un attributo ad un nodo• Aggiunta di un elemento semplice• Aggiunta di un elemento complesso

• Cancellazione di un attributo• Cancellazione di un elemento semplice

• Cancellazione di un elemento complesso• Cambio ordine di attributi all’interno di un elemento• Cancellazione di un valore da una lista di possibili scelte per un attributo

15

Ricostruzione di un documento XML valido per una specifica DTD modificata (3)

validaDoc(XML)

Struttura logica del programma Funzione Valida(XML)

inserisciDoc()

parsingStringa(eccezione) gestioneEccezione(eccezione)

correzioneDoc(XML)

si

no

DOCUMENTO VALIDO

Parsing della stringa della eccezione generata

Verifica della eccezione generata

Correzione del documento XML e proseguimento della validazione

16

Ricostruzione di un documento XML valido per una specifica DTD modificata (4)

17

Ricostruzione di un documento XML valido per una specifica DTD modificata (5)

Cancellazione di un nodo complesso

Nodo da cancellare

Concatenazione di tutte le foglie del nodo complesso

Punto dove concatenare la stringa ricavata

18

Ricostruzione di un documento XML valido per una specifica DTD modificata (6)

concatenaFoglie(nodo)

riposFratelloSinistro(XML)

Struttura logica del programma Funzione cancellaNodoComplesso(XML)

riposFratelloDestro(XML)

riposPadre(XML)

no

no

validaDoc(XML)

si

si

si

Se il riposizionamento va a buon fine si continua con la validazione

19

Query Composte

Possibilità di effettuare Query di Query su documenti XML

Necessità di utilizzare il modulo di Querying di Xgate

METODO

Per ogni Query effettuata su un documento XML viene generata la DTD tramite il modulo di Estrazione di una DTD da un documento XML Il modulo di Querying preleva le informazioni sui nodi (e relativi attributi) dalla DTD associata al documento XML che si vuole interrogare. Grazie a queste informazioni che si creano, in cascata, delle finestre di supporto per la creazione della stringa Xpath

20

Query Composte (2)

Docum.

XML

DTD associata

ModulodiQuerying

Query

result

Generat.

DTD

DTDgenerata

1

1 - Documento XML con DTD associata

2

2 - Query sul documento XML

3

3 - Estrazione DTD dal documento XML risultato

21

Query Composte (3)

22

Risultati ottenuti e sviluppi futuri

•Produzione di un modulo per l’estrazione della DTD da un Documento XML

•Produzione di metodi per la ricostruzione di un Documento XML valido per una DTD modificata

•Produzione di un modulo per la composizione di Query composte su Documenti XML

Gli sviluppi futuri riguardano la possibilità di utilizzare gli schemi XML per la definizione delle grammatiche da applicare ai documenti XML.

23

Conclusioni

www.parlaritaliano.it

top related