iris-ldap

El sistema de codificación COPA

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

Tabla de contenido

Introducción

COPA (Codificación Optimizada para el Acceso Jerárquico a la información) es un sistema de codificación desarrollado por RedIRIS para realizar búsquedas en diferentes niveles de una estructura jerárquica de información. Su diseño responde a dos requisitos: permitir búsquedas recursivas a partir de un nivel determinado y evitar que estas añadan una complejidad significativa a los sistemas de búsqueda existentes.

¿Qué es una estructura jerárquica o árbol invertido?

En la organización de información, una estructura jerárquica (o árbol invertido) es un modelo donde los datos se organizan en niveles de dependencia: un elemento principal o raíz del que dependen ramas sucesivas (categorías y subcategorías). Una clasificación formaliza este esquema para agrupar elementos por temática, geografía u organización. Tradicionalmente, esto exige que los datos se almacenen físicamente replicando esa misma estructura de árbol. COPA permite representar esa posición mediante un código alfanumérico plano, desvinculando la jerarquía lógica de la forma en que se almacenan los datos.

Formato de los códigos COPA

Los códigos COPA se construyen concatenando grupos formados por una letra y uno o varios dígitos. Cada letra identifica un nivel en la estructura del árbol y cada número diferencia ese nodo dentro de un mismo nivel. Las letras elegidas sirven para identificar los niveles (no establecen un orden alfabético estricto) y no pueden repetirse en un mismo código (por ejemplo, a1a32b123 no es válido porque contiene dos grupos con la letra a).

La siguiente gramática describe su estructura sintáctica básica:

<codigo>  ::= <grupo> | <grupo><codigo>
<grupo>   ::= <letra><digitos>
<letra>   ::= "a" | "b" | ... | "z"
<digitos> ::= <digito> | <digito><digitos>
<digito>  ::= "0" | "1" | ... | "9"

Por ejemplo, a2b12c3 está formado por tres grupos (a2, b12 y c3) que identifican sucesivamente un nodo en cada uno de los tres niveles de la jerarquía. Esta forma de codificar permite generar una navegación virtual a partir de códigos planos.

Además, un mismo recurso puede tener asociados diferentes códigos COPA para clasificarlo en varias ramas o clasificaciones simultáneamente (temática, geográfica, etc.). Puede consultar el repositorio de clasificaciones basadas en COPA.

¿Qué puedo conseguir usando COPA?

COPA permite organizar y consultar los mismos recursos mediante distintas clasificaciones jerárquicas sin imponer una estructura física rígida, ofreciendo tres ventajas principales:

  • Navegación por jerarquías virtuales: Permite reconstruir una clasificación a partir de los códigos asociados a los elementos, mostrando sus distintos niveles.
  • Búsquedas en categorías y sus descendientes: Permite buscar recursos asociados directamente a una categoría o ampliar el ámbito para incluir automáticamente a todas sus subcategorías.
  • Múltiples perspectivas de consulta: Asigna códigos de distintas clasificaciones (temáticas, organizativas, geográficas) a los mismos recursos sin duplicar información.

¿Cómo funciona COPA?

COPA representa las jerarquías mediante códigos que reflejan la posición de cada elemento. Cada nuevo nivel amplía el código de su categoría superior, permitiendo expresar relaciones de dependencia sin reproducirlas físicamente.

Un ejemplo de jerarquía

El siguiente ejemplo ilustra cómo se puede representar una clasificación mediante códigos sucesivos:

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

Conservar la secuencia de los niveles en el código permite utilizar prefijos para delimitar búsquedas jerárquicas con precisión.

¿Cómo se utiliza COPA para navegar por una clasificación?

Navegación por vistas virtuales

Supongamos entradas almacenadas en un servidor LDAP creadas al mismo nivel. Podemos desarrollar una aplicación que las muestre como una estructura jerárquica utilizando los códigos COPA.

Para mostrar las áreas del primer nivel, buscamos los códigos que comienzan por a excluyendo los niveles posteriores mediante filtros avanzados de directorio. Por ejemplo, el filtro LDAP correspondiente sería:

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

Si el usuario selecciona el área a2, la aplicación buscará el siguiente nivel (comenzado por a2b y excluyendo el nivel c):

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

¿Cómo se utiliza COPA para buscar información?

COPA permite delimitar el ámbito de una búsqueda según el nivel de la clasificación que interese, combinando el criterio textual con el código jerárquico.

Buscar en una categoría y sus descendientes

Supongamos que queremos encontrar recursos relacionados con paracetamol dentro de Farmacología y todas las categorías que dependen de ella (código a2b1c2).

La consulta conceptual de esta operación sería:

cadena=paracetamol AND codigo=a2b1c2*

Si tu sistema utiliza directorios LDAP, el filtro técnico equivalente sería:

(&(cadena=*paracetamol*)(codigo=a2b1c2*))

El asterisco al final del código actúa como comodín de prefijo, abarcando la categoría seleccionada y todas sus descendientes de forma recursiva.

Restringir la búsqueda a una categoría concreta

Si queremos buscar únicamente los recursos asociados a una categoría específica, sin incluir los de sus subcategorías (por ejemplo, en Psicofarmacología con código a2b1c2d9), utilizaremos una comparación exacta del código.

La consulta conceptual sería:

cadena=paracetamol AND codigo=a2b1c2d9

Y su equivalente como filtro LDAP:

(&(cadena=*paracetamol*)(codigo=a2b1c2d9))

Al no usar comodín de prefijo, la búsqueda se limita estrictamente a ese nodo exacto.

Combinar la búsqueda con distintos puntos de vista

Un recurso puede clasificarse mediante varios atributos COPA simultáneamente (temático, geográfico, organizativo). Por ejemplo, buscando páginas que mencionen la "araña roja del Brasil" dentro del área de Farmacología.

La consulta conceptual combinaría el texto libre con el código de la categoría seleccionada por el usuario:

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

Y el filtro técnico en LDAP sería:

(&(contenido=*araña roja del Brasil*)(codigo=a2b1c2*))

Nota técnica: Los filtros LDAP mostrados son ejemplos ilustrativos. Los nombres de los atributos y la sintaxis deben adaptarse al esquema y datos reales de cada implementación.

COPA frente a una jerarquía física

Una clasificación jerárquica no tiene por qué coincidir con la estructura en la que se almacenan los datos físicos:

Jerarquía física tradicional Clasificación mediante COPA
La jerarquía depende rígidamente de la estructura en la que se organizan los elementos. La jerarquía se representa mediante códigos alfanuméricos asociados a los datos de forma flexible.
Ofrecer distintas perspectivas requiere duplicar estructuras o mecanismos adicionales complejos. Los mismos recursos pueden asociarse simultáneamente a distintas clasificaciones y puntos de vista.
Las búsquedas en niveles descendientes dependen de la implementación física de la estructura. Los códigos permiten delimitar el ámbito jerárquico de la consulta de forma limpia mediante prefijos.

Casos de uso de COPA

COPA puede aplicarse en directorios institucionales, clasificaciones temáticas y la organización de infraestructuras o servicios donde sea necesario representar jerarquías.

Consulta ejemplos concretos en la página de casos de uso.

Documentación y recursos técnicos