Upload
internet
View
105
Download
0
Embed Size (px)
Citation preview
© CIn, UFPE 1
Linguagens de consulta em XML – Enfoque XQuery
Thiago Alves Costahttp://www.cin.ufpe.br/~tac
CIn – UFPE
Recife-PE, 3 de julho de 2003
© CIn, UFPE 2
Conteúdo XML
Visão Geral Vantagens
Linguagens de Consulta para XML Requisitos Desejáveis Facilidades Esperadas
XQuery Requisitos Funcionais Fundamentos Estrutura
Considerações finais
© CIn, UFPE 3
XML – Visão Geral eXtensible Markup Language Formato padrão para descrever e
armazenar dados semi-estruturados Desenvolvido por W3C (WWW
Consortium) Linguagem de marcação extensível
por permitir definição de novas tags
© CIn, UFPE 4
XML – Visão Geral
HTML SGML
• Standard Generalized Markup Language
• Complexa
• HyperText MarkupLanguage
• Não extensível• Não descreve dados
XML
• eXtensible Markup Language (W3C - 1998)• Extensível• Descreve dados• Simples• Voltada para Web
Motivação
© CIn, UFPE 5
XML – Visão Geral Documentos são separados em 3
partes: Estrutura (XML) Estilo (XSL – eXtensible Style Language) Conteúdo
Um documento XML pode ser visto como uma árvore, onde os nós correspondem a elementos e a atributos
© CIn, UFPE 6
XML – Visão Geral
Pessoa
Nome Idade Endereço
Rua CEP Cidade
(Física | Jurídica)
Elemento (nó)Atributo
Valor Valor
Valor Valor Valor
Representação em árvore
Nó de texto
© CIn, UFPE 7
XML – Visão GeralExemplo de conteúdo
<pessoa tipo=“física”> <nome>Thiago Costa</nome> <idade>22</idade> <endereco> <rua>Cel. Anízio Rodrigues Coelho</rua> <cep>51021-130</cep> <cidade>Recife</cidade> </endereco></pessoa>
Atributo
Elemento
Nó texto
© CIn, UFPE 8
XML - Vantagens Extensível Flexível Os documentos XML são auto-
descritivos Simples, mas permite estruturas
complexas Permite validação (DTD, XML
Schema) Padrão aberto
© CIn, UFPE 9
XML - Vantagens Conteúdo separado da
apresentação
Documento XML
Folha de EstiloXSL
+• Documento HTML• Novo Documento XML• Qualquer outro formato
© CIn, UFPE 10
Linguagens de consulta para XML Expansão do XML além das origens
de linguagem de marcação para linguagem base de troca de informações da Web
Futuro esperado: fontes de informações diversas utilizem interfaces XML independentes da forma de armazenamento
© CIn, UFPE 11
Linguagens de consulta para XML Faz-se necessário um conjunto de
linguagens de consulta Diversas linguagens foram
propostas com diferentes abordagens
© CIn, UFPE 12
Linguagens de consulta para XML - Abordagens Orientadas para Banco de Dados
XML-QL Lorel Yetl
Orientadas para documentos XQL
Mistas QUILT XQuery
© CIn, UFPE 13
Linguagens de consulta para XML – Requisitos desejáveis Expressividade
Linguagem de consulta ao estilo SQL Uma linguagem não procedural
Semântica precisa Muito importante para XML
Composição O resultado de uma consulta deve poder ser
utilizado dentro de uma outra consulta Consulta ao esquema
Visando otimização e a validação Deve usar a sintaxe XML
© CIn, UFPE 14
Linguagens de consulta para XML – Requisitos desejáveis Suporte a busca por dados como
também busca por metadados Necessidade de uma GUI para as
buscas Capacidade de criar expressões
que permitam navegar no grafo de dados
© CIn, UFPE 15
Linguagens de consulta para XML – Requisitos desejáveis Expressões de caminho simples
sequências de rótulos exemplos
root.pessoas root.pessoas.filhos
Expressões de caminho generalizadas Permitir exprimir restrições sobre o
caminho Utilização de expressões regulares
Ex:(pessoa|estudante)._.idade
© CIn, UFPE 16
Linguagens de consulta para XML – Facilidades esperadas Suporte para operações padrões de consulta.
Alguns papéis vistos da perspectiva de banco de dados.
Seleção: escolhe-se um documento, um elemento do documento, uma estrutura ou atributos
Extração: extrai-se elementos particulares do documento Redução: abstrai-se sub-elementos selecionados de um
elemento Reestruturação: constrói-se um novo conjunto de
elementos para alimentar dados de um consulta Combinação: combina-se mais de um elemento em um
documento
© CIn, UFPE 17
Linguagens de consulta para XML – Facilidades esperadas Suporte a operadores de inserção,
remoção e atualização Suporte a consultas aninhadas Suporte a consulta total no texto (parte da
palavra, palavra próxima ou palavras exata) Habilidade de consultar diversos documentos Suporte a visualização de mudanças nos
dados em tempo real Direitos de acesso a inserções, remoções e
atualizações
© CIn, UFPE 18
XQuery W3C XML Query Language http://www.w3.org/XML/xquery Objetivo: linguagem de consulta
aplicável a qualquer representação de dados em XML (documentos ou banco de dados)
Derivada diretamente do Quilt e do XPath
© CIn, UFPE 19
XQuery Influenciada por outros grupos de
pesquisa e linguagens de consulta XQL:
Sintaxe baseada em expressões de caminho, adequadas para hierarquias
SQL: Cláusulas baseadas em palavras reservadas do tipo
SELECT-FROM-WHERE OQL:
Noção de uma linguagem funcional, composta de expressões que podem ser encadeadas
XML-QL
© CIn, UFPE 20
XQuery – Requisitos funcionais Suporte a operações de seleção,
projeção, agregação e ordenação Preservação e transformação estrutural
Preserva a hierarquia relativa e a seqüência de documentos consultados nos resultados da busca
Transforma estruturas XML em novas estruturas Combinações e junções
De diferentes partes de um documento ou de vários documentos
© CIn, UFPE 21
XQuery – Requisitos funcionais Resultados de uma consulta XML é
também XML e podem ser usados como entrada para uma nova consulta
Permite definição de novas funções Expressão em linguagem funcional Extremamente tipado Inclui o XPath 2.0 XQuery XPath + XSLT + SQL
© CIn, UFPE 22
XQuery - Fundamentos Tipos aceitos são os mesmo de
XML-Schema Uma consulta é representada como
uma expressão Expressões operam e resultam
seqüências de zero ou mais itens. Itens podem ser: Valores atômicos Nodos
© CIn, UFPE 23
XQuery - Fundamentos Uma seqüência contendo apenas um
item chama-se singleton sequence Permite ilimitadas combinações de
expressões com conversões de tipos Não permite atualizações,
remoções e inserções É case-sensitive. Palavras-chave são
escritas em minúsculo
© CIn, UFPE 24
XQuery - Estrutura Uma consulta XQuery pode ser dividida
em três partes: Namespace e Declarações de Schema * Definição de funções * Expressões de consulta
* Opcional
© CIn, UFPE 25
XQuery - Estrutura
# Parte 1: Namespace e Declarações de Schemanamespace xsd = “http://www.w3.org/2000/10/XMLSchema”
# Parte 2: Definição de funções define function factorial (xsd:integer $n) returns xsd:integer {
if ($n eq 0)then 1else $n * factorial($n - 1)}
# Parte 3: Expressões de consulta<Results>
<Description>Factorial of 10</Description><Value>{factorial(10)}</Value>
</Results>
Exemplo
Query Prolog
© CIn, UFPE 26
XQuery - Fundamentos Toda a consulta XQuery contém uma ou
mais expressões de consulta As expressões de consulta mais comuns
são: Expressões FLWR (“flower” : for-let-where-
order by-return) Expressões de caminho Construtores de elementos Expressões condicionais Chamadas de funções
© CIn, UFPE 27
XQuery - Fundamentos
<bib> <book year="1994“ id=“1001”> <title>TCP/IP Illustrated</title> <publisher>Addison-Wesley</publisher> <price>65.95</price> </book> <book year="1992“ id=“1002”> <title>Advanced Programming in the Unix environment</title> <publisher>Addison-Wesley</publisher> <price>65.95</price> </book> <book year="2000“ id=“1003”> <title>Data on the Web</title> <publisher>Morgan Kaufmann Publishers</publisher> <price>39.95</price></book> ...
arquivo bib.xml
© CIn, UFPE 28
XQuery - Expressões FLWR Pronunciado “flower” FLWR significa For-Let-Where-
Return, que são as quatro cláusulas que compõe uma expressão deste tipo
(Cláusula for | Cláusula let) + Cláusula where? +Cláusula order by? +Cláusula return Expr
© CIn, UFPE 29
XQuery - Expressões FLWR For SQL from
A cláusula for tem expressões XPath e variáveis que recebem os vários valores retornados pela expressão de caminho
Liga variáveis nós - interação
for $V1 Exp1 [, $V2 in Exp2 [, ... ] ]
Obs: associa-se à variável $V1 os valores retornadospela expressão Exp1 (ex: uma expressão de caminho)
© CIn, UFPE 30
XQuery - Expressões FLWR Let não tem equivalente em SQL
Usado para sub-expressões comuns e para agregações
Liga variáveis de coleção
for $x in Exp : liga $x a cada valor na lista Exp
let $x = Exp : liga $x à lista inteira Exp
© CIn, UFPE 31
XQuery - Expressões FLWR
for $b in document("bib.xml")/bib/booklet $a = avg(document("bib.xml")/bib/book/price)where $b/price > $areturn $b
Exemplo: Encontre os livros cujos preços são maiores do que a média de preços:
Expressão de caminhoFunção agregada (média)
© CIn, UFPE 32
XQuery - Expressões FLWR Where SQL where Return SQL select
A parte do where impõe condições sobre as variáveis do let / for
A parte do return especifica o que deve aparecer no retorno, para cada valor da variável
Funções agregadas: avg(), sum(), count(), max(), min()
© CIn, UFPE 33
XQuery - Expressões FLWR
Cláusula let | for
Cláusula where
Cláusula Return
Lista ordenada de tuplas
Lista de tuplas “podada”
Instância do modelo de dados da busca
© CIn, UFPE 34
XQuery – Expressões de caminho Sintaxe do XPath
Expressões arbitrárias como passos
Produz uma seqüência ordenada de nós sem duplicações
[/]Expr/.../Expr
© CIn, UFPE 35
XQuery – Expressões de caminho Resultado de uma expressão de caminho:
Conjunto de valores, mais sub-elementos e atributos correpondentes, que correspondem ao caminho dado
Exemplos: (1): /bib/book/title devolve:
<title>TCP/IP Illustrated</title><title>Advanced Programming in the Unix environment</title><title>Data on the Web</title>
(2): /bib/book/title/text() devolve os mesmos nomes, mas sem as tags
© CIn, UFPE 36
XQuery – Expressões de caminho O “/” inicial denota a raiz do
documento As expressões de caminho são
avaliadas da esquerda para a direita Cada passo é aplicado ao conjunto de
instâncias produzidas pelo passo anterior Podem usar-se predicados de seleção
(entre []) em qualquer dos passos do caminho
© CIn, UFPE 37
XQuery – Expressões de caminho Exemplo: /bib/book[price > 400]
Devolve os elementos de todos os livros com preço superior a 400
/bib/book[price] devolve os elementos de todos os livros contas que contêm um sub-elemento price
Pode-se referir aos atributos, usando “@” Exemplo: /bib/book/@year
© CIn, UFPE 38
XQuery - Construtores de elementos Pode-se criar novos elementos
com uma consulta Novos elementos podem ser
arbitrários ou calculados Exemplo:<MyListOfExpensiveItems> {document(“bib.xml”)/bib/book[price > 1000]} </MyListOfExpensiveItems>
© CIn, UFPE 39
XQuery - Expressões condicionais
if <expr_condic> then <expr1> else <expr2>
© CIn, UFPE 40
XQuery - Expressões condicionais
let $price := document(“bib.xml”)/bib/book/@id[.=1001]
return
if ( $price > 100 ) then
<result> Livro tem um preço caro </result> else
<result> Livro tem um preço barato </result>
Exemplo: verificar se o livro nº 1001 tem um preço caro ou barato
© CIn, UFPE 41
XQuery - Expressões quantificadoras Quantificadores: every e some
for $i in document(“bib.xml")/bibwhere every $p in $i/book/price satisfies ($p < 100) return $i
Retorna bibliotecas que contenham todos seuslivros com preços inferiores a R$ 100,00
© CIn, UFPE 42
XQuery - Expressões quantificadoras
for $i in document(“bib.xml")/bibwhere some $p in $i/book/price satisfies ($p < 100) return $i
Retorna bibliotecas que contenham pelo menos umlivro com preço inferior a R$ 100,00
© CIn, UFPE 43
XQuery - Ordenação
for $i in document(“bib.xml")/bib/bookreturn $isortby (price DESCENDING)
© CIn, UFPE 44
Considerações finais XML é uma linguagem de marcação que
tem a principal vantagem de ser extensível
No XML o conteúdo é separado da apresentação
Espera-se que XML torne-se “linguagem franca” na Internet
Há a necessidade de linguagens de consultas sobre documentos XML
© CIn, UFPE 45
Considerações finais Uma liguagem de consulta XML deve
prover: expressividade, semântica precisa, composição, consulta ao esquema e sintaxe XML
XQuery é uma linguagem proposta pela W3C derivada diretamente do Quilt e do Xpath
XQuery suporta operações de seleção, projeção, agregação, ordenação etc
© CIn, UFPE 46
Considerações finais Outras linguagens de consulta para
XML: Lorel (Lightweight Object Repository
Language) YATL XTract XMLQuery XML Query Engine XML-GL Quilt
© CIn, UFPE 47
Bibliografia W3C - http://www.w3.org/TR/xquery http://www.cs.uku.fi/~kilpelai/RDK03/
lectures/XQuery.pdf http://www.estv.ipv.pt/
paginaspessoais/ajas/Apresenta%C3%A7%C3%B5es/SCT%202002.pdf
http://www.dsc.ufpb.br/~baptista/cursos/BDInternet/Query.ppt
http://www.fe.up.pt/~jlopes/teach/2002-03/AW/foils/15-xml.pdf
© CIn, UFPE 48
XQuery
http://www.cin.ufpe.br/~tac/bd/xquery