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.