Sumário 1 Introdução Aplicações Não-Convencionais 2 BD Orientado a Objetos e Objeto-Relacional 3 BD Temporal 4 BD Geográfico 5 XML e Bancos de Dados XML (extensible Markup Language) Tecnologia desenvolvida pela W3C W3C: WorldWide Web Consortium definição de padrões para a Web consórcio formado por acadêmicos e empresários Padrão para representação e transferência de dados protocolos XML vêm sendo definidos em diversos domínios de aplicação comércio eletrônico, SIGs, domínios bibliográficos, Motivação: aplicações Web extração, manipulação, integração e publicação de dados através da Web 1
Uso Extensivo de XML Necessidades projeto de uma estrutura p/ dados em XML métodos de acesso a dados XML estratégias para armazenamento e indexação de dados XML A tecnologia de BD é útil neste contexto nova linha de pesquisa: BD XML Nativos definem um modelo lógico para dados XML definem um esquema de armazenamento proprietário ou utilizam um esquema de armazenamento de um BD convencional O que é XML? XML é uma meta-linguagem de marcação meta-linguagem XML é um padrão aberto cada aplicação define o protocolo (linguagem) para a representação dos seus dados linguagem de marcação semelhante à linguagem HTML utiliza tags para descrição os dados HTML x XML tags em HTML: são predefinidas e voltadas para a formatação da apresentação de dados em browsers Web tags em XML: não são predefinidas (dependem da intenção da aplicação); indicam a intenção do dado e delimitam o seu conteúdo 2
Exemplo de Dado XML <livro> <titulo>tecnologia XML</titulo> <nome>joão da Silva</nome> <email>js@hotmail.com</email> <endereco> <comercial>rua A, 34 Fpolis - SC</comercial> <residencial>rua B, 5 Fpolis SC</residencial> </endereco> <capitulo nome= Introdução >Este capítulo apresenta <secao> <nome>linguagens de Marcação</nome> </secao> </capitulo> </livro> conteúdo do dado tag (intenção do dado) estrutura hierárquica, ordenada e complexa Sintaxe XML Dados XML são definidos em um documento XML Um documento XML contém cabeçalho dados elementos simples ou compostos atributos de elementos referências a entidades comentários instruções de processamento 3
Exemplo de Documento XML <?xml version = 1.0 encoding ="ISO-8859-1 > <! - documento XML sobre livros --> <!DOCTYPE listalivros [ <!ENTITY xml extensible Markup Language > ]> <listalivros> <livro ISBN= 112 > <título>tecnologia &xml</título> <nome>joão da Silva</nome> <email>js@hotmail.com</email> <capítulo nome= Introdução >A &xml foi <seção> <nome>linguagens de Marcação</nome> </seção> </capítulo> </livro> </listalivros> Exemplo de Documento XML <?xml version = 1.0 encoding ="ISO-8859-1 > <! - documento XML sobre livros --> <!DOCTYPE listalivros [ <!ENTITY xml extensible Markup Language > cabeçalho ]> <listalivros> <livro ISBN= 112 > <título>tecnologia &xml</título> <nome>joão da Silva</nome> <email>js@hotmail.com</email> <capítulo nome= Introdução >A &xml foi <seção> <nome>linguagens de Marcação</nome> </seção> </capítulo> </livro> </listalivros> 4
Exemplo de Documento XML <?xml version = 1.0 encoding ="ISO-8859-1 > <! - documento XML sobre livros --> <!DOCTYPE listalivros [ <!ENTITY xml extensible Markup Language > ]> <listalivros> <livro ISBN= 112 > <título>tecnologia &xml</título> <nome>joão da Silva</nome> <email>js@hotmail.com</email> <capítulo nome= Introdução >A &xml foi <seção> <nome>linguagens de Marcação</nome> </seção> </capítulo> </livro> </listalivros> comentário Exemplo de Documento XML <?xml version = 1.0 encoding ="ISO-8859-1 > <! - documento XML sobre livros --> <!DOCTYPE listalivros [ <!ENTITY xml extensible Markup Language > ]> <listalivros> <livro ISBN= 112 > <título>tecnologia &xml</título> <nome>joão da Silva</nome> <email>js@hotmail.com</email> <capítulo nome= Introdução >A &xml foi <seção> <nome>linguagens de Marcação</nome> </seção> </capítulo> </livro> </listalivros> instrução de processamento 5
Exemplo de Documento XML <?xml version = 1.0 encoding ="ISO-8859-1 > <! - documento XML sobre livros --> <!DOCTYPE listalivros [ <!ENTITY xml extensible Markup Language > elemento raiz ]> <listalivros> <livro ISBN= 112 > <título>tecnologia &xml</título> <nome>joão da Silva</nome> <email>js@hotmail.com</email> elemento misto <capítulo nome= Introdução >A &xml foi <seção> <nome>linguagens de Marcação</nome> </seção> </capítulo> </livro> </listalivros> elemento simples (#PCDATA) elemento complexo Exemplo de Documento XML <?xml version = 1.0 encoding ="ISO-8859-1 > <! - documento XML sobre livros --> <!DOCTYPE listalivros [ <!ENTITY xml extensible Markup Language > ]> atributo <listalivros> <livro ISBN= 112 > <título>tecnologia &xml</título> <nome>joão da Silva</nome> <email>js@hotmail.com</email> <capítulo nome= Introdução >A &xml foi <seção> <nome>linguagens de Marcação</nome> </seção> </capítulo> </livro> </listalivros> 6
Exemplo de Documento XML <?xml version = 1.0 encoding ="ISO-8859-1 > <! - documento XML sobre livros --> <!DOCTYPE listalivros [ <!ENTITY xml extensible Markup Language > ]> <listalivros> <livro ISBN= 112 > <título>tecnologia &xml</título> <nome>joão da Silva</nome> <email>js@hotmail.com</email> <capítulo nome= Introdução >A &xml foi <seção> <nome>linguagens de Marcação</nome> </seção> </capítulo> </livro> </listalivros> declaração de entidade referência a uma entidade Natureza de um Dado XML Um dado XML é um dado não-convencional é um dado semi-estruturado Dado semi-estruturado estrutura heterogênea estrutura auto-descritiva estrutura parcial estrutura dinâmica 7
Estrutura heterogênea Cada ocorrência de dado pode ter um esquema particular <nome>ronaldo Mello</nome> <endereço>rua B, 23</endereço> <email>ronaldo@inf.ufsc.br</email> <nome>patrícia Vilain</nome> <endereço> <rua>beira-mar</rua> <numero>767</numero> <cidade>fpolis</cidade> </endereço> <fone>3313333</fone> <fone>3313332</fone> Estrutura auto-descritiva Cada ocorrência de dado carrega o seu esquema <nome>patrícia Vilain</nome> <endereco> <rua>beira-mar</rua> <numero>767</numero> <cidade>fpolis</cidade> </endereco> <fone>3313333</fone> <fone>3313332</fone> 8
Estrutura parcial Apenas parte da descrição de um dado pode ser estruturada <capítulo numero = 2 titulo = Tecnologia XML > Este capítulo descreve XML<ref>(Mel03)</ref>. XML é um padrão <seção número = 1> <título>dtd</título> Esta seção descreve </seção> </capítulo> Estrutura dinâmica Esquema para os dados deve suficientemente flexível para contemplar a heterogeneidade das ocorrências conseqüências esquemas extensos esquemas com suporte a representações alternativas 9
Dado XML & Dado Convencional Dados XML não são naturalmente adequados para armazenamento em BDs Dado Convencional representação homogênea esquema independente dos dados totalmente estruturado esquema enxuto esquema fixo Dado XML representação heterogênea representação auto-descritiva estrutura parcial esquema extenso esquema dinâmico DTD e XSD Tecnologia XML definição do esquema de um doc XML XPath e XQuery linguagens de navegação/consulta a docs XML XSL e XSLT linguagens para apresentação e transformação de docs XML SAX e DOM APIs para acesso a dados XML 10
DTD (Document Type Definition) Conjunto de regras (gramática) para a organização de elementos em um documento XML Documento XML bem-formado tags bem definidas; existe um elemento raiz; valores de atributos entre ou Documento XML válido documento correto de acordo com uma DTD Parser programa que verifica se um documento XML é bem-formado e/ou válido Definição de Elementos Elementos compostos - seqüência <!ELEMENT livro(titulo,autor+,imagem?,capitulo+)> elementos compostos seqüência de definição (sub-elementos) cardinalidade do sub-elemento <!ELEMENT autor(nome, email*, endereço?)> <livro> <titulo>xml companion</titulo> <nome>neil Bradley</nome> <endereco> </endereco> <capitulo> </capitulo> <capitulo> </capitulo> </livro> 11
Definição de Elementos Elementos compostos - escolhas <!ELEMENT endereco(residencial comercial)> Elementos simples sub-elementos alternativos <!ELEMENT title(#pcdata)> Elementos especiais <!ELEMENT image EMPTY)> texto (string) não possui conteúdo <!ELEMENT comment ANY> admite qualquer elemento do esquema como conteúdo Definição de Elementos e Atributos Elementos mistos <!ELEMENT capitulo(#pcdata secao)+> Atributos misto de texto e sub-elementos <!ATTLIST imagem arquivo CDATA #REQUIRED tamanho CDATA)> <!ATTLIST book tipo (technical fiction) atributos ISBN ID #IMPLIED referencias IDREFS> <!ATTLIST chapter name CDATA #REQUIRED> restrições para atributos tipos de atributos 12
Definição de Entidades <!ENTITY xml extensible Markup Language )> <!ENTITY estrutura (paragrafo lista tabela) > <!ELEMENT secao (nome, (%estrutura;)*> <!ELEMENT appendix (number, name, (%estrutura;)*> DTD Documento XML <capitulo> A linguagem XML (&xml;) eh um padrao <secao><nome>tecnologias</name> <paragrafo>a tecnologia da &xml; inclui </paragrafo> </secao> </capitulo> DTD (esquema) <!ENTITY estrutura (paragrafo lista tabela) > <!ELEMENT listalivros(livro+)> <!ELEMENT livro(titulo, autor+, capitulo+)> <!ATTLIST livro tipo (tecnico ficcao) ISBN ID referencias IDREFS #IMPLIED> <!ELEMENT titulo(#pcdata)> <!ELEMENT autor(nome, email*, endereco?)> <!ELEMENT nome(#pcdata)> <!ELEMENT email(#pcdata)> <!ELEMENT endereco(residencial comercial)> <!ELEMENT residencial(#pcdata)> <!ELEMENT comercial(#pcdata)> <!ELEMENT capitulo(#pcdata seção)+> <!ATTLIST capitulo nome CDATA #REQUIRED> <!ELEMENT secao(nome, (%estrutura;)*> <listalivros> <livro tipo= tecnico ISBN= 120 > <titulo>xml Companion</titulo> <nome>neil Bradley</nome> <email>neil@bradley.co.uk</email> <endereco> <comercial> 34 Main street London </comercial> </endereco> <capitulo nome= Introduction > XML raises as a standard <secao> <nome>xml Technology</nome> </secao> </capitulo> </livro> </listalivros> Documento XML 13
XSD (XML Schema Definition) Sintaxe XML Extensão da funcionalidade de um DTD definição de hierarquias de tipos de elementos derivação (herança) de novos tipos a partir de outros definição de tipos de dados simples (string, integer, boolean, ) complexos (list, union) facilidades adicionais para definição de restrições intervalos de valores permitidos, padrões de conteúdo via expressões regulares,... XSD - Exemplo <?xml version= 1.0 encoding= UTF-8 > <xsd:schema xmlns:xsd= http://www.w3.org/2001/xmlschema > <!- Declaração de Tipos --> <xsd:simpletype name= Tisbn > <xsd:restriction base= xsd:string > <xsd:pattern value= [0-9]{2}-[0-9]{3}-[0-9]{4}-[0-9] /> </xsd:restriction> </xsd:simpetype> <xsd:complextype name= Tlivro > <xsd:sequence> <xsd:element name= titulo type= xsd:string /> <xsd:element name= autor type= Tautor minoccurs= 1 maxoccurs= unbounded /> <xsd:element name= preço type= xsd:float /> </xsd:sequence> <xsd:attribute name= isbn type= Tisbn /> </xsd:complextype> 14
XSD Exemplo (cont.) <xsd:complextype name= TlivroTécnico base= Tlivro derivedby= extension > <xsd:element name= area" type= xsd:string" minoccurs= 1 maxoccurs= 1 /> </complextype> <!- Declaração de Elementos --> <xsd:element name= listalivros > <xsd:complextype> <xsd:element name= livro type= Tlivro /> minoccurs= 1 maxoccurs= unbounded /> </xsd:complextype> </xsd:element> </xsd:schema> XPath (XML Path Language) Linguagem para navegação na estrutura de um documento XML semelhante a navegação em diretórios Características pode-se consultar sem conhecer o esquema busca por padrões em texto predicados de seleção algumas funções similares à SQL resultado: conjunto de dados XML conjunto de estruturas aninhadas 15
XPath - Exemplos Expressões de caminho / (raiz - todo o doc XML) /livros/livro/titulo (titulos de livros) /livros/livro/autor/*/residencial (substitui 1 elem) /livros/livro//secao (elementos seção descendentes de livro) /livros/livro/capitulo[1] (1 0 cap. livros) /livros/livro/autor/*/residencial /livros/livro/autor/*/comercial (união de caminhos) /livros/livro/@isbn (consulta a atributo) //capitulo (qq elemento capítulo) Predicados XPath - Exemplos /livros/livro[@tipo = ficcao ] (livros de ficção) /livros/livro[@isbn < 1000]/titulo /livros/livro/autor[email] (autores com e- mail) /livros/livro//secao[../@nome = XML ] /livros/livro[capitulo/@nome = XML or //secao = XML ] /livros/livro[not(@referencias)] (livros que não tenham o atributo referências) 16
XPath - Exemplos Funções /livros/livro[count(capitulo) < 10] /livros/livro[id( 112 )] /livros/livro/capitulo[last()] /livros/livro[title contains(text(), "XML")] /livros/livro/round(preco)(supõe-se um elemento preço) /livros/livro/capitulo[position() mod 2 = 0] XQuery (XML Query Language) Limitações da XPath recupera somente porções de um documento XML incapaz de produzir resultados mais elaborados de consulta combinação (junção) de dados XML geração de novas estruturas de dados XQuery recomendação recente da W3C maior poder de expressão que a XPath 17
Estrutura Básica de uma Consulta Expressões FLWR ( flower ) for variável in expressão XPath [let associação de novas variáveis] [where condição] return estrutura de resultado Exemplo for $liv in /livros/livro where $liv/autor/nome = Maria Souza return <livrosmariasouza> { $liv/@isbn, $liv/titulo } </livrosmariasouza> Resultado da Consulta for $liv in /livros/livro where $liv/autor/nome = Maria Souza return <livrosmariasouza> { $liv/@isbn, $liv/titulo } </livrosmariasouza> <livrosmariasouza> <livro @ISBN = 114 > <titulo>viagem à Serra</titulo> <livro @ISBN = 417 > <titulo>tempo de Mudança</titulo> <livro @ISBN = 993 > <titulo>auto-biografia</titulo> </livrosmariasouza> 18
Exemplos em XQuery Uso da cláusula let for $liv in /livros/livro let $pdesc := $liv/preco - $liv/preco * 0.1 where $liv/@tipo = ficcao return {$liv/titulo, $pdesc} Junções e ordenação do resultado for $liv1 in /livros/livro[@isbn = 562 ] for $liv2 in /livros/livro where $liv2/@isbn!= $liv1/@isbn and $liv2/autor/nome = $liv1/autor/nome return $liv2/titulo sort by (. ascending) 19