Importação de metadados em lote no DSPACE

Este é um pequeno tutorial de como criar arquivos para serem importados no DSPACE pela ferramenta de importação de metadados:

O primeiro passo é criar um arquivo csv (texto separado por vírgulas – importante: apesar de existirem outros separadores, sempre optar por vírgulas) em codificação UTF-8. Recomendo usar o Notepad++ para a criação deste arquivo. Ou mesmo no excel, mas importante lembrar que o excel só exporta csv com o separador ; . Então depois precisará converter esse arquivo.

Este arquivo só tem 2 campos obrigatórios, o id e o collection. O id para ser adicionado ao DSPACE como um novo registro precisa ter um valor + e o collection o handle da coleção.

Por exemplo:

id,collection,dc.contributor.author[pt_BR]
+,102/1024,”Silva, José || Nascimento, Antônio”
+,102/3045,”Santos, Francisco”

Este é um arquivo exemplo que já seria importado, criando dois registros com informações somente de autor em duas coleções diferentes. Notem que para mais de um valor em um campo, use o separador ||. Agora é só adicionar o nome do seu metadado em uma nova coluna usando o padrão que tem que estar registrado no seu DSPACE e adicionar quantas colunas forem necessárias.

Se a fonte dos dados for um registro MARC, use a ferramenta de exportar texto delimitado do MarcEdit.

Para importar o arquivo no dspace:

cd /PASTA DO APP DO DSPACE/bin
./dspace metadata-import -f /CAMINHODOARQUIVO/arquivo.csv -e email@instituicao.com

Caso tenham definido o passo do workflow, use o -w para que os registros entrem no processo de submissão.

Ainda não testei, mas na versão 3.1, no menu tem uma interface gráfica para importar o arquivo diretamente por lá.

Fiquem a vontade para fazer perguntas nos comentários.

Metadados no DSPACE 2: Configurando o input-forms.xml

Para configurar o DSPACE 3.1 (só vale para essa versão, em outras, algumas funcionalidades não estão disponíveis) para suprir as reais necessidades de sua instituição, é necessário configurar o formulário de submissão. O arquivo que deve ser configurado é o dspace > config > input-forms.xml :

É um arquivo xml que possui a seguinte macro estrutura:

[code language=”xml”]
<input-forms>
<form -map>Onde se realizam os mapeamentos do tipo de formulário com as coleções</form>
<form -definitions>Onde devemos construir os formulários</form>
<form -value-pairs>Onde se armazenam listas para serem usadas em formulários</form>
</input-forms>
[/code]
O form-definitions é onde podemos criar os diversos tipos de formulários, ele tem que estar na seguinte estrutura
[code language=”xml”]
<form name="tipologia do documento">
<page number="1"><!– Caso queira paginar o formulário –>
<field>
<dc-schema>dc</dc> <!– Esquema utilizado. Todos os metadados DEVEM estar definidos em metadados no painel de controle –>
<dc-element>contributor</dc><!– Elemento do metadado –>
<dc-qualifier></dc><!– Qualificador do metadado –>
<repeatable>false</repeatable><!– Se é um campo repetitívo –>
<label>Instituição</label><!– Nome que irá aparecer do campo no formulário de submissão –>
<input -type value-pairs-name="contributor"/>dropdown<!– Aqui podemos definir o tipo de formulário a ser usado e se ele vai buscar os dados do value-pairs –>
<hint>Nome da instituição que foi produzido o trabalho</hint><!– Ajuda que irá aparecer no formulário –>
<visibility>workflow</visibility><!– Se estiver escrito workflow, este campo só aparecerá na etapa de edição de metadados, se não, não é preciso colocá-lo –>
<required>Preenchimento obrigatório</required><!– Se estiver preenchido, será transformado em campo obrigatório –>
</field>
</page>
</form>
[/code]

Você deve preencher quantos fields forem a sua necessidade.

O input-type possui as seguintes opções:

onebox – Uma caixa de texto simples.
twobox – Um par de duas caixas de texto simples.
textarea – Caixa de texto com várias linhas, para usar em, por exemplo: resumo.
name – Nome pessoa, será salvo no formato ‘Sobrenome’, ‘Nome’
date – Data. Necessita ao menos que o ano seja preenchido.
series – para valores de fascículos/número. São salvos em valores separados por ponto e vírgula.
dropdown – Escolha do valhor em uma lista “drop-down”. Esta lista deve estar definida em form-value-pairs e o nome deve remeter a essa lista.
qualdrop_value – Usado para listar qualificadores para o campo. É necessário que estes valores estejam em uma lista definida em form-value-pairs.
list – Campo de escolha de valores por checkbox ou radio button list. Se for repetitivo, uma lista de checkboxes é exibida. Se não for, uma lista de radio buttons será exibida. É necessário que estes valores estejam em uma lista definida em form-value-pairs.

Para maiores informações, consulte a documentação oficial: Submission User Interface

Em breve escrevo um post sobre o controle de autoridades mais complexo que a versão 3.1 possui.

Metadados no DSPACE 1: Dublin Core vs. DSPACE Dublin Core Types Registry 1.5

Um dos primeiros passos para começar a usar o DSPACE é a determinação das coleções e dos respectivos metadados que deverão ser utilizados. E uma das constatações que cheguei é que o DSPACE usa uma versão um pouco adaptada do Dublin Core chamada DSPACE Dublin Core Types Registry 1.5.

As diferenças entre os dois podem ser observadas nesta imagem:

dspace-dc

É importante entender que o DSPACE reserva alguns dos metadados como para uso exclusivo do sistema, como por exemplo o dc.creator. Ele reserva o dc.contributor.author para os autores da obra que será representada no registro.

Tem um bom manual da Canergie online: Metadata Guidelines

Melhorar a qualidade dos metadados no DSPACE

Esse foi o meu primeiro post no Grupo DSPACE-Brasil, mas também vai inaugurar alguns posts sobre algumas questões de gerenciamento do DSPACE que normalmente não são abordadas em cursos. O primeiro é sobre como melhorar a qualidade dos metadados no DSPACE.

Há metadados que podem ser considerados “autoridades”, mas o DSPACE não possui uma boa ferramenta de controle de autoridade ou esses dados podem ser resultado de importações que usavam padrões diferentes de preenchimento. Esta é uma forma de corrigir essas distorções:

A tabela da base de dados que armazena os metadados é a metadatavalue

Esta tabela é composta pelas seguintes colunas:

metadata_value_id
item_id
metadata_field_id
text_value
text_lang
place
authority
confidence

A coluna metadata_field_id é a coluna que armazena o valor atribuído na tabela de metadados que editamos no http://localhost/admin/metadata-registry

A consulta a seguir nos dá como resposta todos os registros de um único tipo de metadados:

SELECT “metadata_value_id”,”item_id”,”metadata_field_id”,”text_value”,”text_lang”,”place”,”authority”,”confidence” FROM “public”.”metadatavalue” WHERE “metadata_field_id” = ‘X’

Por exemplo: Utilizamos o título da revista no metadado dc.relation.ispartof que tem como id 42. Substituo o “metadata_field_id” = ‘X’ no final da consulta por “metadata_field_id” = ’42’

O resultado é uma lista de todos os títulos de revistas, da forma que foram catalogados.

O Postgresql pelo phppgadmin dá a opção de fazer o download desta lista em texto tabulado (.tsv).

O próximo passo é baixar e rodar o Google Refine: https://code.google.com/p/google-refine/

Ele é um webservice que permite a edição em lote e com ótimos algorítimos semânticos de grandes quantidades de dados.

Use o tsv para criar um novo projeto (não esquecer de escolher UTF-8 na codificação de caracteres)

O Google Refine tem duas funcionalidades que pode ajudar bastante na edição dos registros. Facet Text e Cluster and Edit. O primeiro faceta todos os resultados da coluna e o segundo possui algorítimos que criam clusters de informações que ele calcula serem equivalentes.

Use o Google Refine até corrigir todos os registros da base e depois exporte o resultado em tsv novamente.

Edite este arquivo usando o Notepad++ e na função replace utilize o seguinte expressão regular:

Em find what, selecione expressão regular:

^([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)$

e em replace with:

update metadatavalue set text_value = ‘\4’, text_lang = ‘\5’ where metadata_value_id = \1;

O resultado é que todos as linhas serão transformadas em um UPDATE em SQL, alterando os valores de text_lang e text_value quando achar o metadata_value_id correspondente.

Salve o arquivo como SQL

Aplique o update em sua base.

Falarei um pouco mais do Google Refine nos próximos posts.