feat: descrição arquivística NOBRADE multinível com exportação EAD 3, EAC-CPF e AtoM

- pipeline/nobrade: normalizadores de datas (ISO 8601-2), séries, autoridades,
  espécie/suporte, direitos, lugar e assuntos; montagem dos níveis 0–5 com
  código de referência BR RJXYZ.BF.<seção>.<série>.<handle>.<imagem>
- validador dos elementos obrigatórios: 0 pendências em 26.454 unidades
- EAD 3 e 457 EAC-CPF validados contra os XSD
- mural: cartão com código, data normalizada, série e reprodução; filtro por série
This commit is contained in:
2026-09-30 21:22:00 +02:00
parent e92df83a78
commit 23b56e8c87
46 changed files with 19562 additions and 68 deletions
+64 -12
View File
@@ -8,6 +8,12 @@ Este arquivo resume a norma (seções 1–4) e registra as decisões de aplicaç
tomadas para a cópia digital da Brasiliana Fotográfica (seção 5). A
implementação está em `pipeline/nobrade/` e a saída em `descricao/`.
```bash
cd pipeline
python3 -m nobrade # descricao/: unidades, autoridades, revisão, pendências, EAD 3, EAC-CPF, AtoM
python3 -m nobrade.mural # leva código, data, série e suporte para web/atlas/atlas-map.json
```
---
## 1. O que é a NOBRADE
@@ -79,6 +85,11 @@ Em **negrito**, os 7 obrigatórios.
não expuser os níveis, o elemento 1.4 tem de listar os títulos de todos os
níveis superiores (1.1.4).
- Exemplos da norma: `BR MN`, `BR CPDOC JG`, `BR AN Q6.LEG.COR,TEL`.
- Na prática (código CODEARQ), o código da entidade leva a UF colada à sigla,
e as partes da unidade vão separadas por ponto. Exemplo do Arquivo Geral da
Cidade do Rio de Janeiro: `BR RJAGCRJ.SOP.NL.AVE.03.01` = país · UF+entidade ·
fundo (Secretaria de Obras Públicas) · série (Negrão de Lima) · subsérie
(Avenidas) · dossiê 03 · item 01, a imagem em si.
### 1.2 Título
- Registrar o título original. Na falta dele, atribuir um título formado a
@@ -155,18 +166,25 @@ de origem. Por isso:
| Nível | Unidade | Origem | Código |
|---|---|---|---|
| 0 | Acervo da entidade | — | `BR XYZ` |
| 1 | Coleção Brasiliana Fotográfica (cópia digital) | — | `BR XYZ BF` |
| 2 | Seção = instituição de origem | `community` | `BR XYZ BF.IMS` |
| 3 | Série = coleção/fundo de origem | `dc.source` normalizado | `BR XYZ BF.IMS.GF` |
| 4 | Dossiê = item do DSpace (handle) | `handle` | `BR XYZ BF.IMS.GF.12345` |
| 5 | Item documental = cada imagem do dossiê | bitstreams | `BR XYZ BF.IMS.GF.12345.2` |
| 0 | Acervo da entidade | — | `BR RJXYZ` |
| 1 | Coleção Brasiliana Fotográfica (cópia digital) | — | `BR RJXYZ.BF` |
| 2 | Seção = instituição de origem | `community` | `BR RJXYZ.BF.IMS` |
| 3 | Série = coleção/fundo de origem | `dc.source` normalizado | `BR RJXYZ.BF.IMS.GF` |
| 4 | Dossiê = item do DSpace (handle) | `handle` | `BR RJXYZ.BF.IMS.GF.12345` |
| 5 | Item documental = cada imagem do dossiê | ledger do bucket | `BR RJXYZ.BF.IMS.GF.12345.01` |
- `BR XYZ` é **provisório** até o CONARQ atribuir um código. A troca é uma
- `RJXYZ` é **provisório** até o CONARQ atribuir um código. A troca é uma
constante em `pipeline/nobrade/config.py`.
- **Toda imagem é um item de nível 5**, mesmo quando o dossiê tem só uma
(`.01`), como no AGCRJ. Os 115 dossiês com várias imagens têm `.01`–`.06`.
- O código do dossiê termina no número do handle (proc. 1.1.2.2), então
sobrevive a reclassificações de série sem perder a ligação com a origem.
- Itens sem série identificável ficam na série `AV` ("Avulsos") da sua seção.
Notações de caixa e de negativo em `dc.source` (`CX 14`, `NV 2056`) não viram
série: vão para 5.1 como notação na origem.
- O IHGB é a única instituição que publica o próprio código NOBRADE
(`BR RJIHGB 064IG 0278`, em `dc.identifier`). Ele fica em 5.1 como código na
origem.
### 5.3 De onde vem cada elemento
@@ -174,7 +192,7 @@ de origem. Por isso:
|---|---|---|
| 1.2 Título | `dc.title` | nome da coleção, instituição ou série |
| 1.3 Data | `dc.date` normalizado + ISO 8601. `dc.coverage` → data tópica | datas-limite dos filhos |
| 1.5 Dimensão | `dc.type` → espécie + suporte. Cópia digital: pixels e bytes | soma por espécie |
| 1.5 Dimensão | `dc.type` → espécie + suporte; cor e medidas que AN e AGCRJ põem em `dc.description`. Cópia digital: arquivos e bytes | soma por espécie |
| 2.1 Produtor | `dc.contributor` (fotógrafo), forma autorizada | colecionador / instituição |
| 2.3 Hist. arquivística | `dc.date.accessioned` (entrada no DSpace), data da coleta | relato da coleta (nível 1) |
| 2.4 Procedência | Brasiliana Fotográfica, handle, data da coleta | idem, agregado |
@@ -202,12 +220,46 @@ de origem. Por isso:
- `descricao/eac/`: um EAC-CPF por autoridade.
- `descricao/pendencias.md`: relatório do validador dos obrigatórios.
- `descricao/revisao/*.tsv`: tabelas dos normalizadores para revisão manual.
Uma correção feita ali prevalece na próxima geração.
- `pipeline/nobrade/ajustes/series.tsv` (colunas `instituicao`, `dc_source`,
`titulo`): correção manual de série, que prevalece sobre a regra na próxima
geração.
- `descricao/atom.csv`: importação no AtoM (modelo ISAD).
### 5.5 Pendências fora do código
Versionados no git: textos, revisão, autoridades e pendências. `unidades.jsonl`,
`ead/`, `eac/` e `atom.csv` são regenerados e vão para o bucket.
### 5.5 Decisões de normalização
- **Datas:** 190 padrões distintos na origem. Saem na forma da norma
(`[ca. 1905]`, `[193-?]`, `8/2/1890-18/4/1890`) e em ISO 8601-2/EDTF
(`1905~`, `193X?`, `1890-02-08/1890-04-18`). `circa` fica como `ca.`,
convenção do AACR2, que a norma cita. Os 167 carimbos de registro do DSpace
gravados em `dc.date` não são tratados como data de produção. Os dossiês sem
data recebem uma data atribuída (proc. 1.3.3.2), `[A-B?]`, a partir do
período de atividade do autor, ou senão das datas-limite da série, ou senão
das da instituição. A base da atribuição fica anotada.
- **Título ausente:** atribuído entre colchetes a partir da descrição ou dos
assuntos (proc. 1.2).
- **Espécie ausente:** presumida fotografia, com nota. O repositório inteiro é
fotográfico.
- **Autoridades:** grafias unidas por chave sem acento e por inversão ("Marc
Ferrez" → "Ferrez, Marc"). A forma autorizada é a variante com datas mais
completas; as outras viram remissivas (8.1.4). Anônimos não viram autoridade.
- **Assuntos:** as traduções inglesas que o DSpace da BN repete ficam separadas
(`assuntos_eng`). Os assuntos seguem o vocabulário da origem, sem controle
adicional.
- **Direitos:** quatro categorias: domínio público, uso cultural liberado,
requer autorização do detentor, e consultar o detentor. O texto da origem
fica em 6.2.
- **Valores corrompidos na origem** (fragmentos de XML ou hash no lugar do
texto): desconsiderados e anotados em 6.2.
### 5.6 Pendências fora do código
- [ ] Pedir ao CONARQ o código da entidade custodiadora (proc. 1.1.1) e
substituir `BR XYZ`.
substituir `RJXYZ`, além de definir o nome da entidade (`ENTIDADE_NOME`).
- [ ] Revisar `descricao/revisao/series.tsv` e `datas.tsv` (valores que o
normalizador não resolveu).
- [ ] Revisar os textos dos níveis 2 e 3 em `descricao/textos/`.
- [ ] Revisar os textos dos níveis 2 e 3 em `descricao/textos/`. Os das
seções são rascunhos.
- [ ] Revisar as 813 datas atribuídas pelo arquivista (`revisao/datas.tsv`).