projeto_daniel

110 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
110
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

projeto_daniel

  1. 1. Integra¸c˜ao Semˆantica Lattes-BibTeX Daniel Guimar˜aes July 10, 2015
  2. 2. 1 I N T R O D U C¸ ˜A O A Plataforma Lattes ´e um sistema online com o fim de realizar a integrac¸˜ao de bases de dados de curr´ıculos de grupos de pesquisa e de instituic¸ ˜oes em um ´unico sistema de informac¸ ˜oes. O Curr´ıculo Lat- tes registra a vida pregressa dos estudantes e pesquisadores do pa´ıs e ´e hoje adotado pela maioria das instituic¸ ˜oes de fomento, univer- sidades e institutos. Devido a popularidade dessa plataforma, essa possui hoje uma rica base de dados contendo informac¸ ˜oes sobre a grande maioria dos pesquisadores do pa´ıs. Citar recursos bibliogr´aficos ´e uma atividade corriqueira na vida de um pesquisador, para isso, existem softwares dedicados a gest˜ao de referˆencias. BibTeX [10] ´e uma ferramenta e um formato de ar- quivo o qual ´e usado para descrever e processar listas de referˆencias usadas normalmente acoplado a um arquivo LaTeX [10]. Apesar das vantagens de sua utilizac¸˜ao, a ferramenta BibTeX requer a laboriosa tarefa de preencher manualmente os campos de uma entrada bibli- ogr´afica e ´e esse o problema que o sistema procura resolver: usufruir da riqueza da Plataforma Lattes para extrair suas referˆencias bibli- ogr´aficas em formato BibTeX. 2
  3. 3. 2 S I T U A C¸ ˜A O AT U A L Existe hoje biblioteca que realiza funcionalidade equivalente, chamada Lattes-to-BibTeX [12]. As ferramentas utilizadas por essa biblioteca s˜ao as seguintes: slattes [13] Uma ferramenta desenvolvida para conectar o Curr´ıculo Lattes e as tecnologias de Web Semˆantica. A principal ferra- menta utilizada dessa biblioteca ´e um XSLT que converte do XML do Lattes para um formato mais difundido, MODS (Meta- data Object Description Schema). allegro common lisp [6] ´e uma extens˜ao do ANSI Common Lisp a qual provˆe interface para OpenGL, threads, Unicode, CLOS (Common Lisp Object System) streams e etc. allegroserve [7] servidor web escrito pela Franz Inc, que utiliza a ferramenta de gerac¸˜ao de HTML, htmlgen, para a criac¸˜ao de p´aginas dinˆamicas HTML, i.e. a pagina web ´e modificada di- namicamente dentro da m´aquina cliente sem necessidades de novos acessos ao servidor web. Al´em disso, essa ferramenta permite que p´aginas sejam dinamicamente geradas. bibutils [11] um conjunto de programas o qual converte entre v´arios formatos de especificac¸˜ao bibliogr´afica utilizando um for- mato intermedi´ario MODS (Metadata Object Description Schema). Um dos programas desse conjunto, ”xml2bib”, realiza a con- vers˜ao entre um XML MODS para BibTeX. quicklisp [3] o gerenciador de bibliotecas de Common Lisp. jquery [8] uma biblioteca de JavaScript que facilita o percorrimento de um documento HTML, parsing, assim como o tratamento de eventos, animac¸˜ao de um site e etc. jQuery pode ser visto como uma biblioteca auxiliar utilizada para que n˜ao seja necess´ario trabalhar extensivamente com JavaScript. Esse sistema implementa um conversor de Lattes para BibTeX. Nesta vers˜ao, o conversor recebe como entrada um curr´ıculo Lattes em XML ou zipado e o transforma em outro XML em formato MODS (usando a transformac¸˜ao XSLT [4], lattes2mods.xsl, da ferramenta SLattes) o 3
  4. 4. situac¸ ˜ao atual qual ´e transformado posteriormente para formato BibTeX pela ferra- menta Bibutils. Esse conversor ´e disponibilizado em uma p´agina web e possui interface minimalista, disponibilizando apenas um HTML form para o carregamento do arquivo. Al´em disso, a interface possui alguns links para as ferramentas (aqui mencionadas) utilizadas em seu desenvolvimento assim como uma p´agina para esclarecer algu- mas d´uvidas frequentes, e.g.: Como utilizar a ferramenta. 4
  5. 5. 3 O B J E T I V O S D O T R A B A L H O Na primeira etapa do projeto buscou-se desenvolver funcionalidade equiparada com a ferramenta j´a existente, no entanto, utilizando work- flow diferente. De fato, nesse novo caminho busca-se manter a aplicac¸˜ao o m´aximo poss´ıvel dentro do dom´ınio da linguagem Common Lisp [5]. Para realizar essa aplicac¸˜ao ´e disposto ao programa bibliotecas utilit´arias, descritas a seguir. CL-BibTeX [9] ´e um substituto para o programa BibTeX o qual permite o usu´ario escrever programas utilizando Common Lisp ao inv´es da linguagem orientada a pilha dos arquivos de estilo BibTeX. A motivac¸˜ao da implementac¸˜ao desse sistema foi devido a dificul- dade de escrever/editar programas em BAFLL (BibTeX Anonymous Forth-Like Language) o qual permite customizar a formatac¸˜ao dos arquivos BibTeX. CXML [2] ´e um parser de XML escrito em Common Lisp. Dentro dessa biblioteca, ´e utilizado especialmente sua interface SAX, a qual permite gerar eventos enquanto o arquivo est´a sendo percorrido, e.g. ´e poss´ıvel chamar um m´etodo cada vez que um in´ıcio de elemento ´e detectado. Xuriella [15] ´e uma biblioteca em Common Lisp a qual busca se tornar uma implementac¸˜ao completa do XSLT vers˜ao 1.0. Por meio do carregamento dessas ferramentas cria-se um ambiente capaz de: usufruir das convers˜oes j´a propostas pela comunidade, ex- trair informac¸ ˜oes de maneira eficiente dos arquivos XML e processar um arquivo XSLT dentro do c´odigo Lisp. A convers˜ao seguir´a o seguinte procedimento: uma interface web receber´a, por meio de um HTML form, um arquivo XML em formato Lattes, de seguida deve-se converter esse para formato intermedi´ario (BibTeXML) por meio da linguagem de transformac¸˜ao XSLT. A van- tagem de realizar essa transformac¸˜ao intermedi´aria ´e devido ao fato de sua estrutura ser muito parecida com o formato de arquivo dese- jado, BibTeX. Por meio desse interm´edio, facilitamos o trabalho a ser realizado pelo programa em Common Lisp, o qual realizar´a inclusive a convers˜ao final do formato BibTeXML para BibTeX, uma vez que esse ter´a como entrada uma estrutura mais parecida com o intento. Os produtos finais da primeira parte do projeto ser˜ao: 5
  6. 6. objetivos do trabalho • Interface Web: p´agina web a qual exibir´a o resultado da con- vers˜ao. • lattes2bibtexml: Transformac¸˜ao XSLT a qual recebe um XML em formato Lattes e o transforma de acordo com as regras ex- plicitadas na folha de estilo. Um arquivo XML de entrada rep- resentando uma ´arvore ´e percorrido e sobre ele s˜ao aplicados templates nos n´os necess´arios, extraindo informac¸ ˜oes e gerando o XML de sa´ıda. Dessa forma, quando ocorre um casamento en- tre um n´o especificado nas regras e um n´o na ´arvore XML de entrada, escreve-se no arquivo de sa´ıda o XML necess´ario para atingir o formato desejado, nesse caso, bibtexml. • lattes2bibtex: Programa em Common Lisp respons´avel por re- alizar a convers˜ao fim a fim. Esse programa executa o proces- samento da convers˜ao descrita anteriormente e utiliza seu re- sultado para a convers˜ao final. A ´ultima convers˜ao consiste em estruturar os dados das entradas bibliogr´aficas em um hash, a qual ´e utilizada futuramente pela biblioteca CL-BibTeX para gerar o arquivo BibTeX. Deve ser apontado que na parte de programac¸˜ao foi utilizado o aux´ılio do co-orientador Dr. Alexandre Rademaker, tanto na indicac¸˜ao de referˆencias para a obtenc¸˜ao de documentac¸˜ao, quanto na soluc¸˜ao de d´uvidas t´ecnicas na implementac¸˜ao dos c´odigos XSLT e Common Lisp. 6
  7. 7. 4 AT I V I D A D E S Desde Janeiro de 2014 estou estudando a linguagem de programac¸˜ao Common Lisp, incentivada pelo atual co-orientador, devido ao tra- balho que foi realizado na Fundac¸˜ao Get´ulio Vargas uma vez que a maioria do c´odigo fonte tinha sido escrito em tal linguagem. Nessa ´epoca, iniciou-se o estudo do livro Practical Common Lisp [14]. Na metade do ano de 2014, foi cursado a disciplina do departa- mento de engenharia el´etrica: L´ogica Fuzzy (ELE2399). No decorrer do curso, foi desenvolvido em Lisp as primeiras operac¸ ˜oes l´ogicas e modificadores necess´arios para prover a, hoje proposta, biblioteca de Fuzzy que ser´a plenamente desenvolvida na segunda parte do projeto. Durante o trabalho na FGV, tamb´em foi requerido projetar algumas transformac¸ ˜oes XSLT, que facilitaram a atual transformac¸˜ao entre o XML em formato Lattes e o XML em formato BibTeXML. Nas primeiras reuni˜oes realizadas sobre o Projeto Final I, j´a foram definidas as ferramentas necess´arias na implementac¸˜ao. Foi necess´ario aprender, por exemplo, a utilizar interface SAX da biblioteca CXML para navegar no arquivo XML de entrada. Al´em dessa, tamb´em foi estudado as funcionalidades b´asicas da biblioteca Xuriella a qual per- mitiu realizar o processamento da transformac¸˜ao XSLT dentro do c´odigo Lisp. Para realizar a convers˜ao final para formato BibTeX, existiu um esforc¸o para compreender a estruturac¸˜ao da biblioteca CL-BibTeX para a correta convers˜ao da estrutura de hashes para o arquivo BibTeX. Para gerenciar todas essas bibliotecas, foi necess´ario entender a estrutura b´asica do asdf [1] e a chamada de func¸ ˜oes do quicklisp. 7
  8. 8. 5 R E V I S ˜A O D O P L A N O D E T R A B A L H O Ocorreram algumas mudanc¸as no workflow mencionado na Proposta do Projeto I. Durante a implementac¸˜ao inicial, foi extremamente penoso implementar o programa Lisp respons´avel por realizar a convers˜ao do XML do Lattes direto para a estrutura de hash. De fato, devido a falta de um padr˜ao entre o formato dado e o formato almejado exigiu- se uma complexidade dispens´avel no c´odigo Lisp. Notou-se que buscava alcanc¸ar pelo c´odigo Lisp as funcionalidades oferecidas pela transformac¸˜ao XSLT, e.g. a chamada de um conjunto de instruc¸ ˜oes sempre quando uma tag espec´ıfica do XML era parseada que ´e justa- mente o que o template match do XSLT faz. Com o tempo, foi ficando cada vez mais n´ıtido que n˜ao utiliz´avamos a ferramenta ideal para o problema, por isso, foi sugerido que mudasse o workflow passando a incluir o estado intermedi´ario, BibTeXML, dado a semelhanc¸a desse com a estrutura de hashes desejada. Ocorreu outra quebra de expectativa ao utilizar a func¸˜ao da bib- lioteca CL-BibTeX, write-bib-entry, para transformar uma entrada bib- liogr´afica (representando um hash) salva em mem´oria para uma en- trada do arquivo final BibTeX. No entanto, a func¸˜ao write-bib-entry esperava que sua entrada fosse uma instˆancia da classe bib-entry, a qual possu´ıa em um de seus slots a estrutura de hash, diferentemente do que tinha sido suposto a priori. Ficar´a pendente para o Projeto Final I, acertar essa modificac¸˜ao na estrutura de hash, pois essa deveria ter sido constru´ıda como um hash de instˆancias da classe bib-entry (representando cada entrada bibli- ogr´afica) as quais possuem em um de seus slots uma outra hash (rep- resentando os campos espec´ıficos de cada entrada). Anteriormente, imaginava-se que a estrutura era simplesmente uma hash de hashes. 8
  9. 9. 6 C R O N O G R A M A Na Figura 1 temos o cronograma fornecido pelo GitHub, editado para conter somente os commits referentes ao desenvolvimento do Projeto Final I. Este gr´afico identifica o volume de commits nos dois reposit´orios utilizados: cl-fuzzy e lattes2bibtex. Vale mencionar que esses dados registram apenas a conclus˜ao de uma certa funcionali- dade, n˜ao ´e monitorado nesse esquema os estudos realizados nem os esforc¸os infrut´ıferos os quais n˜ao foram dignos de serem commitados. ´E poss´ıvel obter acesso a vers˜ao atualizada dos reposit´orios em: • http://github.com/dcguim/cl-fuzzy • http://github.com/dcguim/lattes2bibtex Na Tabela 1 ´e relatado tudo que j´a foi desenvolvido e que ficar´a pendente para a conclus˜ao integral do Projeto Final I, i.e. a inter- face web e a correc¸˜ao desse erro. Pretende-se realizar tais pendencias antes do in´ıcio do pr´oximo semestre para que esse fique dedicado ao t´ermino da biblioteca fuzzy. Na tabela acima, ´e relatado tudo que j´a foi desenvolvido e que ficar´a pendente para a conclus˜ao integral do Projeto Final I, i.e. a interface web e a correc¸˜ao desse erro. Pretende- se realizar tais pendencias antes do in´ıcio do pr´oximo semestre para que esse fique dedicado ao t´ermino da biblioteca fuzzy. Figure 1: Cronograma do GitHub 9
  10. 10. cronograma Dezembro Desenvolvimento das operac¸ ˜oes b´asicas e dos modi- ficadores que ir˜ao agir sobre conjuntos fuzzy. Vale mencionar que a biblioteca fuzzy, a princ´ıpio, tinha sido implementada para prop´osito gen´erico. Janeiro - Fevereiro Foi desenvolvido um sistema asdf e um framework de teste para realizar testes de coerˆencia sobre a biblioteca. Estudo do livro Practical Common Lisp e do cap´ıtulo 17 do XML Bible o qual ensina as transformac¸ ˜oes XSL. Marc¸o Estudo da biblioteca cxml, mais especificamente, sua interface SAX. In´ıcio da implementac¸˜ao da convers˜ao, a princ´ıpio, objetivava realizar um curto-circuito entre o XML do Lattes e a estrutura de hash em Common Lisp. Nesse momento, os esforc¸os foram direcionados ao desenvolvimento desse curto-circuito o qual futu- ramente se mostrou o caminho mais custoso. Abril Em abril, persistiram os esforc¸os na realizac¸˜ao do curto-circuito em Common Lisp, `a vista disso, foi ex- tremamente penoso construir essa parte do c´odigo de- vido aos problemas mencionados no cap´ıtulo 5. Maio Houve a realizac¸˜ao de que seria mais simples optar pela transformac¸˜ao XSL, portanto, foi implementada a transformac¸˜ao XSL respons´avel,por transformar o XML do Lattes para o XML BibTeXML. Durante a implementac¸˜ao, fez-se necess´ario estudos adicionais no cap´ıtulo 17 do livro XML Bible. Junho Uma vez que foi gerado o XML BibTeXML, foi extremamante simples converter as entradas bibli- ogr´aficas do XML para a estrutura de hash dese- jada.Tamb´em houve a realizac¸˜ao de que existia um pressuposto errado sobre a estrutura de hash e sobre essa ocorrer´a uma mudanc¸a sut´ıl. Table 1: Cronograma 10
  11. 11. B I B L I O G R A P H Y [1] Daniel Barlow. ASDF Manual. https://common- lisp.net/project/asdf/asdf.html. [2] Gilbert Baumann. Closure xml parser. https://www.common- lisp.net/project/cxml/. [3] Zach Beane. Quicklisp beta. https://www.quicklisp.org/beta/. [4] James Clark. Xsl transformations version 1.0. Technical report, W3C, 1999. [5] ANSI X3J13 committee. Ansi incits 226-1994 (r2004) american na- tional standard for programming language common lisp (x3j13). [6] Franz Inc. Allegro Common Lisp. http://franz.com/products/allegrocl/. [7] Franz Inc. AllegroServe: A web application server. http://franz.com/support/documentation/current/doc/aserve/aserve.html. [8] The jQuery Foundation. jquery api. http://api.jquery.com/. [9] Matthias Koeppe. CL-BibTeX. http://www.nongnu.org/cl- bibtex/. [10] Leslie Lamport. LaTeX: A Document Preparation System. Addison- wesley, 1994. [11] Chris Putnam. bibtutils: bibliography conversion utilities. http://bibutils.refbase.org/. [12] Alexandre Rademaker. Lattes to BibTeX. https://github.com/arademaker/lattes-to-bibtex. [13] Alexandre Rademaker. Semantic Lattes. https://github.com/arademaker/SLattes/. [14] Peter Seibel. Practical Common Lisp. Apress, 2005. [15] Ivan Shvedunov and David Lichteblau. Xuriella: A com- mon lisp implementation of xslt 1.0. https://common- lisp.net/project/xuriella/. 11

×