Unidade 3- Consulta a dados semi-estruturados - PowerPoint PPT Presentation

About This Presentation
Title:

Unidade 3- Consulta a dados semi-estruturados

Description:

Title: Consulta a dados semi-estruturados Author: Cl udio Baptista Last modified by: Fujitsu Created Date: 12/23/1999 1:58:15 PM Document presentation format – PowerPoint PPT presentation

Number of Views:59
Avg rating:3.0/5.0
Slides: 56
Provided by: Clud45
Category:

less

Transcript and Presenter's Notes

Title: Unidade 3- Consulta a dados semi-estruturados


1
Unidade 3- Consulta a dados semi-estruturados
2
Requisitos desejáveis (Maier 98)
Consulta
  • 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

3
Expressões de caminho (Path expressions)
Consulta
  • 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.

4
Expressões de caminho
Consulta
  • 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
  • (pessoaestudante)._.idade
  • As expressões de caminho definidas atĂ© o presente
    retornam os conjuntos de objetos e nĂŁo de dados
    semi-estruturados

5
LOREL uma linguagem de consultas para dados
semi-estruturadoss
Consulta
  • Dados exemplo

Roux
author
Combalusier
author
date
1976
n1
title
Database systems
book
Smith
author
biblio
bib
db
n2
date
1999
book
title
Database systems
paper
n3
6
LOREL
Consulta
  • Sintaxe baseada em OQL
  • Exemplo
  • select authorX
  • from 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"

7
SELECT author XFROM biblio.book.author X
Query 1
resposta
author
Resposta author Smith, author Roux,
author Combalusier
author
author
8
LOREL
Consulta
  • Restrição dentro da cláusula where
  • Exemplo
  • select rowX
  • from biblio._ X
  • where "Smith" in X.author
  • Resultado
  • row
  • author"Smith",
  • date1999,
  • 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

9
SELECT row XFROM biblio._ XWHERE Smith in
X.author
Query 2
row
resposta
. . .
resposta row authorSmith,
date 1999, title Database,
row
row
10
LOREL
Consulta
  • Restrições dentro da cláusula where
  • Exemplo
  • select authorY
  • from biblio._ X,
  • X.author Y,
  • X.title Z
  • where Z matches "Ddatabase"
  • 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

11
LOREL
Consulta
  • Criação de vários nodos dentro da projeção
  • select rowtitleY, authorZ
  • from biblio.book X, X.title Y, X.author Z
  • Composição de consultas
  • select row select authorY 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.author
  • from biblio.book X

12
SELECT row ( SELECT author Y
FROM X.author Y)FROM biblio.book X
Query 3
row
resposta
row
a1
Resposta row authorSmith, row
authorRoux, authorCombalusier,
,
a2
author
author
author
13
LOREL
Consulta
  • Outro exemplo de composição
  • select row select authorY, titleT
  • from X.author Y
  • X.title T
  • from biblio.book X
  • where "Roux" in X.author

14
SELECT ( SELECT row author Y, title T
FROM X.author Y, X.title T)FROM
biblio.book XWHERE Roux in X.author
Query 4
row
resposta
Resposta row authorRoux,
title Database, row authorCombalusier,
title Database,
a1
row
a2
author
title
title
author
(Query está errada no livro texto)
15
LOREL
Consulta
  • Semântica dos predicados de comparação
  • select aA, cC
  • from r1.row X,
  • r2.row Y,
  • X.a A, X.b B, Y.b B', Y.c C
  • where BB'
  • 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

16
LOREL
Consultas
  • Comparações de valores
  • select rowX
  • from biblio.paper X
  • where X.author "Smith"
  • X.author Ă© um conjunto de objetos, "Smith" Ă© um
    valor atĂ´mico
  • where exists Y in X.author Y"Smith"
  • select rowX
  • from biblio.paper X
  • where X.yeargt1993

17
Lorel
  • Pequenas diferenças sintáticas na expressões de
    caminho ( ao invés de _, ao invés de _)
  • Convenção de caminhotorna-se

SELECT biblio.book.authorFROM biblio.bookWHERE
biblio.book.year 1999
SELECT X.authorFROM biblio.book XWHERE X.year
1999
18
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
19
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
ZRoux
20
UnQL
  • Variávels Label
  • encontre todos os tipos de publicação e seus
    tĂ­tulos onde Roux Ă© autor

SELECT row type L, title YWHERE biblio.L
author Roux,
title X in DB,
21
Bases de dadoss semi-estruturados
  • O sistema LORE

22
O sistema LORE
LORE
  • LORE Lightweight Object Repository
  • Um SGBD para dados semi-estruturados
  • Desenvolvido em Stanford
  • Utiliza o modelo OEM

23
Arquitetura
LORE
GUI
Applications
A P I
Compilação de consultas
consultas
gerador de planos de consultas
optimizador de consultas
parser
préprocessador
Data Engine
gerente de índices
gerente de objetos
gerente de dados externos
operadores fĂ­sicos
Armazenamento fĂ­sico
24
Linguagem de Consulta
  • XML-QL

25
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

26
Patterns em XML-QL
Encontre todos os autores que publicaram pela
Morgan Kaufmann
WHERE ltbookgt ltpublishergt
ltnamegt Morgan Kaufmann lt/gt
lt/gt ltauthorgt
A lt/gt lt/bookgt in
www.a.b.c/bib.xml CONSTRUCT ltauthorgt A lt/gt
Abreviação lt/gt fecha qualquer tag.
27
Exemplo2
Encontre os autores e tĂ­tulos dos livros da
AWL where ltbookgt ltpublishergt ltnamegt AWL lt/gt
lt/gt lttitlegt T lt/gt ltauthorgt A lt/gt lt/gt
in www.a.b.c/bib.xml construct
ltresultadogt ltauthorgt A lt/gt lttitlegt T lt/gt
lt/gt
28
Resultado do Exemplo2
ltresultadogt ltauthorgt Ceri lt/authorgt lttitlegt
Active Database System lt/titlegt lt/resultadogt ltresu
ltadogt ltauthorgt Widom lt/authorgt lttitlegt Active
Database System lt/titlegt lt/resultadogt ltresultadogt
ltauthorgt ... lt/authorgt lttitlegt ...
lt/titlegt lt/resultadogt
29
Patterns em XML-QL
Encontre as linguagens nas quais Jones tĂŞm
publicado
where ltbook languageXgt ltauthorgt Jones
lt/authorgt lt/bookgt in
www.a.b.c/bib.xml construct ltresultgt X lt/gt
30
Construtores em XML-QL
Encontre todos os autores e as linguagens nas
quais eles publicaram
where ltbook language Lgt
ltauthorgt A lt/gt lt/gt in
www.a.b.c/bib.xml construct ltresultgt ltauthorgt
A lt/gt ltlanggt L lt/gt lt/gt
Resultado ltresultgt ltauthorgtSmithlt/authorgt
ltlanggtEnglish lt/langgt lt/resultgt ltresultgt
ltauthorgtSmithlt/authorgt ltlanggtFrenchlt/langgt
lt/resultgt ltresultgt ltauthorgtDoe lt/authorgt
ltlanggtEnglish lt/langgt lt/resultgt . . . .
31
Consultas aninhadas em XML-QL
Encontre os autores e as linguagens nas quais
eles publicaram agrupando por autores
WHERE ltbook.authorgt A lt/gt in www.a.b.c/bib.xml
CONSTRUCT ltresultgt ltauthorgt A lt/gt
WHERE ltbook language Lgt

ltauthorgt A lt/gt
lt/gt in www.a.b.c/bib.xml
CONSTRUCT ltlanggt L lt/gt
lt/gt
Obs book.author Ă© uma expressĂŁo de caminho
32
ltresultgt ltauthorgtSmithlt/authorgt
ltlanggtEnglishlt/langgt
ltlanggtFrenchlt/langgt ltlanggtlt/langgt
lt/resultgt ltresultgt
ltauthorgtDoelt/authorgt
ltlanggtEnglishlt/langgt lt/resultgt
Resultado
33
Junção em XML-QL
Encontre os artigos que tĂŞm pelo menos um autor
que também escreveu um livro em inglês
WHERE ltarticlegt ltauthorgt a lt/gt lt/gt
CONTENT_AS p in www.a.b.c/bib.xml ltbook
language Lgt ltauthor gt a lt/gt lt/gt in
www.a.b.c/bib.xml, L English CONSTRUCT
ltresultgt p lt/gt
34
Variáveis Tag em XML-QL
Encontre as publicações publicadas em 2000 nas
quais Carlos Ă© um autor ou editor
WHERE ltpgt lttitlegt t lt/gt ltyeargt 2000
lt/gt ltegt Carlos lt/gt lt/gt in
www.a.b.c/bib.xml, ltegt in author,
editor CONSTRUCT ltpgt lttitlegt t lt/gt
ltegt Carlos lt/gt lt/gt

35
Path Expressions em XML-QL
Seja o DTD lt!ELEMENT peca (nome fabricante
peca) gt lt!ELEMENT nome CDATAgt lt!ELEM fabricante
CDATAgt 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 ltpecagt ltnomegt r lt/gt
ltfabricantegt Ford lt/gt in www.a.b.c/pecas.xml
CONSTRUCT ltresultadogt r lt/gt
36
Path Expressions em XML-QL
No exemplo anterior peca Ă© uma expressĂŁo de
caminho regular que Ă© equivalente Ă  seguinte
sequĂŞncia infinita de patterns ltnomegt r lt/gt
ltfabricantegt Fordlt/gt ltpecagt ltnomegt r lt/gt
ltfabricantegt Fordlt/gt lt/gt ltpecagt ltpecagt ltnomegt r
lt/gt ltfabricantegt Fordlt/gt lt/gt lt/gt ltpecagt ltpecagt
ltpecagt ltnomegt r lt/gt ltfabricantegt Fordlt/gt lt/gt
lt/gt ...
37
Path Expressions em XML-QL
A consulta a seguir ilustra o uso de alternativa
(), concatenação(.) e asterisco() em expressões
regulares WHERE ltpeca.(subpecacomponente.parte
)gt r lt/gt IN www.a.b.c/peca.xml CONSTRUCT
ltresultadogt r lt/gt
38
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
ltprofessoresgt ltnomegt n lt/gt ltcpfgt c lt/gt
lt/gt IN www.ufpb.br/professores.xml,
ltcontribuintesgt ltcpfgt c lt/gt ltimpostogt i
lt/gt lt/gt IN www.receita.gov.br/contribuintes.x
ml CONSTRUCT ltresultadogt n i lt/gt
39
Linguagem de Consulta
  • X-Query

40
XQuery
  • Baseda em Quilt (que Ă© baseda em XML-QL)
  • http//www.w3.org/TR/xquery/2/2001
  • XML Query data model

41
FLWR (Flower) Expressions
FOR ... LET... WHERE... RETURN...
42
XQuery
Encontre os tĂ­tulos dos livros publicados apĂłs
1995
FOR x IN document("bib.xml")/bib/book WHERE
x/year gt 1995 RETURN x/title
Resultado lttitlegt abc lt/titlegt lttitlegt def
lt/titlegt lttitlegt ghi lt/titlegt
43
XQuery
Para cada autor de um livro publicado pela Morgan
Kaufmann, listar os livros publicados
FOR a IN distinct(document("bib.xml")
/bib/bookpublisherMorgan
Kaufmann/author) RETURN ltresultgt
a, FOR t IN
/bib/bookauthora/title
RETURN t lt/resultgt
distinct elimina duplicatas
44
XQuery
Resultado ltresultgt
ltauthorgtJoneslt/authorgt lttitlegt abc
lt/titlegt lttitlegt def lt/titlegt
lt/resultgt ltresultgt ltauthorgt Smith
lt/authorgt lttitlegt ghi lt/titlegt
lt/resultgt
45
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

46
XQuery
ltbig_publishersgt FOR p IN
distinct(document("bib.xml")//publisher)
LET b document("bib.xml")/bookpublisher
p WHERE count(b) gt 100 RETURN
p lt/big_publishersgt
count função (aggregate) que retorna o número
de elementos
47
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
aavg(document("bib.xml")/bib/book/price) WHERE
b/price gt a RETURN b
48
XQuery
  • Sumário
  • FOR-LET-WHERE-RETURN FLWR

FOR/LET Clauses
Lista de tuplas
WHERE Clause
Lista de tuplas
RETURN Clause
Instância do modelo de dados Xquery
49
FOR versus LET
  • FOR
  • liga variáveis nodo ? iteration
  • LET
  • liga variáveis coleção ? one value

50
FOR versus LET
Retorna ltresultgt ltbookgt...lt/bookgtlt/resultgt
ltresultgt ltbookgt...lt/bookgtlt/resultgt ltresultgt
ltbookgt...lt/bookgtlt/resultgt ...
FOR x IN document("bib.xml")/bib/book RETURN
ltresultgt x lt/resultgt
LET x IN document("bib.xml")/bib/book RETURN
ltresultgt x lt/resultgt
Retorna ltresultgt ltbookgt...lt/bookgt
ltbookgt...lt/bookgt
ltbookgt...lt/bookgt ... lt/resultgt
51
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...)

Retorna ltresultgt ltauthorgt...lt/authorgt
ltauthorgt...lt/authorgt
ltauthorgt...lt/authorgt
... lt/resultgt
RETURN ltresultgt b/author lt/resultgt
52
Ordenação em XQuery
ltpublisher_listgt FOR p IN distinct(document("
bib.xml")//publisher) RETURN ltpublishergt
ltnamegt p/text() lt/namegt ,
FOR b IN document("bib.xml")//bookpublisher
p RETURN ltbookgt

b/title ,
b/price
lt/bookgt SORTBY(price DESCENDING)
lt/publishergt SORTBY(name)
lt/publisher_listgt
Argumentos de sort referem-se ao namespace da
cláusula RETURN e não da cláusula FOR
53
If-Then-Else
FOR h IN //holding RETURN ltholdinggt
h/title, IF
h/_at_type "Journal"
THEN h/editor ELSE
h/author lt/holdinggt SORTBY
(title)
54
Quantificador Existencial
FOR b IN //book WHERE SOME p IN b//para
SATISFIES contains(p, "sailing") AND
contains(p, "windsurfing") RETURN b/title
55
Quantificador Universal
FOR b IN //book WHERE EVERY p IN b//para
SATISFIES contains(p, "sailing") RETURN
b/title
Write a Comment
User Comments (0)
About PowerShow.com