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:58
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