Skip to content

MediaWiki extension to run SPARQL queries and template their results via Lua

License

Notifications You must be signed in to change notification settings

ProfessionalWiki/SPARQL

Repository files navigation

SPARQL

GitHub Workflow Status Type Coverage Psalm level Latest Stable Version Download count License

MediaWiki extension for executing SPARQL queries and templating their results via Lua.

Professional.Wiki created and maintains SPARQL. We provide Wikibase hosting, Wikibase development, MediaWiki development, and Wikibase consulting.

Table of Contents

Usage Documentation

Define a lua module that requires the SPARQL binding and uses its runQuery method.

Example: create page Module:MySPARQL:

local sparql = require('SPARQL') -- Load the SPARQL binding

local p = {}

function p.showFirstValue(frame)
  local sparqlQuery = frame.args[1]
  local queryResults = sparql.runQuery(sparqlQuery) -- Use the runQuery method

  local firstColName = queryResults['head']['vars'][0]
  return queryResults['results']['bindings'][0][firstColName]['value']

end

return p

Which can then be invoked via Scribunto's normal mechanisms from within wikitext. Example:

{{#invoke:MySPARQL|showFirstValue|your SPARQL query here}}

Lua module examples:

Installation

Platform requirements:

We also recommend installing the CodeEditor extension for a better editing experience of Lua modules.

Installing The SPARQL Extension

The recommended way to install the SPARQL extension is using Composer with MediaWiki's built-in support for Composer.

On the commandline, go to your wikis root directory. Then run these two commands:

COMPOSER=composer.local.json composer require --no-update professional-wiki/sparql:~1.0
composer update professional-wiki/sparql --no-dev -o

Then enable the extension by adding the following to the bottom of your wikis LocalSettings.php file:

wfLoadExtension( 'SPARQL' );

You can verify the extension was enabled successfully by opening your wikis Special:Version page.

PHP Configuration

Configuration can be changed via LocalSettings.php.

SPARQL Endpoint URL

Variable: $wgSPARQLEndpoint

Required for the extension to function. You can enable the extension without setting this variable without breaking your wiki, but the extension will not work.

Example:

$wgSPARQLEndpoint = 'https://query.portal.mardi4nfdi.de/proxy/wdqs/bigdata/namespace/wdq/sparql';

Development

Run composer install in extensions/SPARQL/ to make the code quality tools available.

Running Tests and CI Checks

You can use the Makefile by running make commands in the SPARQL directory.

  • make ci: Run everything
  • make test: Run all tests
  • make phpunit --filter FooBar: run only PHPUnit tests with FooBar in their name
  • make phpcs: Run all style checks
  • make cs: Run all style checks and static analysis

Updating Baseline Files

Sometimes Psalm and PHPStan generate errors or warnings we do not wish to fix. These can be ignored by adding them to the respective baseline file. You can update these files with make stan-baseline and make psalm-baseline.

Release Notes

Version 1.0.0 - 2023-11-24

  • Lua binding SPARQL.runQuery to execute SPARQL queries and return the results as a Lua table
  • Compatibility with MediaWiki 1.39, 1.40 and 1.41
  • Compatibility with PHP 8.1 and 8.2