|
|
# OAI (Open Archives Initiative)
|
|
|
|
|
|
---
|
|
|
|
|
|
- **História:** surgiu no desenvolvimento de repositórios e-prints que, na epóca, eram usados para comunicar os resultados das pesquisas acadêmicas em desenvolvimento, antes da avaliação da banca ou publicação em revista.
|
|
|
|
|
|
- **Essência da abordagem:** disponibilizar o acesso a materiais web-acessíveis através de repositórios interoperáveis, para compartilhamento de metadados, publicações e arquivamentos.
|
|
|
|
|
|
- **Objetivo:** desenvolver e promover padrões de interoperabilidade, tendo em vista facilitar a eficiência de disseminação de conteúdo.
|
|
|
|
|
|
# OAI-PMH (Open Archives Initiative Protocol for metadata Harvesting)
|
|
|
|
|
|
- Define um mecanismo para colheita("harvesting") de metadados de outros repositórios. Além de ser uma opção de técnica simples para fornecedores disponibilizarem seus metadados a outros serviços.
|
|
|
|
|
|
- O metadado que será transferido pode estar em qualquer formato aceito pela comunidade, porém Dublin Core é o recomendado para prover um nível básico de interoperabilidade.
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Ideias principais:
|
|
|
|
|
|
- Acesso livre aos metadados.
|
|
|
- Interface consistente para repositórios e services providers.
|
|
|
- Implementação sem esforço.
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Funcionamento Básico:
|
|
|
|
|
|
- http://www.oaforum.org/tutorial/image/OAI-idea.gif
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Visão geral do modelo e da estrutura:
|
|
|
- http://www.oaforum.org/tutorial/image/structure-model.gif
|
|
|
- Baseado em HTTP ( GET e POST ).
|
|
|
- Responses codificados em XML.
|
|
|
- Mensagens de erro HTTP-based.
|
|
|
- Suporta controle de fluxo.
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Detalhes do protocolo:
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Records:
|
|
|
- São os metadados dos recursos no formato específico (Dublin Core, MARC etc).
|
|
|
- Possuem 3 partes, que podem ser divididas em vários componentes:
|
|
|
|
|
|
---
|
|
|
|
|
|
- **header (obrigatório):**
|
|
|
- identifier (obrigatório e único).
|
|
|
- datestamp (obrigatório e único).
|
|
|
- data da última modificação do metadado.
|
|
|
- obrigatório em todos os itens.
|
|
|
- pode ser de duas formas: YYYY-MM-DD ou YYYY-MM-DDThh: mm:ssZ
|
|
|
- função: prover os argumentos from e until.
|
|
|
- setSpec (opcional e pode conter vários).
|
|
|
- permite o particionamento lógico do repositório.
|
|
|
- é necessário e importante a negociação dos sets.
|
|
|
- função: colheita seletiva.
|
|
|
- exemplo: publication types (tese, artigo ...), document types (texto, audio, imagem ...).
|
|
|
|
|
|
- **metadata (obrigatório):**
|
|
|
- metadado codificado em XML com root tag, repositórios devem suportar Dublin Core e podem suportar outros formatos.
|
|
|
- Schema:
|
|
|
- Propriedades:
|
|
|
- id para especificar o formato.
|
|
|
- metadata schema URL.
|
|
|
- XML namespace URI.
|
|
|
- **about (opcional):**
|
|
|
- rigths statements.
|
|
|
- provenance statements.
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Erros e Exceptions:
|
|
|
|
|
|
- badArgument
|
|
|
- badResumptionToken
|
|
|
- badVerb
|
|
|
- cannotDisseminateFormat
|
|
|
- idDoesNotExist
|
|
|
- noRecordsMatch
|
|
|
- noMetaDataFormats
|
|
|
- noSetHierarch
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Requests types:
|
|
|
|
|
|
- **Identify**
|
|
|
- **função:** descrever um repositório.
|
|
|
- **exemplo:** archive.org/oai-script?verb=Identify
|
|
|
- **parametros:** nenhum.
|
|
|
- **erros/exceptions:** badArgument (e.g. archive.org/oai-script?verb=Identify&set=biology)
|
|
|
|
|
|
- **ListMetadataFormats**
|
|
|
- **função:** retorna todos os metadados disponíveis de um repositório.
|
|
|
- **exemplo:** archive.org/oai-script?verb=ListMetadataFormats&identifier=oai:HUBerlin.de:3000218
|
|
|
- **parametros:** identifier (optional)
|
|
|
- **erros/exceptions:**
|
|
|
- badArgument
|
|
|
- idDoesNotExist(e.g. archive.org/oai-script?verb=ListMetadataFormats&identifier=really-wrong-identifier)
|
|
|
- noMetadataFormats
|
|
|
|
|
|
- **ListSets**
|
|
|
- **função:** retorna a estruturação dos sets de um repositório.
|
|
|
- **exemplo:** archive.org/oai-script?verb=ListSets
|
|
|
- **parametros:** resumptionToken (exclusive)
|
|
|
- **erros/exceptions:**
|
|
|
- badArgument
|
|
|
- badResumptionToken(e.g. archive.org/oai-script?verb=ListSets&resumptionToken=any-wrong-token)
|
|
|
- noSetHierarchy
|
|
|
|
|
|
- **ListIdentifiers**
|
|
|
- **função:** forma abreviada de ListRecords, retorna somente os headers.
|
|
|
- **exemplo:** archive.org/oai-script?verb=ListIdentifiers&metadataPrefix=oai_dc&from=2002-12-01
|
|
|
- **parametros:**
|
|
|
- from (optional)
|
|
|
- until (optional)
|
|
|
- metadataPrefix (required)
|
|
|
- set (optional)
|
|
|
- resumptionToken (exclusive)
|
|
|
- **erros/exceptions:**
|
|
|
- badArgument (e.g. ?&from=2002-12-01-13:45:00)
|
|
|
- badResumptionToken
|
|
|
- cannotDisseminateFormat
|
|
|
- noRecordsMatch
|
|
|
- noSetHierarchy
|
|
|
- **exemplo de response:** http://www.oaforum.org/tutorial/image/example01.gif
|
|
|
|
|
|
- **ListRecords**
|
|
|
- **função:** lista os records de um repositório.
|
|
|
- **exemplo:** archive.org/oai-script?verb=ListRecords&metadataPrefix=oai_dc&set=biology
|
|
|
- **parametros:**
|
|
|
- from (optional)
|
|
|
- until (optional)
|
|
|
- metadataPrefix (required)
|
|
|
- set (optional)
|
|
|
- resumptionToken (exclusive)
|
|
|
- **erros/exceptions:**
|
|
|
- badArgument
|
|
|
- badResumptionToken
|
|
|
- cannotDisseminateFormat
|
|
|
- noRecordsMatch
|
|
|
- noSetHierarchy
|
|
|
|
|
|
- **GetRecord**
|
|
|
- **função:** retorna o metadado de um único record do repositório.
|
|
|
- **exemplo:** archive.org/oai-script?verb=GetRecord&identifier=oai:HUBerlin.de:3000218&metadataPrefix=oai_dc
|
|
|
- **parametros:**
|
|
|
- identifier (required)
|
|
|
- metadataPrefix (required)
|
|
|
- **erros/exceptions:**
|
|
|
- badArgument
|
|
|
- cannotDisseminateFormat
|
|
|
- idDoesNotExist
|
|
|
- **exemplo de response:** http://www.oaforum.org/tutorial/image/example02.gif
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Requests format:
|
|
|
|
|
|
- Devem ser submetidos usando GET e POST.
|
|
|
- No mínimo uma key = value pair:verb=RequestType deve ser provido.
|
|
|
- Exemplo: GET http://archive.org/oai?verb=ListRecords&metadataPrefix=oai_dc
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Response:
|
|
|
|
|
|
- São formatadas como HTTP responses.
|
|
|
- O conteúdo deve ser text/xml.
|
|
|
- o formato da response deve ser bem formado, com XML markups da seguinte forma:
|
|
|
- XML declaration
|
|
|
- (<? xml version="1.0" encoding="UTF-8"?>)
|
|
|
- root element chamado OAI-PMH com 3 atributos
|
|
|
- (xmlns, xmlns:xsi,xsi:schemaLocation)
|
|
|
- três elementos filho
|
|
|
- responseDate (UTC datetime)
|
|
|
- request
|
|
|
- a) error ( no caso de erro)
|
|
|
b) elemento com o nome do OAI-PMH pedido.
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Flow control (controle de fluxo):
|
|
|
|
|
|
- http://www.oaforum.org/tutorial/image/flow-control.gif
|
|
|
- 4 tipos de request retornam uma lista, sendo 3 delas muito grandes.
|
|
|
- OAI-PMH suporta particionamento.
|
|
|
- Os admins dos repositórios devem tomar as decisões de particionamento: quando dividir e como.
|
|
|
|
|
|
---
|
|
|
|
|
|
## - Observações:
|
|
|
- O link entre o metadado e o conteúdo relacionado não é definido pelo protocolo.
|
|
|
- A versão 2.0 do protocolo OAI-PMH não é compatível com a versão 1.0.
|
|
|
- Dublin Core: contém 15 elementos, todos são opcionais e podem ser repetidos.
|
|
|
|
|
|
--- |
|
|
\ No newline at end of file |