Modelo de dados semiestruturado e tipificação em
XML
Helena Galhardas
DEI 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:


Documentos:


B-tree, hash table, optimização de interrogações
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]”}
Representação gráfica
nome
tel
email
“[email protected]”
214233290
primeiro
“Bruno”
ultimo
“Martins”
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
Bib
&o1
complex object
paper
paper
book
references
&o12
&o24
references
author
title
year
&o29
references
author
http
page
author
title publisher
title
author
author
author
&o43
&25
&96
1997
last
firstname
lastname
atomic object
firstname
lastname
&243
“Serge”
“Abiteboul”
“Victor”
Object Exchange Model (OEM)
first
&206
“Vianu”
122
133
Sintaxe para expressões semiestruturadas
<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) = valoratomico
T({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 father=“o123”> …
</person>
father
person
{ person: &o123
{ name: “Alan”,
age: 42,
email: “ab@com” }
}
{ person: { father: &o123 …}
}
person
father
name age email
name
Alan
age
42
email
ab@com
Alan
42 ab@com
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 a
Person:{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
Company
person
Root
company
works-for
managed-by
Company
nam e
…
…
a d d re ss
…
…
c .e .o .
…
…
name
address
name
Employee
c.e.o.
o id
…
…
string
Employee
o id
…
…
nam e
…
…
m a n a g e d -b y
…
…
w o rk s-fo r
…
…
Store rest in overflow graph
Ajuda na optimização de interrogações
Bib
paper
year
int
journal
select X.title
from Bib._ X
where X.*.zip = “12345”
book
address
title
string
string
title
author
string
string
last first
zip city streetname name
string
string
string
string
select X.title
from Bib.book X
where X.address.zip = “12345”
Dados relacionais vs dados semiestruturados
Esquemas em dados relacionais



Definidos antes dos dados
Os dados têm que obedecer ao esquema
Cada instância de dados obedece exactamente a
um esquema
Esquemas 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



Extraído dos dados


Antes ou depois dos dados
Não tem que ser único
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 semiestruturados, 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)
Dados:
&r1
person
person
company person
manages
company
works-for
employee
&p1
&c1
&p2
&c2 c.e.o.&p3
c.e.o.
works-for
position
phone name address
namepositionworks-for
name
name
nameaddress
&s0 &s1
&s2
&s3
&s4
&s5
&s6 url &s7 &s8
&s9 description
“Smith” “Manager”
“Widget”
“Trenton”
“Jones”
description
“Sales”
&s10
eval &a5 1998
&a4
1997
&a7
&a3 task
&a6 “below target”
“www.gp.fr”
&a1
salesrep
procurement
“Paris” “Dupont”
“5552121” “Gadget”
&a2
contact
“on target”
Grafo de esquema
person
Root
company
works-for
Company
managed-by
Person
c.e.o. | employee
name | address | url name | phone | position
description
string
*
Any
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, G2
Uma 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
G1
R
x2
a
a
y1
R
y2
G2
Simulação entre uma instância de
dados SS (OEM) e um grafo de
esquema
1.
Permite-se que um arco x1[l]y1 nos dados seja
2.
3.
simulado por algum arco x2[l’]y2 quando l’ é um
wild card ou uma alternância contendo l
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”
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
person
company person
manages
employee
&c1
&p2
c.e.o.
&p1
person
company
works-for
name position works-for
name phone
name address
&s0
“Smith”
&s1
“Manager”
&s2
&s3
&s4
“Widget”
“Trenton”
“Jones”
&s5
works-for
managed-by
&s9 description
&s6 url &s7 &s8
“Paris” “Dupont”
“5552121” “Gadget”
“Sales”
“www.gp.fr”
salesrep
&a2
contact
&a4
task
&a3
eval
&a5 1998
1997
&a6
Company
&a7
Person
c.e.o. | employee
name | address | url
&s10
&a1
person
company
position
address name
name
description
procurement
Root
works-for
&c2 c.e.o. &p3
name | phone | position
description
string
*
Any
“below target”
“on target”
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
D=
&r
employee
employee employee
employee employee
manages
employee
employee
manages
manages
manages
manages
&p1
&p2
managedby
&p3
company worksfor worksfor
&p4
&p5
&p6
&p7
managedby
managedby
managedby
worksfor
employee
managedby
worksfor worksfor
worksfor
worksfor
worksfor
&c
&p8
Exemplo: Data Guide
Result
Sd =
Root
&r
company
managedby
employee
Employees
&p1,&p1,&p3,P4
&p5,&p6,&p7,&p8
manages
worksfor
Bosses
&p1,&p4,&p6
worksfor
Company
&c
manages
managedby
worksfor
Regulars
&p2,&p3,&p5,&p7,&p8
Referências



Serge Abiteboul, Slides of the course: “Données
Semistructurées”, Master Recherche Informatique
Paris Sud, http://www-rocq.inria.fr/~abitebou/MasterSSD/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/cs
e590ds/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
Download

Slide 1