Wikidata:Créer un robot

From Wikidata
Jump to navigation Jump to search
This page is a translated version of the page Wikidata:Creating a bot and the translation is 86% complete.

Outdated translations are marked like this.
Other languages:
العربية • ‎български • ‎català • ‎čeština • ‎dansk • ‎Deutsch • ‎Zazaki • ‎Ελληνικά • ‎English • ‎British English • ‎Esperanto • ‎español • ‎فارسی • ‎suomi • ‎français • ‎Frysk • ‎ગુજરાતી • ‎magyar • ‎հայերեն • ‎italiano • ‎日本語 • ‎한국어 • ‎Ripoarisch • ‎lietuvių • ‎latviešu • ‎മലയാളം • ‎Nederlands • ‎occitan • ‎polski • ‎português do Brasil • ‎русский • ‎svenska • ‎தமிழ் • ‎తెలుగు • ‎中文

Cette page explique comment créer des robots pour Wikidata. N'hésitez pas à partager votre code, à ajouter de nouveaux exemples et toutes les améliorations que vous voulez.

Exigences

Pour créer des robots, vous avez besoin de :

  • Quelques compétences en codage (Python, Perl, PHP...)
  • Un framework (un des frameworks ci-dessous) et un code à exécuter pour compléter une tâche
  • Un compte de robot approuvé
  • Un éditeur de code source (Notepad++, Geany, vi, emacs)

Pywikibot

Dans les sections suivantes, vous allez apprendre comment installer, configurer et vous connecter en utilisant pywikipediabot. Vous n'avez besoin d'effectuer ces trois étapes qu'une seule fois. De plus, des exemples basiques sont là pour apprendre les bases de la programmation d'un robot.

Installation

Pour plus de détails à propos de l'installation de pywikipediabot, voir mw:Manual:Pywikibot/Installation et Wikidata:Pywikibot - Python 3 Tutorial/Setting up Shop
Pour utiliser pywikibot sans installation, voir mw:Manual:Pywikibot/PAWS

Pour installer pywikipediabot :

Configuration

 :Pour plus de détails à propos de la configuration de pywikipediabot, voir mw:Manual:Pywikibot/user-config.py.

Vous devez configurer le fichier user-config.py avec le nom d'utilisateur du robot, la famille de projet et la langue. Pour Wikidata, les paramètres de famille et de langue sont les mêmes, wikidata.

Vous pouvez réduire le délai entre chaque modifications en ajoutant : put_throttle = 1

Connexion

Après avoir configuré le fichier user-config.py, connectez-vous comme suit :

python login.py

Il vous demandera le mot de passe du robot. Si vous l'avez entré correctement, vous devriez à présent être connecté.

Exemple 1 : Récupérer des données

Cet exemple récupère des données pour la page se référant à Douglas Adams. Sauvegardez le code source suivant dans un fichier et exécutez-le avec python example1.py

item.get() se connecte à Wikidata et collecte les données. On obtiens alors (reformaté pour plus clarté) :

{
    u'claims': {
        u'P646': [<pywikibot.page.Claim instance at 0x7f1880188b48>],
        u'P800': [<pywikibot.page.Claim instance at 0x7f1880188488>, <pywikibot.page.Claim instance at 0x7f1880188368>]
        ...
    }
    u'labels': {
        u'gu': u'\u0aa1\u0a97\u0acd\u0ab2\u0abe\u0ab8 \u0a8f\u0aa1\u0aae\u0acd\u0ab8',
        u'scn': u'Douglas Adams',
        ...
    }
    u'sitelinks': {
        u'fiwiki': u'Douglas Adams',
        u'fawiki': u'\u062f\u0627\u06af\u0644\u0627\u0633 \u0622\u062f\u0627\u0645\u0632',
        u'elwikiquote': u'\u039d\u03c4\u03ac\u03b3\u03ba\u03bb\u03b1\u03c2 \u0386\u03bd\u03c4\u03b1\u03bc\u03c2',
        ...
    }
    u'descriptions': {
        u'eo': u'angla a\u016dtoro de sciencfikcio-romanoj kaj humoristo',
        u'en': u'English writer and humorist',
    },
    u'aliases': {
        u'ru': [u'\u0410\u0434\u0430\u043c\u0441, \u0414\u0443\u0433\u043b\u0430\u0441'],
        u'fr': [u'Douglas Noel Adams', u'Douglas No\xebl Adams'],
        ...
    }
}
['claims', 'labels', 'sitelinks', 'descriptions', 'aliases']
[[wikidata:Q42]]

Il imprime le dictionnaire entier. Plus tard une liste contenant toutes les clés pour les paires clés-valeurs. Enfin, vous pouvez voir que l'élément sur Douglas Adams est Q42.

Alternatives

L'exemple ci-dessus obtient la page de l'élément en utilisant l'article de Wikipédia en anglais. Alternativement, vous pouvez également obtenir la page de l'élément directement :


Exemple 2 : Récupérer les liens interwiki

Après item.get(), par exemple les liens de sites peuvent être accessibles. Ce sont des liens vers tous les Wikipédia ayant l'article.

Ce qui donne :

{u'fiwiki': u'Douglas Adams', u'eowiki': u'Douglas Adams', u'dewiki': u'Douglas Adams', ...

Avec item.iterlinks(), un itérateur de tous ces liens de sites est retourné, où chaque article est présenté non pas sous forme de texte comme au-dessus mais directement comme objet de page pour un traitement ultérieur (par exemple, modifier le texte dans les articles de Wikipédia correspondants).

Exemple 4 : Définir une description

Cet exemple définit une description anglaise et allemande pour l'élément sur Douglas Adams.

Le réglage des libellés et alias marche en conséquence.

Exemple 6 : Définir un lien de site

Pour définir un lien vers un site, on peut soit créer un dictionnaire correspondant à l'exemple 4, soit utiliser les objets Page :

Exemple 7 : Définir une déclaration

Les déclarations sont définies en utilisant la classe Claim. Voici une définition de Douglas Adams place of birth (P19) : Cambridge (Q350).

Pour les autres types de données, cela fonctionne pareillement. Ci-dessous on ajoute Claims avec (IMDb ID (P345)) et les coordonnées (coordinate location (P625)) (l'URL est la même comme chaine de caractères) :


Exemple 8: Ajouter un qualificatif

Les qualificatifs sont représentées par la classe Claim.Dans ce qui suit, nous ajoutons le qualificatif incertae sedis (P678) family (Q35409) à la déclaration "claim".


Exemple 9: Ajouter une source

Les sources peuvent aussi être représentées par la classe Claim. A la différence des qualificatifs, une source peut contenir une ou plusieurs déclarations. Dans ce qui suit, nous ajoutons stated in (P248) Integrated Taxonomic Information System (Q82575) avec retrieved (P813) 20 Mars 2014 comme source à la déclaration "claim"


Exemple 10 : Générateurs de pages

Exemple 11 : obtenir les valeurs des sous-propriétés

In the following, we get values of sub-properties from branch described by source (P1343) -> Great Soviet Encyclopedia (1969–1978) (Q17378135) -> properties reference URL (P854) and title (P1476).


D'autres exemples

Certains utilisateurs partagent leurs codes source. Voyez-en plus dans les liens suivants :

  • User:RobotMichiel1972/wikidata lowercase.py - exemple de pywikipedia montrant comment corriger le libellé en utilisant la capitalisation du libellé anglais en tant que 'référence' (ici code brut implémenté dans le wiki néerlandais uniquement) fonctionnant sur une sélection de pages sur son propre Wikipedia.
  • File:Bots hackathon 2013.pdf présentant "claimit.py" et "template_harvest.py" inclus dans la version centrale (ancienne réécriture)

Intégrateur Wikidata

WikidataIntegrator is a library for reading and writing to Wikidata/Wikibase. We created it for populating WikiData with content from authoritative resources on Genes, Proteins, Diseases, Drugs and others. Details on the different tasks can be found on the bot's Wikidata page.

Pywikibot is an existing framework for interacting with the MediaWiki API. The reason why we came up with our own solution is that we need a high integration with the Wikidata SPARQL endpoint in order to ensure data consistency (duplicate checks, consistency checks, correct item selection, etc.). Compared to Pywikibot, WikidataIntegrator currently is not a full Python wrapper for the MediaWiki API but is solely focused on providing an easy means to generate Python based Wikidata bots.

For more information, documentation, download & installation instructions, see here: https://github.com/SuLab/WikidataIntegrator/

Exemple de code

An example notebook demonstrating an example bot to add therapeutic areas to drug items, including using fastrun mode, checking references, and removing old statements:

http://paws-public.wmflabs.org/paws-public/46883698/example%20ema%20bot.ipynb

Wikibase.NET

Wikibase.NET est l'API remplaçant le maintenant obsolète DotNetDataBot. Ils ne sont pas compatibles car n'a plus besoin du framework de DotNetWikiBot.

Téléchargement & installation

Le framework peut être téléchargé depuis ici. Suivez juste les instructions sur cette page.

Problèmes connus

Exemples

À venir...

DotNetDataBot (obsolète)

Installation

Configuration

Après avoir décompressé le fichier vous pouvez voir un fichier appelé DotNetDataBot.dll et un autre appelé DotNetDataBot.xml. Le document .xml ne sert qu'à la documentation. Pour l'utiliser vous devez créer un nouveau référé dans votre projet. Vous pouvez alors écrire using DotNetDataBot; pour importer le framework.

Connexion

Pour vous connecter, vous devez créer un nouvel objet Site avec l'URL du wiki, le nom d'utilisateur de votre robot et son mot de passe.

Exemple 1 : Récupérer l'identifiant d'une page wiki

Vous pouvez accéder à l'ID d'un élément en cherchant le site et le titre de la page connectée.

Exemple 2 : Récupérer les liens interwiki

Vous pouvez obtenir les liens interwiki d'un élément en chargeant son contenu et en accédant au champ links de l'objet.

Exemple 3 : Définir une description

Pour mettre une description, vous devez utiliser la fonction setDescription.

Exemple 4 : Définir un libellé

Cela fonctionne de la même façon pour mettre un libellé. Utilisez setLabel.

Exemple 5 : Récupérer les liens interwiki pour 100 pages

Cette fonctionnalité n'est pas supportée. Réitérer simplement la liste.

API Wikibase pour PHP

Un client API pour Wikibase écrit en PHP. Il est téléchargeable ici.

Exemple 1 : Exemple basique

Observez les commentaires de la source pour comprendre comme cela fonctionne.


Exemple 2 : Modifier les déclarations

Observez les commentaires de la source pour comprendre comme cela fonctionne.

VBot

Framework for Wikidata and Wikipedia. Read and write on Wikidata and other Wikimedia project and have a useful list generator to generate list of Wikipedia page and Wikidata entity. Can read also JSON dump of Wikidata.

Vue d’ensemble

Robot servant à lire et à modifier Wikidata et Wikipédia

  • License: CC0 1.0
  • Language C#
  • Can read and write entities with all datatype on Wikidata
  • Can read and write pages on all Wiki project
  • Can read parameter from template on wiki pages
  • Can read JSON dump
  • Can create lists using:
  • Tested with Visual Studio Express 2013 for Windows Desktop.
    • Is necessary to have Newtonsoft.Json. You can install it with NuGet inside Visual Studio
    • Is necessary to add manually a reference to System.Web for "HttpUtility.UrlEncode"

Téléchargement

The framework can be downloaded from GitHub here.

Instructions

Exemple 1

Update en label for all items with instance of (P31): short film (Q24862) that have director (P57) and that have publication date (P577) in 1908. (Use of Wikidata query)

Utiliser directement l'API de Wikiadata

Dans cette section, vous allez apprendre comment faire des requêtes directement à l'API. Les requêtes API sont nécessaires si vous souhaitez développer votre propre framework ou pour coder une fonction non-supportée par un framework. Une documentation pour l'API de Wikibase est trouvable sur mediawiki.org. Vous pouvez également aller voir Special:ApiSandbox.

Pour ces exemples API, vous n'avez pas besoin d'installer de logiciel additionnel, juste un interpréteur de langage (Python, Perl, etc), et des framworks de support pour effectuer les requête HTTP. Vous avez également besoin de décoder le résultat, donc un décodeur JSON ou XML est nécessaire.

Exemple 1 : Récupérer le Q-numéro

Cet exemple récupère le Q-numéro incluant le lien de site pour l'article sur la Galaxie Andromède sur le Wikipédia en anglais.

https://www.wikidata.org/w/api.php?action=wbgetentities&titles=Andromeda%20Galaxy&sites=enwiki&props=&format=jsonfm&formatversion=2

Try following the link. This requests no additional information about the entity; remove &props= from the URL to see much more information about it. See the generated help for wbgetentities for more parameters you can specify.

Python

Ce qui donne :

Q2469


Voir aussi

Liens externes