48
© CIn, UFPE 1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa http://www.cin.ufpe.br/~tac CIn – UFPE Recife-PE, 3 de julho de 2003

© CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

Embed Size (px)

Citation preview

Page 1: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 2: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa 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

Page 3: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 4: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 5: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 6: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 7: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 8: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 9: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© CIn, UFPE 9

XML - Vantagens Conteúdo separado da

apresentação

Documento XML

Folha de EstiloXSL

+• Documento HTML• Novo Documento XML• Qualquer outro formato

Page 10: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 11: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 12: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 13: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 14: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 15: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 16: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 17: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 18: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 19: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 20: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 21: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 22: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 23: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 24: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 25: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 26: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 27: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 28: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 29: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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)

Page 30: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 31: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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)

Page 32: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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()

Page 33: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 34: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 35: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 36: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 37: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 38: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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>

Page 39: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© CIn, UFPE 39

XQuery - Expressões condicionais

if <expr_condic> then <expr1> else <expr2>

Page 40: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 41: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 42: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 43: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© CIn, UFPE 43

XQuery - Ordenação

for $i in document(“bib.xml")/bib/bookreturn $isortby (price DESCENDING)

Page 44: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 45: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 46: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 47: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© 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

Page 48: © CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa tac CIn – UFPE Recife-PE, 3 de julho de 2003

© CIn, UFPE 48

XQuery

http://www.cin.ufpe.br/~tac/bd/xquery