Configurar reglas de normalización para campos de visualización y campos locales
Última actualización: 15 de julio de 2024
Esta página es específica para entornos de Primo VE. En el caso de clientes de Primo, consulte Trabajar con reglas de normalización y Mapeo al registro normalizado.
Introducción
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 en su configuración original (como Título o Colaborador). También puede crear reglas de normalización para campos de despliegue locales para que pueda controlar el despliegue de metadatos adicionales en el registro que no está mapeado a uno de los campos de despliegue de la configuración original. 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. Recomendamos que empiece con una regla existente que sea similar a la regla que quiera definir 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.
-
Dado que mapeamos automáticamente los registros MARC a BibFrame, sus DROOLS MARC también se mapean a BibFrame.
Certificación de administración de Primo VE - Campos locales (11 min.)
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.
rule "title"
prioridad <la regla con el número más alto recibe prioridad>
cuando
Condition1 <Boolean operator>
Condition2 <Boolean operator>
...
Condition(n)
then
Action1
...
Action(n)
end
-
Cuando el mapeo de un campo de despliegue o un campo local contiene más de una instancia para la regla, el título de cada regla debe ser único. Por ejemplo:
regla "Primo VE Display - contributor 700"regla "Primo VE Display - contributor 700/2" -
Para los campos locales, el título de la primera regla debe usar el siguiente formato basado en si el campo local se usa para despliegue (Lds) o búsqueda/facetas (Lsr):
regla "Primo VE - <display_or_search><local field number>"Por ejemplo, si está creando una regla para un campo de despliegue local 100, debe usar el título siguiente:
regla "Primo VE - Lds100" -
Las instrucciones cuando, entonces y fin deben 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 debe 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 ejecutar 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:
# An example of a "when" condition clause.
when
MARC is "502"."a"
----------------------
# An example of a "when" condition clause with Boolean operators and a group.
when
MARC."502" has any "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 verificar 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 verificar 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 verificación de existencia. Por ejemplo, si un conjunto de condiciones a ambos lados del operador OR proporciona condiciones independientes, cada parte debe incluir una verificación de existencias. 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:
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 coincide con los requisitos necesarios, ya sea para escribir o modificar su contenido en la cláusula entonces (consulte 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:
-
AND NOT
-
Y
-
O
Puede ignorar la prioridad encerrando grupos de condiciones entre paréntesis. Para más información, véase Agrupar Condiciones.
Y Operador
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:
This rule checks for the existence of both the MARC 502 field with any of the a, b, and c subfields and the MARC 505 fields with the 'b' subfield.
rule "Primo VE - Lds05"
when
MARC."502" has any "a,b,c" AND MARC is "505"."d"
then
create pnx."display"."lds05" with MARC "502" subfields
end
----------------------
# FAILS - This rule attempts to check for the existence of the MARC 502 field and the 'd' subfield and any of the a, b, and c subfields. Since the existence of the 502 field is checked twice, it will fail compilation.
rule "Primo VE - Lds05"
when
MARC."502" has any "a,b,c" AND MARC is "502"."d"
then
create pnx."display"."lds05" with MARC "502" subfields
end
----------------------
# This rule checks for the existence of the MARC 502 field and the 'd' subfield and any of the a, b, and c subfields. The existence of the MARC 502 field is checked only once. Comparison checks are made on the specific subfields whose existence was checked only once.
rule "Primo VE - Lds05"
when
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 ".*"
then
create pnx."display"."lds05" with MARC "502" subfields
end
Y NO Operador
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:
This rule checks for the existence of the MARC 502 field and the nonexistence of the MARC 505 field.
rule "Primo VE - Lds05"
when
MARC is "502"."a" AND NOT MARC."505" has any "a"
then
create pnx."display"."lds05" with MARC "502" subfields
end
-----------------------
# FAILS - This rule attempts to find records that have a nonempty 502 'a' subfield and an empty 'b' subfield. Since this rule attempts to check for the existence and nonexistence of the MARC 502 field, it will fail compilation.
rule "Primo VE - Lds05"
when
MARC is "502"."a" AND NOT MARC."502" has any "b"
then
create pnx."display"."lds05" with MARC "502" subfields
end
-----------------------
# This rule finds records that have a nonempty 502 'a' subfield and an empty 'b' subfield.
rule "Primo VE - Lds05"
when
MARC."502" has any "a,b"
MARC."502"."a" match ".*" AND NOT MARC."502"."b" match ".*"
then
create pnx."display"."lds05" with MARC "502" subfields
end
U Operador
Este operador booleano indica que la siguiente condición puede ser verdadera o no. Al usar este operador para enlazar una serie de Verificaciones de comparación, es necesario asegurarse de que el conjunto de condiciones tanto a la izquierda como a la derecha del operador O contenga una verificación de existencia. Quizá sea necesario agrupar condiciones para asegurar que las verificaciones de comparación no sean tratadas como condiciones independientes por el compilador Drools.
This rule checks for the existence of either the MARC 502 field and a, b, or c subfields or the MARC 502 field and 'd' subfield. This passes because existence checks were placed on both sides of the OR operator.
rule "Primo VE - Lds05"
when
MARC."502" has any "a,b,c" OR MARC is "502"."d"
then
create pnx."display"."lds05" with MARC "502" subfields
end
----------------------
# This rule checks for the existence of a 502 field and makes sure that either subfields a, b, and c are not empty or subfields d is not empty.
rule "Primo VE - Lds05"
when
MARC es "502" Y
(MARC."502"."a" match ".*" Y MARC."502"."b" match ".*" Y
MARC."502"."c" match ".*" O MARC."502"."d" match ".*")
then
create pnx."display"."lds05" with MARC "502" subfields
end
----------------------
# This rule checks for the existence of a 502 field and makes sure that subfields a and b and c are not empty and either subfield c or d is not empty.
rule "Primo VE - Lds05"
when
MARC es "502" Y
MARC."502"."a" match ".*" Y MARC."502"."b" match ".*" Y
(MARC."502"."c" match ".*" O MARC."502"."d" match ".*")
then
create pnx."display"."lds05" with MARC "502" subfields
end
----------------------
# FAILS - This rule fails compilation because the set of conditions on the right side of the OR operator do not contain an existence check.
rule "Primo VE - Lds05"
when
(MARC es "502" Y
MARC."502"."a" match ".*" Y MARC."502"."b" match ".*" Y
MARC."502"."c" match ".*") O MARC."502"."d" match ".*"
then
create pnx."display"."lds05" with MARC "502" subfields
end
----------------------
# FAILS - This is treated the same as the previous example.
rule "Primo VE - Lds05"
when
MARC es "502" Y
MARC."502"."a" match ".*" Y MARC."502"."b" match ".*" Y
MARC."502"."c" match ".*" O MARC."502"."d" match ".*"
then
create pnx."display"."lds05" with MARC "502" subfields
end
----------------------
# This rule checks for the existence of a 502 field and makes sure that either subfields a and b and c are not empty or subfield d is not empty.
rule "Primo VE - Lds05"
when
(MARC es "502" Y
(MARC."502"."a" match ".*" Y MARC."502"."b" match ".*" Y
MARC."502"."c" match ".*") O MARC."502"."d" match ".*")
then
create pnx."display"."lds05" with MARC "502" subfields
end
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:
# The following series of conditions passes when the MARC field exists and either subfields a and b are not empty or subfields c and d are not empty:
rule "Primo VE - Lds05"
when
MARC is "502" AND
(MARC."502"."a" match ".*" AND MARC."502"."b" match ".*" OR MARC."502"."c" match ".*" AND MARC."502"."d" match ".*")
----------------------
# With parentheses, the same series of conditions passes when the MARC field exists and either subfields a,b, and d are not empty or subfields a,c, and d are not empty:
rule "Primo VE - Lds05"
when
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 verificaciones 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 aparezcan en la lista. Las acciones se ejecutan desde arriba hacia abajo.
Por ejemplo:
# A simple "then" clause that writes all subfields from a MARC field to an out-of-the-box display field.
then
create pnx."display"."alternate_contributor" with MARC."880" subfields
end
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:
Acción | Ejemplos |
---|---|
Acciones de asignación: Le permiten guardar información desde un campo MARC a un campo de despliegue/búsqueda o a un campo temporal (TEMP"i"). | |
configurar: esta acción cambia los contenidos de un campo existente. Si no existe un campo, este se crea. Formato válido: set <field> to <field>
|
set pnx."display"."contents" to TEMP"1" set TEMP"1" to pnx."display"."contents" establecer TEMP"1" en DCMI."dcterms"."format" |
crear: esta acción crea un campo de despliegue y configura su contenido en función del valor de un campo especificado. Si ya existe un campo de despliegue, se agrega un campo adicional. Formato: crear <display field> con <field>
|
create pnx."display"."contents" with MARC "505"."a" crear operational."prima_display"."coverage" con DCMI."dcterms"."coverage" |
Acciones de subcampo: Le permiten incluir/excluir subcampos de un campo MARC durante la asignación de un campo MARC a un campo de despliegue/búsqueda o a un campo temporal (TEMP"i"). | |
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: excluding num subfields without sort
|
create pnx."display"."contents" with MARC "505" excluding num subfields without sort |
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: excluding subfields without sorting "<subfield list>"
La <lista de subcampo> es una expresión regular que puede incluir lo siguiente:
|
crear pnx."display"."contents" con MARC "505" excluyendo subcampos sin ordenar "a-c" Las siguientes <listas de subcampos> brindan los mismos resultados:
|
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 y no por el orden en el que aparecen en el registro MARC. Formato: subfields "<subfield list>"
Puede emparejar las opciones delimitado por y eliminar subsecuencia usando regex para eliminar los caracteres que coinciden con la expresión regular especificada y para ubicar el delimitador indicado entre todos los subcampos especificados: subfields "<subfield list>" delimited by "<string>" remove substring using regex "<Java_regex>"
Las opciones delimitado por y eliminar subsecuencia usando regex no se pueden usar por separado con la acción subcampos. |
create pnx."display"."contents" with MARC "505" subfields create pnx."display"."contents" with MARC "505" subfields "a-c"
create pnx."display"."contents" with MARC "505" subfields "a-c" delimited by "--" remove substring using regex "\\.+$" |
sub sin ordenar: esta acción utiliza los subcampos especificados y los coloca en el orden en el que aparecen en el registro MARC. Formato válido: sub without sort "<subfield list>"
La opción delimitado por le permite colocar un delimitador entre los subcampos especificados. sub without sort "<subfield list>" delimited by "<string>"
Cuando se usa la opción ajustar campos junto con la acción de transformación reemplazar delimitadores de ajuste, puede añadir delimitadores como prefijos o sufijos a cada subcampo especificado en la lista: sub without sort "<subfield list>" wrap subfields
Como la acción ajustar subcampos agrega un marcador de posición antes y después de cada subcampo en la lista, los marcadores de un subcampo aparecerán en el resultado si no son reemplazados por la acción correspondiente reemplazar delimitadores de ajuste. |
set TEMP"1" to MARC."710" sub without sort "a,b,c,d,e"
set TEMP"1" to MARC."710" sub without sort "a,b,c,d,e" delimited by " "
set TEMP"1" to MARC."200" sub without sort "a,b,c,d,e,f,g,h,i,v" wrap subfields |
Acciones de transformación: Le permiten buscar y modificar datos de un campo. | |
eliminar subsecuencia usando regex : esta acción elimina una subsecuencia del contenido de un campo temporal al usar una expresión regular especificada. Formato válido: remove substring using regexp (TEMP"<index>","<Java_regex >")
Si esta acción se aplica a un subcampo que no existe, puede que no se creen el despliegue ni el campo local o que queden incompletos. |
remove substring using 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: concatenate with delimiter (TEMP"<index>",TEMP"<index>","<delimiter>")
|
concatenate with delimiter (TEMP"1",TEMP"2","") |
añadir prefijo : esta acción añade el valor especificado al principio del campo temporal. Formato válido: add prefix (TEMP"<index>","<value>") |
add prefix (TEMP"2","$$Q") |
añadir prefijo a la lista - Esta acción añade el valor especificado al principio de cada entrada de la lista, que se almacena en un campo temporal. Formato válido: añadir prefijo a la lista (TEMP"<index>","<value>") |
añadir prefijo a la lista (TEMP "1", "lang.") |
añadir sufijo: esta acción añade el valor especificado al final del campo temporal. Formato válido: add suffix (TEMP"<index>","<value>") |
add suffix (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>")
|
replace string by string (TEMP"1","[^0-9]","\\?") |
reemplazar delimitadores de ajuste: esta acción se usa junto con la acción de subcampo ajustar subcampos y le permite colocar un delimitador específico antes y después de un subcampo especificado. Formato válido: replace wrapping delimiters (TEMP"<index>","<subfield>","<prefix_delimiter>","<suffix_delimiter>")
Para más ejemplos, consulte las reglas de normalización UNIMARC predeterminadas para campos de visualización de Título y Editor. |
set TEMP"1" to MARC."200" sub without sort "a,b,c,d,e,f,g,h,i,v" wrap subfields reemplazar delimitadores de ajuste (TEMP"1","a"," ; ","") reemplazar delimitadores de ajuste (TEMP"1","b"," [","]") |
devolver 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>")
|
return list using regex (TEMP"1",TEMP"2","[a-z]{3}") |
eliminar secuencia : esta acción elimina una secuencia especificada de un campo temporal. Formato válido: remove string (TEMP"<index>","<value>")
|
remove string (TEMP"1","<<") |
reliminar espacios iniciales y finales: esta acción elimina los espacios iniciales y finales de un campo temporal. Formato válido: remove leading and trailing spaces (TEMP"<index>")
|
remove leading and trailing spaces (TEMP"1") |
reemplazar espacios: esta acción reemplaza todos los espacios en un campo temporal con un carácter especificado o una secuencia especificada. Formato válido: replace spaces (TEMP"<index>","<string>")
|
replace spaces (TEMP"1"," ") |
minúscula: esta acción cambia todas las letras de un campo temporal a minúscula. Formato válido: lower case (TEMP"<index>")
|
lower case (TEMP"1") |
multilingüe: cuando se agrega a las reglas de normalización para los campos de despliegue Materia, Autor o Colaborador, el sistema utiliza la tabla de mapeo Configuración multilingüe para mostrar las entradas que son específicas del idioma de despliegue seleccionado en Primo VE. Para más detalles, consulte Configuración multilingüe en Primo VE. Formato válido: multilingual by "MARC_field" "Display_Field" "display"
Por defecto, la transformación multilingüe está activada en las reglas de normalización. Si se omite, todas las entradas para el campo de despliegue aparecen en las facetas y en los detalles del registro sin importar la configuración del idioma de despliegue en Primo VE. |
rule "Primo VE Display- Subject 650" |
Consejos para Acciones
Los siguientes consejos pueden ser útiles al crear acciones:
-
Puede emplear las Acciones de asignación para guardar información en las variables TEMP"i" (como TEMP"1") para un uso posterior en el procesamiento de la cláusula entonces. Después de haber guardado información en una variable TEMP"i", puede sobrescribir su contenido con Acciones de transformación, sobrescribir un campo MARC existente en el registro o añadir un campo MARC adicional al registro. Por ejemplo:
# Saves the contents of subfield a to the TEMP"2" variable for later use.
rule "Primo VE - Lds05"
when
MARC is "502"."a"
then
set TEMP"2" to MARC."502"."a"
...
end
-
Al guardar información desde un registro MARC, debe especificar un subcampo o utilizar una de las Acciones de Subcampo.
# Saves only MARC 502 subfield 'a' to Local Display Field 5 if subfield 'a' exists. If a record has multiple 502 fields, the local display field will be overwritten as each 502 field is processed.
rule "Primo VE - Lds05"
when
MARC is "502"."a"
then
set pnx."display"."lds05" to MARC."502"."a"
end
----------------------
# Saves all MARC 502 subfields to Local Display Field 5 if it exists. The create action allows you to create multiple display fields for the MARC field. A new local display field is created in the record as each 502 field is processed.
rule "Primo VE - Lds05"
when
MARC is "502"
then
create pnx."display"."lds05" with MARC."502" subfields
end
----------------------
# Fails - Attempts to save the MARC 502 subfield to Local Display Field 5 if it exists. This fails compilation since a subfield action was not included with the create statement.
rule "Primo VE - Lds05"
when
MARC is "502"
then
create pnx."display"."lds05" with MARC."502"
end
-
Si necesita guardar un valor de un subcampo específico, debe añadir una condición a la cláusula cuando que compruebe la existencia de ese subcampo. Para más detalles, véase Comprobaciones de Existencia. Por ejemplo:
# Checks for the existence of a MARC 502 field that specifically has subfield a and writes only subfield a.
rule "Primo VE - Lds05"
when
MARC is "502"."a"
then
create pnx."display"."lds05" with MARC."502"."a"
end
----------------------
# Checks for the existence of a MARC 502 field that has either subfield a or b and writes any existing subfield. When using the "has any" condition, make sure that you do not write any subfields that do not exist. This can be accomplished by adding a comparison check to see that a specific field is not empty.
rule "Primo VE - Lds05"
when
MARC."502" has any "a,b"
then
create pnx."display"."lds05" with MARC."502" subfields
end
----------------------
# FAILS - Attempts to write a specific subfield for which its existence had not been checked.
rule "Primo VE - Lds05"
when
MARC is "502"
then
create pnx."display"."lds05" with MARC."502"."a"
end
----------------------
# FAILS - Attempts to write a specific subfield for which its existence had not been checked. Subfield a was tested to see if it had a value, but its existence was not specifically checked.
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.
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 ISO 639-2, se le asignará el valor "und" (no definido). Para obtener información sobre cómo utilizar esta función para crear una regla para un campo de despliegue local, consulte Usar la rutina de normalización de idioma para campos locales. Si añade idiomas a la tabla de códigos Códigos de idiomas personalizados, no debe utilizar esta rutina. |
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
|
Esta acción recupera el título desde el registro MARC y se puede utilizar junto con la rutina MARCRECORD. Por ejemplo: when Para más detalles sobre el mapeo utlizado para el campo Título, consulte Mapeo de la sección de despliegue MARC. |
|
Cuando se coloca en la cláusula cuando, esta rutina verifica la existencia de los campos de título MARC necesarios. Todo lo siguiente debe ser verdadero para satisfacer la condición:
Para más información, vea la rutina título de despliegue de Prima. |
Insertar delimitadores de subcampo en los registros PNX
Algunos campos en el registro PNX tienen múltiples valores que están delimitados por dos signos de dólar seguidos de un carácter o número específico (similar a los subcampos MARC). La siguiente tabla enumera los diversos tipos de delimitadores de subcampos utilizados en el registro PNX.
La siguiente tabla enumera los diversos tipos de delimitadores de subcampos utilizados en el registro PNX.
Delimitar | Descripción |
---|---|
C |
Una constante que se muestra antes del campo. Este delimitador solo se puede usar en la sección de Visualización para los siguientes campos: identificador, relación y descripción. La constante puede ser un código (minúsculas sin espacios o caracteres especiales, excepto los guiones bajos). El código se traduce a un nombre para el despliegue en Front End mediante la tabla de códigos Etiquetas constantes de despliegue (Menú de configuración > Descubrimiento > Configuración de despliegue > Etiquetas). Si el texto agregado no tiene traducción en la tabla de códigos, aparecerá como se introdujo en las reglas. Para obtener más detalles, véase Configurar etiquetas de despliegue para Primo VE. |
Q |
Contiene la parte de enlace del campo de visualización para un enlace de hipertexto mejorado. De lo contrario, el enlace se realiza en la parte de despliegue del campo de visualización. Para más información, véase Configurar definiciones de enlace de hipertexto para Primo VE.
|
V |
Valor del campo (para distinguir entre el valor del campo y el texto de la visualización o la constante). |
Z |
Identificador de registro relacionado enlazado. |
when
MARC is "020"."a"
then
set TEMP"1" to MARC "020"."a"
add prefix (TEMP"1","$$CISBN$$V")
create pnx."display"."identifier" with TEMP"1"
end
when
MARC is "776"."z"
then
set TEMP"1" to MARC "776"."z"
add prefix (TEMP"1","$$CISBN$$V")
create pnx."display"."identifier" with TEMP"1"
end
Insertar etiquetas HTML en registros PNX
span
|
table
|
tbody
|
th
|
tr
|
td
|
a
|
s
|
b
|
br
|
i
|
u
|
p
|
img
|
!--
|
style
|
when
MARC is "020"."a"
then
set TEMP"1" to MARC "020"."a"
add prefix (TEMP"1","$$C<b>ISBN</b>$$V")
create pnx."display"."identifier" with TEMP"1"
end
when
MARC is "776"."z"
then
set TEMP"1" to MARC "776"."z"
add prefix (TEMP"1","$$C<b>ISBN</b>$$V")
create pnx."display"."identifier" with TEMP"1"
end
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.
-
En la página Mostrar campos (Menú de configuración > Descubrimiento > Mostrar configuración > Gestionar campos de despliegue), seleccione el campo Añadir despliegue de la lista desplegable Añadir campo para abrir la página Definir un campo de despliegue.
-
Seleccione un campo de despliegue predefinido desde la lista desplegable Campo a editar.
-
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).
Regla de Normalización MARC Predefinida para el Campo de Edición - Si ya ha modificado las reglas de un campo, puede copiar y guardar sus modificaciones de la regla por un lado, y luego seleccionar Restaurar valores por defecto para ver las reglas predefinidas.
Ejemplos de MARC
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:
rule "Primo VE - Description 880"
when
MARC is "880" AND
MARC."880"."6" match "520-.*"
then
crear pnx."display"."description" con MARC."880" excluyendo los subcampos de valor numérico sin ordenar
end
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 "--").
rule "Primo VE - Subject 600"
when
MARC."600" has any "a-u,w-z" AND NOT
MARC."600".ind"2" equals "2"
then
set TEMP"1" to MARC."600" subfields "a-u,w" delimited by " " remove substring using regex "\\.+$"
set TEMP"2" to MARC."600" subfields "x-z" delimited by " -- " remove substring using regex "\\.+$"
concatenate with delimiter (TEMP"1",TEMP"2"," -- ")
create pnx."display"."subject" with TEMP"1"
end
Usar la rutina de normalización de idioma para campos de despliegue
Cuando existe un campo MARC 041 $$a, se aplican las siguientes acciones de la regla al campo para crear el campo de despliegue Idioma:
-
El contenido de MARC 041 $a a se copia a Temp2, y todas las letras se convierten a minúsculas.
-
Todos los códigos de idiomas de tres letras en Temp2 se almacenan como una lista en Temp1.
-
Si los códigos de idioma almacenados en Temp1 son válidos, se crea el campo de despliegue Idioma.
rule "Primo VE - Language 041 a"
when
MARC is "041"."a"
then
set TEMP"2" to MARC."041"."a"
lower case (TEMP"2")
return list using regex (TEMP"1",TEMP"2","[a-z]{3}")
normalize discovery lang (TEMP"1")
create pnx."display"."language" with list TEMP"1"
end
Usar la rutina de normalización de idioma para campos locales
Cuando existe un campo MARC 041 $$a, se aplican las siguientes acciones de la regla al campo para crear el campo de despliegue Idioma:
-
El contenido de MARC 041 $a a se copia a Temp2, y todas las letras se convierten a minúsculas.
-
Todos los códigos de idiomas de tres letras en Temp2 se almacenan como una lista en Temp1.
-
El prefijo lang. se añade a cada código en TEMP1 y se guarda en su campo local.
regla "Primo VE - Lds63"
when
MARC es "041"."h"
then
establecer TEMP"2" en MARC."041"."h"
lower case (TEMP"2")
return list using regex (TEMP"1",TEMP"2","[a-z]{3}")
normalize discovery lang (TEMP"1")
añadir prefijo a la lista (TEMP "1", "lang.")
crear pnx."display"."lds63" con el final TEMP"1"
Asegúrese de seleccionar la casilla de verificación Utilizar traducciones al normalizar los idiomas para los campos de despliegue local.
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").
rule "Primo VE Marc - Lsr14"
when
MARC is "700"."a"
then
create pnx."search"."lsr14" with MARC "700"."a"
endFuente MARC:
700 1#$aMelville, Gert, $eeditor.
700 1#$aRuta, Carlos, $eeditor.
700 1#$aCarugati, Laura S, $eeditor.
Resultado de Primo VE:
Ejemplos de Dublin Core
La sintaxis que se usa para las reglas de normalización DC es similar a la que se usa para las reglas de normalización MARC, pero en vez de usar la palabra clave MARC, se usa la palabra clave DCMI. A menos que un comando parezca ser específico de MARC, puede usar las mismas rutinas para los formatos MARC y DC.
Se recomienda que use las plantillas incluidas para los campos DC como guía y preste mucha atención a dónde debe guardar la información de cada campo DC (como operational."prima_display"."creator" para el campo de Autor).
Campo de despliegue de autor
El siguiente ejemplo muestra las reglas de normalización por defecto utilizadas para mostrar el campo Autor:
regla "prima_display creator- dcterms:creator"
cuando
DCMI es "dcterms"."creator"
entonces
crea final operacional "prima_display"."creator" con DCMI."dcterms"."creator"
regla "prima_display creator - dc:creator"
when
DCMI es "dc"."creator"
entonces
crea final operacional."prima_display"."creator" con DCMI."dc"."creator"
Campo de despliegue de cobertura
El siguiente ejemplo muestra las reglas de normalización por defecto utilizadas para mostrar el campo Cobertura:
rule "prima_display coverage - dc:coverage"
when
DCMI is "dc"."coverage"
then
create operational."prima_display"."coverage" with DCMI."dc"."coverage"
end
rule "prima_display coverage - dcterms:coverage"
when
DCMI is "dcterms"."coverage"
then
create operational."prima_display"."coverage" with DCMI."dcterms"."coverage"
end
rule "prima_display coverage - dcterms:spatial"
when
DCMI is "dcterms"."spatial"
then
create operational."prima_display"."coverage" with DCMI."dcterms"."spatial"
end
rule "prima_display coverage - dcterms:temporal"
when
DCMI is "dcterms"."temporal"
then
create operational."prima_display"."coverage" with DCMI."dcterms"."temporal"
end
Campo de despliegue de formato
Para el campo Formato, el siguiente ejemplo muestra el uso para el comando Añadir prefijo y la variable TEMP"1":
rule "prima_display format - dcterms:format"
when
DCMI is "dcterms"."format"
then
set TEMP"1" to DCMI."dcterms"."format"
add prefix (TEMP"1","000 ")
create operational."prima_display"."format" with TEMP"1"
end
rule "prima_display format - dc:format"
when
DCMI is "dc"."format"
then
set TEMP"1" to DCMI."dc"."format"
add prefix (TEMP"1","000 ")
create operational."prima_display"."format" with TEMP"1"
end
rule "prima_display format - dcterms:extent"
when
DCMI is "dcterms"."extent"
then
set TEMP"1" to DCMI."dcterms"."extent"
add prefix (TEMP"1","000 ")
create operational."prima_display"."format" with TEMP"1"
end
rule "prima_display format - dcterms:medium"
when
DCMI is "dcterms"."medium"
then
create operational."prima_display"."format" with DCMI."dcterms"."medium"
end