Skip to content

Project OAI SciELO Books

Gustavo Fonseca edited this page Mar 28, 2014 · 21 revisions

Suporte integral ao protocolo OAI-PMH

Objetivo

Permitir que outras instituições e aplicações coletem metadados do catálogo de livros do portal SciELO Books, utilizando este protocolo.

Requisitos

  • O sistema deve estar em conformidade com a especificação OAI-PMH 2.0 do protocolo, validado por meio do validador "Data Provider Validation and Registration".
  • A formatação para entrega dos metadados deve ser baseada no padrão Dublin Core.
  • As editoras devem ser consideradas containers de livros, podendo ser recuperadas através do verbo listsets do protocolo.

Requisitos não funcionais

  • RNF-01 O sistema deve ser capaz de atender 3000rpm.
  • RNF-02 O tempo de resposta de cada requisição deve ser de até 1s.
  • RNF-03 O sistema deve ser capaz de isolar os erros em tempo de execução, de maneira a garantir a disponibilidade do serviço.
  • RNF-04 O sistema deve possuir cobertura total(100%) de testes automatizados (testes de unidade e funcionais).
  • RNF-05 O sistema deve ser desacoplado da aplicação mantenedora dos dados.
  • RNF-06 O sistema deve escalar horizontalmente.

Restrições

  • Sistema operacional: GNU/Linux CentOS 6
  • Linguagem de programação: Python 2.7x
  • Framework web: Pyramid
  • Gestão de tarefas/bugs: Github
  • Repositório de códigos-fonte: Github
  • Licenciamento: BSD 2-clause

Interação / Critérios de aceite

  • Entregas semanais de pacotes de código por meio de pull requests ao repositório principal do projeto (https://github.com/scieloorg/books-oai).
  • O código deve possuir cobertura total de testes automatizados, caso contrário a entrega será recusada.
  • O código será revisado pela equipe de desenvolvimento do SciELO.
  • Toda a comunicação deverá se dar por meio da lista de discussão http://groups.google.com/group/scielo-dev/
  • O SciELO disponibilizará as fixtures necessárias para a confecção dos mocks que envolvem o acesso aos dados da aplicação de origem (API REST)

Estrutura de dados básica (ilustrativa)

Verbo Identify:

<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
    <responseDate>2013-08-30T14:12:29Z</responseDate>
    <request verb="Identify">http://www.scielo.br/oai/scielo-oai.php</request>
    <Identify>
        <repositoryName>SciELO Books</repositoryName>
        <baseURL>http://books.scielo.org/oai/</baseURL>
        <protocolVersion>2.0</protocolVersion>
        <adminEmail>books@scielo.org</adminEmail>
        <earliestDatestamp>1909-04-01</earliestDatestamp>
        <deletedRecord>no</deletedRecord>
        <granularity>YYYY-MM-DD</granularity>
    </Identify>
</OAI-PMH>

Verbo ListMetadataFormats:

<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
    <responseDate>2013-08-30T14:09:32Z</responseDate>
    <request verb="ListMetadataFormats">http://books.scielo.org/oai/</request>
    <ListMetadataFormats>
        <metadataFormat>
            <metadataPrefix>oai_dc</metadataPrefix>
            <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
            <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
        </metadataFormat>
    </ListMetadataFormats>
</OAI-PMH>

Verbo ListIdentifiers:

<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
    <responseDate>2013-08-30T14:14:12Z</responseDate>
    <request verb="ListIdentifiers" metadataPrefix="oai_dc">http://books.scielo.org/oai/</request>
    <ListIdentifiers>
        <header>
            <identifier>oai:scielobooks:sbid</identifier>
            <datestamp>1998-09-01</datestamp>
            <setSpec>edufba</setSpec>
        </header>
        <header>
            <identifier>oai:scielo:sbid</identifier>
            <datestamp>1998-09-01</datestamp>
            <setSpec>editora-unifesp</setSpec>
        </header>
        <resumptionToken>[a definir]</resumptionToken>
    </ListIdentifiers>
</OAI-PMH>

Verbo ListSets:

<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
    <responseDate>2013-08-30T14:21:00Z</responseDate>
    <request verb="ListSets">http://books.scielo.org/oai/</request>
    <ListSets>
        <set>
            <setSpec>edufba</setSpec>
            <setName>Edufba</setName>
        </set>
        <set>
            <setSpec>fiocruz</setSpec>
            <setName>Fiocruz</setName>
        </set>
        <set>
            <setSpec>editora-unesp</setSpec>
            <setName>Editora UNESP</setName>
        </set>
        <set>
            <setSpec>editora-unifesp</setSpec>
            <setName>Editora UNIFESP</setName>
        </set>
</OAI-PMH>

Verbo GetRecord:

<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
    <responseDate>2013-08-30T14:26:01Z</responseDate>
    <request verb="GetRecord" metadataPrefix="oai_dc" identifier="pcjtq">http://books.scielo.org/oai/</request>
    <GetRecord>
        <record>
            <header>
                <identifier>oai:scielo:pcjtq</identifier>
                <datestamp>1998-09-01</datestamp>
                <setSpec>editora-unesp</setSpec>
            </header>
            <metadata>
                <oai-dc:dc xmlns:oai-dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
                    <dc:title>Cidade do índio: transformações e cotidiano em Iauaretê</dc:title>
                    <dc:creator>Andrello Geraldo</dc:creator>
                    <dc:subject>índio</dc:subject>
                    <dc:description>O autor apresenta um estudo etnográfico de povos de Iaueretê (Tariano e Tukano), no Alto Rio Negro, detendo-se nas transformações sociais que vêm sofrendo em função do contato com o homem branco. O trabalho inicia-se com um levantamento histórico da ocupação da região, passa por temas como demarcação de terras e, finalmente, apresenta uma análise detida sobre os dois povos, evidenciando seus mitos e a relação com os brancos.</dc:description>
                    <dc:publisher>Editora Unesp</dc:publisher>
                    <dc:date>2006</dc:date>
                    <dc:type>book</dc:type>
                    <dc:format>epub</dc:format>
                    <dc:identifier>http://books.scielo.org/id/pcjtq</dc:identifier>
                    <dc:language>pt</dc:language>
                </oai-dc:dc>
            </metadata>
        </record>
    </GetRecord>
</OAI-PMH>

Verbo ListRecords:

<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
    <responseDate>2013-08-30T14:26:01Z</responseDate>
    <request verb="ListRecords" metadataPrefix="oai_dc">http://books.scielo.org/oai/</request>
    <GetRecord>
        <record>
            <header>
                <identifier>oai:scielo:pcjtq</identifier>
                <datestamp>2006</datestamp>
                <setSpec>editora-unesp</setSpec>
            </header>
            <metadata>
                <oai-dc:dc xmlns:oai-dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
                    <dc:title>Cidade do índio: transformações e cotidiano em Iauaretê</dc:title>
                    <dc:creator>Geraldo Andrello</dc:creator>
                    <dc:subject>índio</dc:subject>
                    <dc:description>O autor apresenta um estudo etnográfico de povos de Iaueretê (Tariano e Tukano), no Alto Rio Negro, detendo-se nas transformações sociais que vêm sofrendo em função do contato com o homem branco. O trabalho inicia-se com um levantamento histórico da ocupação da região, passa por temas como demarcação de terras e, finalmente, apresenta uma análise detida sobre os dois povos, evidenciando seus mitos e a relação com os brancos.</dc:description>
                    <dc:publisher>Editora Unesp</dc:publisher>
                    <dc:date>2006</dc:date>
                    <dc:type>book</dc:type>
                    <dc:format>epub</dc:format>
                    <dc:identifier>http://books.scielo.org/id/pcjtq</dc:identifier>
                    <dc:language>pt</dc:language>
                </oai-dc:dc>
            </metadata>
        </record>
        <record>
            <header>
                <identifier>oai:scielo:f4gvg</identifier>
                <datestamp>2002</datestamp>
                <setSpec>editora-unesp</setSpec>
            </header>
            <metadata>
                <oai-dc:dc xmlns:oai-dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
                    <dc:title>A reinvenção do espaço: diálogos em torno da construção do significado de uma categoria</dc:title>
                    <dc:creator>Douglas Santos</dc:creator>
                    <dc:subject>espaço</dc:subject>
                    <dc:description>Discute o conceito de espaço sob diversas perspectivas, concluindo que a especificidade da geografia é justamente localizar fenômenos. Isso não impede, porém, um diálogo com outras ciências, como a física, a biologia, a economia e a sociologia. Leitura essencial para geógrafos, engloba desde o nascimento do espaço métrico à filosofia de Kant, passando por pensadores do calibre de Maquiavel, Giordano Bruno, Copérnico, Galileu Galilei, Descartes e Newton.</dc:description>
                    <dc:publisher>Editora Unesp</dc:publisher>
                    <dc:date>2002</dc:date>
                    <dc:type>book</dc:type>
                    <dc:format>epub</dc:format>
                    <dc:identifier>http://books.scielo.org/id/f4gvg</dc:identifier>
                    <dc:language>pt</dc:language>
                </oai-dc:dc>
            </metadata>
        </record>
        <resumptionToken>[a definir]</resumptionToken>
    </GetRecord>
</OAI-PMH>

Fixtures

Listagem de editoras:

API proposta:
  http://books.scielo.org/api/v1/publishers/

Estrutura de dados de resposta:

[
  {
      "_id": "edufba",
      "title": "EDUFBA",
      "total_items": 1
  }
]

Detalhes de um livro:

Api proposta:
  http://books.scielo.org/api/v1/book/:id/

Estrutura de dados de resposta:

{

  "updated": "2012-06-13 11:27:36.284429",
  "pisbn": "9788575411902",
  "year": "2010",
  "publisher": "Editora FIOCRUZ",
  "creators": {
      "individual_author": [
          [
              "Campos, Edemilson Antunes de",
              "http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4784628A2"
          ]
      ]
  },
  "language": "pt",
  "title": "'Nosso Remédio É a Palavra': uma etnografia sobre o modelo terapêutico de Alcoólicos Anônimos",
  "eisbn": "9788575413418",
  "cover_thumbnail": {
      "type": "image/jpeg",
      "uri": "http://books.scielo.org/id/xgzng/cover/cover_thumbnail.jpeg"
  },
  "cover": {
      "type": "image/jpeg",
      "uri": "http://books.scielo.org/id/xgzng/cover/cover.jpeg"
  },
  "synopsis": "Os assim chamados ‘doentes alcoólicos’ produzem continuamente falas sobre eles mesmos, não apenas porque o alcoolismo é um problema social e médico das sociedades contemporâneas, mas também porque as associações de ‘adictos’, tais como Alcoólicos Anônimos (A.A.), são um fenômeno em franco desenvolvimento, que, a cada dia, desafiam as ciências sociais e médicas. A obra trata do modo como os integrantes de grupos de mútua ajuda de A.A. vivem e gerenciam a chamada doença alcoólica e como lutam contra as recaídas. Enfoca o modelo terapêutico desenvolvido por tais grupos, tomando por base pesquisa etnográfica realizada na zona leste da cidade de São Paulo – com ênfase nos significados atribuídos ao alcoolismo –, nas relações sociais nas quais o alcoólico está inserido e na repercussão na esfera familiar.",
  "_id": "xgzng"

}

Listagem de livros:

API proposta:
  http://books.scielo.org/api/v1/books/

Estrutura de dados de resposta:

[
  {
    "publisher": "EDUFBA",
    "_id": "37t",
    "eisbn": "9788523205607",
    "language": "pt",
    "pdf_file": {
      "type": "application/pdf",
      "uri": "http://books.scielo.org/id/37t/pdf/ribeiro-9788523205607.pdf"
    },
    "epub_file": {
      "type": "application/epub+zip",
      "uri": "http://books.scielo.org/id/37t/epub/ribeiro-9788523205607.epub"
    },
    "cover_thumbnail": {
      "type": "image/jpeg",
      "uri": "http://books.scielo.org/id/37t/cover/cover_thumbnail.jpeg"
    },
    "cover": {
      "type": "image/jpeg",
      "uri": "http://books.scielo.org/id/37t/cover/cover.jpeg"
    },
    "synopsis": "O livro constr\u00f3i um di\u00e1logo entre pesquisadores brasileiros e franceses, de diferentes campos do conhecimento, sobre dois temas que passaram a ocupar os espa\u00e7os do debate acad\u00eamico e das a\u00e7\u00f5es p\u00fablicas, nas duas \u00faltimas d\u00e9cadas: a quest\u00e3o do desenvolvimento e a quest\u00e3o territorial. Duas quest\u00f5es foram colocadas para os pesquisadores: qual o significado do conceito de territ\u00f3rio a partir de seu campo de estudo e quais contribui\u00e7\u00f5es podem aportar para a compreens\u00e3o dos processos de desenvolvimento. Al\u00e9m de um rico debate no sentido epistemol\u00f3gico, a partir dos diversos campos de an\u00e1lise o livro aponta tamb\u00e9m algumas indaga\u00e7\u00f5es: como trabalhar a rela\u00e7\u00e3o entre espa\u00e7o e territ\u00f3rio, como caraceterizar fronteiras territoriais em um mundo em que, elas marcam profundamente tanto a uni\u00e3o/ interc\u00e2mbio quanto a  ruptura/interdi\u00e7\u00e3o? E v\u00e1rias outras quet\u00f5es que compoem a agenda de debate da economia, geografia, ciencias pol\u00edticas, sociologia e da administra\u00e7\u00e3o.",
    "year": "2009",
    "title": "Compreendendo a complexidade socioespacial contempor\u00e2nea: o territ\u00f3rio como categoria de di\u00e1logo interdisciplinar",
    "creators": {
      "organizer": [
        ["Ribeiro, Maria Teresa Franco", null]
      ],
      "collaborator": [
        ["Milani, Carlos Roberto Sanchez", null]
      ]
    }
  }
]

Mudanças:

API proposta:
   http://books.scielo.org/api/v1/changes/?since=:seq

Estrutura de dados da resposta:

{"results":[
  {"seq":1,"id":"test","changes":[{"rev":"1-aaa8e2a031bca334f50b48b6682fb486"}]}
 ],
 "last_seq":1}

Execução

  • Início das atividades em 14/01/2014.
  • Sprints semanais, com entregas nas segundas-feiras no final do dia e reunião
    para novas atividades nas terças-feiras também no final do dia.
  1. Design da aplicação.
  2. Sincronização - Coleta de dados do SciELO Books, de maneira incremental, e armazenamento local em formato conveniente.
  3. Renderer DC - Renderizador no formato Dublin-Core.
  4. Identify, ListMetadataFormats
  5. ListIdentifiers, ListSets
  6. GetRecord, ListRecords
  7. Resumption Token
  8. Ajustes e implantação

Endpoints disponíveis -> https://github.com/scieloorg/scielobooks/blob/master/scielobooks/configure.zcml#L326