CICLO VIRTUOSO DA ABUNDÂNCIA: VIABILIZANDO FUTUROS DESEJÁVEIS
Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade...
-
Upload
maria-do-carmo-jardim-beppler -
Category
Documents
-
view
214 -
download
0
Transcript of Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade...
![Page 1: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/1.jpg)
Unidade 3- Consulta a dados semi-estruturados
![Page 2: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/2.jpg)
Requisitos desejáveis (Maier ’98)
Expressividade– linguagem de consulta ao estilo SQL – possibilitar a restruturação de dados semi-estruturados
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 Facilitar a geração automática de consultas
Consulta
![Page 3: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/3.jpg)
Expressões de caminho (Path expressions)
Expressões que permitem navegar no grafo de dados Expressões de caminho simples
– sequências de labels– exemplos
root.pessoas {&p1,&p2,&p3}root.pessoas.filhos {&p2,&p3}
– semântica o resultado de uma expressão de caminho r.l1. … .ln, onde l1,
…,ln são os labels e r um objeto, é o conjunto de nodos do grafo acessíveis de r por um caminho do grafo tal que os arcos percorridos passam sucessivamente pelos labels l1,…,ln.
Consulta
![Page 4: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/4.jpg)
Expressões de caminho
Expressões de caminho generalizadas Idéia: além de especificar completamente um caminho, permite
exprimir restrições (constraints) sobre o caminho Utilização de expressões regulares Exemplos
_ é um caracter coringa que designa um label qualquer(pessoa|estudante)._.idade
As expressões de caminho definidas até o presente retornam os conjuntos de objetos e não de dados semi-estruturados
Consulta
![Page 5: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/5.jpg)
LOREL: uma linguagem de consultas para dados semi-estruturadoss
Dados exemplo
Consulta
&bibdb
&n1
&n2
&n3paper
book
bookbiblio
Rouxauthorauthor Combalusierdate 1976title Database
systems
Smithauthor
date 1999title Database
systems
![Page 6: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/6.jpg)
LOREL
Sintaxe baseada em OQL Exemplo
select author:Xfrom biblio.book.author X
Semântica– para cada nodo do conjunto biblio.book.author
X toma o valor deste nodo cria um nodo de label author e de valor X
Resultado{author:"Roux", author:"Combalusier", author:"Smith"}
Consulta
![Page 7: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/7.jpg)
Query 1: SELECT author: XFROM biblio.book.author X
&o1
&o12 &o24 &o29
&96&30
paper bookbook
authordate
titleauthor
authordate
title
biblio
&o47 &o48 &o50
&o52 &25
Smith 1999 DatabaseSystems
Roux Combalusier1976
DatabaseSystems
. . .
resposta
author
authorauthor
Resposta ={author: “Smith”, author: “Roux”, author: “Combalusier”}
![Page 8: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/8.jpg)
LOREL
Restrição dentro da cláusula where Exemplo
select row:Xfrom biblio._ Xwhere "Smith" in X.author
Resultado{row:{
author:"Smith", date:1999, title:"Database systems" } }
Observações– X.author é uma expressão de caminho– X.author é um conjunto de valores, "Smith" in X.author é um
predicado de pertinência a um conjunto
Consulta
![Page 9: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/9.jpg)
Query 2:SELECT row: XFROM biblio._ XWHERE “Smith” in X.author
&o1
&o12 &o24 &o29
&96&30
paper bookbook
authordate
titleauthor
authordate
title
biblio
&o47 &o48 &o50
&o52 &25
Smith 1999 DatabaseSystems
Roux Combalusier1976
DatabaseSystems
. . .
resposta
row
row
. . .resposta ={row: {author:“Smith”, date: 1999, title: “Database…”}, row: …}
![Page 10: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/10.jpg)
LOREL
Restrições dentro da cláusula where Exemplo
select author:Yfrom biblio._ X, X.author Y, X.title Zwhere Z matches "*[D|d]atabase*"
Resultado– retorna os autores de publicações cujo título contém a palavra "database".
Tratamento de uma consulta select-from-where– três momentos:
determinação do conjunto de valores definido dentro da cláusula from restrição deste conjunto com a cláusula definida dentro do where projeção dentro da cláusula select
Consulta
![Page 11: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/11.jpg)
LOREL
Criação de vários nodos dentro da projeçãoselect row:{title:Y, author:Z}from biblio.book X, X.title Y, X.author Z
Composição de consultasselect row:{ select author:Y from X.author Y}from biblio.book X
Lorel também permite o uso de expressões de caminho na cláusula select:
select X.authorfrom biblio.book X
Consulta
![Page 12: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/12.jpg)
Query 3:SELECT row: ( SELECT author: Y FROM X.author Y)FROM biblio.book X
&o1
&o12 &o24 &o29
&96&30
paper bookbook
authordate
titleauthor
authordate
title
biblio
&o47 &o48 &o50
&o52 &25
Smith 1999 DatabaseSystems
Roux Combalusier1976
DatabaseSystems
. . .
resposta
row
row
&a1
&a2author
authorauthor
Resposta ={row: {author:“Smith”}, row: {author:“Roux”, author:“Combalusier”,},}
![Page 13: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/13.jpg)
LOREL
Outro exemplo de composiçãoselect row:{ select author:Y, title:T
from X.author Y X.title T}
from biblio.book Xwhere "Roux" in X.author
Consulta
![Page 14: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/14.jpg)
Query 4:SELECT ( SELECT row: {author: Y, title: T} FROM X.author Y, X.title T)FROM biblio.book XWHERE “Roux” in X.author
&o1
&o12 &o24 &o29
&96&30
paper bookbook
authordate
titleauthor
authordate
title
biblio
&o47 &o48 &o50
&o52 &25
Smith 1999 DatabaseSystems
Roux Combalusier1976
DatabaseSystems
. . .
resposta
row
row
&a1
&a2author
author title
Resposta ={row: {author:“Roux”, title: “Database…”}, row: {author:“Combalusier”, title: “Database…”},}
(Query está errada no livro texto)
title
![Page 15: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/15.jpg)
LOREL
Semântica dos predicados de comparaçãoselect a:A, c:Cfrom r1.row X, r2.row Y, X.a A, X.b B, Y.b B', Y.c Cwhere B=B'
– se r1 e r2 são representações de relações, esta consulta calcula a junção natural destas relações sobre os atributos b.
– Dentro do contexto semi-estruturado, certos valores de B ou B' podem ser multi-valorados
Consulta
![Page 16: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/16.jpg)
LOREL
Comparações de valoresselect row:Xfrom biblio.paper Xwhere X.author = "Smith"
– X.author é um conjunto de objetos, "Smith" é um valor atômicowhere exists Y in X.author : Y="Smith"
select row:Xfrom biblio.paper Xwhere X.year>1993
Consultas
![Page 17: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/17.jpg)
Lorel
Pequenas diferenças sintáticas na expressões de caminho (% ao invés de _, # ao invés de _*)
Convenção de caminho:
torna-se:
SELECT biblio.book.authorFROM biblio.bookWHERE biblio.book.year = 1999
SELECT X.authorFROM biblio.book XWHERE X.year = 1999
![Page 18: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/18.jpg)
Lorel
Variáveis existenciais:
– O que acontece com livros com múltiplos autores? Author é existencialmente quantificado:
SELECT biblio.book.yearFROM biblio.bookWHERE biblio.book.author = “Roux”
SELECT biblio.book.yearFROM biblio.book X, X.author YWHERE Y = “Roux”
![Page 19: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/19.jpg)
UnQL
Patterns:
Equivalente a:
SELECT row: XWHERE {biblio.book: {author “Roux”, title X}} in DB,
SELECT row: XFROM biblio.book Y, Y.author Z, Y.title XWHERE Z=“Roux”
![Page 20: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/20.jpg)
UnQL
Variávels Label:– “encontre todos os tipos de publicação e seus
títulos onde Roux é autor”
SELECT row: {type: L, title : Y}WHERE {biblio.L: {author “Roux”, title X}} in DB,
![Page 21: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/21.jpg)
Bases de dadoss semi-estruturados
O sistema LORE
![Page 22: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/22.jpg)
O sistema LORE
LORE: Lightweight Object Repository Um SGBD para dados semi-estruturados Desenvolvido em Stanford Utiliza o modelo OEM
LORE
![Page 23: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/23.jpg)
ArquiteturaLORE
Compilação de consultas
Data Engine
Armazenamento físico
gerente de dados externos
gerentede índicesoperadores
físicos
gerentede objetos
parser préprocessador gerador deplanos de consultas
optimizadorde consultas
A P I
GUI Applications
consultas
![Page 24: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/24.jpg)
Linguagem de Consulta
XML-QL
![Page 25: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/25.jpg)
XML-QL
Primeira linguagem declarativa para XML Como obter uma query language para XML
rapidamente ?– Assumir OEM como modelo de dados– Usar características de UnQL e StruQL
Patterns Templates
– Projetar uma sintaxe XML-like
![Page 26: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/26.jpg)
Patterns em XML-QL
WHERE <book> <publisher> <name> Morgan Kaufmann </> </> <author> $A </> </book> in “www.a.b.c/bib.xml”CONSTRUCT <author> $A </>
Encontre todos os autores que publicaram pela Morgan Kaufmann:
Abreviação: </> fecha qualquer tag.
![Page 27: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/27.jpg)
Exemplo2
Encontre os autores e títulos dos livros da AWL
where <book> <publisher> <name> AWL </> </> <title> $T </> <author> $A </></> in “www.a.b.c/bib.xml”
construct <resultado><author> $A </><title> $T </>
</>
![Page 28: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/28.jpg)
Resultado do Exemplo2
<resultado><author> Ceri </author><title> Active Database System </title>
</resultado><resultado>
<author> Widom </author><title> Active Database System </title>
</resultado><resultado>
<author> ... </author><title> ... </title>
</resultado>
![Page 29: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/29.jpg)
Patterns em XML-QL
where <book language=$X> <author> Jones </author>
</book> in “www.a.b.c/bib.xml”construct <result> $X </>
Encontre as linguagens nas quais Jones têm publicado:
![Page 30: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/30.jpg)
Construtores em XML-QL
where <book language = $L> <author> $A </> </> in “www.a.b.c/bib.xml”construct <result> <author> $A </> <lang> $L </> </>
Resultado:<result> <author>Smith</author> <lang>English </lang> </result><result> <author>Smith</author> <lang>French</lang> </result><result> <author>Doe </author> <lang>English </lang> </result>. . . .
Encontre todos os autores e as linguagens nas quais eles publicaram:
![Page 31: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/31.jpg)
Consultas aninhadas em XML-QL
WHERE <book.author> $A </> in “www.a.b.c/bib.xml”CONSTRUCT <result> <author> $A </> WHERE <book language = $L> <author> $A </> </> in “www.a.b.c/bib.xml” CONSTRUCT <lang> $L </> </>
Encontre os autores e as linguagens nas quais eles publicaram; agrupando por autores:
Obs: book.author é uma expressão de caminho
![Page 32: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/32.jpg)
<result> <author>Smith</author> <lang>English</lang> <lang>French</lang> <lang>…</lang> …</result><result> <author>Doe</author> <lang>English</lang> …</result>
Resultado:
![Page 33: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/33.jpg)
Junção em XML-QL
WHERE <article> <author> $a </>
</> CONTENT_AS $p in “www.a.b.c/bib.xml” <book language = $L>
<author > $a </></> in “www.a.b.c/bib.xml”,$L = “English”
CONSTRUCT <result> $p </>
Encontre os artigos que têm pelo menos um autor que também escreveuum livro em inglês
![Page 34: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/34.jpg)
Variáveis Tag em XML-QL
WHERE <$p> <title> $t </> <year> 2000 </><$e> Carlos </>
</> in “www.a.b.c/bib.xml”, <$e> in {author, editor} CONSTRUCT <$p>
<title> $t </> <$e> Carlos </> </>
Encontre as publicações publicadas em 2000 nas quais Carlos é um autor ou editor
![Page 35: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/35.jpg)
Path Expressions em XML-QL
Seja o DTD:<!ELEMENT peca (nome fabricante peca*) ><!ELEMENT nome CDATA><!ELEM fabricante CDATA>
A consulta: “Encontre os nomes da peças que contêm um fabricante “Ford” sem considerar o nível de aninhamento em que a peça occorre:
WHERE <peca*> <nome> $r </> <fabricante> Ford </> in “www.a.b.c/pecas.xml”
CONSTRUCT <resultado> $r </>
![Page 36: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/36.jpg)
Path Expressions em XML-QL
No exemplo anterior peca* é uma expressão de caminho regular que éequivalente à seguinte sequência infinita de patterns:
<nome> $r </> <fabricante> Ford</> <peca> <nome> $r </> <fabricante> Ford</> </><peca> <peca> <nome> $r </> <fabricante> Ford</> </> </><peca> <peca> <peca> <nome> $r </> <fabricante> Ford</> </> </>...
![Page 37: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/37.jpg)
Path Expressions em XML-QL
A consulta a seguir ilustra o uso de alternativa (|), concatenação(.)e asterisco(*) em expressões regulares:
WHERE <peca+.(subpeca|componente.parte)> $r </>IN “www.a.b.c/peca.xml”
CONSTRUCT <resultado> $r </>
![Page 38: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/38.jpg)
Integrando dados de diferentes fontes XML
Encontre os nomes e CPF das fontes www.receita.gov.br/contribuintes.xml e www.ufpb.br/professores.xml
WHERE <professores><nome> $n </><cpf> $c </>
</> IN “www.ufpb.br/professores.xml”, <contribuintes>
<cpf> $c </><imposto> $i </>
</> IN “www.receita.gov.br/contribuintes.xml”CONSTRUCT <resultado> $n $i </>
![Page 39: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/39.jpg)
Linguagem de Consulta
X-Query
![Page 40: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/40.jpg)
XQuery
Baseda em Quilt (que é baseda em XML-QL)
http://www.w3.org/TR/xquery/2/2001 XML Query data model
![Page 41: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/41.jpg)
FLWR (“Flower”) Expressions
FOR ... LET... WHERE...RETURN...
![Page 42: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/42.jpg)
XQuery
Encontre os títulos dos livros publicados após 1995:
FOR $x IN document("bib.xml")/bib/book
WHERE $x/year > 1995
RETURN $x/title
Resultado: <title> abc </title> <title> def </title> <title> ghi </title>
![Page 43: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/43.jpg)
XQueryPara cada autor de um livro publicado pela
Morgan Kaufmann, listar os livros publicados:
FOR $a IN distinct(document("bib.xml") /bib/book[publisher=“Morgan Kaufmann”]/author)
RETURN <result>
$a,
FOR $t IN /bib/book[author=$a]/title
RETURN $t
</result>
distinct = elimina duplicatas
![Page 44: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/44.jpg)
XQuery
Resultado: <result> <author>Jones</author> <title> abc </title> <title> def </title> </result> <result> <author> Smith </author> <title> ghi </title> </result>
![Page 45: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/45.jpg)
XQuery
FOR $x in expr -- liga $x a cada valor na lista expr
LET $x = expr -- liga $x à inteira lista expr– Usado para subexpressões comuns e para
agregações
![Page 46: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/46.jpg)
XQuery
count = função (aggregate) que retorna o número de elementos
<big_publishers> FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p </big_publishers>
![Page 47: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/47.jpg)
XQuery
Encontre os livros cujos preços são maiores do que a média de preços:
FOR $b in document("bib.xml")/bib/book
LET $a=avg(document("bib.xml")/bib/book/price)
WHERE $b/price > $a
RETURN $b
![Page 48: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/48.jpg)
XQuery
Sumário: FOR-LET-WHERE-RETURN = FLWR
FOR/LET Clauses
WHERE Clause
RETURN Clause
Lista de tuplas
Lista de tuplas
Instância do modelo de dados Xquery
![Page 49: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/49.jpg)
FOR versus LET
FOR liga variáveis nodo iteration
LET liga variáveis coleção one value
![Page 50: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/50.jpg)
FOR versus LET
FOR $x IN document("bib.xml")/bib/book
RETURN <result> $x </result>
Retorna: <result> <book>...</book></result> <result> <book>...</book></result> <result> <book>...</book></result> ...
LET $x IN document("bib.xml")/bib/book
RETURN <result> $x </result>
Retorna: <result> <book>...</book> <book>...</book> <book>...</book> ...</result>
![Page 51: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/51.jpg)
Coleções em XQuery
Conjuntos e Bags– /bib/book/author = uma coleção do tipo Bag – Distinct(/bib/book/author) = uma coleção do tipo conjunto (Set)
LET $a = /bib/book $a é uma coleção $b/author uma coleção (vários autores...)
RETURN <result> $b/author </result>Retorna: <result> <author>...</author> <author>...</author> <author>...</author> ...</result>
![Page 52: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/52.jpg)
Ordenação em XQuery
<publisher_list> FOR $p IN distinct(document("bib.xml")//publisher) RETURN <publisher> <name> $p/text() </name> , FOR $b IN document("bib.xml")//book[publisher = $p] RETURN <book> $b/title , $b/price </book> SORTBY(price DESCENDING) </publisher> SORTBY(name) </publisher_list>
Argumentos de sort referem-se ao namespace da cláusula RETURN e não da cláusula FOR
![Page 53: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/53.jpg)
If-Then-Else
FOR $h IN //holding
RETURN <holding>
$h/title,
IF $h/@type = "Journal"
THEN $h/editor
ELSE $h/author
</holding> SORTBY (title)
![Page 54: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/54.jpg)
Quantificador Existencial
FOR $b IN //book
WHERE SOME $p IN $b//para SATISFIES
contains($p, "sailing")
AND contains($p, "windsurfing")
RETURN $b/title
![Page 55: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.](https://reader036.fdocument.pub/reader036/viewer/2022081604/5706384b1a28abb8238f5e77/html5/thumbnails/55.jpg)
Quantificador Universal
FOR $b IN //book
WHERE EVERY $p IN $b//para SATISFIES
contains($p, "sailing")
RETURN $b/title