Skip to content

Implementar elementos MODS faltantes para compatibilidade com padrão BHL #5

@Rossi-Luciano

Description

@Rossi-Luciano

Contexto

O Biodiversity Heritage Library (BHL) é a maior biblioteca digital de acesso aberto para literatura de biodiversidade, operando como consórcio mundial de bibliotecas de história natural. O BHL utiliza o protocolo OAI-PMH com metadados no formato MODS 3.8 para harvesting e incorporação de conteúdo.

Atualmente, o SciELO expõe metadados via OAI-PMH utilizando transformação XSLT (arquivo mods.xsl) que converte metadados Dublin Core em MODS. Esta transformação foi originalmente desenvolvida pelo DSpace @ Lyncode e apresenta implementação parcial dos elementos MODS.

Para que artigos científicos do SciELO possam ser incorporados ao BHL via harvesting OAI-PMH, é necessário adequar a transformação MODS aos padrões utilizados pelo BHL.

Problema

O arquivo mods.xsl atual implementa apenas 35% dos elementos MODS utilizados pelo BHL, resultando em:

  1. Perda de contexto de publicação (falta hierarquia periódico/volume/número)
  2. Impossibilidade de citação completa dos artigos
  3. Perda de informações de localização e acesso
  4. Falta de papéis de contribuidores (author, editor, etc.)
  5. Ausência de metadados de autoridade e vocabulários controlados

Objetivo

Implementar elementos MODS faltantes para atingir compatibilidade mínima de 90% com o padrão BHL, priorizando elementos críticos para descoberta, identificação e citação de artigos científicos.

Padrão MODS do BHL

Referências Oficiais

Versão MODS

  • BHL utiliza: MODS 3.8
  • Arquivo atual: MODS 3.1 (linha 20 do mods.xsl)

Elementos MODS Utilizados pelo BHL

Categorias Principais

  1. Identificação e Título (titleInfo)
  2. Autoria e Responsabilidade (name)
  3. Tipo e Gênero (typeOfResource, genre)
  4. Publicação e Origem (originInfo)
  5. Idioma (language)
  6. Descrição (abstract, note)
  7. Assuntos (subject)
  8. Classificação (classification)
  9. Relacionamentos (relatedItem)
  10. Identificadores (identifier)
  11. Localização (location)
  12. Acesso e Direitos (accessCondition)
  13. Metadados do Registro (recordInfo)

Status Atual da Implementação

Elementos Já Implementados

Elemento Qualidade Observações
mods:titleInfo/mods:title Adequado Implementado corretamente
mods:name/mods:namePart Parcial Falta estrutura de roles
mods:abstract Adequado Implementado corretamente
mods:identifier Adequado Captura tipos dinamicamente
mods:originInfo/mods:dateIssued Parcial Falta keyDate e outros elementos
mods:language/mods:languageTerm Parcial Falta atributos type e authority
mods:subject/mods:topic Parcial Falta authority e outros tipos
mods:accessCondition Parcial Falta suporte a xlink:href
mods:genre Parcial Falta atributo authority

Problemas Identificados

  1. Erro de mapeamento (linhas 26-39): dateAvailable e dateAccessioned estão invertidos
  2. Código duplicado (linhas 63-68): Lógica repetida para accessCondition
  3. Versão desatualizada: Schema MODS 3.1 ao invés de 3.8

Elementos Críticos Faltantes

Prioridade 1 - CRÍTICO

1. relatedItem type="host" com part

Importância: CRÍTICA - Sem este elemento, artigos não podem ser citados corretamente.

Descrição: Identifica o periódico host, volume, número e paginação do artigo.

Estrutura esperada:

<mods:relatedItem type="host">
    <mods:titleInfo>
        <mods:title>Revista Brasileira de Botânica</mods:title>
    </mods:titleInfo>
    <mods:identifier type="issn">0100-8404</mods:identifier>
    <mods:originInfo>
        <mods:publisher>Sociedade Botânica do Brasil</mods:publisher>
    </mods:originInfo>
    <mods:part>
        <mods:detail type="volume">
            <mods:number>45</mods:number>
        </mods:detail>
        <mods:detail type="issue">
            <mods:number>3</mods:number>
        </mods:detail>
        <mods:extent unit="page">
            <mods:start>234</mods:start>
            <mods:end>245</mods:end>
        </mods:extent>
        <mods:date>2022</mods:date>
    </mods:part>
</mods:relatedItem>

Mapeamento proposto:

  • dc.relation.ispartofmods:relatedItem/mods:titleInfo/mods:title
  • dc.source → fallback para título do periódico
  • dc.citation.volumemods:relatedItem/mods:part/mods:detail[@type='volume']/mods:number
  • dc.citation.issuemods:relatedItem/mods:part/mods:detail[@type='issue']/mods:number
  • dc.citation.spagemods:relatedItem/mods:part/mods:extent/mods:start
  • dc.citation.epagemods:relatedItem/mods:part/mods:extent/mods:end
  • dc.identifier.issnmods:relatedItem/mods:identifier[@type='issn']
  • dc.publishermods:relatedItem/mods:originInfo/mods:publisher

2. name com role

Importância: CRÍTICA - Distinguir autores de editores e outros contribuidores.

Estrutura esperada:

<mods:name type="personal">
    <mods:namePart>Silva, João da</mods:namePart>
    <mods:role>
        <mods:roleTerm type="text" authority="marcrelator">author</mods:roleTerm>
    </mods:role>
</mods:name>

Mapeamento proposto:

  • dc.contributor.authormods:name + mods:role[author]
  • dc.contributor.editormods:name + mods:role[editor]

Valores comuns de roleTerm:

  • author
  • editor
  • translator
  • contributor

3. typeOfResource

Importância: ALTA - Identifica o tipo de recurso.

Estrutura esperada:

<mods:typeOfResource>text</mods:typeOfResource>

Valor fixo: Para artigos científicos, sempre "text"

4. location com url

Importância: ALTA - Link de acesso ao artigo.

Estrutura esperada:

<mods:location>
    <mods:url usage="primary display" access="object in context">
        https://www.scielo.br/j/rbbot/a/xyz123/
    </mods:url>
    <mods:physicalLocation>SciELO Brazil</mods:physicalLocation>
</mods:location>

Mapeamento proposto:

  • dc.identifier.urimods:location/mods:url

Prioridade 2 - IMPORTANTE

5. genre com authority

Estrutura esperada:

<mods:genre authority="marcgt">article</mods:genre>

Mapeamento proposto:

  • dc.type = "research-article" → <mods:genre authority="marcgt">article</mods:genre>
  • dc.type = "review-article" → <mods:genre authority="marcgt">review</mods:genre>
  • dc.type = "editorial" → <mods:genre authority="marcgt">editorial</mods:genre>

6. language com atributos

Estrutura esperada:

<mods:language>
    <mods:languageTerm type="code" authority="iso639-2b">por</mods:languageTerm>
</mods:language>

Modificação necessária: Adicionar atributos type="code" e authority="iso639-2b"

7. subject geográfico e temporal

Estrutura esperada:

<mods:subject>
    <mods:geographic>Brazil</mods:geographic>
</mods:subject>

<mods:subject>
    <mods:temporal encoding="w3cdtf">2020-2022</mods:temporal>
</mods:subject>

Mapeamento proposto:

  • dc.coverage.spatialmods:subject/mods:geographic
  • dc.coverage.temporalmods:subject/mods:temporal

8. accessCondition com xlink

Estrutura esperada:

<mods:accessCondition type="use and reproduction" 
                      xlink:href="http://creativecommons.org/licenses/by/4.0/">
    Creative Commons Attribution 4.0 International
</mods:accessCondition>

Modificação necessária: Adicionar namespace xlink e atributo href quando valor contém URL

Prioridade 3 - RECOMENDADO

9. recordInfo

Estrutura esperada:

<mods:recordInfo>
    <mods:recordContentSource>SciELO Brazil</mods:recordContentSource>
    <mods:recordCreationDate encoding="w3cdtf">2022-03-15</mods:recordCreationDate>
    <mods:recordChangeDate encoding="w3cdtf">2025-12-10</mods:recordChangeDate>
    <mods:recordIdentifier>S0100-84042022000300001</mods:recordIdentifier>
    <mods:languageOfCataloging>
        <mods:languageTerm type="code" authority="iso639-2b">por</mods:languageTerm>
    </mods:languageOfCataloging>
</mods:recordInfo>

Mapeamento proposto:

  • dc.date.accessionedmods:recordCreationDate
  • dc.date.availablemods:recordChangeDate
  • dc.identifier.urimods:recordIdentifier

10. note

Estrutura esperada:

<mods:note type="funding">Funded by FAPESP grant 2020/12345-0</mods:note>

Mapeamento proposto:

  • dc.description.sponsorshipmods:note[@type='funding']
  • dc.description (não abstract) → mods:note

11. subject com authority

Estrutura esperada:

<mods:subject authority="mesh">
    <mods:topic>Diabetes Mellitus</mods:topic>
</mods:subject>

Mapeamento proposto:

  • dc.subject.meshmods:subject[@authority='mesh']
  • dc.subject.decsmods:subject[@authority='decs']

12. originInfo completo

Estrutura esperada:

<mods:originInfo>
    <mods:dateIssued encoding="iso8601" keyDate="yes">2022-09</mods:dateIssued>
</mods:originInfo>

Modificação necessária: Adicionar atributo keyDate="yes" ao dateIssued

13. name com afiliação e ORCID

Estrutura esperada:

<mods:name type="personal">
    <mods:namePart>Silva, Maria</mods:namePart>
    <mods:affiliation>Universidade de São Paulo</mods:affiliation>
    <mods:nameIdentifier type="orcid">0000-0001-2345-6789</mods:nameIdentifier>
    <mods:role>
        <mods:roleTerm type="text" authority="marcrelator">author</mods:roleTerm>
    </mods:role>
</mods:name>

Mapeamento proposto (se campos disponíveis no DSpace):

  • Estrutura de autor com afiliação em subcampo
  • ORCID se disponível em metadado específico

Elementos Não Aplicáveis

Os seguintes elementos utilizados pelo BHL não se aplicam a artigos científicos digitais do SciELO e podem ser omitidos:

  • physicalDescription/form - artigos são born digital
  • physicalDescription/extent - páginas já estão em relatedItem/part
  • physicalDescription/digitalOrigin - sempre "born digital"
  • originInfo/place - local de publicação é do periódico
  • originInfo/dateCreated - data de publicação é suficiente
  • originInfo/copyrightDate - raramente diferente de dateIssued
  • classification - pouco usado para artigos individuais
  • part no nível do artigo - informação vai em relatedItem/part

Correções Necessárias

1. Atualizar versão do schema MODS

Linha 20 atual:

xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-1.xsd"

Modificação:

xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-8.xsd"
version="3.8"

2. Corrigir erro de mapeamento de datas

Linhas 26-39 atuais: dateAvailable e dateAccessioned estão invertidos

Correção:

  • Linha 28: mods:dateAvailable deve vir de dc.date.available (não accessioned)
  • Linha 35: mods:dateAccessioned deve vir de dc.date.accessioned (não available)

3. Remover código duplicado

Linhas 63-68: Lógica duplicada para accessCondition pode ser consolidada

4. Adicionar namespace xlink

Adicionar na declaração do stylesheet:

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:doc="http://www.lyncode.com/xoai"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    version="1.0">

Tarefas

Fase 1 - Elementos Críticos

  • Atualizar schema para MODS 3.8
  • Adicionar namespace xlink
  • Implementar relatedItem[@type='host'] com part completo
  • Adicionar role em name para autores e editores
  • Implementar typeOfResource
  • Implementar location com url
  • Corrigir erro de mapeamento de datas (linhas 26-39)

Fase 2 - Elementos Importantes

  • Adicionar authority="marcgt" em genre
  • Adicionar atributos type e authority em language
  • Implementar subject/geographic e subject/temporal
  • Adicionar xlink:href em accessCondition quando aplicável
  • Adicionar keyDate="yes" em dateIssued

Fase 3 - Melhorias

  • Implementar recordInfo completo
  • Implementar note para financiamento e outras notas
  • Adicionar suporte a authority em subject
  • Adicionar affiliation e nameIdentifier em name
  • Remover código duplicado (linhas 63-68)

Fase 4 - Validação

  • Validar XML gerado contra schema MODS 3.8
  • Testar com amostra de registros SciELO
  • Verificar compatibilidade com harvester BHL
  • Documentar mapeamentos DC → MODS

Impacto Esperado

Completude MODS

  • Atual: 35% dos elementos BHL (11 de 31)
  • Após Fase 1: 70% (13 de 19 elementos aplicáveis a artigos)
  • Após Fase 2: 90% (17 de 19 elementos aplicáveis)
  • Após Fase 3: 95% (18 de 19 elementos aplicáveis)

Benefícios

  1. Artigos SciELO poderão ser harvested pelo BHL
  2. Citações completas com periódico/volume/número/páginas
  3. Melhor descoberta através de metadados ricos
  4. Interoperabilidade com outros repositórios que usam MODS
  5. Conformidade com padrões internacionais de bibliotecas digitais

Referências Técnicas

Documentação MODS

Documentação BHL

Vocabulários Controlados

Exemplo Completo

Registro MODS Completo Esperado

<mods:mods xmlns:mods="http://www.loc.gov/mods/v3" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:xlink="http://www.w3.org/1999/xlink"
           xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-8.xsd"
           version="3.8">
    
    <mods:titleInfo>
        <mods:title>Diversidade de aves em fragmentos de Mata Atlântica no Estado de São Paulo</mods:title>
    </mods:titleInfo>
    
    <mods:name type="personal">
        <mods:namePart>Silva, João da</mods:namePart>
        <mods:affiliation>Universidade de São Paulo, Instituto de Biociências</mods:affiliation>
        <mods:nameIdentifier type="orcid">0000-0001-2345-6789</mods:nameIdentifier>
        <mods:role>
            <mods:roleTerm type="text" authority="marcrelator">author</mods:roleTerm>
        </mods:role>
    </mods:name>
    
    <mods:name type="personal">
        <mods:namePart>Santos, Maria Fernanda</mods:namePart>
        <mods:affiliation>UNICAMP, Departamento de Zoologia</mods:affiliation>
        <mods:role>
            <mods:roleTerm type="text" authority="marcrelator">author</mods:roleTerm>
        </mods:role>
    </mods:name>
    
    <mods:typeOfResource>text</mods:typeOfResource>
    
    <mods:genre authority="marcgt">article</mods:genre>
    
    <mods:originInfo>
        <mods:dateIssued encoding="iso8601" keyDate="yes">2022-09</mods:dateIssued>
    </mods:originInfo>
    
    <mods:language>
        <mods:languageTerm type="code" authority="iso639-2b">por</mods:languageTerm>
    </mods:language>
    
    <mods:abstract>
        Este estudo avaliou a diversidade de aves em três fragmentos de Mata Atlântica 
        localizados no interior do Estado de São Paulo. Foram registradas 145 espécies 
        pertencentes a 42 famílias durante o período de amostragem de 12 meses.
    </mods:abstract>
    
    <mods:subject authority="lcsh">
        <mods:topic>Biodiversity</mods:topic>
    </mods:subject>
    
    <mods:subject authority="lcsh">
        <mods:topic>Birds</mods:topic>
    </mods:subject>
    
    <mods:subject>
        <mods:geographic>São Paulo (State)</mods:geographic>
    </mods:subject>
    
    <mods:subject>
        <mods:geographic>Atlantic Forest</mods:geographic>
    </mods:subject>
    
    <mods:subject>
        <mods:temporal encoding="w3cdtf">2020-2021</mods:temporal>
    </mods:subject>
    
    <mods:relatedItem type="host">
        <mods:titleInfo>
            <mods:title>Revista Brasileira de Ornitologia</mods:title>
        </mods:titleInfo>
        <mods:identifier type="issn">0103-5657</mods:identifier>
        <mods:identifier type="issn-e">1807-0205</mods:identifier>
        <mods:originInfo>
            <mods:publisher>Sociedade Brasileira de Ornitologia</mods:publisher>
        </mods:originInfo>
        <mods:part>
            <mods:detail type="volume">
                <mods:number>30</mods:number>
            </mods:detail>
            <mods:detail type="issue">
                <mods:number>3</mods:number>
            </mods:detail>
            <mods:extent unit="page">
                <mods:start>145</mods:start>
                <mods:end>158</mods:end>
            </mods:extent>
            <mods:date>2022</mods:date>
        </mods:part>
    </mods:relatedItem>
    
    <mods:identifier type="doi">10.1590/S0103-56572022000300001</mods:identifier>
    <mods:identifier type="uri">https://www.scielo.br/j/rbori/a/xyz123/</mods:identifier>
    
    <mods:location>
        <mods:url usage="primary display" access="object in context">
            https://www.scielo.br/j/rbori/a/xyz123/
        </mods:url>
        <mods:physicalLocation>SciELO Brazil</mods:physicalLocation>
    </mods:location>
    
    <mods:accessCondition type="use and reproduction"
                          xlink:href="http://creativecommons.org/licenses/by/4.0/">
        This work is licensed under a Creative Commons Attribution 4.0 International License
    </mods:accessCondition>
    
    <mods:note type="funding">
        Financiamento: Fundação de Amparo à Pesquisa do Estado de São Paulo - FAPESP 
        (Processo 2019/12345-0)
    </mods:note>
    
    <mods:recordInfo>
        <mods:recordContentSource>SciELO Brazil</mods:recordContentSource>
        <mods:recordCreationDate encoding="w3cdtf">2022-09-15</mods:recordCreationDate>
        <mods:recordChangeDate encoding="w3cdtf">2025-12-10</mods:recordChangeDate>
        <mods:recordIdentifier>S0103-56572022000300001</mods:recordIdentifier>
        <mods:languageOfCataloging>
            <mods:languageTerm type="code" authority="iso639-2b">por</mods:languageTerm>
        </mods:languageOfCataloging>
    </mods:recordInfo>
    
</mods:mods>

Observações Finais

  1. A implementação deve manter compatibilidade com o formato interno do DSpace/XOAI
  2. Alguns mapeamentos dependem da disponibilidade de campos específicos no Dublin Core
  3. Priorizar Fase 1 (elementos críticos) para viabilizar harvesting pelo BHL
  4. Testes devem incluir validação contra schema MODS 3.8 oficial
  5. Documentar mapeamentos não óbvios para manutenção futura

Nota sobre Preparação desta ISSUE

A análise técnica, estruturação e documentação desta ISSUE foram desenvolvidas com assistência de inteligência artificial (Claude, Anthropic). A análise baseou-se em:

  • Documentação oficial do BHL disponível publicamente
  • Especificações do padrão MODS 3.8 da Library of Congress
  • Análise do arquivo mods.xsl atual do repositório
  • Comparação com implementações de referência do BHL

Todas as referências, mapeamentos e recomendações técnicas foram verificadas contra fontes oficiais e devem ser validadas durante a implementação.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions