Importar BibReferences
2 minute read
O endpoint POST bibreferences aceita duas formas de entrada:
doi: número ou URL de DOI; o OpenDataBio tenta recuperar o BibTeX usando serviços externos;bibtex: registro bibliográfico completo em formato BibTeX.
Pelo menos uma dessas colunas deve estar preenchida em cada linha. Para o fluxo
por DOI mostrado abaixo, envie somente a coluna doi. Antes de importar,
pesquise o DOI ou a chave BibTeX para evitar referências duplicadas.
Exemplo fictício: importar apenas DOIs
Os DOIs abaixo são fictícios e servem apenas para demonstrar a estrutura da requisição. Eles provavelmente não serão resolvidos e, portanto, não serão importados. Substitua-os por DOIs reais e teste primeiro uma única referência.
library(opendatabio)
base_url = "http://localhost/opendatabio/api"
token = Sys.getenv("ODB_TOKEN")
cfg = odb_config(base_url = base_url, token = token)
# Uma linha por referência. O endpoint aceita tanto o número quanto a URL.
references_by_doi = data.frame(
doi = c(
"10.1234/exemplo.2026.001",
"https://doi.org/10.1234/exemplo.2026.002"
),
stringsAsFactors = FALSE
)
# Proteção para que DOIs fictícios não sejam enviados por acidente.
if (FALSE) {
job = odb_import_bibreferences(references_by_doi, odb_cfg = cfg)
# Acompanhe a tarefa e examine resultados, avisos e erros por registro.
odb_get_jobs(params = list(id = job$id), odb_cfg = cfg)
odb_get_affected_ids(job_id = job$id, odb_cfg = cfg)
}
Quando um DOI real é resolvido, o OpenDataBio recupera o BibTeX, extrai seus metadados e cria a Referência Bibliográfica. A conclusão do UserJob não garante que todas as linhas foram importadas; confira especialmente DOIs não encontrados e referências já cadastradas.
Importar um arquivo BibTeX
#sua conexao
library(opendatabio)
base_url="http://localhost/opendatabio/api"
token = Sys.getenv("ODB_TOKEN")
cfg = odb_config(base_url=base_url, token = token)
odb_test(cfg)
#leia no R as referencias bibliograficas
library(rbibutils)
bibs = readBib(file="yourFileWithReferences.bib")
formatbib <- function(x) {
con <- textConnection("bibref", "w")
writeBib(x,con=con)
bibref = paste(bibref,collapse = " ")
close(con)
return(bibref)
}
#prepara para importar ao odb
bibtexts = sapply(bibs,formatbib)
data = data.frame(bibtex=bibtexts,standardize=1,stringsAsFactors = F)
#importa
jobid = odb_import_bibreferences(data,odb_cfg = cfg)
#aguarda finalizacao
odb_get_jobs(params=list(id=jobid$id),odb_cfg = cfg)
#pega o log da importacao
dt = odb_get_affected_ids(job_id=jobid$id,odb_cfg = cfg)