//var endpoint = "http://dblp.l3s.de/d2r/sparql";
var tamany_pagina = 15;
function mostraErrors(xhr, textStatus, errorThrown) {
/* Funció que mostra l'error en la consulta */
alert(textStatus);
console.log(errorThrown);
}
function consulta_SPARQL_JSON(queryStr, tipus_consulta,urlrepo) {
var querypart = "query=" + escape(queryStr);
/* Funció que llança la conuslta per AJAX al repositori i espera la resposata o fallida de la mateixa */
$.ajax({
xhrFields: {
withCredentials: true
},
url: urlrepo,
type: 'POST',
data: querypart,
dataType: 'json',
crossDomain: true,
headers: {
'Content-type': 'application/x-www-form-urlencoded',
'Accept': 'application/sparql-results+json'
},
contentType: 'application/json; charset=utf-8',
success: function(data){
tractaResposta(data, tipus_consulta)
},
error: mostraErrors
});
};
function tractaResposta(jsonObj,tipus_consulta) {
/* Funció que tracta el resultat de la resposta a la consulta SPARQL depenent del tipu de consulta*/
switch(tipus_consulta) {
case "cerca_biblio_autor":
// Build up a table of results.
var autors="";
var anticpub="";
var autor="";
var nompub="";
var datapub="";
var pub="";
var num=0;
var result = "
" ;
var numres=0;
var primer=true;
result += "Publicacions |
";
for(var i = 0; i< jsonObj.results.bindings.length; i++) {
numres++;
pub=jsonObj.results.bindings[i]["pub"].value;
if (anticpub!=pub){
if (anticpub!=""){ // no es primer elemento hay que escribir el elemento anterior
result+=""+num+" | "+autors+".("+datapub+")."+nompub+". |
";
}
num=num+1;
autor=jsonObj.results.bindings[i]["nomautor"].value;
nompub=jsonObj.results.bindings[i]["nompub"].value;
datapub=jsonObj.results.bindings[i]["datapub"].value;
autors=autor;
anticpub=pub;
}else{
autor=jsonObj.results.bindings[i]["nomautor"].value;
autors+=","+autor;
}
}
//escribir ultimo elemento
result+=""+num+" | "+autors+".("+datapub+")."+nompub+". |
";
result += "
" ;
if (numres>0){
document.getElementById("results").innerHTML = result;
}else{
document.getElementById("results").innerHTML = "No existeix camp resultat per a la consulta realitzada.";
}
break;
default: // Consulta no reconeguda
alert("Consulta no reconeguda");
}
}
function construeix_query(tipus_consulta, offset, urlrepo){
/* Segons el tipus de consulta, construeix un tipus de consulta SPARQL o un altra */
switch(tipus_consulta) {
case "cerca_biblio_autor":
var autor= document.getElementById("autorsearched").value;
var query= [
" PREFIX swrc: ",
" PREFIX rdf: ",
" PREFIX owl: ",
" PREFIX d2r: ",
" PREFIX xsd: ",
" PREFIX dcterms: ",
" PREFIX rdfs: ",
" PREFIX map: ",
" PREFIX foaf: ",
" PREFIX dc: ",
" SELECT (Str(?name2) as ?nomautor) (Str(?pubname) as ?nompub) (Str(?date) as ?datapub) ?pub ",
" WHERE{ ",
" ?autor2 foaf:name ?name2 . ",
" ?pub dc:creator ?autor2 . ",
" ?pub dcterms:issued ?date . ",
" ?pub dc:title ?pubname . ",
" { ",
" SELECT DISTINCT ?pub ",
" WHERE { ",
" ?pub dc:creator ?autor . ",
" ?autor foaf:name ?name . ",
" FILTER regex(str(?name), '"+autor+"', 'i') .",
//" FILTER regex(str(?name), '^"+autor+"', 'i') .",
" }ORDER BY ?pub ",
" OFFSET "+offset+" ",
" LIMIT "+tamany_pagina+" ",
" } ",
" }ORDER BY ?pub ?autor2 "
/*
" SELECT Str(?name) Str(?pubname) Str(?date) ?pub",
" WHERE {",
" ?pub dc:creator ?autor . ",
" ?pub dc:title ?pubname . ",
" ?pub dcterms:issued ?date . ",
" ?autor foaf:name ?name . ",
" FILTER regex(?name, '"+autor+"', 'i') .",
" }",
" ORDER BY ASC(?name) ASC(?date) ASC(?pubname) ",
" OFFSET "+offset+" ",
" LIMIT "+tamany_pagina+" ",
*/
].join(" ");
return query;
default: // Consulta no reconeguda
return false;
}
}
function Consultar(offset){
/* Funció de cerca al pitjar el botó, mira el tipus de consulta seleccionat i crida a montra la query i llançar-la si tot es correcte */
var tipus_consulta = document.getElementById("llistacerques").value;
var urlrepo = document.getElementById("llistarepositori").value;
document.getElementById("results").innerHTML = "
En uns instants apareixeran els resultats de la consulta
Loading...
";
var query = construeix_query(tipus_consulta,offset,urlrepo);
if(query){
consulta_SPARQL_JSON(query, tipus_consulta,urlrepo);
}else{
alert("Consulta: "+tipus_consulta+" no reconeguda.");
}
}
/*
SELECT Str(?name) Str(?pubname) Str(?date) ?pub
WHERE {
?pub dc:creator ?autor .
?pub dc:title ?pubname .
?pub dcterms:issued ?date .
?autor foaf:name ?name .
FILTER regex(?name, 'James', 'i') .
}
ORDER BY ASC(?name) ASC(?date) ASC(?pubname)
{
SELECT ?y SAMPLE(?name)
WHERE {
?x foaf:name ?name .
}
ORDER BY ?x
GROUP BY ?name
}
SELECT Str(?name2) Str(?pubname) Str(?date) ?pub
WHERE{
?pub dc:creator ?autor2 .
?autor2 foaf:name ?name2 .
?pub dcterms:issued ?date .
?pub dc:title ?pubname .
{
SELECT ?pub
WHERE {
?pub dc:creator ?autor .
?autor foaf:name ?name .
FILTER regex(?name, 'James', 'i') .
}
ORDER BY ASC(?pub)
LIMIT 10
}
}GROUP BY ?pub
SELECT Str(?name2) Str(?pubname) Str(?date) ?pub
WHERE{
?autor2 foaf:name ?name2 .
?pub dc:creator ?autor2 .
?pub dcterms:issued ?date .
?pub dc:title ?pubname .
{
SELECT DISTINCT ?pub
WHERE {
?pub dc:creator ?autor .
?autor foaf:name ?name .
FILTER regex(?name, 'James', 'i') .
}ORDER BY ?pub
OFFSET 0
LIMIT 10
}
}ORDER BY ?pub ?autor2
*/