iris-ldap

El sistema de clasificación COPA

Codificación optimizada para el acceso jerárquico a la información

Introducción

COPA surge de la necesidad de poder realizar búsquedas en diferentes niveles de una estructura jerárquica de información con las siguientes 2 premisas:

  • Esas búsquedas deben ser recursivas desde un nivel determinado, y lo más importante es que
  • no deben incorporar una complejidad importante en los sistemas de búsqueda existentes

La idea original fue la creación de un código alfanumérico basado en grupos de letras y números de la forma x99x99x99x99x99. Cada letra identifica un nivel en la estructura del árbol y cada número diferencia ese nodo dentro de un mismo nivel. Un ejemplo puede ser el código a2b1c2 que nos indica que estamos dentro del segundo nodo de primer nivel, primero del segundo nivel y segundo del tercero.

En 1997 RedIRIS comenzó a utilizar códigos de este tipo en sus sistemas de búsqueda, principalmente en servidores web temáticos clasificados de una forma jerárquica. Debido a la incorporación de este tipo de codificación en otros sistemas de búsqueda de información como LDAP y en sistemas de navegación por esos directorios se decidió exportar esta codificación.

¿Qué puedo conseguir usando COPA?

Principalmente múltiples vistas de la misma información y posibilidad de búsquedas desde diferentes puntos de vista.

  1. Navegación por vistas virtuales

    Partamos de la siguiente estructura jerárquica de áreas temáticas en la que se muestra el camino desde la raiz del árbol hasta la la rama a2b1c2d9e2

    a2          Ciencias de la salud
    a2b1        Farmacia
    a2b1c2      Farmacología
    a2b1c2d9    Psicofarmacología
    a2b1c2d9e2  Psicofarmacología geriátrica
    

    Supongamos que tenemos esta estructura almacenada en un servidor LDAP en el que todas las entradas están creadas al mismo nivel. Cada entrada tiene dos campos, el código y el nombre del área.

    Podríamos hacer un pequeño programa que navegase por el directorio mostrando la estructura jerárquica reflejada en los códigos. Simplemente habría que buscar todas las áreas del mismo nivel para mostrarlas.

    Para el primer nivel bastaría con especificar un filtro LDAP que indicase que queremos todas las entradas que contengan a* pero que no tengan b*:

    (&(codigo="a*")(!(codigo="a*b*")))

    Una vez que mostramos todas las entradas de primer nivel si el usuario selecciona a2 tendreamos que volver a realizar una búsqueda de las entradas que tengan un código con a2b* pero que no no tengan c*, es decir:

    (&(codigo="a2b*")(!(codigo="a2b*c*")))

    Para el resto de niveles habría que hacer algo similar.

    Como acabamos de ver, es muy fácil simular esta estructura jerárquica mediante la vista virtual generada con el campo codigo. Podemos pensar en ampliar el número de vistas virtuales añadiendo otros campos con códigos en formato COPA que representen otras jerarquías diferentes.A

  2. Búsquedas desde varios puntos de vista

    Partamos de que todos los recursos (personas, web, ...) que tenemos en nuestro sistema se encuentran con uno/varios campos en formato COPA. Cada campo asigna o clasifica al recurso a una localización o área.

    Si queremos hacer una búsqueda de los recursos clasificados bajo Psicofarmacología geriátrica tendremos que buscar aquellos recursos que tengan un codigo=a2b1c2d9e2. Si queremos realizar la consulta bajo Farmacología bastará con buscar los recursos con codigo=a2b1c2*. En este último caso encontraremos también los recursos con codigo=a2b1c2d9e2.

    Si ahora quisieramos obtener aquellos recursos web en los que apareciese la famosa araña roja del Brasil y cómo curar su picadura lo más cómodo sería buscar dentro de Farmacología la cadena araña roja del Brasil. Esto lo podríamos expresar así:

    "araña roja del Brasil" AND area="a2b1c2*"

    Por supuesto lo único que teclea el usuario es la cadena de la araña, el código del área lo añade el interface de consulta ya que previamente hemos navegado hasta la localización de Farmacología y se dispone de ese código.

    Esta capacidad de realizar búsquedas a cualquier nivel de la estructura jerárquica con un simple codigo=cadena* es lo que proporciona la potencialidad deseada.

Documentación

Hemos creado una página con documentación sobre COPA

Esquema LDAP COPA

Versión actual estable Versiones anteriores

Software que soporta COPA

Ejemplos de uso

RedIRIS ha creado un repositorio de clasificaciones basadas en COPA que sirven como ejemplo de lo que se puede hacer usando este tipo de codificación