Armazenamento e Gestão de dados XML



Documentos relacionados
XML e Banco de Dados. Prof. Daniela Barreiro Claro DCC/IM/UFBA

XML & Banco de Dados

Introdução e motivação SGBD XML Nativo Consultas em SGBDs XML Prática. Bancos de dados XML. Conceitos e linguagens de consulta

GERÊNCIA DE DADOS SEMI ESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc.

Tutorial. Introdução ao XML e tecnologias associadas. Aplicações e dialectos XML. Sessão Fevereiro XATA 06

XML e Banco de Dados de Internet. Tópicos Especiais em Tecnologia da Informação Profa. Késsia R. C. Marchi

GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc.

Programação SQL. Introdução

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES DE BANCO DE DADOS RELACIONAIS

GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc.

Tarefa Orientada 16 Vistas

Número: Nome:

Tipos de dados complexos e objectos Tipos de dados estruturados e herança em SQL Herança de tabelas Matrizes e multi-conjuntos em SQL Identidade de

XML (extensible Markup Language)

XHTML 1.0 DTDs e Validação

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

Desenvolvimento em Ambiente Web. Prof. André Y. Kusumoto

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) XML Origens. HTML Problemas

Gerenciamento de Dados e Informação Fernando Fonseca. Graduação

Bases de Dados Relacional/Objeto e NoSQL. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

XPath e XSLT. Ferramentas para Internet Marx Gomes Van der Linden. ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida )

Direcção Regional de Educação do Algarve

Integridade dos Dados

Função dos Sistemas de Bases de Dados Visão dos dados Modelos de dados Linguagem de Definição de Dados Linguagem de Manipulação de Dados Gestão de

Banco de Dados. Gerenciamento de Dados e Informação Fernando Fonseca, Ana Carolina Salgado & Robson Fidalgo

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

UFG - Instituto de Informática

Especificação Técnica ACSS

Prof.: Clayton Maciel Costa

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Tarefa Orientada 15 Manipulação de dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

Bases de Dados. Bibliografia. 1. Parte I Componente Teórica. Pedro Quaresma

SuporteNativoa XML no

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Armazenamento e Pesquisa de Topic Maps em Banco de Dados Relacional

XML. 1. XML: Conceitos Básicos. 2. Aplicação XML: XHTML 3. Folhas de Estilo em Cascata XML

Banco de Dados. Maurício Edgar Stivanello

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

Introdução à Banco de Dados. Nathalia Sautchuk Patrício


Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Tarefa Orientada 13 Agrupamento e sumário de dados

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Introdução à Engenharia da Computação. Tecnologia Web Professor Machado

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Introdução ao XML. Extensible Markup Language

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Tarefa Orientada 14 Subconsultas

Esquema da Relação. Modelo Relacional. Instância da Relação. Exemplo. Uma base de dados é uma colecção de uma ou mais relações com nomes distintos

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

XML - DTD - XSL Exemplos de Exercícios TWEB II

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS (GRUPO INFORMÁTICA) Ano Letivo de 2014/2015 MÓDULO 1 FOLHA DE CÁLCULO

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

XML (extensible Markup Language)

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Tipos de dados complexos e objectos Tipos de dados estruturados e herança em SQL Herança de tabelas Matrizes e multi-conjuntos em SQL Identidade de

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Folhas de estilo. Jomi Fred Hübner (XSL e XPath) FURB / DSC

Principais Comandos SQL Usados no MySql

Um documento XML possui Unidade lógica - os elementos Usuário "inventa" as marcas através de DTDs

Hugo Pedro Proença, 2007

Sistemas Gerenciadores de Bancos de Dados

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

SQL. Autor: Renata Viegas

Técnicas e Linguagens para Banco de Dados I

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

Aplicabilidade: visão geral

Processamento de dados XML

Introdução. Definição. Validação. Universo XML. Apresentação. Processamento. Prof. Enzo Seraphim. Banco de Dados

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Tarefa Orientada 10 Obter informação a partir de uma tabela

Escola Superior de Tecnologia de Setúbal. Projecto Final

Escola Secundária de Camarate

JPA: Persistência padronizada em Java

Bases de Dados 2007/2008. Aula 1. Referências

Agenda. Banco de Dados Temporais. Banco de Dados Temporais. Introdução. Banco de Dados Temporais PRINCIPAIS CONCEITOS DE REPRESENTAÇÃO TEMPORAL

Transcrição:

Armazenamento e Gestão de dados XML 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 S2L Artur Afonso de Sousa Departamento de Informática ESTV ESTV Descrição Geral A XML e algumas normas associadas. - XSL(T), DOM/SAX, XML-SCHEMA Armazenamento e gestão de dados XML. Linguagens de interrogação para dados XML. Conclusão.

Motivações HTML HyperText Markup Language Não extensível Etiquetas não descrevem o significado dos dados SGML Standard Generalized Markup Language Complexa XML extensible Markup Language (W3C - 1998) Extensível Etiquetas descrevem o significado dos dados Simples Projectada para a Web INTEROPERABILIDADE ENTRE APLICAÇÕES! Base de Dados XML <?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>

Linguagem de folhas de estilo para a XML XML conteúdo separado da apresentação Linguagem de folhas de estilo para apresentar os dados ao utilizador XSL (extensible Stylesheet Language) <?xml-stlylesheet type= text/xsl href= identificação_da_folha_de_estilo.xsl?> Documento XML + Folha de estilo XSL Documento HTML Novo documento XML Outro qualquer formato Possibilidade de associar várias folhas de estilo a um documento XML APIs Documento XML Processador XML (DOM/SAX) API Linguagens de programação (Java, Perl,etc.)

Interligação de aplicações heterogéneas XML Fonte C Fonte A Fonte D Fonte B Necessários 12 conversores Nova Fonte (n.º fontes 1) * 2 conversores Fonte C Fonte A Hub XML Fonte B Necessários 8 conversores Nova Fonte 2 conversores Fonte D 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).

Descrição Geral A XML e algumas normas associadas. Armazenamento e gestão de dados XML. SGBDs Semiestruturados (LORE). SGBDs Relacionais, Objecto-relacionais (Oracle( 8i / 9i). SGBDs Orientados aos objectos (Poet( Object Server) SGBDs nativos (excelon( excelon) Sistema de ficheiros + APIs + Ling. Programação. Linguagens de interrogação para dados XML. Conclusão. Armazenamento e gestão de dados XML 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

Dados semi-estruturados Não se ajustam aos modelos de dados tradicionais. Estrutura pode: Ser irregular; Não ser previamente conhecida; Mudar com frequência. Alguns dados XML também partilham estas características! Auto-descritivos (esquema está misturado com os dados) Novo paradigma de bases de dados: modelo de dados semi-estruturados Dados normalmente representados através de grafos dirigidos e etiquetados. 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

SGBD LORE (Ligthweigth Object Repository) bdbib &1 livro artigo {ISBN="_972-722-143-2} &2 referencia {classificação="bd", referencia="_972-722-143-2"} &3 título editora ano autor preço... autor título ano &4 &5 &6 &7 &8 &9 &10 &11 text nome sede text text text text text text &12 &13 &14 &15 &16 &17 &18 &19 &20 "Tecnologias de Bases de Dados" text text &21 &22 "1998" "26" "José Luís Pereira" "Pedro Soares" "Object- Relational Databases "2000" "FCA" "Lisboa" http://www-db.stanford.edu/lore Linguagem de Interrogação LOREL SELECT bdbib.artigo WHERE bdbib.artigo.autor = Pedro Soares <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>

Dataguides 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). <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> Explorar a estrutura da base de dados (utilizadores/aplicações) + Optimização de questões (sistema). Dataguides LORE Dataguide SGBD Tradicional Esquema Sistema mantém dinamicamente o dataguide. Estático e previamente definido Sumariar correctamente a estrutura actual da base de dados. Dados têm que estar conformes com o esquema.

Dataguides Interface gráfica GO bdbib >livro @isbn >título >editora >nome = FCA >sede >ano >preço >autor >Artigo Select bdbib.>livro.>autor Where bdbib.>livro.>editora.>nome = FCA ; <Answer> <livro> </livro> <livro> </livro> </Answer> <autor>josé Luís Pereira</autor> <autor>luís Amaral</autor> <autor>joão Varajão</autor> http://www-db.stanford.edu/lore SGBDs Relacionais (O-R) para gerir dados XML Três modos de armazenamento: 1. Elemento 2. Documento 3. 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.

2 cenários para utilizar BDR/O-R (ORACLE 8i/9i) com a XML Utilizador Telefone celular Interrogar a BD e obter resultado no formato XML HTTP Página XSQL com questões SQL embebidas (documento XML) PDA Servelet XSQL ORACLE 8i PC Browser gráfico Browser não-gráfico Documento XML (eventualmente transformado por uma folha de estilo conveniente) Web ORACLE 8i Servelet XSQL Armazenar dados XML na BD BD armazenar/consultar dados XML formato de troca de dados Esquema de uma tabela objecto-relacional com dados bibliográficos CREATE 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)); nome sobrenome email João Varajão jv@mail.telepac.pt Luís Amaral lamaral@dsi.uminho.pt : : : isbn título autores editora preço 972-722-193-9 Planeamento de 4200 Sistemas de Informação : : : : : CREATE TYPE LISTAUTORES_NT AS TABLE OF AUTOR_OBJ; 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; nome sede paginternet FCA Lisboa http://www.fca.pt INSERT INTO ListaLivros VALUES ('972-722-193-9', Planeamento de Sistemas de Informação, LISTAUTORES_NT(AUTOR_OBJ( João', Varajão, jv@mail.telepac.pt'), AUTOR_OBJ( Luís', Amaral, lamaral@dsi.uminho.pt')), EDITORA_OBJ ('FCA', 'Lisboa', 'http://www.fca.pt'), 4200); http://technet.oracle.com/tech/xml/demo/

Tabela/Vista Elemento (rowset). Mapeamento 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

Documento XML resultante da execução da página XSQL títulolivro.xsql <?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> Folha de estilo XSL(T) títulolivro.xsl <?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> Aplicar ao documento XML resultante da execução da página XSQL títulolivro.xsql

Página HTML <html> </html> <head> </head> <body> </body> <title>título do Livro Pretendido</title> <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> 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

SGBDs orientados aos objectos para gerir dados XML (Poet Object Server) XML SCHEMA converter e compilar Classes Persistência (Castor, compliador java) (Poet Java TM Enhancer) BDOO Poet de acordo com instâncias de (Castor) Documento XML Unmarchal Marchal Objectos Armazenar/Obter Esquemas têm que ser compatíveis! (XSLT) Castor XML Data Binding Facility for the Java TM Plataform OQL consultar eficientemente os dados XML Porquê ODL? 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ê XML-SCHEMA? 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. é 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; }; Relacionamento múltiplo (# > 1 lado destino) Relacionamento simples (# = 1 lado destino) Atributo simples Atributo lista Atributo chave Atributo enumerado

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; } Relacionamento múltiplo (# > 1 lado destino) Atributo chave 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 Regras de mapeamento 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 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 ; Esquema resultante <?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> <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>

Esquema resultante (Cont.) <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> <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> Exemplo de documento XML <?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>ms@hotmail.com</email> <escreve isbn= 1-55860-452-9 />.. </autor> <autor> <cod>a2</cod> <nome>paul</nome> <sobrenome>brown</sobrenome> <título>doutor</título> <email>pb@hotmail.com</email> <escreve isbn="1-55860-452-9"/>.. </autor> <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>

Sistema de ficheiros para gerir dados XML Documento XML + processador XML (DOM / SAX) + Linguagens de programação (Java, C++, Perl, etc.) + XQuery Documento XML Descrição Geral A XML e algumas normas associadas. Armazenamento e gestão de dados XML. Linguagens de interrogação para dados XML. XML-QL, XQL, Quilt, XQuery Conclusão

Linguagens de interrogação para dados XML XML-QL Perspectiva de Bases de Dados XQL Perspectiva do Documento QUILT Perspectiva Integradora XQUERY Tentativa de providenciar uma norma W3C 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

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

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>

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.

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

Esquema Webboom <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>.. 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ítulo RETURN <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>

Resultado possível <resultado> <livro> </livro> <livro> </livro> : </resultado> <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> <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> 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>

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 ] Descrição Geral A XML e algumas normas associadas. Armazenamento e gestão de dados XML. Linguagens de interrogação para dados XML. Conclusão

Conclusão 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 objectorelacionais (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. FIM