LinguaLibre.org SPARQL query
by Hugo Lopez
HTML
<div id="hook"></div>
JavaScript
/* *************************************************************** */
// INIT
var endpoint = 'https://lingualibre.org/sparql';
var query = '?query=';
var sparql = `SELECT ?item ?itemLabel WHERE { ?item prop:P2 entity:Q5. SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . }} LIMIT 10`;
var format = '&format=json';
var headers = { 'Accept': 'application/sparql-results+json' }; // optional for vanilla js, to be clean
var url = endpoint+query+sparql+format;
$("#hook").append(`<a href="${endpoint+query+encodeURIComponent(sparql)+format}" target="_blank">${url}</a>`)
//$("#hook>a")[0].click();
/* *************************************************************** */
// Native Javascript
var jsonArrivedDoThat = function(data){ console.log('JS: ',data)};
fetch(url, { headers} )
.then(d=> d.json())
.then( function(data){ console.log('JS: ',data)} /* when data arrives do something */ )
.catch(function(err){ console.error('Error in API call: '+err);
});
/* *************************************************************** */
// Native Javascript
// CREATES CLASS with parameter `endoint`
// Wikidata Query Service page > Click : "Code" > Click: "Javascript (Modern)"
// https://query.wikidata.org/#SELECT%20%3Fitem%20WHERE%20%7B%20%3Fitem%20wdt%3AP31%20wd%3AQ5%20%7D%20LIMIT%2010
class SPARQLQueryDispatcher {
constructor( endpoint ) {
this.endpoint = endpoint;
}
query( sparqlQuery ) {
const fullUrl = this.endpoint + '?query=' + encodeURIComponent( sparqlQuery );
const headers = { 'Accept': 'application/sparql-results+json' };
return fetch( fullUrl, { headers } ).then( body => body.json() );
}
}
const queryDispatcher = new SPARQLQueryDispatcher( endpoint );
queryDispatcher.query( sparql ).then(
function(data){ console.log('WDQS JS modern: ',data)}
);
/* *************************************************************** */
// JQuery Javascript
$.getJSON(endpoint,
{ query: sparql, format: 'json' },
function(data){...