Configurar reglas de normalización para recursos externos (Primo VE)
Última actualización: 13 de marzo de 2024
Las reglas de normalización definen transformaciones que se aplican a registros de fuentes externas (DC o XML genérico) para crear los registros de Dublin Core expandidos de Primo VE para el descubrimiento. Se pueden crear las propias reglas de normalización y aplicarlas a los registros cargados externamente.
Certificación de administración de Primo VE > Fuentes de datos externas (12 min.)
Para obtener información sobre cómo crear reglas de normalización para registros Marc21 desde fuentes externas, véase Trabajar con reglas de normalización.
Usar el esquema DC expandido
El esquema expandido Dublin Core de Primo VE incluye campos de descubrimiento adicionales que se pueden rellenar según sea necesario usando reglas de normalización. Los siguientes campos son compatibles con el esquema DC expandido:
-
discovery.resourceType – Estos campos mantienen los tipos de recursos que se muestran en Primo, que pueden ser diferentes a los valores en los campos dc:type y dcterms:type que se cargan desde los registros externos. Para más información, véase Mapear tipos de recursos desde fuentes de datos externas.
-
discovery.local1 hasta discovery.local50 – Estos campos contienen información adicional que puede usar para mostrar información adicional de la fuente y como índice de búsqueda. Para más información, véase Mapear a campos de descubrimiento locales.
Mapear Tipos de recurso desde fuentes de datos externas
Debido a que los valores de los tipos de recursos Dublin Core pueden ser cualquiera y pueden no coincidir con los códigos admitidos que se usan en Primo VE, es posible que sea necesario mapear el tipo de recurso desde el campo dc:type o dcterms:type del registro fuente para un código de tipo de recurso admitido en Primo VE (véase Tipos de recurso admitidos en Primo VE) o para un tipo de recurso local definido en Primo VE (véase Configurar tipos de recursos para Primo VE).
Se puede usar cualquiera de los siguientes métodos para mapear los tipos de recursos a Primo VE:
-
Crear reglas de normalización que sustituyen el valor del campo dc:type o dcterms:type correspondiente.
-
Crear reglas de normalización que mapean un valor de tipo de recurso al campo discovery:resourceType y dejan el campo DC original tal como está.
-
Añadir mapeos de tipos de recursos a la tabla de mapeo Mapear tipo Dublin Core a tipo Descubrimiento. Para más información, véase Usar la tabla de mapeo para mapear tipos de recursos.
Primo VE determina el tipo de recurso de un registro en base a la existencia de los siguientes campos en orden:
-
campo discovery:resourceType
-
campo dcterms:type
-
Campo dc:type
Si el procesamiento continúa a los ejemplares 2 y 3, el sistema compara el valor de un ejemplar con los mapeos en la tabla de mapeo Mapear tipo Dublin Core a tipo Descubrimiento. Si se encuentra una coincidencia, el valor coincidente en la tabla de mapeo se usa y se guarda en el campo discovery:resourceType. Si no se encuentra ninguna coincidencia y la tabla de mapeo tiene un valor por defecto, se usa el valor por defecto. En caso contrario, el sistema usa el valor del campo DC tal cual.
Ejemplos
Para más información sobre crear reglas de normalización, véase Crear reglas de normalización.
El siguiente ejemplo mapea el tipo de recurso de Procedimientos en dc:type a un código admitido en Primo VE.
Se pueden mapear distintos tipos de recursos en la fuente (tales como Póster y Fotografía) al mismo tipo de recurso (tal como imagen) en Primo VE.
regla "desde dc:type A hasta discovery:type B"
when
"dc"."type" es igual a "Procedimientos"
entonces
set "conference_proceedings" in "discovery"."resourceType"
end
El siguiente ejemplo mapea el tipo de recurso LibGuides en dcterms:type a un nuevo tipo de recurso local que tiene que definirse en Primo VE.
Si el tipo de recurso local se ha definido como LibGuides en Primo VE, la siguiente regla de normalización no sería necesaria, y el sistema simplemente usaría el tipo de recurso que fue mapeado a dcterms:type en Primo VE.
regla "desde dcterms:type A hasta discovery:type B"
cuando
"dcterms"."type" es igual a "LibGuides"
then
configurar "library_guides" en "disvovery"."resourceType"
fin
Tipos de recursos admitidos en Primo VE
La tabla a continuación enumera los códigos de tipos de recursos admitidos por Primo VE. Se deben mapear los valores de su fuente a uno de los códigos admitidos o a un tipo de recurso local (si es necesario). Para más información sobre cómo modificar tipos de recursos de sistema, véase Configurar tipos de recursos para Primo VE.
Código de tipo de recurso |
Mostrar nombre |
---|---|
bases de datos |
Base de datos |
audios |
Audio |
periódicos |
Periódico |
manuscritos |
Manuscrito |
conferencia_procedimientos |
Procedimiento de la conferencia |
disertaciones |
Disertación |
kits |
Kit |
otro |
Otro |
materiales_de archivo |
Material de archivo |
realia |
Realia |
libros |
Libro |
libro_capítulos |
Capítulo Libro |
colecciones |
Colección |
documentos_legales |
Documento legal |
patentes |
Patente |
referencia_entradas |
Entrada de referencia |
investigación_conjuntos de datos |
Conjunto de datos de investigación |
reseñas |
Reseña |
conjuntos_datos_estadísticos |
Conjunto de datos estadísticos |
informes_técnicos |
Informe técnico |
revistas |
Revista |
periódico_artículos |
Artículos de periódico |
artículos |
Artículo |
texto_recursos |
Recurso de texto |
documentos_oficiales |
Documento oficial |
imágenes |
Imagen |
mapas |
Mapa |
vídeos |
Vídeo |
puntuaciones |
Puntuación |
sitios web |
Sitio web |
Mapear a campos de descubrimiento locales
El esquema expandido de Dublin Core para Primo VE le permite mapear información a los siguientes campos, que se rellenan durante la carga de registros: discovery.local1 - discovery.local50. Después que se cargan los registros, Primo VE puede usar los campos locales para mostrar información adicional en los despliegues breves y completos de un registro, y también los puede usar como campos de búsqueda. Los campos locales son particularmente útiles para mapear campos DC no estándares que no se cargan por defecto durante la importación a Primo VE.
Cuando se use un campo de descubrimiento local, también se debe configurar su campo de despliegue local con un nombre similar. Por ejemplo, si se ha creado una regla de normalización para discovery.local2, también se debe definir el campo de despliegue local Local_field_02, y asegurarse de que se selecciona la casilla de verificación Usar el campo local paralelo 01/50 desde el registro Dublin Core. Para más información, véase Configurar despliegue local y campos de búsqueda para Primo VE.
Ejemplos
Para más información sobre crear reglas de normalización, véase Crear reglas de normalización.
El siguiente ejemplo mapea el valor en dc:relation al campo local 1 en Primo VE.
regla "mover relación a campo local 1"
cuando
existe "dc"."relation"
entonces
move "dc"."relation" to "discovery"."local1"
fin
El siguiente ejemplo define el valor del campo local 2 a Investigación interna por cada registro procesado.
regla "definir campo local 2 para investigación interna"
cuando
True
entonces
configurar "Internal Research" en "discovery"."local2"
end
Crear reglas de normalización
El Editor MD le permite crear reglas de normalización, que se usan para personalizar la transformación de registros externos (ya sea Dublic Core o XML genérico) al formato Dublin Core extendido de Primo VE para el descubrimiento. Para fuentes externas que utilicen el formato MARC21, Primo VE asigna estos registros al formato Alma-MARC21 para el descubrimiento. Una vez creadas las reglas, se pueden añadir según sea necesario a los procesos de reglas de normalización, que pueden asignarse posteriormente a perfiles de importación. Para más información, véase Crear un proceso de regla de normalización.
- Administrador del catálogo
- Gestor de catálogo
- Catalogador
Certificación de administración de Primo VE: Fuentes de datos externas (12 min.)
-
Abrir el Editor MD (Menú de Configuración > Descubrimiento > Cargar fuentes de datos externas > Reglas de normalización para fuentes de datos externas).
-
Seleccione la pestaña Reglas > Reglas de normalización (Descubrimiento) y compruebe las reglas existentes para ver si una regla existente se puede modificar o usar como base para su nueva regla.
Pestaña Reglas -
Cree una nueva regla al seleccionar Fichero > Nuevo > Normalización (Descubrimiento) para reglas DC/XML o Fichero > Nuevo > Normalización para reglas MARC21, lo cual depende del formato de los ficheros de importación de Descubrimiento que esté recibiendo de la fuente externa.
Configurar las propiedades del fichero de reglas de normalización -
Especificar las siguientes propiedades y después clicar en Guardar:
-
Nombre: especifique un nombre identificable para el fichero de reglas, que puede contener tipos de reglas relacionadas.
Este campo no puede contener comillas sencillas ni dobles: “, ”, ", ‘, ’, y '.
-
Descripción: introduzca texto para describir el contenido de su fichero de reglas.
-
Tipo - Seleccione DC, XML o Drool (reglas de normalización MARC21 únicamente).
-
Nivel de acceso: Seleccione una de las siguientes ubicaciones de subcarpetas: Privado (solo para su uso y no se puede incluir en un proceso de normalización) o Compartido (fichero de reglas público).
-
-
Añadir sus reglas al panel del editor. Para obtener más información, consulte Sintaxis de las reglas de normalización (DC y XML genérico) oTrabajar con reglas de normalización(MARC21).
Panel del editor de reglas de normalización -
Seleccionar Vista preliminar. La regla o las reglas en el fichero se aplican a los registros especificados y se muestra el resultado.
-
Seleccionar Guardar y probar usando registro externo debajo del panel editor.
Sintaxis de las reglas de normalización para los formatos DC y XML
Los ficheros de reglas contienen una o más reglas, que a su vez contienen una o más condiciones seguidas por una o más acciones.
Para más información sobre la sintaxis de las reglas de normalización para fuentes MARC21 externas, vea Sintaxis de las reglas de normalización, la cual es diferente de la sintaxis usada para definir las reglas de normalización para el despliegue MARC y los campos locales que son mapeados desde registros bibliográficos gestionados por Alma.
La sintaxis siguiente se usa para cada regla en el fichero:
Condiciones
Una regla puede contener una o más condiciones que se aplican a campos y valores específicos en el registro fuente. Si se cumplen todas las condiciones, la regla se aplica al registro. En caso contrario, la regla no se aplica y el registro se deja sin cambios. Cada condición debe incluir una de las siguientes palabras clave:
-
verdadero – Aplica incondicionalmente la regla a todos los registros.
-
existe – Aplica la regla cuando existe un campo específico.
-
no existe: se aplica la regla cuando no existe un campo específico.
-
es igual a – Aplica la regla cuando concuerda el contenido completo del campo específicado.
-
no es igual – Aplica la regla cuando no concuerda el contenido completo del campo especificado.
La siguiente tabla ofrece un ejemplo para cada tipo de condición.
Sintaxis | Ejemplo |
---|---|
Condiciones generales: | |
verdadero |
verdadero |
Condiciones DC: | |
exist "{namespace}"."{field} |
existe "dc"."description" |
exist "{namespace}"."{field}"\("{xsiType}"\) |
existe "dc"."identifier"("dcterms:ISBN") |
"{namespace}"."{field}" equals "{value}" |
"dc"."identifier" es igual a "deporte" |
"{namespace}"."{field}"\("{xsiType}"\) equals "{value}" |
"dc"."identifier"("dcterms:ISBN") es igual a "deporte" |
"{namespace}"."{field}" not equals "{value}" |
"dc"."identifier" no es igual a "deporte" |
"{namespace}"."{field}"\("{xsiType}"\) not equals "{value}" |
"dc"."identifier"("dcterms:ISBN") no es igual a "deporte" |
Condiciones XML: | |
"xpathExpression" equals "value" |
"ino:object/viaRecord/recordId" es igual a "probar" |
"xpathExpression" not equals "value" |
"ino:object/viaRecord/recordId" no es igual a "probar" |
exist "xpathExpression" |
existe "ino:object/viaRecord/recordId" |
not exist "xpathExpression" |
no existe "ino:object/viaRecord/recordId" |
Acciones
Se pueden aplicar acciones a campos únicos en base a las condiciones especificadas en la regla. Si se cumplen todas las condiciones, las acciones se aplican al registro en el orden en que aparecen en la lista. Cada acción debe incluir una de las siguientes palabras clave:
-
copiar – Copia el valor de un campo a otro campo.
-
mover – Mueve el valor de un campo a otro campo.
-
eliminar – Elimina el valor de un campo.
-
definir – Define el valor de un campo directamente.
En algunos casos, se puede añadir la condición si es igual a <value> a las acciones anteriores para aplicar cambios de reglas solo en valores coincidentes específicos.
La siguiente tabla ofrece un ejemplo para cada tipo de acción.
-
Los valores de cadena (tales como los especificados para el título de la regla y y la transformación añadir prefijo) no pueden contener el separador de subcampo $$.
Sintaxis | Ejemplo |
---|---|
Acciones DC: | |
copy "{namespace}"."{field}"({"xsiType"}) to "{newTagNameSpace}"."{newTagField}"({"newXsiType"}) |
copiar "dc"."identifier"("dcterms:ISBN") a "dc"."title"("dcterms:ISBN") |
copy "{namespace}"."{field}"({"xsiType"}) to "{newTagNameSpace}"."{newTagField}" |
copiar "dc"."identifier"("dcterms:ISBN") a "dc"."title" |
copy "{namespace}"."{field}" to "{newTagNameSpace}"."{newTagField}"({"newXsiType"}) |
copiar "dc"."identifier"("dcterms:ISBN") a "dc"."title"("dcterms:ISBN") |
copy "{namespace}"."{field}" to "{newTagNameSpace}"."{newTagField}" |
copiar "dc"."identifier" a "dc"."title" |
copy "{namespace}"."{field}"({"xsiType"}) if equals "{value}" to "{newTagNameSpace}"."{newTagField}"({"newXsiType"}) |
copiar "dc"."identifier"("dcterms:ISBN") si es igual a "sport" para "dc"."title"("dcterms:ISBN") |
copy "{namespace}"."{field}"({"xsiType"}) if equals "{value}" to "{newTagNameSpace}"."{newTagField}" |
copiar "dc"."identifier"("dcterms:ISBN") si es igual a "sport" para "dc"."title" |
copy "{namespace}"."{field}" if equals "{value}" to "{newTagNameSpace}"."{newTagField}"({"newXsiType"}) |
copiar "dc"."identifier" si es igual a "sport" para "dc"."title"("dcterms:ISBN") |
copy "{namespace}"."{field}" if equals "{value}" to "{newTagNameSpace}"."{newTagField}" |
copiar "dc"."identifier" ") si es igual a "deporte" para "dc"."title" |
move "{namespace}"."{field}"({"xsiType"}) to "{newTagNameSpace}"."{newTagField}"({"newXsiType"}) |
mover "dc"."identifier"("dcterms:ISBN") a "dc"."title"("dcterms:ISBN") |
move "{namespace}"."{field}"({"xsiType"}) to "{newTagNameSpace}"."{newTagField}" |
mover "dc"."identifier"("dcterms:ISBN") a "dc"."title" |
move "{namespace}"."{field}" to "{newTagNameSpace}"."{newTagField}"({"newXsiType"}) |
mover "dc"."identifier" a "dc"."title"("dcterms:ISBN") |
move "{namespace}"."{field}" to "{newTagNameSpace}"."{newTagField}" |
mover "dc"."identifier" a "dc"."title" |
move "{namespace}"."{field}"({"xsiType"}) to "{newTagNameSpace}"."{newTagField}"({"newXsiType"}) |
mover "dc"."identifier"("dcterms:ISBN") si es igual a "sport" para "dc"."title"("dcterms:ISBN") |
move "{namespace}"."{field}"({"xsiType"}) if equals "{value}" to "{newTagNameSpace}"."{newTagField}" |
mover "dc"."identifier"("dcterms:ISBN") si es igual a "sport" para "dc"."title" |
move "{namespace}"."{field}" to "{newTagNameSpace}"."{newTagField}"({"newXsiType"}) |
mover "dc"."identifier" si es igual a "sport" para "dc"."title"("dcterms:ISBN") |
move "{namespace}"."{field}" if equals "{value}" to "{newTagNameSpace}"."{newTagField}" |
mover "dc"."identifier" si es igual a "sport" para "dc"."title" |
remove "{namespace}"."{field}" if equals "{value}" |
eliminar "dc"."identifier" ") si es igual a "deporte" |
remove "{namespace}"."{field}"({"xsiType"}) if equals "{value}" |
eliminar "dc"."identifier"("dcterms:ISBN") si es igual a "deporte" |
remove "{namespace}"."{field}"({"xsiType"}) |
eliminar "dc"."identifier"("dcterms:ISBN") |
remove "{namespace}"."{field}" |
eliminar "dc"."identifier" |
set "{value}" in "{namespace}"."{field}"({"xsiType"}) |
definir "sport" en "dc"."identifier"("dcterms:ISBN") |
set "{value}" in "{namespace}"."{field}" |
definir "deporte" en "dc"."identifier" |
set "{namespace}"."{field}" to TEMP"{i}" |
set "dc"."identifier" to TEMP"1" |
set "{namespace}"."{field}"("{xsiType}") to TEMP"{i}" |
set "dc"."identifier"("dcterms:ISBN") to TEMP"1" |
set TEMP"{i}" to dc value "{namespace}"."{field}" |
set TEMP"1" to dc value "dc"."identifier" |
set TEMP"{i}" to dc value "{namespace}"."{field}"("{xsiType}") |
set TEMP"1" to dc value "dc"."identifier"("dcterms:ISBN") |
Acciones XML: (Para más información, véase Estándares W3C XPATH.) | |
copy "concat ({xpathExpression},' ',{xpathExpression})" to "{namespace}"."{field}"
|
copy "concat(//person[@pers_role='pau']/name/first/text(),' ',//person[@pers_role='pau']/name/last/text())" to "dc"."creator" |
copy "xpathExpression" to "newTagNameSpace"."newTagField"({"xsiType"}) |
copiar "ino:object/viaRecord/isbn" a "dcterms"."title"("dcterms:ISBN") |
copy "xpathExpression" to "newTagNameSpace"."newTagField" |
copiar "ino:object/viaRecord/isbn" a "dcterms"."title" |
|
La acción copiar todo le permite importar más de una instancia de un campo (como autor o ISSN) en función de un separador específico. Para utilizar esta acción, debe crear una regla de normalización por cada instancia del campo que desee admitir. El siguiente ejemplo le permite importar un máximo de tres autores por cada registro: rule "Rule for creator1" cuando exist "//*[local-name()='Item']/*[local-name()='Item']/*[local-name()='Component']/*[local-name()='Resource']/*[local-name()='mods']/*[local-name()='name' and @type='personal'][1]/child::*[local-name()='namePart']" then copiar todo "//*[local-name()='Item']/*[local-name()='Item']/*[local-name()='Component']/*[local-name()='Resource']/*[local-name()='mods']/*[local-name()='name' and @type='personal'][1]/child::*[local-name()='namePart']/text()"(", ") to "dc"."creator" fin
regla "Rule for creator2" when exist "//*[local-name()='Item']/*[local-name()='Item']/*[local-name()='Component']/*[local-name()='Resource']/*[local-name()='mods']/*[local-name()='name' and @type='personal'][2]/child::*[local-name()='namePart']" entonces copiar todo "//*[local-name()='Item']/*[local-name()='Item']/*[local-name()='Component']/*[local-name()='Resource']/*[local-name()='mods']/*[local-name()='name' and @type='personal'][2]/child::*[local-name()='namePart']/text()"(", ") to "dc"."creator" end
regla "Rule for creator3" cuando exist "//*[local-name()='Item']/*[local-name()='Item']/*[local-name()='Component']/*[local-name()='Resource']/*[local-name()='mods']/*[local-name()='name' and @type='personal'][3]/child::*[local-name()='namePart']" entonces copiar todo "//*[local-name()='Item']/*[local-name()='Item']/*[local-name()='Component']/*[local-name()='Resource']/*[local-name()='mods']/*[local-name()='name' and @type='personal'][3]/child::*[local-name()='namePart']/text()"(", ") to "dc"."creator" fin |
set "value" in newTagNameSpace"."newTagField"({"xsiType"}) |
establecer "whatever" en "dcterms"."title"("dcterms:ISBN") |
set "value" in newTagNameSpace"."newTagField" |
set "whatever" in "discovery"."local1" |
set TEMP"{i}" in "{newTagNameSpace}"."{newTagField}" |
set TEMP"2" in "dcterms"."title" |
set TEMP"{i}" in "{newTagNameSpace}"."{newTagField}"("{xsiType}") |
set TEMP"1" in "dcterms"."title"("dcterms:ISBN") |
set TEMP"{i}" to xPath "{xpathExpression}" |
set TEMP"3" to xpath "//datafield[@tag='identifier']" |
Acciones de transformación: Tanto en DC como en Generic XML, se pueden usar estas operaciones para transformar datos en la variable TEMP"i". | |
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"{i}","<Java_regex >")
|
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"{i}",TEMP"{i}","<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"{i}","<value>") |
Para añadir el separador de subcampo $$Q al comienzo de un campo temporal: añadir prefijo (TEMP"2","$Q") añadir prefijo (TEMP"2","$") |
añadir sufijo- Esta acción añade el valor especificado al final del campo temporal. Formato válido: add suffix (TEMP"{i}","<value>") |
Para añadir el separador de subcampo $$Q al final de un campo temporal: añadir sufijo (TEMP"2","$") añadir sufijo (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"{i}","<Java_regex>","<string>")
|
replace string by string (TEMP"1","[^0-9]","\\?") |
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"{i}",TEMP"{i}","<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"{i}","<value>")
|
remove string (TEMP"1","<<") |
eliminar 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"{i}")
|
eliminar los espacios iniciales y finales (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"{i}","<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"{i}")
|
lower case (TEMP"1") |
Ejemplos DC
Ejemplos XML