Query OQL e XQUERY a confronto

Slides:



Advertisements
Presentazioni simili
Introduzione al DTD Mario Arrigoni Neri.
Advertisements

Introduzione ad XML Mario Arrigoni Neri.
Estendere i linguaggi: i tipi di dato astratti
A. FERRARI Alberto Ferrari. L'HyperText Markup Language (HTML) (traduzione letterale: linguaggio di marcatura per ipertesti) è un linguaggio usato per.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)
Document Type Definition per XML Presentazione 8.1 Informatica Generale (Prof. Luca A. Ludovico)
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
PHP.
DTD Laurea Magistrale in Informatica Chapter 03 Modulo del corso Thecnologies for Innovation.
XSLT (eXtensible Stylesheet Language Transformation) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis
XSLT UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
una interfaccia internet per il sistema Momis
Nana Mbinkeu Rodrigue Carlos 1 DB unimo OTTIMIZZAZIONE DI QUERY IN MOMIS Università degli studi di Modena e Reggio Emilia Relatore: Prof. Sonia.
Progetto e realizzazione di un wrapper XML Schema per il sistema MOMIS
Università degli studi di Modena e Reggio Emilia
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica – Nuovo Ordinamento Analisi.
SQL92 e XQuery1.0 a confronto1 SQL92 E XQUERY1.0 A CONFRONTO Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria - Sede di Modena Corso.
UNIVERSITA DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica Progetto e sviluppo di.
Re-engineering del wrapper XML Schema per il sistema MOMIS
Serializzazione di oggetti in formato XML nellambito del sistema MOMIS Davide Lenzi Chiar.mo Prof. Sonia Bergamaschi Chiar.mo Prof. Michele.
Università degli Studi di Modena e Reggio Emilia
UNIVERSITA DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica MOMIS: servizi di wrapping.
Analisi e Contromisure di tecniche di Sql Injection
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
XML Prof. Alfredo Pulvirenti. XML XML (eXtensible Markup Language) è un meta linguaggio. Può essere definito come un insieme di regole e convenzioni che.
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
XHTML Danilo Deana. XHTML2 XHTML (eXtensible HyperText Markup Language) XHTML è una riformulazione di HTML come applicazione XML. Utilizzando XHTML è
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.
Corso di basi di dati II Prof. Francesco Cutugno Dott. Sara Romano
Basi di Dati II Sara Romano
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Basi di dati Università Degli Studi Parthenope di Napoli
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
AN FI Un denominatoe comune Lo stile funzionale Concetti fondamentali.
Esercizio 1 Convertire il seguente DTD (esercizio 1 sui DTD) in XML Schema:
XSLT Trasformazioni XSL Ing. Luca Sabatucci. XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono.
Basi di dati Claudia Raibulet
SQL: Structured Query Language
Informatica Umanistica A.A. 2009/2010 eXtensible Markup Language (XML)
Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.
Implementare un modello di dati
INFORMATICA Corso Base Modulo G: I DataBase  Access.
Il metalinguaggio XML: la nuova frontiera per la codifica dellinformazione Relatore: Ing. Marco Porta Tesi di Laurea di: Andrea Mocchi ANNO ACCADEMICO.
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
DATABASE Introduzione
XPATH.
ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio.
Introduzione a Javascript
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
Introduzione alle Griglie computazionali - aa Introduzione alle griglie computazionali Introduzione alle griglie computazionali Università degli.
A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language.
Carluccio Antonio Carluccio Alessandra Caricola Giovanni Vizzino Anna Università degli Studi di Bari.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Cenni Su SGML, HTML, XML SGML (Standard Generalized Markup Language) è il padre di tutti i linguaggi "Markup" – Lo svantaggio è la "pesantezza" dei suoi.
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Il linguaggio XML per la rappresentazione dei dati Lo Extensible Markup Language o XML è stato concepito da un gruppo di lavoro del World Wide Web Consortium.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Transcript della presentazione:

Query OQL e XQUERY a confronto UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria - Sede di Modena Corso di Laurea in Ingegneria Informatica   Query OQL e XQUERY a confronto   Relatore Tesi di Laurea di Prof. Sonia Bergamaschi Campana Tiziana   Correlatore Ing. Francesco Guerra  

. Confronto Modelli Concettuali . Confronto OQL - XQUERY Modello concettuale XML: Organizzazione dei dati in modo gerarchico, rappresentazione grafica del DTD. DBMS orientato agli oggetti: Lo schema Database Ordini in linguaggio UML DTD: Descrizione della struttura del file XML Linguaggio ODL: Linguaggio per definire le specificazioni di tipi di oggetti conformi all’ODMG object Model Query XQUERY Query OQL Regole di Traduzione

DBMS Orientati agli Oggetti Sistemi basati su XML Modello Logico: I dati sono organizzati in classi Ogni classe genera un insieme di oggetti Con un insieme di proprietà e di metodi Oggetti diversi sono identificati sulla base di correlatori Modello Logico: I dati sono organizzati in strutture gerarchiche (alberi) Ogni albero ha un insieme di nodi (elementi) Oggetti diversi sono correlati sulla base di relazioni di contenimento Linguaggio per Basi di Dati OQL XPATH (prima), XQUERY (adesso)

XML L'Extensible Markup Language (XML) è un metalinguaggio, ovvero un insieme di regole base utilizzate per creare altri linguaggi. Inoltre XML favorisce l'interoperabilità in quanto è un formato testuale, quindi facilmente trasferibile ed elaborabile su differenti piattaforme hardware e software. Sintassi I tag XML non sono predefiniti. Ognuno può “inventare” i propri tag. I tag XML sono sensibili al carattere scritto in maiuscolo o in minuscolo. I tag devono essere inseriti correttamente l'uno dentro l'altro. Tutti i documenti XML devono contenere una singola coppia di tag che definiscono una root element

XML - DTD Per elemento XML si intende qualsiasi cosa contenuta tra il tag d’inizio e quello di chiusura. Gli elementi vengono suddivisi in: Ø     Element content: contiene all’interno altri elementi. Ø     Mixed content: contiene sia testo che altri elementi. Ø     Simple content: contiene solo testo. Ø     Empty content: non porta informazioni (vuoto). Document Type Definition (DTD) è un linguaggio utilizzato per definire la struttura di un file XML ed è storicamente il primo metodo utilizzato per tale scopo. DTD definisce quindi gli elementi legali di un documento XML.

XPATH - XQUERY XPath è un linguaggio tramite il quale è possibile esprimere delle espressioni per indirizzare parti di un documento XML. XPath opera su una rappresentazione logica del documento XML, che viene modellato con una struttura ad albero ed XPath definisce una sintassi per accedere ai nodi di tale albero Oltre a questo XPath mette a disposizione una serie di funzioni per la manipolazione di stringhe, numeri e booleani, da utilizzare per operare sui valori o sugli attributi dei nodi . Le espressioni definite da XPath per accedere ai nodi dell'albero prendono il nome di Location Path (percorsi di localizzazione). La struttura di un location path è la seguente: axis::node-test[predicate].

Costrutti delle path expression       . Identifica l’ “elemento corrente”      .. L’elemento padre dell’elemento corrente        / Passaggio all’elemento figlio di quello corrente        // Discendente dell’elemento corrente        @ Attributo dell’elemento nodo corrente        * Elemento dal nome qualsiasi       [p] Predicato p per “filtrare” gli elementi individuati [n] L’elemento in posizione n (interroga l’ordine) Esempi di path expression        Una path expression può iniziare con document(“nome-documento”) [restituisce la radice del documento specificato] ·  A partire dalla radice è possibile specificare dei “cammini” per “raggiungere” frammenti XML desiderati

Struttura XQUERY Struttura di una Query Query Prolog Expr Sequence Una query in XQUERY è costituita da un'espressione che legge una sequenza di nodi XML od un singolo valore e restituisce come risultato una sequenza di nodi od un singolo valore. Le espressioni XQUERY sono composte da espressioni XPATH per individuare i nodi da analizzare e da delle funzionalità aggiuntive specifiche di XQUERY per il recupero delle informazioni. XQUERY è un linguaggio funzionale - Una Query è una espressione. - Le espressioni possono essere liberamente combinate. Struttura di una Query - Dichiarazione Namespace (opzionale) - Definizione funzioni (opzionale) Importo schema (opzionale) L’espressione della Query - spesso si compone di molte spressioni - Query Prolog Query Prolog Expr Sequence

XQUERY: Espressioni FLWR (“flower”) ·       for per l’iterazione ·       let per legare variabili a insiemi ·       where per esprimere predicati ·       return per generare il risultato    ·       Esempio:  ·       La clausola FOR valuta l’espressione legando [binding] i singoli elementi alla variabile $x (tante volte quante sono i componenti della lista) ·        Il risultato di una clausola LET produce un singolo binding (legame) per la variabile: l’intero set viene assegnato alla variabile for $x in document(“Ordini.xml”)//Ordine let $i := document(“Ordini.xml”)//Cliente where count($i) >= 3 return <Risultato> {$pn} </Risultato>

Linguaggio OQL Il linguaggio OQL si basa sui seguenti principi ed assunzioni:  OQL è basato sul modello ad oggetti definito da ODMG. OQL utilizza una sintassi simile a quella definita per SQL 92. Rispetto a questa presenta delle estensioni finalizzate alla gestione degli aspetti object-oriented, in particolare le espressioni di percorso, il polimorfismo e l'invocazione delle operazioni. OQL è un linguaggio funzionale in cui gli operatori possono essere liberamente composti, a patto di rispettare la compatibilità tra tipi, secondo quanto previsto dal sistema dei tipi di ODMG-93.

Lo schema Database Ordini in linguaggio UML

Rappresentazione grafica del DTD

select p.Prezzo_unitario Predicati semplici Partiamo dalle query più semplici, in OQL interrogheremo una singola classe, in XQUERY un singolo elemento mixed. Esempio Seleziona tra tutti i Prodotti soltanto quelli con quantità per unità maggiore o uguale a zero e al più uguale a cinque e ne riporta il prezzo unitario:   XQUERY:   for $y in document(“Ordini.xml”)//Prodotto where $y/Quantità_per_unità >= 0 and $y/Quantità_per_unità <= 5 return <Prodotti> {$y/Prezzo_unitario} </Prodotti> OQL: select p.Prezzo_unitario from Prodotto as p where p.Quantità_per_unità >= 0 and p.Quantità_per_unità <= 5  

Predicati di Join E’ un importante tipo di predicato in quanto combina dati da multiple sorgenti in un singolo risultato. Esempio    Seleziona il codice prodotto e il nome della sua categoria dei Magazzini con l’attributo posizione uguale a “centrale”: OQL: Select p.ID_prodotto, p.compreso.Nome_categoria from Magazzino as m m.fornisce as p where m.Posizione =”centrale”  

Predicati di Join XQUERY: for $x in document(“Ordini.xml”)   for $x in document(“Ordini.xml”) $c in $x/Magazzino $p in $c/Prodotto $y in $x/Categoria[@ID_categoria = $p/@Categoria] where $c/Posizione = “centrale” return <Legame> {$p/ID_prodotto, $y/Nome_categoria } </Legame>  

Interrogazioni Innestate Nella QUERY in OQL ho utilizzato l’operatore quantificato ALL insieme all’operatore di set IN. Si è cercato di riprodurre delle QUERY analoghe in XQUERY. Esempio    Selezionare i nomi e cognomi dei cliente per i quali il prezzo unitario è uguale a 10 per tutti gli ordini di data “10/12/2003”, ordinare il risultato in base al cognome del cliente:   OQL: Select c.Cognome, c.Nome from cliente as c where FOR ALL be IN (select s.contiene from c.effettua as s where s.Data_ordine = “10/12/2003”) : be.Prezzo_unitario = 10 Order by c.Cognome

Interrogazioni Innestate XQUERY: for $a in document(“Ordini.xml”)//Ordine[Data_ordine = “10/12/2003”] $b in document(“Ordini.xml”)//Cliente[@ID_cliente = $a/@Cliente] let $p := $a/DettaglioOrdine[Prezzo_unitario = “10”] Order by $b/Cognome return if (exists($p)) then <Risultato> {$b/Nome, $b/Cognome} </Risultato> else()  

Funzioni Aggregate e Raggruppamenti Utilizziamo una serie di funzioni per elaborare i valori di un attributo (MAX, MIN, AVG, SUM) e per contare le tuple che soddisfano una condizione (COUNT). In una istruzione SELECT è possibile formare dei gruppi di tuple che hanno lo stesso valore di specificati attributi, tramite la clausola GROUP BY. Invece l’istruzione FLWR utilizza l’istruzione let per legare variabili ad insieme. Esempio Trovare l’ID_cliente e l’ID_numero degli Ordini che hanno almeno tre Cliente: OQL: c c.effettua as o Select distinct o.ID_numero, c.ID_cliente from Cliente as c c.effettua as o group by c.ID_cliente having count(*) > 3

Funzioni Aggregate e Raggruppamenti XQUERY: for $pn in distinct-values(document(“Ordini.xml”)//Ordine) let $i := document(“Ordini.xml”)//Cliente[@ID_cliente = $pn/@Cliente] where count($i) >= 3 order by $pn return <Risultato> {$pn/@ID_numero, $i/@ID_cliente } </Risultato>

Conclusioni Nell’ambito del presente elaborato sono stati studiati in dettaglio i linguaggi di interrogazione XQUERY e OQL. Dal confronto è emerso come queste presentino un basso grado di compatibilità a livello di schema concettuale. la query OQL è più compatta, semplice e leggibile rispetto alla query XQUERY che però risulta essere più flessibile, grazie all’enorme quantità di funzioni e procedure che questo linguaggio offre. In un certo senso il linguaggio XQUERY è componibile e paragonabile per alcuni aspetti ad un linguaggio di programmazione. Le regole di traduzione per il passaggio da una query OQL a una query XQUERY e viceversa sono state enunciate senza grosse difficoltà essendoci una forte compatibilità nelle espressioni di questi due linguaggi.