//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 += ""; 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=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+=""; result += "
Publicacions
"+num+""+autors+".("+datapub+")."+nompub+".
"+num+""+autors+".("+datapub+")."+nompub+".

" ; 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 */