专业维基/wikibase-自动化值

基于声明值自动创建 Wikibase 标签和别名

资助包维护!
JeroenDeDauw

安装次数: 5,678

依赖项: 0

建议者: 0

安全性: 0

星标: 6

关注者: 10

分支: 3

开放问题: 7

类型:mediawiki-extension

1.0.0 2022-04-29 16:00 UTC

This package is auto-updated.

Last update: 2024-09-19 12:11:00 UTC


README

GitHub Workflow Status codecov Type Coverage Psalm level Latest Stable Version Download count License

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仍然存在于自动生成的值中,可能会造成混淆。

安装

平台要求

  • PHP 7.4或更高版本(已测试至8.0)
  • MediaWiki 1.35或更高版本(已测试至1.37)
  • Wikibase 1.35或更高版本(已测试至1.37)

推荐使用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 页面上定义规则