armazenamento e gestão de dados xml§ões... · 2003-01-15 · 3 xml – conteúdo separado da...

28
Armazenamento e Gestão de dados XML Artur Afonso de Sousa Departamento de Informática ESTV Fortech 2002 FOR $l IN document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //livro WHERE $l/editora/nome = “FCA” AND $l/ano > 1995 RETURN $l/autor bdbib/livro[editora/nome=”FCA” AND ano>1995] /autor WHERE <bdbib> <livro> <autor>$a</autor> <editora> <nome>FCA</nome> </editora> <ano>$n</ano> </livro> </bdbib> IN “www.estv.ipv.pt/biblioteca/bdbiblio.xml”, $n > 1995 CONSTRUCT $a ESTV S2L A XML e algumas normas associadas. A XML e algumas normas associadas. - XSL(T), DOM/SAX, XML XSL(T), DOM/SAX, XML-SCHEMA SCHEMA • Armazenamento e gestão de dados XML. • Linguagens de interrogação para dados XML. • Conclusão. Descrição Geral

Upload: others

Post on 11-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

1

Armazenamento e Gestão de dados XML

Artur Afonso de SousaDepartamento de Informática

ESTV

Fortech 2002

FOR $l IN document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //livroWHERE $l/editora/nome = “FCA” AND $l/ano > 1995RETURN $l/autor

bdbib/livro[editora/nome=”FCA” AND ano>1995] /autor

WHERE <bdbib><livro>

<autor>$a</autor> <editora>

<nome>FCA</nome></editora><ano>$n</ano>

</livro> </bdbib> IN “www.estv.ipv.pt/biblioteca/bdbiblio.xml”, $n > 1995

CONSTRUCT $a

ESTVS2L

•• A XML e algumas normas associadas.A XML e algumas normas associadas.

-- XSL(T), DOM/SAX, XMLXSL(T), DOM/SAX, XML--SCHEMASCHEMA

• Armazenamento e gestão de dados XML.

• Linguagens de interrogação para dados XML.

• Conclusão.

Descrição Geral

Page 2: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

2

HTMLHyperText Markup Language

SGMLStandard Generalized Markup Language

• Não extensível

• Etiquetas não descrevem o significado dos dados

XML eXtensible Markup Language (W3C - 1998)

INTEROPERABILIDADE ENTRE APLICAÇÕES !

• Complexa

• Extensível• Etiquetas descrevem o significado dos dados• Simples• Projectada para a Web

Motivações

<?xml version="1.0 ”?><bdbib>

<livro isbn = “_972-722-143-2”><título>Tecnologia de Bases de Dados</título><editora>

<nome>FCA</nome><sede>Lisboa</sede>

</editora><ano>1998</ano><preço>26</preço><autor>José Luís Pereira</autor>

</livro><livro isbn = “_972-722-193-9”>

<título>Planeamento de Sistemas de Informação</título><editora>

<nome>FCA</nome><sede>Lisboa</sede>

</editora><ano>1999</ano><preço>22</preço><autor>Luís Amaral</autor><autor>João Varajão</autor>

</livro><artigo classificação = “bd” referencia = “_ 972-722-143-2”>

<autor>Pedro Soares</autor><título>Object-Relational Databases</título><ano>2000</ano>

</artigo></bdbib>

Base de Dados XML

Page 3: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

3

XML – conteúdo separado da apresentação

Linguagem de folhas de estilo para apresentar os dados ao utilizadorXSL (eXtensible Stylesheet Language)

DocumentoXML

Folha de estilo XSL

• Documento HTML• Novo documento XML• Outro qualquer formato

Possibilidade de associar várias folhas de estilo a um documento XML

+

Linguagem de folhas de estilo para a XML

<?xml-stlylesheet type=”text/xsl” href=”identificação_da_folha_de_estilo.xsl”?>

Documento

XML

Processador XML

(DOM/SAX)

Linguagens de programação

(Java, Perl,etc.)

API

APIs

Page 4: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

4

Fonte A

Fonte C

Fonte D

Fonte B

Interligação de aplicações heterogéneas – XML

Fonte A

Fonte C

Fonte D

Hub XML Fonte B

• Necessários 12 conversores

• Nova Fonte (n.º fontes – 1) * 2 conversores

• Necessários 8 conversores

• Nova Fonte 2 conversores

Vantagens da XML

• A XML é extensível.

• Os documentos XML são auto-descritivos.

• Apesar da sua simplicidade, a XML permite criar estruturas bastante complexas.

• A XML é extremamente flexível.

• A XML permite efectuar a validação de documentos (DTD, XML-SCHEMA).

• O conteúdo de um documento XML pode ser facilmente manipulado pelas aplicações de software (APIs DOM e SAX).

• A XML tem uma natureza metalinguística.

• A XML é um padrão aberto.

• O conteúdo de um documento XML está separado da sua apresentação.

• Um documento XML pode ser pesquisado de formas não previstas (questões ad hoc).

Page 5: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

5

•• A XML A XML e algumas normas associadase algumas normas associadas..

• Armazenamento e gestão de dados XML.Armazenamento e gestão de dados XML.

–– SGBDsSGBDs Semiestruturados (LORE).Semiestruturados (LORE).

–– SGBDsSGBDs Relacionais, ObjectoRelacionais, Objecto--relacionais (relacionais (OracleOracle 8i / 9i).8i / 9i).

–– SGBDsSGBDs Orientados aos objectos (Orientados aos objectos (Poet Object ServerPoet Object Server))

–– SGBDs SGBDs nativos (nativos (eXceloneXcelon) )

–– Sistema de ficheiros +Sistema de ficheiros + APIsAPIs + Ling. Programação+ Ling. Programação..

• Linguagens de interrogação para dados XML.

• Conclusão.

Descrição Geral

• Documentos XML fortemente estruturados

• SGBDs Objecto-Relacionais (Oracle 9i).

• SGBDs Orientados aos objectos (POET).

• Documentos XML semiestruturados

• SGBDs Semiestruturados (LORE).

• SGBDs Nativos (eXcelon, Tamino)

• Sistema de Ficheiros + APIs + LPs. + LIs

Armazenamento e gestão de dados XML

Page 6: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

6

Dados semi-estruturados

Dados normalmente representados através de grafos dirigidos e etiquetados.

• Não se ajustam aos modelos de dados tradicionais.

• Estrutura pode:

• Ser irregular;

• Não ser previamente conhecida;

• Mudar com frequência.

• Auto-descritivos (esquema está misturado com os dados)

Novo paradigma de bases de dados: modelo de dados semi-estruturados

Alguns dados XML também partilham estas características!

SGBD LORE (Ligthweigth Object REpository)

• Sistema que suporta várias características dos SGBDs comerciais.

Modelo de Dados

• Documento XML é representado por um grafo dirigido e etiquetado.

• Nós elementos

• Complexos – etiqueta + [lista de pares atributo/valor].

• Atómicos – texto.

• Arcos relacionamentos elemento/subelemento

• De subelemento – etiqueta com nome do subelemento de destino.

• De ligação – etiqueta com nome do atributo que introduz a ligação

Page 7: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

7

SGBD LORE (Ligthweigth Object Repository)

http://www-db.stanford.edu/lore

livro

título

&4 &6

&2

&7

anopreço

bdbib

&1

&9 &10 &11

artigo

autor título

&3

ano

"Tecnologiasde Bases de

Dados"

"FCA"

"José LuísPereira"

{ISBN="_972-722-143-2}

"Lisboa"

"1998"

referencia

&12

text

&15

text

&13&14

nome sede

text text

&21 &22

&8

autor

&17

text

&18 &19 &20

text text

{classificação="bd",referencia="_972-722-143-2"}

"PedroSoares"

"Object-RelationalDatabases

"2000"

text

editora

&5

"26"

&16

text

...

Linguagem de Interrogação LOREL

<answer><artigo classificação = “bd” referencia = “_ 972-722-143-2”>

<autor>Pedro Soares</autor><título>Object-Relational Databases</título><ano>2000</ano>

</artigo></answer>

SELECT bdbib.artigo

WHERE bdbib.artigo.autor = “Pedro Soares”

Page 8: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

8

Dataguides

<bdbib><livro isbn = “ ”>

<título> </título><editora>

<nome> </nome><sede> </sede>

</editora><ano> </ano><preço> </preço><autor> </autor>

</livro><artigo classificação = “ ” referencia = “ ”>

<autor> </autor><título> </título><ano> </ano>

</artigo></bdbib>

Sumário conciso e exacto da estrutura de uma base de dados LORE.

• Cada caminho da base de dados aparece exactamente uma vez no dataguide (propriedade de concisão).

• Todos os caminhos do dataguide aparecem na base de dados original (propriedade de exactidão).

Explorar a estrutura da base de dados (utilizadores/aplicações)Optimização de questões (sistema).

+

Dataguides

SGBD Tradicional

Esquema

LORE

Dataguide

• Sistema mantém dinamicamente o dataguide.

• Dados têm que estar conformes com o esquema.

• Sumariar correctamente a estrutura actual da base de dados.

• Estático e previamente definido

Page 9: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

9

Dataguides – Interface gráfica

<Answer><livro>

<autor>José Luís Pereira</autor></livro><livro>

<autor>Luís Amaral</autor><autor>João Varajão</autor>

</livro></Answer>

▼ � bdbib▼ � >livro

� @isbn� >título▼ � >editora

� >nome = “FCA”� >sede

� >ano� >preço� >autor

� � >Artigo

GO

Select bdbib.>livro.>autorWhere bdbib.>livro.>editora.>nome = “FCA”;

http://www-db.stanford.edu/lore

Três modos de armazenamento:1. Elemento2. Documento3. Híbrido

1. � Acesso aos dados mais rápido e conveniente (SQL).⊝ Necessidade de efectuar mapeamento.

2. � Evita custos do mapeamento.⊝ Acesso aos dados mais lento e pouco conveniente (pesquisa por palavra-chave).

3. � Mais flexível.⊝ Custo do mapeamento de parte das estruturas do documento.

SGBDs Relacionais (O-R) para gerir dados XML

Page 10: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

10

2 cenários para utilizar BDR/O-R (ORACLE 8i/9i) com a XML

Servelet XSQLORACLE 8i

Web

Armazenar dados XML na BD

• BD armazenar/consultar dados • XML formato de troca de dados

HTTP

ORACLE 8iServelet XSQL

Telefone celular

Página XSQL com questões SQL embebidas

(documento XML)

Documento XML (eventualmente transformado por uma folha de estilo conveniente)

Utilizador

PC

PDA

Browser

gráfico

Browser

não-gráfico

Interrogar a BD e obter resultado no formato XML

Esquema de uma tabela objecto-relacional com dados bibliográficosCREATE TYPE EDITORA_OBJ AS OBJECT (

nome varchar2(30),

sede varchar2(30),

paginternet varchar2(40));

CREATE TYPE AUTOR_OBJ AS OBJECT (

nome varchar2(15),

sobrenome varchar2(15),

email varchar2(40));

CREATE TABLE ListaLivros (

isbn varchar2(15),

título varchar2(50),

autores LISTAUTORES_NT,

editora EDITORA_OBJ,

preço number)

NESTED TABLE autores STORE AS autor;

CREATE TYPE LISTAUTORES_NT AS

TABLE OF AUTOR_OBJ;

INSERT INTO ListaLivros VALUES('972-722-193-9', ‘Planeamento de Sistemas de Informação’, LISTAUTORES_NT(AUTOR_OBJ(‘João', ‘Varajão’, ‘[email protected]'), AUTOR_OBJ(‘Luís', ‘Amaral’, ‘[email protected]')), EDITORA_OBJ ('FCA', 'Lisboa', 'http://www.fca.pt'), 4200);

isbn título autores editora preço 972-722-193-9 Planeamento de

Sistemas de Informação 4200

: : : : :

nome sobrenome email João Varajão [email protected] Luís Amaral [email protected] : : :

nome FCA sede Lisboa paginternet http://www.fca.pt

http://technet.oracle.com/tech/XML/demo/

Page 11: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

11

Mapeamento

• Tabela/Vista – Elemento (rowset).

• Registo – Elemento (row) com um atributo de utilização obrigatória.

• Coluna com tipo de dados predefinido – Elemento atómico

• Coluna com tipo de dados definido pelo utilizador (object type) –Elemento complexo.

– Propriedade do object type – sub- elemento do elemento complexo.

• Coluna cujo tipo de dados é uma tabela aninhada – Elemento complexo +Elemento complexo para cada registo da tabela aninhada.

– Coluna da tabela aninhada – sub- elemento do elemento registo da tabela aninhada.

Dados da BD Elementos aninhados no documento XML.

Página XSQL títulolivro.xsql

<?xml version=“1.0” encoding="windows-1252”?>

<?xml-stlylesheet type=”text/xsl” href=”títuloisbn.xsl”?>

<xsql:query

xmlns:xsql=”urn:oracle-xsql”

connection=“catálogo”

rowset-element=”Resultado”

row-element=”Livro”

id-attribute=”num”>

SELECT título, isbn

FROM ListaLivros

WHERE isbn={@isbnlivro}

</xsql:query>http://catalogo.com/titulolivro.xsql?isbnlivro=972-722-193-9

Page 12: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

12

<?xml version=“1.0” encoding="windows-1252”?>

<?xml-stlylesheet type=”text/xsl” href=”títulolivro.xsl”?>

<Resultado>

<Livro num=”1”>

<título>Planeamento de Sistemas de Informação</título>

<isbn>972-722-193-9</isbn>

</Livro>

</Resultado>

Documento XML resultante da execução da página XSQL títulolivro.xsql

<?xml version=“1.0” encoding="windows-1252”?><html xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>

<head><title>Título do Livro Pretendido</title>

</head><body>

<table border=”1” cellspacing=”0”><tr>

<th>Título</th><th>ISBN</th>

</tr><xsl:for-each select=”Resultado/Livro”>

<tr><td><xsl:value-of select=”título”/></td><td><xsl:value-of select=”isbn”/></td>

</tr></xsl:for-each>

</table></body>

</html>

Folha de estilo XSL(T) títulolivro.xsl

Aplicar ao documento XML resultante da execução da página XSQL títulolivro.xsql

Page 13: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

13

Página HTML

<html><head>

<title>Título do Livro Pretendido</title> </head><body>

<table border="1" cellspacing="0"><tr>

<th>Título</th><th>ISBN</th>

</tr><tr>

<td>Planeamento de Sistemas de Informação</td><td>972-722-193-9</td>

</tr></table>

</body></html>

Resultante da aplicação da folha de estilo XSL(T) títulolivro.xsl ao documento XML anterior

Página HTML (output)

Resultante da aplicação da folha de estilo XSL(T) títulolivro.xsl ao documento XML anterior

Page 14: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

14

SGBDs orientados aos objectos para gerir dados XML

(Poet Object Server)

XML SCHEMA

Objectos

Classes

Documento XMLUnmarchal

Marchal

de acordo cominstâncias de

converter e compilar

BDOO Poet

Persistência

Armazenar/Obter

(Castor, compliador java) (Poet JavaTM Enhancer)

(Castor)

• Esquemas têm que ser compatíveis! (XSLT)

• Castor – XML Data Binding Facility for the JavaTM Plataform

• OQL – consultar eficientemente os dados XML

• O standard ODMG (3.ª versão), já atingiu um nível suficiente de maturidade;

• Espera-se que a adopção universal da XML possa, muito em breve, aumentar a aceitação das bases de dados OO;

• A ODL é uma norma proposta pelo ODMG que permite a portabilidade de esquemas de bases de dados OO;

Um esquema definido em ODL pode, teoricamente, ser implementado em qualquer SGBDOO que contemple o standard.

Porquê ODL ?

Page 15: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

15

• A linguagem XML-SCHEMA é muito mais poderosa que as antigas DTDs no que concerne a:

• representação de tipos de dados;

• especificação de restrições semânticas, as quais são fundamentais nas bases de dados convencionais.

Porquê XML-SCHEMA ?

é particularmente relevante trabalhar no sentido de efectuar a conversão entre esquemas ODL e

esquemas no formato XML-SCHEMA.

Sugestão de mapeamento de um esquema ODL para um

esquema no formato XML-SCHEMA

Class livro

( extent livros key isbn )

{ attribute string isbn;

attribute string título;

attribute unsigned short ano;

attribute float preço;

relationship set<autor> redigidopor

inverse autor::escreve;

relationship editora publicadopor

inverse editora::publica;

};

Class autor

( extent autores key cod )

{ attribute string cod;

attribute string nome;

attribute string sobrenome;

attribute enum título {Engenheiro, Mestre, Doutor};

attribute list<string> email;

relationship set<livro> escreve

inverse livro::redigidopor;

};

Atributo simples

Atributo lista

Relacionamento múltiplo (# > 1 lado destino)

Relacionamento simples (# = 1 lado destino)

Atributo chave

Atributo enumerado

Page 16: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

16

Sugestão de mapeamento de um esquema ODL para um

esquema no formato XML-SCHEMA

Class endereço

{

attribute string rua;

attribute string localidade;

attribute string codpostal;

attribute string país;

}

Class editora

( extent editoras key id )

{ attribute string id;

attribute string nome;

attribute string sede;

attribute endereço endereçoeditora;

attribute string pgweb;

relationship set<livro> publica

inverse livro::publicadopor;

};

Atributo simples

Atributo composto

Relacionamento múltiplo (# > 1 lado destino)

Atributo chave

• nome da base de dados elemento raiz do documento XML;

• cada classe de topo elemento (complexo) com o mesmo nome;

• atributo simples elemento atómico com o mesmo nome;

• Complex atributo elemento complexo com o mesmo nome;

• atributo chave elemento especial key ;

• atributo lista elemento com o mesmo nome + elemento especial list;

Regras de mapeamento

Page 17: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

17

• atributo enumerado

elemento com o mesmo nome + elemento especial restriction com elementos especiais enumeration

• relacionamento múltiplo

elemento (com o mesmo nome) com um atributo maxOccurs = unbounded+

Elemento especial keyref;

• relacionamento simples

elemento com o mesmo nome + elemento especial keyref ;

Regras de mapeamento

<?xml version=”1.0”?>

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

<xsd:element name=”bdbib”>

<xsd:complexType>

<xsd:choice maxOccurs=”unbounded”>

<xsd:element name=”livro”>

<xsd:complexType>

<xsd:sequence>

<xsd:element name=”isbn” type=”xsd:string”/>

<xsd:element name=”título” type=”xsd:string”/>

<xsd:element name=”ano” type=”xsd:unsignedShort”/>

<xsd:element name=”preço” type=”xsd:float”/>

<xsd:element name=“escritopor" maxOccurs="unbounded">

<xsd:complexType>

<xsd:complexContent>

<xsd:restriction base="xsd:anyType">

<xsd:attribute name="cod" type="xsd:string"/>

</xsd:restriction>

</xsd:complexContent>

</xsd:complexType>

</xsd:element>

<xsd:element name=”publicadopor” type”xsd:string”/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

Esquema resultante<xsd:element name=”autor”>

<xsd:complexType><xsd:sequence>

<xsd:element name=”cod” type=”xsd:string”/><xsd:element name=”nome” type=”xsd:string”/><xsd:element name=”sobrenome” type=”xsd:string”/><xsd:element name=”título” minOccurs=”0”>

<xsd:simpleType><xsd:restriction base=”xsd:string”>

<xsd:enumeration value=”Engenheiro”/><xsd:enumeration value=”Mestre”/><xsd:enumeration value=”Doutor”/>

</xsd:restriction></xsd:simpleType>

</element> <xsd:element name=”email”>

<xsd:simpleType><xsd:list itemType=”xsd:string”/>

</xsd:simpleType></xsd:element><xsd:element name=“escreve" maxOccurs="unbounded">

<xsd:complexType><xsd:complexContent>

<xsd:restriction base="xsd:anyType"><xsd:attribute name="isbn" type="xsd:string"/>

</xsd:restriction></xsd:complexContent>

</xsd:complexType></xsd:element>

</xsd:sequence></xsd:complexType>

</xsd:element>

Page 18: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

18

<xsd:element name=”editora”><xsd:complexType>

<xsd:sequence><xsd:element name=”id” type=”xsd:string”/><xsd:element name=”nome” type=”xsd:string”/><xsd:element name=”sede” type=”xsd:string”/><xsd:element name=”endereçoeditora”>

<xsd:complexType><xsd:sequence>

<xsd:element name=”rua” type=”xsd:string”/><xsd:element name=”localidade” type=”xsd:string”/><xsd:element name=”codpostal” type=”xsd:string”/><xsd:element name=”país” type=”xsd:string”/>

</xsd:sequence></xsd:complexType >

</element><xsd:element name=”pgweb” type=”xsd:anyURI”/><xsd:element name=“publica" maxOccurs=“unbounded”>

<xsd:complexType><xsd:complexContent>

<xsd:restriction base="xsd:anyType"><xsd:attribute name="isbn" type="xsd:string"/>

</xsd:restriction></xsd:complexContent>

</xsd:complexType></xsd:element>

</xsd:sequence></xsd:complexType>

</xsd:element></xsd:choice>

</xsd:complexType>

Esquema resultante (Cont.)<xsd:key name=”livroK”>

<xsd:selector xpath=”.//livro”/><xsd:field xpath=”isbn”/>

</xsd:key><xsd:key name=”autorK”>

<xsd:selector xpath=”.//autor”/><xsd:field xpath=”cod”/>

</xsd:key><xsd:key name=”editoraK”>

<xsd:selector xpath=”.//editora”/><xsd:field xpath=”id”/>

</xsd:key><xsd:keyref name=“livroRefautor" refer="autorK">

<xsd:selector xpath=".//livro/escritopor“/><xsd:field xpath="@cod“/>

</xsd:keyref><xsd:keyref name=“livroRefeditora" refer=“editoraK">

<xsd:selector xpath=".//livro“/><xsd:field xpath=“publicadopor“/>

</xsd:keyref><xsd:keyref name=“autorReflivro" refer=“livroK“>

<xsd:selector xpath=".//autor/escreve“/><xsd:field xpath="@isbn“/>

</xsd:keyre><xsd:keyref name=“editoraReflivro" refer=“livroK">

<xsd:selector xpath=".//editora/publica"/><xsd:field xpath="@isbn"/>

</xsd:keyref></xsd:element>

</xsd:schema>

<?xml version="1.0" encoding="ISO-8859-1"?><bdbib xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance“

xsi:noNamespaceSchemaLocation="C:\MyDocs\schema.xsd"><livro>

<isbn>1-55860-452-9</isbn><título>O-R DBMSs Tracking The Next Great Wave</título><ano>1999</ano><preço>50</preço><escritopor cod="A1"/><escritopor cod="A2"/><publicadopor>P1</publicadopor>

</livro><autor>

<cod>A1</cod><nome>Michael</nome><sobrenome>Stonebraker</sobrenome><título>Doutor</título><email>[email protected]</email><escreve isbn=“1-55860-452-9”/>

.

.</autor><autor>

<cod>A2</cod><nome>Paul</nome><sobrenome>Brown</sobrenome><título>Doutor</título><email>[email protected]</email><escreve isbn="1-55860-452-9"/>

.

.</autor>

Exemplo de documento XML<editora>

<id>P1</id><nome>Morgan Kaufmann</nome><sede>San Francisco</sede><endereçoeditora>

<rua>340 Pine Street, Sixth Floor</rua><localidade>San Francisco</localidade><codpostal>94194-3205</codpostal><país>EUA</país>

</endereçoeditora><pgweb>http://www.mkp.com</pgweb><publica isbn="1-55860-452-9"/>

.

.</editora>

.

.</bdbib>

Page 19: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

19

Sistema de ficheiros para gerir dados XML

Documento XML

+

processador XML (DOM / SAX)

+

Linguagens de programação (Java, C++, Perl, etc.)

+

XQuery

Documento XML

•• A XML A XML e algumas normas associadase algumas normas associadas..

• Armazenamento e gestão de dados XML.Armazenamento e gestão de dados XML.

•• Linguagens de interrogação para dados XML.Linguagens de interrogação para dados XML.

–– XMLXML--QL, XQL, QL, XQL, QuiltQuilt,, XQueryXQuery

• Conclusão

Descrição Geral

Page 20: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

20

XML-QLPerspectiva de Bases de Dados

XQLPerspectiva do Documento

XQUERYTentativa de providenciar uma norma – W3C

QUILT Perspectiva Integradora

Linguagens de interrogação para dados XML

Linguagem de interrogação XML – QL

• Especificamente projectada para a XML.

• É uma linguagem declarativa.

• Adopta um modelo de dados que é uma variante do modelo de dados semi-estruturados (grafo dirigido e etiquetado).

• Combina a sintaxe da XML com as técnicas das linguagens de bases de dados tradicionais.

• Interrogação XML-QL

• Cláusula WHERE – indica o que se pretende seleccionar.

• Cláusula CONSTRUCT – especifica o resultado a devolver.

http://www.w3.org/TR/NOTE-xml-ql/http://www.research.att.com/~mff/xmlql-demo/html

Page 21: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

21

Linguagem de interrogação XML-QL – Exemplo 1

WHERE <bdbib> <livro>

<título>$t</título><editora>

<nome>FCA</nome></editora><ano>$n</ano><autor>$a</autor>

</livro> CONTENT_AS $l</bdbib> IN “www.estv.ipv.pt/biblioteca/bdbiblio.xml”, $n > 1995

CONSTRUCT <Resultado><título>$t</título>{ WHERE <autor>$a</autor> IN $l

CONSTRUCT <autor>$a</autor>}

</Resultado>

Linguagem de interrogação XQL – Exemplo 1

bdbib/livro[editora/nome=”FCA” AND ano>1995] /(título | autor)

Linguagem utilizada pelo sistema eXcelon.http:www.exceloncorp.com

Page 22: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

22

Quilt

• Linguagem extremamente versátil e flexível (permite consultar dados de um vasto espectro de fontes – estruturadas e semiestruturadas).

• Combina as melhores características de algumas das linguagens de interrogação de documentos XML propostas até então (nomeadamente a XML-QL e a XQL).

• Sintaxe básica de uma interrogação Quilt :

• Cláusula FOR – deve ser utilizada sempre que seja necessário efectuar iteração e gera uma lista ordenada de tuplos.

• Cláusula WHERE – aplica condições aos tuplos gerados pela

cláusula FOR.

• Cláusula RETURN – gera o resultado da consulta.

Linguagem de interrogação Quilt – Exemplo 1

<resultado>

FOR $l IN document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //livro

WHERE $l/editora/nome = “FCA” AND $l/ano > 1995

RETURN

<livro>

$l/título,

FOR $a IN $l/autor

RETURN $a

</livro>

</resultado>

Page 23: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

23

Resultado das consultas anteriores

<resultado>

<livro>

<título>Tecnologia de Bases de Dados</título>

<autor>José Luís Pereira</autor>

</livro>

<livro>

<título>Planeamento de Sistemas de Informação</título>

<autor>Luís Amaral</autor>

<autor>João Varajão</autor>

</livro>

</resultado>

XQuery

• Proposta pelo W3C para estabelecer uma norma para uma linguagem de interrogação para documentos XML.

• A linguagem Xquery tem sido, até agora, fortemente inspirada na linguagem Quilt.

• Sintaxe básica de uma interrogação XQuery :

• Cláusula FOR – deve ser utilizada sempre que seja necessário efectuar iteração e gera uma lista ordenada de tuplos.

• Cláusula WHERE – aplica condições aos tuplos gerados pela

cláusula FOR.

• Cláusula RETURN – gera o resultado da consulta.

Page 24: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

24

Linguagem de interrogação XQUERY – Exemplo 1

<resultado>

FOR $l IN document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //livro

WHERE $l/editora/nome = “FCA” AND $l/ano > 1995

RETURN

<livro>

$l/título,

$l/preço

</livro> SORTBY (preço)

</resultado>

FOR $l IN document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //livro[editora/nome

= “FCA” AND ano > 1995]

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”><xsd:element name=”produtos”/>

<xsd:complexType><xsd:choice maxOccurs=”unbounded”>

<xsd:element name=”livro”/></xsd:complexType>

<xsd:sequence><xsd:element name=”isbn” type=”xsd:string”/><xsd:element name=”título” type=”xsd:string”/><xsd:element name=”autor” type=”xsd:string” maxOccurs=”unbounded”/><xsd:element name=”editora” type=”xsd:integer”/><xsd:element name=”ano” type=”xsd:integer”/><xsd:element name=”preço” type=”xsd:float”/>

</xsd:sequence></xsd:complexType>

</xsd:element><xsd:element name=”cdrom”/>

…</xsd:element><xsd:element name=”dvd”/>

…</xsd:element>

</xsd:choice></xsd:complexType></xsd:element>

</xsd:schema>

Esquema Mediabooks

De acordo com o documento XML:www.mediabooks.pt/bdbiblio.xml

Page 25: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

25

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”><xsd:element name=”bdbiblio”>

<xsd:complexType><xsd:choice maxOccurs=”unbounded”>

<xsd:element name=”livro”/></xsd:complexType>

<xsd:sequence><xsd:element name=”isbn” type=”xsd:string”/><xsd:element name=”título” type=”xsd:string”/><xsd:element name=”autor” type=”xsd:string” maxOccurs=”unbounded”/><xsd:element name=”editora” type=”xsd:integer”/><xsd:element name=”ano” type=”xsd:integer”/><xsd:element name=”preço” type=”xsd:float”/>

</xsd:sequence></xsd:complexType>

</xsd:element>..

Esquema Webboom

De acordo com o documento XML:www.webboom.pt/bdlivros.xml

Linguagem de interrogação XQUERY – Exemplo 2

<resultado>FOR $lm IN document(“www.mediabooks.pt/bdbiblio.xml”) //livro[título

CONTAINS “XML”],$lw IN document(“www.webboom.pt/bdlivros.xml”) //livro

WHERE $lm/título = $lw/títuloRETURN

<livro>$lm/título,$lm/autor,$lm/editora,$lm/ano,<preçomb>$lm/preço</preçomb><preçowb>$lw/preço</preçowb>

</livro></resultado>

Page 26: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

26

Resultado possível

<resultado><livro>

<título>Bases de Dados, Web e XML</título><autor>Artur Afonso de Sousa</autor><editora>FCA</editora><ano>2002</ano><preçomb>24,94</preçomb><preçowb>24,50</preçowb>

</livro><livro>

<título>Open Source XML Database Toolkit</título><autor>Liam Quin</autor><editora>Wiley</editora><ano>2000</ano><preçomb>30,50</preçomb><preçowb>30,94</preçowb>

</livro>:

</resultado>

Linguagem de interrogação XQUERY – Exemplo 3

<resultado>

FOR $a IN DISTINCT (document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //autor)

LET $l := document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //livro[autor = $a]

WHERE COUNT ($l) > 5

RETURN $a

</resultado>

Page 27: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

27

Linguagem de interrogação XQuery – Exemplo 4

<resultado>

FOR $l IN document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //livro

$a IN document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //artigo

WHERE $l/título = “Tecnologia de Bases de Dados” AND $a/autor = $l/autor

RETURN

<artigo>

$a/título

</artigo>

</resultado>

FOR $l IN document(“www.estv.ipv.pt/biblioteca/bdbiblio.xml”) //livro[título =

“Tecnologia de Bases de Dados”]

•• A XML A XML e algumas normas associadase algumas normas associadas..

• Armazenamento e gestão de dados XML.Armazenamento e gestão de dados XML.

•• Linguagens de interrogação para dados XML.Linguagens de interrogação para dados XML.

•• ConclusãoConclusão

Descrição Geral

Page 28: Armazenamento e Gestão de dados XML§ões... · 2003-01-15 · 3 XML – conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador

28

Conclusão

FIM

• A XML é a nova norma que o W3C propõe para a representação e troca de dados na Internet;• Espera-se que a XML se torne na “lingua franca” da Internet;• Actualmente, existem essencialmente cinco abordagens para armazenar e gerir dados no formato XML: bases de dados objecto-relacionais (e relacionais); bases de dados orientadas aos objectos; bases de dados semiestruturadas; bases de dados nativas e o sistema de ficheiros + LIs;• A XML pode ser utilizada como um modo de armazenamento de dados;• Espera-se que a adopção universal da XML possa, muito em breve, aumentar a aceitação das bases de dados OO; • A XML está a fazer convergir a comunidade da Internet com a comunidade das Bases de Dados.