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| Versión | Fecha | Descarga |
| 2.1.1 | 20110519 | COPA LDAP schema |
| Versión | Fecha | Descarga |
| 2.1.0 | 20070511 | COPA LDAP schema |
| 2.0.1 | 20060324 | COPA LDAP schema |
| 2.0.0 | 20060227 | COPA LDAP schema |
| 1.0.2 | 20030514 | COPA LDAP schema |
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