SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
Integra¸c˜ao Semˆantica
Lattes-BibTeX
Daniel Guimar˜aes
July 10, 2015
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Destaque

Cloud: Container Service In Action, por Heitor Vidal
Cloud: Container Service In Action, por Heitor VidalCloud: Container Service In Action, por Heitor Vidal
Cloud: Container Service In Action, por Heitor VidaliMasters
 
Jenkins além da integração contínua - práticas de devops
Jenkins além da integração contínua - práticas de devopsJenkins além da integração contínua - práticas de devops
Jenkins além da integração contínua - práticas de devopsDaniel Fernandes
 
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...Bruno Luiz Pereira da Silva
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develJose Augusto Carvalho
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIAlefe Variani
 
DevOps utilizando Docker
DevOps utilizando DockerDevOps utilizando Docker
DevOps utilizando Dockerthdotnet
 
Tcc rafael mazzei_v4
Tcc rafael mazzei_v4Tcc rafael mazzei_v4
Tcc rafael mazzei_v4Rafael Mazzei
 
TCC - AUTOMATIZAÇÃO DE ENTREGA DE SOFTWARE EM AMBIENTE ÁGIL DE DESENVOLVIM...
TCC - AUTOMATIZAÇÃO DE ENTREGA DE SOFTWARE EM AMBIENTE ÁGIL DE DESENVOLVIM...TCC - AUTOMATIZAÇÃO DE ENTREGA DE SOFTWARE EM AMBIENTE ÁGIL DE DESENVOLVIM...
TCC - AUTOMATIZAÇÃO DE ENTREGA DE SOFTWARE EM AMBIENTE ÁGIL DE DESENVOLVIM...Leandro Nunes
 
COLORAMA (TCC) | Gui Silva Designer
COLORAMA (TCC)  |  Gui Silva DesignerCOLORAMA (TCC)  |  Gui Silva Designer
COLORAMA (TCC) | Gui Silva DesignerGuilherme Silva
 
Gerenciando e implantando suas aplicações na Nuvem da AWS
Gerenciando e implantando suas aplicações na Nuvem da AWSGerenciando e implantando suas aplicações na Nuvem da AWS
Gerenciando e implantando suas aplicações na Nuvem da AWSAmazon Web Services LATAM
 
Automatizando a implantação e operação de aplicações conteinerizadas no...
Automatizando a implantação e operação de aplicações conteinerizadas no...Automatizando a implantação e operação de aplicações conteinerizadas no...
Automatizando a implantação e operação de aplicações conteinerizadas no...Elo7
 
Tcc leandro brust_mba_gestao_financeira_analise_economica_unidade_pesquisa_cl...
Tcc leandro brust_mba_gestao_financeira_analise_economica_unidade_pesquisa_cl...Tcc leandro brust_mba_gestao_financeira_analise_economica_unidade_pesquisa_cl...
Tcc leandro brust_mba_gestao_financeira_analise_economica_unidade_pesquisa_cl...Leandro Brust
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker ContainersHugo Henley
 

Destaque (20)

Cloud: Container Service In Action, por Heitor Vidal
Cloud: Container Service In Action, por Heitor VidalCloud: Container Service In Action, por Heitor Vidal
Cloud: Container Service In Action, por Heitor Vidal
 
Jenkins além da integração contínua - práticas de devops
Jenkins além da integração contínua - práticas de devopsJenkins além da integração contínua - práticas de devops
Jenkins além da integração contínua - práticas de devops
 
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
 
Monografia-Devops
Monografia-DevopsMonografia-Devops
Monografia-Devops
 
TCC FGV - Diego Mendes Rodrigues
TCC FGV - Diego Mendes RodriguesTCC FGV - Diego Mendes Rodrigues
TCC FGV - Diego Mendes Rodrigues
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 
DevOps utilizando Docker
DevOps utilizando DockerDevOps utilizando Docker
DevOps utilizando Docker
 
Pré-banca TCC Informática
Pré-banca TCC InformáticaPré-banca TCC Informática
Pré-banca TCC Informática
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Tcc rafael mazzei_v4
Tcc rafael mazzei_v4Tcc rafael mazzei_v4
Tcc rafael mazzei_v4
 
TCC - AUTOMATIZAÇÃO DE ENTREGA DE SOFTWARE EM AMBIENTE ÁGIL DE DESENVOLVIM...
TCC - AUTOMATIZAÇÃO DE ENTREGA DE SOFTWARE EM AMBIENTE ÁGIL DE DESENVOLVIM...TCC - AUTOMATIZAÇÃO DE ENTREGA DE SOFTWARE EM AMBIENTE ÁGIL DE DESENVOLVIM...
TCC - AUTOMATIZAÇÃO DE ENTREGA DE SOFTWARE EM AMBIENTE ÁGIL DE DESENVOLVIM...
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
COLORAMA (TCC) | Gui Silva Designer
COLORAMA (TCC)  |  Gui Silva DesignerCOLORAMA (TCC)  |  Gui Silva Designer
COLORAMA (TCC) | Gui Silva Designer
 
Gerenciando e implantando suas aplicações na Nuvem da AWS
Gerenciando e implantando suas aplicações na Nuvem da AWSGerenciando e implantando suas aplicações na Nuvem da AWS
Gerenciando e implantando suas aplicações na Nuvem da AWS
 
Automatizando a implantação e operação de aplicações conteinerizadas no...
Automatizando a implantação e operação de aplicações conteinerizadas no...Automatizando a implantação e operação de aplicações conteinerizadas no...
Automatizando a implantação e operação de aplicações conteinerizadas no...
 
Tcc leandro brust_mba_gestao_financeira_analise_economica_unidade_pesquisa_cl...
Tcc leandro brust_mba_gestao_financeira_analise_economica_unidade_pesquisa_cl...Tcc leandro brust_mba_gestao_financeira_analise_economica_unidade_pesquisa_cl...
Tcc leandro brust_mba_gestao_financeira_analise_economica_unidade_pesquisa_cl...
 
Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 

Semelhante a projeto_daniel

Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETJosé Corrêa Viana
 
apostila-desenvolvimento-asp-net
 apostila-desenvolvimento-asp-net apostila-desenvolvimento-asp-net
apostila-desenvolvimento-asp-netSandra Rocha
 
PHP - Capítulo 01
PHP - Capítulo 01PHP - Capítulo 01
PHP - Capítulo 01fdorado
 
Introdução a programação em python d3
Introdução a programação em python d3Introdução a programação em python d3
Introdução a programação em python d3Moises de Paula
 
Artigo de php
Artigo de phpArtigo de php
Artigo de phprobson
 
Cucumber: um breve review
Cucumber: um breve reviewCucumber: um breve review
Cucumber: um breve reviewLaís Berlatto
 
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdfTÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdfLeandrovilela19
 
Oficina online para compartilhamento de experiências no uso do DSPACE: BIREME
Oficina online para compartilhamento de experiências no uso do DSPACE: BIREMEOficina online para compartilhamento de experiências no uso do DSPACE: BIREME
Oficina online para compartilhamento de experiências no uso do DSPACE: BIREMEComunidadRedDes
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Congresso iv
Congresso ivCongresso iv
Congresso ivIP10
 
Congresso iii unifacsv3
Congresso iii unifacsv3Congresso iii unifacsv3
Congresso iii unifacsv3IP10
 

Semelhante a projeto_daniel (20)

Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NET
 
apostila-desenvolvimento-asp-net
 apostila-desenvolvimento-asp-net apostila-desenvolvimento-asp-net
apostila-desenvolvimento-asp-net
 
PHP - Capítulo 01
PHP - Capítulo 01PHP - Capítulo 01
PHP - Capítulo 01
 
Php
PhpPhp
Php
 
Jsp+Jdbc+Servlets
Jsp+Jdbc+ServletsJsp+Jdbc+Servlets
Jsp+Jdbc+Servlets
 
teste86940.78038637294
teste86940.78038637294teste86940.78038637294
teste86940.78038637294
 
Introdução a programação em python d3
Introdução a programação em python d3Introdução a programação em python d3
Introdução a programação em python d3
 
Artigo de php
Artigo de phpArtigo de php
Artigo de php
 
Tópico 3 - RDF
Tópico 3 - RDFTópico 3 - RDF
Tópico 3 - RDF
 
Tema 1 | Introdução a PHP
Tema 1 | Introdução a PHPTema 1 | Introdução a PHP
Tema 1 | Introdução a PHP
 
Manual PHP
Manual PHPManual PHP
Manual PHP
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Cucumber: um breve review
Cucumber: um breve reviewCucumber: um breve review
Cucumber: um breve review
 
Processador de texto
Processador de textoProcessador de texto
Processador de texto
 
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdfTÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
 
Oficina online para compartilhamento de experiências no uso do DSPACE: BIREME
Oficina online para compartilhamento de experiências no uso do DSPACE: BIREMEOficina online para compartilhamento de experiências no uso do DSPACE: BIREME
Oficina online para compartilhamento de experiências no uso do DSPACE: BIREME
 
Caderno02
Caderno02Caderno02
Caderno02
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Congresso iv
Congresso ivCongresso iv
Congresso iv
 
Congresso iii unifacsv3
Congresso iii unifacsv3Congresso iii unifacsv3
Congresso iii unifacsv3
 

projeto_daniel

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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