Wikidata:Gegevenstoegang
Wikidata For Developers: Data access |
Wikidata bevat nu meer dan 100 miljoen items en meer dan 650.000 Lexemen, en deze aantallen zullen blijven groeien. Er zijn veel methoden beschikbaar om toegang te krijgen tot al die gegevens. Dit document legt ze uit en helpt potentiële gebruikers de beste methode te kiezen om aan hun behoeften te voldoen.
Het is cruciaal om een toegangsmethode te kiezen die u de gegevens geeft die u nodig hebt op de snelste, meest efficiënte manier, zonder Wikidata onnodig te belasten; Deze pagina is hier om u te helpen precies dat te doen.
Voordat we beginnen
De gegevens van Wikidata gebruiken
Wikidata biedt een breed scala aan algemene gegevens over alles onder de zon. Al die gegevens zijn gelicentieerd CC0, "Geen rechten voorbehouden", voor het publieke domein.
Wijzigingen in API's en andere methoden voor toegang tot Wikidata zijn onderworpen aan het Beleid stabiel interface. Gegevensbronnen op deze pagina zijn niet gegarandeerd om stabiele interfaces te zijn.
Wikimedia projecten
Dit document gaat over toegang tot gegevens van buiten Wikimedia-projecten. Als u gegevens van Wikidata moet presenteren in een ander Wikimedia-project, waar u parserfuncties, Lua en/of andere interne methoden kunt gebruiken, raadpleeg dan Hoe gegevens op Wikimedia-projecten te gebruiken.
Beste praktijk voor omgaan met gegevens
We bieden de gegevens in Wikidata vrij aan en zonder vereiste voor naamsvermelding onder CC-0. In ruil daarvoor zouden we het zeer op prijs stellen als u in uw project Wikidata noemt als de oorsprong van uw gegevens. Door dit te doen, helpt u ervoor te zorgen dat Wikidata lang blijft bestaan om up-to-date en hoogwaardige gegevens te leveren. We promoten ook de beste projecten die de gegevens van Wikidata gebruiken.
Enkele voorbeelden voor het toeschrijven van Wikidata: "Powered by Wikidata", "Powered by Wikidata data", "Powered by the magic of Wikidata", "Using Wikidata data", "With data from Wikidata", "Data from Wikidata", "Source: Wikidata", "Including data from Wikidata" enzovoort. U kunt ook een van onze kant-en-klare bestanden gebruiken.
U mag het hierboven getoonde Wikidata-logo gebruiken, maar daarbij mag u op geen enkele manier goedkeuring door Wikidata of door de Wikimedia Foundation impliceren.
Bied uw gebruikers een manier om problemen in de gegevens te melden en een manier te vinden om dit terug te koppelen naar de redacteursgemeenschap van Wikidata, bijvoorbeeld via Mismatch Finder. Deel de locatie waar u deze problemen verzamelt op de Projectchat.
Beste praktijk voor toegang tot de gegevens
Neem bij het openen van de gegevens van Wikidata het volgende in acht:
- Volg het User-Agent-beleid - stuur een goede User-Agent-header.
- Volg het robotbeleid: stuur
Accept-Encoding: gzip,deflate
en doe niet te veel verzoeken tegelijk. - Als u het antwoord 429 krijgt, te veel verzoeken, stop dan even met het verzenden van verdere verzoeken (zie de response header Opnieuw proberen)
- Stel indien beschikbaar (zoals bij de Wikidata Query Service) de laagste time-out in die zinvol is voor uw gegevens.
- Bij het gebruik van de MediaWiki Action API, maak vrijwillig gebruik van de parameter
maxlag
en raadpleeg de rest van de richtlijnen in API:Etiquette.
Zoeken
Wat is dit?
Wikidata biedt een Elasticsearch index voor traditionele zoekopdrachten via haar data: Special:Search
Wanneer moet ik het gebruiken?
Gebruik Zoeken wanneer u naar een tekenreeks moet zoeken of wanneer u de namen kent van de entiteiten die u zoekt, maar niet de exacte entiteiten zelf. Het is ook geschikt voor gevallen waarin u uw zoekopdracht kunt specificeren op basis van enkele zeer eenvoudige relaties in de gegevens.
Gebruik geen zoekopdracht wanneer de relaties in uw gegevens beter als complex worden beschreven.
Details
U kunt uw zoekopdracht krachtiger maken met deze extra trefwoorden die specifiek zijn voor Wikidata: haswbstatement
, inlabel
, wbstatementquantity
, hasdescription
, haslabel
. Deze zoekfunctionaliteit is gedocumenteerd op de CirrusSearch extensiepagina. Het heeft ook zijn eigen API-actie.
Gelinkte Data Interface (URI)
Wat is dit?
De gelinkte datainterface biedt toegang tot individuele entiteiten via URI: http://www.wikidata.org/entity/Q???
Wanneer moet ik het gebruiken?
Gebruik de interface voor gekoppelde gegevens wanneer u individuele, volledige entiteiten wilt verkrijgen die u al kent.
Gebruik het niet als u niet duidelijk weet welke entiteiten u nodig heeft, probeer eerst te zoeken of de query's te gebruiken. Het is ook niet geschikt voor het opvragen van grote hoeveelheden gegevens.
Details
Elk item of eigenschap heeft een persistente uniform resource identifier die bestaat uit de Wikidata concept namespace en het Item of Property-ID (bijv. Q42
, P31
) evenals concrete gegevens die kunnen worden benaderd van de gegevens van dat item of eigenschap.
De naamruimte voor Wikidata's gegevens over entiteiten is https://wikidata.org/wiki/Special:EntityData
.
Als u het id van een entiteit aan dit voorvoegsel toevoegt (u kunt kortweg /entity/
gebruiken), wordt de abstracte (indelingsneutrale) vorm van de gegevens-URL van de entiteit gemaakt. Bij het openen van een bron in de naamruimte Special:EntityData past de speciale pagina content negotiation toe om de uitvoerindeling te bepalen. Als u de bron in een browser hebt geopend, ziet u een HTML-pagina met gegevens over de entiteit, omdat webbrowsers de voorkeur geven aan HTML. Een gekoppelde gegevensclient ontvangt de entiteitsgegevens echter in een indeling zoals JSON of RDF - wat de client ook opgeeft in de HTTP Accept:
-header.
- Neem bijvoorbeeld dit concept URI voor Douglas Adams, het is een referentie naar de echte persoon, niet naar de concrete beschrijving van Wikidata:
http://www.wikidata.org/entity/Q42
- Als mens, wilt u waarschijnlijk toegang krijgen tot gegevens "over" Douglas Adams door het concept URI als een URL te gebruiken. Dit doet een HTTP-herleiding en stuurt de client naar de data-URL die de gegevens van Wikidata bevat "over" Douglas Adams: https://www.wikidata.org/wiki/Special:EntityData/Q42.
Wanneer u bijvoorbeeld dit moet omzeilen om niet-HTML-inhoud in een webbrowser te bekijken, kunt u het formaat van de entiteitsgegevens bepalen door de overeenkomstige uitbreiding aan de data-URL toe te voegen; voorbeelden zijn .json
, .rdf
, .ttl
, .nt
of .jsonld
. Bijvoorbeeld, https://www.wikidata.org/wiki/Special:EntityData/Q42.json
geeft Item Q42 in JSON-formaat.
Minder uitgebreide RDF-uitvoer
Standaard zijn de RDF-gegevens die de interface voor gekoppelde gegevens retourneert, op zichzelf volledig bedoeld, dus het bevat beschrijvingen van andere entiteiten waarnaar wordt verwezen. Als u die informatie wilt uitsluiten, kunt u de queryparameter ?flavor=dump
toevoegen aan de URL('s) die u aanvraagt.
Door &flavor
aan de URL toe te voegen, kunt u precies bepalen welk type gegevens worden gebruikt.
?flavor=dump
: De in de gegevens vermelde entiteiten worden niet beschreven.?flavor=simple
: Het geeft alleen verklaringen (best gerangschikte verklaringen zonder kwalificaties of referenties) samen met sitelinks en versie-informatie.?flavor=full
(default): Een argument "full" geeft alle gegevens terug. (U hoeft dit niet te specificeren, want het is de standaard.)
Als u meer inzicht wilt krijgen in wat elke optie precies inhoudt, kunt u de broncode bekijken.
Revisies en caching
U kunt specifieke revisies van een entiteit aanvragen met de queryparameter revision
: https://www.wikidata.org/wiki/Special:EntityData/Q42.json?revision=112
.
De volgende URL-formaten worden gebruikt door de gebruikersinterface en door de updater van de zoekdienst, respectievelijk, dus als u een van dezelfde URL-formaten gebruikt, is er een goede kans dat u snellere (cached) antwoorden krijgt:
- 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, zonder beschrijving van andere entiteiten)
Wikidata Query Service
Wat is dit?
De Wikidata Query Service (WDQS) is het eigen SPARQL-endpunt van Wikidata. Het geeft de resultaten van de queries die in de SPARQL-querytaal zijn gemaakt: https://query.wikidata.org
Wanneer moet ik het gebruiken?
Gebruik WDQS wanneer u alleen de kenmerken van uw gewenste gegevens kent.
Gebruik geen WDQS voor het zoeken op tekst of bij het fuzzy zoeken -- FILTER(REGEX(...)) is een geen patroon. (Gebruik in dergelijke gevallen Zoeken)
WDQS is ook niet geschikt wanneer uw gewenste gegevens waarschijnlijk veel zijn, een aanzienlijk percentage van alle Wikidata-gegevens. (In dergelijke gevallen kan u een dump gebruiken.)
Details
U kunt de gegevens in Wikidata opvragen via ons SPARQL-endpoint, de Wikidata Query Service. De dienst kan zowel als een interactieve webinterface worden gebruikt, of via een programma door GET
of POST
aanvragen naar https://query.wikidata.org/sparql
te verzenden.
De queryservice kan het beste worden gebruikt wanneer uw beoogde resultatenset een beperkt bereik heeft, d.w.z. wanneer u een query hebt waarvan u vrij zeker weet dat deze uw resulterende gegevensset al nauwkeurig specificeert. Als uw idee van de resultatenset minder goed is gedefinieerd, lijkt het soort werk dat u tegen de queryservice gaat doen meer op een zoekopdracht; Vaak moet u eerst dit soort zoekgerelateerd werk doen om uw zoekopdracht aan te scherpen. Zie de Zoeken sectie.
Eindpunt van gekoppelde gegevensfragmenten
Wat is dit?
Het eindpunt van de Linked Data Fragments (LDF) is een meer experimentele methode om toegang te krijgen tot Wikidata's gegevens door patronen in drievoudige afbeeldingen te specificeren: https://query.wikidata.org/bigdata/ldf
. De berekening vindt voornamelijk plaats aan de klantzijde.
Wanneer moet ik het gebruiken?
Gebruik het LDF-eindpunt wanneer u de gegevens die u zoekt kunt definiëren met behulp van drievoudige patronen en wanneer uw resultatenset waarschijnlijk vrij groot is. Het eindpunt is goed te gebruiken wanneer uw computer over aanzienlijke rekenkracht beschikt.
Omdat het experimenteel is, gebruikt u het LDF-endpoint niet als u een absoluut stabiel eindpunt of een strikt compleet resultaat nodig hebt. En zoals eerder vermeld, gebruik het alleen als er voldoende rekenkracht beschikbaar is, omdat het rekenkracht aan de klantzijde vraagt.
Details
Als u gedeeltelijke informatie hebt over wat u zoekt, zoals wanneer u twee van de drie componenten van uw tripel(s) heeft, kunt u vinden wat u zoekt door de interface gelinkte gegevensfragmenten te gebruiken voor https://query.wikidata.org/bigdata/ldf
. Zie de gebruikershandleiding en gemeenschapspagina's voor meer informatie.
Wikibase REST API
Wat is dit?
De Wikibase REST API is een op OpenAPI gebaseerde interface waarmee gebruikers kunnen communiceren met, ophalen en bewerken van items en instructies op Wikibase-instanties - inclusief natuurlijk Wikidata: Wikidata REST API
Wanneer moet ik het gebruiken?
De Wikibase REST API is nog in ontwikkeling, maar voor Wikidata is het de bedoeling om de Action API te vervangen omdat het een speciale interface is die speciaal voor Wikibase/Wikidata is gemaakt.
De use-cases voor de Action API zijn ook van toepassing op de Wikibase REST API. Gebruik het wanneer uw werk betreft:
- Wikidata bewerken
- Het verkrijgen van directe gegevens over entiteiten
Gebruik de Wikibase REST API niet als het resultaat waarschijnlijk groot is. Overweeg in dergelijke gevallen een dump.
Het is beter om de Wikibase REST API niet te gebruiken als het u resultaat van de API-aanvraag verder moet beperken. In sommige gevallen is het beter om uw werk te omschrijven als zoeken (voor Elasticsearch) of een query (voor WDQS).
Details
De Wikibase REST API heeft OpenAPI documentatie met behulp van Swagger. U kunt ook de ontwikkelaardocumentatie bekijken.
MediaWiki Action API
Wat is dit?
De Wikidata API is de eigen Action API van MediaWiki, uitgebreid om enkele Wikibase-specifieke acties te omvatten: https://wikidata.org/w/api.php
Wanneer moet ik het gebruiken?
Gebruik de API wanneer uw werk betreft:
- Wikidata bewerken
- Het verkrijgen van gegevens over entiteiten zelf, zoals hun revisie-geschiedenis
- Het verkrijgen van alle gegevens van een entiteit in JSON-formaat, in kleine groepen entiteiten (tot 50 entiteiten per verzoek).
Gebruik de Wikibase REST API niet als het resultaat waarschijnlijk groot is. Overweeg in dergelijke gevallen een dump.
De API is ook slecht geschikt voor situaties waarin u de huidige staat van entiteiten in JSON wilt aanvragen. (Voor dergelijke gevallen overweeg het gebruik van de #Linked Data Interface, deze interface geeft waarschijnlijk sneller een antwoord. )
Ten slotte is het waarschijnlijk een slecht idee om de API te gebruiken als u het resultaat van de API-aanvraag verder moet beperken. In dergelijke gevallen is het beter om uw werk te omschrijven als zoeken (voor Elasticsearch) of een query (voor WDQS).
Details
De MediaWiki Action API die wordt gebruikt voor Wikidata is nauwkeurig gedocumenteerd op de API-pagina van Wikidata. U kunt het met de API Zandbak verkennen en ermee experimenteren.
Bots
U kunt ook toegang krijgen tot de API met behulp van een bot. Voor meer informatie over bots, zie Wikidata:Bots.
Recent Changes stream
Wat is dit?
De Recent Changes stream biedt een continue stroom van wijzigingen van alle Wikimedia wiki's, waaronder Wikidata: https://stream.wikimedia.org
Wanneer moet ik het gebruiken?
Gebruik deze stream wanneer uw project vraagt om in realtime te reageren op veranderingen of wanneer u alle laatste veranderingen nodig hebt die komen van Wikidata – bijvoorbeeld wanneer u uw eigen query service uitvoert.
Details
Deze stream bevat alle updates van alle wiki's met behulp van het server-sent events protocol. U moet de updates van Wikidata filteren aan de klantzijde.
U kunt de webinterface op stream.wikimedia.org vinden en alles erover lezen op de pagina EventEventStreams.
Dumps
Wat is dit?
Een Wikidata dump is een volledige export van alle entiteiten in Wikidata: https://dumps.wikimedia.org
Wanneer moet ik ze gebruiken?
Gebruik een dump wanneer uw resultaat waarschijnlijk erg groot is. Een dump is ook belangrijk bij het opzetten van een eigen query service.
Gebruik geen dump als actuele gegevens nodig hebt: het exporteren duurt lang en het synchroniseren met de eigen query service zelfs langer. Een dump is ook niet geschikt wanneer u aanzienlijke beperkingen heeft op uw beschikbare bandbreedte, opslagruimte en/of rekenkracht.
Details
Als u veel records moet overzetten, of als uw resultaatset waarschijnlijk erg groot is, is het tijd om te overwegen om te werken met een database dump: (link naar de laatste volledige dump).
U vindt gedetailleerde documentatie over alle Wikimedia-dumps op de pagina "Data dumps" op Meta en Wikidata-dumps in het bijzonder op de pagina download van de database.
Hulpmiddelen
- JsonDumpReader is een PHP-bibliotheek voor het lezen van dumps.
- Bij [1] vindt u een bibliotheek Go voor het verwerken van Wikipedia en Wikidata dumps.
- U kunt wdumper gebruiken om gedeeltelijke aangepaste RDF-dumps te krijgen.
Lokale query service
Het is geen kleine taak om een Wikidata-dump te verkrijgen en de bovenstaande hulpmiddelen te implementeren om ermee te werken, maar u kunt een stap verder gaan. Als u de capaciteit en middelen hebt om dit te doen, kunt u uw eigen voorbeeld van de Wikidata Query Service hosten en zo veel u wilt vragen, zonder conflicten met anderen.
Om uw eigen query service op te zetten, volg de instructies van het query service team, waaronder het verkrijgen van uw eigen lokale kopie van de gegevens. U kunt ook nuttige informatie vinden in de blogpost van Adam Shorland over het onderwerp.