Introducción a SQL/XML DIT-ETSIT-UPM
Bases de Datos ( BSDT )
curso 2010-11
Introducción a SQL/XML: SQL y XML funcionan conjuntamente Transparencias basadas en el sitio Web: SQLX.org, (2004) y en la parte 14 del estándar SQL: ISO/IEC 9075-14:2010. Por: C. Costilla SINBAD-UPM Research Group http://sinbad.dit.upm.es
Nov, 2010
Madrid
C. Costilla
1
Introducción a SQL/XML
Índice de Contenido
1. SQL/XML: SQL y XML funcionan conjuntamente 2. ¿Qué es SQL/XML ? 3. Participantes e Implementaciones de SQL/XML. 3.1. Algunas Publicaciones 3.2. XQuery 1.1: Lenguaje Consultivo de XML, (Dic, 2009)
44. SQL y XML 5. Tabla — XML namespace prefixes y sus URIs 6 XML: Conceptos. 6. Conceptos 6.1. 6 1 Data Type SQL convertidos a Schema Type XML 7. Usando Juntos SQL y XML 8 XPath 8. XPath. 8.1. 8 1 SQL y XPath 9. Tipos XML (Operaciones Usuales). 10 Funciones XML 10. XML. Ejemplos y XMLQUERY 11. Tipos de datos y funciones de SQL:2006 Nov, 2010
Madrid
C. Costilla
2
Introducción a SQL/XML
1. SQL/XML: SQL y XML Funcionan conjuntamente j El 1er. estándar SQL/XML (2003), se publica por la International Organization for Standardization (ISO) como la parte 14 del estándar SQL: ISO/IEC 9075-14:2003. El último estándar SQL/XML Part 14: XML-Related Specifications (SQL/XML) es de Junio 2010, y el inmediato anterior fue ISO/IEC 9075-14:2008. En http://www.sqlx.org/SQL-XML-documents/5FCD-14-XML-2004-07.pdf puede verse un documento completo. Es un Final Committee Draft del estándar de Julio 2005, con 359 páginas de contenido. SQLX.org, fue el sitio Web del estándar SQL/XML y su tecnología asociada, que facilitó la difusión de SQL y XML y los avances de cada versión SQL/XML en curso (hasta 2004). SQL/XML es el lenguaje estándar y “SQLX” SQLX es el sitio web y el nombre del primer grupo de trabajo de promulgación (no confundirlos). p del ggrupo p qque ppropone p Para más información de SQL/XML,, contactar con el responsable SQL/XML en USA:
[email protected] (2004).
Nov, 2010
Madrid
C. Costilla
3
Introducción a SQL/XML
Especificaciones SQL / XML Recientes
Nov, 2010
Madrid
C. Costilla
4
Introducción a SQL/XML
2. ¿Qué es SQL/XML?
Nov. 2006
¾
SQL/XML es un estandard ANSI, ANSI ISO que incorpora XML dentro del lenguaje SQL de bases de datos objeto-relacionales.
¾
SQL:2003 es el estándar para acceder y manejar datos de bases de datos objetoobjeto relacionales. Las empresas y los usuarios necesitan integrar sus datos XML en sus bases de datos objeto-relacionales, aprovechando las ventajosas facilidades de SQL. SQL
¾
SQL/XML permite almacenar sus documentos XML en sus bases de datos objetorelacionales para consultar dichos documentos mediante “Xpath” y “Xquery” y relacionales, para “ publicar” sus datos SQL en un formato de documentos XML.
Nov, 2010
Madrid
C. Costilla
5
Introducción a SQL/XML
3. Participantes e Implementaciones de SQL/XML En 2004,, las organizaciones g pparticipantes p en los ggrupos p INCITS H2 y en ISO/IEC JTC1/ SC32/WG3 de SQL/XML y su desarrollo fueron los siguientes por orden alfabético: Computer Associates, DataDirect Technologies, Hewlett-Packard, IBM*, JCC Consulting*, Microsoft*, NCR, Northrop Grumman Information Technology, Oracle*, River City Research Group, Sybase y textserver.com* En rojo se destacan las organizaciones más activas en 2004. Implementaciones SQL/XML: D t Di t Technologies DataDirect T h l i — IBM Corporation —
http://www.datadirect.com/products/connectsqlxml/csqlxml-overview/index.ssp
http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0311wong/index.html
[An introduction to SQL/XML functions in DB2 UDB and the DB2 XML Extender] Oracle Corporation — http://otn.oracle.com/tech/xml/xquery/sqlxml/index.html Esta lista (de Mayo, 2004) viene evolucionando con alta dinámica. El último estándar es de Junio 2010. Nov, 2010
Madrid
C. Costilla
6
Introducción a SQL/XML
3 1 Al 3.1. Algunas publicaciones bli i
Columnas y Artículos:
¾ “SQL in, XML out ”, Jonathan Gennick, http://otn oracle com/oramag/oracle/03-may/o33xml http://otn.oracle.com/oramag/oracle/03 may/o33xml.html html
¾ “SQL/XML and the SQLX Informal Group of Companies ”, Andrew
Eisenberg and Jim Melton, Melton http://www.acm.org/sigmod/record/issues/0109/standards.pdf htt // / i d/ d/i /0109/ t d d df
¾ “XML Programming with SQL/XML and XQuery ”, Funderburk, M l ik Reinwald, Malaika, R i ld
http://www.research.ibm.com/journal/sj/414/reinwald.pdf
Esta lista, de Marzo 2004, evolucionará con el tiempo ¡más de 5.500 artículos se habían publicado sobre XML, a mediados de 2009!
Nov, 2010
Madrid
C. Costilla
7
Introducción a SQL/XML
3.2. XQueryy 1.1: Un Lenguaje g j Consultivo de XML,, ((Dic,, 2009)) Como sabemos, XML es un lenguaje g j de marcado versátil ppara etiquetar q el contenido de información de diversas fuentes de datos incluyendo:
●
●
●
●
documentos estructurados y semi-estructurados,
●
RDBs, y repositorios de objetos.
XQuery usa la estructura de XML para expresar consultas a todas estas fuentes de datos, bien estén físicamente almacenados en XML o bien sean vistos como XML vía un middleware. XQueryy 1.1 describe un lenguaje g j consultivo aplicado p a un amplio p espectro p de tipos p de fuentes de datos XML muy diversos. XQuery 1.1 es la siguiente versión de XQuery 1.0 (Recomendación publicada el 23 Enero de 2007). 2007) (véase el estándar en http://www.w3.org/standards/techs/xquery)
Nov, 2010
Madrid
C. Costilla
8
Introducción a SQL/XML
4. SQL y XML
¿Cómo pueden ser “publicados” publicados datos SQL en XML de modo que se conserve la máxima cantidad de información, incluyendo p de datos apropiado, p p , identificadores,, el conocimiento de tipo etc.? Solución
¾ Mapeando las Tablas SQL en Documentos XML 9Mapeando identificadores SQL dentro de XML Qnames y viceversa 9Mapeando p SQL Q Data Types yp en XML Schema Types yp y viceversa
Nov, 2010
Madrid
C. Costilla
9
Introducción a SQL/XML
5. Tabla — XML namespace prefixes y sus URIs XML namespace URI
XML namespace prefix
xsd
htt // http://www.w3.org/2001/XMLSchema 3 /2001/XMLS h
xsi
http://www.w3.org/2001/XMLSchema-instance
xdt
http://www.w3.org/2003/11/xpath-datatypes
sqlxml
http://standards iso org/iso/9075/2003/sqlxml http://standards.iso.org/iso/9075/2003/sqlxml
Nov, 2010
Madrid
C. Costilla
10
Introducción a SQL/XML
6. XML: Conceptos
boo Querying XML Jim Melton / th Andrew Eisenberg MKP 2002
Nov, 2010
Madrid
C. Costilla
11
Introducción a SQL/XML
XML Support
Nov, 2010
Madrid
C. Costilla
12
Introducción a SQL/XML
6 1 Data Type SQL convertidos a Schema Type XML 6.1 Mapear cada tipo predefinido de SQL a su XML Schema más similar usando las caracteríticas (anotaciones y restricciones) de Schema XML para capturar la semántica de tipos SQL tanto como sea posible. Algunos Mappings entre SQL y XML: ¾del conjunto de caracteres SQL a Unicode ¾ de SQL
s a XML Names
¾ de SQLdata types (como los usados en los esquemas SQL para definir
objetos de
esquemas SQL tales t l como columnas) l ) a XML Schema S h ddata t types t ¾de valores SQLdata types a valores de XML Schema data types ¾ de una tabla SQL Q a un documento XML y a un documento XML Schema
¾ etc.
Nov, 2010
Madrid
C. Costilla
13
Introducción a SQL/XML
Tipos de datos XML en Tablas SQL
Nov, 2010
Madrid
C. Costilla
14
Introducción a SQL/XML
XML Export Format
Nov, 2010
Madrid
C. Costilla
15
Introducción a SQL/XML
Mapping Names . Ejemplo SQL --> XML
Nov, 2010
Madrid
C. Costilla
16
Introducción a SQL/XML
Mapping Names. Ejemplo SQL --> XML ●
"S l FY2000" ֜Salary_x003A_FY2000 "Salary:FY2000" S l 003A FY2000
●
"Work@home" Work@home ֜ Work_x0040_home Work x0040 home
●
"Work_x0040_home"֜Work_x005F_x0040_home
●
"Work_home" ֜ Work_home
●
"@@" ֜ _x0040_ 0040 _x0040_ 0040 /*N /*Note t ddouble bl ““_”*/ ”*/
Nov, 2010
Madrid
C. Costilla
17
Introducción a SQL/XML
6 1 Data Type SQL convertidos a Schema Type XML 6.1 BOOLEAN Nov, 2010
Madrid
C. Costilla
18
Introducción a SQL/XML
7 Usando 7. U d JJuntos t SQL y XML
●
SQL más Xpath
●
Almacenar documentos XML en bases de datos SQL
●
Tipos XML
●
Ver datos SQL en formato o vistas XML
Nov, 2010
Madrid
C. Costilla
19
Introducción a SQL/XML
8. XPath CONSULTAS con XQuery XQuery (soportado mediante XPath) es un lenguaje consultivo para que XML
pueda extraer datos, al estilo de SQL en XORDB, o como SPARQL en la Web Semántica
●
Xpath: p Un lenguaje g j ppara direccionar ppartes de un documento.
●
Ejemplos: ¾ //header //h d
Todas las cabeceras en un documento
¾ /book/author[1] ¾ /emp[@salary >“10000”]
Nov, 2010
El primer elemento autor que es hijo de cada elemento libro Cada elemento empleado cuyo atributo salario es > 10000
Madrid
C. Costilla
20
Introducción a SQL/XML
XQuery y ¿Qué es y para qué sirve? XQuery es un lenguaje estandard para combinar documentos, documentos bases de datos, páginas Web y otras formas de representación de información. XQuery cuenta con una amplia implementación implementación, es potente y más fácil de aprender y mantener que otros lenguajes alternativos. Xquery Xq er podría reempla reemplazar ar a los lenguajes leng ajes propietarios del middleware middle are y del desarrollo de Aplicaciones Web . XQuery podría XQ d í sustituir tit i a los l programs complejos l j en Java J o C++ con pocas líneas de código. ( é (véanse: ●
http://www.w3.org/standards/xml/query
●
http://www.w3.org/standards/techs/xquery)
Nov, 2010
Madrid
C. Costilla
21
Introducción a SQL/XML
8.1. SQL y XPath CREATE_TABLE my_docs ( doc_no INTEGER d doc_owner VARCHAR(50) document CLOB(2G) ) SELECT doc_no, xpath(document, ‘/publ/name’) FROM my_docs d WHERE xpath (document, ‘//author[“Jim Melton”]’)
Nov, 2010
Madrid
C. Costilla
22
Introducción a SQL/XML
9. Tipos XML (Operaciones Usuales) XMLEXTRACT (XMLType, XPath [, Namespace]) Utiliza el argumento de Xpath para localizar un nodo en la instancia del Tipo XML (XML Type) usando la información del espacio de Namespace
XMLCONCAT ((XMLval,, XMLval [, XMLval]...) ] ) Concatena los valores XMLval
XMLAGG (XMLval ORDER BY sortexpr) Concatena valores XML traídos de una tabla agrupada después de evaluar sortexpr p
Nov, 2010
Madrid
C. Costilla
23
Introducción a SQL/XML
XML soporta las siguientes funciones:
Nov, 2010
Madrid
C. Costilla
24
Introducción a SQL/XML
10. Funciones de publicación XML Funciones llamadas en SQL ordinario que generan XML. XML Sirven para producir: documentos XML, elementos, fragmentos o bosques; a partir de datos SQL. SQL Funciones:
XMLELEMENT XMLATTRIBUTES XMLCOLELEM XMLCOLATTVAL XMLGEN
Nov, 2010
Madrid
C. Costilla
25
Introducción a SQL/XML
Ejemplo 1 SELECT e.id, XMLELEMENT ( "Emp" Emp , XMLATTRIBUTES ( e.id ), 'Employee ', XMLELEMENT ("name", e.fname || ' ' || e.lname ), ' was hired on = ', XMLELEMENT ( "hiredate", e.hiredate ) ) AS "result" FROM employees AS e
Resultado 1 Employee 1234 >Employee J. Pérez was hired on = 1980-06-17 Employee T. Martín was hired on = 1978-02-25
Nov, 2010
Madrid
C. Costilla
26
Introducción a SQL/XML
Ejemplo 2 SELECT e.id, XMLGEN ( ' {name} > {hire} {dept} p { p} p ', e.name AS name, e hire e.hire, e.dept ) AS "result" p y e FROM employees WHERE ...
Nov, 2010
Madrid
Resultado 2 Employee id "1234">Emplo ee J. Pérez hiredate 1980 06 17 /hiredate 1980-06-17 Databases id "2341" T. Martín hiredate 1978 25 02 /hiredate 1978-25-02 Engineering
C. Costilla
27
Introducción a SQL/XML
Ejemplo 3 SELECT XMLELEMENT ( "Department", XMLATTRIBUTES ( e.dept AS "name" ), XMLAGG ( XMLELEMENT ("emp", (" " e.lname) l ) ORDER BY e.lname ) ) AS "dept dept_list list“ FROM employees e GROUP BY dept
Devuelve un elemento ‘emp’ por empleado de cada dept, ordenado por su apellido generando un solo elemento por ‘dept’
Resultado 3
TomásMartín JuanPérez >
Nov, 2010
Madrid
C. Costilla
28
Introducción a SQL/XML
Ot Funciones Otras F i SQL que generan XML (2 (2.0) 0) ¾ XMLCOMMENT(‘comment (‘ t content’ t t’ [RETURNING {CONTENT | SEQUENCE }]) Permite a la aplicación generar comentarios XML.
¾ XMLPI(NAME tartet {, string-expression ][RETURNING { CONTENT | SEQUENCE}]) Permite a la aplicación crear instrucciones de procesamiento XML
¾ XMLCAST( value-expresion AS type) Permite a la aplicación convertir un valor (cualquier tipo XML o algún otro tipo) a uno de los tipos XML definidos en el segundo estándar.
Nov, 2010
Madrid
C. Costilla
29
Introducción a SQL/XML
Otras Funciones (2.0)
¾XMLQUERY evalúa una expresión Xquery y devuelve el resultado a la aplicación SQL. SQ Al contrario que XMLCOMMENT y XMLPI, XMLPI el valor devuelto por XMLQUERY puede ser una referencia al resultado o una copia del valor
Nov, 2010
Madrid
C. Costilla
30
Introducción a SQL/XML
11 Ejemplo 11. Ej l dde XMLQUERY XM QUERY SELECT top_price, top price XMLQUERY ( 'for $cost in /buyer/contract/item/amount where /buyer/name = $var1 return $cost $cost' PASSING BY VALUE ‘A.Eisenberg’ AS var1, buying_agents RETURNING SEQUENCE BY VALUE ) FROM buyers
Nov, 2010
Madrid
C. Costilla
31
Introducción a SQL/XML
SQL:2006
Nov, 2010
Madrid
C. Costilla
32
Introducción a SQL/XML
Estándar SQL 9075 ‘al día de hoy’ Information technology -- Database languages – SQL, “Corrigenda, Amendments and other parts” ●
ISO/IEC 9075-1:2008; hoy tenemos la versión ISO/IEC 9075-1:2008/Cor 1:2010
●
ISO/IEC 9075-2:2008; hoyy tenemos la versión de 2009-01-27
●
ISO/IEC 9075-3:2008
Part 3: Call-Level Interface (SQL/CLI)
●
ISO/IEC 9075 9075-4:2008 4:2008
Part 4: Persistent Stored Modules (SQL/PSM)
●
ISO/IEC 9075-9:2008
Part 9: Management of External Data (SQL/MED)
●
ISO/IEC 9075-10:2008 9075 10:2008
Part 10: Object Language Bindings (SQL/OLB)
●
ISO/IEC 9075-11:2008
Part 11: Information and Definition Schemas (SQL/Schemata)
●
ISO/IEC 9075-13:2008
Part 13: SQL Routines and Types Using the Java TM Prog.Lang. (SQL/JRT)
●
ISO/IEC 9075-14:2008 9075 14:2008
Part 14: XML-Related XML Related Specifications (SQL/XML)
Nov, 2010
Madrid
C. Costilla
33
Introducción a SQL/XML
Estándar SQL 9075 ‘al día de hoy’ ISO/IEC 9075 define el lenguaje SQL. Su alcance es la definición de la estructura de los datos, y las operaciones sobre los datos almacenados en esa estructura. ISO/IEC 9075-1:2008 (hoy es ISO/IEC 9075-1:2008/Cor 1:2010), especifica el marco conceptual utilizado en otras partes de ISO/IEC 9075 para definir la gramática de SQL y el resultado del procesamiento de sus sentencias en una implementación de SQL. SQL ISO/IEC 9075-2:2008 (hoy es ISO/IEC 9075-2:2008/Cor 1:2009), define la estructura de los datos, datos y las operaciones básicas sobre ellos. ellos Proporciona capacidades funcionales para la: creación, acceso, mantenimiento, control y pprotección de los datos SQL,, tanto estáticos como dinámicos. Además de la invocación interactiva, provee ligaduras con los PL: Ada, C, COBOL, Fortran, M, Pascal, and PL/I ISO/IEC 9075-3:2008 …….. Call-Level Interface (SQL/CLI)…. Nov, 2010
Madrid
C. Costilla
34
Introducción a SQL/XML
Nov, 2010
Madrid
C. Costilla
35