Subcatálogos en el OPAC

A raíz de la implementación de OPACMARC en el Museo Mitre, volvió a surgir el interés en poder brindar acceso a múltiples subcatálogos dentro de una única colección. Esto es de interés para bibliotecas que poseen varias colecciones claramente diferenciadas, y que desean que los usuarios puedan consultar separadamente cada colección. Algunos ejemplos: el Museo Mitre posee Biblioteca Americana, Colección Moores, Mapas, Colección Ruiz Guiñazú; la Biblioteca Rivadavia tiene la Sala Infantil, la Hemeroteca, la Colección Fontanella, etc. Una división muy usual es publicaciones periódicas vs. el resto, o con una subdivisión más fina por tipo de material: libros, películas, música, etc.

Consideremos entonces el siguiente escenario: tenemos una única base de datos bibliográfica, donde cada registro puede pertenecer a uno o más subconjuntos de registros (definidos por algún criterio, ver más abajo), y deseamos que cada uno de esos subconjuntos se pueda consultar de manera separada.

Si pensamos que la pertenencia a un subcatálogo es apenas una más entre varias restricciones posibles, tales como las que se presentan en el formulario de búsqueda avanzada (idioma, forma literaria, fecha, etc.), entonces el problema parece resuelto: ofrecemos al usuario un parámetro más en el form avanzado.

Sin embargo, existen otros requerimientos adicionales, que hacen un poco más complicada la situación:

Queremos poder acceder mediante un link (URL) a cada subcatálogo, como si fuese un OPAC aparte.

Cada subcatálogo debe identificarse claramente, por lo menos con una modificación en el banner u otra señalización que indique en qué subcatálogo nos encontramos. Eventualmente, cambios en el aspecto (colores, imágenes) deberían ser aplicables con CSS.

Cada subcatálogo debe ofrecer un link al catálogo global, o a un menú de catálogos disponibles.

Opcionalmente, la opción de limitar la búsqueda a uno o más subcatálogos podría hacerse desde el form avanzado, pero en ese caso el usuario permanecería dentro del catálogo general; es decir, no se consideraría que entró a un subcatálogo.

Opcionalmente, la búsqueda en un subcatálogo puede informar sobre resultados para la misma búsqueda en los restantes subcatálogos (ver p.ej. el OPAC de la BNM).

Problema: índices de títulos, nombres, temas

Es fácil restringir los registros bibliográficos a un subcatálogo, pero ¿cómo restringimos los registros de las otras bases auxiliares? Quizás podamos añadir un campo a los registros de esas bases, indicando en qué subcatálogos puede aparecer (según los subcatálogos a los que pertenezcan los registros bibliográficos asociados).

Un término T debe aparecer en el índice del subcatálogo S si y sólo si existe un registro bibliográfico R tal que R está en S y T está en R.

Posible solución (mal expresada, revisar bien!):

Recorrer la base biblio; para cada registro B de biblio agregar un registro a una base auxiliar sub_index, con los siguientes datos: un campo repetible con una ocurrencia por cada par (heading_id, subcatálogo) asociado a B.

Ordenar la base sub_index y eliminar registros duplicados

Generar archivo invertido para sub_index, indizando por heading_id

Recorrer las bases de headings, y para cada heading consultar sub_index y tomar de allí la lista de subcatálogos asociados a ese heading, almacenarla en un campo.

Generar el invertido de las bases de headings.

Si logramos esto, podremos aplicar una restricción por subcatálogo al momento de hacer una búsqueda en los índices.

2008-11-03: las bases name y subj cuentan con un campo 8, repetible, con una occ por cada subcatálogo donde aparece el heading

Queda además el problema de aplicar el filtro al recorrer secuencialmente los índices (browsing), si usamos un mfnrange.

Cómo determinar a qué subcatálogo pertenece un registro bibliográfico

Los criterios para definir la pertenencia de un registro a un subcatálogo pueden ser variados, y no debemos exigir demasiado al respecto. Desde el uso de un campo local ad hoc, hasta el uso de una combinación de valores distribuídos entre varios campos, cualquier criterio puede considerarse válido. El único requisito es que podamos recuperar, mediante el archivo invertido, todos los registros pertenecientes a un subcatálogo.

En principio, hemos convenido (con R.E.) usar un campo local ad hoc, pero intentando limitar su uso a los pocos casos que lo requieran. Por ejemplo, periódicas y mapas no requieren el uso de tal campo, pues basta con tomar la información del leader del registro MARC.

Tendremos que construir una tabla con el mapeo entre subcatálogos, criterios que deben satisfacer los registros, y claves usadas en el diccionario. Ejemplo:

Subcatálogo	Criterio	Diccionario
Videos	Leader/06 = 'g'	-REC_TYPE=G
Sala infantil	Campo 859 : 'Sala infantil'	-LUGAR=SI

La expresión de búsqueda mediante el diccionario puede usar una combinación booleana de claves, si fuera necesario.

Archivos asociados a un subcatálogo

Una vez que decidimos partir una base (un catálogo) en sub-bases virtuales (sub-catálogos, SC), parece natural querer asociar a cada SC algunos archivos que permitan “customizar” ---aunque sea mínimamente--- el look de ese SC: css, img, js, htmlpft. También necesitaríamos parámetros de configuración específicos, aunque tal vez éstos podrían vivir dentro del archivo de configuración de la base.

En la nueva estructura de archivos de OpacMarc (2008), tenemos 3 niveles:

app (default --- no se modifica localmente)

local (común a todas las bases o catálogos instalados localmente)

base (o catálogo)

¡Ahora estaríamos agregando un cuarto nivel, el de “subcatálogo”!

También necesitaremos especificar, a nivel de la base, cuál es la lista de subcatálogos disponibles, así como los criterios para determinar a cuál(es) subcatálogo(s) pertenece un registro bibliográfico.