Warning: Constant WP_MEMORY_LIMIT already defined in /home/elorenzo/domains/arvo.es/public_html/dspace/wp-config.php on line 94
Configuración Authority Control en Dspace | Hablando de DSpace

Métodos usados en el Authority Control

Una vez explicado en el post anterior el modelo de control de autoridades en DSpace, vamos a profundizar algo más en el authority control. En concreto os voy a comentar los aspectos más destacables que tiene la clase encargada de hacer funcionar el authority control.

SampleAuthority es el modelo de ejemplo que se usa para poder a empezar a desarrollar nuestra funcionalidad del modelo de autoridades. (Aunque lo más correcto es crear nuestra propia clase Autoridad copiando el SampleAuthority)

Esta clase la podemos localizar dentro del DSpace API en la siguiente ruta:[dspace-src]/dspace-api/src/main/java/org/dspace/content/authority/SampleAuthority.java

Esta clase tiene un aspecto como el siguiente (no se incluye todo el código)

public class SampleAuthority implements ChoiceAuthority{    

    public Choices getMatches(String field, String query, int collection, int start, int limit, String locale){
       
    }

    public Choices getBestMatch(String field, String text, int collection, String locale) {
    }

    public String getLabel(String field, String key, String locale) {
    }
}

Básicamente lo primero que vemos es que la clase ha de implementar al interfaz ChoiceAuthority, y en el nos toca programar sus tres métodos principales

getMatches: este método ha de retornar un listado con todas las coincidencias buscadas a partir de la búsqueda introducida por el usuario, por lo general serán apellidos. Es decir si el usuario busca autores por el apellido Nieto, este método debería de retornar todos los autores de la BBDD con el apellido Nieto;

  • Nieto Español, Juan
  • Nieto Caramés, Sergio
  • Española Nieto, Juana

getBestMatch: Este método está pensando en devolver el mejor resultado posible, es decir si antes buscábamos solo por el apellido para mostrar un listado de autores con apellido parecido, con este método hemos de aproximar el resultado a uno posible.
En cuyo caso de que el resultado sea único debemos de dar un grado de confianza del mas alto posible. (Por lo general con un valor de confianza UNDEFINED ha de ser suficiente)

Este método hay que implementarlo bien, puesto que cada vez que se introduzca un metadato controlado (que use Authority Control), DSpace va a ser el encargado de validarlo automáticamente. Es decir que nos sirve para automatizar las tareas de los usuarios administradores, pero mejor que lo hagamos de forma precisa.

getLabel: Este método ha de resolver el problema de nombramiento que tiene DSpace con los autores validados, ya que por definición, DSpace coge el valor clave de autoridad y lo muestra como nombre de autor, por lo que debemos con este método cambiar por un valor de autor que se asocie a ese identificador.

Una vez programada esta clase (compilada y desplegada) solo falta rellenar la configuración detallada en el fichero de configuración dspace.cfg para que se asocie el proceso a un metadato que queramos como por ejemplo el dc.contributor.author. (toda esta información viene detallada en la documentación de DSpace accesible desde el código fuente o desde su web ;D)

Bueno ahora solo toca entender bien las especificaciones que deseamos aplicar a nuestro modelo de autoridades y programarlo según esas espacificaciones.

Mucha suerte

3 Comentarios.

  1. Ximo Ferrer

    Hola

    He estado leyendo el artículo que presentásteis en Costa Rica, gran trabajo!

    Ahora estoy investigando el tema porque me lo piden en el repositorio que gestiono. El primer gran problema es que han desactivado la opción «suggest» de los metadatos en Dspace 3.2. Me tendré que conformar con un lookup.

    Aún así, para usar información institucional como fuente de nombres de autoridad, supongo que tendré que crear mi propia clase SampleAuthority, y voy un poco perdido.

    ¿Sería mejor usar LCNameAuthority como base?
    ¿Cómo se deberían obtener los autores, si por ejemplo quiero los que ya están en el repositorio? como una consulta a la base de datos que ofrece los resultados en qué formato? No sé dónde encontrar documentación al respecto.

    Por cierto, ¿tenéis documentación de los talleres del congreso? En ellos tratábais estas cosas.

    Muchas gracias de antemano, y enhorabuena por el blog.

    • Hola Ximo, gusto verte de nuevo por aquí,…contestamos por partes
      De base, nosotros partimos casi siempre de la Clase SampleAuthority conectando a una bbdd con datos de los autores de la institución. el mínimo es el nombre del autor y la clave única de autoridad. Desarrollamos hace tiempo, a partir del código de la Universidad de Hasselt (en DSpace-tech Digest, Vol 49, Issue 47: setting up authority)) una clase java de conexión a la BBDD interna de autoridades. Los pasos iniciales no son complejos, se activa y configura el Authority Control (dspace.cfg, sección Authority control settings).

      y a partir de ahí se activa y configura (complejo esto) el Authority Control (dspace.cfg). Surgirá algún tema menor si se usan los campos controlados como índices de búsqueda, etc… ) y está listo como paso inicial. Los temas luego tienden a complicarse, extendiendo el lookup, los campos en la BBDD interna, etc.

      Siguiendo: los autores que ya están en el repositorio… Pues para asignarles clave de autoridad tienes varias opciones. a) Usar (adaptando) una de las clases de curation que hay por ahí para validar autores o b) haciendo un Batch Metadata Editing export. Con un import, los autores deberían (con opción Best Match y alguna otra gaita) coger la clave de autoridad que les corresponda. (luego tendrás que cambiar los confidence values, pero eso es menos trabajo)

      Me ha quedado un poco desordenada la contestación. ¿puedes ampliar, Sergio?
      saludos
      Emilio

      • Poco mas que añadir. La verdad que está bastante bien la respuesta que dió Emilio.

        Solo un punto para mencionar y es sobre el LCNamingAuthority. Esta clase la verdad que viene muy adaptada para un tipo de autoridad y por lo tanto no la usaría como base porque luego suele dar problemas a la hora de programar.

        No obstante esta clase está muy bien para que veas como juegan con el confidence value y también como es la funcionalidad de cada método a implementar.

        Mucha suerte y ánimo