SPARQL to datanamespace project (autumn 2022)

Description
Web tool executes a SPARQL query and saves the result to wikipage. SPARQL query and target page is defined in the link which opens the tool. After the tool is opened, the tool shows the link to query.wikidata.org where the query can be previewed. The user can execute the query, and tool will save the result to wikipage. After the save tool will show if the saving was successful and the link to the wikipage in Tabular Data format.

Similar tools
ListeriaBot is to show what the use case for the tool is.


 * ListeriaBot
 * Example usage
 * en:User:Zache/Listeria_bot_example
 * https://en.wikipedia.org/wiki/Template:Wikidata_list


 * Complex usage example
 * en:Wikipedia:WikiProject Women in Red/Awards/Bulgaria

Licence to be used and revision control

 * Licence: (some open source licence, in example w:MIT Licence)
 * Revision control: (some public revision control such as Github)

Url parameters

 * wikipage = target page in Beta Commons
 * sparql = SPARQL-query

Example SPARQL query

 * Open Query in the web interface
 * https://query.wikidata.org/#%23Population%20in%20Finland%20after%201960%0ASELECT%20%20%3Fitem%0A%20%20%20%20%20%20%20%20%3FitemLabel%0A%20%20%20%20%20%20%20%20%28YEAR%28%3Fdate%29%20as%20%3Fyear%29%0A%20%20%20%20%20%20%20%20%3Fpopulation%20%0AWHERE%0A%7B%0A%20%20%20%20%20%20%20%20BIND%28wd%3AQ33%20as%20%3Fitem%29%0A%20%20%20%20%20%20%20%20%3Fitem%20p%3AP1082%20%3FpopulationStatement%20.%0A%20%20%20%20%20%20%20%20%3FpopulationStatement%20%20%20%20ps%3AP1082%20%3Fpopulation%0A%20%20%20%20%20%20%20%20%3B%20pq%3AP585%20%3Fdate%20.%0A%20%20%20%20%20%20%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20FILTER%20%28YEAR%28%3Fdate%29%20%3E%3D%201960%29%0A%7D%0AORDER%20BY%20%3FobjectLabel%20%3Fyear


 * Execute the query and get result in JSON format
 * https://query.wikidata.org/sparql?format=json&query=%23Population%20in%20Finland%20after%201960%0ASELECT%20%20%3Fitem%0A%20%20%20%20%20%20%20%20%3FitemLabel%0A%20%20%20%20%20%20%20%20(YEAR(%3Fdate)%20as%20%3Fyear)%0A%20%20%20%20%20%20%20%20%3Fpopulation%20%0AWHERE%0A%7B%0A%20%20%20%20%20%20%20%20BIND(wd%3AQ33%20as%20%3Fitem)%0A%20%20%20%20%20%20%20%20%3Fitem%20p%3AP1082%20%3FpopulationStatement%20.%0A%20%20%20%20%20%20%20%20%3FpopulationStatement%20%20%20%20ps%3AP1082%20%3Fpopulation%0A%20%20%20%20%20%20%20%20%3B%20pq%3AP585%20%3Fdate%20.%0A%20%20%20%20%20%20%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20FILTER%20(YEAR(%3Fdate)%20%3E%3D%201960)%0A%7D%0AORDER%20BY%20%3FobjectLabel%20%3Fyear

Output
The result should be stored to Beta commons to the page defined in parameter  in Tabular Data format.
 * mw:Help:Tabular_Data
 * https://commons.wikimedia.beta.wmflabs.org/wiki/Data:Sample.tab


 * Notes
 * In the commons data namespace, stored data needs to be formatted to a two-dimensional array.
 * Following datatypes should be handled when saving values as tabular data
 * Float and integers = number
 * Boolean = boolean
 * any other = string

Sample for tabular data JSON
{ "head" : { "vars" : [ "item", "itemLabel", "year", "population" ] }, "results" : { "bindings" : [ { "item" : { "type" : "uri", "value" : "http://www.wikidata.org/entity/Q33" },     "itemLabel" : { "xml:lang" : "en", "type" : "literal", "value" : "Finland" },     "population" : { "datatype" : "http://www.w3.org/2001/XMLSchema#decimal", "type" : "literal", "value" : "4429634" },     "year" : { "datatype" : "http://www.w3.org/2001/XMLSchema#integer", "type" : "literal", "value" : "1960" }   }, {      "item" : { "type" : "uri", "value" : "http://www.wikidata.org/entity/Q33" },     "itemLabel" : { "xml:lang" : "en", "type" : "literal", "value" : "Finland" },     "population" : { "datatype" : "http://www.w3.org/2001/XMLSchema#decimal", "type" : "literal", "value" : "4461005" },     "year" : { "datatype" : "http://www.w3.org/2001/XMLSchema#integer", "type" : "literal", "value" : "1961" }   }, {      "item" : { "type" : "uri", "value" : "http://www.wikidata.org/entity/Q33" },     "itemLabel" : { "xml:lang" : "en", "type" : "literal", "value" : "Finland" },     "population" : { "datatype" : "http://www.w3.org/2001/XMLSchema#decimal", "type" : "literal", "value" : "4491443" },     "year" : { "datatype" : "http://www.w3.org/2001/XMLSchema#integer", "type" : "literal", "value" : "1962" }   } ]  } }
 * Source JSON from Query.wikimedia.org

{   "license": "CC0-1.0", "description": { "en": "Result of SPARQL query" },   "sources": "SPARQL Query: https://query.wikidata.org/#%23Population%20in%20Finland%20after%201960%0ASELECT%20%20%3Fitem%0A%20%20%20%20%20%20%20%20%3FitemLabel%0A%20%20%20%20%20%20%20%20%28YEAR%28%3Fdate%29%20as%20%3Fyear%29%0A%20%20%20%20%20%20%20%20%3Fpopulation%20%0AWHERE%0A%7B%0A%20%20%20%20%20%20%20%20BIND%28wd%3AQ33%20as%20%3Fitem%29%0A%20%20%20%20%20%20%20%20%3Fitem%20p%3AP1082%20%3FpopulationStatement%20.%0A%20%20%20%20%20%20%20%20%3FpopulationStatement%20%20%20%20ps%3AP1082%20%3Fpopulation%0A%20%20%20%20%20%20%20%20%3B%20pq%3AP585%20%3Fdate%20.%0A%20%20%20%20%20%20%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20FILTER%20%28YEAR%28%3Fdate%29%20%3E%3D%201960%29%0A%7D%0AORDER%20BY%20%3FobjectLabel%20%3Fyear%0ALIMIT%203", "schema": { "fields": [ {               "name": "item", "type": "string", "title": { "en": "item" }           },            {                "name": "itemLabel", "type": "string", "title": { "en": "itemLabel" }           },            {                "name": "year", "type": "number", "title": { "en": "year" }           },            {                "name": "population", "type": "number", "title": { "en": "population" }           }        ]    },    "data": [ [           "http://www.wikidata.org/entity/Q33", {                   "en":"Finland" },           1960,            4429634        ],        [            "http://www.wikidata.org/entity/Q33", {                   "en":"Finland" },           1961,            4461005        ],        [            "http://www.wikidata.org/entity/Q33", {                   "en":"Finland" },           1962,            4491443        ]    ] }
 * Output
 * https://commons.wikimedia.beta.wmflabs.org/wiki/Data:Population_of_Finland.tab

Editing Wikimedia Commons
Beta Commons can be used for testing.
 * https://commons.wikimedia.beta.wmflabs.org

Mediawiki API-documentation
 * https://www.mediawiki.org/wiki/API:Main_page
 * https://www.mediawiki.org/wiki/API:Edit

Deployment?

 * Toolforge is one option...