专业维基 / wikibase-自动化值
基于声明值自动创建 Wikibase 标签和别名
Requires
- php: >=7.4
- composer/installers: ^2|^1.0.1
- opis/json-schema: ^2.3.0
Requires (Dev)
- mediawiki/mediawiki-codesniffer: ^38.0.0
- phpstan/phpstan: ^1.4.8
- vimeo/psalm: ^4.22.0
This package is auto-updated.
Last update: 2024-09-19 12:11:00 UTC
README
Wikibase 扩展,允许根据声明值定义规则来自动设置标签或别名。
Professional.Wiki 创建并维护了 Automated Values。我们提供 Wikibase 托管、Wikibase 开发 和 Wikibase 咨询。
Automated Values 是为卢森堡文化部创建的,该部资助了初始开发。
您可以在 https://automated.wikibase.wiki 找到此扩展的演示。
目录
使用方法
此扩展的核心构建块是所谓的 "规则"。
您可以选择阅读以下分步说明或直接查看 example.json。
规则由零个或多个实体标准组成,允许您指定规则应用于哪些 Wikibase 实体。例如 "所有 P1 是 Q1 的实体",这可能相当于 "所有 Person 类型的实体"。
{ "when": [ { "statement": "P1", "equalTo": "Q1" } ] }
规则还可以包含零个或多个构建规范。这些描述如何自动在匹配的实体上构建值以及要更新的语言。它们适用于标签和别名。
{ "buildLabel": { "en": { "P2": "$" } }, "buildAliases": { "*": { "P5.P3": "President ", "P5": "$", "P5.P4": ", $" } } }
规则可以在页面 MediaWiki:AutomatedValues
上定义。或者它们可以在 LocalSettings.php 中定义,请参阅 PHP 配置 部分。
要为您的维基定义规则,只需转到 MediaWiki:AutomatedValues
并创建页面。此页面只接受符合 JSON 模式 的 JSON。如果您输入无效的 JSON,则页面将拒绝保存您的更改。
对 MediaWiki
命名空间中的页面进行编辑(包括 MediaWiki:AutomatedValues
),可能仅限于具有高级权限的用户。默认情况下,MediaWiki 限制此命名空间的编辑权限为具有 editinterface
权限的人员。有关更多信息,请访问您的维基上的页面 Special:ListGroupRights#Namespace_restrictions
。
您可以在 example.json 找到可以在 MediaWiki:AutomatedValues
上放置的规则列表的完整和有效示例。
支持的实体标准
目前,只能检查声明主值的相等性,并且仅适用于类型为 String 或 EntityId 的属性。
规则可以包含多个实体标准,在这种情况下,所有标准都必须匹配才能应用规则。规则也可以不包含实体标准,在这种情况下,它将应用于所有实体。
构建规范
构建规范本质上是一组模板,用于描述如何构建值。
您可以为不同的语言指定不同的构建规范。
{ "buildLabel": { "en": { "P2": "$" }, "de": { "P3": "$" } } }
您还可以指定*
代替语言代码,在这种情况下,构建规范将应用于所有默认语言。有关如何设置默认语言的说明,请参阅PHP 配置部分。如果未设置默认语言,则忽略*
。
{ "buildLabel": { "*": { "P2": "$" }, "de": { "P3": "$" } } }
$
符号将被指定属性的第一个语句的主值所替换。目前只支持字符串。优先语句将覆盖正常排名的语句。如果没有匹配的语句,将省略该值的一部分。如果结果值是一个空字符串,则将其忽略。
可以组合多个值,并包括空白和其他字符。
{ "de": { "P3": "$ ", "P4": "$", "P5": ", $" } }
假设P4是foo
,P5是bar
,并且没有P3语句,那么上面的结果将是foo, bar
。
您还可以获取限定符的值。这是通过P1.P2
的表示法完成的,其中P1是语句的属性,P2是限定符的属性。
{ "de": { "P3": "$ ", "P3.P10": "$", "P3.P11": ", $" } }
在别名的情况下,将使用所有匹配的语句,可能产生多个别名。如果存在两个属性为P3的语句,上述代码将创建两个别名。这仅适用于使用单个语句级属性的构建规范。下面的代码段即使有多个语句,也会只产生一个别名。
{ "de": { "P3": "$", "P4": "$" } }
当应用规则时
规则在每次编辑时应用。它们不在编辑之外应用。因此,如果您正在导入数据集并且希望应用规则,您需要首先定义规则,然后进行导入。或者,您可以使用一些MediaWiki脚本触发每个页面的编辑,尽管这种功能不是由Automated Values扩展提供的。
规则按顺序应用。换句话说,第二个规则可以覆盖第一个规则设置的值。
限制
- 在编辑实体时,UI不会立即显示更新的生成值。需要重新加载页面。
- 您只能根据字符串或实体ID类型的语句主值对实体进行筛选。
- 您只能生成标签和别名。
- 规则仅在编辑实体时应用。更改规则不会自动将其应用到所有地方。
- 编辑UI仍然存在于自动生成的值中,可能会造成混淆。
安装
平台要求
推荐使用Composer结合MediaWiki内置的Composer支持来安装Automated Values。
在命令行中,转到您的维基根目录。然后运行以下两个命令
COMPOSER=composer.local.json composer require --no-update professional-wiki/wikibase-automated-values:~1.0
composer update professional-wiki/wikibase-automated-values --no-dev -o
然后通过在您的维基的LocalSettings.php文件底部添加以下内容来启用扩展
wfLoadExtension( 'AutomatedValues' );
您可以通过在浏览器中打开您的维基的Special:Version页面来验证扩展是否成功启用。
为了方便编辑MediaWiki:AutomatedValues
,您可以可选地安装CodeMirror扩展。
PHP 配置
配置可以通过LocalSettings.php进行更改。
默认语言
通过 '*' 构建规范创建值的语言列表。
变量: $wgAutomatedValuesDefaultLanguages
默认值: []
示例: [ 'en', 'de', 'nl' ]
如果此配置的值为空列表,则忽略 '*' 构建规范。
规则
应用于维基的规则列表。以 JSON 格式呈现,遵循 schema.json 中的 JSON Schema。与 MediaWiki:AutomatedValues
页面上定义的规则合并。
变量: $wgAutomatedValuesRules
默认值: ""
示例
$wgAutomatedValuesRules = ' [ { "buildLabel": { "en": { "P2": "$" } } } ] ';
注意: 无效的 JSON 将被 忽略。不会显示错误,预期规则将不会应用。
启用维基内规则
如果应该可以通过 MediaWiki:AutomatedValues 定义规则。
变量: $wgAutomatedValuesEnableInWikiConfig
默认值: true
示例: false
MediaWiki:AutomatedValues 页面始终可用。如果此配置设置为 false
,则其内容将被忽略。
开发
为确保开发依赖项被安装,请将以下内容添加到您的 composer.local.json
{ "require": { "vimeo/psalm": "^4", "phpstan/phpstan": "^1.4.9" }, "extra": { "merge-plugin": { "include": [ "extensions/AutomatedValues/composer.json" ] } } }
运行测试和 CI 检查
您可以通过在 AutomatedValues
目录中运行 make 命令来使用 Makefile
。
make ci
: 运行所有内容make test
: 运行所有测试make cs
: 运行所有样式检查和静态分析
或者,您可以从 MediaWiki 根目录执行命令
- PHPUnit:
php tests/phpunit/phpunit.php -c extensions/AutomatedValues/
- 样式检查:
vendor/bin/phpcs -p -s --standard=extensions/AutomatedValues/phpcs.xml
- PHPStan:
vendor/bin/phpstan analyse --configuration=extensions/AutomatedValues/phpstan.neon --memory-limit=2G
- Psalm:
php vendor/bin/psalm --config=extensions/AutomatedValues/psalm.xml
高级设计
Domain/
文件夹包含领域模型,该模型既独立于 MediaWiki 代码,也独立于 Wikibase DataModel 之外的维基概念。换句话说,Domain/
文件夹是应用程序的核心,没有任何输出依赖项。
Hooks.php
作为入口点。 AutomatedValuesFactory
是顶级工厂,负责对象图构建。
发行说明
版本 1.0.0 - 2022-04-29
首次发布于 Wikibase 1.35 - 1.37 (发布公告,演示视频)具有以下功能
- 能够使用分段模板构建标签和别名
- 能够使用语句主值和限定符值
- 能够将规则的应用限制为具有特定字符串或实体 ID 值的实体
- 能够在 MediaWiki:AutomatedValues 页面上定义规则