跳转到主要内容

将MARC21分类记录在MARC/XML转换为SKOS/RDF

项目描述

Build status Test coverage Code health Latest version MIT license

Python脚本,用于将MARC 21分类MARC 21权威记录(序列化为MARCXML)转换为SKOS概念。

最初开发用于支持“Dewey十进分类联合术语”项目,用于转换Dewey十进制分类(DDC)记录。欢迎提出一般化和改进的问题和建议

以下为MARC21分类映射方案MARC21权威

安装

可以通过命令行使用pip安装版本。

$ pip install --upgrade mc2skos             # with virtualenv or as root
$ pip install --upgrade --user mc2skos      # install to ~/.local
  • 兼容Python 2.7和3.4+。有关测试的Python版本详细信息,请参阅Travis

  • 如果Windows上安装lxml失败,请尝试从PyPI下载的Windows安装程序。

  • 如果Unix上安装lxml失败,请安装系统软件包python-dev和libxml2-dev

  • 确保Python脚本文件夹已添加到您的PATH。

要直接使用源代码存储库中的版本

$ git clone https://github.com/scriptotek/mc2skos.git
$ cd mc2skos
$ pip install -e .

用法

mc2skos infile.xml outfile.ttl      # from file to file
mc2skos infile.xml > outfile.ttl    # from file to standard output

运行 mc2skos --helpmc2skos -h 以获取选项。

URI

对于已知的概念方案,会自动生成URI,分类记录从084 $a识别,权威记录从008[11]040 $f识别。要列出已知的概念方案

$ mc2skos -l

要添加更多词汇表,您可以编辑vocabularies.yml。欢迎提交添加更多词汇表的拉取请求!

也可以通过指定选项--uri中的URI模板即时生成URI。以下模板参数被识别:

  • {control_number}是001、010或016的控制号。当前方法是如果定义了010或016,则使用010或016,否则使用001。如果您发现这种方法失败,请将其添加到[问题42](https://github.com/scriptotek/mc2skos/issues/42)。

  • {collection}是“分类”、“表格”或“方案”

  • {object}是分类方案的一部分,也是{collection}的成员,例如特定的分类或表格。URI中的空格被替换为连字符或其他由选项–whitespace配置的字符。

  • {edition}来自084 $c(去除语言代码)

要向所有记录添加skos:inScheme语句,可以使用选项--scheme指定URI模板。否则,如果已知概念方案,它将从默认模板派生。

要向表格记录添加额外的skos:inScheme语句,可以使用选项--table_scheme指定URI模板。否则,如果已知概念方案,它将从默认模板派生。

以下示例是从DDC表格记录生成的

<http://dewey.info/class/6--982/e21/> a skos:Concept ;
    skos:inScheme <http://dewey.info/scheme/edition/e21/>,
                  <http://dewey.info/table/6/e21/> ;
    skos:notation "T6--982" ;
    skos:prefLabel "Chibchan and Paezan languages"@en .

MARC21分类的映射方案

只有MARC21分类数据模型的一小部分被转换,并且转换采用了一种相当实用的方法,例如将7XX字段映射到skos:altLabel。

MARC21XML

RDF

001 控制号(见上面关于001、010和016的说明)

dcterms:identifier

005 最后一次事务的日期和时间

dcterms:modified

008[0:6] 文件中输入的日期

dcterms:created

008[8]="d"或"e" 分类有效性

owl:deprecated

010 控制号(见上面关于001、010和016的说明)

dcterms:identifier

016 控制号(见上面关于001、010和016的说明)

dcterms:identifier

153 $a$c$z 分类号

skos:notation

153 $j 标题

skos:prefLabel

153 $e$f$z 分类号层次结构

skos:broader

253 复杂参见参考

skos:editorialNote

353 复杂参见参考

skos:editorialNote

680 范围说明

skos:scopeNote

683 应用说明

skos:editorialNote

684 辅助说明

skos:editorialNote

685 历史说明

skos:historyNote

700 索引术语-个人名称

skos:altLabel

710 索引术语-公司名称

skos:altLabel

711 索引术语-会议名称

skos:altLabel

730 索引术语-统一标题

skos:altLabel

748 索引术语-时间顺序

skos:altLabel

750 索引术语-主题

skos:altLabel

751 索引术语-地理名称

skos:altLabel

753 索引术语-非受控

skos:altLabel

765 合成数字组件

mads:componentList(见下文)

合成数字组件

在765字段中显式描述的合成数字组件使用mads:componentList属性表示,为保持组件的顺序,我们使用RDF列表。示例

@prefix mads: <http://www.loc.gov/mads/rdf/v1#> .

<http://dewey.info/class/001.30973/e23/> a skos:Concept ;
    mads:componentList (
        <http://dewey.info/class/001.3/e23/>
        <http://dewey.info/class/1--09/e23/>
        <http://dewey.info/class/2--73/e23/>
    ) ;
    skos:notation "001.30973" .

按顺序检索列表成员是令人惊讶地困难,按顺序检索成对元素是我目前想出的最佳解决方案

PREFIX mads: <http://www.loc.gov/mads/rdf/v1#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?c1_notation ?c1_label ?c2_notation ?c2_label
WHERE { GRAPH <http://localhost/ddc23no> {

    <http://dewey.info/class/001.30973/e23/> mads:componentList ?l .
        ?l rdf:rest* ?sl .
        ?sl rdf:first ?e1 .
        ?sl rdf:rest ?sln .
        ?sln rdf:first ?e2 .

        ?e1 skos:notation ?c1_notation .
        ?e2 skos:notation ?c2_notation .

        OPTIONAL {
            ?e1 skos:prefLabel ?c1_label .
        }
        OPTIONAL {
            ?e2 skos:prefLabel ?c2_label .
        }
}}

c1_notation

c1_label

c2_notation

c2_label

“001.3”

“Humaniora”@nb

“T1–09”

“Historie, geografisk behandling, biografier”@nb

“T1–09”

“Historie, geografisk behandling, biografier”@nb

“T2–73”

“USA”@nb

WebDewey数据的附加转换规则

该脚本包含一些额外的规则,用于区分WebDewey记录中不同类型的注释并从中提取实体。实体提取规则(以下标记为[*])使用非标准命名空间,默认情况下不启用。指定--webdewey标志以使用它们。

MARC21XML

RDF

680 having $9 ess=ndf 定义注释

skos:definition

680 having $9 ess=nvn 变体名称注释

wd:variantName [*] 对于每个子字段 $t

680 having $9 ess=nch 类别在此注释

wd:classHere [*] 对于每个子字段 $t

680 having $9 ess=nin 包含注释

wd:including [*] 对于每个子字段 $t

680 having $9 ess=nph 前标题

wd:formerHeading [*] 对于每个子字段 $t

694 having $9 ess=nml ???

SKOS.editorialNote

7XX having $9 ess=isCaption 作为标题使用的相关索引词

skos:prefLabel

目前尚未以任何特殊方式处理的注释

  • 253 having $9 ess=nsx 不使用。

  • 253 having $9 ess=nce 类别-其他

  • 253 having $9 ess=ncw 类别-其他手册

  • 253 having $9 ess=nse 见。

  • 253 having $9 ess=nsw 见手册。

  • 353 having $9 ess=nsa 参考资料同样

  • 683 having $9 ess=nbu 首选注释

  • 683 having $9 ess=nop 选项注释

  • 683 having $9 ess=non 选项注释

  • 684 having $9 ess=nsm 手册注释

  • 685 having $9 ess=ndp 停止部分

  • 685 having $9 ess=nrp 重新定位

  • 689 having $9 ess=nru 最后使用在…

MARC21权限映射方案

仅将MARC21权限数据模型的一小部分转换为。

MARC21XML

RDF

001 控制号

dcterms:identifier

005 最后一次事务的日期和时间

dcterms:modified

008[0:6] 文件中输入的日期

dcterms:created

065 其他分类号

skos:exactMatch(见下文)

080 国际十进分类号

skos:exactMatch(见下文)

083 杜威十进分类号

skos:exactMatch(见下文)

1XX 标题

skos:prefLabel

4XX 从追踪中见

skos:altLabel

5XX 从追踪中参见

skos:relatedskos:broaderskos:narrower(见下文)

667 非公开一般注释

skos:editorialNote

670 源数据发现

skos:note

677 定义

skos:definition

678 传记或历史数据

skos:note

680 公开一般注释

skos:note

681 主题示例追踪注释

skos:example

682 删除标题信息

skos:changeNote

688 应用历史注释

skos:historyNote

7XX 标题链接条目

skos:xxxMatch(见下文)

注释

  • 只有当配置中已定义分类方案的 URI 模式时,才会为 065、080 和 083 生成映射。

  • 如果字段包含一个包含相关记录控制号或 URI 的 $0 子字段,则从 5XX 字段生成 SKOS 关系。如果 $w=g,则关系类型为 skos:broader;如果 $w=h,则关系类型为 skos:narrower;否则,关系类型为 skos:related。如果 $w=r$4 包含一个 URI,则将该 URI 用作关系类型。请注意,$4 必须先于 $0(因为这两个子字段都可以重复)。

  • 如果字段包含一个包含相关记录控制号或 URI 的 $0 子字段,则为 7XX 标题生成映射/关系。如果 $0 包含控制号,则必须在 mc2skos.record.CONFIG 中定义词汇表的 URI 模式(在指示符 2 或 $2 中找到)。如果 $4 包含一个 URI,则将该 URI 用作关系类型。否则,如果 $4 包含 ISO 25964 关系之一,则使用相应的 SKOS 关系。否则,使用默认值 skos:closeMatch。请注意,$4 必须先于 $0(因为这两个子字段都可以重复)。

项目详细信息


下载文件

下载适用于您的平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源分发

mc2skos-0.12.0.tar.gz (31.8 kB 查看散列

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面