Skip to content

maxlath/wikibase-sdk

Repository files navigation

Image for: Repository files navigation

wikibase-sdk

JS utils functions to query a Wikibase instance and simplify its results

This package was primarily developed as wikidata-sdk but has now being generalized to support any Wikibase instance: wikidata.org among others.

This project received a Wikimedia Project Grant.

         

Summary

Image for: Summary

Changelog

Image for: Changelog

See CHANGELOG.md for version info

Dependencies

Image for: Dependencies

This module uses JavaScript ES6, which means NodeJS >= v6.4.0 or not too outdated web browsers.

For older version, you can use ES5 bundles.

Install

Image for: Install

as a module

Install via npm to be able to use the module with require (CommonJS) or import (ES6 Modules)

npm install wikibase-sdk

Then in your javascript:

const WBK = require('wikibase-sdk')
const wbk = WBK({
  instance: 'https://my-wikibase-instan.se',
  sparqlEndpoint: 'https://query.my-wikibase-instan.se/sparql' // Required to use `sparqlQuery` and `getReverseClaims` functions, optional otherwise
})

The wdk object of previous versions of this documentation - from the time this module was bound to wikidata.org only - thus corresponds to the following:

const WBK = require('wikibase-sdk')
const wdk = WBK({
  instance: 'https://www.wikidata.org',
  sparqlEndpoint: 'https://query.wikidata.org/sparql'
})

For convenience, and for the sake of retro-compatibility, that same wdk object can be obtain directly from the wikidata-sdk package:

// After having run `npm install wikidata-sdk`
const wdk = require('wikidata-sdk')

and instance-independant helper functions are directly available from the module root:

const { simplify, parse, isEntityId, isPropertyId, ... } = require('wikibase-sdk')

By default wikibase-sdk assumes that your Wikibase instance has $wgScriptPath set to /w, but if that's not the case, you can set it by passing a wgScriptPath parameter:

const wbk = require('wikibase-sdk')({
  instance: 'https://my-wikibase-instan.se',
  wgScriptPath: '/some_custom_script_path'
})

download pre-bundled files

If you just want to import the lib from an HTML file and don't have a setup that can import with CommonJS or ES6 Modules, you can simply download those pre-bundled files:

wget https://raw.githubusercontent.com/maxlath/wikibase-sdk/dist/dist/wikibase-sdk.js
wget https://raw.githubusercontent.com/maxlath/wikibase-sdk/dist/dist/wikidata-sdk.js
wget https://raw.githubusercontent.com/maxlath/wikibase-sdk/dist/dist/wikibase-sdk.min.js
wget https://raw.githubusercontent.com/maxlath/wikibase-sdk/dist/dist/wikidata-sdk.min.js

then you can import it in your html:

<script src="/path/to/wikibase-sdk.js"></script>
<script>console.log('can access WBK', WBK)</script>
<script src="/path/to/wikidata-sdk.js"></script>
<script>console.log('can access wdk, the wikidata.org bound product of WBK', wdk)</script>

Features

Image for: Features

Wikibase API

A set of functions to make read queries to a Wikibase instance API (see Wikidata API documentation). For write operations, see wikibase-edit.

Wikibase Query

There are additional functions for Wikibase instances that have a SPARQL Query Service (such as Wikidata Query for wikidata.org). SPARQL can be a weird thing at first, but the Wikidata team and community really puts lots of efforts to make things easy with a super rich Wikidata Query Help page, an awesome tool to test you queries and visualize the result, and lots of examples!

General helpers

Contributing

Image for: Contributing

Context

This library had for primary purpose to serve the needs of the inventaire project but extending its capabilities to other needs it totally possible: feel welcome to post your suggestions as issues or pull requests!

Design constraints

  • wikibase-sdk should stay "small" and dependency-free, so that a web application can include it in its bundle without paying a too high cost for it. A consequence is that the lib generates URLs where other libs would integrate doing the request and parsing it's response. But that actually feels quite right to do this way: simply generating the URLs let's users free to handle requests as they like (with callbacks, promises, async/await, whatever!)
  • Therefore, it should focus on providing basic, general helper functions most application working with a Wikibase instance would need.
  • Write operations should go into wikibase-edit as it involves working with Wikibase credentials/tokens.
  • General command-line interface tools should go to wikibase-cli, very specific ones — wikidata-filter, import-wikidata-dump-to-couchdb, and alikes — should get their own modules.

See Also

Image for: See Also

You may also like

Image for: You may also like

Do you know Inventaire? It's a web app to share books with your friends, built on top of Wikidata! And its libre software too.

License

Image for: License

MIT

About

Image for: About

JS utils functions to query a Wikibase instance and simplify its results

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Image for: Sponsor this project

Packages

Image for: Packages 0
No packages published

Contributors 17

Image for: Contributors 17

Languages

Image for: Languages