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

    使用合并规则

    可译的
    要使用合并规则,您必须具有以下角色:
    • 编目管理员
    合并规则指定如何合并记录。 当合并两个记录时,主要记录是包含所有合并信息的记录。 次要记录是包含将被合并到主要记录中的信息的记录。 合并规则可以删除主要记录中的信息或从次要记录复制信息到主要记录。 合并规则不影响次要记录,这可能会在合并后保留;尽管通常会被删除。
    元数据编辑器使编目员能够创建合并规则并将其应用于MARC 21记录,或应用已经创建的合并规则。 合并规则语法和示例中描述了用于规则的语法。 另见培训部分的合并规则

    主要记录

    合并记录有几种可能的情况。 每种情况的主记录如下:
    合并的主要记录
    方案 主要记录
    使用导入配置文件导入记录 Alma现有记录
    从OCLC连接导入记录 Alma现有记录
    合并两个现有记录 元数据编辑器左面板的记录(首先打开)
    使用外部资源讨论编目 外部资源
    因为用于导入配置文件和套录编目(见检索外部资源)的主要记录本质上是相反的,为导入配置文件编写的合并规则不能用于套录编目(反之亦然)。 您需要两套合并规则,一种用于导入配置文件,另一套用于套录编目。 每种类型规则的示例可以在导入配置文件和套录编目规则的示例中找到。

    Selecting merge rule in import profile.png

    要在Alma中使用合并规则时,规则描述而不是名称会显示在选择合并例程下拉列表(记录操作 > 合并记录&合并馆藏)的合并方法下拉列表中。

    基本合并规则

    以下是基本的合并规则。 每个基本规则可以无条件地应用,也可能会受到主要记录的条件约束。 规则的应用顺序很重要。
    基本合并规则
    合并规则: 示例 描述
    删除 remove MARC."035" 从主要记录中删除此字段的所有行。
    添加 add MARC."035" 将此字段的所有行从次要记录添加到主要记录。

    替换

    replace MARC."505"

    从主要记录中删除带有该字段的所有行,然后将该字段的所有行从次要记录添加到主记录。
    替换的结果和移除再添加的结果相同,除非使用“if exists”语句时,次级记录没有指定的字段,则该字段不会用主要记录中移除。 例如:
    replace MARC."505"
    始终从主要记录中移除505。 如果次级记录中存在505,则主要记录现在含有该505。 如果次级记录中不存在505,则主要记录不含505。
    replace MARC."505" if exists
    仅当次级记录中存在时从主要记录移除505。 如果次级记录中存在505,则主要记录现在含有该505。 如果次级记录中不存在505,则主要记录保留初始的505。
    当您在替换操作中指定字段例如MARC."505"时,该逻辑才会为true。 如果使用以下替换操作格式,Alma按照“if exists”的方式处理替换规则。 因此,例如,如果在Alma主记录中由260字段,传入的二级记录中有264字段,且您正在使用replace MARC.XXX,Alma保持260字段并在合并进程中添加264(如同写了"if exists")。
    更多信息见合并规则语法表格。

    创建合并规则

    按照以下步骤创建合并规则。
    对于网络区联盟成员,用户可以控制在本地或在网络机构中保存新规则。 要完成该选项,打开记录模板区域,访问新建 > 提交选项。 请注意,该选项根据用户生效。
    要创建合并规则:
    1. 在元数据编辑器页面(资源>编目>打开元数据编辑器),点击规则选项卡。打开合并规则文件夹。
    2. 选择新建 > 合并,在合并规则属性对话框中输入合并规则属性。
      Merge rule dialog.png
    3. 指示创建规则为专用或共享。 这决定指示规则保存在哪个文件夹。 您可能最初想要将指示规则保存在专用文件夹并在移动到共享文件夹(通过更改属性)之前进行测试。 专用合并规则不会在您想要在Alma中使用合并规则时显示在合并方法下拉列表。
      请注意,共享区文件夹含有供您复制并创建自己的规则的合并规则。
    4. 选择保存。 元数据编辑器编辑面板打开。 
    5. 输入规则详情。
    6. 选择保存。 保存的合并规则出现在规则选项卡。可以编辑、删除、复制(创建新的合并规则)保存的合并规则,也可以提交至共享区共享(见提交共享区 – 规范化、合并和指示规则)。 也可以修改保存的合并规则的属性。
    • 与规范化规则不同,无法预览合并规则。

    合并规则语法和示例

    合并规则遵循特定语法。 见下例:
    尽管在规则中允许使用多个布尔运算符,但当选择大量布尔运算符时会降低运行速度。 因此每条规则应包含不超过200个布尔运算符。 

    导入配置文件和套录编目规则示例

    以下是可以在以下场景中使用的合并规则示例: 您在Alma中有一条主记录,其中包含基本元数据,您想要用次级记录替换大部分元数据。 但是,对于以下字段,您希望保留主记录元数据:001、019、035、59X、9XX。
    对导入配置文件使用以下合并规则:
    rule "Replace all fields except local data and match keys"
    when
    merge
    then
    replace MARC.XXX excluding "001,019,035,59X,9XX"
    end
    使用以下合并规则进行套录编目(见配置外部检索资源):
    rule "Replace all fields except local data and match keys"
    when
    merge
    then
    replace MARC."001"
    replace MARC."035"
    replace MARC."019"
    replace MARC."59"X
    replace MARC."9"XX
    end
    请注意,在上面两个例子中,次级记录没有某字段时,主记录字段不会移除。 如果您希望始终移除主记录字段,使用移除添加规则而不是替换规则。 有关详情见使用合并规则表格中的替换。 

    规则语法

    条件和操作适用于记录元素,如MARC记录,字段(一个或多个),指示符,子字段(一个或多个)和字段/子字段内容。
    条件适用于主要记录元素。 要将操作应用于记录元素,元素必须与下表中的语法相匹配。
    合并规则语法
    表达 意义
    add MARC."{tag}" 添加 {tag}字段中指定的内容。
    例如,以下内容增加了950字段的内容:
    add MARC."950"
    add MARC."{tag}"("{ind1}","{ind2}") 添加{tag}字段中指定的内容以及规定的指示符
    例如,以下内容添加950字段指示符0和1的内容:
    add MARC."950"("0","1")
    add MARC."{TAG}"("{ind1}","{ind2}") if does not exist
    仅当主记录中没有字段和指示符时,添加{tag}中指定的字段。 如果主记录没有字段且次级记录有含有相同标签和指示符的两个字段,两个字段都添加。
    例如,主记录在以下合并情况下不更改,因为标签和指示符已经在主记录中:
    句法:add MARC."600"("0","0") if does not exists
    主记录:600 00 $a history
    次级记录:600 00 $a history of Israel
    add MARC."{TAG}" excluding {ind1} "{comma separated values}" excluding {ind2} "{comma separated values}" excluding subfield ("{subfield}","{subfield value}")
    添加{tag}中指定的字段的唯一值,除了在第一个指示符中有值、第二个指示符中有值或在子字段中有值的情况。 要排除字段需要满足全部条件。 条件之间的关系为AND。 三个条件非必需。 可能只存在一个或两个。
    例如,下文添加的次级记录#1中没有唯一655字段值,次级记录#2中有唯一655字段值。 请注意,下例中的句法只使用两个条件。
    句法:add MARC."655" excluding second indicator "7" excluding subfield ("2","local")
    次级记录 #1:655_7 $a Art stories. $2 local
    次级记录 #2:655_7 $a Irish stories. $2 fast
    add MARC."{tag}" if does not exists 如果该字段不存在,则添加{tag}中指定的字段内容。
    例如,如果此字段不存在,则下列内容将添加950字段:
    add MARC."950" if does not exists
    add MARC."{prefix}"X 添加前缀为 {prefix}的字段内容。
    例如,以下将所有字段的内容添加到920到929之间:
    add MARC."929"XX
    add MARC."{prefix}"XX 添加前缀为 {prefix}的字段内容。
    例如,以下添加900和999之间的所有字段内容:
    add MARC."9"XX
    add MARC."{prefix}"X excluding "{list}" 添加前缀为 {prefix} 的字段内容,不包括指定的字段和子字段。
    例如,以下添加990和999之间的所有字段内容,但990和991除外:
    add MARC."99"X excluding "990,991"
    add MARC."{prefix}"XX excluding "{list}" 添加前缀为 {prefix} 的字段内容,不包括指定的字段和子字段。
    例如,以下添加900和999之间的所有字段内容,但950和951除外:
    add MARC."9"XX excluding "950,951"
    add MARC."{tag}" when MARC."{condtag}"."{condsf}" contains "{condstring}" 当规定的字段/子字段包含指定的字符串时,添加 {tag} 中指定的字段。
    例如,仅当250.a字段包含文本“history”时添加950标签。
    add MARC."950" when MARC."250"."a" contains "history"
    remove MARC."{prefix}"X 删除前缀为{prefix}的字段。
    例如,以下内容将删除920和929之间的所有字段:
    remove MARC."929"X
    remove MARC."{prefix}"XX 删除前缀为{prefix}的字段。
    例如,以下内容将删除900和999之间的所有字段:
    remove MARC."999"XX
    remove MARC."{tag}" 删除在 {tag}中指定的字段。
    例如,以下内容将删除950字段:
    remove MARC."950"

    remove MARC."{TAG}" excluding "{excluded field}"("{ind1}","{ind2}")

    移除在{tag}中指定的字段,不包括列出的指定字段和指示符。

    例如,以下移除650字段,除了含有第一指示符1,第一指示符0和第二指示符1,第二指示符2或没有指示符的650字段:

    remove MARC."650" excluding "650"("1"," ") 

    remove MARC."650" excluding "650"("0","1")

    remove MARC."650" excluding "650"(" ","2")

    remove MARC."650" excluding "650"(" "," ")

    remove MARC."{TAG}" if not exists subfield "{comma separated values}"
    如果{comma separated values}中指定的子字段不存在,从主记录中删除在 {tag}中指定的字段。 如果指定多于一个子字段,所有子字段需要同时存在/不存在以满足条件。
    例如,因为不存在子字段5,以下主记录中的700字段移除。
    句法:remove MARC."700" if not exists subfield "5"
    主记录 #1:700 1_ $a Burgess, Anne.
    remove MARC."{TAG}" if exists subfield "{comma separated values}"
    如果{comma separated values}中指定的子字段不存在,从主记录中删除在 {tag}中指定的字段。 如果指定多于一个子字段,所有子字段需要同时存在/不存在以满足条件。
    例如,因为不存在子字段5,以下主记录中的700字段移除。
    句法:remove MARC."700" if exists subfield "5"
    主记录:700 1_ $a Jefferson, Thomas, $d 1743-1826, $e former owner. $ 5MH
    remove MARC."{prefix}"X excluding "{list}" 删除前缀为 {prefix}的字段,不包括列出的指定字段。
    例如,以下内容将删除990和999之间的所有字段,除了990和991:
    remove MARC."99"X excluding "990,991"
    remove MARC."{prefix}"XX excluding "{list}" 删除前缀为 {prefix}的字段,不包括列出的指定字段。
    例如,以下内容将删除900和999之间的所有字段,除了950和951:
    remove MARC."9"XX excluding "950,951"
    以下删除所有字段,除了001、084、773和980-999。
    remove MARC."XXX" excluding "001,084,773,98X,99X"
    remove MARC."{prefix}"XX excluding "{excluded field}"("{ind1}","{ind2}") 删除前缀为 {prefix}的字段,不包括列出的指定字段和指示符。
    例如,以下移除6XX字段,除了含有第一指示符1,第一指示符0和第二指示符1,第二指示符2或没有指示符的650字段:
    remove MARC."6"XX excluding "650"("1"," ")
    remove MARC."6"XX excluding "650"("0","1")
    remove MARC."6"XX excluding "650"(" ","2")
    remove MARC."6"XX excluding "650"(" "," ")
    replace MARC."{tag}" if exists 仅在该字段存在的情况下,替换 {tag}中指定的字段内容。 如果次级记录中没有该字段,主记录字段的内容保留。
    例如,如果字段存在于次级记录中,则以下替换主记录中的950字段
    replace MARC."950" if exists
    replace MARC."{tag}" 替换主记录的字段中{tag}中的内容 如果次级记录中没有该字段,主记录不会含有{tag}字段。
    例如,以下替换主记录中的950字段:
    replaceMARC."950"
    replace MARC."{prefix}"X if exists 如果次级记录中存在这些字段,则替换前缀为{prefix}的字段内容。 如果次级记录中没有这些字段,主记录{prefix}字段的内容保留。
    例如,如果次级记录中有这些字段,则以下替换主记录中920到929的全部字段:
    replace MARC."92"X if exists
    replace MARC."{prefix}"X 替换主记录中字段前缀为{prefix}的内容。 如果次级记录中没有这些字段,主记录中不会含有{prefix}字段。
    例如,以下替换主记录中的920到929的全部字段:
    replace MARC."92"X
    replace MARC."{prefix}"XX if exists 如果次级记录中有这些字段,替换主记录字段中前缀为{prefix}的字段内容。 如果次级记录中没有这些字段,主记录{prefix}字段的内容保留。
    例如,如果次级记录中有这些字段,则以下替换主记录中900到999的全部字段:
    replace MARC."9"XX if exists
    replace MARC."{prefix}"XX 替换主记录中字段前缀为{prefix}的内容。 如果次级记录中没有这些字段,主记录中不会含有{prefix}字段。
    例如,以下内容将替换900和999之间的所有字段:
    replace MARC."9"XX
    replace MARC."{prefix}"X excluding "{list}" 替换主记录中字段前缀为{prefix}的内容,指定的字段除外。
    例如,以下替换990和999之间的所有字段内容,但990和991除外。 请注意,如果次级字段中没有这些字段,在主记录中创建它们:
    replace MARC."99"X excluding "990,991"
    replace MARC."{prefix}"XX excluding "{list}" 替换主记录中字段前缀为{prefix}的内容,指定的字段除外。
    例如,以下替换900和999之间的所有字段内容,但950和951除外。 请注意,如果次级字段中没有这些字段,在主记录中创建它们:
    replace MARC."9"XX excluding "950,951"
    replace MARC.XXX excluding "{list}" 替换主记录全部MARC字段中的内容,指定的字段除外。
    例如,以下替换主要记录中所有字段内容与次要记录的所有字段内容,除了指定的字段。 请注意,如果次级字段中没有这些字段,在主记录中创建它们:
    replace MARC.XXX excluding "100,245,9XX,5XX"
    replace MARC."{prefix}"X excluding MARC."{exclTag}"("{ind1}","{ind2}") 替换主记录中字段前缀为{prefix}的内容,指定的字段除外。
    例如,以下代替主记录中990到999的全部字段内容,次级记录的MARC字段995(0,1)除外。 注意,MARC字段995(1,1)被替换。
    如果次级字段中不存在这些字段,则在主记录中创建:
    replace MARC."99"X excluding MARC."995"("0","1")
    replace MARC."{prefix}"XX excluding MARC."{exclTag}"("{ind1}","{ind2}") 替换主记录中字段前缀为{prefix}的内容,指定的字段和指示符除外。
    例如,以下代替主记录中900到999的全部字段内容,次级记录的MARC字段995(0,1)除外。 注意,MARC字段995(1,1)被替换。
    如果次级字段中不存在这些字段,则在主记录中创建:
    replace MARC."9"XX excluding MARC."995"("0","1")
    replace MARC."{tag}" excluding MARC."{exclTag}"("{ind1}","{ind2}") 替换主记录{tag}中指定的字段,不包括指定字段和指示符。
    例如,以下代替主记录的995字段,次级记录的995(0,1)除外。 注意,MARC字段995(1,1)被替换。
    如果次级字段中不存在这些字段,则在主记录中创建:
    replace MARC."995" excluding MARC."995"("0","1")
    replace MARC.XXX excluding MARC."{exclTag}"("{ind1}","{ind2}") 替换主记录全部MARC字段中的内容,指定的字段和指示符除外。
    例如,以下代替主记录中所有字段内容与次要记录内容,除了995(0,1)之外。 注意,MARC字段995(1,1)被替换。
    如果次级字段中不存在这些字段,则在主记录中创建:
    replace MARC.XXX excluding MARC."995"("0","1")
    replace MARC.control."{ctrl}" 替换指定的主记录的MARC控制字段。
    例如,以下代替主要记录中的MARC 008控制字段的内容与次要记录的内容。
    如果字段不存在,则创建:
    replace MARC.control."008"
    replace MARC.control.position."LDR.{starting position,length}" 替换主记录控制字段的特定位置。 这是通过指定起始位置和长度来实现的。
    例如,以下代替了主记录从位置8开始的控制字段中指定的内容,并替换为次级字段的2个位置。
    replace MARC.control.position."LDR.{8,2}"
    • Was this article helpful?