universita federico ii di napoli dipartimento di scienze matematiche fisiche e naturali corso di...
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