Modelo de dados semi-estruturado e tipificação em XML
Helena GalhardasDEI IST
Agenda
Resumo da aula passada Modelo de dados semi-estruturado Tipificação em dados semi-estruturados e
XML
Resumo da aula passada
Resumo: o que interessa lembrar Semi-estruturado: casamento entre sistemas
documentais e SGBDs XML
Árvores ordenadas, etiquetadas e com ligações Semântica e tipos estão nas tags Formato de transferência de dados
Resumo: tecnologia
SGBDs: B-tree, hash table, optimização de interrogações
Documentos: Indíce texto, classificação
XML: Autómato de árvores
Resumo: problemas antigos ressurgem Optimização de interrogações distribuídas Integração de dados Procura de dados e serviços Gestão de actualizações de dados
Exercício
Considere uma BD relacional que contém uma relação “ensina” com atributos “disciplina” e “docente”. Esta relação representa uma associação entre as disciplinas ensinadas no Mestrado de Bolonha em Informática e os professores que nele ensinam.
Escreva um documento XML que representa uma instância dessa relação contendo dois tuplos (arbitre a disciplina e o nome dos professores)
Modelo de dados semi-estruturado e XML
Modelo de dados semi-estruturado Dados semi-estruturados são muitas vezes
conotados como “sem-esquema” (schemaless) ou “explicáveis por si próprios” (self-describing)
Dados são descritos através de uma sintaxe simples:{nome: {primeiro: “Bruno”, ultimo: “Martins”}, tel: 21 4233290, email: “[email protected]”}
Variações na estrutura
{pessoa:{nome: {primeiro: “Bruno”, ultimo: “Martins”},
tel: 21 4233290, email: “[email protected]”},
pessoa: {nome: “Pável”, tel: 21 4233267, email: [email protected]},
pessoa:{nome: “Helena”, tel: 21 4233246, altura: 1,60}
}
Representação de dados relacionais{ r1: {linha: {a: a1, b: b1, c: c1}, linha: {a: a2, b: b2, c: c2} }, r2: {linha: {c: c2, d: d2}, linha: {c: c3, d: d3},
linha: {c: c4, d: d4} }
}
Representação de BDs de objectos{ pessoa: &o1 {nome: “Ana”,
idade: 35, filho: &o2,
filho: &o3 },
pessoa: &o2 {nome: “João”, idade: 7, parentes: {mae: &o1,
irma: &o3} },
pessoa: &o3 {nome: “Joana”, país: “Portugal”,
mae: &o1 }}
Modelo de dados semi-estruturado
&o1
&o12 &o24 &o29
&o43&96
&243 &206
&25
“Serge” “Abiteboul”
1997
“Victor” “Vianu” 122 133
paper bookpaper
references
references references
author title year httpauthor
authorauthor
title publisherauthor
authortitle
page
firstnamelastname firstname lastname first
last
Bib
Object Exchange Model (OEM)
complex object
atomic object
Sintaxe para expressões semi-estruturadas
<ssd-expr> ::= <value> | oid<value> |oid<value> ::= atomicvalue | <complexvalue><complexvalue> ::= {label: <ssd-expr>,..., label:<ssd-expr>}
Um oid o é definido numa ssd-expression s se s tem a forma ov para algum valor v ou s tem a forma {l1:e1, ..., ln:en} e o está definido numa das e1,..., en
Qualquer oid é definido no máximo uma vez em s Se um oid o é usado em s, então tem que ter sido definido
em s
Terminologia de grafos para descrever dados semi-estruturados Grafo (N, E) consiste num conjunto N de nós e um
conjunto E de arcos (edges) Associado a cada e E, existe um par ordenado de
nós, o nó fonte s(e) e o nó destino t(e). Um caminho (path) é uma sequência e1, e2, ..., ek
de arcos tal que: t(ei) = s(ei+1), 1<=i<=k-1, K: tamanho do caminho
Um nó r é a raíz do grafo se existir um caminho de r para n, para qualquer n N
Um ciclo num grafo é um caminho entre um nó e ele mesmo. Um grafo sem ciclos é aciclico.
Terminologia de grafos para descrever dados semi-estruturados (2) Um grafo com raíz é uma árvore se existir
um caminho único de r para n, para qualquer n N
Um nó é terminal ou folha se não é a fonte de nenhum arco em E.
DAG: Directed Acyclic graph Modelo de dados semi-estruturados: grafo
com arcos etiquetados (edge-labeled graph) Tb pode incluir etiquetas nos nós
XML e dados semi-estruturados<person>
<name> Alan </name> <age> 42 </age> <email> ab@com </email></person>
Ssd-expression: {person: {name: “Alan”, age: 43, email: [email protected]}}
Função de tradução T:T(valoratomico) = valoratomicoT({l1:v1, ..., ln:vn} = <l1> T[v1] </l1> ... <ln> T[vn] </ln>
Referências XML XML permite associar identificadores únicos a elementos, como
sendo o valor de um determinado atributo.
<state id = “s2”><scode> NE </scode><sname> Nevada </sname>
</state>
<city id = “c2”><ccode> CCN </ccode><cname> Carson City </cname><state-of idref =“s2”/>
</city>
Semelhanças e diferenças
<person id=“o123”> <name> Alan </name> <age> 42 </age> <email> ab@com </email></person>
{ person: &o123 { name: “Alan”, age: 42, email: “ab@com” }}
person
name age email
Alan 42 ab@com
person
name age email
Alan 42 ab@com
father father
<person father=“o123”> …</person>
{ person: { father: &o123 …}}
Semelhante em árvores, diferente em grafos
Ordem em XML
Em XML, existe a noção de ordem, em ssd não.Person:{fn:”John”, ln:”Smith”} igual aPerson:{ln:”Smith”, fn:“John”}Mas<person><fn>John</fn>
<ln>Smith</ln></person>Diferente de:<person><ln>Smith</ln>
<fn>John</fn></person> Atributos em XML não têm noção de ordem
Mistura de elementos e texto XML pode misturar texto e elementos <talk> Making Java easier to type and easier to type <speaker> Phil Wadler </speaker> </talk>
Além disto, XML tem uma panóplia de outras construções como entidades, instruções de processamento, comentários, etc.
Todas estas diferenças fazem com que a gestão de dados XML seja mais complexa
Tipificação em XML
Tipificação em XML
Não é imposta Mas
Melhora o armazenamento Facilita a navegação nos dados (data guide) Facilita a interrogação Facilita a descrição e explicação dos dados Ajuda à optimização Permite a interoperabilidade entre programas Permite proteger os dados
Melhora o armazenamento
Root
Company Employee
string
company
person
works-for
c.e.o.
address
name
managed-by
name
o i d n a m e a d d r e s s c . e . o .… … … …… … … …
Company
o i d n a m e m a n a g e d - b y w o r k s - f o r… … … …… … … …
Employee
Store rest in overflow graph
Ajuda na optimização de interrogações
Bib
paper book
yearjournal
title
int string string
addressauthor
title
zip city street
lastname
firstname
string string string string string
string
select X.titlefrom Bib._ Xwhere X.*.zip = “12345”
select X.titlefrom Bib.book Xwhere X.address.zip = “12345”
Dados relacionais vs dados semi-estruturadosEsquemas em dados relacionais
Definidos antes dos dados Os dados têm que obedecer ao esquema Cada instância de dados obedece exactamente a
um esquemaEsquemas em dados semi-estruturados
Definidos depois dos dados Alguns dados podem não ter esquema associado Uma instância de dados pode ter vários
esquemas
Quando é que o esquema é criado nos dados semi-estruturados? Criado pelo utilizador
Antes ou depois dos dados Não tem que ser único
Extraído dos dados Isto não existe em BDs relacionais
Extraído das interrogações Como inferência de tipos em linguagens de
programação
Grafos de esquema (schema graphs) Dado um conjunto de dados semi-
estruturados, podemos querer extrair o seu esquema
O grafo de esquema especifica que arcos são permitidos num grafo de dados Todos os caminhos (paths) que ocorrem no grafo
de dados ocorrem no grafo de esquema
Exemplo (OEM)
&r1
&c1 &c2
&s2 &s3 &s6 &s7
&s10
companycompany
nameaddress name
url
address
“Widget” “Trenton” “Gadget”
“www.gp.fr”
“Paris”
&p2&p1 &p3
&s0 &s1 &s4 &s5 &s8 &s9
personperson
person
“Smith”
nameposition name phonename
position
“Manager” “Jones” “5552121” “Dupont” “Sales”
employeemanages
c.e.o.works-for works-for
works-forc.e.o.
&a1
&a2 &a3
&a4&a5
&a6&a7
description
description
procurement salesrep
contact
task
eval1997
1998
“on target”
“below target”
Dados:
Grafo de esquema
Root
CompanyPerson
string
companyperson
works-for
c.e.o. | employee
name | address | url
managed-by
name | phone | position
Any
description
*
Duas questões
Conformance: os dados são conforme o esquema?
Classificação: se sim, então que objectos pertencem a que classes?
Simulação de grafos
Definição Dois grafos edge-labeled G1, G2Uma simulação é uma relação R entre nós:
se (x1, x2) pertencem a R, e (x1,a,y1) está em G1,Então existe (x2,a,y2) em G2 (mesma etiqueta)tal que (y1,y2) está em R
x1 x2a
R
G1 G2
y1
aR y2
Simulação entre uma instância de dados SS (OEM) e um grafo de esquema1. Permite-se que um arco x1[l]y1 nos dados seja
simulado por algum arco x2[l’]y2 quando l’ é um wild card ou uma alternância contendo l
2. AS raízes têm que estar na simulação rRr’ onde r e r’ são as raízes dos dados e do grafo de esquema, respectvamente. Diz-se que a simulação é “rooted”
3. Sempre que xRy, se y é um tipo atómico então x também tem que ser um nó atómico e ter um valor desse tipo. Diz-se então que a simulação é tipificada.
Exemplo
&r1
&c1 &c2
&s2 &s3 &s6 &s7
&s10
companycompany
name address name
url
address
“Widget” “Trenton” “Gadget”
“www.gp.fr”
“Paris”
&p2&p1 &p3
&s0 &s1 &s4 &s5 &s8 &s9
personperson
person
“Smith”
nameposition name phonename
position
“Manager” “Jones” “5552121” “Dupont” “Sales”
employeemanages
c.e.o.works-for works-for
works-for
c.e.o.
&a1
&a2 &a3
&a4&a5
&a6&a7
description
description
procurement salesrep
contact
task
eval1997
1998
“on target”
“below target”
Root
Company Person
string
companyperson
works-for
c.e.o. | employee
name | address | url
managed-by
name | phone | position
Any
description
*
Dados Grafo de esquema
Usando Simulação
Grafo de dados D, esquema S conformance: encontrar a simulação máxima
R de D para S: Notação: D S
classificação: verificar se (x,c) estão em R Notação: x c
Extracção de esquema (data guides) Data guide é um sumário preciso e conciso do grafo
de dados Preciso: todos os caminhos (paths) nos dados ocorrem no
data guide e vice-versa Conciso: todos os caminhos no data guide ocorrem
exactamente uma vez Data Guide é o grafo de esquema mais específico
para um dado grafo de dados, ou seja, existe uma simulação do data guide para qualquer outro grafo de esquema que o grafo de dados satisfaça
Um grafo de dados é análogo a um NFA (nondeterministic finite state automaton) Dado um NFA N, o data guide é análogo a um DFA
(deterministic finite state automaton) equivalente ao NFA N
Exemplo: Grafo de Dados
&r
&p8&p1 &p2 &p3 &p4 &p5 &p6 &p7
&c
company
employeeemployee
employeeemployee employee employee
employeeemployee
worksforworksfor
worksforworksforworksfor
worksforworksfor
worksfor
manages
manages
manages
manages
managedby
managedbymanagedby
manages
managedbymanagedby
D =
Exemplo: Data Guide
Root&r
Employees&p1,&p1,&p3,P4
&p5,&p6,&p7,&p8
Bosses&p1,&p4,&p6
Regulars&p2,&p3,&p5,&p7,&p8
Company&c
company
employee
managesmanagedby
manages
managedby
worksfor
worksfor
worksfor
Result Sd =
Referências Serge Abiteboul, Slides of the course: “Données
Semistructurées”, Master Recherche Informatique Paris Sud, http://www-rocq.inria.fr/~abitebou/Master-SSD/index.html
Dan Suciu, Slides on “The semistructured data model”, CSE 590ds: Management of XML and Semistructured Data, http://www.cs.washington.edu/education/courses/cse590ds/01sp/
S. Abiteboul, P. Buneman, D. Suciu, “Data on the Web, From Relations to Semistructured Data and XML”, Morgan Kaufmann, 2000, (caps 2, 3 e 7)
Tópicos próximas aulas DTD, XML Schema, XSDL XSLT XPath XQuery
Top Related