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

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

    Última actualización: 4 de junio de 2020

    Volver al menú

    Las reglas de normalización proporcionan los componentes básicos para controlar y modificar la forma en que los usuarios ven los metadatos en los registros bibliográficos. Primo VE le permite modificar las reglas de normalización para los campos de despliegue predefinidos (como Título o Colaborador), además de crear reglas de normalización para los campos de despliegue local, de modo que pueda controlar el despliegue de metadatos adicionales en el registro que no esté mapeado a uno de los campos de despliegue predefinidos. Los cambios aplicados están inmediatamente disponibles para su descubrimiento en Primo VE. 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 página describe la sintaxis utilizada para crear las reglas de normalización que se definen con las herramientas de Drools. Se recomienda que empiece con una regla existente que sea similar a la regla que quiera establecer, y que la modifique según sea necesario. Para consultar ejemplos adicionales con los cuales comenzar, véase Ejemplos de Reglas de Normalización.

    • El término MARC en esta página se refiere a los siguientes formatos admitidos en Primo VE: MARC21, UNIMARC, KORMARC, y CNMARC.

    • Asegúrese de utilizar el carácter de comillas (u+0022), como se especifica para los distintos elementos de las reglas de normalización.

    Sintaxis de las reglas de normalización

    Cada campo de despliegue y cada campo local pueden poseer una o más reglas que contengan un conjunto de condiciones y un conjunto de acciones que se apliquen a los registros, cuando se cumplan todas las condiciones para la regla. Cada acción dentro de una regla se puede ejecutar en un solo campo, y se lleva a cabo en el orden en el que aparezca en la regla.

    Al aplicar múltiples reglas a un campo de despliegue o a un campo local, puede que desee especificar una prioridad (por defecto es 0 si no se especifica) para cada regla. Las acciones estipuladas en la regla con el valor de mayor prioridad se ejecutan primero. Por ejemplo, las acciones en una regla con prioridad 2 se ejecutan antes que las acciones en una regla con prioridad 1. Solo es necesario asignar una prioridad cuando las reglas aplican acciones al mismo campo, y estas deben realizarse en una secuencia específica. Si no se asigna ninguna prioridad a las reglas, estas se procesan desde la parte superior hacia abajo.

    regla "título"

         prioridad <rule with highest number receives priority>

         cuando

              Condition1 <Boolean operator>

              Condition2 <Boolean operator>

                 ...

              Condition(n)

         entonces

              Action1

                 ...

              Action(n)

    fin

    • Cuando un campo de despliegue o un campo local posee múltiples reglas, cada regla se debe titular con un nombre único. Se recomienda que el título de la regla incluya el nombre del campo de despliegue o campo local que quiera crear.

    • Las instrucciones cuando,entonces y findeben estar en su propia línea.

    • Cada regla debe cerrarse con una instrucción de fin.

    • Los operadores booleanos solo están permitidos dentro de la cláusula cuando.

    • Si bien está permitido incluir varios operadores booleanos en las reglas, cuando se especifica 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

    La cláusula cuando contiene una o más condiciones (separadas por Operadores booleanos) que deben cumplir los metadatos en el registro, antes de que se ejecuten una o más acciones, y que se definen en la cláusula entonces . Se le puede dar prioridad a grupos de condiciones encerrándolos entre paréntesis (véase Agrupar Condiciones). Consulte Rutinas de Java para ver cuáles de las rutinas se pueden emplear en las cláusulas cuando.

    Por ejemplo:

    # Un ejemplo de una cláusula de condición "cuando".

     

    cuando

         MARC is "502"."a"

     

    ----------------------

     

    # Un ejemplo de una cláusula de condición "cuando" con operadores booleanos y un grupo.

     

    cuando

         MARC."502" tiene algún valor "a,b,c" AND

         (MARC."502"."a" match ".*" AND MARC."502"."b" match ".*" OR

         MARC."502"."a" match ".*" AND MARC."502"."c" match ".*")

     

    Al crear un conjunto de condiciones para una regla:

    • Si necesita escribir o comprobar campos MARC en las cláusulas cuando y entonces, asegúrese de verificar su existencia antes de usarlos. Véase Comprobaciones de Existencia para obtener más información.

    • Si necesita referirse a subcampos específicos en las cláusulas cuando y entonces , asegúrese de comprobar su existencia antes de usarlos.

    • Después de haber comprobado la existencia de un campo o subcampo, puede añadir comprobaciones de comparación para comparar información en los subcampos. Véase Comprobaciones de Comparación para obtener más información.

    • No coloque las comprobaciones de comparación en la misma línea que las comprobaciones de existencia. Comience las comprobaciones de comparación en la línea siguiente a una comprobación de existencia.

    • Asegúrese de que todos los conjuntos de condiciones contengan una comprobación de existencia. Por ejemplo, si un conjunto de condiciones a ambos lados del operador OR proporciona condiciones independientes, cada lado debe incluir una comprobación de existencia. Para más información, consulte el Operador OR.

    No se le permite comprobar la existencia de un campo o subcampo más de una vez. Al comprobar la existencia de un subcampo, también se verifica la existencia del campo.

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

    Condiciones MARC
    Condición Ejemplo
    Comprobaciones de Existencia:

    es: Comprueba la existencia del campo especificado y de un subcampo, si se especifica. Formatos válidos:

    • MARC es "campo "
    • MARC es "<campo>"."<subcampo>"
    • MARC.control es "<control number_or_LDR>"

    Si ha comprobado la existencia de un campo MARC (con o sin subcampos específicos) mediante la comprobación tiene algún o es en el lado izquierdo de la operación AND NOT, y quiere verificar la inexistencia de otro campo MARC que tiene uno o más subcampos específicos, debe utilizar la comprobación tiene algún en el lado derecho de la operación AND NOT. Por ejemplo:


    MARC is "502"."a,b,c" AND NOT MARC."505" has any "a"

    # El campo MARC 880 existe.

    MARC es "880"

    # El campo MARC 260 existe y tiene el subcampo c.

    MARC es "260"."c"

    # El campo de control MARC 001 existe.

    MARC.control es "001"

    # La cabecera MARC existe.

    MARC.control es "LDR"

    tiene algún : Comprueba la existencia del campo especificado y de cualquiera de sus subcampos incluidos. Formato válido:

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

    # El campo 700 existe y tiene uno o más 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"

    # El campo 700 existe y tiene alguno de los siguientes subcampos: a, b, c, f, g o h.

    MARC."700" tiene algún "a-c,f-h"
    Comprobaciones de Existencia Combinada y Comparación:

    coincide con (Comprobación de cabecera): Comprueba la existencia del campo de Cabecera y utiliza una expresión regular, para hallar información coincidente en cualquier lugar de la posición especificada en la Cabecera. Formato válido:

    MARC.control."LDR"(start_position-end_position) coincide con "<Java_regex>"

    # Comprueba la existencia del campo de Cabecera y se asegura de que el primer carácter de la izquierda sea un número:

    MARC.control."LDR"(0-1) coincide con "0-9"

    # Comprueba la existencia del campo de Cabecera y se asegura de que los dos caracteres en las posiciones 6 y 7 sean alguno de los pares de caracteres especificados:

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

    es igual a (Comprobación de cabecera): Comprueba la existencia del campo de Cabecera y se asegura de que todo el contenido entre el comienzo especificado y la posición final en la Cabecera sea igual al valor indicado. Formato válido:

    MARC.control."LDR"(start_position-end_position) es igual a "<value>"

    # Comprueba la existencia del campo de Cabecera y se asegura de que el primer carácter de la izquierda sea igual a 0:

    MARC.control."LDR"(0-1) es igual a "0"

    no es igual a Comprueba la existencia del campo de Cabecera y se asegura de que todo el contenido entre el comienzo especificado y la posición final en la Cabecera no sea igual al valor indicado. Formato válido:

    MARC.control."LDR"(start_position-end_position) no es igual a "<value>"

    # Comprueba la existencia del campo de Cabecera y se asegura de que el primer carácter de la izquierda no sea igual a 0:

    MARC.control."LDR"(0-1) no es igual a "0"

    Comprobaciones de Comparación:

    coinciden con: Tras comprobar primero la existencia de un campo, esta operación le permite usar una expresión regular para hallar información coincidente específica en un subcampo. Formato válido:

    MARC."<field>"."<subfield>" coinciden con "<Java_regex>"

    # El campo 880 tiene un subcampo 6 que coincide con la expresión 505-.*. La parte .* de la expresión significa que acepta cualquier cosa después de la secuencia.

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

    # El campo 562 tiene un subcampo 5 que coincide con un código de biblioteca específico (como MAIN).

    MARC."562"."5" match "MAIN"

    es igual a (comprobación de indicador): Tras comprobar primero la existencia de un campo, esta operación le permite hallar coincidencias entre los contenidos del indicador especificado y su valor. Formatos válidos:

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

    # El primer indicador del campo MARC 260 es un 3.

    MARC."260".ind"1" equals "3"

    Utilizar Operadores Booleanos en la Cláusula Cuando

    Los operadores booleanos le permiten combinar condiciones para crear filtros más complejos que determinen si un campo o subcampo se ajusta a los requisitos necesarios, ya sea para escribir o modificar sus contenidos en la cláusula entonces (véase Acciones). En general, se evalúa una serie de las mismas operaciones booleanas de izquierda a derecha, pero se otorga la siguiente prioridad si las operaciones booleanas son mixtas:

    1. AND NOT

    2. Y

    3. O

    Puede ignorar la prioridad encerrando grupos de condiciones entre paréntesis. Para más información, véase Agrupar Condiciones.

    Operador AND

    Este operador booleano indica que la siguiente condición debe ser verdadera. No puede utilizarse entre dos comprobaciones de existencia para el mismo campo, pero puede ser usado para añadir una comparación de subcampo al mismo campo o para comprobar la existencia de otro campo:

    Esta regla comprueba la existencia tanto del campo MARC 502 con cualquiera de los subcampos a, b y c, como del campo MARC 505 con el subcampo 'b'.

     

    rule "Primo VE - Lds05"

    cuando

              MARC."502" has any "a,b,c" AND MARC is "505"."d"

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

     

    ----------------------

     

    # ERROR : Esta regla intenta comprobar la existencia del campo MARC 502 y el subcampo 'd' y cualquiera de los subcampos a, b y c. Dado que la existencia del campo 502 se comprueba dos veces, dará error al compilarla. 

     

    rule "Primo VE - Lds05"

    cuando

              MARC."502" has any "a,b,c" AND MARC is "502"."d"

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

     

    ----------------------

     

    # Esta regla comprueba la existencia del campo MARC 502 y el subcampo 'd' y cualquiera de los subcampos a, b y c. La existencia del campo MARC 502 solo se comprueba una vez. Las comprobaciones de comparación se hacen sobre los subcampos específicos cuya existencia se verificó solo una vez.

     

    rule "Primo VE - Lds05"

    cuando

              MARC."502" has any "a,b,c,d" AND

              (MARC."502"."a" match ".*" OR MARC."502"."b" match ".*" OR MARC."502"."c" match ".*") AND

              MARC."502"."d" match ".*"

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

    AND NOT Operator

    Este operador booleano indica que la siguiente condición no debe ser verdadera. No puede utilizarse entre dos comprobaciones de existencia para el mismo campo, pero sí para añadir una comparación de subcampo para el mismo campo o para comprobar la existencia de otro campo:

    Esta regla comprueba la existencia del campo MARC 502 y la inexistencia del campo MARC 505.

     

    rule "Primo VE - Lds05"

    cuando

              MARC is "502"."a" AND NOT MARC."505" has any "a"

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

     

    -----------------------

     

    # ERROR : Esta regla intenta encontrar registros que tengan un subcampo 502 'a' no vacío y un subcampo 'b' vacío. Dado que esta regla intenta comprobar la existencia e inexistencia del campo MARC 502, dará error al compilarla.

     

    rule "Primo VE - Lds05"

    cuando

              MARC is "502"."a" AND NOT MARC."502" has any "b"

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

     

    -----------------------

     

    # Esta regla busca registros que tengan un subcampo 502 'a' no vacío y un subcampo 'b' vacío.

     

    rule "Primo VE - Lds05"

    cuando

              MARC."502" has any "a,b"

              MARC."502"."a" match ".*" AND NOT MARC."502"."b" match ".*"

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

    OR Operator

    Este operador booleano indica que la siguiente condición puede ser verdadera o no. Al usar este operador para enlazar una serie de Comprobaciones de Comparación, es necesario asegurarse de que el conjunto de condiciones tanto a la izquierda como a la derecha del operador OR contenga una comprobación de existencia. Puede que sea necesario agrupar condiciones para asegurarse de que las comprobaciones de comparación no sean tratadas como condiciones independientes por el compilador Drools.

    Esta regla comprueba la existencia del campo MARC 502 y los subcampos a, b y c o del campo MARC 502 y el subcampo 'd'. Esto ocurre porque se colocaron comprobaciones de existencia a ambos lados del operador OR.

     

    rule "Primo VE - Lds05"

    cuando

              MARC."502" has any "a,b,c" OR MARC is "502"."d"

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

     

    ----------------------

     

    # Esta regla comprueba la existencia de un campo 502 y se asegura de que los subcampos a, b y c, o bien d no estén vacíos.

     

    rule "Primo VE - Lds05"

    cuando

              MARC is "502" AND
              (MARC."502"."a" match ".*" AND MARC."502"."b" match ".*" AND
               MARC."502"."c" match ".*" OR MARC."502"."d" match ".*")

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

     

    ----------------------

     

    # Esta regla comprueba la existencia de un campo 502 y se asegura de que los subcampos a, b y c, o bien c o d no estén vacíos.

     

    rule "Primo VE - Lds05"

    cuando

              MARC is "502" AND
              MARC."502"."a" match ".*" AND MARC."502"."b" match ".*" AND
              (MARC."502"."c" match ".*" OR MARC."502"."d" match ".*")

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

     

    ----------------------

     

    # ERROR : Esta regla da error al ser compilada porque el conjunto de condiciones del lado derecho del operador OR no contiene una comprobación de existencia.

     

    rule "Primo VE - Lds05"

    cuando

              (MARC is "502" AND
              MARC."502"."a" match ".*" AND MARC."502"."b" match ".*" AND
              MARC."502"."c" match ".*") OR MARC."502"."d" match ".*"

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

     

    ----------------------

     

    # ERROR : Se trata de la misma forma que el ejemplo previo.

     

    rule "Primo VE - Lds05"

    cuando

              MARC is "502" AND
              MARC."502"."a" match ".*" AND MARC."502"."b" match ".*" AND
              MARC."502"."c" match ".*" OR MARC."502"."d" match ".*"

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

    ----------------------

     

    # Esta regla comprueba la existencia de un campo 502 y se asegura de que los subcampos a, b y c, o bien d no estén vacíos.

     

    rule "Primo VE - Lds05"

    cuando

              (MARC is "502" AND
              (MARC."502"."a" match ".*" AND MARC."502"."b" match ".*" AND
              MARC."502"."c" match ".*") OR MARC."502"."d" match ".*")

    entonces

              create pnx."display"."lds05" with MARC "502" subfields

    fin

     

    Agrupar Condiciones

    Si desea ignorar la prioridad de los operadores booleanos, puede agrupar condiciones encerrándolas entre paréntesis de modo que se procesen juntas. Cuando los grupos están anidados, los grupos más internos se tratan primero. Los grupos y las condiciones dentro de cada grupo continuarán utilizando la prioridad de los operadores booleanos (véase Utilizar Operadores Booleanos en la Cláusula Cuando).

    Por ejemplo:

    # La siguiente serie de condiciones se cumple cuando el campo MARC existe y los subcampos a y b, o bien c y d no están vacíos:

     

    rule "Primo VE - Lds05"

    cuando

              MARC is "502" AND

              (MARC."502"."a" match ".*" AND MARC."502"."b" match ".*" OR MARC."502"."c" match ".*" AND MARC."502"."d" match ".*")

     

    ----------------------

     

    # Con paréntesis, la misma serie de condiciones se cumple cuando el campo MARC existe y los subcampos a, b y d, o bien los subcampos a, c y d no están vacíos:

     

    rule "Primo VE - Lds05"

    cuando

              

              MARC is "502" AND

              (MARC."502"."a" match ".*" AND (MARC."502"."b" match ".*" OR MARC."502"."c" match ".*") AND MARC."502"."d" match ".*")

     

    Al agrupar condiciones, debe asegurarse de que todos los resultados condicionales incluyan comprobaciones de existencia. Para más información, véase Operador OR.

    Acciones

    La cláusula entonces le permite aplicar acciones a un único campo en un registro según 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. Las acciones se ejecutan desde arriba hacia abajo.

    Por ejemplo:

    # Una simple cláusula "entonces" que escribe todos los subcampos de un campo MARC en un campo de despliegue predefinido.

     

    entonces

         crear pnx."display"."alternate_contributor" con subcampos MARC."880"

    fin

    Además, puede usar cualquiera de las rutinas predefinidas de Java como acciones en la cláusula entonces. Para más información, véase Rutinas de Java.

    No se permiten operadores booleanos entre las acciones.

    La siguiente tabla describe la sintaxis de las posibles acciones de MARC:

    Acciones de MARC
    Acción Ejemplos
    Acciones de Asignación:

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

    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". "a"

    Acciones de Subcampo:

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

    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

    excluir subcampos sin ordenar : Esta acción excluye todos los subcampos especificados y pone los restantes en el orden en el que aparecen en el registro MARC. Formato válido:

    excluir subcampos sin ordenar "<subfield list>"

    crear pnx."display"."contents" con MARC "505" excluyendo subcampos sin ordenar "a-c"

    subcampos: Esta acción utiliza todos los subcampos, o bien solo los subcampos especificados, y los ordena por la letra/el número de subcampo, no en el orden en el que aparecen en el registro MARC. Formato:

    subcampos ["<lista de subcampo>"]

     

    Elimina los caracteres que coinciden con la expresión regular especificada y, a continuación, coloca el delimitador especificado entre todos los subcampos indicados:

    subfields "<subfield list>" delimited by "<string>" remove substring using regex "<Java_regex>"

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

    crear pnx."display"."contents" con subcampos MARC "505" "a-c"

     

    crear pnx."display"."contents" con subcampos MARC "505" "a-c" delimitados por "--" eliminar subcadena con regex "\\.+$"

    sub sin ordenar : Esta acción utiliza los subcampos especificados y pone los subcampos en el orden en el que aparecen en el registro MARC. Formato válido:

    sub sin ordenar "<subfield list>"

    Coloca el delimitador especificado entre todos los subcampos especificados:

    sub without sort "<subfield list>" delimited by "<string>"

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

     

    set TEMP"1" to MARC."710" sub without sort "a,b,c,d,e" delimited by " "

    Acciones de Transformación:

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

    remove substring using regexp (TEMP"<index>","<Java_regex >")

    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 válido:

    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 válido:

    replace string by string (TEMP"<index>","<Java_regex>","<string>")

    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 válido:

    return list using regex (TEMP"<index>",TEMP"<index>","<Java_regex>")

    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 válido:

    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 válido:

    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 válido:

    replace spaces (TEMP"<index>","<string>")

    sustituir espacios (TEMP"1"," ")

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

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

    minúsculas (TEMP"1")

    Consejos para Acciones

    Los siguientes consejos pueden ser útiles al crear acciones:

    • Puede emplear las Acciones de Asignación para guardar información en variables TEMP"i" (como TEMP"1") para un uso posterior en el tratamiento de la cláusula entonces. Después de haber guardado información en una TEMP"i", puede sobrescribir sus contenidos con Acciones de Transformación, sobrescribir un campo MARC existente en el registro o añadir un campo MARC adicional al registro. Por ejemplo:

      # Guarda los contenidos de un subcampo a en la variable TEMP"2" para un uso posterior.

       

      rule "Primo VE - Lds05"

      cuando

                MARC is "502"."a"

      entonces

                set TEMP"2" to MARC."502"."a"

                ...

      fin

       
    • Al guardar información desde un registro MARC, debe especificar un subcampo o utilizar una de las Acciones de Subcampo.

      # Guarda solo el subcampo 'a' de MARC 502 en el Campo de Despliegue Local 5 si el subcampo 'a' existe. Si un registro posee múltiples campos 502, el campo de despliegue local se sobrescribirá al procesarse cada campo 502.

       

      rule "Primo VE - Lds05"

      cuando

                MARC is "502"."a"

      entonces

                set pnx."display"."lds05" to MARC."502"."a"

      fin

       

      ----------------------

       

      # Guarda todos los subcampos de MARC 502 en el Campo de Despliegue Local 5 si existe. Esta acción de creación le permite crear múltiples campos de despliegue para el campo MARC. Se crea un nuevo campo de despliegue local en el registro al procesarse cada campo 502.

       

      rule "Primo VE - Lds05"

      cuando

                MARC is "502"

      entonces

                create pnx."display"."lds05" with MARC."502" subfields

      fin

       

      ----------------------

       

      # Error : Intenta guardar el subcampo de MARC 502 en el Campo de Despliegue Local 5 si existe. La compilación falla porque no se incluyó una acción de subcampo con la instrucción Crear.

       

      rule "Primo VE - Lds05"

      cuando

                MARC is "502"

      entonces

                create pnx."display"."lds05" with MARC."502"

      fin

       

       
    • Si necesita guardar un valor de un subcampo específico, debe añadir una condición a la cláusulacuando que compruebe la existencia de ese subcampo. Para más detalles, véase Comprobaciones de Existencia. Por ejemplo:

      # Comprueba la existencia de un campo MARC 502 que específicamente tenga un subcampo a, y escribe solo ese subcampo.

       

      rule "Primo VE - Lds05"

      cuando

                MARC is "502"."a"

      entonces

                create pnx."display"."lds05" with MARC."502"."a"

      fin

       

      ----------------------

       

      # Comprueba la existencia de un campo MARC 502 que tenga un subcampo a o b, y escribe cualquier subcampo existente. Al usar la condición "tiene algún", asegúrese de no escribir ningún subcampo que no exista. Esto se puede conseguir añadiendo una comprobación de comparación para ver que un campo específico no esté vacío.

       

      rule "Primo VE - Lds05"

      cuando

                MARC."502" has any "a,b"

      entonces

                create pnx."display"."lds05" with MARC."502" subfields

      fin

       

      ----------------------

       

      # ERROR : Intenta escribir un subcampo específico cuya existencia no se había comprobado.

       

      rule "Primo VE - Lds05"

      cuando

                MARC is "502"

      entonces

                create pnx."display"."lds05" with MARC."502"."a"

      fin

       

      ----------------------

       

      # ERROR - Intenta escribir un subcampo específico cuya existencia no se había comprobado. Se probó el subcampo a para ver si tenía un valor, pero su existencia no se comprobó específicamente.

       

      rule "Primo VE - Lds05" 

           when
                 MARC is "502" AND MARC."502"."a" match ".*"
           then
                 create pnx."display"."lds05" with MARC."502"."a"
      end

    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

    normalize discovery lang (TEMP"<index>")

    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 remove nonfiling brackets MARC."{tag}" sourcetag "{fieldTag}" from TEMP"{i}"

    Relevante únicamente para formatos KORMARC.

    Si

    ("{fieldTag}" es igual a 630|740 Y MARC."{tag}" tiene el primer indicador 1)
    O
    ("{fieldTag}" es igual a 130|222|240|242|243|245|440|490|730|830 Y MARC."{tag}" tiene el segundo indicador 1)

    Entonces

    La rutina elimina los corchetes que rodean a TEMP"{i}", si existen.

    Ejemplo:

    kormarc remove nonfiling brackets MARC."630" sourcetag "630" from TEMP"1"

    Date1

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

    set TEMP"1" to MARC.control."008".Date1

    Date2

    Position 11-15 in the MARC 008 field. 

    Por ejemplo:

    set TEMP"1" to MARC.control."008".Date2

    Idioma

    Position 35-37 in the MARC 008 field. 

    Por ejemplo:

    set TEMP"1" to MARC.control."008".Language

    Título de despliegue de Prima

    Esta acción recupera el título desde el registro MARC y se puede utilizar en conjunción con la rutina MARCRECORD. Por ejemplo:

    cuando
         MARCRECORD
     entonces
         establecer TEMP"1" en título de despliegue de Prima

    MARCRECORD

    Cuando se coloca en la cláusula cuando, esta rutina comprueba la existencia de los campos de título MARC necesarios. Todo lo siguiente debe ser verdadero para satisfacer la condición:

    1. Verifique si el campo LDR existe en el MARC.

    2. Si es así, realice una comprobación para descubrir si existe a en la posición 6 y b, i o s en la posición 7.

    3. Si son verdaderas, entonces los registros pertenecen a un diario y el título se toma del campo 130, subcampos a,d,f,k,l,m,n,o,p,r,s.

    4. Si no existe campo LDR, verifique el título en el campo 245, subcampos a,b,f,g,k,n,p,s.

    Para más información, vea la rutina título de despliegue de Prima.

    Ejemplos de Reglas de Normalización

    Esta sección proporciona algunaos ejemplos básicos de reglas de normalización para Primo VE.

    Para encontrar ejemplos más avanzados, vea la página Ejemplos de Reglas de Normalización de Primo VE en la Red de Desarrolladores de Ex Libris.

    Ver las Reglas por Defecto

    Además de los ejemplos en las siguientes secciones y en la Red de Desarrolladores de Ex Libris, puede visualizar las reglas predefinidas para cada campo de Despliegue antes de realizar cambios en ellas.

    Para ver las reglas por defecto de un campo de Despliegue:
    1. En la página Mostrar Campos (Menú de Configuración > Descubrimiento > Mostrar Configuración > Gestionar Mostrar Campos), seleccione Añadir campo de despliegue de la lista desplegable Añadir campo, para abrir la página Definir un Campo de Despliegue.

    2. Seleccionar un campo de despliegue predefinido desde la lista desplegable Campo a editar.

    3. Dependiendo de sus formatos admitidos, edite la fila de la regla de normalización para el campo de despliegue (por ejemplo, Regla de Normalización Marc21 para despliegue).

      PVE_DF_NormRule.png

      Regla de Normalización MARC Predefinida para el Campo de Edición
    4. Si ya ha modificado las reglas de un campo, puede copiar y guardar a un lado sus modificaciones de la regla, y luego seleccionar Restaurar Valores por Defecto para ver las reglas por defecto.

    Ejemplo 1 - Excluir Subcampos Numerados

    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" concuerda con "520-.*"
    entonces
    crear pnx."display"."description" con MARC."880" excluyendo los subcampos de valor numérico sin ordenar

    fin

     
    Regla MARC 880 - Crear campo de despliegue Descripción

    Ejemplo 2 - Usar Concatenación

    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
    configurar TEMP"1" a MARC."600" subcampos "a-u,w" delimitados por " " eliminar subsecuencia usando regex "\\.+$"
    configurar TEMP"2" a MARC."600" subcampos "x-z" delimitados por " -- " eliminar 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 3 - Usar la Rutina de Normalización de Idioma

    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
    configurar 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")
    crear pnx."display"."language" con lista TEMP"1"

    fin

     
    Regla MARC 041 a - Crear campo de despliegue Idioma

    Ejemplo 4 - Añadir Reglas de Búsqueda y Faceta

    La siguiente regla crea el campo local Lsr14 con los valores del subcampo a de MARC 700 (Entrada Añadida-Nombre Personal; $a-Nombre personal).

    Las reglas empleadas para los campos de faceta y de búsqueda locales se deben guardar en el campo de búsqueda local (por ejemplo, "search"."lsr14"), en lugar de en el campo de despliegue local (por ejemplo, "display"."lds14").

    regla "Primo VE Marc - Lsr14"

    cuando
    MARC es "700"."a"
    entonces
    crear pnx."search"."lsr14" con 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?