• Nenhum resultado encontrado

Keli Cristina Manini Susane Schmidt. Uma Ferramenta para Geração de Esquemas XML a partir de Documentos XML

N/A
N/A
Protected

Academic year: 2021

Share "Keli Cristina Manini Susane Schmidt. Uma Ferramenta para Geração de Esquemas XML a partir de Documentos XML"

Copied!
36
0
0

Texto

(1)

Uma Ferramenta para Gera¸

ao de

Esquemas XML a partir de Documentos

XML

Florian´opolis - SC 2006

(2)

Susane Schmidt

Uma Ferramenta para Gera¸

ao de

Esquemas XML a partir de Documentos

XML

Trabalho apresentado como requisito para gradua¸c˜ao em Bacharelado em Ciˆencias da Computa¸c˜ao

Orientador:

Ronaldo S. Mello

Co-orientador:

Olinto Jos´

e Varela Furtado

Universidade Federal de Santa Catarina - UFSC Departamento de Inform´atica e Estat´ıstica - INE

Florian´opolis - SC 2006

(3)

Lista de Figuras

1 Introdu¸c˜ao p. 5

2 XML - eXtensible Markup Language p. 8

3 Esquemas XML p. 11

3.1 DTD - Document Type Description . . . p. 11 3.2 XML Schema . . . p. 13

4 Gram´aticas p. 16

5 Trabalhos Relacionados p. 19 5.1 XTRACT . . . p. 19 5.2 DataGuides . . . p. 20 5.3 Extra¸c˜ao de esquemas de dados XML: Uma Abordagem de Gram´atica

de Inferˆencia . . . p. 22

6 Processo do Trabalho da Ferramenta p. 28

Anexo A -- Codigos p. 34

(4)

Lista de Figuras

1 Entradas e Sa´ıdas da abordagem BinXs . . . p. 6 2 Exemplo de uma Estrutura XML . . . p. 9 3 Exemplo de elementos em um documento XML . . . p. 9 4 Exemplo de esquema DTD . . . p. 10 5 Exemplo de esquema em XML Schema . . . p. 10 6 Sintaxe e exemplo de uma declara¸c˜ao de atributo em uma DTD . . . . p. 12 7 Sintaxe e exemplo de uma declara¸c˜ao de entidade . . . p. 12 8 Exemplo Deriva¸c˜ao por Extens˜ao . . . p. 14 9 Exemplo de defini¸c˜ao de Elemento Simples na XML Schema . . . p. 14 10 Exemplo de Defini¸c˜ao de Elemento Complexo na XML Schema . . . p. 15 11 Exemplo Elemento Complexo de XML Schema . . . p. 15 12 Exemplo de um subconjunto da gram´atica portuguesa . . . p. 17 13 Exemplo de um subconjunto da gram´atica portuguesa segundo outra

nota¸c˜ao . . . p. 17 14 Exemplo de uma Gram´atica Regular . . . p. 17 15 Exemplo documento OEM . . . p. 21 16 Exemplo de documento XML para OEM do Exemplo Locais de

Ali-menta¸c˜ao . . . p. 21 17 Exemplo DataGuide . . . p. 22 18 Exemplo XML Schema para OEM do Exemplo Locais de Alimenta¸c˜ao . p. 23 19 Exemplo de documento XML sobre o Campeonato Europel de Futebol p. 24 20 Exemplo XML Schema Campeonato Europel de Futebol . . . p. 25

(5)

24 Algoritimo Passo 2.2 . . . p. 26 25 Merge de N˜ao Terminais de Estrutura Repetida . . . p. 27 26 Algoritimo Passo 2.3 . . . p. 27 27 Algoritimo Passo 3 . . . p. 27 28 Diagrama da Ferramenta Proposta . . . p. 31 29 Gram´atica Gen´erica . . . p. 32 30 Exemplo Primeiro Documento a entrar no Processo . . . p. 32 31 Exemplo Segundo Documento a entrar no Processo . . . p. 32 32 Gram´atica Espec´ıfica da Primeira Itera¸c˜ao. . . p. 32 33 Gram´atica Espec´ıfica da Segunda Itera¸c˜ao. . . p. 33 34 XML Schema Gerado com Base no Exemplo. . . p. 33

(6)

1

Introdu¸

ao

XML (Extensible Markup Language) emergiu como um novo padr˜ao para troca e ma-nipula¸c˜ao de dados descritivos de documentos estruturados. (1) Este fato ocorreu devido a grande quantidade de vantagens que este padr˜ao de linguagem representa: o formato XML ´e auto-descritivo; documentos XML formam cole¸c˜oes de elementos aninhados hie-rarquicamente; XML ´e um arquivo texto,n˜ao ´e volumoso, facilita a transferˆencia de dados entre sistemas e a estrutura interna destes documentos pode ser padronizada em esquemas que auxiliam na organiza¸c˜ao, clareza e utiliza¸c˜ao destes. Por estes e demais motivos, a comunidade de pesquisa em bancos de dados tem investido cada vez mais no estudo de XML e novas t´ecnicas e ferramentas para o seu gerenciamento vˆem sendo desenvolvidas. A especifica¸c˜ao de um esquema para um documento XML ´e importante pois permite a valida¸c˜ao de dados XML baseados neste esquema. A partir de um esquema tamb´em ´e poss´ıvel verificar a equivalˆencia dos dados, e ent˜ao unificar dados de documentos XML com a mesma estrutura. Esta tarefa ´e importante em sistemas que realizam integra¸c˜ao de dados na Web. Outra vantagem ´e que a existˆencia de um esquema facilita o mapea-mento de dados XML para esquemas de banco de dados, possibilitando a formula¸c˜ao e o processamento otimizado de consultas.

Apesar destas vantagens, a maioria dos documentos XML dispon´ıveis em computa-dores n˜ao possui um esquema associado, e mesmo que o possua, ´e prov´avel que estes esquemas n˜ao sejam idˆenticos, pois foram definidos por pessoas ou sistemas diferentes. Em fun¸c˜ao disto, este trabalho prop˜oe uma ferramenta que procura solucionar, mesmo que parcialmente, o problema da falta de esquemas, j´a que a integra¸c˜ao de dados XML tornou-se relevante devido a grande quantidade de dados XML dispon´ıveis na Web atu-almente e para que tal integra¸c˜ao seja facilitada ´e importante que se conhe¸ca o esquema de cada documento. Al´em das justificativas citadas anteriormente, essa ferramenta ter´a aplica¸c˜ao direta na abordagem BInXS (Bottom-Up Integration of XML Schemata). Esta abordagem BInXS foi proposta por (2) e realiza a integra¸c˜ao semˆantica de esquemas XML com o objetivo de permitir o acesso transparente a dados XML em fontes de dados na

(7)

insere a ferramenta proposta neste trabalho, uma vez que os documentos XML nem sempre s˜ao acompanhadas de seus esquemas XML. A figura 1 monstra as entradas e sa´ıdas do processo realizado pelo BinXs. As entradas s˜ao documentos XML de fontes de dados da Web e seus esquemas. A sa´ıda ´e o esqeuma global, a n´ıvel conceitual, que resulta da integra¸c˜ao semˆantica dos esquemas XML. Este trabalho age como um facilitador para a enrada do processo, gerando esquemas XML para um conjunto de documentos que n˜ao possuem um esquema associado.

Figura 1: Entradas e Sa´ıdas da abordagem BinXs

Algumas solu¸c˜oes j´a foram desenvolvidas no sentido de tentar sanar o problema an-teriormente mencionado (3), (4), (5). Por´em, elas geram o esquema a partir de um ´unico documento XML. O objetivo da ferramenta proposta ´e permitir que o usu´ario possa infor-mar v´arios documentos XML de uma mesma autoria ou de uma mesma fonte de dados, e a partir destes documentos seja gerado um esquema XML ´unico e completo. No entanto, um dos maiores problemas na forma¸c˜ao de um esquema XML est´a relacionado a alcan¸car um esquema que consiga ser completo e compacto, j´a que estas s˜ao caracter´ısticas

(8)

inver-samente proporcionais: esquemas tendem a ser ou muito volumosos ou incompletos. (3) Encontrar um esquema XML que consiga balancear estas duas caracter´ısticas ´e um dos desafios a ser solucionados neste trabalho.

No pr´oximo cap´ıtulo ´e dada uma breve introdu¸c˜ao a linguagem XML, mostrando um pouco de sua estrutura e funcionalidade. No cap´ıtulo 3 ´e apresentado o conceito de esquemas XML, com aprofundamento dos tipos de esquemas XML recomendados pela W3C. Para melhor entendimento dos conceitos introduzidos em se¸c˜oes posteriores.

No cap´ıtulo 4, ´e apresentado o conceito de gram´aticas. J´a no cap´ıtulo 5, s˜ao apresen-tados alguns trabalhos relacionados contribuem com o desenvolvimento deste trabalho. No cap´ıtulo 6 ´e apresentada a proposta inicial da ferramenta e um cronograma relacio-nando as atividades necess´arias para a conclus˜ao do trabalho com o tempo restante para o seu desenvolvimento.

(9)

2

XML - eXtensible Markup

Language

XML( eXtensible Markup Language), padr˜ao popular do cons´orcio W3C(1), ´e um formato para troca, representa¸c˜ao e manipula¸c˜ao de documentos estruturados e semi-estruturados (1). Como o pr´oprio nome diz, ´e uma linguagem de marca¸c˜ao com formato aberto, isto ´e, o pr´oprio desenvolvedor define as tags que ser˜ao utilizadas para construir o documento (6). Pela sua versatilidade e capacidade de extens˜ao, XML ´e, na verdade, uma meta-linguagem que serve de base para a defini¸c˜ao de novas linguagens de marca¸c˜ao (7). Um documento XML ´e onde s˜ao definidos os dados XML. Estes documentos XML formam uma cole¸c˜ao de elementos tags aninhados hierarquicamente que servem de deli-mitadores de informa¸c˜ao. O conceito de tags ´e tamb´em utilizado na linguagem HTML (Hyper Text Markup Language). Apesar das semelhan¸cas existentes nessas duas lingua-gens, existem diferen¸cas fundamentais. Uma delas ´e em rela¸c˜ao ao uso das tags, que s˜ao pr´e-definidas em um documento HTML, enquanto possuem valor semˆantico na lingua-gem XML. Outra diferen¸ca importante est´a relacionada com a fun¸c˜ao espec´ıfica de cada linguagem. Enquanto a fun¸c˜ao da linguagem HTML est´a dividida entre estruturar o do-cumento e permitir a apresenta¸c˜ao dos seus dados em um software navegador na internet, XML preocupa-se com a estrutura¸c˜ao da informa¸c˜ao(6).

Cada documento XML possui uma estrutura l´ogica e f´ısica. A estrutura f´ısica permite a defini¸c˜ao de componentes de documentos chamados entidades, que podem ser nomea-das ou armazenanomea-das separadamente (7). A estrutura l´ogica ´e composta de declara¸c˜oes, elementos, coment´arios, enfim, tudo o que estiver indicado no documento atrav´es de marca¸c˜ao(6).

A figura 2 mostra parte da estrutura de um documento XML. Os documentos XML caracterizam-se por apresentar uma estrutura hier´arquica de elementos, come¸cando com um elemento raiz. Os elementos podem ser do tipo simples ou complexo. Elementos complexos cont´em sub-elementos (elementos filhos), que devem estar aninhados com seus

(10)

<NOTA n´umero="1"> <PARA>Professor</PARA> <DE>Keli e Susane</DE>

<CABECALHO>Mensagem</CABECALHO>

<CORPO>N~ao esque¸ca de dar uma boa nota!</CORPO> </NOTA>

Figura 2: Exemplo de uma Estrutura XML

”pais”(8), como mostra a figura 3. Os elementos identificam objetos do documento XML. Por este motivo, o nome dado aos elementos deve estar de acordo com o conte´udo respec-tivo e com a inten¸c˜ao do dom´ınio de aplica¸c˜ao para o qual o ducumento XML ´e criado. <raiz>

<filhos>

<subfilho>...</subfilho> </filhos>

</raiz>

Figura 3: Exemplo de elementos em um documento XML

Para incluir informa¸c˜oes adicionais sobre os elementos s˜ao utilizados atributos, que s˜ao declarados na tag de abertura do elemento, como pode-se observar na figura 2 que tem o atributo n´umero como uma propriedade do elemento Nota.

Outra caracter´ıstica que determina a forma do documento XML est´a ligada `a no¸c˜ao de esquema, que pode opcionalmente acompanhar um documento XML (3). Um esquema XML tem como fun¸c˜ao descrever a estrutura interna de um documento XML.

Existem dois tipos de esquemas: DTD e XML Schema As figuras 4 e 5 representam respectivamente a estrutura do dado XML da figura 2, descritos atrav´es de uma DTD e de um XML Schema. Estas figuras definem um elemento complexo note e sua estrutura que ´e composta de um atributo e de elementos simples (to, from, heading e body). Os esquemas XML e suas estruturas s˜ao detalhados no pr´oximo cap´ıtulo.

¡xsd:element name=’biblioteca’¿ ¡xsd:complexType¿ ¡xsd:element name=’livro’ type

= ’TipoLivro’/¿ ¡/xsd:complexType¿ ¡xsd:complexType name=’TipoLivro’¿ ¡element name=’titulo’ type = ’String’/¿ ¡xsd:complexType¿

(11)

<?xml version-’’1.0’’?> <!DOCTYPE NOTA [

<!ELEMENT NOTA (PARA, DE, CABECALHO, CORPO)> <!ATTLIST NOTA numero PCDATA #IMPLIED>

<!ELEMENT PARA (#PCDATA)> <!ELEMENT DE (#PCDATA)>

<!ELEMENT CABECALHO (#PCDATA)> <!ELEMENT CORPO (#PCDATA)> ]>

Figura 4: Exemplo de esquema DTD

<?xml version=’1.0’ encoding = ’UTF-8’?>

<xsd:schema xmlns:xsd=’http://www.w3.org/2000/10/XMLSchema’> <xsd:complexType>

<xsd:element name=’nota’ type = ’TipoNota’/> </xsd:complexType>

<xsd:attribute name=’numero’ type=’xs:integer’> <xsd:complexType name=’TipoLivro’>

<xsd:sequence>

<xsd: element name = ’PARA’ Type = ’xsd:string’/> <xsd: element name = ’DE’ Type = ’xsd:string’/>

<xsd: element name = ’CABECALHO’ Type = ’xsd:string’/> <xsd: element name = ’CORPO’ Type = ’xsd:string’/> </xsd:sequence>

</xsd:complexType> </xsd:schema>

(12)

3

Esquemas XML

Esquemas XML definem a forma como um documento XML pode ser estruturado. Atrav´es do uso destas estruturas, desenvolvedores diferentes podem interagir trocando ou integrando documentos de dados no formato XML, devido ao fato destes diferentes documentos possu´ırem o mesmo esquema. Sistemas de integra¸c˜ao de dados XML, como o BInXS, comentado anteriormente, vˆem sendo propostos por pesquisadores e desenvolve-dores para permitirem vis˜oes unificadas de dados na Web. Neste contexto, a declara¸c˜ao de esquemas facilita a fus˜ao de tais documentos, uma vez que suas estruturas s˜ao conhecidas. Atualmente existem duas recomenta¸c˜oes da W3C para especifica¸c˜ao de esquemas para XML: DTD e XML Schema. Essas recomenda¸c˜oes s˜ao descritas a seguir.

3.1

DTD - Document Type Description

Uma DTD define as instru¸c˜oes que s˜ao enviadas ao parser XML para o documento que est´a para ser analisado(6).Essas regras definem o tipo dos elementos que podem ser usados e a hierarquia e granularidade do texto(7).

Uma DTD define o conte´udo de um elemento no formato de express˜oes regulares (4). Uma DTD ´e composta por um conjunto de declara¸c˜oes. Cada declara¸c˜ao est´a de acordo com o formato de marca¸c˜ao0 <! . . . >0 e seus tipos principais s˜ao: ELEMENT (defini¸c˜ao de elemento), ATTLIST (defini¸c˜ao de atributo) e ENTITY (defini¸c˜ao de entidade).

Os elementos definem os blocos principais de um documento XML. Eles podem conter texto, outros elementos, ou serem vazios.(8) Na declara¸c˜ao de um elemento ´e poss´ıvel tamb´em definir a quantidade de ocorrˆencias de seus sub-elementos:

• Uma ´unica ocorrˆencia: <!ELEMENT element-name (child-name)>

• M´ınimo de uma ocorrˆencia: <!ELEMENT element-name (child-name+)> • Zero ou mais ocorrˆencias: <!ELEMENT element-name (child-name*)>

(13)

name2) >

Os atributos contˆem informa¸c˜oes extras sobre os elementos. Eles est˜ao sempre lo-calizados dentro de uma tag de um elemento e definem sempre um par (nome/valor), como pode ser observado na figura 6 (8). O primeiro parˆametro na declara¸c˜ao ´e o nome seguido do tipo do atributo, cujos principais tipos s˜ao: CDATA (cadeia de caracteres), NMTOKEN (um identificador), NMTOKENS (lista de NMTOKEN), ENTITY (en-tidade),ENTITIES (lista de entidades), ID (id ´unica), IDREF (referˆencai ao id de um elemento j´a existente), IDREFS (lista de IDREF)(7). O parˆametro final especifica um valor que ´e dado ao atributo quando o autor do documento n˜ao informa um valor (7).

Outras restri¸c˜oes que podem ser definidas em um atributo s˜ao: #REQUIRED(o atributo ´e obrigat´orio), #IMPLIED (o atributo ´e opcional no elemento) e #FIXED (o valor do atributo ´e fixo).(8)

<!ATTLIST nome-do-elemento nome-do-atributo tipo-do-atributo valor-padr~ao> Exemplo:

DTD: <!ATTLIST pagamento type (cheque|dinheiro)’’dinheiro’’> XML: <pagamento type=’’cheque’’> ou

<pagamento type=’’dinheiro’’>

Figura 6: Sintaxe e exemplo de uma declara¸c˜ao de atributo em uma DTD

As entidades, demonstradas na figura 7, s˜ao vari´aveis usadas para definir textos co-muns. Uma entidade ´e utilizada principalmente para evitar a repeti¸c˜ao de textos similares. Isto reduz a carga de trabalho na defini¸c˜ao do esquema, faz com que apare¸cam menos erros e facilita o entendimento da estrutura da DTD. (7)

<!ENTITY nome da entidade ‘‘valor da entidade’’> Exemplo:

DTD: <!ENTITY livro-name ‘‘C´odigo da Vince’’> <!ENTITY autor ‘‘Dan Brown’’>

XML: <livro>&livro-name;&autor;</livro>

(14)

3.2

XML Schema

A recomenda¸c˜ao XML SCHEMA foi aprovada pela W3C em mar¸co de 2001 (1). Surgiu para ser o sucessor de esquemas DTDs e por isso possui todas as funcionalidades desta e ainda caracter´ısticas espec´ıficas que a tornam mais expressiva. Diferente de DTDs, este tipo de esquema ´e estruturado seguindo o mesmo formato sint´atico da XML, ou seja, um documento XML Schema ´e um documento XML. Isto possibilita a utiliza¸c˜ao de parsers XML para fazer a valida¸c˜ao dos esquemas escritos em XML SCHEMA (6).

Outras caracter´ısticas importantes ausentes nas DTDs e presentes nesta recomenda¸c˜ao s˜ao: a possibilidade de definir restri¸c˜oes masi detalhadas para valores de dados, o meca-nismo de deriva¸c˜ao e a capacidade de definir tipos de dados para elementos e atributos.

Dentre as caracter´ısticas citadas anteriormente destaca-se o mecanismo de deriva¸c˜ao. Este processo possibilita aos desenvolvedores um controle maior sobre aqueles disponi-bilizados pelo padr˜ao(4),ou seja, o uso de deriva¸c˜oes possibilita ao desenvolvedor criar restri¸c˜oes e incluir/adicionar novos elementos e atributos a defini¸c˜oes de tipos j´a existen-tes. Dois tipos de deriva¸c˜ao permitidos: por restri¸c˜ao e por extens˜ao.

As deriva¸c˜oes por restri¸c˜ao s˜ao declaradas atrav´es do uso do elemento < restriction > e possuem propriedades que definem tamanho, padr˜ao, m´axima e min´ıma ocorrˆencia, entre outros. Um exemplo de restri¸c˜ao ´e demonstrado na figura 11: o elemento simples SEXO possui dois valores fixos poss´ıveis: Masculino ou Feminino.

No caso das deriva¸c˜oes por extens˜ao, a declara¸c˜ao ´e feita atrav´es do elemento < complexContent > seguido pelo elemento extension, utilizando-se do atributo base do elemento para indicar o tipo que est´a sendo estendido. Um exemplo desta deriva¸c˜ao ´e descrito na figura 8, onde o tipo NovoContato ´e uma extens˜ao do tipo Contato.

Os elementos declarados em XML SCHEMA podem ser de tipos de dados simples ou complexos. Os primeiros s˜ao os elementos formados somente por texto, como podemos observar na figura 9, onde ´e definido um elemento ’nome’ cujo tipo de dado simples ´e String. Os complexos s˜ao aqueles que possuem outros elementos aninhados dentro de sua estrutura e/ou atributos que determinam as caracter´ısticas dos dados inseridos no documento, como mostra a figura 10. Nesta figura ´e detectado um elemento complexo EMPREGADO formado pelas tags de elementos simples NOME e SOBRENOME ambas do tipo String, mais um elemento simples salario do tipo float.

(15)

<element name = ’nome’ type = ’xsd:string’/> <element name = ’telefone’ type = ’xsd:string’/> </sequence>

</complexType>

Tipo derivado por extens~ao:

<complexType name = ’NovoContato’> <complexContent>

<extension base = ’Contato’> <sequence>

<element name = ’celular’ type = ’xsd:string’/> </sequence>

</extension> </complexContent> </complexType>

Figura 8: Exemplo Deriva¸c˜ao por Extens˜ao <xs:element name=´nome´ type=´xs:string´>

Figura 9: Exemplo de defini¸c˜ao de Elemento Simples na XML Schema

de atributos para tipos e elementos do esquema. Devido `a existˆencia destes ´e poss´ıvel de-fini¸c˜ao de diferentes tipos de dados simples (String, Decimal, Integer, Float Boolean, Date e Time). Outra contribui¸c˜ao importante ´e a possibilidade de definir algumas restri¸c˜oes semelhantes `as utilizadas em Bancos de Dados tais como: conte´udo, tamanho, etc.

A figura 11 ´e um exemplo de um XML Schema com todas as caracter´ısticas presentes nestes esquemas: elementos complexos, restri¸c˜oes, atributos e namespace, dentre outras. Ela mostra o Schema de um documento XML formado por uma tag raiz PESSOAS e seus filhos, compostos de um elemento complexo (linha 4) que possui um elemento simples PESSOA com um atributo maxOccurs= unbounded, indicando que pode haver in´umeras ocorrˆencias deste sub-elemento. Outro elemento complexo ´e definido dentro de PESSOA. Ele possui dois elementos simples de tipo String. Os atributos de m´ınima e m´axima ocorrˆencia podem ser pr´e-fixados, como definido no elemento NOMEFILHO da linha 10.

(16)

<xs: element name = ´EMPREGADO´> <xs:complexType>

<xs:sequence>

<xs:element name=´NOME´ type=´xs:string´/> < xs:element name=’SOBRENOME’ type=´xs:string´> </xs:sequence >

</xs:complexType> </xs:element>

Figura 10: Exemplo de Defini¸c˜ao de Elemento Complexo na XML Schema

1 <?xml version=’1.0’ encoding=’ISO-8859-1’>

2 <xs:schema xmlns:xs=’http://www.w3.org/2001/XMLSchema 1 elementFormDefault=’qualified’’> 3 <xs: element name = ’PESSOAS’>

4 <xs:complexType> 5 <xs:sequence>

6 <xs:element name=´PESSOA´ maxOccurs=’unbounded’> 7 <xs:complextype>

8 <xs:sequence>

9 < xs:element name=’NOMECOMPLETO’ type=´xs:string´/> 10 < xs:element name=’NOMEFILHO’ type=´xs:string´

minOccurs=’0’ maxOccurs=’5’/> 11 </xs:sequence> 12 </xs:complexType> 13 </xs:element> 14 </xs:sequence > 15 </xs:complexType> 16 <xs:simpleType> 17 <xs:element name=’SEXO’>

18 <xs:restriction base = ’xsd:string’> 19 <xs:enumeration value=’masculino’> 20 <xs:enumeration value=’feminino’> 21 <xs:restriction> 22 </xs:simpleType> 23 </xs:element> 24 </xs:schema>

(17)

4

Gram´

aticas

A palavra gram´atica e alguns conceitos relacionados ser˜ao vistos com freq¨uˆencia nos pr´oximos cap´ıtulos.Por esta raz˜ao, este cap´ıtulo apresenta os conPara melhor entendi-mento deste conceito, ´e necess´ario anteriormente explicar outras defini¸c˜oes, como por exemplo, o conceito de linguagem. Uma linguagem, segundo o Dicion´ario Aur´elio ”´e o uso da palavra articulada ou escrita como meio de express˜ao e comunica¸c˜ao entre pes-soas”. Matematicamente falando, ´e qualquer conjunto ou subconjunto de senten¸cas sobre um alfabeto que podem ser derivadas a partir de um s´ımbolo inicial da gram´atica que a representa. Um exemplo de linguagem ´e o XML (eXtensible Markup Language).

O alfabeto ´e um conjunto finito de s´ımbolos, entidades abstratadas n˜ao definidas formalmente, como por exemplo, as letras e os d´ıgitos. A gram´atica define uma estrutura sobre este alfabeto, de forma a permitir que apenas determinadas combina¸c˜oes sejam v´alidas, ou seja, sejam consideradas senten¸cas (seq¨uˆencia finita de s´ımbolos justapostos), definindo assim a linguagem que representa (9).

Formalmente falando, uma gram´atica ´e uma qu´adrupla ordenada G=(V,T,P,S) onde: - V ´e um conjunto finito de s´ımbolos vari´aveis ou n˜ao-terminais; - T ´e um conjunto de s´ımbolos terminais disjunto de V; - P ´e um conjunto finito de pares, demoninados regras de produ¸c˜ao tal que a primeira componente ´e palavra de (VS

T)+ e a segunda componente ´e palavra de (V S

T)∗; - S ´e um elemento de V denominado - vari´avel inicial ;

As regras de produ¸c˜ao definem as condi¸c˜oes de gera¸c˜ao das palavras da linguagem, como pode-se observar na figura 12.A partir desta figura pode-se retirar a seguinte nota¸c˜ao:

\textbf{<....>} : categoria sint´atica ou gramatical; \textbf{::=} : definido por;

\textbf{|} : alternativa (ou);

(18)

<senten¸ca>::= <sujeito> <predicado>

<sujeito>::= <substantivo> | <artigo> <substantivo> | <artigo> <adjetivo> <substantivo> <predicado>::= <verbo> <objeto>

<substantivo>::= Jo~ao | Maria | cachorro | livro <artigo>::= o | a

<adjetivo>::= pequeno | bom | bela <verbo>::= morde | olha| l^e

<objeto>::= <substantivo> | <artigo> <substantivo> | <artigo> <adjetivo> <substantivo>

Figura 12: Exemplo de um subconjunto da gram´atica portuguesa

Uma forma mais simples de descrever esta gram´atica ´e demonstrado na figura 13.Nesta nota¸c˜ao, as categorias s˜ao representadas por letras, para facilitar a escrita e ao inv´es de ::= usa-se ⇒.

X ⇒ SP S ⇒ B — AB — ADB P ⇒ VO B ⇒ Jo˜ao — Maria — cachorro — livro A ⇒ o — a D ⇒ pequeno — bom — bela V ⇒ morde — olha— lˆe O ⇒ B — AB — ADB Figura 13: Exemplo de um subconjunto da gram´atica portuguesa segundo outra nota¸c˜ao

Existem 4 tipos de linguagens: linguagem regular (tipo 3), livre de contexto (tipo2), sens´ıveis ao contexto (tipo 1)e enumer´aveis recursivamente (tipo 0).

A linguagem regular ´e a mais restrita e limitada das linguagens, sendo representada por formalismos de pouca complexidade, grande eficiˆencia e f´acil implementa¸c˜ao. Toda linguagem regular ´e uma gram´atica livre de contexto, por´em as produ¸c˜oes das gram´aticas regulares s˜ao mais simples do que as produ¸c˜oes das livres de contexto, sendo sempre do tipo linear, como pode ser observado na figura 14.

S ⇒ Aa — Ba A ⇒ Aa — a —  B ⇒ Bb — b

Figura 14: Exemplo de uma Gram´atica Regular

A linguagem Simples de Contexto ´e um pouco mais ampla que a regular, tratando, adequadamente, quest˜oes como parˆenteses balanceados, constru¸c˜oes bloco-estruturadas, entre outras fun¸c˜oes de linguagens de programa¸c˜ao. os algor´ıtmos reconhecedores e ge-radores que implementam esta linguagem s˜ao relativamente simples e de boa eficiˆencia. Permitem produ¸c˜oes do tipo S ⇒ aSb e aabb , ou seja, produ¸c˜oes com dois ou mais n˜ao-terminais ou terminais juntos .

As linguagens Sens´ıveis ao Contexto abrangem as Livres de Contexto, permitem ainda produ¸c˜oes como SA ⇒ aSb e aabb, com mais de um n˜ao-terminal como regra de produ¸c˜ao.

(19)
(20)

5

Trabalhos Relacionados

Este cap´ıtulo apresenta alguns trabalhos relacionados com a extra¸c˜ao de esquemas XML a partir de documentos XML. A partir dos estudos realizados com base nestes trabalhos pretende-se escolher as melhores e mais eficientes t´ecnicas, e estas podem ser ainda adaptadas para o desenvolvimento da ferramenta desejada neste trabalho.

5.1

XTRACT

Este trabalho busca encontrar o DTD perfeito para um documento XML, combinando precis˜ao e intui¸c˜ao, atrav´es de uma seq¨uˆencia de passos que envolvem a procura de padr˜oes nas seq¨uˆencias de entrada , seguida de uma fatora¸c˜ao dos poss´ıveis candidatos gerados no passo anterior e concluindo com a aplica¸c˜ao do princ´ıpio da Descri¸c˜ao do Tamanho M´ınimo(3).

No primeiro passo, chamado de generaliza¸c˜ao, s˜ao empregados algoritmos heur´ısticos para encontrar padr˜oes em cada seq¨uˆencia de entrada e ent˜ao substitu´ı-las por express˜oes regulares apropriadas para produzir candidatos mais gerais. O principal objetivo deste passo ´e introduzir metacaracteres (∗, +, ?, ...) para produzir sub-express˜oes que gerem os padr˜oes observados nas seq¨uˆencias de entrada. Isto ´e realizado atrav´es da descoberta de freq¨uˆencias e de ocorrˆencias pr´oximas de subseq¨uˆencias e s´ımbolos em cada seq¨uˆencia de entrada. Por exemplo, se tivermos como entrada a seq¨uˆencia abababcababc, este passo vai verificar que a seq¨uˆencia ab utiliza dois campos e a substituir´a pela express˜ao A1. Como resultado teremos A1cA1c, que finalmente ´e substitu´ıdo pelo termo ((ab) ∗ c)

O segundo passo, conhecido como fatora¸c˜ao, herda os candidatos a DTD obtidos no passo anterior e tenta torn´a-los mais concisos atrav´es da aplica¸c˜ao de t´ecnicas adaptadas da literatura de otimiza¸c˜ao l´ogica. A fatora¸c˜ao ´e usada para tentar obter uma DTD de me-nor tamanho e conseq¨uentemente de melhor qualidade. Suponha que temos como entrada a seq¨uˆencia I = ab, abab, ac, ad, bc, bd, bbd, bbbbe e o m´odulo da generaliza¸c˜ao gerou o se-guinte resultado: G = I ∪ (ab)∗, (a|b)∗, b ∗ d, b ∗ e, que s˜ao gram´aticas mais gen´ericas para

(21)

No terceiro e mais importante passo ´e aplicado o princ´ıpio da Descri¸c˜ao do tamanho M´ınimo. Este mecanismo classifica cada candidato a DTD com base no custo atribu´ıdo a cada DTD. Este custo depende do tamanho da gram´atica, em bits, que ´e o respons´avel para encontrar uma DTD concisa, e do tamanho dos dados, em bits, que define a precis˜ao da candidata.Por exemplo, considere a entrada I = ab, abab, ababab e considere que entre os resultados encontrados estejam (1) ab|abab|ababab e (2) (ab)∗. O c´alculo do custo do resultado para 1 ´e 17 bits, sendo 14 para codificar a DTD (quantidade de caracteres) e +3 para codificar a seq¨uˆencia de entrada (1 caractere para cada posi¸c˜ao de entrada). J´a o c´alculo do resultado para 2 ´e 8 bits, sendo 5 para a codifica¸c˜ao do DTD e 3 para codifica¸c˜ao da seq¨uˆencia de entrada (necess´ario para especificar o n´umero de repeti¸c˜oes do termo ab para cada seq¨uˆencia). (3) Neste caso, a DTD escolhida ´e o n´umero 2, pois ela conseguiu abranger toda a seq¨uˆencia de entrada e, ao mesmo tempo, ´e mais compacta. Segundo o trabalho, os resultados obtidos s˜ao satisfat´orios, j´a que sempre consegue-se encontrar uma DTD ´otima ou muito pr´oximo disto. Por´em, ainda n˜ao foram feitos estudos para ampliar o sistema para a capta¸c˜ao de um XML Schema, que ´e, atualmente, o esquema recomendado pela W3C.

5.2

DataGuides

O conceito DataGuide foi introduzido para aproveitar os benef´ıcios de um esquema para dados semi-estruturados. Os DataGuides s˜ao um sum´ario estrutural de um banco de dados semi-estruturado conciso e exato, que agem como esquemas dinˆamicos. Eles s˜ao gerados a partir dos dados do banco de dados, s˜ao utilizados para formula¸c˜ao de consultas, armazenamento de informa¸c˜ao e tamb´em possilitam a otimiza¸c˜ao das consultas.(5)

Este trabalho baseia-se no modelo para dados chamado Object Exchange Model (OEM). Em OEM, cada objeto cont´em um objeto identificador e um valor, que pode ser atˆomico ou complexo, um exemplo de OEM pode ser visualizado na figura 15. Por tratar-se de uma representa¸c˜ao de dados semi-estruturada ´e poss´ıvel obter um documento XML de uma ´arvore OEM. A figura 16 demonstra um documento XML com os dados apresentados na OEM da figura 15.

(22)

permite realizar opera¸c˜oes em dados semiestruturados utilizando paths. Outra teoria pre-sente neste trabalho ´e a convers˜ao de autˆomatos finitos n˜ao-determin´ısticos (AFND) para autˆomatos finitos determin´ısticos (AFD) uma vez que DataGuides podem ser similares estruturalmente a automatos.

Figura 15: Exemplo documento OEM <locais_alimentacao> <restaurante> <nome>Chili’s</nome> <entrada>Salada</entrada> <telefone>3234-0051</telefone> <proprietario>Jos´e da Silva</proprietario> </restaurante> <restaurante>

<nome>Rose & Crown</nome> <entrada>Salada</entrada> <entrada>Sopa<entrada> <gerente>Jos´e da Silva</gerente> </restaurante> <bar>Darbar</bar> </locais_alimentacao>

Figura 16: Exemplo de documento XML para OEM do Exemplo Locais de Alimenta¸c˜ao

DataGuides descrevem um caminho ´unico rotulado com exatamente uma fonte, sem levar em conta o n´umero de vezes que o DataGuide aparece na fonte. Para garantir exa-tid˜ao, um DataGuide n˜ao codifica o caminho que n˜ao aparece na fonte e para garantir

(23)

Figura 17: Exemplo DataGuide

As caracter´ısticas estruturais e conceituais do DataGuide descritas anteriormente tor-nam esta forma estruturada de representa¸c˜ao de dados uma alternativa para extra¸c˜ao de esquemas XML. Atrav´es do relacionamento dos elementos presentes no DataGuide com os elementos de um XML Schema, por exemplo. Os nodos folhas do DataGuide s˜ao os elementos simples e os nodos que contem subarvores s˜ao os elementos complexos. A figura 18 apresenta o XML Schema do DataGuide demonstrado na figura 17.

<element name = ´locais_alimentacao´> <complextype>

<element name = ´restaurante´ type = ´TipoRestaurante´/> </complextype>

<complextype name = ´TipoRestaurante´> <element name = ´nome´ type = ´String´/> <element name = ´Entrada´ type = ´String´/> <element name = ´Telefone´ type = ´String´/> <element name = ´Proprietario´ type = ´String´/> <element name = ´Gerente´ type = ´String´/>

</complextype>

<element name = ´Bar´ type = ´String´/> </element>

(24)

5.3

Extra¸

ao de esquemas de dados XML: Uma

Abor-dagem de Gram´

atica de Inferˆ

encia

O trabalho de Boris Chidlovskii (4) enfatiza a importˆancia de se possuir uma defini¸c˜ao de esquema para documentos XML e prop˜oe uma alternativa para a extra¸c˜ao deste es-quema atrav´es do relacionamento sint´atico de documentos XML com linguagens Livre de Contexto, ou melhor, uma extens˜ao dessas linguagens.

Atrav´es de m´etodos desenvolvidos para este tipo de gram´atica e tamb´em para as gram´aticas regulares, definiu-se um algoritmo baseado em Gram´aticas Livre de Contexto para realizar a extra¸c˜ao de esquemas em XML SCHEMA para documentos XML.

No algoritmo sugerido, primeiramente o documento XML ´e mapeado para um formato de uma linguagem livre de contexto. Posteriormente, m´etodos de compara¸c˜ao seguidos de m´etodos de fatora¸c˜ao e consecutiva unifica¸c˜ao de elementos mapeados possibilitam a obten¸c˜ao de uma estrutura, ainda no formato de gram´atica, que ´e uma aproxima¸c˜ao do esquema do documento XML. O algoritmo pode ser descrito atrav´es dos seguintes passos:

1) Representa¸c˜ao de documentos XML como um conjunto estruturado de dados; 2) Indu¸c˜ao de uma Gram´atica Livre de Contexto Estendida (GLCE) para o documento XML em quest˜ao;

2.1) Cria¸c˜ao do conjunto inicial de n˜ao terminais N;

2.2) Fus˜ao dos elementos n˜ao-terminais de N que possuem conte´udo e contexto simi-lares;

2.3) Determina¸c˜ao dos tipos de dados para os terminais em G;

3) Transforma¸c˜ao do resultado da G em uma defini¸c˜ao XML SCHEMA S.

Para um melhor entendimento do algoritmo, ´e apresentado um exemplo com os re-sultados obtidos a cada passo. A figura 19 mostra um documento XML que cont´em informa¸c˜oes sobre clubes do futebol europeu e sua situa¸c˜ao dentro dos campeonatos que j´a disputaram.

A figura 20 mostra como seria o XML Schema correto correspondente ao arquivo XML da figura 19.

A figura 21 representa o resultado do primeiro passo do algoritmo: a representa¸c˜ao de um XML como uma ´arvore de deriva¸c˜ao da GLC, com todos os n˜ao-terminais removidos.

(25)

<ano>1997</ano><classificacao>final</classificacao> ...//5 no total </ChLeague> <UEFA> <ano>1995</ano><classificacao>final</classificacao> ... // 7 no total </UEFA> </time> <time><nome>Manchester United</nome> <ChLeague>

<ano>1999</ano><classificacao>campe~ao</classificacao> ... // 4 no total </ChLeague>

</time>

... // 46 times no total </times>

Figura 19: Exemplo de documento XML sobre o Campeonato Europel de Futebol

Na ´arvore demonstrada na figura 21 temos os nodos internos (circulos) correspondente aos elementos complexos, enquanto as folhas s˜ao as tags ou elementos simples(retangulos).

Na sequˆencia (passo 2) ´e necess´ario que se fa¸ca o mapeamento dos elementos presentes no documento XML para a GLCE G.

A correspondente GLCE ´e dada por G = (T,N,D,&,Start) onde T={times, time, nome, ...}, N = {Start, TipoTime, TipoLista}, D = {String, PositiveInteger}, e & contem a regra de produ¸c˜ao demonstrada na figura 22.

O pr´oximo passo do algoritmo (passo 2.1), representado na figura 23, ´e a gera¸c˜ao do conjunto inicial de n˜ao terminais. Para uma melhor visualiza¸c˜ao, associou-se o tipo gen´erico Any para os elementos simples e um r´otulo para cada elemento complexo do documento XML.

Ap´os obtidos os n˜ao terminais, ´e necess´ario fazer a fus˜ao dos elementos similares (Passo 2.2) - figura 24. O primeiro n˜ao terminal a sofrer a fus˜ao ´e o Start, pois suas produ¸c˜oes possuem ambig¨uidade com o terminal time. O resultado da fus˜ao continha termos amb´ıguos com terminais ChLeague. Portanto foram fundidos os n˜ao-terminais A47 e A49. Estas fus˜oes geraram o seguinte conjunto de produ¸c˜oes:

Observa-se, neste resultado, que os n˜ao-terminais A47 e A48 est˜ao repetindo os pares de elementos ano e classificacao, por isso s˜ao fundidos. O resultado obtido ap´os as fus˜oes

(26)

<element name = ´times´> <complextype>

<element name = ´time´ type = ´TipoTime´ maxOccurs = ´500´/> </complextype>

<complextype name = ´TipoTime´>

<element name = ´nome´ type = ´String´ />

<element name = ´ChLeague´ type = ´TipoLista´ minOccurs = ´0´ maxOccurs = ´1´/> <element name = ´UEFA´ type = ´ListType´ minOccurs = ´0´ maxOccurs = ´1´/> </complextype>

<complextype name=´TipoLista´>

<group minOccurs = ´1´ maxOccurs=´100´>

<element name = ´ano´ type = ´PositiveInteger´/>

<element name = ´classificacao´ type = ´String´/></group> </complextype>

</element>

Figura 20: Exemplo XML Schema Campeonato Europel de Futebol

´e uma Gram´atica Livre de Contexto com os n˜ao-terminais que geram diferentes produ¸c˜oes (figura 25).

O passo 2.3 analisa as produ¸c˜oes e atrav´es de m´etodos espec´ıficos ´e obtida a seguinte gram´atica do documento XML da figura 19:

O ´ultimo passo do algoritimo ´e transformar a gram´atica obtida em um esquema de acordo com as regras definidas em XML Schema. De acordo com a gram´atica da figura 26 ´e determinado o XML Schema da figura 27.

O element name ´e dado pela produ¸c˜ao da Gramatica no n˜ao-terminal Inicial (Start − > (time: A1) [46]). O n˜ao terminal A1 apontado na produ¸c˜ao citada anteriormente ´e um elemento complexo pois possui dentro das suas produ¸c˜oes um apontador para mais um n˜ao terminal, ou seja, na produ¸c˜ao ”A1 − > nome: String (ChLeague: A4) [0:1] (UEFA:A4) [0:1]” os n˜ao terminais A4 indicam que existem elementos inclusos nos ele-mentos formados por A1. O tipo complexo TipoLista ´e proveniente da produ¸c˜ao ”A4 − > (ano: UnsignedShort classificacao: String) [0:8]”.

(27)

Figura 21: ´Arvore XML - Exemplo Estruturado Start -> times:TipoTime

TipoTime -> (time:TipoTime) [0:500]

TipoTime -> nome:String (ChLeague:TipoLista) [0:1] (UEPA: TipoLista) [0:1] TipoLista -> (ano:PositiveInteger classificacao:String) [1:100]

Figura 22: Gram´atica Livre de Contexto Estendida para XML Times Start -> time:A1 time: A2 time: A3 ... (46 times no total)

A1 -> nome: Any ChLeague: A47 UEFA: A48 A2 -> nome: Any ChLeague: A49

A3 -> nome: Any ...

A47 -> ano: Any classificacao: Any ... // (7 pares ano-classificacao no total) A48 -> ano: Any classificacao: Any ... // (5 pares)

A49 -> ano: Any classificacao: Any ... // (4 pares) ...

Figura 23: Algoritimo Passo 2.1

Start -> time:A1 time:A1 time:A1 ... (46 times no total) A1 -> nome: Any ChLeague: A47 UEFA: A48

A1 -> nome: Any ChLeague: A47 A1 -> nome: Any

A47 -> ano: Any classificacao: Any ... // (7 pares) A48 -> ano: Any classificacao: Any ... // (5 pares) A47 -> ano: Any classificacao: Any ... // (4 pares) ...

(28)

Start -> (time:A1) [46]

A1 -> nome: Any ChLeague: A47 UEFA: A47 | nome: Any ChLeague: A47 | ...

A47 -> (ano: Any classificacao: Any) [7] | ano: Any classificacao: Any)[5] |...

Figura 25: Merge de N˜ao Terminais de Estrutura Repetida

Start -> (time: A1) [46]

A1 -> nome: String (ChLeague: A4) [0:1] (UEFA:A4) [0:1] A4 -> (ano: UnsignedShort classificacao: String) [0:8]

Figura 26: Algoritimo Passo 2.3

<element name = ´times´> <complextype>

<element name = ´time´ type = ´TipoTime´ maxOccurs = ´46´/> </complextype>

<complextype name = ´TipoTime´>

<element name = ´nome´ type = ´String´ />

<element name = ´ChLeague´ type = ´TipoLista´ minOccurs = ´0´ maxOccurs = ´1´/> <element name = ´UEFA´ type = ´ListType´ minOccurs = ´0´ maxOccurs = ´1´/> </complextype>

<complextype name=´TipoLista´>

<group minOccurs = ´0´ maxOccurs=´8´>

<element name = ´ano´ type = ´UnsignedShort´/>

<element name = ´classificacao´ type = ´String´/></group> </complextype>

</element>

(29)

6

Processo do Trabalho da

Ferramenta

A id´eia inicial para o desenvolvimento da ferramenta desejada baseia-se no princ´ıpio de que XML ´e uma linguagem finita e, conseq¨uentemente, um documento XML finito. Em fun¸c˜ao disto, ´e poss´ıvel obter, a partir de sua estrutura, uma gram´atica. Devido a este conceito, a ferramenta utiliza-se de gram´aticas para a obten¸c˜ao dos seus objetivos.

A solu¸c˜ao proposta ´e definida em 4 etapas, que s˜ao: 1. An´alise de Entrada; 2. Defini¸c˜ao de Estruturas; 2.1 An´alise atrav´es de uma gram´atica gen´erica; 2.2 Montagem da Tabela de S´ımbolos; 3. Defini¸c˜ao e Valida¸c˜ao da Gram´atica Final; 4. Convers˜ao. Estas etapas podem ser melhor visualizadas atrav´es da figura 28. A primeira etapa recebe como entrada uma fonte de dados XML. Por´em, esta fonte pode ser muito extensa por conter muitos documentos XML,tornando o processo muito lento. Portanto, nesta fase ´e realizado, atrav´es de m´etodos probabilisticos, a defini¸c˜ao de uma amostra que varia de acordo com a quantidadde de documentos da fonte de dados XML. O processo de escolha dos documentos que pertencem ao conjunto analisado ´e randˆomico. O primeiro elemento selecionado passar´a para a fase seguinte, os demais v˜ao direto para a fase de valida¸c˜ao.

A segunda etapa ´e a etapa em que ´e analisada a estrutura do documento. Este ser´a validado atrav´es de uma gram´atica gen´erica geradora de documentos XML que pode ser visualizada na figura 29.Esta gram´atica, que ´e utilizada para descobrir se o documento XML ´e bem-formado, ainda est´a sendo desenvolvida.A partir desta gram´atica ser´a gerada a tabela de s´ımbolos. Esta tabela ´e a estrutura que guarda as informa¸c˜oes essenciais sobre cada identificador reconhecido no documento. Estas informa¸c˜oes identificam o tipo dos elementos, atributos, entre outras caracter´ısticas. As informa¸c˜oes armazenadas na tabela de s´ımbolos ser˜ao de extrema importˆancia para o pr´oximo passo.

A terceira fase ´e respons´avel por, baseada nas informa¸c˜oes geradas na fase anterior, definir a gram´atica espec´ıfica do documento XML. Esta gram´atica d´a informa¸c˜oes de

(30)

hierarquia e complementa com todas as informa¸c˜oes necess´arias para a montagem do esquema. Sua estrutura varia de acordo com o tipo do documento. Ap´os criada pela primeira vez, servir´a de teste para os pr´oximos documentos XML. Ao selecionar o pr´oximo documento, este tem sua estrutura comparada `a estrutura da gram´atica gerada. Se estiver v´alido e houver mais documentos XML para serem processados, mant´em-se a gram´atica gerada anteriormente e processa-se o pr´oximo documento XML. Se forem encontradas diferen¸cas, este documento ´e enviado para a etapa 2, onde passar´a pela valida¸c˜ao atrav´es da gram´atica gen´erica e ent˜ao ser˜ao acrescentas as diferen¸cas encontradas em rela¸c˜ao aos documentos anteriores. Isto faz com que a gram´atica espec´ıfica gerada seja incrementada, j´a de volta a etapa 3. Esta gram´atica atualizada passa a ser a gram´atica utilizada nos testes de compara¸c˜ao.

Ap´os ser percorrida toda a amostra de documentos, a gram´atica gerada ser´a a gram´atica final, representativa do esquema de todos os documentos analisados. Esta, ent˜ao, passar´a por um processo de convers˜ao para a linguagem XML Schema, atual recomenda¸c˜ao da W3C para especifica¸c˜oes XML. Al´em disso, essa ´e a linguagem de esquema para XML adotada como entrada pelo BInXS.Vale lembrar que a gram´atica gerada deve ser guardada para eventos futuros, ou seja, ela deve ser armazenada e o foramto de armazenamento est´a sendo decidido.

O ´ultimo passo ´e fazer a convers˜ao da gram´atica gerada em um esquema XSD (XML Schema Definition) baseado na tabela de Simbolos resultante e na gram´atica espec´ıfica final.

Para exemplificar o funcionamento da ferramenta sup˜oe-se que os documentos da figura 30 e 31 fazem parte da amostra selecionada na primeira etapa do processo,sendo o documento da figura 30, o primeiro documento de entrada.

Ap´os o primeiro documento ser validado pela Gram´atica Gen´erica da figura 29 ´e gerada a tabela de s´ımbolos 2 que cont´em informa¸c˜oes relevantes para a cria¸c˜ao da Gram´atica Espec´ıfica e o esquema do documento.Nesta tabela, que ainda est´a sendo desenvolvida, as abrevia¸c˜oes LE, LA,LP e LF significam respectivamente: Lista de Ele-mentos, Lista de Atributos, Lista de Pais e Lista de Filhos.

A partir da tabela de s´ımbolos (tabela2) ´e estabelecida uma gram´atica espec´ıfica que serve de compara¸c˜ao para os pr´oximos documentos da amostra. A gram´atica da figura 32 representa o resultado da etapa de Defini¸c˜ao de Estruturas.

(31)

2 <livro> complexo LP(1) LF(3,4) LA() 1-1 −− 3 <titulo> simples LP(2) LA() 1-1 String 4 <autor> complexo LP(2) LF(5) LA() 1-1 −− 5 <nome> simples LP(4) LA() 1-1 String 6 <edicao> simples LP(2) LA() 1-1 String

Tabela 2: Tabela de Simbolos `a partir do documento 1.

consiste em conferir se este documento ´e validado pela gram´atica da figura 32. Caso sejam encontradas divergˆencias significa que esta gram´atica precisa ser incrementada. Neste exemplo observa-se diferen¸cas fazendo-se necess´aria a reformula¸c˜ao da tabela de s´ımbolos(tabela 4) e ent˜ao, da gram´atica espec´ıfica. As altera¸c˜oes est˜ao destacadas em negrito.

Tabela 3: Tabela de Simbolos `a partir do documento 2.

Id Elemento Categoria LE LA Cardinalidade Tipo 1 <biblioteca> raiz LF(2) LA() 1-1 −− 2 <livro> complexo LP(1) LF(3,4) LA() 1-1 −− 3 <titulo> simples LP(2) LA() 1-1 String 4 <autor> complexo LP(2) LF(5) LA() 1-1 −− 5 <nome> simples LP(4) LA() 1-1 String 6 <edicao> simples LP(2) LA() 0-1 String 7 <e-mail> simples LP(4) LA() 1-1 String

Tabela 4: Tabela de Simbolos `a partir do documento 2.

As mudan¸cas ocorridas nesta etapa s˜ao responsaveis pelos acr´escimos de produ¸c˜oes na gram´atica espec´ıfica visualizada na figura 33.

Este procedimento de incremento da tabela e da gram´atica ´e realizado at´e que todos os documentos da amostra sejam verificados.

A etapa final toma os dados presentes na tabela de s´ımbolos e na gram´atica espec´ıfica resultantes e cria o esquema aproximado referente aos documentos XML da fonte de dados em quest˜ao. A figura 34 demonstra o XML Schema gerado `a partir dos documentos analisados (figura 30 e 31).

A proposta de funcionamento sugerida para a ferramenta ainda n˜ao ´e definitiva. Mu-dan¸cas na solu¸c˜ao proposta podem ocorrer durante o desenvolvimento da ferramenta. A tabela abaixo apresenta as atividades futuras a serem realizadas at´e o t´ermino do TCC.

(32)

Tabela 5: Cronograma de Atividades Futuras

Jan/Mar Abr/Mai Jun/Ago Ago/Ago

Conclus˜ao da Proposta Implementa¸c˜ao Testes e Experimentos Reda¸c˜ao do TCC

(33)

E-> string | integer | ...

Figura 29: Gram´atica Gen´erica

<?xml version="1.0" encoding= "US-ASCII"?> <biblioteca>

<livro>

<titulo> Onze minutos </titulo> <autor>

<nome> Paulo Coelho </nome> </autor>

<edicao> Segunda </edicao> </livro>

</biblioteca>

Figura 30: Exemplo Primeiro Documento a entrar no Processo

<?xml version="1.0" encoding= "US-ASCII"?> <biblioteca>

<livro>

<titulo> A Herdeira </titulo> <autor>

<nome> Sidney Sheldon </nome>

<e-mail> sheldon@gmail.com </e-mail> </autor>

</livro> </biblioteca>

Figura 31: Exemplo Segundo Documento a entrar no Processo

R -> <biblioteca>L</biblioteca> L -> <livro>A</livro>

A -> <autor>B</autor> | <titulo>T</titulo> | <edicao>T</edicao> | AA B -> <nome>T</nome>

T-> String

(34)

R -> <biblioteca>L</biblioteca> L -> <livro>A</livro>

A -> <autor>B</autor> | <titulo>T</titulo> | <edicao>T</edicao> | AA B -> <nome>T</nome> | <e-mail>T</e-mail>

T-> String

Figura 33: Gram´atica Espec´ıfica da Segunda Itera¸c˜ao.

<?xml version="1.0" encoding= "US-ASCII"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"> <xsd:element name=’biblioteca’>

<xsd:complexType>

<xsd:element name=’livro’ type = ’TipoLivro’/> </xsd:complexType>

<xsd:complexType name=’TipoLivro’>

<element name=’titulo’ type = ’String’/> <xsd:complexType>

<xsd:element name=’autor’ type = ’TipoAutor’/> </xsd:complexType>

<element name=’edicao’ type = ’String’/> </xsd:complexType>

<xsd:complexType name=’TipoAutor’>

<xsd:element name=’nome’ type = ’String’/> <xsd:element name=’e-mail’ type = ’String’/> </xsd:complexType>

</xsd:element> </xsd:schema>

(35)
(36)

Referˆ

encias

1 W3C. World Wide Web Consortium. Acesso em 10/2006. Dispon´ıvel em: <www.w3c.org>.

2 MELLO, R. dos S. Binxs. 2003.

3 GAROFALAKIS ARISTIDES GIONIS, R. R. S. S. K. S. M. Xtract: A system for extracting document type descriptors from xml documents.

4 CHILDLOVSKII, B. Schema extraction from xml data: A grammatical inference approach.

5 GOLDMAN, J. W. R. Dataguides: Enabling query formulation and optimization in semistructed databases.

6 JR., J. R. T. XML Schema. [S.l.]: Visual Books Ltda, 2002. 7 BRADLEY, N. The xml schema companion. 2003.

8 W3SCHOOL. w3cschool.com. Acesso em 10/2006. Dispon´ıvel em: <www.w3cschool-.com>.

9 MENEZES, P. B. Linguagens Formais e Autˆomatos. [S.l.]: Editora Sagra Luzzatto, 2002.

Referências

Documentos relacionados

O terceiro nível está representa- do por oito compartimentos: Modelado de Patamares Residuais em Arenitos; Modelado de Relevo Ondulado em Rochas Friáveis; Modelados de Áreas

 Projeto: Nanoemulsões à base de óleo de copaíba (Copaifera multijuga Hayne): Desenvolvimento tecnológico, estudo de permeação cutânea, avaliação da atividade

Num estudo clínico realizado em doentes com diabetes tipo 2 e nefropatia, a incidência de hipercaliémia foi superior no grupo tratado com Cozaar em comparação com o grupo do

O perfil para seu tipo é mostrado abaixo, seguido nas próximas páginas por três gráficos que destacam como seu tipo influencia seu estilo de trabalhar, suas preferências e estilo

A bomba pode ser fornecida • como unidade completa composta por bomba, motor eléctrico, placa base, acoplamento e protecção do acoplamento mas igualmente sem motor ou • como bomba

1) Dada uma seqüência de números inteiros não-nulos, seguida por 0, imprimir seus quadrados.. 5) Dado um número natural na base binária, transformá-lo para a base decimal.. 8)

A Administração da Companhia é responsável pela elaboração e adequada apresentação dessas demonstrações contábeis de acordo com as práticas contábeis

citri foi estudada em folhas de videira Vitis vinifera, cultivares Cabernet Sauvignon e Itália, e de Vitis labrusca, cultivar Isabel; em bagas da cultivar Itália e em raízes