Wikidata:Accès aux données
Wikidata For Developers: Data access |
Wikidata contient actuellement plus de 100 millions d'éléments et plus de 650 000 lexèmes, et ces chiffres continuent d'augmenter. Il existe plusieurs moyens d’accéder aux données ; ce document les présente et aide les utilisateurs potentiels à choisir la méthode d’accès la mieux adaptée à leurs besoins.
Il est essentiel de sélectionner la méthode qui vous donne accès aux données de la manière la plus rapide et la plus efficiente possible, sans exiger plus de ressources que nécessaire des serveurs de Wikidata. Cette page a pour but de vous aider en ce sens.
Avant de commencer
Utiliser les données de Wikidata
Wikidata offre un large spectre de données générales sur tout ce qu'il est possible d'imaginer. Toutes ces données sont publiées sous licence CC0, « aucun droit réservé », pour le domaine public.
Les modifications faites aux API et aux autres moyens d’accès aux données utilisés pour accéder à Wikidata sont soumises aux règles des interfaces stables (Politique d'interface stable) . Il n’est pas garanti que les sources de données présentes sur cette page soient des interfaces stables.
Projets Wikimédia
Ce document ne parle pas des moyens d’accès aux données depuis les projets Wikipédia. Si vous voulez utiliser les données de Wikidata dans un autre projet Wikimédia où il est possible d’utiliser des fonctions d’analyse, du Lua ou d’autres méthodes spécifiques au projet, voyez Comment utiliser les données sur les projets Wikimedia.
Bonnes pratiques de réutilisation des données
Nous mettons à disposition les données de Wikidata gratuitement et sans obligation de mention de la licence CC-0. En contrepartie, nous vous serions reconnaissant si vous mentionnez dans votre projet que vos données proviennent de Wikidata. De ce fait, vous permettez à Wikidata de rester en ligne et de continuer à fournir des données à jour et de haute qualité. Nous mettons aussi en avant les meilleurs projets utilisant les données de Wikidata.
Voici quelques exemples de texte permettant d’indiquer la provenance des données : « Propulsé par Wikidata », « Powered by Wikidata », « Utilise des données provenant de Wikidata », « Source : Wikidata », « Origine des données : Wikidata », etc. Vous pouvez également utiliser l’une de nos images .
Vous pouvez utiliser le logo Wikidata affiché ci-dessus, à condition de le faire d'une manière qui n'implique pas directement Wikidata ou la fondation Wikimédia.
Si possible, donnez à vos utilisateurs la possibilité de reporter les problèmes dans les données et de les transmettre à la communauté des éditeurs de Wikidata, par exemple avec l’outil Special:MyLanguage/Wikidata:Mismatch Finder. Nous travaillons actuellement à l'amélioration et l'automatisation de ce processus. D'ici là vous pouvez publier les erreurs sur l’espace d’échange de la communauté francophone.
Bonnes pratiques d’accès aux données
Lorsque vous utilisez les données provenant de Wikidata, merci de suivre ces bonnes pratiques :
- Follow the User-Agent policy – send a good User-Agent header.
- Follow the robot policy: send
Accept-Encoding: gzip,deflate
and don’t make too many requests at once. - Si vous recevez une réponse 429 Requêtes trop nombreuses (Too Many Requests), arrêtez d'envoyer d'autres requêtes pendant un certain temps (voir l'en-tête de réponse Réessayer-Après).
- When available (such as with the Wikidata Query Service), set the lowest timeout that makes sense for your data.
- When using the MediaWiki Action API, make liberal use of the
maxlag
parameter and consult the rest of the guidelines laid out in API:Etiquette.
Fonction recherche
De quoi s’agit-il ?
Il est possible de faire des recherches de manière traditionnelle dans Wikidata en utilisant le moteur Elasticsearch interne : Special:Search
Quand l'utiliser ?
Utilisez cet outil lorsque vous cherchez une chaîne de caractère ou lorsque vous savez quel élément vous cherchez mais ne connaissez pas son identifiant. Il peut également permettre des recherches basées sur des relations très simples entre les données.
Il n’est en revanche pas adapté à la recherche de relations plus complexes entre les données.
Détails
You can make your search more powerful with these additional keywords specific to Wikidata: haswbstatement
, inlabel
, wbstatementquantity
, hasdescription
, haslabel
. This search functionality is documented on the CirrusSearch extension page. It also has its own API action.
Linked Data Interface (URI)
What is it?
The Linked Data Interface provides access to individual entities via URI: http://www.wikidata.org/entity/Q???
. Such URIs are called concept URIs. Note concept URIs use HTTP, not HTTPS.
Quand l'utiliser ?
Use the Linked Data Interface when you need to obtain individual, complete entities that are already known to you.
Don't use it when you're not clear on which entities you need – first try searching or querying. It's also not suitable for requesting large quantities of data.
Détails
Chaque élément et chaque propriété possède un URI qui est fait l'espace de nom de concept Wikidata, l'ID d'Élément ou de Propriété (par ex., Q42
, P31
) et de données concrètes qui peuvent être consultées par l'URL des données de cet élément ou propriété.
The namespace for Wikidata's data about entities is https://wikidata.org/wiki/Special:EntityData
.
Ajouter un identifiant d'entité à ce préfixe génère une URL "abstraite" (elle ne correspond à aucun format spécifique) de l'URL de données de l'entité. Lorsque vous utilisez Special:EntityData pour construire une URL, la page applique de la négociation de contenu pour déterminer le format des données que Wikidata renverra. Dans la plupart des cas, vous utiliserez un navigateur Web classique, et une page HTML (wiki) permettant de consulter et modifier les données s'affichera, parce que c'est la préférence du navigateur. D'autres clients, comme les clients du "web des données" (linked data), recevront des données au format JSON ou RDF à leur préférence. Ils utiliseront pour cela le code HTTP Accept:
dans l'entête de leur requête.
- For example, take this concept URI for Douglas Adams – that's a reference to the real-world person, not to Wikidata's concrete description:
http://www.wikidata.org/entity/Q42
- As a human being with eyes and a browser, you will likely want to access data about Douglas Adams by using the concept URI as a URL. Doing so triggers an HTTP redirect and forwards the client to the data URL that contains Wikidata's data about Douglas Adams: https://www.wikidata.org/wiki/Special:EntityData/Q42.
Lorsque vous avez besoin de contourner la négociation de contenu, par exemple, pour afficher un contenu non HTML dans un navigateur Web, vous pouvez spécifier le format des données d'une entité en suffixant l'URL des données avec un suffixe d'extension tel que .json
, .rdf
, .ttl
, .nt
ou .jsonld
. Par exemple, https://www.wikidata.org/wiki/Special:EntityData/Q42.json
vous donne l'élément Q42 dans le format JSON.
Less verbose RDF output
Par défaut, le RDF renvoyé par l'interface des données liées est inclus, et comprend les descriptions des autres entités auxquelles il fait référence. Utilisez ?flavor=dump
pour exclure ces informations.
By appending &flavor
to the URL, you can control exactly what kind of data gets returned.
?flavor=dump
: Excludes descriptions of entities referred to in the data.?flavor=simple
: Provides only truthy statements (best-ranked statements without qualifiers or references), along with sitelinks and version information.?flavor=full
(default): An argument of "full" returns all data. (You don't need to specify this because it's the default.)
If you want a deeper insight into exactly what each option entails, you can take a peek into the source code.
Revisions and caching
You can request specific revisions of an entity with the revision
query parameter: https://www.wikidata.org/wiki/Special:EntityData/Q42.json?revision=112
.
The following URL formats are used by the user interface and by the query service updater, respectively, so if you use one of the same URL formats there’s a good chance you’ll get faster (cached) responses:
- https://www.wikidata.org/wiki/Special:EntityData/Q42.json?revision=1600533266 (JSON)
- https://www.wikidata.org/wiki/Special:EntityData/Q42.ttl?flavor=dump&revision=1600533266 (RDF, without descriptions of other entities)
Wikidata Query Service
What is it?
The Wikidata Query Service (WDQS) is Wikidata's own SPARQL endpoint. It returns the results of queries made in the SPARQL query language: https://query.wikidata.org
When to use it?
Use WDQS when you know only the characteristics of your desired data.
Don't use WDQS for performing text or fuzzy search – FILTER(REGEX(...)) is an antipattern. (Use search in such cases.)
WDQS is also not suitable when your desired data is likely to be large, a substantial percentage of all Wikidata's data. (Consider using a dump in such cases.)
Détails
Vous pouvez interroger les données de Wikidata à travers notre endpoint SPARQL, le Wikidata Query Service. Ce service peut s'utiliser aussi bien via l'interface web interactive ou par code en envoyant des requêtes GET
ou POST
à https://query.wikidata.org/sparql
.
The query service is best used when your intended result set is scoped narrowly, i.e., when you have a query you're pretty sure already specifies your resulting data set accurately. If your idea of the result set is less well defined, then the kind of work you'll be doing against the query service will more resemble a search; frequently you'll first need to do this kind of search-related work to sharpen up your query. See the Search section.
Linked Data Fragments endpoint
What is it?
The Linked Data Fragments (LDF) endpoint is a more experimental method of accessing Wikidata's data by specifying patterns in triples: https://query.wikidata.org/bigdata/ldf
. Computation occurs primarily on the client side.
When to use it?
Use the LDF endpoint when you can define the data you're looking for using triple patterns, and when your result set is likely to be fairly large. The endpoint is good to use when you have significant computational power at your disposal.
Since it's experimental, don't use the LDF endpoint if you need an absolutely stable endpoint or a rigorously complete result set. And as mentioned before, only use it if you have sufficient computational power, as the LDF endpoint offloads computation to the client side.
Details
If you have partial information about what you're looking for, such as when you have two out of three components of your triple(s), you may find what you're looking for by using the Linked Data Fragments interface at https://query.wikidata.org/bigdata/ldf
. See the user manual and community pages for more information.
Wikimedia REST API
What is it?
The Wikibase REST API is an OpenAPI-based interface that allows users to interact with, retrieve and edit items and statements on Wikibase instances – including of course Wikidata: Wikidata REST API
When to use it?
The Wikibase REST API is still under development, but for Wikidata it's intended to functionally replace the Action API as it's a dedicated interface made just for Wikibase/Wikidata.
The use cases for the Action API apply to the Wikibase REST API as well. Use it when your work involves:
- Editing Wikidata
- Getting direct data about entities themselves
Don't use the Wikibase REST API when your result set is likely to be large. (Consider using a dump in such cases.)
It's better not to use the Wikibase REST API when you'll need to further narrow the result of your API request. In such cases it's better to frame your work as a search (for Elasticsearch) or a query (for WDQS).
Details
The Wikibase REST API has OpenAPI documentation using Swagger. You can also review the developer documentation.
MediaWiki Action API
What is it?
The Wikidata API is MediaWiki's own Action API, extended to include some Wikibase-specific actions: https://wikidata.org/w/api.php
When to use it?
Use the API when your work involves:
- Editing Wikidata
- Getting data about entities themselves such as their revision history
- Getting all of the data of an entity in JSON format, in small groups of entities (up to 50 entities per request).
Don't use the API when your result set is likely to be large. (Consider using a dump in such cases.)
The API is also poorly suited to situations in which you want to request the current state of entities in JSON. (For such cases consider using the Linked Data Interface, which is likelier to provide faster responses.)
Finally, it's probably a bad idea to use the API when you'll need to further narrow the result of your API request. In such cases it's better to frame your work as a search (for Elasticsearch) or a query (for WDQS).
Details
The MediaWiki Action API used for Wikidata is meticulously documented on Wikidata's API page. You can explore and experiment with it using the API Sandbox.
Bots
Il est également possible d’accéder à l’API en utilisant un robot (bot en anglais). Pour en savoir plus sur les robots, voir Wikidata:Bots.
Recent Changes stream
What is it?
Le [[https://stream.wikimedia.org
|flux des modifications récentes]] peut être utilisée afin de voir les modifications des entités en temps-réel. L’API des changements récent est également disponible mais n’est plus recommandée pour les nouveaux outils, parce qu’elle ne publie pas les contenus des changements et nécessite plus de travail du serveur car chaque changement d’entité doit être récupéré séparément.
When to use it?
Use the Recent Changes stream when your project requires you to react to changes in real time or when you need all the latest changes coming from Wikidata – for example, when running your own query service.
Details
The Recent Changes stream contains all updates from all wikis using the server-sent events protocol. You'll need to filter Wikidata's updates out on the client side.
You can find the web interface at stream.wikimedia.org and read all about it on the EventStreams page.
Dumps
What are they?
Wikidata dumps are complete exports of all the Entities in Wikidata: https://dumps.wikimedia.org
When to use them?
Use a dump when your result set is likely to be very large. You'll also find a dump important when setting up your own query service.
Don't use a dump if you need current data: the dumps take a very long time to export and even longer to sync to your own query service. Dumps are also unsuitable when you have significant limits on your available bandwidth, storage space and/or computing power.
Details
If the records you need to traverse are many, or if your result set is likely to be very large, it's time to consider working with a database dump: (link to the latest complete dump).
You'll find detailed documentation about all Wikimedia dumps on the "Data dumps" page on Meta and about Wikidata dumps in particular on the database download page. See also Flavored dumps above.
Tools
- JsonDumpReader is a PHP library for reading dumps.
- At [1] you'll find a Go library for processing Wikipedia and Wikidata dumps.
- You can use wdumper to get partial custom RDF dumps.
Local query service
It's no small task to procure a Wikidata dump and implement the above tools for working with it, but you can take a further step. If you have the capacity and resources to do so, you can host your own instance of the Wikidata Query Service and query it as much as you like, out of contention with any others.
To set up your own query service, follow these instructions from the query service team, which include procuring your own local copy of the data. You may also find useful information in Adam Shorland's blog post on the topic.