Skip to main content
ExLibris
  • Subscribe by RSS
  • Ex Libris Knowledge Center

    Configurar reglas de normalización para campos de visualización y campos locales

    Volver al menú

    Las reglas de normalización proporcionan los componentes para realizar mejoras en los registros MARC 21. Primo VE permite crear reglas de normalización adicionales para modificar la presentación de los campos de visualización predefinidos y de los campos de visualización locales. Las reglas de normalización se aplican inmediatamente a los registros para su descubrimiento. Para más información sobre cómo crear campos de visualización y campos locales, véase Configurar campos de visualización locales y campos de búsqueda para Primo VE.

    Esta sección describe la sintaxis utilizada para crear las reglas de normalización, que se definen con las herramientas de Drools.

    Términos de Drools

    Se utilizan los siguientes términos en la sintaxis de las reglas de normalización:

    • num: valor numérico

    • sort: ordenar

    • sub: subcampo

    • $: Símbolo válido de una expresión regular que indica el final.

    Sintaxis de las reglas de normalización

    Los ficheros de reglas contienen una o más reglas, que incluyen una condición y una o más acciones que deben aplicarse a los registros. Las acciones se aplicarán a un registro si el registro cumple la condición. Cada acción dentro de una regla se puede ejecutar en un único campo dentro de un registro. Las acciones se ejecutan según el orden en que aparecen en la regla.

    Al definir una regla que contiene varias reglas, se deberá utilizar el factor de prioridad (o de relevancia). Las acciones que se estipulen en la regla con la prioridad más alta se ejecutarán en primer lugar. Por ejemplo, la acción de una regla con prioridad 2 se ejecutará antes que la acción de una regla con prioridad 1.

    La prioridad (o relevancia) es únicamente necesaria cuando los campos de las reglas son iguales. En caso contrario, cuando las reglas de un fichero contengan campos diferentes, se ejecutarán varias reglas de arriba a abajo.

    Cuando

    (<condiciones en el registro MARC>) entonces

    Acción1

    Acción2

    Acción3

    ...

    Fin

    <condiciones en el registro MARC> contiene una o más cláusulas booleanas que se aplican al registro. Si <condiciones en el registro MARC> devuelve VERDADERO, se aplicará la regla al registro; en caso contrario, la regla no se aplicará y no se procesará el registro.
    • “Cuando” debe ser la única palabra que aparezca en la primera línea. La condición se debe colocar en una línea aparte.

    • Aunque está permitido incluir varios operadores booleanos en las reglas, cuando se selecciona un gran número de ellos, es probable que el rendimiento sea más lento. Por lo tanto, cada regla no debería incluir más de 200 operadores booleanos.

    Condiciones

    Las condiciones se definen a nivel de la regla en su totalidad (CUANDO) para el campo de visualización y local de Primo VE. La cláusula CUANDO es una condición que se debe cumplir en todo el registro para determinar si la regla se aplica al registro. Los siguientes operadores booleanos se utilizan entre condiciones para especificar varias condiciones:.

    • Y – La próxima condición debe ser verdadera.

    • O – La próxima condición puede o no ser verdadera.

    • Y NO – La próxima condición no debe ser verdadera.

    La siguiente tabla describe la sintaxis de las posibles condiciones para MARC21:

    Condiciones para MARC21
    Condición Ejemplo

    es – Aplica las acciones cuando existe un campo/subcampo específico. Formatos válidos:

    • MARC es "campo "
    • MARC es "<campo>"."<subcampo>"
    • MARC.control es "<número de control>"

    # El campo MARC 880 existe.

    MARC es "880"

    # El campo MARC 260 tiene el subcampo c.

    MARC es "260"."c"

    # El campo MARC.control es 001.

    MARC.control es "001"

    concuerda – Aplica las acciones cuando los contenidos del subcampo especificado concuerdan con una expresión regular especificada. Formato:

    MARC."<campo>"."<subcampo>" coincidente con la "<expresión regular>"

    # El campo 880 con subcampo ‘6’ coincide con la expresión ‘505-.*’

    MARC."880"."6" coincide con "505-.*"

    La parte .* de la expresión significa que acepta cualquier cosa después de la secuencia.

    tiene cualquiera – Aplica las acciones cuando existe un campo específico y tiene cualquiera de los subcampos especificados. Formato:

    MARC."<campo>" tiene cualquier "<lista de subcampo>"

    # El campo 700 tiene uno o más de uno de los siguientes subcampos: a, b, c, d, e, j, q, y u.

    MARC."700" tiene alguna "a,b,c,d,e,j,q,u"

    es igual a: aplica las acciones cuando coincide el todo el contenido del subcampo especificado. Formato:

    MARC."<campo>".ind"<indicador>" es igual a "<valor>"

    # El primer indicador del campo MARC 260 es 3.

    MARC."260".ind"1" es igual a "3"

     

    Acciones

    Se pueden aplicar acciones a campos únicos de un registro en base a las condiciones especificadas en la regla. Si se cumplen todas las condiciones, las acciones se aplicarán al registro en el orden en que aparecen en la lista.

    Si necesita utilizar un campo MARC en la sección Acciones, debe también verificar su existencia en la sección Condiciones. Por ejemplo:

    regla "Primo VE - Idioma 041 a"

          cuando

             MARC es "041"."a"

          entonces

             configurar TEMP"2" en MARC."041"."a"

    La siguiente tabla describe la sintaxis de las posibles acciones para MARC21.

    Acciones para MARC21
    Acción Ejemplos

    configurar – Esta acción cambia los contenidos de un campo existente. Si no existe un campo, este se crea. Formato:

    configurar <campo> en <campo>

    configurar pnx."display"."contents" en TEMP"1"

    Configurar TEMP"1" en pnx."display"."contents"

    crear – Esta acción crea un campo de despliegue de PNX y configura sus contenidos al valor de un campo especificado. Si ya existe un campo de despliegue, se agrega un campo adicional. Formato:

    crear <campo PNX> con <campo>

    crear pnx."display"."contents" con MARC "505"

    excluir subcampos num. sin ordenar – Esta acción solo usa subcampos no numéricos y los coloca en el orden en el que aparecen en el registro MARC. Formato:

    excluir los subcampos de valor numérico sin ordenar

    crear pnx. "display"."contents" con MARC "505" excluyendo los subcampos de valor numérico sin ordenar

    sub sin ordenar – Esta acción utiliza ya sea todos los subcampos o solo los subcampos especificados y los pone en el orden en el que aparecen en el registro MARC. Formato:

    sub sin ordenar ["<lista de subcampo>"]

    poner TEMP"1" en el sub MARC."710" sin ordenar "a,b,c,d,e"

    configurar TEMP"1" en el sub MARC."710" sin ordenar

    eliminar subsecuencia usando regex – Esta acción elimina una subsecuencia de los contenidos de un campo temporal usando una expresión regular especificada. Formato:

    eliminar subsecuencia usando regexp (TEMP"<índice>",<expresión regular>)

    eliminar la subcadena utilizando regex (TEMP"1","(/|:|;|=|,)+$")

    concatenar con delimitador – Esta acción concatena los contenidos de dos campos temporales y los separa con un delimitador. El resultado aparece en el primer campo temporal. Formato:

    Concatenar con delimitador (TEMP"<índice>",TEMP"<índice>","<delimitador>")

    concatenar con delimitador (TEMP"1",TEMP"2","")

    añadir prefijo – Esta acción añade el valor especificado al principio del campo temporal. Formato:

    añadir prefijo (TEMP"<índice>","<valor>")

    añadir prefijo (TEMP"2","$$Q")

    reemplazar secuencia por secuencia – Esta acción reemplaza todas las instancias de una expresión regular con un valor especificado. Formato:

    reemplazar secuencia por secuencia (TEMP"<índice>","<expresión regular>","<valor>")

    sustituir cadena por cadena (TEMP"1","[^0-9]","\\?")

    volver a la lista usando regex – Esta acción busca todas las instancias de una expresión regular en el segundo campo temporal y las copia como una lista en el primer campo temporal. Formato:

    volver a la lista usando regex (TEMP"<índice>",TEMP"<índice>","<expresión regular>")

    devolver lista utilizando regex (TEMP"1",TEMP"2","[a-z]{3}")

    eliminar secuencia – Esta acción elimina una secuencia específica de un campo temporal. Formato:

    eliminar secuencia (TEMP"<índice>","<valor> ")

    eliminar cadena (TEMP"1","<<")

    eliminar espacios iniciales y finales – Esta acción elimina los espacios iniciales y finales de un campo temporal. Formato:

    eliminar espacios iniciales y finales (TEMP"<índice>")

    eliminar los espacios iniciales y finales (TEMP"1")

    reemplazar espacios – Esta acción reemplaza todos los espacios en un campo temporal con un caracter o una secuencia especificados. Formato:

    Reemplazar espacios (TEMP"<índice>","<valor>")

    sustituir espacios (TEMP"1"," ")

    minúscula – Esta acción cambia todas las letras a minúscula en un campo temporal. Formato:

    minúsculas (TEMP"<índice>")

    minúsculas (TEMP"1")

    delimitado por – Esta acción coloca un delimitador entre los subcampos especificados. Formato:

    Delimitado por "<secuencia>"

    configurar TEMP"2" a MARC."600" subcampos "x-z" delimitados por " -- "

     

    Rutinas de Java

    La siguiente tabla enumera rutinas Java adicionales que típicamente se añaden como acciones para realizar una serie de acciones con un solo comando.

    Rutinas de Java
    Rutina Descripción

    normalizar descubrimiento de idioma

    Comprobar que el idioma es válido. Si tiene menos de tres letras o no está definido en la lista de idiomas, se le asignará el valor ‘und’ (no definido).

    kormarc elimina los corchetes MARC no archivadores."{tag}" sourcetag "{fieldTag}" del TEMP"{i}"

    Relevante únicamente para formatos KORMARC.

    Comprobar el "{fieldTag}" si es igual a 630|740 y el primer indicador de MARC."{tag}" es 1,

    O

    el "{fieldTag}" es igual a 130|222|240|242|243|245|440|490|730|830 y el segundo indicador de MARC."{tag}" es 1

    Entonces

    eliminar de TEMP"{i}" los paréntesis que lo rodean si existen.

    Date1

    Posición 7-11 en el campo MARC 008.

    Date2

    Posición 11-15 en el campo MARC 008.

    Idioma

    Posición 35-37 en el campo MARC 008.

    Título de despliegue de Prima

    Esta acción toma el título del registro MARC:

    1) Comprobar si el campo LDR existe en el MARC.

    2) En caso afirmativo, comprobar si hay una ‘a’ en la posición 6 y e|i|s en la posición 7.

    3) Si ambas condiciones son verdaderas, entonces los registros son diarios y el título se toma de los subcampos a,d,f,k,l,m,n,o,p,r,s del campo 130.

    4) Si no hay ningún campo LDR, comprobar el título en los subcampos a,b,f,g,k,n,p,s del campo 245.

    MARCRECORD

    Esta condición se utiliza en conjunto con la rutina del título de despliegue de Prima para verificar la existencia de los campos de título de MARC necesarios.

    Ejemplo de regla de normalización

    Ejemplo 1:

    La siguiente regla crea un enlace de hipertexto desde la URL almacenada en el campo MARC 505 y lo muestra en el campo de despliegue Contenidos .

    regla "Primo VE - Contenidos 505"

          cuando

             MARC."505" tenga alguna "u,y"

          entonces

             poner TEMP"1" en los subcampos "u" de MARC."505"

             poner TEMP"2" en los subcampos "y" de MARC."505"

             añadir sufijo  (TEMP"2","</a>")

             añadir prefijo (TEMP"1","<a target=\"_blank\" href=\"")

             añadir sufijo  (TEMP"1","\">")

             concatenar con delimitador (TEMP"1",TEMP"2","")

             poner pnx."display"."contents" en TEMP"1"

    fin

     
    Regla MARC 505 - Crear enlace para el campo despliegue Contenido

    Fuente MARC:

    505    $$u http://www.google.com $$y Google

    Salida de Primo VE:

    GoogleLink.png


    Ejemplo 2:

    Cuando un subcampo MARC 880 $$6 contiene la secuencia 520-<any_value>, la siguiente regla mostrará el contenido de todos los subcampos no numéricos en el campo de despliegue Descripción sin ordenarlos:

    regla "Primo VE - Description 880"

          cuando

             MARC es "880" Y

             MARC."880"."6" coincide con "520-.*"

          entonces

             crear pnx."display"."description" con MARC."880" excluyendo subcampos num sin orden

    fin

     
    Regla MARC 880 - Crear campo de despliegue Descripción

    Ejemplo 3:

    Cuando un campo MARC 600 contiene cualquiera de los subcampos a-u, w-z y su segundo indicador no es 2, la regla siguiente desplegará la concatenación de las siguientes secuencias separadas por " -- " en el campo de despliegue Asunto:

    • Una secuencia que no tiene punto al final y contiene los valores de los subcampos a-u y w (que están separados por un espacio).

    • Una secuencia que no tiene punto al final o contiene los valores de los subcampos x-z (que están separados por "--").

    Regla "Primo VE - Asunto 600"

          cuando

             MARC."600" tiene cualquier "a-u,w-z" Y NO

    MARC."600".ind"2" es igual a "2"

          entonces

             fijar TEMP"1" a subcampos "a-u,w" de MARC."600" delimitados por " " borrar subsecuencia usando regex "\\.+$"

             fijar TEMP"2" a subcampos "x-z" de MARC."600" delimitados por " -- " borrar subsecuencia usando regex "\\.+$"

             concatenar con delimitador (TEMP"1",TEMP"2"," -- ")

             crear pnx."display"."subject" con TEMP"1"

    fin

     
    Regla MARC 600 - Crear ccampo de despliegue Asunto

    Ejemplo 4:

    Cuando existe un MARC 041 $$a, se aplican las siguientes acciones de la regla siguiente al campo para crear el campo de despliegue Idioma :

    1. El contenido de MARC 041 $a a se copia a Temp2, y todas las letras se convierten a minúsculas.

    2. Todos los códigos de idiomas de tres letras en Temp2 se almacenan como una lista en Temp1.

    3. Si los códigos de idiomas almacenados en Temp1 son válidos, se crea el campo de despliegue Idioma .

    regla "Primo VE - Idioma 041 a"

          cuando

             MARC es "041"."a"

          entonces

             fijar TEMP"2" a MARC."041"."a"

             minúsculas (TEMP"2")

             devolver lista utilizando regex (TEMP"1",TEMP"2","[a-z]{3}")

             Normalizar descubrimiento de idioma (TEMP"1")

             creater pnx."display"."language" con lista TEMP"1"

    fin

     
    Regla MARC 041 a - Crear campo de despliegue Idioma

    Ejemplo 5:

    El siguiente ejemplo muestra cómo verificar el campo LDR en las reglas de normalización:

    Rregla "Primo VE - verificación LDR"

          cuando

             MARC es "130" Y

             MARC es "245" Y

             MARC."130"."a" concuerda con "inglés.*" Y

             MARC.control."LDR"(6-8) concuerda con "ab|ai|as "

     

          entonces

             ...

             ...

    fin

     
    Use el LDR en las Reglas de normalización.

    Ejemplo 6

    Cuando un subcampo MARC 583 $$a contiene cualquier valor, la siguiente regla almacena el contenido del subcampo en el campo de despliegue local lds02:

    rule "Primo VE - Lds02"

          cuando

             MARC is "583"."a"

          entonces

             create pnx."display"."lds02" with MARC."583"."a"

    fin

     
    MARC 583 Rule - Create Lds02 Display Field

    Ejemplo 7:

    La regla siguiente crea campo local Lsr01 con valores desde los subcampos MARC 300 a, b (Descripción Física; $a - Extensión, $b – Otros detalles físicos):

     

    rule "Primo VE Marc - Lsr01"

     

          cuando

     

             MARC.”300” has any "a,b"

     

          entonces

     

             create pnx."search"."lsr01" with MARC "300" subfields "a,b"

     

    fin

     

     
    Regla MARC 300 - Crear Campo de faceta y de búsqueda local

    Ejemplo 8:

    La regla siguiente crea campo local Lsr14 con los valores desde un subcampo MARC 700 (Añadida la Entrada-Nombre Personal; $a- Nombre personal):

    rule "Primo VE Marc - Lsr14"

     

          cuando

     

             MARC is "700"."a"

     

          entonces

     

             create pnx."search"."lsr14" with MARC "700"."a"

     

    fin
     
    Regla MARC 700 - Crear Campo de faceta y de búsqueda local

    Fuente MARC:

    700    1#$aMelville, Gert, $eeditor.

    700    1#$aRuta, Carlos, $eeditor.

    700    1#$aCarugati, Laura S, $eeditor.

    Salida de Primo VE:

    PVE_LocalSearchFieldExampleOutput.png

     

    • Was this article helpful?
    //Feedback