Wikibase/Установка/Расширенная настройка

From mediawiki.org
This page is a translated version of the page Wikibase/Installation/Advanced configuration and the translation is 98% complete.

Введение

На этой странице описывается расширенная настройка для Wikibase Клиент и Репозиторий. Если вы еще не установили Wikibase, сначала ознакомьтесь с инструкции по установке.

Внесение изменений в конфигурации клиента и репозитория включает добавление или изменение строк $wgWBClientSettings или $wgWBRepoSettings (соответственно) в файле MediaWiki LocalSettings.php . В этом документе представлены лишь некоторые варианты; для полного перечня см. полная документация (по умолчанию: client settings file и repo settings file).

Обратите внимание, что префикс "wg" в $wgWBRepoSettings отличается от префикса других расширений, которые могут использовать префикс $eg. Разница важна; ваша конфигурация не будет работать, если вы используете другой префикс.

Параметры, которые вы установили в LocalSettings.php , превышают параметры, найденные в вышеупомянутых файлах. Поместите любые настройки конфигурации, которые вы хотите отменить, в нижней части файла LocalSettings.php .

Пример:

$wgWBRepoSettings['dataRightsUrl'] = 'https://creativecommons.org/publicdomain/zero/1.0/';

В приведенной выше строке параметр dataRightsUrl в Викибазе (потому что $wgWBRepoSettings) устанавливается на значение https://creativecommons.org/publicdomain/zero/1.0/.

Использование только клиента или репозитория

При некоторых обстоятельствах вы можете захотеть использовать только клиент или только код репозитория.

Только репозиторий

В версиях 1.36 и выше используется регистрация расширения:

wfLoadExtension( 'WikibaseRepository', "$IP/extensions/Wikibase/extension-repo.json" );
require_once "$IP/extensions/Wikibase/repo/config/Wikibase.example.php";
$wgWBRepoSettings['siteLinkGroups'] = [ 'mywikigroup' ];
$wgLocalDatabases = [ 'enwiki', 'fawiki' ];
$wgWBRepoSettings['localClientDatabases'] = [
	'en' => 'enwiki',
	'fa' => 'fawiki'
];

Используйте следующий фрагмент только при использовании версий ниже 1.36:

$wgEnableWikibaseRepo = true;
$wgEnableWikibaseClient = false;
require_once "$IP/extensions/Wikibase/repo/Wikibase.php";
require_once "$IP/extensions/Wikibase/repo/ExampleSettings.php";
$wgWBRepoSettings['siteLinkGroups'] = [ 'mywikigroup' ];
$wgLocalDatabases = [ 'enwiki', 'fawiki' ];
$wgWBRepoSettings['localClientDatabases'] = [
	'en' => 'enwiki',
	'fa' => 'fawiki'
];

Эти конфигурации предполагают, что ваши префиксы интервики являются en и fa. Применить, если нужно.

Обратите внимание, что $wgWBRepoSettings охватывает все конфигурации хранилища Викибазы. Смотрите значения по умолчанию в phab:diffusion/EWBA/browse/master/repo/config/Wikibase.default.php/Wikibase.default.php

Только файлы

В версиях 1.36 и выше используется регистрация расширения:

wfLoadExtension( 'WikibaseClient', "$IP/extensions/Wikibase/extension-client.json" );
require_once "$IP/extensions/Wikibase/client/config/WikibaseClient.example.php";
$wgWBClientSettings['repoUrl'] = 'https://pool.my.wiki';
$wgWBClientSettings['repoScriptPath'] = '';
$wgWBClientSettings['repoArticlePath'] = '/wiki/$1';
$wgWBClientSettings['entitySources'] = [
	'poolwiki' => [
		'repoDatabase' => 'poolwiki',
		'baseUri' => 'https://pool.my.wiki/entity',
		'entityNamespaces' => [
			'item' => 120,
			'property' => 122,
		],
		'rdfNodeNamespacePrefix' => 'wd',
		'rdfPredicateNamespacePrefix' => '',
		'interwikiPrefix' => '',
	],
];
$wgWBClientSettings['itemAndPropertySourceName'] = 'poolwiki';
$wgWBClientSettings['siteLinkGroups'] = [ 'mywikigroup' ];
$wgWBClientSettings['siteGlobalID'] = 'en';

Для другого клиента lang-wiki, например, фарси, изменить сайтGlobalID на:

$wgWBClientSettings['siteGlobalID'] = 'fa';

Используйте следующий фрагмент только при использовании версий ниже 1.36:

$wgEnableWikibaseRepo = false;
$wgEnableWikibaseClient = true;
require_once "$IP/extensions/Wikibase/client/WikibaseClient.php";
require_once "$IP/extensions/Wikibase/client/ExampleSettings.php";
$wgWBClientSettings['repoUrl'] = 'https://pool.my.wiki';
$wgWBClientSettings['repoScriptPath'] = '';
$wgWBClientSettings['repoArticlePath'] = '/wiki/$1';
$wgWBClientSettings['repositories']['']['repoDatabase'] = 'poolwiki';
$wgWBClientSettings['repositories']['']['changesDatabase'] = 'poolwiki';
$wgWBClientSettings['siteLinkGroups'] = [ 'mywikigroup' ];
$wgWBClientSettings['siteGlobalID'] = 'en';

Вы также можете посмотреть официальное полное описание вариантов конфигурации.

Обратите внимание, что $wgWBClientSettings охватывает все конфигурации репозитария Викибазы. Смотрите значения по умолчанию в $url/Wikibase.default.php

Wikibase репозитарий

Определите ссылки для внешних идентификаторов

Чтобы добавить ссылки для внешних идентификаторов в главном интерфейсе (как показано в этом примере с Викиданными Q85#P 214 и config P214#P1630):

  1. Создайте свойство типа "String" (точно так же, как свойство "URL форматера" в Викиданных). Свойство, которое мы создаем на этом шаге, будет использоваться для хранения форматировщика ссылок в других свойствах (например, использование "URL форматировщика" в "VIAF ID"). Примечания, использующие это свойство, должны быть типа "Внешний идентификатор".
  2. Получите идентификатор свойства, которое мы создали на предыдущем шаге (например, P5).
  3. Настройка в LocalSettings.php:
    $wgWBRepoSettings['formatterUrlProperty'] = 'P5';
    
  4. Если добавление настройки не работает самостоятельно, выполните следующую команду
    php extensions/Wikibase/repo/maintenance/rebuildPropertyInfo.php --rebuild-all --force
    
  5. Теперь пользователи могут использовать это свойство (в примере P5) в свойствах, тип которых является "Внешний идентификатор". Значение должно содержать $1 в форматировании URL (например, https://viaf.org/viaf/$1/), $1 затем будет заменено идентификатором, указанным в элементах, использующих свойство, которое мы установили в опции $wgWBRepoSettings['formatterUrlProperty'].

Канонические URI могут быть аналогично сконфигурированы в дампах RDF (префиксы wdtn:, psn:, pqn:, print:), как показано в Викиданных со свойством P1921 и используется в свойстве P214#P1921). Конфигурация похожа на параметр $wgWBRepoSettings['canonicalUriProperty'].

Пользовательские настройки

Собственный Order Url

"'propertyOrderUrl"' позволяет настраивать порядок свойств с помощью функции LUA mw.wikibase.orderProperties, как описано в Руководство:Интерфейс/Wikibase-SortedProperties

$wgWBRepoSettings['propertyOrderUrl'] = $wgServer. $wgScriptPath . '/index.php?title=MediaWiki:Wikibase-SortedProperties&action=raw&sp_ver=1';

Заявленные секции

"'statementSections"' позволяет администратору Викибазы настраивать отображение и группировку инструкций в Викибазе.

В LocalSettings.php, определите wmgWikibaseRepoStatementSections с отдельными разделами для каждой вики в вашем примере. Для идентификаторов и ограничений можно определить type , который фильтрует определенные элементы в собственный раздел.

Параметры синтаксиса для identifiers и constraints следующие:

  • null — никаких элементов не помещайте в отдельный раздел
  • 'type' => 'dataType' — элементы с указанным типом данных появляются в отдельном разделе
    • 'dataTypes' => [ 'exampleDataType1' ] — указать тип/ы данных, которые должны быть фильтрованы
  • 'type' => 'propertySet'] — элементы с указанным типом данных появляются в отдельном разделе
    • 'propertyIds' => [ 'exampleProperty1' ] — указать свойство/истины, на которые необходимо фильтровать

Например, чтобы воспроизвести, как Викиданные отделяют "Внешние идентификаторы" от остальных своих свойств, установите:

$wgWBRepoSettings['statementSections'] = [
	'item' => [
		'statements' => null,
		'identifiers' => [
			'type' => 'dataType',
			'dataTypes' => [ 'external-id' ],
		],
	],
];

Вы можете настроить название виньетки с помощью страницы MediaWiki:Wikibase-statementsection-identifiers.

См. также:

Настройки конфигурации

Все доступные настройки конфигурации записаны в основный документ конфигураций.

Скрипты обслуживания

Викибаза предоставляет несколько скриптов обслуживания, которые можно найти в подсправочнике maintenance. Викибаза должна быть установлена в каталоге расширений MediaWiki, extensions/Wikibase. Если он установлен в другом месте, вы можете установить переменную окружающей среды MW_INSTALL_PATH на путь установки MediaWiki, и скрипты будут использовать его.

Хранилище

Общий способ настройки среды для скриптов, вызванных в cron-работах: env 'MW_INSTALL_PATH=/var/www/repo' php /path/to/php/script

Заполнять страницы Table.php

Этот скрипт загрузит "викиматрицу" из meta.wikimedia.org и использует эту информацию для заполнения локальной таблицы sites . Это обеспечивает Викибазу информацией, необходимой для подключения к другим вики, например, для предложения или нормализации заголовков страниц при создании ссылок на сайты.

Из папки установки MediaWiki запустить:

php extensions/Wikibase/lib/maintenance/populateSitesTable.php

Чтобы вставить новый клиент Wikibase без использования вики-матрицы, смотрите Руководство:Таблица строк.

dispatchChanges.php

Начиная с версии 1.38, этот сценарий был отменен и больше не будет работать с соответствующей версией Викибазы (см. Билет Фабрикатора phab:T277027).

Этот скрипт обновляет локальный кэш элементов клиента.

1. Предоставьте скрипт необходимой информации о базах данных клиента.

LocalSettings.php:

$wgLocalDatabases = $wgWBRepoSettings['localClientDatabases'] = [ 'enwiki', 'fawiki' ];

2. Запустите сценарий смены диспетчера.

php extensions/Wikibase/repo/maintenance/dispatchChanges.php

Обратите внимание, что этот сценарий выполняет синхронизацию; хранилище репозитария и клиент будут оставаться в синхронизации только до тех пор, пока этот сценарий работает.

pruneChanges.php

Этот скрипт позволяет вам сократить таблицу изменений в Викибазе. При запуске без параметров он удалит все изменения старше 7 дней. Вы можете указать флаг number-of-days для периодов другой длины:

php repo/maintenance/pruneChanges.php --number-of-days 1
11:07:46 pruning entries older than 2020-12-11T11:07:46Z
11:07:47 151 rows pruned
11:07:47 done, exiting

Особенности использования

После установки Викибазы, ссылки на языки автоматически получаются из хранилища репозитария и добавляются на страницы клиента, пока работает скрипт опроса Затем расширение сортирует ссылки (как определено локальной вики), отображает их и сохраняет их в базе данных точно так же, как они определены на странице. Расширение надежное и сохраняет существующие ссылки, когда центральная вики не работает.

По умолчанию расширение работает только в основном пространстве имен, но это можно изменить, используя параметр конфигурации namespaces.

Перенос Wikidata ссылок и местных интервики ссылок

Расширение не влияет на работу межязычных ссылок; они могут использоваться параллельно расширению. Есть несколько вариантов использования:

  • Ссылки на страницы в пространствах имен, не настроенных для использования расширения, будут работать так, как если бы расширение не было установлено.
  • Если вы хотите добавить ссылки в дополнение к ссылкам, хранящимся в Викидате, просто добавьте новые ссылки к викитексту; ваши ссылки и ссылки на Викидату будут отображаться вместе.
  • Чтобы исключить одну или несколько ссылок на Викиданные, используйте noexternallanglinks с нужным языком (языками). Другие ссылки будут работать нормально.
  • Чтобы заменить одну или несколько ссылок на викиданные, используйте noexternallanglinks и добавьте новые ссылки в викитекст.
  • Чтобы полностью отключить ссылки на Викиданные, используйте noexternallanglinks самостоятельно. Ссылки, которые вы предоставите, будут работать так, как если бы расширение не было установлено.

noexternallanglinks - это волшебное слово и функция анализатора, которая может отключить это расширение для конкретной страницы или удалить некоторые языковые ссылки, созданные расширением.

При использовании самостоятельно ({{noexternallanglinks}}), Викибаза эффективно отключается на данной странице. Используются только межязычные ссылки, присутствующие в викитексте. Слово работает так же, когда используется в качестве функции, с звездой: {{noexternallanglinks:*}} (звезда "совпадает" со всеми языками).

При использовании функции с параметрами ссылки на указанные языки будут удалены. Например, {{noexternallanglinks:fr|id}} удаляет ссылки на французский и индонезийский языки. Вы также можете использовать функцию более одного раза: {{noexternallanglinks:fr}} {{noexternallanglinks:id}}. Безопасно удалять ссылки на языки, которые не существуют.

Передача данных

WikibaseClient allows data inclusion from the Wikibase repo using the {{#statements:…}} parser function along with Lua.

Lua
Функции парсера
  • Поиск по идентификатору собственности (например, P2), чтобы включить данные из элемента Викибазы, связанного с сайтом. Например, {{#statements:P2}}.
  • Поиск по метке свойства. Например, {{#statements:country}}.
  • При включении произвольного доступа он может применяться к любому пункту. Например, {{#statements:P31|from=Q460679}}.
  • В дополнение к {{#statements:…}}, который выводит связанный викитекст, вы можете использовать {{#property:…}}, который выводит несвязанные метки.
  • Смотрите Как использовать данные в проектах Викимедиа для получения дополнительной документации.

Боковая панель других проектов

"Смотрите также Интерфейс межпроектных ссылок текущий статус проектов Викимедиа".

В параметре конфигурации otherProjectsLinks создается раздел "Другие проекты" ссылками на другие проекты из элемента, связанного с текущей страницей. В настоящее время он поддерживает точно одну ссылку на проект и еще не обменяет ссылки в викитексте с использованием функции анализатора (хотя текущие хакеры JavaScript могут быть легко адаптированы).

Образец конфигурации (ссылки будут отображаться в указанном порядке):

$wgWBClientSettings['otherProjectsLinks'] = [ 'frwiki', 'frwikiquote', 'commonswiki', 'frwikivoyage' ];

ИД страничной панели - "Wikibase-otherprojects". Вы можете использовать его для настройки положения раздела на боковой панели, используя Боковая панель.

Каждая ссылка имеет этикетку, содержащую i18n сообщения "wikibase-otherprojects-ID" с ID ID группы связанных сайтов (например, "wikipedia", "wikisource" или "commons").

Пример страницы: Village pump.

Список, разделенный запятыми

commaseparatedlist - это функция анализатора, которая может быть использована в редактировании резюме для форматирования текста. Он возвращает свой список аргументов, разделенных соответствующим разделителем данного языка. Например, {{#commaseparatedlist:word1|word2|word3}} приводит к word1, word2, word3 .

Включение дополнительных ссылок

Sitelinks are special links with a site and a title, linking from individual items to pages on other wikis. В Викидатах они переходят на другие сайты Викимедиа, такие как Википедия, Викиресурс и Википоезд. Помимо прочего, дополнительные ссылки позволяют ссылаться на свойство элемента на связанной странице в клиентской вики, функция, известная как Прямой доступ.

Настройка групп ссылок вашего сайта

Во-первых, подумайте о том, как группировать вики-клиенты, которые вы хотите увидеть в области ссылок на сайты для элементов в вашей вики-репозитарии.

Определение пользовательских групп

В своей вики-репо заменить содержание $wgWBRepoSettings['siteLinkGroups'] в LocalSettings.php группами, которые вы хотите увидеть там.

Например, рассмотрим следующую строку в LocalSettings.php:

$wgWBRepoSettings['siteLinkGroups'] = [ 'wikipedia', 'mywikigroup', 'anothergroup' ];

Это создаст три группы в поле ссылок на страницу "Положение":

  • стандарт wikipedia для глобальных сайтов Википедии
  • две пользовательские группы вики (здесь названы mywikigroup и anothergroup)

Названия, определенные здесь, будут относиться к поле site_group в таблице сайтов, как указано ниже.

В своем клиентском вики добавьте аналогичную строку конфигурации с вашим siteLinkGroups:

$wgWBClientSettings['siteLinkGroups'] = [ 'wikipedia', 'mywikigroup', 'anothergroup' ];

Отключение функции дополнительных ссылок

Если вы не хотите, чтобы ваша установка вообще использовала ссылки на сайты, вы можете отключить их, установив настройку на пустую массивку:

$wgWBRepoSettings['siteLinkGroups'] = [];
$wgWBClientSettings['siteLinkGroups'] = [];

Локализуйте свои группы

Чтобы указать правильную заголовку для ваших групп, вы должны создать страницу MediaWiki:Wikibase-sitelinks-mywikigroup с желаемым заголовком в качестве текста.[1]

Вы можете создать подстраницы для настройки заголовков на разных языках, например, создать MediaWiki:Wikibase-sitelinks-mywikigroup/de для создания немецкой заголовки.

Добавьте вики-страницы в таблицу сайтов

Чтобы добавить дополнительные ссылки на элементы в вашем репозитории wiki, вы должны добавить клиентские вики в таблицу сайты. Имена групп должны соответствовать именам групп, которые вы добавили в свою конфигурацию. Следуя приведенному выше примеру, у вас будет один или несколько сайтов с mywikigroup и anothergroup в качестве текста в поле site_group.
Вы должны установить как путь файла, так и путь страницы, и каждый должен включать местоположение $1.

Пример

Чтобы добавить свою вики (с идентификатором, заканчивающимся wiki) в группу mywikigroup, запустить:

cd maintenance
php addSite.php --pagepath=https://mw.wiki/wiki/\$1  --filepath=https://mw.wiki/w/\$1 --language en --interwiki-id en en mywikigroup
php addSite.php --pagepath=https://fa.mw.wiki/wiki/\$1  --filepath=https://fa.mw.wiki/w/\$1 --language fa --interwiki-id fa fa mywikigroup

Не забудьте сделать это на вики-репо и на всех вики-клиентах, чтобы функция "Добавить ссылки" в разделе на других языках работала правильно.

Для получения более подробной информации о том, как добавлять сайты в таблицу, пожалуйста, смотрите эти инструкции.

Сообщите вики-репозиторию о других клиентских вики-базах данных

$wgLocalDatabases = [ 'enwiki', 'fawiki' ];
$wgWBRepoSettings['localClientDatabases'] = [
    'en' => 'enwiki',
    'fa' => 'fawiki'
];

localClientDatabases — Масштаб локально доступных клиентских баз данных, предназначенных для использования механизмом диспетчеров изменений. Эта настройка указывает, на какие вики нужно напрямую перенаправить изменения. Он должен быть указан либо как ассоциативный массив (карта глобальных идентификаторов сайтов до логических имен базы данных) либо как список баз данных (если имена базы данных совпадают с идентификаторами сайтов). По умолчанию это пустой массив, указывающий на отсутствие локальных клиентских баз данных.

Убедитесь, что вы можете добавлять дополнительные ссылки

  1. Перейдите на страницу Special:SetSiteLink в своей вики-репо и попытайтесь связать существующий пункт (поле "ID") с одним из сайтов, настроенных выше (поле "Site ID"), указав существующую страницу на этой вики (поле "Sitelink"). Если он не работает, он должен предоставить полезное сообщение об ошибке.
  2. На странице, которую вы добавили выше, убедитесь, что Прямой доступ работает, сославшись на свойство элемента в функции синтаксического анализа.

Поиск и устранение неисправностей

Нет сайтов, на которые я мог бы ссылаться страницами в элементе.

Может помочь одна или несколько из следующих вещей:

php lib/maintenance/populateSitesTable.php
php repo/maintenance/rebuildItemsPerSite.php

Примечания