Wikidata:Akses data
Wikidata untuk Pengembang: Akses data |
Wikidata saat ini menyimpan lebih dari 110 juta butir data dan lebih dari 1,5 juta butir leksem yang akan terus bertambah. Terdapat ragam metode untuk mengakses semua data yang disimpan di dalam Wikidata-halaman ini akna menjabarkan metode-metode tersebut dan membantu para pengguna memilih metode terbaik sesuai dengan kebutuhan mereka.
Memilih metode akses data adalah hal yang penting untuk mendapatkan data yang dibutuhkan dalam cara yang tercepat dan paling efisien tanpa harus membebani sistem Wikidata; halaman ini berisi cara untuk melakukan hal tersebut.
Sebelum memulai
Penggunaan data dari Wikidata
Wikidata menyimpan data umum mengenai ragam hal. Semua data tersebut dilisensikan CC0, tidak memiliki hak cipta, untuk domain publik.
Perubahan yang terjadi pada API dan metode akses data lain mengikuti Kebijakan Antarmuka Stabil. Sumber data yang dicantumkan pada halaman ini tidak dijamin mengikuti kebijakan antarmuka yang stabil.
Proyek-proyek Wikimedia
Halaman ini menjelaskan perihal akses data dari luar proyek Wikimedia. Untuk penggunaan data dari Wikidata dalam proyek Wikimedia lainnya dapat menggunakan metode akses fungsi parser, bahasa Lua dan/atau metode khusus internal lainnya, lebih lanjut lihat cara menggunakan data di proyek Wikimedia.
Praktik terbaik penggunaan data Wikidata
Data di Wikidata disajikan secara bebas dan tanpa persyaratan atribusi di bawah aturan lisensi CC-0. Sebagai timbal balik dari keterbukaan akses ini, akan sangat dihargai apabila, dalam proyek Anda, Anda menyebut Wikidata sebagai sumber data yang digunakan. Dengan melakukan itu, Anda membantu memastikan bahwa Wikidata akan bertahan lama untuk menyediakan data terkini dan berkualitas tinggi. Wikidata juga akan mempromosikan proyek terbaik yang menggunakan data Wikidata.
Beberapa contoh praktik atribusi Wikidata: "Powered by Wikidata" ("Didukung oleh Wikidata"), "Powered by Wikidata data" ("Didukung oleh data Wikidata"), "Powered by the magic of Wikidata" ("Didukung oleh keajaiban Wikidata"), "Using Wikidata data" ("Menggunakan data Wikidata"), "With data from Wikidata" ("Dengan data dari Wikidata"), "Data from Wikidata" ("Data dari Wikidata"), "Source: Wikidata" ("Sumber: Wikidata"), "Including data from Wikidata" ("Termasuk data dari Wikidata") dan sebagainya. Anda juga dapat menggunakan salah satu dari berkas siap pakai.
Anda dapat menggunakan logo Wikidata yang disajikan di atas, namun dengan batasan Anda tidak diperkenankan untuk menyatakan bahwa proyek Anda dipromosikan oleh pihak penyelenggara Wikidata atau oleh Yayasan Wikimedia dengan cara apa pun.
Harap tawarkan kepada pengguna Anda cara untuk melaporkan masalah dalam data, dan temukan cara untuk menyampaikan laporan ini kembali ke komunitas penyuntin Wikidata, semisal melalui perkakas Mismatch Finder (Pencari Ketidakcocokan). Harap bagikan lokasi Anda menampung laporan-laporan ini di halaman Warung Kopi.
Praktik terbaik untuk akses data
Dalam mengakses data Wikidata, cobalah ikuti contoh praktik terbaik (best practices) sebagai berikut:
- Patuhi kebijakan Agen-Pengguna (User-Agent policy) -- kirimkan tajuk (header) Agen-Pengguna yang baik.
- Ikuti kebijakan robot: kirim
Accept-Encoding: gzip,deflate
dan hindari mengirim terlalu banyak permintaan (request) akses data sekaligus. - Jika Anda mendapatkan respon 429 Too Many Requests (429 Terlalu Banyak Permintaan), hentikan pengiriman permintaan lebih lanjut untuk sementara waktu (lihat tajuk respon Retry-After)
- Tetapkan batas waktu (timeout) terendah yang sesuai dengan ukuran data Anda bila tersedia (seperti dalam penggunaan Layanan Kueri Wikidata).
- Saat menggunakan MediaWiki Action API, manfaatkan secara bebas parameter
maxlag
dan perhatikan panduan lain yang tercantum dalam API:Etiket.
Pencarian
Apa itu?
Wikidata menyediakan indeks Elasticsearch untuk pencarian tradisional data: Special:Search
Kapan menggunakannya?
Gunakan fungsi pencarian tradisional saat Anda perlu mencari untai teks, atau saat Anda mengetahui nama entitas yang Anda cari tetapi bukan entitas tepatnya. Pencarian ini juga cocok untuk kasus di mana Anda dapat menentukan pencarian berdasarkan beberapa relasi yang sangat sederhana dalam data.
Jangan gunakan pencarian tradisional saat relasi dalam data Anda bersifat kompleks.
Rincian
Anda dapat membuat pencarian Anda lebih efektif dengan menggunakan kata kunci tambahan khusus untuk Wikidata: haswbstatement
, inlabel
, wbstatementquantity
, hasdescription
, haslabel
. Fungsi pencarian ini didokumentasikan di halaman ekstensi CirrusSearch. Ia juga memiliki API Action sendiri.
Antarmuka Data Tertaut (URI: Uniform Resource Identifier)
Apa itu?
Antarmuka Data Tertaut menyediakan akses ke entitas individu melalui format URI: http://www.wikidata.org/entity/Q???
. URI tersebut disebut dengan URI konsep. Perlu diperhatikan bahwa URI konsep menggunakan protokol HTTP, dan bukan HTTPS.
Kapan menggunakannya?
Gunakan Antarmuka Data Tertaut saat Anda perlu mendapatkan entitas individual lengkap yang sudah Anda ketahui.
Jangan menggunakannya saat Anda tidak memiliki informasi yang jelas mengenai entitas mana yang Anda perlukan -- coba telusuri atau ajukan kueri terlebih dahulu. Antarmuka Data Tertaut juga tidak tepat digunakan untuk mengirimkan permintaan data dalam kuantitas yang besar.
Rincian
Setiap Butir (Item) atau Atribut (Property) memiliki URI bersifat persisten yang dibuat dari ruangnama konsep
(concept namespace) Wikidata dan penanda (identifier atau ID) Butir atau Atribut (mis., Q42
, P31
) serta data konkret yang dapat diakses oleh data URL dari Butir atau Atribut tersebut.
Ruangnama untuk data Wikidata perihal entitas adalah https://wikidata.org/wiki/Special:EntityData
.
Menambahkan penanda entitas ke awalan ini (prefix; untuk menyingkatnya Anda dapat menggunakan /entity/
) membuat bentuk abstrak (berformat netral) dari URL data entitas. Saat mengakses sebuah sumber daya di ruangnama Special:EntityData, halaman khusus tersebut menerapkan negosiasi konten untuk menentukan format luaran. Saat Anda membuka sumber daya di peramban, Anda akan melihat halaman HTML yang berisi data tentang entitas, karena peramban web disesuaikan untuk menyajikan HTML. Namun, suatu klien data tertaut akan menerima data entitas dalam format seperti JSON atau RDF -- atau format yang dispesifikasikan oleh klien dalam tajuk HTTP Accept:
.
- Sebagai contoh, konsep URI untuk Douglas Adams -- mengacu pada orang bernama Douglas Adams di dunia nyata, bukan pada deskripsi konkret yang disajikan di Wikidata:
http://www.wikidata.org/entity/Q42
- Sebagai manusia dengan mata dan menggunakan peramban, Anda mungkin ingin mengakses data tentang Douglas Adams dengan menggunakan konsep URI sebagai URL. Melakukan hal itu akan memicu protokol HTTP untuk mengalihkan permintaan dan meneruskan klien (peramban Anda) ke URL data yang berisi data Wikidata tentang Douglas Adams: https://www.wikidata.org/wiki/Special:EntityData/Q42. Secara singkat dapat diringkas, bahwa URI Konsep mewakili objek nyata, sedang URL merupakan alamat di mana data tentang representasi objek tersebut disimpan.
Saat Anda perlu melewati proses negosiasi konten, misalnya, untuk melihat konten non-HTML di peramban Anda, Anda bisa menentukan format data entitas dengan menambahkan ekstensi yang sesuai ke URL data; contohnya seperti .json
, .rdf
, .ttl
, .nt
atau .jsonld
. Misalnya, https://www.wikidata.org/wiki/Special:EntityData/Q42.json
menyajikan data dari butir Q42 dalam format JSON.
Luaran RDF yang tidak terlalu panjang
Secara bawaan sistem, data RDF yang disajikan oleh antarmuka Data Tertaut adalah lengkap dengan sendirinya, sehingga data tersebut ikut menyertakan deskripsi entitas lain yang dirujuknya. Jika Anda tidak ingin menyertakan deskripsi tersebut, Anda dapat menambahkan parameter kueri ?flavor=dump
ke URL yang Anda minta.
Dengan menambahkan &flavor
ke URL, Anda dapat mengatur jenis data yang akan Anda terima.
?flavor=dump
: Tidak menyertakan deskripsi entitas yang dirujuk dalam data.?flavor=simple
: Hanya memberikan pernyataan yang benar (pernyataan dengan peringkat terbaik tanpa pewatas-pewatas atau referensi-referensi), beserta tautan situs dan informasi versi.?flavor=full
(default): Argumen "penuh" (full) mengembalikan semua data kepada klien. (Argumen ini merupakan bawaan dari sistem, sehingga tidak perlu dispesifikasikan.)
Jika Anda ingin wawasan lebih dalam mengenai tiap opsi yang diberikan, Anda dapat merujuk ke kode sumber.
Revisi dan penyimpanan sementara (caching)
Anda dapat mengajukan revisi tertentu dari suatu entitas dengan menyertakan opsi revision
pada parameter kueri, sebagai contoh: https://www.wikidata.org/wiki/Special:EntityData/Q42.json?revision=112
.
Format URL berikut masing-masing digunakan oleh antarmuka pengguna dan oleh pembaru layanan kueri, sehingga jika Anda menggunakan salah satu format URL yang sama, kemungkinan besar Anda akan mendapatkan respons (yang berasal dari penyimpanan sementara/tembolok/cache) yang lebih cepat:
- 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, tanpa deskripsi entitas lain)
Layanan Kueri Wikidata
Apa itu?
Layanan Kueri Wikidata (Wikidata Query Service ; WDQS) adalah titik akhir (endpoint) SPARQL yang digunakan Wikidata. Ia mengembalikan hasil kueri yang dibuat dalam bahasa kueri SPARQL: https://query.wikidata.org
Kapan menggunakannya?
Gunakan WDQS saat Anda hanya memiliki informasi perihal karakteristik data yang diinginkan.
Hindari penggunaan WDQS untuk melakukan pencarian teks atau pencarian fuzzy -- seperti pencarian yang menggunakan fungsi FILTER(REGEX(...)) yang merupakan antipola. (Gunakan pencarian tradisional dalam kasus tersebut.)
WDQS juga tidak cocok bila data yang Anda inginkan kemungkinan berkuantitas besar, persentase yang besar dari semua data Wikidata. (Pertimbangkan untuk menggunakan pencarian timbunan dalam kasus seperti itu.)
Rincian
Anda dapat melakukan kueri data di Wikidata menggunakan endpoint SPARQL yang dilayan Wikidata, Layanan Kueri Wikidata. Layanan ini dapat digunakan sebagai antarmuka web interaktif, atau secara terprogram dengan mengirimkan permintaan GET
atau POST
ke https://query.wikidata.org/sparql
.
Layanan kueri paling baik digunakan saat rangkaian hasil yang Anda inginkan memiliki cakupan yang sempit, yaitu, saat Anda memiliki kueri, Anda cukup yakin bahwa kueri tersebut sudah memiliki spesifikasi data yang Anda butuhkan secara akurat. Jika gambaran Anda mengenai hasil kueri kurang terdefinisi dengan baik, maka jenis pekerjaan yang akan Anda lakukan terhadap layanan kueri akan lebih menyerupai pencarian; untuk mempertajam kueri Anda, Anda dapat melakukan pencarian untuk menentukan definisi kueri yang tepat. Lihat bagian Pencarian.
Sampai di sini perlu dipaparkan secara ringkas apa perbedaan kueri dan pencarian. Pencarian (atau Search) merupakan proses pencarian secara umum dan tanpa batasan menggunakan satu kata kunci. Sementara itu, Kueri merupakan proses pencarian yang lebih spesifik lagi menggunakan pola-pola yang telah ditentukan yang cocok dengan data yang kita cari. Semisal dalam kueri kita harus menentukan "syarat" butir yang kita cari: atribut yang ia miliki, dan nilai yang terhubung dengan atribut tersebut.
Titik akhir Fragmen Data Tertaut (Linked Data Fragments endpoint)
Apa itu?
Titik akhir Fragmen Data Tertaut (Linked Data Fragments endpoint; LDF) adalah metode yang lebih eksperimental untuk mengakses data Wikidata dengan memberikan spesifikasi pola dalam bentuk tiga serangkai: https://query.wikidata.org/bigdata/ldf
. Komputasi dilakukan utamanya di sisi perangkat klien.
Kapan menggunakannya?
Gunakan titik akhir LDF saat Anda dapat menentukan data yang Anda cari menggunakan pola tiga serangkai (struktur data Wikidata: subjek - predikat - objek), dan saat kumpulan hasil Anda kemungkinan berkuantitas besar. Titik akhir LDF bagus untuk digunakan saat Anda memiliki daya komputasi yang signifikan pada perangkat Anda.
Karena sifat LDF yang eksperimental, hindari penggunaan titik akhir LDF bila Anda memerlukan titik akhir yang benar-benar stabil atau rangkaian hasil yang akurat dan lengkap. Dan sebagaimana yang telah disinggung sebelumnya, gunakan hanya jika Anda memiliki daya komputasi yang memadai, karena titik akhir LDF memindahkan komputasi ke sisi klien.
Rincian
Jika Anda memiliki informasi parsial tentang apa yang Anda cari, seperti ketika Anda hanya memiliki dua dari tiga serangkai struktur data, Anda dapat menemukan apa yang Anda cari dengan menggunakan antarmuka Linked Data Fragments di pranala https://query.wikidata.org/bigdata/ldf
. Untuk informasi lebih lanjut, Anda dapat mengakses panduan pengguna dan halaman komunitas.
Wikibase REST API
Apa itu?
Wikibase REST API adalah antarmuka berbasis OpenAPI yang memungkinkan pengguna untuk berinteraksi dengan, mengambil, dan menyunting butir atau pernyataan dari instans (instance) yang dibangun di atas perangkat lunak Wikibase - termasuk Wikidata. Informasi lebih lanjut lihat halaman Wikidata REST API.
Kapan menggunakannya?
Wikibase REST API masih dalam tahap pengembangan, tapi dalam konteks penggunaannya di Wikidata, Wikibase REST API dimaksudkan untuk mengganti fungsi Action API karena API tersebut adalah antarmuka yang dibuat hanya untuk Wikibase/Wikidata.
Kasus penggunaan Action API juga dapat diaplikasikan pada Wikibase REST API. Gunakan jika pekerjaan Anda melibatkan:
- Menyunting Wikidata
- Mengambil data langsung mengenai entitas itu sendiri
Hindari penggunaan Wikibase REST API jika kumpulan hasil yang Anda minta berukuran kemungkinan besar. (Pertimbangkan menggunakan metode dump pada kasus tersebut.)
Akan lebih baik tidak menggunakan Wikibase REST API jika Anda butuh mempersempit hasil dari permintaan API Anda. Pada kasus tersebut, lebih baik menggunakan pencarian tradisional (untuk Elasticsearch) atau kueri (untuk WDQS).
Rincian
REST API Wikibase memiliki dokumentasi OpenAPI yang menggunakan Swagger. Anda juga dapat meninjau dokumentasi untuk pengembang.
API Action dari MediaWiki
Apa itu?
Wikidata API adalah Action API yang disediakan oleh perangkat lunak MediaWiki, diperluas untuk menyertakan beberapa tindakan khusus Wikibase: https://wikidata.org/w/api.php
Kapan menggunakannya?
Gunakan API ini saat proyek Anda melibatkan:
- Menyunting Wikidata
- Mendapatkan data tentang entitas itu sendiri seperti riwayat revisinya
- Mendapatkan semua data entitas dalam format JSON, dalam kelompok-kelompok kecil entitas (satu permintaan dapat menanggung hingga 50 entitas).
Jangan gunakan API ini saat kumpulan hasil Anda kemungkinan besar. (Pertimbangkan untuk menggunakan timbunan dalam kasus seperti itu.)
API juga kurang cocok untuk situasi di mana Anda ingin meminta status entitas terbaru di JSON. (Untuk kasus seperti itu, pertimbangkan untuk menggunakan Antarmuka Data Tertaut, yang kemungkinan akan memberikan respons lebih cepat.)
Terakhir, API ini tidak cocok bila Anda harus lebih mempersempit hasil permintaan API Anda. Dalam kasus seperti itu, lebih baik membingkai pekerjaan Anda sebagai penelusuran tradisional (untuk Elasticsearch) atau kueri (untuk WDQS).
Rincian
MediaWiki Action API yang digunakan untuk Wikidata didokumentasikan dengan detail di halaman API Wikidata. Anda dapat menjelajahi dan bereksperimen dengannya menggunakan kotak pasir API.
Terdapat beberapa titik akhir (endpoint) spesifik Wikibase. Berikut beberapa contoh permintaan:
- pencarian wbsearchentities untuk New York, NY dengan limit=1 menghasilkan: New York City (Q60). Titik akhir ini penting karena cepat dan dapat digunakan sebagai sumber inferensi dalam perkakas dan aplikasi. Untuk butir yang telah terdefinisi dengan baik di Wikidata, titik akhir ini bekerja dengan sangat baik.
Bot
Anda juga dapat mengakses API dengan menggunakan perantara bot. Untuk informasi lebih lanjut mengenai bot, lihat Wikidata:Bots.
Siaran langsung Perubahan Terbaru
Apa itu?
Siaran Langsung Perubahan Terbaru (Recent Changes stream) menyediakan siaran pantauan perubahan berkelanjutan dari semua proyek wiki Wikimedia, termasuk Wikidata: https://stream.wikimedia.org
Kapan menggunakannya?
Gunakan siaran Perubahan Terbaru saat proyek Anda membutuhkan respon terhadap perubahan secara langsung (realtime) atau saat Anda memerlukan informasi perihal perubahan terbaru yang berasal dari Wikidata -- misalnya, saat menjalankan layanan kueri Anda sendiri.
Rincian
Siaran Perubahan Terbaru berisi semua pembaruan dari selurh proyek yang dilayan Wikimedia menggunakan protokol penanda peristiwa yang dikirim oleh peladen (Server-sent events). Anda perlu menyaring pembaruan dari sistem Wikidata di sisi perangkat klien.
Anda dapat menemukan antarmuka web untuk siaran di stream.wikimedia.org dan membaca seluruh informasi di halaman EventStreams.
Timbunan
Apakah mereka?
Timbunan Wikidata (Wikidata dumps) adalah ekspor secara lengkap dari semua Entitas di Wikidata: https://dumps.wikimedia.org
Kapan menggunakan mereka?
Gunakan timbunan saat kumpulan hasil Anda cenderung sangat besar. Anda juga akan menemukan log timbunan penting saat menyiapkan layanan kueri Anda sendiri.
Jangan gunakan timbunan jika Anda memerlukan data versi terbaru: timbunan memerlukan waktu yang sangat lama untuk mengekspor data dan membutuhkan waktu lebih lama lagi untuk menyinkronkan data tersebut ke layanan kueri Anda sendiri. Timbunan juga tidak cocok jika Anda memiliki keterbatasan yang signifikan pada bandwidth, ruang penyimpanan, dan/atau daya komputasi pada perangkat Anda.
Rincian
Jika permintaan Anda membutuhkan Wikidata untuk memeriksa konten yang banyak, atau jika kumpulan hasil Anda cenderung sangat besar, saatnya untuk mempertimbangkan bekerja dengan timbunan basis data (database dump): (tautan ke timbunan lengkap terbaru).
Anda akan menemukan dokumentasi terperinci tentang semua timbunan dari sistem Wikimedia pada halaman "Timbunan Data" di situs Meta Wikimedia dan tentang timbunan Wikidata khususnya di halaman pengunduhan basis data. Lihat juga Flavoured_dumps di atas.
Perkakas
- JsonDumpReader adalah pustaka PHP untuk membaca timbunan.
- Pada [1] Anda dapat menemukan pustaka Go untuk memproses tumpukan Wikipedia dan Wikidata.
- Anda dapat menggunakan perkakas wdumper untuk mendapatkan timbunan RDF khusus sebagian.
Layanan kueri lokal
Bukan tugas kecil untuk memperoleh timbunan Wikidata dan mengimplementasikan perkakas di atas untuk memproses timbunan tersebut. Akan tetapi Anda dapat mengambil langkah lebih jauh. Jika Anda memiliki kapasitas dan sumber daya untuk melakukannya, Anda dapat meladen (hosting) instans Layanan Kueri Wikidata Anda sendiri dan melakukan kueri pada instans tersebut sebanyak yang Anda suka, agar tidak berebutan sumber daya dengan pengguna lain.
Untuk menyiapkan layanan kueri Anda sendiri, ikuti petunjuk ini yang disediakan oleh tim layanan kueri, yang mencakup pengadaan salinan data lokal Anda sendiri. Anda juga dapat menemukan informasi berguna di tulisan blog Adam Shorland tentang topik tersebut.