acdh-oeaw / acdh-repo
此包已被弃用且不再维护。作者建议使用achd-oeaw/arche-core包。
ARCHE仓库后端
5.3.1
2024-09-16 10:27 UTC
Requires
- php: ^8.1
- ext-gd: *
- acdh-oeaw/arche-lib: ^6
- guzzlehttp/guzzle: ^7
- php-amqplib/php-amqplib: ^3.1
- sweetrdf/simple-rdf: ^2
- zozlak/auth: ^2
- zozlak/http-accept: >=0.1.0 <1
- zozlak/logging: ^1
- zozlak/rdf-constants: ^1
Requires (Dev)
- dev-master
- 5.3.1
- 5.3.0
- 5.2.1
- 5.2.0
- 5.1.1
- 5.1.0
- 5.0.2
- 5.0.1
- 5.0.0
- 5.0.0-RC1
- 4.1.0
- 4.0.1
- 4.0.0
- v3.8.x-dev
- 3.8.0
- 3.7.12
- 3.7.11
- 3.7.10
- 3.7.9
- 3.7.8-RC2
- 3.7.8-RC1
- 3.7.7
- 3.7.6
- 3.7.2
- 3.7.1
- 3.7.0
- 3.6.2
- 3.6.1
- 3.6.0
- 3.5.3
- 3.5.2
- 3.5.0
- 3.4.4
- 3.4.3
- 3.4.2
- 3.4.0
- 3.3.0
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.2
- 3.0.1
- 3.0.0
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.0
- 1.11.1
- 1.11.0
- 1.10.3
- 1.10.2
- 1.10.1
- 1.10.0
- 1.9.x-dev
- 1.9.0
- 1.8.0
- 1.7.1
- 1.7.0
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.6
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.9
- 1.3.8
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.0
- dev-rdfinterface
- dev-ci
- dev-tx
- dev-issue-9
- dev-task-17238
This package is auto-updated.
Last update: 2024-09-16 10:30:31 UTC
README
ARCHE仓库解决方案的核心组件,负责CRUD操作和事务支持。
安装
composer require acdh-oeaw/arche-core
部署
见https://github.com/acdh-oeaw/arche-docker
开发环境
允许你在主机系统上编辑代码,并在docker容器中运行所有测试的环境。
- 克隆此仓库并进入它
git clone https://github.com/acdh-oeaw/arche-core.git cd arche-core
- 获取所有依赖
composer update
- 使用运行时环境构建docker镜像
docker build -t arche-dev build/docker
- 运行运行时环境,将仓库目录挂载到其中,等待它准备就绪
docker run --name arche-dev -v `pwd`:/var/www/html -e USER_UID=`id -u` -e USER_GID=`id -g` -d arche-dev docker logs -f arche-dev
等待直到看到(时间戳将会有所不同)
然后按2020-06-04 14:06:52,309 INFO success: apache2 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2020-06-04 14:06:52,309 INFO success: postgresql entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2020-06-04 14:06:52,309 INFO success: rabbitmq entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2020-06-04 14:06:52,309 INFO success: tika entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
CTRL+c
- 进入docker容器并在其中运行测试
docker exec -ti -u www-data arche-dev /bin/bash
然后在容器内部XDEBUG_MODE=coverage vendor/bin/phpunit
备注
- 默认情况下,开发环境以Apache mod_php模块配置PHP运行,但它也准备好以FPM运行PHP。要调整配置,请运行(在主机系统上)
docker exec arche-dev a2dissite mod_php docker exec arche-dev a2ensite php_fpm docker exec -w /root arche-dev supervisorctl restart apache2
同样,要回到mod_php配置docker exec arche-dev a2dissite php_fpm docker exec arche-dev a2ensite mod_php docker exec -w /root arche-dev supervisorctl restart apache2
REST API文档
- https://app.swaggerhub.com/apis/zozlak/arche (Swagger/OpenAPI)
- https://acdh-oeaw.github.io/arche-docs/上的指南
架构
数据库结构
主表是resources
表。它存储了所有仓库资源的列表,这些资源通过它们的内部仓库ID(id
列)标识,以及处理相关数据(列transaction_id
和state
)。
元数据根据对其应用的完整性检查分为三个表。
identifiers
表存储资源标识符(假设每个资源可能有多个)。该表强制实施全局标识符的唯一性。存储标识符的RDF属性隐式来自仓库的config.yaml
($.schema.id
),并且未显式存储在数据库中。relations
表存储所有具有URI作为对象的RDF三元组。它通过外键检查强制实施RDF三元组指向的仓库资源的存在。metadata
表存储所有其他RDF三元组。此表不对数据进行约束。三元组以RDF类似的方式存储 - 表中的每一行代表一个单一的三元组。- 对于看起来像有效数字/日期的三元组值,
value_n
/value_t
列存储转换为数字/时间戳的值。这允许进行正确的比较,否则将失败针对字符串值。 - 仅在值的第一个1000个字符上设置了对
value
列的索引。这既是技术原因也是性能原因。一个重要的后果是,如果您想从值列的索引搜索中受益,您应该将条件声明为substring(value, 1, 1000) = 'yourValue'
。
- 对于看起来像有效数字/日期的三元组值,
辅助表包括
- 存储待处理事务信息的
transactions
表。 - 存储元数据修改历史的
metadata_history
表。它通过在identifiers
、relations
和metadata
表上使用触发器自动填充。 - 存储在分词元数据值和资源文本内容上的 GIST 索引的
full_text_search
表,允许全文搜索(见Postgresql 文档)。 - 存储作为 PostGIS 地理的向量空间数据的
spatial_search
表,允许进行空间搜索(见PostGIS 文档)。 - 仅用于从先前 ACDH-CH 存储库解决方案进行数据迁移的
raw
表。
辅助函数和视图
metadata_view
收集来自identifiers
、relations
和metadata
表的三元组。get_relatives()
函数允许轻松找到与给定资源相关的资源,并使用给定的 RDF 属性。它内部使用递归查询,这可能很难自己正确编写。get_neighbors_metadata()
和get_relatives_metadata()
函数允许轻松获取给定资源和与其相关的资源的元数据三元组。可以通过任何单跳 RDF 属性(get_neighbors_metadata()
)或通过选择任何数量的一个元数据属性的多跳(get_relatives_metadata()
)来实现。