acdh-oeaw / arche-biblatex
分发服务从 ARCHE 元数据生成 BibLaTeX 书目信息数据 (.bib 文件)
1.8.1
2024-02-26 15:17 UTC
Requires
- ext-yaml: *
- acdh-oeaw/arche-lib: ^6
- guzzlehttp/guzzle: ^7
- renanbr/bibtex-parser: ^2.1
- zozlak/logging: ^1
Requires (Dev)
- phpstan/phpstan: ^1
- phpunit/phpunit: ^10
README
一个 ARCHE 分发服务,提供将资源元数据映射到 BibLaTeX 书目条目的功能。
安装
- 在 web 服务器 docroot 中运行
composer require acdh-oeaw/arche-biblatex ln -s vendor/acdh-oeaw/arche-biblatex/index.php index.php cp vendor/acdh-oeaw/arche-biblatex/config-sample.yaml config.yaml
- 调整
config.yaml
使用方法
http://deploymentUrl/?id=url-encoded-arche-resource-identifier&lang=preferredLanguageCode
可选地,也可以提供一个 override
查询参数,提供 URL 编码的 BibLaTeX 书目条目或其片段。它与来自 ARCHE 资源元数据(如下文所述)的 override 作用相同,只是在之后应用。
覆盖规则
- 基本的 BibLaTeX 书目条目是根据在
config.yaml
中提供的映射创建的。映射是根据 ARCHE 资源 RDF 类别选择的。 - 然后应用由
config.yaml->biblatex->biblatexProperty
配置选项指定的 ARCHE 资源元数据属性指定的覆盖。 - 最后应用来自
override
请求参数的覆盖。
详细信息
- 所有书目条目信息,包括条目类型和引用键都已被覆盖。如果您想保留条目类型和/或引用键
- 则可以使用“魔法”
NOOVERRIDE
类型/引用键值,例如。@NOOVERRIDE{NOOVERRIDE, fieldToOverride = {overriding value}, }
- 或者只提供 BibLaTeX 字段,跳过书目条目头部(以及最后的括号),例如。
fieldToOverride = {overriding value},
- 则可以使用“魔法”
- 如果您想从输出中跳过一个字段,可以用空值覆盖它。
示例
比较样本资源的输出(https://hdl.handle.net/21.11115/0000-000E-753C-C)。
(请注意以下提供的相同数据也可以在“自定义引用”资源元数据属性中提供)
- 默认: https://arche-biblatex.acdh.oeaw.ac.at/?lang=en&id=https%3A%2F%2Fhdl.handle.net%2F21.11115%2F0000-000E-753C-C`
- 将条目类型设置为
book
但保留引用键,将author
字段覆盖为新的值,同时删除booktitle
和bookauthor
字段: https://arche-biblatex.acdh.oeaw.ac.at/?lang=en&id=https%3A%2F%2Fhdl.handle.net%2F21.11115%2F0000-000E-753C-C&override=%40book%7BNOOVERRIDE%2C%0A%20%20author%20%3D%20%7BDoe%2C%20John%7D%0A%2C%20%20booktitle%20%3D%20%7B%7D%2C%20bookauthor%20%3D%20%7B%7D%2C%0A%7D
这里使用的非 URL 编码的override
参数值 () 是@book{NOOVERRIDE, author = {Doe, John}, booktitle = {}, bookauthor = {}, }
- 将
author
字段覆盖为新的值,同时删除booktitle
和bookauthor
字段。由于要保留自动创建的条目类型和引用键,因此使用省略 BibLaTeX 条目头部的简短语法。 https://arche-biblatex.acdh.oeaw.ac.at/?lang=en&id=https%3A%2F%2Fhdl.handle.net%2F21.11115%2F0000-000E-753C-C&override=author%20%3D%20%7BDoe%2C%20John%7D%0A%2Cbooktitle%20%3D%20%7B%7D%2Cbookauthor%20%3D%20%7B%7D%2C 这里使用的非 URL 编码的override
参数值 () 是author = {Doe, John}, booktitle = {}, bookauthor = {},
Docker 部署
build/docker
目录包含一个 Dockerfile,定义了服务的运行环境。
该构建过程需要一个名为 VARIANT
的参数,可以是 production
或 development
,这将影响 PHP 的 ini 设置 - 请参阅 https://hub.docker.com/_/php 中的配置部分。
在构建过程中,它期望所有服务文件(包括 composer 库和所需的 config.yaml
)都位于 build/docroot
目录中。
对于实际开发,您只需使用空的 build/docroot
目录进行构建,并在 docker run
时挂载服务文件。
示例
- 创建生产镜像
# install dependencies skipping development ones and optimizing autoloader composer update --no-dev -o # prepare the docroot using build/config/arche.yaml as the config.yaml mkdir build/docroot && cp -R index.php src vendor build/docroot/ && cp build/config/arche.yaml build/docroot/config.yaml # build the image docker build --rm -t acdhch/arche-biblatex --build-arg VARIANT=production build # try to run it locally docker run -d --name arche-biblatex -p 80:80 acdhch/arche-biblatex # check if it works locally curl -i 'http://127.0.0.1/?id=https%3A%2F%2Fid.acdh.oeaw.ac.at%2Fgtrans' # push the image to the registry docker push acdhch/arche-biblatex # redeploy on ACDH Kubernetes curl -X POST 'https://rancher.acdh-dev.oeaw.ac.at/v3/project/{pathToDesiredWorkload}?action=redeploy' -H 'Authorization: Bearer {myRancherApiToken}'
- 创建开发镜像并在本地运行
# install dependencies composer update # prepare an empty docroot mkdir build/docroot # build the image docker build --rm -t acdhch/arche-biblatex:dev --build-arg VARIANT=development build # run the image using current directory as a docroot making it available on local port 8080 docker run -d --name arche-biblatex -p 8080:80 -v `pwd`:/var/www/html acdhch/arche-biblatex:dev # check if it works curl -i 'http://127.0.0.1:8080/?id=https%3A%2F%2Fid.acdh.oeaw.ac.at%2Fgtrans'