2. Modelagem de Dados
semi-estruturados
Introdução
Introdução
Dados semi-estruturados ?




Dados semi-estruturados: dados
heterogêneos e irregulares, por exemplo XML
Banco de dados: originalmente, sistemas
fechados, dedicados a gestão de dados
regulares, cuja estrutura pouco evolui no
tempo
Novas aplicações requerem mais flexibilidade
de representação e estão constantemente
evoluindo o esquema
Os modelos relacional e de objetos chegaram
a seus limites
Introdução
Dados semi-estruturados ?


Uma solução: usar um modelo de grafo
para armazenar os dados com
características semi-estruturadas
Origens de dados semi-estruturados:
 integração de fontes heterogêneas
 fontes de dados sem estrutura rígida


dados biológicos
dados da Web
Introdução
Dados semi-estruturados ?

Evolução:
 1995: Projeto TSIMMIS, Modelo OEM na
Universidade de Stanford, EUA
 1996: Projeto LORE, primeiro SGBD
semi-estruturado, Stanford
 1999: aceitação de XML pela indústria
para representação de dados semiestruturados
Uma sintaxe para dados semiestruturados

Dados semi-estruturados: dados sem esquema ou

Não há separação entre os dados e o esquema
auto-descritivos


Exemplo




Os dados contêm o esquema
{nome:"Ana", tel:"3334567", email:[email protected]}
{nome:"Ana", tel:"3334567", tel:"9715432"}
Aqui os valores são os dados atômicos
Representação sob forma de grafos
nome
Ana
email
tel
3334567
[email protected]
nome
Ana
tel
tel
3334567
9715432
Uma sintaxe para dados semiestruturados


Os valores podem ser objetos complexos
Exemplo
{pessoa: {
nome:"ana", tel:"3334567"
}
},
{pessoa: {
nome:{prénome:"Victor",sobrenome:"Bezerra"},
tel:"3218765"
}
},
{pessoa: {
nome:"Sandra"
}}
Representação de bases
relacionais

Um BD relacional é descrito por um esquema





r1(a,b,c)
r2(c,d)
r1 e r2 são os nomes das relações
a,b,c,d são os nomes dos atributos
No esquema de uma relação, cada atributo é
definido sobre um domínio de valores atômicos.
r1
r2
a
b
c
a1
b1
c1
c2 d2
a2
b2
c2
c3 d3
c
d
{r1:{row:{a:a1,b:b1,c:c1},
row:{a:a2,b:b2,c:c2}
},
r2:{row:{c:c2,d:d2},
row:{c:c3,d:d3}
}
Introdução
Representação de bases
relacionais

Representação num grafo
r1
row
a b c
a1 b1 c1
row
a b c
a2 b2 c2
r2
row
row
Representação de bases de
objeto


Exemplo: considere uma coleção de três pessoas:
Maria tem dois filhos: José e Joana.
Usando o conceito de identidade de objetos,
podemos representar esta coleção da seguinte
forma:
{ pessoa:&p1{
nome:"Maria", idade:45, filho:&p2,filho:&p3
}
pessoa:&p2{
nome:"José", idade:23, mãe:&p1
}
pessoa:&p3{
nome:"Joana", idade:22, mãe:&p1
}
}
Introdução
Representação de bases de
objeto

Representação em grafo
root
pessoa
pessoa
pessoa
Maria
nome
filho
&p2
idade 23
nome
&p1
mãe
filho
45
José
nome Joana
idade
mãe
&p3
idade 22
2.1. Modelagem de dados
semi-estruturados
O modelo OEM
OEM
O modelo OEM

Desenvolvido no projeto TSIMMIS-Stanford


sistema para integração de fontes de dados
heterogêneas
Um objeto OEM é uma quádrupla
(label,oid,type,value)




label: cadeia de caracteres
oid: identificador do objeto
type: complexo ou atômico(int, string, gif, jpeg …)
value:


se o tipo é complexo, conjunto de oid ’s
senão um valor atômico
OEM
O modelo OEM


O modelo OEM é um modelo de grafo.
Os labels estão nos nodos e não nos
arcos como visto anteriormente.
Obs.: Várias extensões ao OEM foram
propostas e consireram labels nos arcos!
Exemplo de Semistructured Data Model
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
Exercício: representação de uma base de
objetos
usando o modelo OEM

esquema ODL da base de objetos
class Estado
(extent estados)
{ attribute string nome;
attribute Cidade capital;
relationship set<Cidade> cidades-em
inverse Cidade::estado-de
}
class Cidade
(extent cidades)
{ attribute string nome;
relationship Estado estado-de
inverse Estado:cidades-em;
}
Exercício: representação de uma base de
objetos usando o modelo OEM

Representação de dados ODMG
{estados: {estado: &e1{nome: "Pernambuco",
capital: &c1,
cidades-em: {Cidade:
&c1,
Cidade: &c2, …}
},
estado: &e2{nome:"Paraíba",
capital:&c6,
cidades-em: {Cidade: &c5,
…}
},
…
},
cidades: {cidade: &c1{nome: "Recife",
estado-de: &e1}, cidade: &c2{nome:
"Caruaru" , estado-de: &e1}, … }
}
Introdução a XML
Introdução
XML ?




« Buzz word »
eXtensible Markup Language
Uma linguagem de descrição de documentos,
definida por um organismo internacional W3C
Um conjunto de tecnologias derivadas:


Xlink, Xpointer, Xschema, DOM, SAX, XSL,…
O esperanto da Web
Introdução
A revolução da Web…








1989 - Primeiro Web Browser
1993 - Mosaic é difundido, há 50 web sites
1994 - Primeiras ferramentas de busca
(WWWW, webcrawler)
1996 - US$ 1M gastos em compras na Web,
presença em 150 países
1997 - 1 milhão de web sites
1998 - 300.000 web servers
2000 - mais de 1 bilhão de páginas web
2002 – quase 2,5 bilhões de páginas web
indexadas (google)
Introdução
A Web hoje…




documentos HTML
voltada para uso humano
gerado automaticamente por aplicações
Fácil de alcançar qualquer Web page,
de qualquer server, em qualquer
plataforma
Introdução
Limites da Web …




aplicações não podem consumir HTML
tecnologia de HTML wrapper é instável
(modifica-se a página => modifica-se o
wrapper)
tecnologia OO (Corba) requer ambiente
controlado
companhias se fundem, formam parcerias;
necessitam de interoperabilidade de forma
rápida
Introdução
Web: Mudança de paradigma
…

Novo padrão Web XML:



XML gerado por aplicações
XML consumido por aplicações
troca de dados


entre plataformas: interoperabilidade na
empresa
entre empresas
Introdução
… estão surgindo ...

As novas aplicações





Comércio Eletrônico
Protocolos "B2B"
Bibliotecas digitais
sistemas distribuídos
…
precisamos de um "super HTML"
XML
Um padrão W3C para complementar HTML
origens: textos estruturados em SGML
motivação:
HTML descreve apresentação
XML descreve conteúdo
http://www.w3.org/TR/REC-xml (2/98)
O Segredo do sucesso de
HTML
Simplicidade: Todo mundo pode escrever HTML
HTML é textual: é legível, pode-se usar qualquer editor, ...
HTML é transportável em qualquer plataforma (o browser é a
aplicação universal)
HTML conecta pedaços de informação através de hypertext li
De HTML para XML
HTML descreve a apresentação
HTML
<h1> Bibliography </h1>
<p> <i> Foundations of Databases </i>
Abiteboul, Hull, Vianu
<br> Addison Wesley, 1995
<p> <i> Data on the Web </i>
Abiteoul, Buneman, Suciu
<br> Morgan Kaufmann, 1999
XML
<bibliography>
<book> <title> Foundations… </title>
<author> Abiteboul </author>
<author> Hull </author>
<author> Vianu </author>
<publisher> Addison Wesley </publisher>
<year> 1995 </year>
</book>
…
</bibliography>
XML descreve o conteúdo
Exemplo



Suponha que um site de e-commerce
precisa emitir uma nota fiscal
Exemplo
Problemas:

Diversos departamentos da empresa usam
estes dados de notas fiscais em diferentes
plataformas, SO e linguagem de programação
Exemplo (cont)

Melhor seria usar XML!
<?xml version=“1.0”>
<NotaFiscal>
<NomeCliente> Ana Silva </NomeCliente>
<EndCliente> Rua das Margaridas, Maceió, AL </EndCliente
<EndEnvio> Rua das Margaridas, Maceió, AL </EndEnvio>
<Item>
<codigo> 123 </codigo>
<descricao> Parafuso 8mm </decricao>
<quantidade> 20 </quantidade>
<preco> 3,00 </preco>
</Item>
<Item> … </Item>
</NotaFiscal>
Exemplo
<ficha>
ficha
nome
fn
ln
Vera
Santos
trab
end
IBGE
cidade
Natal
Elementos fn
Atributos tipo
Dados
52310
Syntaxe
<nome>
<fn>Vera</fn>
<ln>Santos</ln>
email gerente
</nome>
<trab tipo=“gerente">
IBGE
cep
[email protected]
<end>
<cidade>Natal</cidade>
52310
<cep>52310</cep>
</end>
<email>[email protected]</email>
</trab>
tipo
</ficha>
Princípios fundamentais
XML: sucessor de HTML



HTML Hypertext Markup Language.
Um conjunto pré-definido e limitado de tags,
definidas por uma norma (HTML 2.0, 3.2,
4.0).
Estas tags possuem semânticas variadas:


h1,..,h6, title, address, … dando as
indicações estruturais
center,hr,b,i,big,small,… servem para
descrever a apresentação.
Princípios fundamentais
Problemas com HTML




Uma vez criado, um documento é ligado a
uma norma particular (ex. HTML 3.2 )
A visualização de um documento é
fortemente dependente da interpretação que
o navegador faz.
É necessário dispor de várias versões do
documento em função da mídia em que vai
ser apresentado
A indexação de documentos só pode ser feita
sobre a parte textual.
Introdução
XML: uma resposta única a
necessidades variadas


HTML é usada como a lingagem universal de
apresentação de documentos na Web, mas
não é uma linguagem adaptada para
descrever a estrutura destes documentos
As bases de dados atuais são muito rígidas
para manipular dados cuja estrutura é
irregular e evolui com o tempo.
Os segredos de XML

Como HTML:




simples, legível, fácil de aprender
universal e transportável
suportado pela W3C (indústria absorve!)
Mas, Além de HTML


flexível : podemos representar qualquer tipo de
informação
extensível: pode-se representar informação de
qualquer forma
Origem da linguagem XML
Origem

Trabalho cooperativo de um grande número
de empresas e de pesquisadores reunidos no
World Wide Web Consortium (W3C)



400 colaboradores da indústria, entre os quais
Oracle, IBM, Compaq, Xerox, Microsoft, etc..
Laboratórios de pesquisa: MIT - USA, INRIA França, universidade de Keio - Japão
Objetivo: definição de um formalismo para
facilitar a troca de dados na Web
Origem da linguagem
Mandamentos iniciais:




XML deverá ser diretamente utilizável na
Internet
XML deverá suportar uma larga
variedade de aplicações
XML deverá ser compatível com SGML
A criação de páginas XML deverá ser
também o mais simples possível
Origem da Linguagem
Mandamentos iniciais(2)




Os documentos XML deverão ser de
grande legibilidade
A criação de documentos deverá ser
rápida
A sintaxe deverá ser formal e concisa
A concisão do código tem mínima
importância
Origem da lingagem
Histórico

1993: primeiros trabalhos sobre adaptação
das técnicas SGML à Web (Sperberg).
"HTML to the Max: A Manifesto for Adding
SGML Intelligence to the World Wide Web"


Junho 1996: criação de um grupo de trabalho
no W3C
10 fev. 1998: publicação da recomendação
para versão 1.0 da linguagem.
Razões da W3C para usar XML






Permite a publicação eletrônica
internacional independente de mídia
Permite que as empresas definam
protocolos de transferências de dados
Facilita o desenvolvimento de SW para
Web
Disseminação dos dados sem uso formatos
proprietários (caros!)
Exibição de informação customizada
Gestão de metadados facilitada
Princípios fundamentais
XML



XML significa eXtensible Markup
Language
sucessor de HTML
herdeiro de SGML
XML é um linguagem de
descrição e de troca de
documentos estruturados
Princípios Fundamentais
XML: herdeiro de SGML





SGML Standard Generalized Markup
Language, norma ISO 8879:1986
Muito utilizada na indústria para as grandes
técnicas de documentação.
Muito complexa para utilização de «público
em geral»
SGML tem demonstrado as vantagens do
formato estrutural para a Gestão Eletrônica
de Documentos (GED)
XML usa 10% de SGML para representar de
forma eficaz 90% dos documentos
Princípios fundamentais
Noção estrutural


Princípio chave de SGML
Idéia fundamental:
Considere um documento, é desejável
separar completamente
as informações de estrutura
das informações de apresentação.
Exemplo de um documento
Cabeçalho
Objeto
Logotipo
Bar do Carrego
Rua das Bodegas, s/n
58106-920 C. Grande
Tel: 012133564
Fax: 879765426
Campina GRande,
20 de maio de 2001
Sr. Edilson Silva,
Rua das Flores, 12
581293 Caruaru
Saudação
Data
Destinatário
Objet: Dívida?
Forma
Polida
Prezado Senhor,
Bla bla bli, bli blo bla, kkkk vhlg vckjdhklbg
fdskjbvhv feje slc ifehfe fhckh c jeflccj n khef
iheznf jùkvbc lkhdklvn v
Corpo
Aproveito do ensejo para renovar meus protestos de elevada estima e
consideração.
assinatura
Rodapé
Assinatura
Rodapé
Representação XML
<carta>
. . .
</carta>
<cabeca>
<logotipo loc="logo-graph"/>
. . .
<endereco> &abrev-endereco;
</cabeca>
</endereco>
<destinatario>
<nome> Sr Edilson Silva </nome>
<endereco>
<rua> rua das Flores </rua>
<cidade> Caruaru </cidade>
</endereco>
</destinatario>
<objeto> bla bla </objeto>
<data>
20 Maio 2001
</data>
<para>
<saudacao>
Aqui é o primeiro
Prezado Senhor,
parágrafo
</saudacao>
</para>
<corpo>
<para>
. . .
aqui é o segundo ...
</corpo>
</para>
Princípios fundamentais
Pontos importantes




A representação desta carta em XML não tem
nenhuma indicação sobre a apresentação.
As numerosas propriedades gráficas ou
tipográficas estão ausentes da fonte XML.
Estas propriedades serão definidas por
intermédio de uma folha de estilo.
Uma folha de estilo é um conjunto de regras
para especificar a realização concreta de um
documento sobre uma mídia particular.
Princípio de funcionamento das folhas de estilos
<carta>
<cabeca>
. . .
</cabeca>
If carta then ...
If cabeca then …
If corps then
...
If para then
<corpo>
. . .
</corpo>
</carta>
Police new roman,
size 12,
skip first line
If … then …
WindStar 2000
Les rosières en buget
AB562 Saint Pétaouchnoque
Tel: 012133564
Fax: 879765426
Saint Pétaouchnoque,
Le 30 nivose 2004
Editions Duschmol,
12 rue Schmurz
YT123 Rapis
Objeto: Dívida
Prezado Senhot,
Bla bla bli, bli blo bla, kkkk vhlg
vckjdhklbg fdskjbvhv feje slc ifehfe
fhckh c jeflccj n khef iheznf jùkvbc
lkhdklvn v
.
sssinatura
Rodapé
Descoberta de XML
Vantagens de XML
Vantagens de XML
Extensibilidade e estrutura


Em XML, um autor ou uma comunidade de autores inventam
livremente as tags que lhes pareçam úteis para marcar os
componentes de um documento.
Exemplo: diversas formas de representar uma data




<date> 5 janeiro 2000 </date>
<date>
<ano> 2000 </ano>
<mes> 01 </mes>
<dia> 05 </dia>
</date>
<date format='ISO-8601'> 2000-01-05 </date>
Grande liberdade de escolha das estruturas de dados facilita a
troca de dados




comércio eletrônico
transações financeiras e comerciais
pesquisa e indústria de biotecnologias
multimídia
Vantagens de XML
Interoperabilidade


Todos os dados podem ser vistos como documentos
XML e não mais como arquivos no formato X ou Y.
Consequências:
 Um servidor de documentos XML é suscetível de
responder a um conjunto de necessidades de uma
organização.
 Um simples editor de textos pode tratar o
conjunto de dados de uma organização.
 A interoperabilidade dos utilitários está
assegurada.
Vantagens de XML
Modularidade e reutilização




Cada usuário é livre para definir suas próprias
estruturas de documento
O documento pode também estar conforme
as estruturas tipadas, chamadas DTD
Cada comunidade pode propor as estruturas
normalizadas
A validação a um DTD permite a
automatização no tratamento dos dados e
assegura uma possibilidade de controle de
integridade
Vantagens de XML
Accesso às fontes de informação
heterogêneas


A consulta e troca de dados entre as base de dados
heterogêneas é complexa
XML contribui pare minimizar este problema: formato de troca
normalizado, genérico, independente de plataforma
A indexação e consulta de bases de documentos pode se
beneficiar de informações estruturais e textuais.


pesquisa por palavras-chaves: Jorge+Amado retorna todos os
documentos contendo as palavras Jorge e Amado, então as
páginas pessoais de Pedro Amado cujo filho se chama Jorge.
pesquisa estrutural: pesquisa os documentos cujo autor é Jorge
Amado (ie os documentos contendo um elemento autor, ou
escrito-por contendo Jorge e Amado)
XML na prática








Comércio eletrônico: CXML, EBXML
Química, Matemática, Geografia: CML,
MathML
Multimídia: SMIL, MPEG-7, MusicML
Desenhos gráficos: SVG
Protocolos de comunicação: SOAP, UDDI,
WSDL
Transferência de dados: XMI, GML
Configuração de software
E muito mais!!!!
Descoberta de XML
Definição da linguagem XML 1.0
XML 1.0
Exemplos de documentos XML
<document> </document>
<document/>
<document> Bom dia! </document>
<document>
<saudacao> Bom dia! </saudacao>
</document>
<?xml version="1.0" ?>
<document>
<saudacao> Bom dia! </saudacao>
</document>
XML 1.0
Estrutura de um documento

Um documento XML se compõe

de um prólogo cuja presença é facultativa, mas
fortemente aconselhada
<?xml version="1.0"

?>
de uma árvore de elementos, obrigatória
<document>
<saudacao> Bom dia! </saudacao>
</document>

de comentários e de instruções de tratamento,
facultativos
XML 1.0
O prólogo
Contém:
 Uma declaração XML, facultativa

da forma:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes">

indica ao processador que vai tratar o documento:




a versão da linguagem XML utilizada
o código de caracteres utilizado
a existência de declarações exteriores ao documento
Uma declaração de tipo de documento,
facultativa

da forma
<!DOCTYPE exemplo SYSTEM "exemplo.dtd" [ declarações
]>

indica a estrutura particular a qual deve estar de
acordo um documento
XML 1.0
Estrutura de um DTD

Um DTD pode compreender duas partes

uma parte externa


a parte externa é definida fora do documento.
É referenciada por uma referência DTD,
frequentemente uma URL. Este mecanismo
permite assegurar uma reutilização de DTDs
frequentemente utilizados.
uma parte interna

utilizada para especializar um DTD externo
genérico ou redefinir certos tipos de elementos
XML 1.0
Estrutura de um elemento (1)

Um elemento é da forma:
<nome attr='valor'> conteúdo </nome>



<nome> é a tag de abertura
</nome> é a tag de fechamento. A presença é obrigatória, a
exceção particular dos elementos nulos, denotado por <nom>
</nom> ou <nom/>
conteúdo é o conteúdo de um elemento . Pode ser:
vazio
texto
outros elementos

uma mistura de texto e elementos
instruções de tratamento
comentários
attr='valor' representa um conjunto eventualmente vazio
de atributos, ou seja de pares (nome,valor). Os nomes dos
atributos são únicos num elemento.
XML 1.0
Estrutura de um elemento (2)

Um nome de elemento é uma sequência não nula de caracteres
que pode conter



ponto
 caracter dois-pontos (:) é utilizado, mas com um sentido
particular
deve satisfazer as seguintes restrições
 o primeiro caracter deve ser alfabético ou um undescore
 os três primeiros caracteres não devem formar uma cadeia
cuja representação em letras minúsculas seja "xml".


caracteres alphanuméricos
undescore
sinal de menos
XML 1.0
Estrutura de um elemento (2)
Exemplos de nomes de elementos
corretos
_toto
Nome_sociedade
xsl:rule
X.11
incorretos
1998-catalogo
xmlSpecification
nom sociedade
Exemplo: Banco FirstBank
<?xml version="1.0" >
<banco>
<cliente>
<nomeCliente> Helio </nomeCliente>
<ruaCliente> Principal </ruaCliente>
<cidadeCliente> Recife </cidadeCliente>
<conta>
<numero> A-102 </numero>
<agencia> Central </agencia>
<saldo>
400 </saldo>
</conta>
<conta>
…
</conta>
</cliente>
.
.
</banco>
XML 1.0
Sintaxe dos atributos


Um atributo é um par nome='valor' que permite de
caracterizar um elemento. Um elemento pode ter
vários atributos. Neste caso, os pares nome='valor'
serão separados por um espaço.
Exemplos




<relatorio lingua= ’pt' ult-modif='08/07/99'>
<anuario generator='SQL2XML V2.0'
update='07.08.99'>
O nome de um atributo obedece as mesmas regras
que o nome de um elemento
O valor de um atributo é uma string entre aspas(") ou
apóstrofos simples ('). Um valor de atributo não deve
conter os caracteres ^, % e &.
Exemplo Atributos Banco
<conta tipo=“poupanca” taxa-mensal=“5”>
<numero> A-102 </numero>
<agencia> Central </agencia>
<saldo>
400 </saldo>
</conta>
Elementos X Atributos?


No contexto de documentos, atributos são
parte da marcação (markup), enquanto
conteúdos dos subelementos são parte do
conteúdo básico do documento.
No contexto de representação de dados, a
diferença não é clara e pode ser confusa:


A mesma informação pode ser representada de duas
formas:
 <conta numero = “A-101”> …. </conta>
 <conta>
<numero>A-101</numero> …
</conta>
Sugestão: use attibutos para identificadores de
elementos, e use subelementos para conteúdo
Seção CDATA
Uma seção CDATA instrui o parser a ignorar os caracteres de markup
Exemplo:
<![CDATA[
*p = &q;
b = (i <= 3);
]]>
Entre o início da seção, <![CDATA[ e o fim da seção, ]]>,
todos os caracteres são passados diretamente para a aplicação,
sem interpretação.
A única string que não pode ocorrer numa seção CDATA é ]]>.
Comentários
Comentários iniciam com ”<!--” e terminam com
”-->”. (só não podem conter o string ”--”).
Ex.: <!-- Isto é um comentário -->
Comentários podem ser colocados em qualquer
linha do documento.
XML 1.0
Árvore de elementos
Um documento XML contém uma árvore de elementos,
com as seguintes restrições:


Existe num documento um único elemento pai que
contém todos os outros. É a raiz do documento.
Todo elemento distinto da raiz é totalmente
incluído dentro de seu pai. Assim:
<p> <b> bla bla </p> bla </b>
não é uma estrutura XML.
XML 1.0
Documentos bem formados

Um documento é dito bem formado se:

está de acordo com as regras sintáticas de XML
(tags são aninhadas propriamente e atributos são
únicos)
<?xml version="1.0"
standalone="yes" ?>
<document>
<saudacao> Bom dia! </saudacao>
</document>
Ex. de uma documento não bem
formado:
<document>
<saudacao> Bom dia!
</document>
</saudacao>
XML 1.0
Documentos válidos

Um documento é dito válido se:


seu prólogo contém uma declaração de tipo de documento
sua árvore de elementos respeita a estrutura definida pelo
DTD
<?xml version="1.0" encoding="ISO-8859-1"
standalone="yes" ?>
<!DOCTYPE document [
<!ELEMENT document (saudacao)>
<!ELEMENT saudacao (#PCDATA)>
]>
<document>
<saudacao> Bom dia! </saudacao>
</document>
XML 1.0
Noção de DTD


Um documento válido deve conter uma declaração de
tipo de documento. Esta declaração pode fazer
referência, por intermédio de uma URL a um arquivo
externo. Este arquivo é chamado de DTD (Definição
de Tipo de Documento).
Exemplo
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<!DOCTYPE document SYSTEM "acolhida.dtd">
<document>
<saudacao> Bom dia! </saudacao>
</document>
XML 1.0
Noção de DTD
<!–- Arquivo acolhida.dtd. Exemplo de DTD simples -->
<!–- Autor: -->
<!–- Data: -->
<!–- a declaração XML não é obrigatória dentro de um DTD -->
<!–- permite assegurar que os documentos que a referenciam -->
<!–- utilizam a mesma versão de XML
-->
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<!–- Definição do elemento raiz -->
<!ELEMENT document (saudacao)>
<!–- Um elemento saudacao contém texto -->
<!ELEMENT saudacao (#PCDATA)>
XML 1.0
Conteúdo de um DTD

Um DTD pode conter as declarações






de
de
de
de
de
elementos
listas de atributos
entidades gerais
entidades parametrizadas
notações
como também comentários
XML 1.0: elementos
Declaração de elemento

Uma declaração de elemento é da forma
<!ELEMENT nome modelo>



ELEMENT é uma palavra-chave e se escreve
imperativamente em maiúsculas
nome é um nome válido de um elemento
modelo é o modelo de conteúdo deste elemento.
Distinguimos cinco modelos de conteúdo





elementos
dados
misto
livre
vazio
Modelo de conteúdo de
elementos (1)

Sequência de elementos filhos

( .., .., ..)
Exemplo
<!ELEMENT capitulo (titulo,intro,secao)>


Um elemento capitulo cujo conteúdo, imperativamente e nesta
ordem, contém sub-elementos titulo, intro e secao.
Alternativa

( ..| ..| ..)
Exemplo
<!ELEMENT capitulo (titulo,intro,(secao|secoes))>

Indicadores de ocorrência *,+,?
Um nome de elemento pode ter um indicador de orrorrência:
p* : p pode ocorrer zero, uma ou várias vezes dentro do conteúdo de um
instância
p+ : p pode ocorrer uma ou várias vezes
p? : p pode ocorrer zero ou uma vez
Modelo de conteúdo de
elementos (2)

Exemplos
<!ELEMENT capitulo (
titulo,
intro?,
secao+ ) >
<!ELEMENT secao (
titulo-secao,
texto-secao ) >
<!ELEMENT texto-secao (p|a)* >
Modelo de conteúdo de dados


A presença de dados no conteúdo de
um elemento é especifidada pela
palavra-chave #PCDATA
Exemplo
<!ELEMENT p (#PCDATA) >
Modelo de conteúdo misto


Este modelo permite definir os modelos de conteúdo
podendo misturar dados e elementos
Forma do modelo
(#PCDATA | nome1 | …|nomen)*

Exemplos de declarações
<!ELEMENT p
(#PCDATA | negrito | italico | sublinhado)* >
<!ELEMENT negrito (#PCDATA|italico|sublinhado)* >
<!ELEMENT italico (#PCDATA) >
<!ELEMENT sublinhado (#PCDATA) >

Exemplo de uso
<p> um parágrafo pode conter texto <negrito> em
evidência </negrito> ou em <italico> itálico
</italico></p>
Modelo de conteúdo livre (1)


Um elemento pode ser definido como sendo
um conteúdo qualquer, desde que este
conteúdo respeite as regras gerais da
linguagem XML.
Exemplo
<!ELEMENT qualquer ANY>

Para que o conteúdo de um elemento de
modelo de conteúdo livre seja válido, é
necessário que, se ele contiver elementos,
estes sejam declarados num DTD
Modelo de conteúdo livre (2)


Utilidade: este modelo de conteúdo é particularmente útil quando
da criação de um DTD complexo
Exemplo
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
relatorio ANY>
capitulo ANY>
secao ANY>
titulo-secao ANY>
ilustracao ANY>
bibliografia ANY>
indice ANY>
p ANY>
negrito (#PCDATA)>
titulo (#PCDATA)>
autor (prenome+,nome)>
nome (#PCDATA)>
prenome (#PCDATA)>
XML 1.0: elements
Modelo de conteúdo vazio


Um elemento pode ser declarado como
obrigatoriamente vazio, usando a palavra-chave
EMPTY.
Exemplo de declarações
<!ELEMENT p (#PCDATA|bibref)* >
<!ELEMENT bibref EMPTY>
<!ATTLIST bibref ref IDREF #REQUIRED>

Exemplo de utilização
<p> para uma definição precisa, veja <bibref
ref='REC-xml-19980210'/> </p>
Modelo de conteúdo vazio

Observações:


quando o modelo de conteúdo de um
elemento é o modelo vazio, deve
obrigatoriamente obedecer a sintaxe
<nome/>
não é possível misturar EMPTY a uma outra
construção de modelo de conteúdo
XML 1.0
Exemplo de DTD
<?xml version="1.0"?>
<!ELEMENT EMAIL (TO+, FROM, CC*, BCC*, SUBJECT?, BODY?)>
<!ATTLIST EMAIL
LANGUAGE (Western|Greek|Latin|Universal) "Western"
ENCRYPTED CDATA #IMPLIED
PRIORITY (NORMAL|LOW|HIGH) "NORMAL">
<!ELEMENT TO (#PCDATA)>
<!ELEMENT FROM (#PCDATA)>
<!ELEMENT CC (#PCDATA)>
<!ELEMENT BCC (#PCDATA)>
<!ATTLIST BCC
HIDDEN CDATA #FIXED "TRUE">
<!ELEMENT SUBJECT (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ENTITY SIGNATURE "José Silva">
Exercício 1

Com o DTD anterior gere um
documento XML válido
Exemplo de um DTD de Banco
<!DOCTYPE banco [
<!ELEMENT banco ( ( conta | cliente | deposito)+)>
<!ELEMENT conta (numero agencia saldo)>
<! ELEMENT cliente(nomeCliente rua cidade)>
<! ELEMENT deposito (nomeCliente conta)>
<! ELEMENT conta (#PCDATA)>
<! ELEMENT agencia (#PCDATA)>
<! ELEMENT saldo(#PCDATA)>
<! ELEMENT nomeCliente (#PCDATA)>
<! ELEMENT rua(#PCDATA)>
<! ELEMENT cidade(#PCDATA)>
]>
XML 1.0: atributos
Declaração de atributos



Um atributo é um par nome-valor
associado a um elemento
uma declaração de atributos num DTD
permite especificar os atributos que
poderão ou deverão estar associados às
instâncias dos elementos.
Forma da declaração
<!ATTLIST nome-elemento nome-atributo
tipo-atributo declaração-default>
XML 1.0: atributos
Declaração de atributos

Exemplos
<!ELEMENT
<!ATTLIST
<!ATTLIST
<!ATTLIST
ex1
ex1
ex1
ex1
(#PCDATA)>
xml:lang NMTOKEN #IMPLIED >
target ID #implied >
nb (1 | 2 | 3) '1'>
equivalente a
<!ATTLIST ex1 xml:lang NMTOKEN #IMPLIED >
target ID #implied >
nb (1 | 2 | 3) '1'>
XML 1.0: atributos
Tipo de atributo

O tipo de atributo pode ser:






CDATA: o valor do atributo é uma cadeia de caracteres
ID ou IDREF: permite definir um identificador para um
documento
Uma lista de escolhas num conjunto de tokens, ou
identificadores lógicos
NMTOKEN ou NMTOKENS: abreviação de Name Token.
Permite ao atributo de ter seu valor de um conjunto de
nomes simbólicos.
ENTITY ou ENTITIES: permite que um atributo tome
como valor o nome de uma entidade externa não XML
NOTATION: define um atributo de notação
XML 1.0: atributos
Declaração default

Possui quatro formas




valor por default do atributo
#REQUIRED: cada instância deverá ter um
atributo deste nome. Não aceita valor default.
#IMPLIED: presença facultativa. Não aceita valor
default.
#FIXED: fixa o valor deste atributo para toda
instância.
XML 1.0: atributos
Exemplos (1)

Atributo CDATA
<!ATTLIST f att1 CDATA #FIXED '<toto>' >
O atributo att1 dos elementos de tipo f tem um valorr constante: o string
<toto>.

Atributo enumerado

Exemplo 1
<!ELEMENT data (#PCDATA) >
<!ATTLIST data formato (ANSI | ISO | BR) #REQUIRED>
<data formato= ’BR'> 24 Maio 1998 </data>
<data formato='ISO'> 1998-05-24 </data>
O atributo formato é obrigatório e deve ter valores do tipo ANSI, ISO ou BR

Exemplo 2
<!ELEMENT list (item,item+)>
<!ELEMENT item (list|#PCDATA)>
<!ATTLIST list type (ord | num | alpha) 'ord'>
<list type='alpha'>
<item> Maria </item>
<item> Pedro </item>
<item> José </item>
</list>
XML 1.0: atributos
Exemplos (2)

Atributos ID e IDREF
Estes tipos de atributos permitem de criar uma referência a um documento
<!–- declaração do element secao -->
<!–- o atributo de identificação de secao -->
<!–- target é optional -->
<!ELEMENT secao (#PCDATA|xref)* >
<!ATTLIST secao target ID #IMPLIED >
<!–- declaracao do elemento xref -->
<!ELEMENT xref EMPTY >
<!ATTLIST xref ref IDREF #REQUIRED>
<secao target='X321'> conteúdo de uma seção </secao>
<secao> outra seção. Faz referência à seção X321 <xref
ref='X321'/> </secao>
Obs.: nós não referenciamos de fato uma seção, mas um elemento do
documento que possui um atributo do tipo ID e cujo valor é X321.
Exemplo DTD Banco com
atributos
Trecho de um DTD de Banco com ID e IDREF
<!DOCTYPE banco-2[
… ...
<!ELEMENT conta (agencia, saldo)>
<!ATTLIST conta numero ID # REQUIRED
proprietarios IDREFS # REQUIRED>
<!ELEMENT cliente(nomeCliente, rua, cidade)>
<!ATTLIST cliente
clienteID
ID
# REQUIRED
contas
IDREFS # REQUIRED>
…
]>
Exemplo de XML para DTD
Banco com ID e IDREF
<banco-2>
<conta numero=“A-401” proprietarios=“C100 C102”>
<agencia> Centro </agencia>
<saldo>
500 </saldo>
</conta>
<cliente clienteID=“C100” contas=“A-401”>
<nomeCliente>José Silva </nomeCliente>
<rua> Juçaras </rua>
<cidade> Maceió</cidade>
</cliente>
<cliente clienteID=“C102” contas=“A-401 A-402”>
<nomeCliente> Maria Lima </nomeCliente>
<rua> Flores </rua>
<cidade> Salvador </cidade>
</cliente>
</banco-2>
XML 1.0: entidades
Entidades internas

Entidades pré-definidas


certos caracteres, como < > & ' " não podem
ser utilizados dentro do texto de um documento
estes caracteres devem ser representados por
seus códigos pré-definidos, chamadas entidades
pré-definidas
<: &lt;
>: &gt;
&: &amp;
XML 1.0: entidades
Entidades internas

Entidades definidas pelo usuário


é possível declarar as entidades dentro do DTD
esta declaração tem a forma
<!ENTITY nome-entidade "valor-entidade">

Exemplo
a declaração seguinte
<!DOCTYPE toto [
<!ENTITY copyright "&#x00A9; Editions
titi">
]>
<toto> &copyright; </toto>
produzirá
© Editions titi
observação: 00A9 é o código Unicode do caracter ©
Entidades externas endereçadas por
URL

Exemplo
<?xml version='1.0' ?>
<!DOCTYPE livro [
<!ENTITY capitulo1 SYSTEM "chap1.xml">
<!ENTITY capitulo2 SYSTEM "chap2.xml">
<!ENTITY autor "toto">
]>
<livro>
<titulo> XML para idiotas </titulo>
<autor> &autor; </autor>
<intro> Era uma vez uma Web… </intro>
&capitulo1;
&capitulo2;
</livro>

Restrição: as entidades externas devem ser
documentos bem formados
Notações e entidades não XML

Exemplo
<!DOCTYPE exemplo [
<!NOTATION jpeg SYSTEM "/usr/local/bin/xview">
<!ENTITY foto-ferias SYSTEM "./fotos/foto1.jpg"
NDATA jpeg>
<!ELEMENT exemplo (foto)>
<!ELEMENT foto EMPTY>
<!ATTLIST foto img ENTITY #REQUIRED>
<exemplo>
<foto img='foto-ferias'/>
</exemplo>
]>
 A declaração de notação associa ao formato jpeg a aplicação
xview que poderá ser utilizada em extensão da aplicação XML.
 A declaração da entidade foto-ferias indica que o conteúdo
dos dados está situado no arquivo foto1.jpg
 A palavra-chave NDATA indica que este arquivo é de um formato
não XML
XML 1.0: Exemplos

Exemplo
<?xml version='1.0' ?>
<!DOCTYPE db [
<!ELEMENT db (pessoa*)>
<!ELEMENT pessoa (nome, idade, email)>
<!ELEMENT nome (#PCDATA)>
<!ELEMENT idade (#PCDATA)>
<!ELEMENT email (#PCDATA)>
]>
<db>
<pessoa> <nome> Pedro Maia </nome>
<idade> 33 </idade>
<email> [email protected] </email>
</pessoa>
<pessoa> <nome> Ana Maria </nome>
<idade> 24 </idade>
<email> [email protected] </email>
</pessoa>
<pessoa> . . . </pessoa>
</db>
XML 1.0: Exemplos

DTDs como esquemas
Exemplo
Seja o esquema r1(a, b, c) e r2 (c, e)
<db> <r1> <a> a1 </a> <b> b1 </b> <c> c1 </c>
</r1>
<r1> <a> a2 </a> <b> b2 </b> <c> c2 </c>
</r1>
<r2> <c> c1 </c> <d> d1 </d> </r2>
<r2> <c> c2 </c> <d> d3 </d> </r2>
</db>
<!DOCTYPE db[
<!ELEMENT (r1*|r2*)>
<!ELEMENT r1(a,b,c)>
<!ELEMENT r2(c,d)>
<!ELEMENT a (#PCDATA)>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT d (#PCDATA)>
]>
XML 1.0: Exemplos

Exercício 2: Dado o documento XML crie um DTD para
o mesmo
<?xml version='1.0' ?>
<!DOCTYPE livro SYSTEM "livro.dtd">
<livro>
<titulo> XML e Java </titulo>
<autor> João Silva </autor>
<conteudo>
<capitulo focus="XML">
Introdução
</capitulo>
<capitulo focus="XML"> DTD </capitulo>
<capitulo focus="XML"> Elementos
</capitulo>
<capitulo focus="Java"> SAX </capitulo>
<capitulo focus="Java"> DOM </capitulo>
<conteudo>
<bibliografia> bla bla bla </bibliografia>
<copyright> &ufcgCopyright; </copyright>
</livro>
Limitações de DTDs como
esquemas





DTD impõe ordem
Não existe a noção de tipos de dados atômicos (int,
float, etc)
Não podemos especificar uma faixa de valores de
domínio
IDREF não é relacionado a um tipo.
Tipos são associados com tags => elementos com
mesmo nome porém pertencendo a diferentes tipos
(nome de pessoa e nome de um curso) não podem
usar o mesmo elemento nome. Nesta caso ou
redefinimos nomePessoa e nomeCurso ou usamo
namespaces com os qualificadores, pessoa:nome e
curso:nome
Download

Dados Semiestruturados e XML