Sommario 4 - XML e basi di dati 1. Introduzione. 2. Dati strutturati, semistrutturati e non strutturati. 3. Modello dei dati gerarchico (Albero) di XML. 4. Documenti XML, DTD, e schema XML. 5. Documenti XML e basi di dati. 6. Interrogazioni in XML 6.1 XPath 6.2 XQuery 1 2 1- Introduzione HTML è usato fondamentalmente per formattare documenti Web e non è adatto per specificare sintatticamente e semanticamente dati strutturati estratti da database. Un nuovo linguaggio detto XML (extended Markup Language) si è affermato come lo standard per strutturare e scambiare dati sul Web. XML può essere usato per ottenere più informazioni sulla struttura e significato dei dati nelle pagine Web piuttosto che specificare come le pagine Web sono formattate per la visualizzazione. Gli aspetti di formattazione sono specificati separatamente per esempio, usando un linguaggio di formattazione come XSL (extended Stylesheet Language). 3 2 - Dati Strutturati, semistrutturati e non strutturati. Le informazioni immagazzinate in database sono note come dati strutturati perché sono rappresentati in un formato rigido : il DBMS assicura che tutti i dati seguano le strutture e i vincoli specificati a parte nello schema della base dei dati. In alcune applicazioni, i dati sono raccolti in una maniera ad-hoc prima che sia noto come essi verranno immagazzinati e maneggiati. Questi dati possono avere una certa struttura, ma non tutte le informazioni raccolte avranno identica struttura. Questo tipo di dati è noto come dati semi-strutturati. Nei dati semi-strutturati, le informazioni dello schema sono inframmezzate ai dati, poiché ciascun oggetto può avere differenti attributi che non sono noti a priori. Quindi questo tipo di dati sono detti dati auto-descrittivi. Una terza categoria è nota come dati non strutturati, perché vi è una indicazione molto limitata del tipo dei dati. Un tipico esempio è un documento di testo che contiene informazioni legate con esso. Le pagine Web in HTML che contengono alcuni dati sono considerati dati non strutturati. 4
Dati Strutturati, semi-strutturati e non strutturati(cont.) Rappresentazione con un grafo di dati semistrutturati I dati semi-strutturati possono essere rappresentati da un grafo diretto: Le etichette (tags) sugli archi del grafo diretto rappresentano i nomi di schema nomi di attributi, tipi oggetto (o tipi entità o classi), e relazioni. I nodi interni rappresentano oggetti individuali o attributi composti. I nodi foglia rappresentano i valori effettivi dei dati atomici. 5 6 3 - Modello dei dati gerarchico (Albero) di XML Modello dei dati gerarchico (Albero) di XML (2) L oggetto base in XML è il documento XML. Vi sono due principali concetti di strutturazione che sono usati per costruire un documento XML : elementi e attributi. Gli attributi in XML forniscono informazioni aggiuntive che descrivono gli elementi. Come in HTML, gli elementi sono identificati in un documento dal loro tag di inizio and tag di fine. I nomi dei tag sono racchiusi tra le parentesi angolari < >, and i tag di fine sono ulteriormente identificati da un backslash </ >. Gli elementi complessi sono costruiti in modo gerarchico a partire da altri elementi gli elementi semplici contengono i valori dei dati. Un elemento complesso XML chiamato (Company) <projects> 7 E naturale vedere la corrispondenza tra la rappresentazione XML testuale e la struttura ad albero. Nella rappresentazione ad albero, i nodi interni rappresentano elementi complessi, mentre i nodi foglia rappresentano elementi semplici. Perciò il modello XML è chiamato un modello ad albero or gerarchico. 8
Modello dei dati gerarchico (Albero) di XML(3) E possibile caratterizzare tre tipi principali di documenti XML 1. Documenti XML incentrati sui dati : Questi documenti hanno molti dati di dimensioni ridotte che seguono una specifica struttura, e quindi possono essere estratti da un database strutturato. Essi sono formattati come documenti XML per scambiarli o visualizzarli su Web. 2. Documenti XML incentrati sul documento : Questi sono documenti con grande quantità di testo, come news articoli or libri. In questi documenti vi sono pochi (o nessun) dato strutturato. 3. Documenti XML ibridi : Questi documenti possono avere parti che contengono dati strutturati e altre parti che sono prevalentemente testuali o non strutturati. 9 4 - Documenti XML, DTD, e schema XML. Ben Formato Deve iniziare con una dichiarazione XML per indicare la versione di XML usata come altri rilevanti attributi. Deve seguire la struttura sintattica del modello ad albero: questo significa che ci deve essere un unico elemento radice, e che ogni elemento deve contenere una coppia di tag di inizio e fine correlati tra loro, contenuta tra i tag dell elemento padre. Un documento XML ben formato è sintatticamente corretto. Questo gli consente di essere processato da generici processori che attraversano il documento e creano la rappresentazione interna ad albero: DOM (Document Object Model) - Consente ai programmi di manipolare la risultante rappresentazione ad albero corrispondente a documenti XML ben formati. Quando si usa DOM, l intero documento deve essere analizzato anticipatamente. SAX - Consente di elaborare i documenti XML al volo notificando al programma di elaborazione quando si incontra un tag di inizio o fine. Valido Un criterio più forte per un documento XML è essere valido. In questo caso, il documento deve essere ben formato, e in aggiunta deve essere scritto in modo che i nomi utilizzati nelle coppie di tag di inizio e fine siano coerenti con la struttura specificata in un file DTD (Document Type Definition) o in un file XML schema. 10 Documenti XML, DTD, e schema XML (2) Un file DTD XML detto projects. 11 Documenti XML, DTD, e schema XML (3) Notazione DTD di XML Un * che segue il nome di un elemento significa che l elemento può essere ripetuto zero o più volte nel documento. Questo può essere chiamato un elemento opzionale multivalore (che si ripete) Un + che segue il nome di un elemento significa che l elemento può essere ripetuto una o più volte nel documento. Questo può essere chiamato un elemento obbligatorio multivalore (che si ripete) Un? che segue il nome di un elemento significa che l elemento può essere ripetuto zero o una volta. Questo può essere chiamato un elemento opzionale a valore singolo (che non si ripete). Un elemento che appare senza i precedenti tre simboli deve apparire esattamente una volta nel documento. Questi sono elementi obbligatori a valore singolo (non ripetuti). Il tipo di un elemento viene specificato tra parentesi di seguito all elemento. Se le parentesi comprendono nomi di altri elementi, questi ultimi all interno della struttura ad albero sono i figli dell elemento a cui le parentesi stesse si riferiscono. Se le parentesi includono la parola chiave #PCDATA o uno degli altri tipi di dato disponibili in XML DTD, l elemento è un nodo foglia. PCDATA sta per parsed character data, che è analogo al tipo di dati stringa. Nella specifica degli elementi le parentesi possono essere nidificate. Un simbolo barretta ( e1 e2 ) specifica che nel documento possono apparire e1 o e2. 12
Documenti XML, DTD, and Schema XML (4) Limitazioni del DTD (Document Type definition) di XML I tipi di dato del DTD non sono molto generali. DTD ha la sua particolare sintassi e pertanto richiede processori specializzati. Potrebbe essere vantaggioso specificare lo schema dei documenti XML usando le regole sintattiche di XML stesso in modo tale che gli stessi processori dei documenti XML possano processare le descrizioni dello schema XML. Tutti gli elementi DTD sono sempre forzati a seguire l ordine del documento pertanto non sono permessi elementi non ordinati. 13 <xs: schema xmlns:xs= http:// www.w3.org/2001/xmlschema > <xs: element name= projects > <xs: sequence> <xs: element name= project minoccurs= 1 maxoccurs= unbounded > <xs: sequence> <xs:element name= Name type xs:string />.. <xs: element Deptno type= xs:unsignedint minoccurs= 0 maxoccurs= 1 /> <xs: element name= Worker minoccurs= 0 maxoccurs= unbounded > <xs: sequence> <xs:element name= SSN type= xs:string />.. <xs: element name= hours type= xs:float /> </ xs: sequence> </ xs: element > </ xs: sequence> </xs: element> </ xs: sequence> </xs: element> </xs: schema> XML Schema per projects 14 Lo schema concettuale ER per il database COMPANY Risultato del mapping dello schema ER COMPANY in uno schema relazionale. 15 16
Documenti XML, DTD, e Schema XML (5.) Un file schema XML detto company (1). 17 Un file schema XML detto company (2). 18 Un file schema XML detto company (3). 19 Un file schema XML detto company (4). 20
Documenti XML, DTD, e Schema XML (6) XML Schema Descrizione dello schema e Namespace XML : E necessario identificare lo specifico insieme di elementi (tags) del linguaggio di XML schema specificando un file immagazzinato in un sito Web. La seconda linea dell esempio specifica il file usato nell esempio, cioè: "http://www.w3.org/2001/xmlschema". Ogni definizione di questo tipo è chiamata un namespace XML. Il nome di file è assegnato alla variabile xsd utilizzando l attributo xmlns (XML namespace), e questa variabile è usata come prefisso per tutti i tag del XML schema. Annotazioni,documentazione e linguaggio usato: Gli elementi xsd:annotation e xsd:documentation sono usati per prevedere commenti e altre descrizioni nel documento XML. L attributo XML:lang dell elemento xsd:documentation specifica il linguaggio usato. Per es. en Element e Type: Noi specifichiamo root element del ns. XML schema. Nel XML schema, l attributo name del tag xsd:element specifica il nome dell elemento, chiamato company per il root element nel ns. esempio. La struttura del root element company è xsd:complextype. 21 Documenti XML, DTD, e schema XML (7) XML Schema Elementi di primo livello nel database company: Questi elementi sono chiamati employee, department, and project, e ciascuno è specificato in un tag xsd:element. Se un tag ha solo attributi e nessun ulteriore sotto-elemento o dato, può essere terminato con il simbolo back slash (/>) e chiamato Empty Element. Specificazione del tipo dell elemento e minime e massime occorenze: Se noi specifichiamo l attributo type in an xsd:element, questo significa che la struttura dell elemento sarà descritta separatamente, tipicamente usando l elemento xsd:complextype. I tag minoccurs e maxoccur sono usati per specificare i limiti inferiore e superiore del numbero di occorrenze di un elemento. Il default è esattamente una occorrenza. Specificazione delle keys: Per specificare primary keys, è usato il tag xsd:key. Per specificare foreign keys is usato il tag xsd:keyref. Quando specifichiamo una foreign key, l attributo refer of the tag xsd:keyref specifica la primary key referenziata mentre i tag xsd:selector and xsd:field specificano il tipo dell elemento referito e la foreign key. 22 Documenti XML, DTD, e schema XML (8) XML Schema Specificare la struttura degli elementi complessi via tipi complessi : Nel nostro esempio elementi complessi sono Department, Employee, Project, and Dependent, che usano il tag xsd:complextype. Noi specifichiamo ciascuno di questi come una sequenza di sottoelementi correspondenti agli attributi del database di ciascun tipo di entità usanso i tag xsd:sequence and xsd:element of XML schema. A ciascun elemento è assegnato un nome ed un tipo mediante gli attributi name and type of xsd:element. Possiamo anche specificare gli attributi minoccurs and maxoccurs se necessitiamo modificare il default di esattamente una occorrenza. Per gli attributi (optional) del database dove null is allowed, dobbiamo specificare minoccurs = 0, dove per gli attributi multivalore del database dobbiamo specificare maxoccurs = unbounded sull elemento corrispondente. Attributi composti (compound) : Attributi Composti nello Schema ER sono anche specificati come complex types in the XML schema, come illustratto dai tipi complessi Address, Name, Worker, and WorkesOn. Avrebbero comunque potuto essere inseriti direttamente nelle definizioni degli elementi padre. 23 5 - Documenti XML e Basi di dati. Approcci per memorizzare documenti XML Usando un DBMS per immagazzinare i documenti come testo : Possiamo usare un DBMS per immagazzinare interi documenti XML come campi di testo all interno dei record del DBMS. Questo approccio può essere usato se il DBMS ha un modulo per l elaborazione documentale che dovrebbe lavorare per immagazzinare documenti schemaless and document-centric XML. Usando un DBMS per immagazzinare i contenuti dei documenti come dati : Questo approccio dovrebbe lavorare per immagazzinare una collezione di documenti che seguono uno specifico XML DTD or XML schema. Poiché tutti i documenti hanno la stessa struttura, noi possiamo progettare un RDBMS per memorizzare gli elementi di livello foglia all interno dei documenti XML. Progettare un sistema specializzato per la memorizzazione di dati XML nativi: Un nuovo tipo di sistema database basato sul modello gerarchico (ad albero) dovrebbe essere disegnato ed implementato. Il sistema dovrebbe includere tecniche di indexing and querying, e dovrebbe lavorare per tutti i tipi di documenti XML. Creando o pubblicando documenti XML personalizzati a partire da basi di dati relazionali preesistenti Siccome ci sono enormi quantità di dati già memorizzate in database relazionali, parte di questi dati potrebbe essere formattato come documenti per lo scambio o la visualizzazione su Web the Web. 24
Documenti XML e Basi di dati (2.) Estrazione di documenti XML da basi di dati Relazionali Supponiamo che una applicazione ha bisogno di estrarre documenti XML per informazioni su studenti, corsi, e votazioni (grade) da un database di nome UNIVERSITY(vedi figura). I dati necessari per questi documenti sono contenuti negli attributi delle entità della base di dati course, section, and student come mostrato (parte del ER principale), e delle associazioni s-s e c-s sussistenti tra loro. Sottoschema del database UNIVERSITY necessario per l estrazione del documento XML. 25 26 Documenti XML e Basi di dati (3) Estrazione di documenti XML da basi di dati Relazionali. Una delle possibili gerarchie che può essere estratta dal sottodatabase potrebbe scegliere course come radice. 27 Vista gerarchica (albero) con COURSE nodo radice. 28
Documenti XML e Basi di dati (4) Eliminazione dei cicli per la conversione di grafi in alberi E possibile avere un sottoinsieme più complesso con uno o più cicli, indicando relazioni multiple tra le entità. Supponiamo di aver bisogno delle informazioni in tutti i tipi di entità e relazioni nella figura che segue per un particolare documento XML, con student come elemento radice. Schema XML del documento con COURSE radice. 29 30 Documenti XML e Basi di dati(5) Prima replichiamo INSTRUCTOR come mostrato nella parte (2) della figura chiamando la replica alla destra INSTRUCTOR1. La replica INSTRUCTOR sulla sinistra rappresenta la relazione tra istruttori e la sezione in cui essi insegnano mentre la replica INSTRUCTOR1 sulla destra rappresenta la relazione tra istruttori e dipartimento in cui ognuno di essi lavora Abbiamo ancora il ciclo COURSE. Possiamo replicare COURSE in una maniera simile, ottenendo la gerarchia della parte (3). La replica COURSE1 alla sinistra rappresenta la relazione tra i corsi e le loro sezioni mentre la replica COURSE alla destra rappresenta la relazione tra i corsi e i dipartimenti in cui essi sono tenuti. UNIVERSITY 31 32 Uno Schema ER per una base di dati semplificata Eliminazione dei cicli per convertire grafi in alberi Una via per interrompere i cicli è replicare i tipi di entità coinvolte nei cicli
Conversione di un grafo con cicli in una struttura gerarchica (ad albero). 33 6 - Interrogazioni in XML (1) 6.1 XPath Una espressione XPath ritorna una collezione di elementi nodi che soddisfa certi pattern specificati nell espressione. I nomi nell espressione XPath sono nomi di nodo nel documento ad albero XML che sono o nomi di tag (elementi) o nomi di attributi, possibilmente con addizionali condizioni di qualificazione per ulteriormente restringere i nodi che rispettano il pattern. Vi sono due principali separatori che specificano un path: singolo slash (/) and doppio slash (//). Un singolo slash prima di un tag specifica che il tag deve apparire come un figlio diretto del precedente(genitore) tag, mentre un doppio slash specifica che il tag può apparire come un discendente del precedente tag ad ogni livello. E consuetudine includere il nome di file in ogni query XPath consentendoci di specificare ogni nome di file locale o nome di path che specifica il path. doc(www.company.com/info.xml)/company => COMPANY XML doc 34 Interrogazioni in XML(2) 1. Ritorna il nodo radice COMPANY e tutti i suoi nodi discendenti, il che significa che ritorna il documento XML intero. 2. Ritorna tutti i nodi (elementi) department e i loro sottalberi discendenti. 3. Ritorna tutti i nodi employeename che sono diretti figli di un nodo employee, tale che il nodo employee ha un altro elemento figlio employeesalary il cui valore è più grande di 70000. 4. Questo ritorna lo stesso risultato di 3. eccetto che in questo esempio viene specificato il path name completo 5. Questo ritorna tutti i nodi projectworker and i loro nodi discendenti che sono figli sotto un path /company/project e che hanno un nodo figlio hours con valore più grande di 20.0. Interrogazioni in XML (3) Esempi di espressioni XPath su documenti XML che seguono il file Schema XML COMPANY. 35 36
Interrogazioni in XML(4) 6.2 XQuery XQuery usa espressioni XPath, ma ha costrutti aggiuntivi. XQuery permette la specifica di interrogazioni più generali su uno o più documenti XML. La forma tipica di una interrogazione in XQuery è nota come le espressioni FLWR, che sta per le quattro clausole principali di XQuery ed ha la seguente forma: FOR <variabili legate a nodi individuali (elementi)> LET <variabili legate a collezioni di nodi (elementi)> WHERE <condizioni di qualificazione> RETURN <specificazione di risultati di interrogazioni> 37 Interrogazioni in XML(5) 1. Questa interrogazione recupera il nome ed il cognome degli impiegati che guadagnano più di 70000. La variabile $x viene legata a ogni elemento employeename figlio degli elementi employee, per cui il valore employeesalary è più grande di 70000. 2. Questo è un modo alternativo per rintracciare gli stessi elementi rintracciati dalla prima interrogazione 3. Questa interrogazione illustra come un operazione di join può essere eseguita in presenza di più di una variabile. La variabile $x è legata ad ogni elemento projectworker figlio del progetto n.5, mentre la variabile $y è legata a ogni elemento employee. La condizione di join confronta i valori di SSN al fine di recuperare i nomi degli employee 38 Interrogazioni in XML (6) Esempi di interrogazioni XQuery su documenti XML conformi al file schema XML COMPANY. 39