Gestão de dados XML Introdução Helena Galhardas DEI IST Agenda Contexto O que é o XML? Herança Dialectos Vantagens de XML Uma vista de olhos sobre a linguagem Tipos em XML Alguns standards importantes Sumário Revolução da Web HTML tem sido a linguagem da Web Existem milhares de páginas Mesmo se existe uma grande quantidade de ficheiros .doc, .ps, .pdf, .jpg, .gif, som, vídeo Públicas/privadas, estáticas/dinâmicas, vísiveis/escondidas Suporte natural para a informação distribuída Destinada a seres humanos e, cada vez mais, para as aplicações Aplicações sobre dados distribuídos sobre a Web HTML não está adaptado a estas aplicações B2C, B2B, bibliotecas on-line, ... Não chega aceder a um conjunto de páginas HTML como nos motores de busca Estas aplicações necessitam de “tipos” para representar a estrutura dos dados Que modelo de dados então adoptar? Base de Dados? Modelo BD relacional vs Modelo dados Web (1) Conhece-se a estrutura das tabelas e a semântica das colunas; não sobre a Web Estrutura dos dados fixa vs irregular Estrutura explicita vs implicita Alguns dados podem não ter estrutura Falta de dados Texto, imagens Alguns dados podem não ser conforme a estrutura Modelo BD relacional vs Modelo dados Web (2) Esquema de dados: pode ser deduzido a posteriori pode ser complexo e grande pode ser ignorado pelas interrogações pode evoluir mto rapidamente. Junção de dois modelos resulta .... Gestão de documentos SGML Documentação hipertexto HTML Gestão de dados Bases de Dados estruturadas (relacional e OO) Bases de dados semi-estruturadas Dados semi-estruturados Estrutura mínima Books Hierarquia + Contracts Emails Catalogs Financial Reports Systèmes Economical Analysis Documentaire Political analysis Financial News Sports News Dados estruturados Metadados Bank accounts Systèmes Inventory Relationnels Insurance Claims Insurance Policies Derivatives Resumes Acesso a dados XML Características das interrogações: Bases de dados (estilo SQL/OQL) Navegação Palavras chaves (estilo motor de pesquisa Web) e “pattern matching” (estilo comando “grep”) Interrogação de dados e estrutura ao mesmo tempo – a estrutura não é totalmente conhecida previamente Interrogações têem em conta o factor tempo, sobre versões, arquivos, mudanças nos dados Apoio linguístico: sinónimos, correcções de erros ortográficos O que é o XML? XML – eXtensible Markup Language Formato universal para os documentos e dados semi-estruturados na Web Versão simplificada de SGML Esperanto da Web que vai substituir o HTML Família de standards: XLink, XPath, XSL, XQuery, SOAP, DOM, .... Modelo de dados baseado em árvores e uma linguagem de representação baseada em “tags” (etiquetas) Exemplo (estrutura e semântica entre tags) <ficha> <nome> ficha <fn>Helena</fn> <ln>Galhardas</ln> missão nome trab tipo </nome> <trab tipo=“ensino"> ln fn IST Ender. email ensino Ensinar bem… IST <ender> <cidade>Porto Salvo</cidade> <cp>92310</cp> CP [email protected] HelenaGalhardas cidade </ender> <email>[email protected]</email> Porto Salvo 2790-380 </trab> <missão>Ensinar bem Elementos fn </missão> Atributos tipo </ficha> Dados 2790-380 Observações (1) XML fornece uma sintaxe, não fornece semântica apriori As tags não têm apresentação ou significado definido pela linguagem, mas podem fazer sentido para as aplicações XML define apenas a estrutura e conteúdo de um documentos, não o seu comportamento nem o seu tratamento Observações (2) Desenvolvida e promovida pelo W3C Indústria: Oracle, IBM, Microsoft, CompaQ, Xerox,... Laboratórios de investigação: MIT, INRIA, etc Sobre a Internet: publicação e troca de informação Simplicidade: produção, leitura, análise sintática, compreensão Os mesmos dados com diferentes folhas de estilo disponíveis para diferentes suportes e numerosas aplicações Múltiplos standards XML: dados [DTD],Xschema, XSD: tipos Os documentos devem ser bem formados, mas os tipos não são obrigatórios XSLT, Xquery: transformação e interrogações XPATH: caminhos XLink: ligações entre documentos DOM: API SOAP: computação distribuída ... Herança XML como sucessor de HTML HTML: Hypertext Markup Language Um cjto pré-definido de tags sobretudo para apresentação, definido por uma norma Semântica das tags: h1,...,h6, título, endereço, ... Dão indicações estruturais Center, hr, b, i, big, small, ... Não servem senão a descrever um formato de página Problemas do HTML A apresentação do documento está fortemente dependente da interpretação que faz o navegador É necessário ter várias versões do documento em função do meio A indexação dos documentos só se pode fazer sobre a parte textual É um documento e não são dados! SGML e etiquetagem (tagging) estrutural Era necessário passar de etiquetagem de apresentação para etiquetagem estrutural XML descendente de SGML utilizam etiquetagem estrutural SGML: Standardized Generalized Markup Language Mto utilizada em documentação técnica Documentação tem que ser precisa e não ambígua SGML + vocabulário controlado: ontologia Meta-linguagens de descrição e de troca de documentos estruturados Meta-linguagem: possibilidade de definir dialectos sobre domínios especificos XML vs SGML SGML Mto utilizada na indústria para grandes documentações técnicas Demasiado complexa para uma utilização pública em geral ou em domínios de aplicação menos exigentes em termos de precisão Mtos aspectos complicados e inúteis XML Utiliza 10% do SGML para representar de forma eficaz a maior parte das necessidades das aplicações Exemplo de documento Cabeçalho Logotipo WindStar 2000 Les rosières en buget AB562 Saint Pétaouchnoque Tel: 012133564 Fax: 879765426 Objecto Saint Pétaouchnoque, Le 30 nivose 2004 Editions Duschmol, 12 rue Schmurz YT123 Rapis Saudação Data Destinatário Objet: ben quoi? Fórmula de simpatia Monsieur, Bla bla bli, bli blo bla, kkkk vhlg vckjdhklbg fdskjbvhv feje slc ifehfe fhckh c jeflccj n khef iheznf jùkvbc lkhdklvn v Corpo Veuillez agréer patati patata vachement sincères. signature Rodapé Pied de page Assinatura Representação XML <carta> <cabeçalho> <logotipo loc="lgraph.vml"/> <endereço> &abrev-adresse; </endereço> </cabeçalho> <destinatário> <nome> Mr Schnock </nome> <endereço> <rua> rue des églantiers </rua> <cidade> Saint Glin </cidade> </endereço> </destinatário> <objecto> bla bla </objecto> … … <data> 30 Nivose 2004 </data> <saudação> Monsieur, </saudação> <corpo> <paragrafo> Ici le premier paragraphe </paragrafo> <paragrafo> et là le deuxième </paragrafo> </corpo> </carta> Aspectos importantes A representação desta carta em XML não comporta nenhuma indicação sobre a apresentação do documento Os aspectos gráficos estão ausentes da fonte XML Estes aspectos serão definidos por uma style sheet. Uma style sheet é um cjto. de regras para especificar a realização concreta de um documento sobre um meio em particular Principio de funcionamento das sshs <carta> <cabeçalho> . . . </cabeçalho> Se carta então … Se cabeçalho então … Se corpo então Se paragrafo então Type new roman, size 12, identar primeira linha <corpo> . . . </corpo> </carta> Se … então … WindStar 2000 Les rosières en buget AB562 Saint Pétaouchnoque Tel: 012133564 Fax: 879765426 Saint Pétaouchnoque, Le 30 nivose 2004 Editions Duschmol, 12 rue Schmurz YT123 Rapis Objet: ben quoi? Monsieur, Bla bla bli, bli blo bla, kkkk vhlg vckjdhklbg fdskjbvhv feje slc ifehfe fhckh c jeflccj n khef iheznf jùkvbc lkhdklvn v Veuillez agréer patati patata vachement sincères. signature Pied de page Alguns dialectos Ideia geral Para uma determinada aplicação, define-se uma sintaxe (um dialecto XML) e define-se a sua semântica. Exemplos: XHTML, MathML, SVG, XSL, SOAP, WSDL, XML Schema XHTML = HTML com uma sintaxe XML Reformulação de HTML como sendo uma aplicação XML Fecha-se o que se abriu Interesse: sintaxe mais rigorosa Importação de fragmentos de documentos de outros domínios Possibilidade de utilizar aplicações XML standard MathXML Permite a troca e tratamento de expressões matemáticas sobre a Web Facilita a inserção de expressões matemáticas em docs HTML ou XML SVG: gráficos 2D Linguagem de descrição de gráficos 2D Gráficos vectoriais Interactivos e dinâmicos Animações declarativas Programação ECMAScript SMIL Video Sincronização entre imagem e som Sincronização entre várias janelas SOAP: Simple Object Access Protocol Protocolo de tansferência de dados entre aplicações distantes Adaptado para ser utilizado debaixo do protocolo HTTP Exemplo SOAP <evp:Envelope xmlns:evp='http://schemas.xmlsoap.org/soap/envelope/' evp:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'> <evp:Header> <t:Transaction xmlns:t='http://stock.org/registry/updPriceList/'> evp:mustUnderstand='1'> 5 </t:Transaction> </evp:Header> <evp:Body> <m:GetLastTradePrice xmlns:'http://stock.org/registry/updPriceList'> <symbol>DEF</symbol> <company>DEF Corp</company> </m:GetLastTradePrice> </evp:Body> </evp:envelop> Vantagens do XML Transferência e partilha de informação Uma comunidade de utilizadores (ex: indústria da biotecnologia) inventa livremente as tags que lhe parecem úteis para representar as informações que pretendem trocar ou partilhar Exemplo: diferentes maneiras de representar uma data <data> 5 Janvier 2000 </data> <data> <a>2000</a><m>01</m><d>05</d> </data> <data formato='ISO-8601'> 2000-01-05 </data> Interoperabilidade das ferramentas de tratamento Ferramentas para dados XML Parsers, editores, browsers,... Consequências: Um servidor de documentos XML consegue responder a um conjunto de necessidades de uma organização Um único editor permite tratar o conjunto de dados de uma organização Modularidade e reutilização Cada utilizador é livre de definir as suas próprias estruturas de documento ou utilizar as estruturas já definidas Cada comunidade pode tb propôr estruturas normalizadas Ser conforme uma estrutura pré-definida permite a automatização dos tratamentos e assegura a possibilidade de validação. Acesso a fontes de informação heterógeneas A interrogação e a troca de dados entre sistemas de informação hetérógeneos é mtas vezes complexa XML pretende colmatar esse problema Formato de transferência de informação normalizado independente da plataforma A indexação e interrogação de bases de dados documentais grandes é baseada em informações estruturais e textuais. Vista de olhos sobre a linguagem Exemplos de documentos XML <document/> <document> </document> <document> Bom dia! </document> <document> <saudação> Bom dia! </saudação> </document> <?xml version="1.0" standalone="yes" ?> <document>o <saudação> Bom dia! </saudação> </document> XML 1.0: estrutura de um elemento Um elemento tem a forma: <nome atributo='valor'> conteúdo </nome> <nome> é a tag de abertura </nome> é a tag de fecho [ elementos vazios: <nome> </nome> ou </nome> ] « »conteúdo é o conteúdo de um elemento! Composto por uma lista (pode ser vazia) de texto, de outros elementos, de instruções de tratamento, de comentários atr='valor' representa um cjto, eventualmente vazio, de atributos – pares (nome, valor). Um elemento só pode ter um atributo com um determinado nome. Exemplos de elementos <a></a> </a> <a>Olá, bom dia</a> <a><b>…</b><b>…</b><a>…</a></a> <a><b>…</b>Olá<b>…</b>Bom dia</a> Conteúdo de um elemento = floresta de elementos ou de texto Text UNICODE: pode representar qualquer alfabeto XML 1.0: Restrições sobre os nomes O nome de um elemento ou atributo é uma cadeia não vazia de caracteres, escolhidos entre: Caracteres alfa-numéricos, sublinhado (undescore), sinal menos, o ponto, caracter dois pontos (:) Que deve satisfazer as seguintes condições: O primeiros caracter deve ser alfabético ou sublinhado Os três primeiros caracteres não devem formar uma cadeia cuja representação em minúsculas é "xml". Exemplos de nomes de elementos correctos _toto Nom_sociedade xsl:rule X.11 incorrectos 1998-catalogo XmlSpec nome sociedade XML 1.0: Sintaxe dos atributos Um atributo é um par nome='valor' que caracteriza um elemento Um elemento pode ter vários atributos (separados por espaço): O valor de um atributo é uma cadeia delimitada por aspas (") ou ('). <relatório língua=‘pt' ult-modif='08/07/99'> Não deve conter os caracteres ^, % e &. Um elemento tem um cjto de atributos (a ordem não tem importância) XML 1.0: Documento bem formado Um documento XML deve representar uma árvore de elementos Raiz do documento: um único elemento que contem todos os outros Tipos do XML Estrutura de um documento Um documento XML é composto por: Prólogo, eventualmente vazio <?xml version="1.0" standalone="yes" ?> Uma árvore de elementos: <document> <saudacao> Bom dia! </saudacao> </document> Prólogo Declaração XML facultativa Indica ao processador a versão da linguagem usada, a codificação de caracteres usada, a existência de declarações exteriores ao documento <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"> Declaração de tipo de documento, facultativa: Indica a estrutura particular a que deve obedecer o documento <!DOCTYPE exemplo SYSTEM "exemplo.dtd" > Documento bem formado sem tipificação <?xml version="1.0" standalone="yes" ?> <document> <saudacao> Bom dia! </saudacao> </document> Documentos válidos Um documento é válido se: Seu prólogo contém uma declaração de tipo de documento A sua árvore de elementos respeita a estrutura definida pela declaração do tipo <?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?> <!DOCTYPE document [ <!ELEMENT document (saudacao)> <!ELEMENT saudacao (#PCDATA)> ]> <document> <saudacao> Bom dia! Alguns standards importantes DOM (Document Object Model): interface de programação que permite aceder à estrutura e conteúdo dos documentos XPath: linguagem de expressões de caminho para aceder a partes do documento XLink (XML Linking Language): XSLT: linguagem de transformação XQuery: linguagem de interrogação (o SQL do XML) Resumo Resumo: o que interessa lembrar Semi-estruturado: casamento entre sistemas documentais e SGBDs XML Árvores ordenadas, etiquetadas e com ligações Semântica e tipos estão nas tags Formato de transferência de dados Resumo: tecnologia SGBDs: Documentos: B-tree, hash table, optimização de interrogações Indíce texto, classificação XML: Autómato de árvores Resumo: problemas antigos ressurgem Optimização de interrogações distribuídas Integração de dados Procura de dados e serviços Gestão de actualizações de dados Referências Serge Abiteboul, Slides of the course: “Données Semistructurées”, Master Recherche Informatique Paris Sud, http://www-rocq.inria.fr/~abitebou/MasterSSD/index.html Erik Wilde, Slides of the course: “XML Foundations”, UC Berkeley, http://dret.net/lectures/xml-fall07/ XML 1.0 Press Release, http://www.w3.org/Press/1998/XML10-REC XML 1.0 Spec, http://www.w3.org/TR/REC-xml/ S. Abiteboul, P. Buneman, D. Suciu, “Data on the Web, From Relations to Semistructured Data and XML”, Morgan Kaufmann, 2000. Tópicos próximas aulas Introdução ao XML Modelo de dados semi-estruturado XSDL, DTD, XML Schema XSLT XPath XQuery