acdh-oeaw/arche-oaipmh

ACDH 仓库解决方案的 OAI-PMH 服务

5.2.0 2024-09-16 15:43 UTC

README

Latest Stable Version License

主要目标是保持其灵活性

  • 它不强制任何元数据模式。RDF 元数据到 OAI-PMH 面板(id、日期、集合)映射在配置文件中提供。
  • 它提供了实现各种 OAI-PMH 元数据生成场景的类,例如
    • 使用 Dublin Core 和包含在库资源 RDF 元数据中的 Dublin Core 术语。
    • 将整个库资源 RDF 元数据序列化为 XML。
    • 将另一个链接的库资源作为 OAI-PMH 元数据提供服务。
    • 通过填充包含库资源 RDF 元数据的 XML 模板。
  • 它很容易扩展
    • 实现您自己的元数据源
    • 实现您自己的搜索类
    • 实现您自己的集合

安装

  • 在您的网站根目录下运行
    composer require acdh-oeaw/arche-oaipmh
    cp vendor/acdh-oeaw/arche-oaipmh/.htaccess vendor/acdh-oeaw/arche-oaipmh/index.php .
    cp vendor/acdh-oeaw/arche-oaipmh/config-sample.yaml config.yaml
  • 根据文件中的注释调整 config.yaml

所需的仓库结构

为了使服务灵活,对每个主要组件(集合处理组件、元数据源组件)都提供了不同的实现。这些实现提供了各种功能,并对您的仓库结构提出了各种要求。请阅读 config-sample.yaml 中提供的文档,如果需要,请阅读特定类的文档以获取更多信息。

架构

源代码文档可以在 https://acdh-oeaw.github.io/arche-docs/devdocs/namespaces/acdhoeaw-arche-oaipmh.html 找到

    +------------------+
    | DeletedInterface |
    +------------------+
     ^        ^
     |        |
+-----+    +-----------+
|     |    | Search    |    +-----------+
| Oai |--->| Interface |--->| Metadata  |
|     |    +-----------+    | Interface |
+-----+       |             +-----------+
     |        |
     v        v
    +--------------+  
    | SetInterface |
    +--------------+

Oai

主要类是 acdhOeaw\oai\Oai,它作为一个控制器工作。它

  • 检查 OAI-PMH 请求的正确性,
  • 处理 OAI-PMH identifyListMetadataFormats 命令
    • 使用 DeletedInterface 获取 identify 请求响应中 deletedRecord 字段值
  • 将 OAI-PMH GetRecordListIdentifiersListRecords 命令委托给实现 acdhOeaw\oai\search\SearchInterface 的选择类
  • 将 OAI-PMH ListSets 命令委托给扩展 acdhOeaw\oai\set\SetInterface 类的选择类
  • 从上述操作的结果生成符合 OAI-PMH 规范的输出
  • 捕获错误并生成符合 OAI-PMH 规范的错误响应

除非您要实现恢复令牌,否则不应需要修改此类。

SetInterface

acdhOeaw\oai\set\SetInterfaceOai 类提供 API

  • 以处理 ListSets OAI-PMH 请求
  • 对于 SearchInterface 实现将集合信息包含在搜索中

目前有三个 SetInterface 的实现

  • acdhOeaw\oai\set\NoSet 简单地抛出 noSetHierarchy OAI-PMH 错误
  • acdhOeaw\oai\set\Simple 其中集合成员资格从给定的 RDF 元数据属性中检索。此属性值既作为 <setSpec><setName> 值,也不提供 <setDescription>
  • acdhOeaw\oai\set\Complex 其中给定的 RDF 元数据属性指向另一个描述集合的库资源。

如果现有的实现不能满足您的需求,您需要编写自己的类,扩展 acdhOeaw\oai\set\SetInterface,并在 config.ini 文件中将 oaiSetClass 设置为您的类名。

DeletedInterface

acdhOeaw\oai\deleted\DeletedInterface 提供了一个 API

  • 为了使 Oai 类在 OAI-PMH identify 响应中报告 deletedRecord 字段的值
  • 为了使 SearchInterface 实现包含有关资源删除的信息

目前有两个 DeletedInterface 的实现

  • acdhOeaw\oai\deleted\No 报告不支持已删除的资源
  • acdhOeaw\oai\deleted\RdfProeprty 在这里,如果一个资源具有特定的元数据属性(无论其值如何)则假定该资源已被删除

如果现有的实现不能满足您的需求,您需要编写自己的类,扩展 acdhOeaw\oai\deleted\DeletedInterface 并在 config.ini 文件中将 oaiDeletedClass 设置为您类的名称。

SearchInterface

acdhOeaw\oai\search\SearchInterfaceOai 类提供了一个 API,用于

  • 对资源进行搜索。
  • 获取用于服务 ListIdentifiers OAI-PMH 请求的基本资源元数据。
    每个资源的数据以 acdhOeaw\oai\data\Headerdata 对象返回。
  • 获取用于服务 ListResourcesGetRecord OAI-PMH 请求的完整资源元数据。
    每个资源的数據以 acdhOeaw\oai\metadata\MetadataInterface 對象返回。

SearchInterface 实现依赖于其他三个接口

  • SetInterface 用于获取包含信息/过滤器集合的 SPARQL 搜索查询扩展
  • DeletedInterface 用于包含资源删除的信息
  • MetadataInterface 用于获取用于服务 ListResourcesGetRecord OAI-PMH 请求的完整资源元数据

当前的实现 (acdhOeaw\oai\search\BasicSearch) 非常灵活

  • 从配置文件 (oaiIdPropoaiDateProp) 中获取 OAI-PMH identifierdatestamp 映射
  • 尊重由 SetInterfaceDeletedInterfaceMetadataInterface 提供的集合、删除和元数据格式 SPARQL 搜索查询扩展

除非您需要更改 identifierdatestamp 的获取方式,否则不应需要开发替代实现(可能包含额外的过滤器)。

MetadataInterface

acdhOeaw\oai\metadata\MetadataInterface 为从不同来源获取完整的 OAI-PMH 元数据提供了一个通用 API,例如存储库资源元数据(通过应用不同的映射)或其他存储库资源。

为了使其尽可能灵活

  • 它允许扩展 SearchInterface 实现执行的 SPARQL 搜索查询。
  • 元数据接口对象构造函数提供了一个存储库资源对象、元数据格式描述和描述给定资源的完整 SPARQL 搜索查询数据集。

现有的实现包括

  • acdhOeaw\oai\metadata\RdfXml 将所有资源的 RDF 元数据序列化为 XML。
  • acdhOeaw\oai\metadata\DcMetadataRdfXml 类似,但只返回 Dublin Core 和 Dublin Core Terms 元数据属性。
  • acdhOeaw\oai\metadata\ResMetadata 使用通过元数据链接的其他资源的二进制有效负载作为 OAI-PMH 元数据。
  • acdhOeaw\oai\metadata\CmdiMetadataResMetadata 的一个特化,另外还检查二进制资源内容架构。
  • acdhOeaw\oai\metadata\TemplateMetadata 基于灵活的 XML 模板创建元数据。更详细的信息可以在 此处 找到。

可能您需要以(尚)另一种方式生成 OAI-PMH 元数据。在这种情况下,您必须开发自己的类来实现 MetadataInterface。查看现有的实现应该是一个好的起点。