Alessia преди 2 години
родител
ревизия
68f3722265
променени са 2 файла, в които са добавени 1097 реда и са изтрити 0 реда
  1. 222 0
      js/association.js
  2. 875 0
      js/map.js

+ 222 - 0
js/association.js

@@ -0,0 +1,222 @@
+
+// Oggetto che raccoglie le info necessarie per la pagina
+pageInfo = {};
+
+// Inizializzazione della pagina
+initPage();
+
+
+// Def. funzione di inizializzazione
+async function initPage(){
+  pageInfo = await getPageInfo();
+  updatePage();
+}
+
+// Esegue le queries, restituisce un oggetto con tutte le info per completare la pagina
+async function getPageInfo(){
+  var out = {};
+
+  try{
+    out.queryPlace = await doJsonQuery(queryCountLuogo, true);
+    out.queryTot = await doJsonQuery(queryCountDataset, true);
+    out.querySupport = await doJsonQuery(querySupportCount, true);
+    out.queryLemmmas = await doJsonQuery(querySupportLemma, true);
+    
+  } catch(err){
+    console.log(err);
+  }
+
+  console.log('out', out)
+  return out;
+}
+
+
+// Aggiorna la pagina usando l'oggetto-info passato come parametro
+function updatePage(){
+
+  var tot = pageInfo.queryTot.results.bindings[0].documenti.value;
+  var occ = pageInfo.queryPlace.results.bindings[0].occorrenze.value;
+
+  const listaMisure = [];
+
+  for (var i=0; i<pageInfo.querySupport.results.bindings.length; i++) {
+    support_count = pageInfo.querySupport.results.bindings[i].occorrenze.value;
+    name = pageInfo.querySupport.results.bindings[i].antroponimo.value;
+    freqAntroponimo = pageInfo.querySupport.results.bindings[i].count.value;
+    var support = ((support_count/tot) * 100).toFixed(2) + '%';
+    var confidence = ((support_count/occ) * 100).toFixed(2) + '%';
+    var probBi = support_count/tot;
+    var probPersona = freqAntroponimo/tot;
+    var probabilityPersona = (probPersona * 100).toFixed(2) + '%';
+    var probLuogo = occ/tot;
+    var check = probPersona * probLuogo;
+    var interest = probBi/check;
+    var interesse = interest.toFixed(2);
+    var correlazione = "";
+    if (interest == 1) {
+      correlazione = "Indipendenza";
+    } 
+    else if (interest > 1) {
+      correlazione = "Positiva";
+    }
+    else {
+      correlazione = "Negativa";
+    }
+    listaMisure.push([name, freqAntroponimo, probabilityPersona, support_count, support, confidence, interesse, correlazione]);
+  }
+
+  var thead = "<div class='row' id='thead_support'><div class='col first'>Antroponimo</div> \
+  <div data-toggle='modal' data-target='#FrequenzaModal' class='col help'>Frequenza assoluta antroponimo</div> \
+  <div class='col help' data-toggle='modal' data-target='#ProbabilityModal'>Probabilità Antroponimo</div> \
+  <div class='col help' data-toggle='modal' data-target='#SupportCountModal'>Support Count</div> \
+  <div class='col help' data-toggle='modal' data-target='#SupportModal'>Supporto</div> \
+  <div class='col help' data-toggle='modal' data-target='#ConfidenzaModal'>Confidenza</div> \
+  <div class='col help' data-toggle='modal' data-target='#InteresseModal'>Interesse</div> \
+  <div class='col help' data-toggle='modal' data-target='#CorrelazioneModal'>Correlazione</div></div>";
+
+  if (listaMisure.length > 1) {
+      document.getElementById("my_supportList").innerHTML = thead + formatListAsGrid(listaMisure);
+    } else {
+      document.getElementById("my_supportList").innerHTML = "Dati insufficienti";
+    }
+
+  /*Supporto Lemmi*/
+
+  const listaMisureLemmi = [];
+
+  for (var i=0; i<pageInfo.queryLemmmas.results.bindings.length; i++) {
+    support_count = pageInfo.queryLemmmas.results.bindings[i].occorrenze.value;
+    name = pageInfo.queryLemmmas.results.bindings[i].lemma.value;
+    freqLemma = pageInfo.queryLemmmas.results.bindings[i].count.value;
+    var support = ((support_count/tot) * 100).toFixed(2) + '%';
+    var confidence = ((support_count/occ) * 100).toFixed(2) + '%';
+    var probBis = support_count/tot;
+    var probLemma = freqLemma/tot;
+    var probabilityLemma = (probLemma * 100).toFixed(2) + '%';
+    var probLuogo = occ/tot;
+    var check = probLemma * probLuogo;
+    var interest = probBis/check;
+    var interesse = interest.toFixed(2);
+    var correlazione = "";
+    if (interest == 1) {
+      correlazione = "Indipendenza";
+    } 
+    else if (interest > 1) {
+      correlazione = "Positiva";
+    }
+    else {
+      correlazione = "Negativa";
+    }
+    listaMisureLemmi.push([name, freqLemma, probabilityLemma, support_count, support, confidence, interesse, correlazione]);
+  }
+
+  var theadL = "<div class='row' id='thead_lemmi'><div class='col first'>Lemma</div> \
+    <div data-toggle='modal' data-target='#FrequenzaModal' class='col help'>Frequenza assoluta lemma</div> \
+    <div class='col help' data-toggle='modal' data-target='#ProbabilityModal'>Probabilità Antroponimo</div> \
+    <div class='col help' data-toggle='modal' data-target='#SupportCountModal'>Support Count</div> \
+    <div class='col help' data-toggle='modal' data-target='#SupportModal'>Supporto</div> \
+    <div class='col help' data-toggle='modal' data-target='#ConfidenzaModal'>Confidenza</div> \
+    <div class='col help' data-toggle='modal' data-target='#InteresseModal'>Interesse</div> \
+    <div class='col help' data-toggle='modal' data-target='#CorrelazioneModal'>Correlazione</div></div>";
+
+  if (listaMisureLemmi.length > 1) {
+      document.getElementById("my_supportList2").innerHTML = theadL + formatListAsGrid(listaMisureLemmi);
+    } else {
+      document.getElementById("my_supportList2").innerHTML = "Dati insufficienti";
+    }
+
+  /*if(pageInfo.titolo) document.getElementById("title").innerHTML = pageInfo.titolo.titolo.value;
+  
+  if(pageInfo.query1) {
+    if(pageInfo.query1.hasOwnProperty('mittente')) document.getElementById("mittente_id").innerHTML = pageInfo.query1.mittente.value;
+    if(pageInfo.query1.hasOwnProperty('destinatario')) document.getElementById("destinatario_id").innerHTML = pageInfo.query1.destinatario.value;
+    if(pageInfo.query1.hasOwnProperty('luogo_partenza')) document.getElementById("luogo_partenza_id").innerHTML = pageInfo.query1.luogo_partenza.value;
+    if(pageInfo.query1.hasOwnProperty('uriLuogoPartenza')) document.getElementById("luogo_partenza_btn").innerHTML = createButton("fa fa-map", "Vedi mappa", "schedaMappa('LUOGO')".replace("LUOGO", pageInfo.query1.uriLuogoPartenza.value));
+    if(pageInfo.query1.hasOwnProperty('luogo_arrivo')) document.getElementById("luogo_arrivo_id").innerHTML = pageInfo.query1.luogo_arrivo.value;
+    if(pageInfo.query1.hasOwnProperty('uriLuogoArrivo')) document.getElementById("luogo_arrivo_btn").innerHTML = createButton("fa fa-map", "Vedi mappa", "schedaMappa('LUOGO')".replace("LUOGO", pageInfo.query1.uriLuogoArrivo.value));
+    if(pageInfo.query1.hasOwnProperty('data_partenza')) document.getElementById("data_partenza_id").innerHTML = pageInfo.query1.data_partenza.value;
+    if(pageInfo.query1.hasOwnProperty('data_arrivo')) document.getElementById("data_arrivo_id").innerHTML = pageInfo.query1.data_arrivo.value;
+    
+  }
+
+  if(pageInfo.query1){
+    document.getElementById("mittente_id").innerHTML = pageInfo.query1.mittente.value;
+    //document.getElementById("mittente_btn").innerHTML = createButton("fa fa-user", "Scheda persona", "schedaPersona('PERS')".replace("PERS", pageInfo.query1.mittente.value));
+  }
+  if(pageInfo.query1){
+    document.getElementById("destinatario_id").innerHTML = pageInfo.query1.destinatario.value;
+    //document.getElementById("destinatario_btn").innerHTML = createButton("fa fa-user", "Scheda persona", "schedaPersona('PERS')".replace("PERS", pageInfo.query1.destinatario.value));
+  }
+  if(pageInfo.query1){
+    document.getElementById("imageASPO").innerHTML = createEmbed(pageInfo.query1.subject.value);
+  }
+  if(pageInfo.query1){
+    document.getElementById("luogo_partenza_id").innerHTML = pageInfo.query1.luogo_partenza.value;
+    document.getElementById("luogo_partenza_btn").innerHTML = createButton("fa fa-map", "Vedi mappa", "schedaMappa('LUOGO')".replace("LUOGO", pageInfo.query1.uriLuogoPartenza.value));
+  }
+  if(pageInfo.query1){
+    document.getElementById("luogo_arrivo_id").innerHTML = pageInfo.query1.luogo_arrivo.value;
+    document.getElementById("luogo_arrivo_btn").innerHTML = createButton("fa fa-map", "Vedi mappa", "schedaMappa('LUOGO')".replace("LUOGO", pageInfo.query1.uriLuogoArrivo.value));
+  }
+  if(pageInfo.query1) document.getElementById("data_partenza_id").innerHTML = pageInfo.query1.data_partenza.value;
+  if(pageInfo.query1) document.getElementById("data_arrivo_id").innerHTML = pageInfo.query1.data_arrivo.value;
+  
+  if(pageInfo.descrizione) document.getElementById("descrizione_id").innerHTML = pageInfo.descrizione.descrizione.value;
+  if(pageInfo.areaLinguistica) document.getElementById("lingua_id").innerHTML = pageInfo.areaLinguistica.lingua.value;
+  if(pageInfo.areaLinguistica) document.getElementById("area_linguistica_id").innerHTML = pageInfo.areaLinguistica.area_linguistica.value;
+  if(pageInfo.segnatura){
+    document.getElementById("segnatura_id").innerHTML = pageInfo.segnatura.segnatura_OVI.value;
+    document.getElementById("segnatura_btn").innerHTML = createButton("fa fa-link", "Link ASPO", "schedaASPO('SEGN')".replace("SEGN", thisUrlParams.link));
+  }
+  if(pageInfo.edizione){
+    document.getElementById("edizione_id").innerHTML = pageInfo.edizione.edizione.value;
+    document.getElementById("edizione_btn").innerHTML = createButton("fa fa-comments", "Cita Edizione", "schedaEdizione('EDIZ')".replace("EDIZ", pageInfo.edizione.edizione.value));
+  }
+  if(pageInfo.testo) document.getElementById("trascrizione_id").innerHTML = pageInfo.testo.testo_lemmatizzato.value;
+  //
+  if(pageInfo.antroponimi && pageInfo.antroponimi.length){
+    const listaAntroponimi = pageInfo.antroponimi.map(elem => elem.antroponimo.value);
+    document.getElementById("antroponimi").innerHTML = formatListAsLi(listaAntroponimi);
+  }
+  if(pageInfo.toponimi && pageInfo.toponimi.length){
+    const listaToponimi = pageInfo.toponimi.map(elem => elem.toponimo.value);
+    document.getElementById("toponimi").innerHTML = formatListAsLi(listaToponimi);
+  }
+
+  if(pageInfo.query2) {
+    if(pageInfo.query2.hasOwnProperty('mittente')) document.getElementById("mittente_id_ASPO").innerHTML = pageInfo.query2.mittente.value;
+    if(pageInfo.query2.hasOwnProperty('uriSender')) document.getElementById("mittente_btn_ASPO").innerHTML = createButton("fa fa-user", "Scheda persona", "schedaPersona('PERS')".replace("PERS", pageInfo.query2.uriSender.value));
+    if(pageInfo.query2.hasOwnProperty('destinatario')) document.getElementById("destinatario_id_ASPO").innerHTML = pageInfo.query2.destinatario.value;
+    if(pageInfo.query2.hasOwnProperty('uriReceiver')) document.getElementById("destinatario_btn_ASPO").innerHTML = createButton("fa fa-user", "Scheda persona", "schedaPersona('PERS')".replace("PERS", pageInfo.query2.uriReceiver.value));
+    if(pageInfo.query2.hasOwnProperty('placeSend')) document.getElementById("luogo_partenza_id_ASPO").innerHTML = pageInfo.query2.placeSend.value;
+    if(pageInfo.query2.hasOwnProperty('placeReceive')) document.getElementById("luogo_arrivo_id_ASPO").innerHTML = pageInfo.query2.placeReceive.value;
+    if(pageInfo.query2.hasOwnProperty('timeSpanSend')) document.getElementById("data_partenza_id_ASPO").innerHTML = pageInfo.query2.timeSpanSend.value;
+    if(pageInfo.query2.hasOwnProperty('timeSpanReceive')) document.getElementById("data_arrivo_id_ASPO").innerHTML = pageInfo.query2.timeSpanReceive.value;
+    if(pageInfo.query2.hasOwnProperty('material')) document.getElementById("consistenzaASPO").innerHTML = pageInfo.query2.material.value;
+    if(pageInfo.query2.hasOwnProperty('dimension')) document.getElementById("dimensioneASPO").innerHTML = pageInfo.query2.dimension.value;
+    if(pageInfo.query2.hasOwnProperty('identifier')) document.getElementById("segnatura_id_ASPO").innerHTML = pageInfo.query2.identifier.value;
+    if(pageInfo.query2.hasOwnProperty('currentLocation')) document.getElementById("ownerASPO").innerHTML = pageInfo.query2.currentLocation.value;
+    
+  }
+
+  if(pageInfo.query1){
+    document.getElementById("imageASPO").innerHTML = createEmbed(pageInfo.query1.subject.value);
+  }*/
+}
+
+// Mini-utility per formattare liste
+function formatListAsLi(thisList){
+  toRet = "";
+  thisList.forEach(value => toRet += "<li>" + value + "</li>");
+  return toRet;
+}
+
+function formatListAsGrid(thisList){
+  toRet = "";
+  thisList.forEach(value => toRet += "<div class='row'>" + "<div class='col first'>" + value[0] + 
+    "</div><div class='col'>" + value[1] + "</div><div class='col'>" + value[2] + "</div><div class='col'>" + value[3] + "</div><div class='col'>" + value[4] + "</div><div class='col'>" + value[5] + "</div><div class='col'>" + 
+    value[6] + "</div><div class='col'>" + value[7] + "</div></div>");
+  return toRet;
+}
+
+

+ 875 - 0
js/map.js

@@ -0,0 +1,875 @@
+// Raccatto i parametri dall'URL -- mi aspetto un parametro di nome 'link'!
+thisUrlParams = {};
+window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
+    thisUrlParams[key] = value;
+});
+console.log('URL get params: ', thisUrlParams);
+
+// Funzioni per eseguire le queries
+function prepareQueryURL(query){
+    sparqlEndpoint = 'http://dev.restore.ovi.cnr.it:8890/sparql/';
+    sparqlUrlParams = '?default-graph-uri=&query=' + encodeURIComponent(query) + '&output=json&callback=?';
+    return sparqlEndpoint + sparqlUrlParams;
+}
+
+function doJsonQuery(query){
+
+    queryURL = prepareQueryURL(query);
+
+    response = $.ajax({//OGGETTO
+
+        url: queryURL,
+        dataType: "json",
+        success: function (data){},
+        error: function (e) {}
+    });
+
+    return response;
+
+}
+
+// Funzioni per raccattare + stringhificare l'output
+queryStringOutput = "";
+function stringifyResponse(val){
+    resultArray = val['results']['bindings'];
+    out = "";
+    for(i = 0; i < resultArray.length; i++){
+        out = out + JSON.stringify(resultArray[i])
+    }
+    queryStringOutput = (queryStringOutput + out).replace("}{",",");
+}
+
+prefixes = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \
+PREFIX crm: <http://www.cidoc-crm.org/cidoc-crm/> \
+PREFIX owl: <http://www.w3.org/2002/07/owl#>"
+
+query = prefixes + " SELECT DISTINCT ?graph ?name_place ?coordinates {\
+GRAPH ?graph {<" + thisUrlParams.link + "> crm:P168_place_is_defined_by ?coordinates;\
+rdfs:label ?name_place .\
+}\
+}"
+
+queryRiferimenti = prefixes + " SELECT DISTINCT ?references {\
+<" + thisUrlParams.link + "> owl:sameAs ?references\
+}"
+
+queryToponimi = prefixes + " SELECT DISTINCT ?toponimi {\
+<" + thisUrlParams.link + "> crm:P1_is_identified_by ?uri_toponym .\
+?uri_toponym rdfs:label ?toponimi\
+}"
+
+queryRicezione = prefixes + " SELECT DISTINCT ?object ?label {\
+<" + thisUrlParams.link + "> owl:sameAs ?place .\
+?event_to crm:P26_moved_to ?place ;\
+rdf:type crm:EL3_Receive_Letter ;\
+rdfs:subClassOf ?event .\
+?object crm:P25i_moved_by ?event ; \
+rdfs:label ?label .\
+} "
+
+queryInvio = prefixes + " SELECT DISTINCT ?object ?label {\
+<" + thisUrlParams.link + "> owl:sameAs ?place .\
+?event_to crm:P27_moved_from ?place ;\
+rdf:type crm:EL2_Send_Letter ;\
+rdfs:subClassOf ?event .\
+?object crm:P25i_moved_by ?event ; \
+rdfs:label ?label .\
+}"
+
+queryCitazione = prefixes + " SELECT DISTINCT ?object ?label\
+{<" + thisUrlParams.link + "> crm:P1_is_identified_by ?toponym .\
+?object crm:P67_refers_to ?toponym ;\
+rdfs:label ?label\
+}"
+
+queryPersone = prefixes + " SELECT DISTINCT ?range ?label \
+WHERE{ \
+  {?place owl:sameAs <" + thisUrlParams.link + "> .\
+  ?event_to crm:P26_moved_to ?place ;\
+  rdf:type crm:EL3_Receive_Letter ;\
+  crm:P01_has_domain ?domain .\
+  ?domain crm:P02_has_range ?range .\
+  ?range rdfs:label ?label .\
+} UNION {\
+  ?place owl:sameAs <" + thisUrlParams.link + "> .\
+  ?event_to crm:P27_moved_from ?place ;\
+  rdf:type crm:EL2_Send_Letter ;\
+  crm:P01_has_domain ?domain .\
+  ?domain crm:P02_has_range ?range .\
+  ?range rdfs:label ?label .\
+  }\
+}"
+
+queryCount = prefixes + " SELECT ?place ?label COUNT(?label) AS ?Count \
+WHERE{ \
+?place_to owl:sameAs <" + thisUrlParams.link + "> . \
+?event_to crm:P26_moved_to ?place_to ; \
+rdf:type crm:EL3_Receive_Letter ; \
+rdfs:subClassOf ?event . \
+?event_from rdfs:subClassOf ?event ; \
+rdf:type crm:EL2_Send_Letter ; \
+crm:P27_moved_from ?place . \
+?place rdfs:label ?label \
+} \
+ORDER BY DESC (?Count)"
+
+queryCount2 = prefixes + " SELECT ?place ?label COUNT(?label) AS ?Count \
+WHERE{ \
+?place_from owl:sameAs <" + thisUrlParams.link + "> . \
+?event_from crm:P27_moved_from ?place_from ; \
+rdf:type crm:EL2_Send_Letter ; \
+rdfs:subClassOf ?event . \
+?event_to rdfs:subClassOf ?event ; \
+rdf:type crm:EL2_Send_Letter ; \
+crm:P27_moved_from ?place . \
+?place rdfs:label ?label . \
+} \
+ORDER BY DESC (?Count) "
+
+queryCountLuogo = prefixes + " SELECT DISTINCT COUNT(?luogo) AS ?occorrenze \
+WHERE { \
+?document crm:P67_refers_to ?luogo . \
+<" + thisUrlParams.link + "> crm:P1_is_identified_by ?luogo . \
+} "
+
+queryCountDataset = prefixes + " SELECT DISTINCT COUNT(?uri) AS ?documenti \
+WHERE {\
+?uri crm:P2_has_type 'Testo Lemmatizzato' } "
+
+querySupportCount = prefixes + " SELECT ?uri_antroponym ?antroponimo COUNT(DISTINCT ?document) AS ?occorrenze COUNT(DISTINCT ?letter) AS ?count \
+WHERE { \
+?document crm:P67_refers_to ?uri . \
+<" + thisUrlParams.link + "> crm:P1_is_identified_by ?uri . \
+?document crm:P67_refers_to ?uri_antroponym . \
+?uri_antroponym crm:P2_has_type 'Antroponimo'; \
+rdfs:label ?antroponimo . \
+?letter crm:P67_refers_to ?uri_antroponym . \
+} \
+GROUP BY ?uri_antroponym ?antroponimo \
+ORDER BY DESC (?occorrenze) "
+
+querySupportLemma = prefixes + " SELECT ?uri_lemma ?lemma COUNT(DISTINCT ?document) AS ?occorrenze COUNT(DISTINCT ?letter) AS ?count \
+WHERE { \
+?document crm:P67_refers_to ?uri . \
+<" + thisUrlParams.link + "> crm:P1_is_identified_by ?uri . \
+?document crm:P67_refers_to ?uri_object . \
+?uri_object crm:P128_carries ?uri_lemma . \
+?uri_lemma rdf:type ?uri_type; \
+rdfs:label ?lemma . \
+?uri_type rdfs:label 'Lemma' . \
+?letter crm:P67_refers_to ?uri_object . \
+} \
+GROUP BY ?uri_lemma ?lemma \
+ORDER BY DESC (?occorrenze) "
+
+/*
+queryCountAntroponym = SELECT DISTINCT ?antroponimi COUNT(?uri) AS ?occorrenze
+WHERE {
+?document crm:P67_refers_to ?uri .
+?uri crm:P2_has_type "Antroponimo" ;
+rdfs:label ?antroponimi .
+}
+GROUP BY ?antroponimi ?uri
+ORDER BY DESC (?occorrenze)
+
+
+queryCountLuogo = SELECT DISTINCT COUNT(?luogo) AS ?occorrenze
+WHERE {
+?document crm:P67_refers_to ?luogo .
+<http://dev.restore.ovi.cnr.it/vocabularies/places/161> crm:P1_is_identified_by ?luogo .
+}
+
+
+queryCountDataset = SELECT DISTINCT COUNT(?uri) AS ?documenti
+WHERE {
+?uri crm:P2_has_type "Testo Lemmatizzato" }
+
+
+querySupportCount = SELECT DISTINCT ?uri_antroponym ?antroponimo COUNT(?antroponimo) AS ?occorrenze
+WHERE {
+?document crm:P67_refers_to ?uri .
+<http://dev.restore.ovi.cnr.it/vocabularies/places/257> crm:P1_is_identified_by ?uri .
+?document crm:P67_refers_to ?uri_antroponym .
+?uri_antroponym crm:P2_has_type "Antroponimo";
+rdfs:label ?antroponimo .
+}
+GROUP BY ?uri_antroponym ?antroponimo
+ORDER BY DESC (?occorrenze)
+*/
+
+queryURL = prepareQueryURL(query);
+
+queryRef = prepareQueryURL(queryRiferimenti);
+
+queryTopo = prepareQueryURL(queryToponimi);
+
+queryRec = prepareQueryURL(queryRicezione);
+
+querySend = prepareQueryURL(queryInvio);
+
+queryCit = prepareQueryURL(queryCitazione);
+
+queryPer = prepareQueryURL(queryPersone);
+
+queryCon1 = prepareQueryURL(queryCount);
+
+queryCon2 = prepareQueryURL(queryCount2);
+
+queryDataset = prepareQueryURL(queryCountDataset);
+
+querySup = prepareQueryURL(querySupportCount);
+
+queryLem = prepareQueryURL(querySupportLemma);
+
+queryOcc = prepareQueryURL(queryCountLuogo);
+
+
+response = $.ajax({//OGGETTO
+
+    url: queryURL,
+    dataType: "json",
+    success: function (data){
+    	handle_data(data);
+    },
+    error: function (e) {}
+});
+
+
+response_ref = $.ajax({//OGGETTO
+
+    url: queryRef,
+    dataType: "json",
+    success: function (data){
+      handle_ref(data);
+    },
+    error: function (e) {}
+});
+
+response_top = $.ajax({//OGGETTO
+
+    url: queryTopo,
+    dataType: "json",
+    success: function (data){
+      handle_toponym(data);
+    },
+    error: function (e) {}
+});
+
+response_receive = $.ajax({//OGGETTO
+
+    url: queryRec,
+    dataType: "json",
+    success: function (data){
+      handle_receive(data);
+    },
+    error: function (e) {}
+});
+
+response_send = $.ajax({//OGGETTO
+
+    url: querySend,
+    dataType: "json",
+    success: function (data){
+      handle_send(data);
+    },
+    error: function (e) {}
+});
+
+response_cit = $.ajax({//OGGETTO
+
+    url: queryCit,
+    dataType: "json",
+    success: function (data){
+      handle_cit(data);
+    },
+    error: function (e) {}
+});
+
+response_per = $.ajax({//OGGETTO
+
+    url: queryPer,
+    dataType: "json",
+    success: function (data){
+      handle_persons(data);
+    },
+    error: function (e) {}
+});
+
+responseCountA = $.ajax({//OGGETTO
+
+    url: queryCon1,
+    dataType: "json",
+    success: function (data){
+      handle_count(data);
+    },
+    error: function (e) {}
+});
+
+responseCountP = $.ajax({//OGGETTO
+
+    url: queryCon2,
+    dataType: "json",
+    success: function (data){
+      handle_count2(data);
+    },
+    error: function (e) {}
+});
+
+responseDataset = $.ajax({//OGGETTO
+
+    url: queryDataset,
+    dataType: "json",
+    success: function (data){
+      get_dataset(data);
+    },
+    error: function (e) {}
+});
+
+
+responseOcc = $.ajax({//OGGETTO
+
+    url: queryOcc,
+    dataType: "json",
+    success: function (data){
+      get_occurrence(data);
+    },
+    error: function (e) {}
+});
+
+
+responseSupp = $.ajax({//OGGETTO
+
+    url: querySup,
+    dataType: "json",
+    success: function (data){
+      get_support(data);
+    },
+    error: function (e) {}
+});
+
+
+responseLemm = $.ajax({//OGGETTO
+
+    url: queryLem,
+    dataType: "json",
+    success: function (data){
+      get_support(data);
+    },
+    error: function (e) {}
+});
+
+
+function handle_data(json) {
+	console.log(json);
+
+	const locations = [];
+
+	$.each(
+			json['results']['bindings'],
+			function (index, value) {
+				const loc = []
+				var graph = value['graph']['value'];
+				var label = value['name_place']['value'];
+				var coord = value['coordinates']['value'];
+				const coordinates = coord.split(", ");
+				loc.push(label);
+				loc.push(coordinates[0]);
+				loc.push(coordinates[1]);
+				locations.push(loc);
+
+        document.getElementById("grafo").innerHTML = graph;
+        document.getElementById("nome_luogo").innerHTML = label;
+        document.getElementById("nome_lu").innerHTML = label;
+        document.getElementById("nome_lp").innerHTML = label;
+        document.getElementById("nome_ll").innerHTML = label;
+        document.getElementById("nome_lg").innerHTML = label;
+        document.getElementById("nome_st1").innerHTML = label;
+        document.getElementById("nome_st2").innerHTML = label;
+        document.getElementById("nome_ass1").innerHTML = label;
+        document.getElementById("nome_ass2").innerHTML = label;
+				
+			});
+
+	var map = L.map('map').setView([locations[0][1], locations[0][2]], 7);
+	mapLink = '<a href="https://openstreetmap.org">OpenStreetMap</a>';
+
+	L.tileLayer(
+	  'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
+	    attribution: '&copy; ' + mapLink + ' Contributors',
+	    maxZoom: 18,
+	  }).addTo(map);
+
+	for (var i = 0; i < locations.length; i++) {
+	  marker = new L.marker([locations[i][1], locations[i][2]])
+	    .bindPopup(locations[i][0])
+	    .addTo(map);
+	}
+}
+
+
+function handle_ref(json) {
+
+  console.log(json);
+
+  const references = [];
+
+  var list_ref = "";
+
+  $.each(
+      json['results']['bindings'],
+      function (index, value) {
+        var ref = value['references']['value'];
+        references.push(ref);        
+      });
+
+  
+  for (i=0; i<references.length; i++) {
+      list_ref += "<div class='row'><div class='col'><a href='" + references[i] + "'>" + references[i] + "</a></div></div>";
+  }
+  
+  document.getElementById("riferimenti").innerHTML = list_ref;
+  
+}
+
+function handle_toponym(json) {
+
+  console.log(json);
+
+  const toponym = [];
+
+  $.each(
+      json['results']['bindings'],
+      function (index, value) {
+        var topo = value['toponimi']['value'];
+        toponym.push(" " + topo);        
+      });
+  
+  document.getElementById("toponimi").innerHTML = toponym;
+
+}
+
+function handle_receive(json) {
+
+  console.log(json);
+
+  const received = {};
+
+  var i=0;
+
+  $.each(
+      json['results']['bindings'],
+      function (index, value) {
+        key = value['object']['value'];
+        data = value['label']['value'];   
+        received[key] = data;  
+        i++;   
+      });
+
+  var myArray = "";
+
+  for (var key in received) {
+    myArray += "<div class='row'><div class='col-10'>" + received[key] + "</div><div class='col'><a href='" + key + "'><i class='fas fa-external-link-alt' aria-hidden='true'></i></a></div></div>";
+  }
+
+  document.getElementById("n_receive").innerHTML = i;
+  document.getElementById("object_receive").innerHTML = myArray;
+
+  if (i==0) {
+    var messaggio = "<p>Nessun risultato trovato</p>";
+    document.getElementById("object_receive").innerHTML = messaggio;
+  }
+
+}
+
+
+function handle_send(json) {
+
+  console.log(json);
+
+  const sent = {};
+
+  var i=0;
+
+  $.each(
+      json['results']['bindings'],
+      function (index, value) {
+        key = value['object']['value'];
+        data = value['label']['value'];   
+        sent[key] = data;   
+        i++;  
+      });
+
+  var myArray = "";
+
+  for (var key in sent) {
+    myArray += "<div class='row'><div class='col-10'>" + sent[key] + "</div><div class='col'><a href='" + key + "'><i class='fas fa-external-link-alt' aria-hidden='true'></i></a></div></div>";
+  }
+
+  document.getElementById("n_send").innerHTML = i;
+  document.getElementById("object_send").innerHTML = myArray;
+
+  if (i==0) {
+    var messaggio = "<p>Nessun risultato trovato</p>";
+    document.getElementById("object_send").innerHTML = messaggio;
+  }
+
+}
+
+function handle_cit(json) {
+
+  console.log(json);
+
+  const citations = {};
+
+  var i=0;
+
+  $.each(
+      json['results']['bindings'],
+      function (index, value) {
+        key = value['object']['value'];
+        data = value['label']['value'];   
+        citations[key] = data;  
+        i++;   
+      });
+
+  var myArray = "";
+
+  for (var key in citations) {
+    myArray += "<div class='row'><div class='col-10'>" + citations[key] + "</div><div class='col'><a href='" + key + "'><i class='fas fa-external-link-alt' aria-hidden='true'></i></a></div></div>";
+  }
+
+  document.getElementById("n_cit").innerHTML = i;
+  document.getElementById("object_cit").innerHTML = myArray;
+
+  if (i==0) {
+    var messaggio = "<p>Nessun risultato trovato</p>";
+    document.getElementById("object_cit").innerHTML = messaggio;
+  }
+
+}
+
+function handle_persons(json) {
+
+  console.log(json);
+
+  const people = {};
+
+  var i=0;
+
+  $.each(
+      json['results']['bindings'],
+      function (index, value) {
+        key = value['range']['value'];
+        data = value['label']['value'];   
+        people[key] = data;  
+        i++;   
+      });
+
+  var myArray = "";
+
+  for (var key in people) {
+    myArray += "<div class='row'><div class='col-9'>" + people[key] + "</div><div class='persona col' id='" + 
+    key + "'><i class='fa fa-user'></i></div><div class='col'><a href='" + 
+    key + "'><i class='fas fa-external-link-alt' aria-hidden='true'></i></a></div></div>";
+  }
+
+
+  document.getElementById("n_per").innerHTML = i;
+  document.getElementById("object_per").innerHTML = myArray;
+
+  if (i==0) {
+    var messaggio = "<p>Nessun risultato trovato</p>";
+    document.getElementById("object_per").innerHTML = messaggio;
+  }
+
+}
+
+function handle_count(json) {
+  console.log(json);
+
+  const toponimi = [];
+
+  const dataToponimi = [];
+
+  var max = 0;
+
+  $.each(
+      json['results']['bindings'],
+      function (index, value) {
+        const topo = [];
+
+        var toponimo = value['label']['value'];
+        var count = value['Count']['value'];
+        var temp = parseInt(count);
+        toponimi.push(toponimo);
+        dataToponimi.push([toponimo, count]);
+
+        if (temp>max) {
+          max = temp;
+        }
+        
+      });
+
+  // set the dimensions and margins of the graph
+      var margin = {top: 20, right: 30, bottom: 40, left: 90},
+          width = 460 - margin.left - margin.right,
+          height = 400 - margin.top - margin.bottom;
+
+      // append the svg object to the body of the page
+      var svg = d3.select("#my_dataviz")
+        .append("svg")
+          .attr("width", width + margin.left + margin.right)
+          .attr("height", height + margin.top + margin.bottom)
+        .append("g")
+          .attr("transform",
+                "translate(" + margin.left + "," + margin.top + ")");
+
+      // Parse the Data
+      //d3.csv("https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/7_OneCatOneNum_header.csv", function(data) {
+        // Add X axis
+        var x = d3.scaleLinear()
+          .domain([0, max])
+          .range([ 0, width]);
+        svg.append("g")
+          .attr("transform", "translate(0," + height + ")")
+          .call(d3.axisBottom(x))
+          .selectAll("text")
+            .attr("transform", "translate(-10,0)rotate(-45)")
+            .style("text-anchor", "end");
+
+        // Y axis
+        var y = d3.scaleBand()
+          .range([ 0, height ])
+          .domain(toponimi)
+          .padding(.1);
+        svg.append("g")
+          .call(d3.axisLeft(y))
+
+        //Bars
+        svg.selectAll("myRect")
+          .data(dataToponimi)
+          .enter()
+          .append("rect")
+          .attr("x", x(0) )
+          .attr("y", function(d) { return y(d[0]); })
+          .attr("width", function(d) { return x(d[1]); })
+          .attr("height", y.bandwidth() )
+          .attr("fill", "#69b3a2")
+
+
+  /*var texts = svg.selectAll("myRect")
+    .data(dataToponimi)
+    .enter()
+    .append("text");
+
+  texts.attr("x", function(d){ return d[1] / 4 - 20})
+      .attr("y", function(d,i){ return 22.26*i +20})
+      .attr("text-anchor", "middle")
+      .attr("fill", "#fff")
+      .text(function(d){ return d[1]});*/
+
+}
+
+
+function handle_count2(json) {
+  console.log(json);
+
+  const toponimi = [];
+
+  const dataToponimi = [];
+
+  const values = [];
+
+  var max = 0;
+
+  $.each(
+      json['results']['bindings'],
+      function (index, value) {
+        const topo = [];
+
+        var toponimo = value['label']['value'];
+        var count = value['Count']['value'];
+        var temp = parseInt(count);
+        toponimi.push(toponimo);
+        dataToponimi.push([toponimo, count]);
+
+        if (temp>max) {
+          max = temp;
+        }
+        
+      });
+
+  // set the dimensions and margins of the graph
+      var margin = {top: 20, right: 30, bottom: 40, left: 90},
+          width = 460 - margin.left - margin.right,
+          height = 400 - margin.top - margin.bottom;
+
+      // append the svg object to the body of the page
+      var svg = d3.select("#my_dataviz2")
+        .append("svg")
+          .attr("width", width + margin.left + margin.right)
+          .attr("height", height + margin.top + margin.bottom)
+        .append("g")
+          .attr("transform",
+                "translate(" + margin.left + "," + margin.top + ")");
+
+      // Parse the Data
+      //d3.csv("https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/7_OneCatOneNum_header.csv", function(data) {
+        // Add X axis
+        var x = d3.scaleLinear()
+          .domain([0, max])
+          .range([ 0, width]);
+        
+        svg.append("g")
+          .attr("transform", "translate(0," + height + ")")
+          .call(d3.axisBottom(x))
+          .selectAll("text")
+            .attr("transform", "translate(-10,0)rotate(-45)")
+            .style("text-anchor", "end");
+
+        // Y axis
+        var y = d3.scaleBand()
+          .range([ 0, height ])
+          .domain(toponimi)
+          .padding(.1);
+
+        svg.append("g")
+          .call(d3.axisLeft(y))
+
+        //Bars
+        svg.selectAll("myRect")
+          .data(dataToponimi)
+          .enter()
+          .append("rect")
+          .attr("x", x(0) )
+          .attr("y", function(d) { return y(d[0]); })
+          .attr("width", function(d) { return x(d[1]); })
+          .attr("height", y.bandwidth() )
+          .attr("fill", "#69b3a2")
+
+        svg.selectAll("text2")
+          .data(dataToponimi)
+          .enter().append("text2")
+          .text(function(d) {return d[1]})
+          .attr("class", "text")
+}
+
+
+function get_dataset(json) {
+
+  console.log(json);
+
+  data = json.results.bindings[0].documenti.value;
+
+  console.log(data);
+      
+}
+
+
+function get_occurrence(json) {
+
+}
+
+
+function get_support(json) {
+
+}
+
+function open_info() {
+
+    document.getElementById("info_luogo").style.display = "block";
+    document.getElementById("place_info").style.display = "block";
+    document.getElementById("topo").style.display = "none";
+    document.getElementById("rif").style.display = "none";
+}
+
+function open_toponimi() {
+
+    document.getElementById("info_luogo").style.display = "block";
+    document.getElementById("place_info").style.display = "none";
+    document.getElementById("topo").style.display = "block";
+    document.getElementById("rif").style.display = "none";
+}
+
+function open_riferimenti() {
+
+    document.getElementById("info_luogo").style.display = "block";
+    document.getElementById("place_info").style.display = "none";
+    document.getElementById("topo").style.display = "none";
+    document.getElementById("rif").style.display = "block";
+}
+
+function open_collegamenti() {
+
+    document.getElementById("references").style.display = "flex";
+    document.getElementById("statistiche").style.display = "none";
+    document.getElementById("regole_associazione").style.display = "none";
+}
+
+function open_statistiche() {
+
+    document.getElementById("references").style.display = "none";
+    document.getElementById("statistiche").style.display = "flex";
+    document.getElementById("regole_associazione").style.display = "none";
+}
+
+function open_correlazioni() {
+
+    document.getElementById("references").style.display = "none";
+    document.getElementById("statistiche").style.display = "none";
+    document.getElementById("regole_associazione").style.display = "flex";
+}
+
+var header = document.getElementById("ref_buttons");
+var btns = header.getElementsByClassName("btn");
+for (var i = 0; i < btns.length; i++) {
+  btns[i].addEventListener("click", function() {
+  var current = document.getElementsByClassName("active");
+  current[0].className = current[0].className.replace(" active", "");
+  this.className += " active";
+  });
+}
+
+//out = "";
+//for(i = 0; i < resultArray.length; i++){
+ //   out = out + JSON.stringify(resultArray[i])
+//}
+//queryStringOutput = (queryStringOutput + out).replace("}{",",");
+
+
+/*
+
+var locations = [
+  ["LOCATION_1", 11.8166, 122.0942],
+  ["LOCATION_2", 11.9804, 121.9189],
+  ["LOCATION_3", 10.7202, 122.5621],
+  ["LOCATION_4", 11.3889, 122.6277],
+  ["LOCATION_5", 10.5929, 122.6325]
+];
+
+var map = L.map('map').setView([11.206051, 122.447886], 8);
+mapLink =
+  '<a href="http://openstreetmap.org">OpenStreetMap</a>';
+L.tileLayer(
+  'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
+    attribution: '&copy; ' + mapLink + ' Contributors',
+    maxZoom: 18,
+  }).addTo(map);
+
+for (var i = 0; i < locations.length; i++) {
+  marker = new L.marker([locations[i][1], locations[i][2]])
+    .bindPopup(locations[i][0])
+    .addTo(map);
+}
+*/
+
+$(document).on("click", ".persona", function (ev) {
+
+    var link = this.id;
+    //alert(nome_autore);
+    //$('#myModal').text("");
+    window.open("Persona.html?link="+this.id);
+    
+
+  });