Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Linguaggi e Tecnologie Web A. A. 2011-2012. XQuery.



Documenti analoghi
XPATH XML Path Language

Introduzione ai Sistemi di Gestione di Basi di Dati XML

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Dati relazionali e XML

XQuery. è lo standard adottato dal W3C per la XML. - Consente di iterare sugli elementi di un documento - Consente di ristrutturare i contenuti XML

XML e Sistemi per la Gestione di Basi di Dati Relazionali

DBMS (Data Base Management System)

Al giorno d oggi, i sistemi per la gestione di database

Dispensa di database Access

Settimana I...1. Giorno 1 - Introduzione all XSLT...3

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Linguaggi e Tecnologie Web A. A Language) Stylesheet.

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Informatica per le discipline umanistiche 2 lezione 10

Facoltà di Farmacia - Corso di Informatica

Le Basi di Dati. Le Basi di Dati

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Arduino: Programmazione

XML e Database. Giuseppe Della Penna Università degli Studi di L Aquila. Giuseppe.DellaPenna@univaq.it

Introduzione ai database relazionali

Funzioni in C. Violetta Lonati

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Introduzione all Information Retrieval

Access. P a r t e p r i m a

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

DATABASE.

La selezione binaria

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

LINGUAGGI DI PROGRAMMAZIONE

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Modellazione e Gestione di Informazioni non Strutturate

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

UN PROGRAMMA APPLICATIVO: ACCESS Access è un programma del pacchetto Office che permette di realizzare database

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Corso di Laboratorio di Basi di Dati

Il linguaggio SQL: query innestate

Istruzioni DML di SQL

Sistemi Informativi e Basi di Dati

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

Corso di Informatica RDBMS RDBMS. Corso di Laurea in Conservazione e Restauro dei Beni Culturali

OSSIF WEB. Manuale query builder

Capitolo 13. Interrogare una base di dati

Lezione V. Aula Multimediale - sabato 29/03/2008

Corso di Informatica

Architettura MVC-2: i JavaBeans

Introduzione ai tipi di dato astratti: applicazione alle liste

(anno accademico )

Informatica I per la. Fisica

Elementi di semantica operazionale

SQL/OLAP. Estensioni OLAP in SQL

Ricorsione in SQL-99. Introduzione. Idea di base

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

CONCETTO DI ANNIDAMENTO

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Sistemi per la gestione di database: MySQL ( )

Esercizi Capitolo 6 - Alberi binari di ricerca

Lezione 9. Applicazioni tradizionali

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Introduzione alla teoria dei database relazionali. Come progettare un database

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Linee di evoluzione dei Database

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Progettazione di Basi di Dati

Introduzione al corso

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

Codifica: dal diagramma a blocchi al linguaggio C++

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

XSL: extensible Stylesheet Language

Volumi di riferimento

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

PROGRAMMA DI CLASSE 5AI

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale

Data Warehousing (DW)

Interrogazioni nidificate, commenti

Operazioni sui database

Esercitazione 01: DDL e DML di base

19. LA PROGRAMMAZIONE LATO SERVER

Algebra Booleana ed Espressioni Booleane

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Fa riferimento ad una famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati del primo ordine

MODELLO RELAZIONALE. Introduzione

Dispensa YACC: generalità

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

BASE DI DATI: sicurezza. Informatica febbraio ASA

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Fogli Elettronici: MS Excel utilizzo avanzato

Base Dati Introduzione

Introduzione all Algebra Relazionale

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

Transcript:

Corso di Laurea Specialistica in Ingegneria Informatica Corso di Linguaggi e Tecnologie Web A. A. 2011-2012 XQuery Eufemia TINELLI

Contenuti XQuery come linguaggio di interrogazione di XML data Modello dei dati: Sequenze Espressioni F (For) L (Let) W (Where) O (Order) R (Return) espressioni condizionali (if then-else), confronti, operatori logici e aritmetici, quantificatori (esiste/per ogni) Funzioni Esercitazione RecipeML 2012 2

XQuery XQuery è un linguaggio di interrogazione per dati espressi in XML, e può essere dunque utilizzato per accedere a documenti strutturati e semistrutturati E diventato una Recommendation del W3C nel gennaio 2007 Principali obiettivi di progetto: XQuery deve essere capace di trasformare e creare documenti XML essere capace di combinare informazioni provenienti da sorgenti diverse essere dichiarativo gestire i namespace compatibile con XML Schema e supportare simple e complex datatype Avere almeno una sintassi XML ed almeno una human-readable 2012 3

XQuery, XPath e XSLT XQuery è un linguaggio case sensitive (come XML), estende l ultima versione di XPath e ha funzionalità analoghe a XSLT XQuery e XPath XQuery 1.0 è progettato per essere un superinsieme proprio di XPath 2.0 Potere espressivo: XQuery rispetto a XPath permette la combinazione di informazione proveniente da sorgenti diverse e la creazione di nuovi frammenti XML Uso di funzioni: XQuery supporta user-defined mentre XPath implementation-defined function XQuery e XSLT Entrambi sono usati per combinare e trasformare dati XML da sorgenti diverse XQuery è progettato da zero a partire da SQL ricorsione data-centric application XSLT è progettato per estendere e potenziare CSS ricorsione documentcentric application Potere espressivo: a livello tecnico equivalente ma XSLT ha implementazioni molto efficienti 2012 4

XML e Database (1) 2012 5

XML e Database (2) I dati relazionali corrispondo a qualche albero mentre i dati XML a tutti gli alberi Il supporto dato dal modello relazionale puro ad XML prevede dei meccanismi di mappatura delle strutture XML sulle relazioni: Document-Centric - il documento XML come tale è il dato da inserire nel DB (ricerche base tramite XPath o espressioni regolari) Data-Centric - la struttura del documento XML è parte fondamentale dei dati da conservare (XML recuperato dalle tabelle, query sofisticate, elevato numero di join) Ibrido - il documento XML viene mappato in modo data-centric, ma alcuni sottoalberi vengono trattati in maniera document-centric (implementazione complessa) Strategie di supporto per la memorizzazione (non ci sono standard) Database XML nativi - permettono di gestire documenti XML come collezioni di dati indicizzati, interrogandoli tramite XPath e XQuery (Tamino di SoftwareAG, XIndice di Apache, exist disponibile su sourceforge) Database estesi con supporto ad XML - permettono di gestire documenti XML in maniera document-centric o data-centric intero documento XML memorizzato in un unico attributo, uno per tupla, utilizzando un nuovo tipo di dato SQL (XMLType) (Oracle, IBM) documento XML è suddiviso e memorizzato in più attributi, tabelle e tuple: 1) schema relazionale ad hoc per il particolare documento o 2) schema generico adatto a tutti i documenti (MS SQL Server) Elenco completo di prodotti che offrono supporto XML http://www.rpbourret.com/xml/xmldatabaseprods.html 2012 6

XQuery ed SQL I dati XML organizzati in tabelle sono più complicati da leggere ma estrarre XML a partire da tabelle è sempre possibile (qualsiasi dato rappresentabile in una tabella è anche rappresentabile in XML) Strategie per estrarre XML da database: Tramite viste predefinite (soluzione ad hoc poco flessibile) Tramite SQL, con operatori che producono output in XML (non utilizzabile per DBMS nativi, espressività ridotta) SQL/XML è un estensione di SQL per costruire dati XML come risultato di query SQL Tramite mappatura delle tabelle in XML e interrogazione tramite XQuery (poche implementazioni) Es. SQL/XML xmlelement(name, "Students", SELECT xmlelement(name,"record",xmlattributes(s.id, s.name,s.age)) FROM Students ) <Students> <record id="100026" name="joe Average age="21"/> <record id="100078" name="jack Doe age="18"/> </Students> 2012 7

Sequenze XQuery opera su sequenze, che possono contenere: Valori atomici Nodi Un espressione XQuery riceve in input zero (nel caso di costruttori) o più sequenze e produce una sequenza Qualche proprietà Le sequenze sono in generale ordinate, per cui: (1, 2) è diversa da (2, 1). Le sequenze non sono annidate, per cui: (( ), 1, (2, 3)) è uguale a (1, 2, 3). Non c è differenza tra un item e una sequenza con lo stesso item: (1) è uguale a 1. 2012 8

Operatori Per manipolare le sequenze XQuery mette a disposizione i seguenti operatori:, (virgola) e to Es. di sintassi alternative (1, 2, 3) (1, (), (2, 3)) (1 to 3) (1, 2 to 3) union (anche nella forma equivalente ), intersect, except (A) union (A, B) -> (A, B) (A, B) intersect (B, C) -> (B) (A, B) except (B) -> (A) 2012 9

XQuery: : Prologo + query Una query può essere preceduta da un prologo, in cui vengono dichiarate informazioni necessarie per la sua esecuzione Dichiarazioni di parametri e setting per processore XQuery Dichiarazioni implicitamente definite in qualsiasi implementazione di XQuery 2012 10

Espressioni racchiuse Le espressioni XML possono essere calcolate dinamicamente mediante l uso di espressioni racchiuse : { expr } Le espressioni racchiuse possono essere utilizzate nei costruttori 2012 11

Costruttori di tipo espliciti 2012 12

FLWOR (pronuncia flower ) Una espressione FLWOR è simile ad uno statement SQL (Select-From- Where) ed è definita in termini di binding di variabili E composta da 5 parti, tutte opzionali tranne l ultima: For: lega una variabile ad ogni elemento restituito dall espressione XPath; la clausola for è una iterazione; possono esserci più clausole for in una espressione FLWOR Let: associa ad una variabile il risultato di una espressione XPath For e Let generano sequenza ossia creano un elenco con tutte le associazioni possibili, chiamate anche tuple nella specifica di XQuery Where: filtra l elenco di associazioni in base ad una condizione Order by: ordina l elenco di associazioni Return: costruisce il risultato dell espressione FLWOR Queste espressioni, così come ogni altra espressione XQuery, possono essere commentate utilizzando i simboli (: e :) Es. (: Questo è un commento (: con un commento annidato :) :) 2012 13

Clausola FOR: esempio Query: Per ogni libro della collezione elenca anno e titolo for $b in doc("esempio.xml")/bib/libro return <libro anno="{ $b/@anno }"> { $b/titolo } </libro> OSS. 1 - Le parentesi graffe delimitano un espressione XQuery, che deve essere valutata per creare il risultato OSS. 2 - All interno della clausola RETURN puo essere specificata una qualsiasi espressione XQuery. In questo caso, stiamo utilizzando costruttori che generano XML, e che si scrivono direttamente utilizzando la sintassi XML 2012 14

Clausola FOR: Esecuzione 1. Si selezionano tutti i libri (doc("esempio.xml")/bib/libro) 2. Valutazione espressione del for si ottiene una sequenza di nodi Ciascun nodo (libro in questo esempio )che viene associata alla variabile $b 1. Per ogni associazione ($b) è restituita l espressione in return 2012 15

Clausola FOR: Esempio di più variabili utilizzate in un'unica espressione for $i in (10, 20), $j in (1, 2) return ($i + $j) Ci sono due sequenze in input (10, 20) associata alla variabile $i (1, 2) associata alla variabile $j Per ogni coppia <$i,$j> viene valutato il risultato ($i + $j) L elenco di associazioni è dato dal prodotto cartesiano dei possibili valori delle variabili Il risultato è la sequenza (11, 12, 21, 22) 2012 16

XQuery: Esempio

FOR vs LET: esempi N.B. Ogni clausola for e let può far riferimento a variabili legate in clausole precedenti: in questo modo si può effettuare il join tra documenti XML 2012 18

Query annidate: esempio 2012 19

Ordinamento: esempio

Funzioni (1) E possibile importare librerie di funzioni: built-in o definite dall utente XQuery include più di 100 funzioni built-in. Vi sono funzioni per le stringhe, i valori numerici, manipolazione di sequenze, ecc. --> L URI del namespace per le funzioni XQuery è http://www.w3.org/2005/02/xpath-functions mentre il prefisso di default del namespace delle funzioni è fn Es. import module namespace math = "http://sisinflab.poliba.it/funzmath" <risultato> { for $cerchio in doc( figure.xml )//cerchio return <area> {math:area($cerchio/raggio)} </area> } </risultato> 2012 21

Funzioni (2) Nel prologo è possibile definire funzioni proprie (quando non abbiamo a disposizione le librerie che ci occorrerebbero oppure per rendere il codice più leggibile) Definizione delle funzioni declare function nomefunz ($x1, $x2,, $xk) { espr } Le variabili $x1, $x2,, $xk sono visibili all interno dell espressione espr Chiamata nomefunz (espr1, espr2,, esprk) Es. declare function area($base, $altezza) { $base * $altezza / 2 } <risultato> { for $tr in doc( figure.xml )//triangolo return <area>{area($tr/base, $tr/altezza)}</area> } </risultato> 2012 22

Espressioni Condizionali: Esempi if ($prodotto1/prezzo < $prodotto2/prezzo) then $prodotto2 else $prodotto1 L espressione ritorna il valore della variabile $prodottox che contiene il prezzo più alto if ($prodotto/@scontato) then $prodotto/ingrosso else $prodotto/dettaglio L espressione valuta l esistenza di un attributo e di conseguenza sceglie gli elementi da selezionare L espressione ritorna il valore numerico associato ad ogni voto (A, A+, A-, ecc.) in modo da poter calcolare la media dei voti di ogni studente 2012 23

Espressioni con quantificatori: some & every Quando le variabili sono associate a insiemi di oggetti è utile disporre di operatori che verifichino le proprietà di insiemi di oggetti Logica: (1) some ed every come for associano una sequenza di oggetti a ciascuna variabile; (2) Per ogni oggetto viene verificata la condizione Booleana di satisfies some $x in (1, 2, 3), $y in (2, 3, 4) satisfies $x + $y = 4 True Se almeno una volta la condizione risulta vera, l intera espressione e vera every $x in (1, 2, 3), $y in (2, 3, 4) satisfies $x + $y = 4 Se la condizione risulta sempre vera,l intera espressione e vera False 2012 24

Esercitazione RecipeML 2012 25

RecipeML DTD 2012 26

RecipeML Example <collection> <recipe> <title>beef Parmesan with Garlic Angel Hair Pasta</title> <ingredient name="beef cube steak" amount="1.5" unit="pound" /> <ingredient name="onion, sliced into thin rings" amount="1" /> <ingredient name="green bell pepper, sliced in rings" amount="1" /> <ingredient name="italian seasoned bread crumbs" amount="1" unit="cup" /> <ingredient name="grated Parmesan cheese" amount="0.5" unit="cup" /> <ingredient name="olive oil" amount="2" unit="tablespoon" /> <ingredient name="spaghetti sauce" amount="1" unit="jar" /> <ingredient name="shredded mozzarella cheese" amount="0.5" unit="cup" /> <ingredient name="angel hair pasta" amount="12" unit="ounce" /> <ingredient name="minced garlic" amount="2" unit="teaspoon" /> <ingredient name="butter" amount="0.25" unit="cup" /> <preparation> <step>preheat oven to 350 degrees F (175 degrees C).</step> <step>cut cube steak into serving size pieces. Coat meat with the bread crumbs and parmesan cheese. Heat olive oil in a large frying pan, and saute 1 teaspoon of the garlic for 3 minutes. Quick fry (brown quickly on both sides) meat. Place meat in a casserole baking dish, slightly overlapping edges. Place onion rings and peppers on top of meat, and pour marinara sauce over all.</step> <step>bake at 350 degrees F (175 degrees C) for 30 to 45 minutes, depending on the thickness of the meat. Sprinkle mozzarella over meat and leave in the oven till bubbly.</step> <step>boil pasta al dente. Drain, and toss in butter and 1 teaspoon garlic. For a stronger garlic taste, season with garlic powder. Top with grated parmesan and parsley for color. Serve meat and sauce atop a mound of pasta!</step> </preparation> <comment>make the meat ahead of time, and refrigerate over night, the acid in the tomato sauce will tenderize the meat even more. If you do this, save the mozzarella till the last minute.</comment> <nutrition calories="1167" fat="23%" carbohydrates="45%" protein="32%" /> </recipe> 2012 27

Query cap. 6 Testo consigliato 1. I titoli delle ricette che usano l olio di oliva 2. I titoli delle ricette restituite come stringhe 3. I titoli delle ricette che hanno meno di 500 calorie 4. Le ricette ordinate per numero di ingredienti semplici ascendente e a parità di ingredienti per il minor numero di calorie 5. Le ricette che usano più burro che olio di oliva 6. Genera le ricette (<ricetta>) aventi il titolo come attributo e gli ingredienti come elemento di testo (<ingrediente>) 2012 28

Riferimenti Specifiche http://www.w3.org/xml/query/ http://www.w3.org/tr/xquery/ http://www.w3.org/tr/xquery-operators/ Testo consigliato e Materiale esercitazioni A. Moller and M. Schwartzbach, An Introduction to XML and Web Technologies, Addison Wesley, 2006 [cap. 6] http://www.w3schools.com/xquery/default.asp 2012 29