Extension:SparqlResultFormat

MediaWiki extensions manual
SparqlResultFormat
Release status: unmaintained
Implementation Parser function
Author(s) Gabriele Cornacchia, Matteo Busanelli
Latest version 1.0.16 (2019-10-17)
MediaWiki 1.25+
PHP 5.3.3+
Database changes No
License MIT License
Download


Description

edit

SparqlResultFormat is a free, open-source extension to MediaWiki that lets you query different Sparql endpoints and represent output data in various formats.

Installation

edit
  1. Unzip the downloaded zip file to the extensions folder of your mediawiki and rename it to 'SparqlResultFormat'.
  2. Include the following line at the end of your LocalSettings.php:
    wfLoadExtension( 'SparqlResultFormat' );
    
  3. Check documentation at the Special:SparqlResultFormat page on your mediawiki


Formats & Examples

edit

These examples work with Wikidata sparql query endpoint.

Define it in your LocalSettings.php

$wgSparqlEndpointDefinition['wikidata'] = array(
		'url' => 'https://query.wikidata.org/sparql',
		'connectionTimeout' => 0,
		'requestTimeout' => 30);

Node graph

edit

Members of European Union with their capitals

 

{{#sparql2graph:
|divId=mynetwork
|divStyle=width:100%;height:530px;
|linkBasePath={{SERVER}}{{SCRIPTPATH}}/index.php/
|nodeConfiguration=[
   { category:"country",nodeColor:"#00FF00", image:"https://cdn1.vectorstock.com/i/1000x1000/59/35/visited-country-icon-symbol-premium-quality-vector-16435935.jpg"},
   { category:"city",nodeColor:"#00FFFF", image:"https://cdn0.iconfinder.com/data/icons/good-view/500/View-08-512.png"}
]
|edgeConfiguration={}
|defaultNodeColor=#CCC   
|defaultEdgeColor=#CCC
|maxLabelLength=200
|showLegend=true
|rootElement=http://www.wikidata.org/entity/Q458
|rootElementImage=https://cdn3.iconfinder.com/data/icons/50-flags-of-the-world-circular-shape-2/60/Circular_world_Flag_134-512.png
|rootElementColor=
|layout=dagre
|nodeStyle={}
|edgeStyle={}
|layoutOptions={}
|splitQueryByUnion=false
|minZoom=0.2
|maxZoom=1.2
|sparqlEndpoint=wikidata
|sparqlEscapedQuery=
select distinct ?parent_uri ?parent_name ?child_uri ?child_name ?parent_type ?parent_type_uri ?child_type ?child_type_uri ?relation_uri ?relation_name
where { 
  {
?parent_uri  ?relation_uri ?child_uri.


  SERVICE wikibase:label { bd:serviceParam wikibase:language "en".
      ?parent_uri rdfs:label ?parent_name.
      ?child_uri rdfs:label ?child_name.
      ?parent_type_uri rdfs:label ?parent_type.  
      ?child_type_uri rdfs:label ?child_type.                     
     }
  
  BIND (wdt:P150 AS ?relation_uri)
  BIND (wd:Q458 AS ?parent_uri)
  BIND (wd:Q3623811 AS ?parent_type_uri)
  BIND (wd:Q6256 AS ?child_type_uri)
  BIND ("Has members" AS ?relation_name)
} UNION {
  
    ?root wdt:P150 ?parent_uri.
    ?parent_uri  ?relation_uri ?child_uri.
      SERVICE wikibase:label { bd:serviceParam wikibase:language "en".
      ?parent_uri rdfs:label ?parent_name.
      ?child_uri rdfs:label ?child_name.
      ?parent_type_uri rdfs:label ?parent_type.  
      ?child_type_uri rdfs:label ?child_type.     
      #?relation_uri rdfs:label ?relation_name
     }
    
    BIND (wd:Q458 AS ?root)
    BIND (wdt:P36 AS ?relation_uri)
  BIND (wd:Q6256 AS ?parent_type_uri)
  BIND (wd:Q515 AS ?child_type_uri)
  BIND ("Has capital" AS ?relation_name)
    
  
  }
}

Bar Chart

edit

Top 20 countries by population size

 

{{#sparql2barchart:
|divId=chart2
|sparqlEndpoint=wikidata
|seriesConfiguration=[{label:'Population', color:'blue',showLink:'false'} ]
|sparqlEscapedQuery=
SELECT DISTINCT ?countryLabel ?population
{
  ?country wdt:P31 wd:Q6256 ;
           wdt:P1082 ?population .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?population ?countryLabel
ORDER BY DESC(?population)
limit 20
|extraOption=chart.bar.width:15
|extraOption=chart.bar.padding:2
|extraOption=chart.bar.margin:5
|extraOption=chart.axis.x.label:Country
|extraOption=chart.axis.y.label:Population
|extraOption=chart.axis.x.angle:-45
|extraOption=chart.axis.x.font.size:9pt
}}

Pie Chart

edit
{{#sparql2piechart:
|divId=donut1
|divStyle=width:100%; height:100%;
|sparqlEndpoint=wikidata
|sparqlEscapedQuery=
SELECT DISTINCT ?countryLabel ?population
{
  ?country wdt:P31 wd:Q6256 ;
           wdt:P1082 ?population .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?population ?countryLabel
ORDER BY DESC(?population)
limit 10
|extraOption=chart.title:Top 10 countries by population size
}}

Donut Chart

edit

 

{{#sparql2donutchart:
|divId=donut1
|divStyle=width:100%; height:100%;
|sparqlEndpoint=wikidata
|sparqlEscapedQuery=
SELECT DISTINCT ?countryLabel ?population
{
  ?country wdt:P31 wd:Q6256 ;
           wdt:P1082 ?population .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?population ?countryLabel
ORDER BY DESC(?population)
limit 10
|extraOption=chart.title:Top 10 countries by population size
}}

HTML table

edit
{{#sparql2table:
|divId=chart2
|sparqlEndpoint=wikidata
|tableClass=wikitable dashboard-table sortable
|columnConfiguration=[{queryField:'country',visible:false},{queryField:'countryLabel', label:'Country', showLink:'true', cellLinkPattern:'{%s[country]}'}, {queryField:'population', label:'Population', showLink:'false',cellValuePattern:'{%n[0,00.00]@en}'}]
|sparqlEscapedQuery=
SELECT DISTINCT ?country ?countryLabel ?population
{
  ?country wdt:P31 wd:Q6256 ;
           wdt:P1082 ?population .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?population ?countryLabel ?country
ORDER BY DESC(?population)
limit 20

}}
{{#sparql2csv:
|divId=csvButton1 
|sparqlEndpoint=wikidata
|linkButtonLabel=Download CSV
|filename=wikidata_house_cats.csv
|separator=;
|sparqlEscapedQuery=
SELECT ?item ?itemLabel WHERE {  ?item wdt:P31 wd:Q146.  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } }
}}