====== Aplicaciones de los utilitarios CISIS al trabajo con bases MARC 21 ====== ===== Descripción ===== Los utilitarios CISIS son un conjunto de herramientas que facilitan muchas tareas de análisis y mantenimiento sobre bases de datos CDS/ISIS. El uso generalizado de bases CDS/ISIS en las bibliotecas y centros de documentación de nuestro país, requiere contar con personal informático capacitado en el manejo de estas herramientas. En este curso se presentarán las principales características de los utilitarios CISIS, poniendo énfasis en su uso para resolver problemas frecuentes, particularmente en el trabajo con bases bibliográficas en formato MARC 21. Duración: 30 hs. (lunes a viernes, 10 a 13 y 15 a 18 hs.) Lugar: Instituto de Matemática, Universidad Nacional del Sur/CONICET ===== Contenido ===== ==== Introducción ==== * Repaso de las características esenciales de las bases CDS/ISIS: estructura ISO 2709, archivo maestro, archivo invertido, lenguaje de formateo, lenguaje de búsquedas. Documentos: * [[http://www.cindoc.csic.es/isis/ap-g.htm|Apéndice G: Estructura del archivo maestro]] * [[http://www.cindoc.csic.es/isis/ap-h.htm|Apéndice H: Estructura del archivo invertido]] * [[http://www.cindoc.csic.es/isis/ap-b.htm|Apéndice B: Formato de intercambio ISO 2709]] * [[http://w2isis.icml9.org/activity.php?lang=en&id=45|The essence of ISIS: an analysis on some of its core characteristics]] (Egbert de Smet) * [[http://openisis.org/Doc/whatabout|what makes ISIS ISIS ?]] (GNI) * CISIS: Conceptos básicos (Bireme, pdf) --- Ponerlo online * **Representaciones de una base CDS/ISIS**: archivo maestro (MST, XRF), archivo ISO, archivo de texto ID. Comparación: en un ISO, el tag de campo es de 3 caracteres, por lo tanto los campos con tag > 999 se pierden, o mejor dicho se representan con el tag truncado en 3 dígitos. * **Plataformas: DOS vs. Unix**. Diferencias en archivo maestro, archivo invertido, iso, archivos de texto (id, actab, uctab, pft). ¿Podemos ver las diferencias en ejemplos sencillos? Herramientas de conversión (crunchmf, crunchif, dos2unix, unix2dos). * **Codificación de caracteres**: CP850, Latin1, "ANSI", "OEM", Unicode/UTF-8. Mostrar (y entregar) tablas. Comando chcp (DOS). Archivos ACTAB y UCTAB. Gizmos. * [[http://en.wikipedia.org/wiki/Western_Latin_character_sets_%28computing%29|Western Latin character sets]] * [[http://www.microsoft.com/globaldev/reference/cphome.mspx|MS Code Pages]] * [[http://en.wikipedia.org/wiki/IBM437|Code page 437]] * [[http://en.wikipedia.org/wiki/IBM850|Code page 850]] * [[http://www.microsoft.com/globaldev/reference/oem/850.mspx|OEM 850 (Microsoft)]] * Windows 1252: [[http://en.wikipedia.org/wiki/Windows-1252|Wikipedia]], [[http://www.microsoft.com/globaldev/reference/sbcs/1252.mspx|Microsoft]] * [[http://en.wikipedia.org/wiki/ISO/IEC_8859-1|ISO 8859-1 (Latin-1)]] * [[http://lcweb2.loc.gov/cocoon/codetables/45.html|Code Table Extended Latin (ANSEL)]] * Algunas situaciones en las que se presentan problemas relacionados con la codificación de caracteres: * visualización de datos * generación de claves para el diccionario (actab, uctab) * búsquedas en texto libre con text/show * ¿búsquedas mediante el diccionario? En Linux, mx usa en forma predeterminada las tablas actab y uctab para la codificación CP 850. Eso podemos comprobarlo fácilmente intentando mandar al diccionario una palabra acentuada. echo 'Esta es una muestra de texto con la codificación Windows 1252. Mañana comeré maníes' > sample.CP1252.txt mx seq=sample.CP1252.txt create=sample1252 now mx sample1252 "fst=1 4 v1" mx sample1252 "fst=1 4 v1" actab=ac-ansi.tab mx sample1252 "fst=1 4 v1" actab=ac-ansi.tab uctab=uc-ansi.tab Script para visualizar las tablas: cat ac-ansi.tab | tr ' ' '\n' > ac-ansi.lst mx seq=ac-ansi.lst "fst=1 0 v1" fullinv=AC # no necesitamos crear la base cat uc-ansi.tab | tr ' ' '\n' > uc-ansi.lst mx seq=uc-ansi.lst create=UC now -all # no necesitamos diccionario echo '' > table.html echo '' >> table.html mx tmp from=33 to=256 "pft=@table.pft" now >> table.html echo '
' >> table.html
''table.pft'': proc('d10a10|',replace(f(mfn-1,3,0),' ','0'),'|') if v10 = '128' then ''/ fi, if right(f(val(v10)/16.0,1,2),2) = '00' then ''/ fi, ' 0 then 'class="AC"' fi, '>&#',v10,';', if ref(['UC']mfn,v1) <> v10 then ' &#',ref(['UC']mfn,v1),';', fi, ''/ Esta es la tabla resultante: {{tables.png?250}} ==== Utilitarios CISIS ==== * General: MX * Para archivo maestro: MXF0, MXTB, MXCP, MXGW, MSRT, RETAG, CTLMFN, MKXRF, ID2I, I2ID * Para archivo invertido: IFKEYS, MZ, IFLOAD, IFUPD, MYZ * Características de los utilitarios versión 5. === Lenguaje de formateo === Repaso general. Ejemplos "interesantes": ref(), l(), grupos repetibles, cat(), llamadas a formatos externos (@), getenv() y putenv(), proc(), system() * [[http://www.cindoc.csic.es/isis/c4.htm|Capítulo 4: Lenguaje de formateo]] * [[http://productos.bvsalud.org/reference/pt/format34_es.htm|Lenguaje de Formato CISIS]] * Formatos de visualización * FST. Técnicas de indización. Testeo de una FST. * [[http://www.cindoc.csic.es/isis/c5.htm|Capítulo 5: Tabla de Selección de Campos (FST)]] === Aplicaciones usuales === * Análisis básico con mxf0. Tabla HTML con la información obtenida. Caracteres usualmente mal empleados (grado, acento agudo). Detección de caracteres (text/show, grep) en Windows/Linux. En Ubuntu con UTF-8, hago esto: i2id biblio > bibima.latin1.id iconv -f latin1 -t utf-8 bibima.latin1.id > bibima.utf8.id grep 'ß' bibima.utf8.id Alternativamente, en Gnome terminal puedo seleccionar un character encoding adecuado (e.g. Windows 1252), y así ver los datos de la base en forma correcta, e incluso usar text/show sin problemas. Queda pendiente: cómo detectar caracteres de control. Idea para mostrar los nombres de los campos MARC en la tabla de mxf0: wget http://www.loc.gov/marc/bibliographic/ecbdlist.html grep '^ \{0,4\}[0-9][0-9][0-9] -' ecbdlist.html | grep -v OBSOLETE | grep -v 'LOCAL]' | sed 's/ (R)/|R/' | sed 's/ (NR)/|NR/' | sed 's/ - /|/' > marc-fields.seq mx seq=marc-fields.seq create=marc-fields now -all mxcp marc-fields clean mx marc-fields "fst=1 0 v1" fullinv=marc-fields Una vez creada la base marc-fields, se puede usar ref+l para tomar los nombres de los campos e incluirlos en la tabla. * Generación de listados (mx, mxtb) * Detección de duplicados en un listado (mx) * Conteo de registros (?) * Compresión de archivo maestro (mx) * Cambios globales (mx) * Bases estropeadas, registros corruptos. Detección y soluciones. * Importación de datos desde archivos de texto * Limpieza (mxcp) * Métodos para ordenar datos: * con el diccionario * msrt * sort (ms-dos, linux) === Errores/problemas usuales/tips === * no especificar un valor grande para lw * elección de delimitador en los proc * no desactivar el modo mpu * no usar f(.,.,.) para datos numéricos * tratamiento inapropiado de campos repetibles, al testear una condición o al visualizar * usar versiones viejas de los utilitarios * creer que el MFN es inmutable * perder o alterar datos al exportar en formato ISO * transferir datos entre plataformas sin previa conversión * text/show: distingue mayúsculas, sólo informa 1ra ocurrencia. Cómo trata a los caracteres con código > 127. * las tablas ACTAB y UCTAB (y, por lo tanto, la correcta generación del diccionario) dependen de la codificación empleada * ¿Qué pasa con los registros borrados al compactar una base? * orden de aplicación de gizmos * atajos en formatos: se me ocurren dos ejemplos, el de Claudio para detectar registros sin fecha, y el de Spinak para comprimir varios OR ('A|B|C|D':v1) ==== MARC 21 ==== * qué es exactamente el formato MARC 21, y qué es un registro MARC 21; documentos básicos * relación entre AACR2 y MARC 21 * representación de registros MARC en bases CDS/ISIS; convenciones de Catalis, comparación con otras aplicaciones * iso2709 de isis no es iso 2709 de marc; cómo ir y volver * el orden de los campos importa * la maldición de la puntuación * la codificación MARC-8 * indización de registros MARC: ''biblio.fst'' * visualización de registros MARC * subcampos repetibles: problemas y soluciones * controles de calidad sobre bases MARC * otras herramientas para manipular registros MARC: MarcEdit * Estudio de scripts de cierta complejidad, con sus pft asociados: ''[[:update-opac.sh]]'', ''auto.sh'' * Ejemplos de migración a MARC 21: ABCI y SeCS. CEPAL? * Ejercitación sobre bases de datos propias y bases de Catalis. * ¿Ejercicio con los logs de Catalis o el OPAC? * Malete/GNI? ==== Catalis ==== * Diagrama para visualizar el funcionamiento. * Remote scripting con iframe oculto. * ¿Algo sobre manipulación del DOM? * Problemas por resolver: registros largos, corrupción de registros, codificación de caracteres ==== OPACMARC ==== * Bases auxiliares: name, subj, title. Cómo se generan. El script ''update-opac.sh''. * Diagrama para visualizar el funcionamiento ===== Equipamiento y software necesarios ===== PC para el docente y una PC por alumno. Proyector. Navegador web, utilitarios CISIS, Catalis, OPACMARC. ===== Notas durante el curso ===== === Grupos repetibles === mx biblio "proc='a999|2|'" "pft=(if iocc=val(v999) then v650/ fi)" mx biblio "proc='a999|2|'" "pft=(if iocc=val(v999[1]) then v650/ fi)" mx tmp "pft=s('uno','dos','tres').5" mx biblio "proc=if v245^a.4='The ' and v245*1.1 <> '4' then 'd245a245|',v245.1,'4',v245*2,'|' fi " Reemplazo del subcampo v82^2: mx biblio "proc=@campo82.prc" pft=v82 if p(v82^2) then 'd82a82|', replace( v82, s('^2'v82^2), '^221'), '|' fi {{tag>isis marc}}