acdh-oeaw / arche-oaipmh
ACDH 仓库解决方案的 OAI-PMH 服务
Requires
- acdh-oeaw/arche-lib: ^6
- zozlak/logging: ^1
- zozlak/query-part: ^2.1
Requires (Dev)
- ext-pdo_sqlite: *
- phpstan/phpstan: ^1
- phpunit/phpunit: *
- dev-master
- 5.2.0
- 5.1.0
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- v4.x-dev
- 4.2.5
- 4.2.4
- 4.2.3
- 4.2.2
- 4.2.0
- 4.1.1
- 4.1.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.0.0
- 2.7.0
- 2.6.0
- 2.5.5
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.2
- 2.1.1
- 2.0.0
- 2.0.0-alpha
- v1.x-dev
- 1.4.1
- 1.4.0
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.3
- 1.2.1
- 1.2.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- dev-rdfInterface
This package is auto-updated.
Last update: 2024-09-16 15:46:06 UTC
README
主要目标是保持其灵活性
- 它不强制任何元数据模式。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
identify
和ListMetadataFormats
命令- 使用
DeletedInterface
获取identify
请求响应中deletedRecord
字段值
- 使用
- 将 OAI-PMH
GetRecord
、ListIdentifiers
和ListRecords
命令委托给实现acdhOeaw\oai\search\SearchInterface
的选择类 - 将 OAI-PMH
ListSets
命令委托给扩展acdhOeaw\oai\set\SetInterface
类的选择类 - 从上述操作的结果生成符合 OAI-PMH 规范的输出
- 捕获错误并生成符合 OAI-PMH 规范的错误响应
除非您要实现恢复令牌,否则不应需要修改此类。
SetInterface
acdhOeaw\oai\set\SetInterface
为 Oai
类提供 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-PMHidentify
响应中报告deletedRecord
字段的值 - 为了使
SearchInterface
实现包含有关资源删除的信息
目前有两个 DeletedInterface
的实现
acdhOeaw\oai\deleted\No
报告不支持已删除的资源acdhOeaw\oai\deleted\RdfProeprty
在这里,如果一个资源具有特定的元数据属性(无论其值如何)则假定该资源已被删除
如果现有的实现不能满足您的需求,您需要编写自己的类,扩展 acdhOeaw\oai\deleted\DeletedInterface
并在 config.ini
文件中将 oaiDeletedClass
设置为您类的名称。
SearchInterface
acdhOeaw\oai\search\SearchInterface
为 Oai
类提供了一个 API,用于
- 对资源进行搜索。
- 获取用于服务
ListIdentifiers
OAI-PMH 请求的基本资源元数据。
每个资源的数据以acdhOeaw\oai\data\Headerdata
对象返回。 - 获取用于服务
ListResources
和GetRecord
OAI-PMH 请求的完整资源元数据。
每个资源的数據以acdhOeaw\oai\metadata\MetadataInterface
對象返回。
SearchInterface
实现依赖于其他三个接口
SetInterface
用于获取包含信息/过滤器集合的 SPARQL 搜索查询扩展DeletedInterface
用于包含资源删除的信息MetadataInterface
用于获取用于服务ListResources
和GetRecord
OAI-PMH 请求的完整资源元数据
当前的实现 (acdhOeaw\oai\search\BasicSearch
) 非常灵活
- 从配置文件 (
oaiIdProp
和oaiDateProp
) 中获取 OAI-PMHidentifier
和datestamp
映射 - 尊重由
SetInterface
、DeletedInterface
和MetadataInterface
提供的集合、删除和元数据格式 SPARQL 搜索查询扩展
除非您需要更改 identifier
和 datestamp
的获取方式,否则不应需要开发替代实现(可能包含额外的过滤器)。
MetadataInterface
acdhOeaw\oai\metadata\MetadataInterface
为从不同来源获取完整的 OAI-PMH 元数据提供了一个通用 API,例如存储库资源元数据(通过应用不同的映射)或其他存储库资源。
为了使其尽可能灵活
- 它允许扩展
SearchInterface
实现执行的 SPARQL 搜索查询。 - 元数据接口对象构造函数提供了一个存储库资源对象、元数据格式描述和描述给定资源的完整 SPARQL 搜索查询数据集。
现有的实现包括
acdhOeaw\oai\metadata\RdfXml
将所有资源的 RDF 元数据序列化为 XML。acdhOeaw\oai\metadata\DcMetadata
与RdfXml
类似,但只返回 Dublin Core 和 Dublin Core Terms 元数据属性。acdhOeaw\oai\metadata\ResMetadata
使用通过元数据链接的其他资源的二进制有效负载作为 OAI-PMH 元数据。acdhOeaw\oai\metadata\CmdiMetadata
是ResMetadata
的一个特化,另外还检查二进制资源内容架构。acdhOeaw\oai\metadata\TemplateMetadata
基于灵活的 XML 模板创建元数据。更详细的信息可以在 此处 找到。
可能您需要以(尚)另一种方式生成 OAI-PMH 元数据。在这种情况下,您必须开发自己的类来实现 MetadataInterface
。查看现有的实现应该是一个好的起点。