使用指示规则
要使用指示规则,您必须具有以下角色之一(和使用元数据编辑器需要的角色相同):
- 编目员
- 编目经理
- 编目管理员
指示规则用于过滤结果集。 指示规则不改变数据。 它们仅用于读取基于一定条件的结果集和过滤记录。 过滤进程的结果是创建的新结果集,它是原始/过滤结果集的子集。 有关更多信息,见管理检索查询和结果集页面的过滤结果集。
此外,您可以对使用结果集的其他功能区域设定指示规则:
- 删除没有单册的馆藏记录作业 – 见删除没有单册的馆藏记录
- 通用发布配置文件(资源 > 发布 > 发布配置文件 > 选择添加配置文件 > 通用配置文件) – 见过滤记录。
- 导入配置文件详情 – 见过滤数据使用。
指示规则用于MARC书目记录,XML指示规则用于Dublin Core记录。
以下部分介绍如何创建和测试指示规则,并提供可纳入工作流程的示例:
指示规则只和资源管理内容类型有关。
有关指示规则的更多信息,见演示和文件 - 规则。
创建指示规则。
您可以通过元数据编辑器来创建和维护指示规则。
创建指示规则:
- 打开元数据编辑器。
- 点击文件 > 新建 > 指示规则。 显示属性对话框。
属性对话框
-
在属性对话框中完成参数。专用和共享选项决定指示规则保存在哪个文件夹。 您可能最初想要将指示规则保存在专用文件夹并在移动到共享文件夹(通过更改属性)之前进行测试。 “私人”指示规则无法在通过“管理结果集”页面触发的“过滤结果集”功能中使用。 请注意,共享区文件夹含有供您复制并创建自己的规则的指示规则。
- 选择保存。 显示元数据编辑器编辑面板。
指示规则编辑面板
-
- 对于MARC记录的指示规则 - 为您的指示规则输入Drools逻辑。 对于创建指示规则时使用的句法见章节规范化规则 – 句法和示例。 下列指示规则在Alma中提供:
- MultiTitleIndication.dslr
提供的指示规则(多个题名)对该规则,控制字段不存在条件。
- BriefIndication.dslr
提供的指示规则(简要主题)
尽管在规则中允许使用多个布尔运算符,但当选择大量布尔运算符时会降低运行速度。 因此每条规则应包含不超过200个布尔运算符。 - MultiTitleIndication.dslr
- 有关Dublin Core记录的XML指示规则,在XML格式中输入指示规则。
- 对于MARC记录的指示规则 - 为您的指示规则输入Drools逻辑。 对于创建指示规则时使用的句法见章节规范化规则 – 句法和示例。 下列指示规则在Alma中提供:
- 选择保存。
测试指示规则
在运行作业以使用指示规则过滤结果集之前,您可能需要测试规则。 使用元数据编辑器,您可以使用选项来测试指示规则。
要测试已创建的指示规则:
- 在元数据编辑器中打开一个书目记录。
- 点击编辑 > 拆分编辑器。
- 在左面板中选择规则选项卡并展开指示规则文件夹。
- 在专用或者共享文件夹中查找要测试的规则(非社区)。 点击规则查看操作列表:
- 编辑
- 删除
- 复制
- 属性
- 选择编辑。 指示规则将在书目记录旁边的分屏中打开。
指示规则在分屏中打开
- 选择尝试。 根据结果,显示弹出窗口,其中包含true或false响应,指示书目记录满足或不符合指示规则中的Drool逻辑。
指示规则尝试响应
MARC记录的指示规则语法示例
下文的Alma指示规则实例中提供了指示规则语法的实例。
有关更多信息,见显示条件规则。
示例1
识别结果集中在949字段包含$a的记录。
rule "Contains 949 with subfield a"
when
exists "949.a.*"
then
set indication."true"
end
when
exists "949.a.*"
then
set indication."true"
end
示例2
识别结果集中在$0(子字段零)中包含1XX或6XX或7XX的记录。
rule "Contains a 1XX or 6XX or 7XX subfield 0"
when
((exists "1**.0.*") OR (exists "6**.0.*") OR (exists "7**.0.*"))
then
set indication."true"
end
when
((exists "1**.0.*") OR (exists "6**.0.*") OR (exists "7**.0.*"))
then
set indication."true"
end
示例3
识别结果集中含有$0(子字段零)的以65例如650或659开头的字段的记录。
rule "Contains a 65X subfield 0"
when
exists "65*.0.*"
then
set indication."true"
end
when
exists "65*.0.*"
then
set indication."true"
end
当创建指示规则使用通配符时,对字段标签中的每个数位使用一个星号。
示例4
识别结果集中含有$0(子字段零)的以6例如600、630、650或659开头的字段的记录。
rule "Contains a 6XX subfield 0"
when
exists "6**.0.*"
then
set indication."true"
end
when
exists "6**.0.*"
then
set indication."true"
end
示例5
检索含有多个300个字段且每个字段都有子字段a的所有记录。
rule "Retrieve all records which contain two subfield a occurrences in 300"
when
existsMoreThanOnce "300.a"
then
set indication."true"
end
when
existsMoreThanOnce "300.a"
then
set indication."true"
end
创建在字段630和650中有重复子字段x和z的记录的结果集。
rule "Find duplicates 630 and 650"
when
recordHasDuplicateSubfields "630,650" "xz" ".,"
then
set indication."true"
end
when
recordHasDuplicateSubfields "630,650" "xz" ".,"
then
set indication."true"
end
有关指示规则的更多示例,见开发者网络的Alma指示规则示例页面。
XML指示规则语法示例
以下为XML指示规则语法的示例。
示例1
以下为如果记录有dc:subject字段则返回true的XML指示规则:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:variable name="indication" select = "boolean(//dc:subject)" />
<xsl:value-of select="$indication" />
</xsl:template>
</xsl:stylesheet>
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:variable name="indication" select = "boolean(//dc:subject)" />
<xsl:value-of select="$indication" />
</xsl:template>
</xsl:stylesheet>
示例2
以下为如果记录有等于Theology的dc:subject字段则返回true的XML指示规则:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:variable name="indication" select = "not(boolean(//dc:subject='Theology'))" />
<xsl:value-of select="$indication" />
</xsl:template>
</xsl:stylesheet>
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:variable name="indication" select = "not(boolean(//dc:subject='Theology'))" />
<xsl:value-of select="$indication" />
</xsl:template>
</xsl:stylesheet>
示例3
以下为如果记录有dc:creator字段或dcterms:creator字段含有Tolstoy则返回true的XML指示规则:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:variable name="indication" select = "boolean(//dc:creator[contains(.,'Tolstoy')] or //dcterms:creator[contains(.,'Tolstoy')])" />
<xsl:value-of select="$indication" />
</xsl:template>
</xsl:stylesheet>
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:variable name="indication" select = "boolean(//dc:creator[contains(.,'Tolstoy')] or //dcterms:creator[contains(.,'Tolstoy')])" />
<xsl:value-of select="$indication" />
</xsl:template>
</xsl:stylesheet>