Wikibase/Installation/Configuration avancée

This page is a translated version of the page Wikibase/Installation/Advanced configuration and the translation is 100% complete.

Introduction

Cette page décrit les paramètres avancés pour le client Wikibase et le dépôt. Si Wikibase n'est pas encore installé, consultez d'abord les instructions d'installation.

Faire des modifications dans les configurations du client et du dépôt implique qu'il faut ajouter ou modifier $wgWBClientSettings ou les lignes de $wgWBRepoSettings (respectivement) dans le fichier LocalSettings.php de MediaWiki. Ce document ne couvre que quelques options; pour une liste exhaustive, consulter la documentation complète (valeurs par défaut : client settings file et repo settings file ).

Notez que le prefix wg de $wgWBRepoSettings est distinct de celui des autres extensions, qui peuvent utiliser le préfixe $eg. La différence est importante; votre configuration va échouer si vous utilisez un préfixe différent.

Les paramètres que vous définissez dans LocalSettings.php prévalent sur ceux qui ont été trouvés dans les fichiers mentionnés ci-avant. Placez à la fin de votre fichier LocalSettings.php , les paramètres que vous voulez redéfinir.

Exemple :

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

La ligne ci-dessus initialise le parameter dataRightsUrl du dépôt Wikibase (car $wgWBRepoSettings) à la valeur https://creativecommons.org/publicdomain/zero/1.0/.

Utiliser uniquement le client ou le dépôt

Dans certaines circonstances vous pouvez utiliser uniquement le client ou le dépôt de code seul.

Dépôt uniquement

Les versions 1.36 et plus récentes utilisent l'enregistrement des extensions :

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'
];

Utilisez l'extrait de code ci-dessous uniquement si votre version est antérieure à la 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'
];

Ces configurations supposent que vos préfixes interwiki sont en et fa. Ajuster en fonction des besoins.

Notez que $wgWBRepoSettings englobe tous les paramètres du dépôt Wikibase. Voir les valeurs par défaut dans Wikibase.default.php.

Client uniquement

Versions 1.36 et supérieures, utiliser l'enregistrement des extensions :

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';

Pour un client wiki d'une autre langue telle que Farsi, changez la valeur de siteGlobalID en :

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

Utilisez l'extrait de code ci-dessous uniquement si votre version est antérieure à la 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';

Vous pouvez également consulter la description officielle complète des options de configuration.

Notez que $wgWBClientSettings englobe tous les paramètres du client Wikibase. Voir les valeurs par défaut dans WikibaseClient.default.php.

Dépôt Wikibase

Définir les liens pour les identifiants externes

Pour ajouter les liens des identifiants externes dans l'interface principale (comme montré dans cet exemple Wikidata Q85#P214 et le paramètre P214#P1630):

  1. Créer une propriété de type String (tout comme la propriété formatter URL dans Wikidata). La propriété que nous créons dans cette étape sera utilisée pour enregistrer le formateur de liens dans les autres propriétés (par exemple utilisation de formatter URL dans VIAF ID). Les propriétés qui utilisent cette propriété doivent être du type External identifier.
  2. Récupérer l'ID de la propriété créée à l'étape précédente (c'est à dire P5).
  3. Configurer dans LocalSettings.php :
    $wgWBRepoSettings['formatterUrlProperty'] = 'P5';
    
  4. Si l'ajout du paramètre ne fonctionne pas tout seul, exécutez la commande suivante
    php extensions/Wikibase/repo/maintenance/rebuildPropertyInfo.php --rebuild-all --force
    
  5. Maintenant les utilisateurs disposent de cette propriété (P5 dans l'exemple ci-desus) dans les propriétés dont le type est External Identifier. La valeur doit contenir $1 dans le formateur d'URL (comme https://viaf.org/viaf/$1/), $1 sera ensuite remplacé par l'identifiant fourni dans les éléments qui utilisent la propriété que nous initialisons dans l'option $wgWBRepoSettings['formatterUrlProperty'].

Les URIs canoniques peuvent être configurés de manière similaire dans les vidages RDF (préfixes wdtn:, psn:, pqn:, prn:), comme indiqué dans Wikidata avec la propriété P1921 et utilisé dans la propriété P214#P1921). La configuration est similaire au paramètre $wgWBRepoSettings['canonicalUriProperty'].

Paramètres optionnels

propertyOrderUrl

propertyOrderUrl permet de personnaliser le classement des propriétés en utilisant la fonction LUA mw.wikibase.orderProperties comme expliqué dans le Manuel de l'interface

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

statementSections

statementSections — permet à l'administrateur Wikibase de personnaliser l'affichage des déclarations et le groupement dans Wikibase.

Dans LocalSettings.php, définir wmgWikibaseRepoStatementSections avec des sections séparées pour chaque wiki de votre instance. Pour les identifiants et les contraintes, vous pouvez définir un type qui filtre certains éléments hors de leur propre section.

Les options de syntaxe pour identifiers et constraints sont :

  • null — aucun élément n'est placé dans une section séparée
  • 'type' => 'dataType' — les éléments avec le ou les types de données spécifiés apparaissent dans une section distincte
    • 'dataTypes' => [ 'exampleDataType1' ] — spécifier le ou les types à filtrer
  • 'type' => 'propertySet'] — éléments avec la ou les propriétés spécifiées apparaissent dans une section distincte
    • 'propertyIds' => [ 'exampleProperty1' ] — spécifier la ou les propriétés à filtrer

Par exemple, pour répliquer la manière dont Wikidata sépare les identifiants externes du reste des propriétés, déclarez :

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

Vous pouvez personnaliser le nom du libellé en utilisant la page MediaWiki:Wikibase-statementsection-identifiers.

Voir aussi :

Options de configuration disponibles

Tous les paramètres de configuration disponibles sont décrits dans le document de configuration principal.

Scripts de maintenance

Wikibase fournit quelques scripts de maintenance dans le dossier maintenance . Wikibase doit être installé dans le répertoire des extensions MediaWiki extensions/Wikibase. S'il a été installé ailleurs vous pouvez initialiser la variable d'environnement avec le chemin de votre installation MediaWiki et les scripts l'utiliseront.

Dépôt

Manière commune d'initialiser l'environnement pour les scripts appelés par les tâches en cron : env 'MW_INSTALL_PATH=/var/www/repo' php /path/to/php/script

populateSitesTable.php

Ce script va charger la matrice du wiki de meta.wikimedia.org et utiliser cette information pour populer la table locale sites. Cela fournit à Wikibase les informations dont il a besoin pour se connecter aux autres wikis, pour par exemple faire des suggestions ou normaliser le titre des pages lorsque vous créez des liens de site.

Dans le dossier d'installation MediaWiki, exécutez :

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

Pour insérer un nouveau client Wikibase sans utiliser la matrice du wiki, voir le manuel de la Table des sites.

dispatchChanges.php

Depuis la version 1.38, ce script est obsolète et n'est plus opérationnel avec la version correspondante de Wikibase (voir le ticket Phabricator phab:T277027).

Ce script met à jour le cache local des éléments du wiki client.

1. Fournir au script les informations nécessaires à propos des bases de données du wiki client.

LocalSettings.php:

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

2. Exécuter le script de distribution des modifications.

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

Notez que ce script réalise la synchronisation; le dépôt et le client resteront synchronisés tant que ce script s'exécutera.

pruneChanges.php

Ce script vous permet d'élaguer la table des modifications Wikibase. S'il est exécuté sans paramètres, il supprime toutes les modifications faites il y a plus de 7 jours. Vous pouvez spécifier le drapeau number-of-days pour les périodes ayant une autre longueur :

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

Fonctionnalités et utilisation

Après que Wikibase soit installé,les liens inter-langues sont récupérés automatiquement à partir du dépôt et ajoutés aux pages des wikis clients tant que le script qui réalise le balayage reste en cours d'exécution. L'extension trie les liens ensuite (comme défini par le wiki local), les affiche et les enregistre dans la base de données exactement comme ils sont définis sur la page. L'extension est robuste et elle conserve les liens existants lorsque le wiki central n'est plus en ligne.

Par défaut l'extension fonctionne uniquement dans l'espace de noms principal, mais vous pouvez en changer en utilisant l'option de configuration des espaces de noms.

Avoir des liens Wikidata et des liens locaux

L'extension n'impacte pas la manière dont les liens inter-langues travaillent; ils peuvent être utilisés en parallèle avec l'extension. Il existe plusieurs cas :

  • Les liens vers les pages dont les espaces de noms ne sont pas configurés pour utiliser l'extension fonctionneront comme si l'extension n'avait pas été installée.
  • Si vous souhaitez ajouter des liens en plus de ceux actuellement enregistrés dans Wikidata, ajoutez-les simplement en wikicode; vos liens seront affichés ensemble avec ceux de Wikidata.
  • Pour exclure un ou plusieurs liens Wikidata, utilisez noexternallanglinks avec la ou les langues souhaitées. Les autres liens continueront à fonctionner normalement.
  • Pour remplacer un ou plusieurs liens Wikidata, utilisez noexternallanglinks et ajoutez les nouveaux liens en wikicode.
  • Pour arrêter tous les liens Wikidata d'un seul coup, utilisez uniquement noexternallanglinks. Les liens que vous fournissez fonctionneront comme si l'extension n'était pas installée.

noexternallanglinks

noexternallanglinks est un mot magique et une fonction d'analyse syntaxique qui peut désactiver cette extension sur une page donnée, ou supprimer certains des liens interlangue produits par l'extension.

Si utilisé séparément ({{noexternallanglinks}}), Wikibase est effectivement désactivé sur la page en question. Seuls les liens interlangues présents dans le wikicode sont utilisés. Le mot réagit de la même manière lorsqu'il est utilisé comme fonction, avec un astérisque : {{noexternallanglinks:*}} (l'astérisque ramassant toutes les langues).

Dans l'utilisation en tant que fonction avec paramètres, les liens vers les langues spécifiées sont enlevés. Par exemple, {{noexternallanglinks:fr|id}} supprime les liens vers le français et l'indonésien. Il est également possible d'appeler la fonction plus d'une fois : {{noexternallanglinks:fr}} {{noexternallanglinks:id}}. Il vaut mieux supprimer les liens vers les langues qui n'existent pas.

Transclusion de données

WikibaseClient permet d'inclure les données à partir du dépôt Wikibase en utilisant la fonction {{#statements:…}} de l'analyseur syntaxique avec Lua.

Lua
Fonctions d'analyse
  • Recherche à l'aide de l'Id de propriété (par exemple P2) pour inclure les données d'un élément Wikibase connecté via un lien de site. Par exemple, {{#statements:P2}}.
  • Rechercher à l'aide du libellé de la propriété. Par exemple, {{#statements:country}}.
  • Lorsque l'accès arbitraire est activé, il peut être appliqué à n'importe quel élément. Par exemple, {{#statements:P31|from=Q460679}}.
  • En plus de {{#statements:…}} qui génère le wikicode lié, vous pouvez utiliser {{#property:…}} qui donne les étiquettes non liées.
  • Pour plus d'information, voir Comment utiliser les données avec les projets Wikimedia.

Autre barre latérale de projets

Voir aussi Interface des liens interprojet pour avoir l'état actuel des projets Wikimedia.

L'option de configuration otherProjectsLinks crée une section Autres projets dans la barre latérale avec des liens vers les autres projets à partir de l'élément lié à la page actuelle. Actuellement, il supporte exactement un seul lien par projet et ne supplante pas encore les liens dans le wikicode en utilisant une fonction d'analyseur (bien que les modifications du JavaScript actuel puissent être facilement adaptées).

Exemple de configuration (les liens seront affichés dans l'ordre spécifié) :

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

L'Id de la barre latérale est « wikibase-otherprojects ». Vous pouvez l'utiliser pour personnaliser la position des sections dans la barre latérale en utilisant Sidebar.

Chaque lien possède le libellé contenant les messages i18n wikibase-otherprojects-ID avec ID comme Id du goupe lié de sites (comme wikipedia, wikisource ou commons).

Page d'exemple : [bistro]

commaseparatedlist

commaseparatedlist est une fonction de formatage du texte pouvant être utilisée dans le résumé des modifications. Elle renvoie sa liste d'arguments séparés avec le séparateur propre à la langue donnée. Par exemple {{#commaseparatedlist:word1|word2|word3}} donne comme résultat word1, word2, word3.

Activer les liens de sites

Les liens de site sont des liens spéciaux avec un site et un titre, liant les éléments individuels à des pages qui appartiennent à d'autres wikis. Dans Wikidata ils pointent vers les autres sites Wikimedia tels que Wikipedia, Wikisource et Wikivoyage. Parmi les autres choses, les liens de site permettent de référencer une propriété d'élément sur la page liée dans le wiki client, une fonctionnalité connue sous le nom d' Accès direct.

Configurer ses groupes de liens de site

Vous devez d'abord penser à la manière de regrouper les wikis clients que vous souhaitez voir dans la zone de vos liens de site pour les éléments du wiki du dépôt.

Définir des groupes personnalisés

Dans le wiki du dépôt, remplacez le contenu de $wgWBRepoSettings['siteLinkGroups'] dans LocalSettings.php par les groupes que vous voulez y voir.

Par exemple considérez la ligne suivante dans LocalSettings.php :

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

Cela va créer trois groupes dans la boîte des liens de site de la page de l'élément :

  • le wikipedia défini en standard pour les sites globaux Wikipedia
  • deux groupes de wikis personnalisés (nommés ici mywikigroup et anothergroup)

Les noms définis ici sont relatifs au champ site_group de la table des sites, comme spécifié ci-dessous.

Dans votre wiki client ajoutez une ligne de configuration semblable avec votre siteLinkGroups :

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

Désactiver la fonctionnalité des liens de sites

Si vous ne souhaitez pas du tout que votre installation utilise les liens de site, vous pouvez les désactiver en initialisant le paramètre avec un tableau vide :

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

Internationaliser vos groupes

Pour afficher l'entête correcte de vos groupes, vous devez créer la page MediaWiki:Wikibase-sitelinks-mywikigroup avec l'entête textuelle souhaitée.[1]

Vous pouvez créer des sous-pages pour définir les titres dans les différentes langues, par exemple créer MediaWiki:Wikibase-sitelinks-mywikigroup/de pour créer un titre en allemand.

Ajouter les wikis à la table des sites

Pour ajouter les liens de site aux éléments du wiki de dépôt, vous devez ajouter les wikis clients dans la table des sites. Le nom des groupes doit correspondre aux noms des groupes que vous avez ajoutés à votre configuration. D'après l'exemple ci-dessus, vous devriez obtenir un ou plusieurs sites avec mywikigroup et anothergroup comme texte dans le champ site_group.
Vous devez définir à la fois le chemin du fichier et le chemin de la page, et chacun doit contenir le paramètre de substitution $1.

Exemple

Pour ajouter votre wiki (avec un Id se terminant par wiki) au groupe mywikigroup, exécutez :

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

Soyez sûr de faire cela sur le wiki du dépôt ainsi que sur tous les wikis clients de sorte que la fonctionnalité Ajouter des liens dans les autres langues fonctionne correctement.

Veuillez suivre ces instructions pour avoir d'autres détails sur la manière d'ajouter des sites à la table.

Informer le wiki du dépôt, des bases de données disponibles sur les autres wikis clients

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

localClientDatabases — tableau des bases de données clientes accessibles localement, à utiliser lors de la modification du mécanisme de répartition. Ce paramètre indique les wikis vers lesquels les modifications sont directement poussées. Il faut indiquer soit un tableau associatif (qui donne la correspondance des IDs globaux des sites avec les noms logiques des bases de données) ou une liste de bases de données (si leur nom correspond aux IDs des sites). Par défaut, le tableau est vide, ce qui signifie qu'il n'y a pas de bases de données client locales.

Vérifier que l'on peut ajouter des liens de sites

  1. Allez sur la page Special:SetSiteLink du wiki de votre dépôt et essayez de lier à un Item existant (champ « ID ») de l'un des sites configuré ci-dessus (champ « Site ID ») en spécifiant une page existante sur ce wiki (champ « Sitelink »). Si cela échoue, vous devriez recevoir un message d'erreur explicatif.
  2. Sur la page que vous avez ajoutée ci-dessus, vérifiez que l'Accès direct fonctionne en référençant une propriété de l'élément Item dans une fonction d'analyseur syntaxique.

Résolution des problèmes

Il n'existe pas de site pour lier les pages à un élément

Une ou plusieurs des propositions suivantes pourraient vous aider :

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

Références

  1. Traduction des messages dans l'architecture MediaWiki