Provedor de dados OAI-PMH parte da suíte de aplicativos da Metodologia SciELO (SciELO Publishing Framework).
Principais objetivos:
- Suportar por completo o protocolo OAI-PMH versão 2.0;
- Distribuir XMLs SciELO PS (JATS);
- Flexibilidade na criação de novos sets e formatos de metadados;
- Integração com o Kernel, considerado fonte autoritativa dos dados da coleção.
Para mais informação sobre a nova arquitetura de sistemas de informação da Metodologia SciELO consulte https://docs.google.com/document/d/14YBl7--4ouaWBQhxzUYWRuhmegwnSYrDgupsED6rhvM/edit?usp=sharing
- Python 3.7
- MongoDB
Configurando a aplicação:
diretiva no arquivo .ini | variável de ambiente | valor padrão |
---|---|---|
oaipmh.mongodb.dsn | OAIPMH_MONGODB_DSN | mongodb://db:27017 |
oaipmh.mongodb.dbname | OAIPMH_MONGODB_DBNAME | oaipmh |
oaipmh.mongodb.replicaset | OAIPMH_MONGODB_REPLICASET | |
oaipmh.mongodb.readpreference | OAIPMH_MONGODB_READPREFERENCE | secondaryPreferred |
oaipmh.repo.name | OAIPMH_REPO_NAME | SciELO - Scientific Electronic Library Online |
oaipmh.repo.baseurl | OAIPMH_REPO_BASEURL | http://www.scielo.br/oai/scielo-oai.php |
oaipmh.repo.protocolversion | OAIPMH_REPO_PROTOCOLVERSION | 2.0 |
oaipmh.repo.adminemails | OAIPMH_REPO_ADMINEMAILS | scielo@scielo.org |
oaipmh.repo.deletedrecord | OAIPMH_REPO_DELETEDRECORD | no |
oaipmh.repo.granularity | OAIPMH_REPO_GRANULARITY | YYYY-MM-DDThh:mm:ssZ |
oaipmh.repo.compression | OAIPMH_REPO_COMPRESSION | identity |
oaipmh.resumptiontoken.batchsize | OAIPMH_RESUMPTIONTOKEN_BATCHSIZE | 100 |
oaipmh.site.baseurl | OAIPMH_SITE_BASEURL | https://www.scielo.br |
A configuração padrão assume o uso de uma instância standalone do MongoDB. Para uma instância de produção recomenda-se o uso de replica sets. Para mais detalhes acesse https://docs.mongodb.com/manual/replication/.
Ao conectar-se a um replica set, a diretiva oaipmh.mongodb.replicaset
deve ser definida com o nome do replica set. Além disso, é possível informar os diversos
seeds do replica set por meio da diretiva oaipmh.mongodb.dsn
,
separando suas URIs com espaços em branco ou quebra de linha.
Configurações avançadas:
variável de ambiente | valor padrão |
---|---|
OAIPMH_MAX_RETRIES | 4 |
OAIPMH_BACKOFF_FACTOR | 1.2 |
OAIPMH_HTTP_REQ_TIMEOUT | 5 |
$ git clone https://github.com/scieloorg/kernel-oaipmh.git
$ cd kernel-oaipmh
$ pip install -r requirements.txt && python setup.py develop
$ pserve development.ini
Esta configuração espera uma instância de MongoDB escutando localhost na porta 27017.
Na primeira vez será necessário criar os índices do banco de dados. Para tal
execute o comando oaipmhctl create-indexes
mongo-db-dsn dbname
. Exemplo:
$ oaipmhctl create-indexes mongodb://localhost:27017 oaipmh
Para sincronizar o banco de dados da aplicação com o de uma instância do
Kernel, execute o comando oaipmhctl sync
source-url mongo-db-dsn dbname
. Exemplo:
$ oaipmhctl sync http://my-kernel:6543 mongodb://localhost:27017 oaipmh
$ docker-compose up -d
Na primeira vez será necessário criar os índices do banco de dados e sincronizar o banco de dados:
$ docker-compose exec webapp_oaipmh oaipmhctl create-indexes
mongo-db-dsn dbname
$ docker-compose exec webapp_oaipmh oaipmhctl sync
source-url mongo-db-dsn dbname
A sincronização deverá ser executada periodicamente, de forma a manter o provedor de dados OAI-PMH sincronizado com a fonte autoritativa de dados. O utilitário de sincronização cuidará das informações relativas ao estado da sincronização, de forma que o usuário não necessitará controlar timestamps ou coisas do tipo.
Para testar se a instância foi instalada corretamente basta executar:
curl -X GET http://0.0.0.0:6543/?verb=Identify
Copyright 2020 SciELO scielo-dev@googlegroups.com. Licensed under the terms of the BSD license. Please see LICENSE in the source code for more information.
https://github.com/scieloorg/kernel-oaipmh/blob/master/LICENSE