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){...