Repositorio COPA
clasificaciones basadas en COPA:
copaUniv, copaPki, copaNetwork, CATRE
Enlaces útiles
irisUserPrivateAttribute Si no quieres que tus datos sean visibles, dilo. Atributo para privacidad: irisUserPrivateAttribute

Esquemas LDAP:
iris, pkiris, irisgrid,
copa, catre, papi, ...

Ya puedes registrar el URN para tu organización bajo el espacio de nombres urn:mace:rediris.es

GB02 Creación de un repositorio LDAP con los conocimientos recopilados por la comunidad iris-ldap

Formato 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. 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 del tipo x99x99x99x99x99. La letra identifica un nivel en el árbol y el número el orden de cada 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.

RedIRIS ha estado usando códigos de este tipo desde 1997 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 hemos decidido 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.

Navegación por vistas virtuales

Partamos de la siguiente estructura jerárquica en la que hemos mostrado el camino desde la raiz de un árbol de áreas temáticas 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 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

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 aparezca 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 pone el interface de consulta ya que previamente hemos navegado hasta la localización de Farmacología y tenemos ese código.

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

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