8-XML e basi di dati in
Internet
1
Sommario
Introduzione
Dati Strutturati , Semistrutturati, e Dati non
strutturati.
XML: Modello dei dati gerarchico (Albero).
XML: Documenti, DTD, e XML Schema.
XML: Documenti and Database.
XML: Interrogazioni.
– Xpath
– XQuery
2
Introduzione
 Sebbene HTML è usato per formattare e strutturare
documenti Web, non è adatto per specificare 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 and 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
Dati Strutturati, semi-strutturati e non strutturati.
 Le informazioni immagazzinate in database sono note come dati
strutturati perché sono rappresentati in un formato “stretto”. Il DBMS
allora che tutti i dati seguano le strutture e i vincoli specificati nello
schema.
 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.)
 I dati semi-strutturati possono essere rappresentati da un grafo
diretto, come mostrato.
 Le etichette o tags sul 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
FIGURE 26.1
Representing semistructured data as a graph.
6
XML
Hierarchical
(Tree) Data
Model
FIGURE 26.3
A complex XML
element called
<projects>.
7
XML Hierarchical (Tree) Data Model (cont.)
 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. The nomi dei tag sono
racchiusi tra le parentesi angolari <…>, and i tag di fine sono are
ulteriormente identificati da un backslash </…>. Gli elementi
complessi sono costruiti da altri elementi gerarchicamente,
mentre gli elementi semplici contengono i valori dei dati.
 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
XML Hierarchical (Tree) Data Model (cont.)
1.
2.
3.
E’ possibile caratterizzare tre tipi principali di documenti
XML
Documenti XML incentrati sui dati :
Questi documenti hanno molti dati di dimensioni ridotte che
sguono una specifica struttura, e quindi possono essere estratti
da un database strutturato. Essi sono formattati come
documenti XML per scambiarli o visualizzarli su Web.
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.
Documenti XML ibridi :
Questi documenti possono avere parti che contengono dati
strutturati e altre parti che sono prevalentemente testuali o
nonstrutturati.
9
Documenti XML, DTD, and XML Schema.
Well-Formed
– 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) - Allows programs to manipulate the resulting tree
representation corresponding to a well-formed XML document. The whole document must
be parsed beforehand when using dom.
 SAX - Allows processing of XML documents on the fly by notifying the processing
program whenever a start or end tag is encountered.
Valid
– 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
XML Documents, DTD, and XML Schema (cont.)
FIGURE 26.4 An XML DTD file called projects.
11
XML Documents, DTD, and XML Schema (cont.)
Notazione XML DTD

A * following the element name means that the element can be repeated zero or more
times in the document. This can be called an optional multivalued (repeating) element.

A + following the element name means that the element can be repeated one or more
times in the document. This can be called a required multivalued (repeating) element.

A ? following the element name means that the element can be repeated zero or one
times. This can be called an optional single-valued (non-repeating) element.

Un elemento che appare senza i precedenti tre simboli deve apparire esattamente una
volta nel documento. Questi sono elementi a singolo valore(non ripetuti) necessari.

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 o e1 or e2 possono apparire nel
documento.
12
XML Documents, DTD, and XML Schema (cont.)
Limitationi of XML DTD
 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 of 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
XML Schema per Projects
<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=“1” 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>
14
The ER
conceptual
schema diagram
for the
COMPANY
database.
15
Result of mapping
the COMPANY ER
schema into a
relational schema.
16
XML Documents, DTD, and XML Schema (cont.)
FIGURE 26.5 An XML schema file called company.
17
FIGURE 26.5
(continued)
An XML schema
file called
company.
18
FIGURE 26.5
(continued)
An XML schema file
called company.
19
FIGURE 26.5 (continued)
An XML schema file called company.
20
XML Documents, DTD, and XML Schema (cont.)
XML Schema



Descrizione dello schema e Namespace XML :
E’ necessario identificare lo specifico set of elements (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. Eg. “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
XML Documents, DTD, and XML Schema (cont.)
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
XML Documents, DTD, and XML Schema (cont.)
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
XML Documents and Databases.
Approaches to Storing XML Documents




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
XML Documents, DTD, and XML Schema (cont.)
Extracting XML Documents from Relational Databases.
Supponiamo che una applicazione ha bisogno di estrarre documenti XML for
informationi su studenti, corsi, e votazioni (grade) da un database
universitario. I dati necessari per questi documenti è contenuto in the database
attributi dei tipi di entità course, section, and student come mostrato (parte
del ER principale), e le relazioni s-s and c-s tra loro.
25
FIGURE 26.7
Subset of the UNIVERSITY database schema needed for
XML document extraction.
26
XML Documents, DTD, and XML Schema (cont.)
Estrazione di documenti XML da Database
Relazionali.
Una delle possibili gerarchie che può essere estratta dal sottodatabase potrebbe scegliere course come radice.
27
FIGURE 26.8
Hierarchical (tree)
view with COURSE
as the root.
28
FIGURE 26.9
XML schema document with COURSE as the root.
29
XML Documents, DTD, and XML Schema (cont.)
Eliminazione dei cicli per la conversione di grafi in alberi
E’ possbile avere un sottinsieme 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 sotto per un particolare documento XML, con student come
elemento radice.
30
FIGURE 26.6
An ER schema diagram for a simplified
UNIVERSITY database.
31
XML Documents, DTD, and XML Schema (cont.)
Eliminazione dei cicli per convertire grafi in alberi
Una via per interrompere i cicli è replicare i tipi di entità
coinvolte nei cicli


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 ciascuno
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 corsi
e il dipartimento che offre ciascun corso.
32
FIGURE 26.13
Converting a graph with cycles into a hierarchical
(tree) structure.
33
XML Querying
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
additionali conditioni di qualificazione per ulteriormente resringere 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 discentente del precedente tag ad ogni livello.
 E’ consuetudine includere il nome di file in ogni query XPath consentendoci di
specificvare ogni nome di file locale o nome di path che specifica il path.
doc(www.company.com/info.XML)/company => COMPANY XML doc
34
XML Querying
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.
35
FIGURE 26.14
Some examples of XPath expressions on XML
documents that follow the XML schema file COMPANY in
Figure 26.5.
36
XML Querying
XQuery
 XQuery usa espressioni XPath, ma ha costrutti aggiuntivi.
 XQuery permitte la specifica di query più generali su uno o più
documenti XML.
 La forma tipica di una query in XQuery is nota come FLWR
expression, che sta per le quattro clausole principali di XQuery ed
ha la seguente forma:
FOR <variabili legate a nodi individuali (elementi)>
LET <variabli legate a collezioni di nodi (elementi)>
WHERE <condizioni di qualificazione>
RETURN <specificazione di risultati di query>
37
XML Querying
1.
2.
3.
4.
Questa query the first and last names of employees who earn more than
70000. The variable $x is bound to each employeeName element that is a
child of an employee element, but only for employee elements that satisfy
the qualifier that their employeeSalary is greater that 70000.
Questo è un modo alternativo per rintracciare gli stessi elementi
rintracciati dalla prima query
Questa query illustra come un operazione di join può essere eseguita in
presenza di più di una variabile. La variabile $x è legata ad ogni elemento
projectWorker che è un 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 il nome degli employee
38
FIGURE 26.15
Some examples of XQuery queries on XML documents
that follow the XML schema file COMPANY in Figure
26.5.
39