modificata query per filtri sintattici, gestione periodi, aggiunti font

per browsing
This commit is contained in:
cesare 2023-01-10 15:26:58 +01:00
parent 042528001a
commit 6eb0d68eeb
4 changed files with 1553 additions and 497 deletions

View File

@ -10,6 +10,14 @@
* Canto * Canto
*/ */
.blog-main{
font-size: 13px;
font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue,
Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell,
Fira Sans, Droid Sans,
sans-serif;
}
/* /*
* Footer * Footer
*/ */
@ -29,6 +37,10 @@ Popover properties
color: red; color: red;
font-size: 12px; font-size: 12px;
} }
.popover-footer {
color: gray;
font-size: 10px;
}
/* /*
Minimap Minimap

View File

@ -1,19 +1,9 @@
/** /**
* *
*/ */
var resetResult; var resetResult;
$(document).ready(function() { $(document).ready(function() {
const categoriegrammaticali = {
"v": "Verbo", "s": "Sostantivo", "a": "Aggettivo", "p": "Pronome", "r": "Articolo", "b": "Avverbio", "e": "Preposizione",
"c": "Congiunzione", "i": "Interiezione", "n": "Onomastica", "f": "Citazione", "l": "Locuzione",
"r-e": "Articolo, Preposizione", "b-v": "Avverbio, Verbo", "p-v": "Pronome, Verbo",
"b-p-v": "Avverbio, Pronome, Verbo", "b-p": "Avverbio, Pronome",
"e-p": "Preposizione, Pronome", "a-s": "Aggettivo, Sostantivo",
"e-r": "Preposizione, Articolo", "v-b": "Verbo, Avverbio", "v-p": "Verbo, Pronome",
"v-p-b": "Verbo, Pronome, Avverbio", "p-b": "Pronome, Avverbio",
"p-e": "Pronome, Preposizione", "s-a": "Sostantivo, Aggettivo",
}
const cantobadgeclass = 'badge badge-outline-info badge-pill' const cantobadgeclass = 'badge badge-outline-info badge-pill'
@ -21,13 +11,16 @@ $(document).ready(function() {
const myEngine = new Comunica.QueryEngine(); const myEngine = new Comunica.QueryEngine();
const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commediaontosintgra/query"; const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commediaontosintgra/query";
var listaVersi = new Set() var shownSentenceList = new Set()
var currentMinimap = '' var currentMinimap = ''
var listarisultati = []; var listarisultati = [];
var resultSentences = new Set()
var minimapScrolling = false; var minimapScrolling = false;
var displayId = 'displaycanto' var displayId = 'displaycanto'
var minimapTopPos; var minimapTopPos;
var purgatorioLoaded = false;
var paradisoLoaded = false;
//used in minimap //used in minimap
// //
@ -35,16 +28,10 @@ $(document).ready(function() {
let minimapSize = document.createElement('div'); let minimapSize = document.createElement('div');
let viewer = document.createElement('div'); let viewer = document.createElement('div');
let minimapContent = document.createElement('iframe'); let minimapContent = document.createElement('iframe');
let scale = 0.1;
let realScale; let realScale;
let mappedElement = ''; let mappedElement = '';
var purgatorioSelected = "PurgatorioCanto_1"; resetResult=function(){
var paradisoSelected = "ParadisoCanto_1";
var infernoSelected = "InfernoCanto_1";
resetResult = function() {
//console.log('clean result') //console.log('clean result')
cleanSearchResult() cleanSearchResult()
esprlogica = [] esprlogica = []
@ -53,16 +40,38 @@ $(document).ready(function() {
hideMinimap(); hideMinimap();
createAllDivCanti() createAllDivCanti()
const start = performance.now(); const start = performance.now();
showCantica('Inferno') showCantica('Inferno')
var purgatorioLoaded = false; showCantica('Purgatorio')
var paradisoLoaded = false; showCantica('Paradiso')
$("#InfernoCanto_1").attr('style', 'display:block') $("#InfernoCanto_1").attr('style', 'display:block')
drawMinimap("InfernoCanto_1") drawMinimap("InfernoCanto_1")
const end = performance.now(); const end = performance.now();
console.log(`Load cantiche time: ${end - start} ms`); console.log(`Load cantiche time: ${end - start} ms`);
$("[data-cg]").hover(function() {
var details=getHoverContent($(this).data("cg"))
var index = details.indexOf(",");
var sentencetype= $(this).attr('class');
var categoria = "";
if (index != -1){
categoria = details.substring(0,index);
details = details.substring(index+1);
}else{
categoria = details;
details = "";
}
$(this).popover({title: categoria, content: details+"<div id='sentence' class='$"+sentencetype+
" popover-footer'>Periodo</div>", html:true, placement: "top",
trigger: "click"}).on("hidden.bs.popover", function(e) {
sentenceId=$(this).attr('class').split(' ')[0].replace('$','');
resetSentenceStructure(sentenceId)
shownSentenceList.delete(sentenceId)
});
});
/*
jQuery(document).delegate('#cantica2', 'click', function(e) { jQuery(document).delegate('#cantica2', 'click', function(e) {
e.preventDefault(); e.preventDefault();
@ -71,15 +80,7 @@ $(document).ready(function() {
purgatorioLoaded = true; purgatorioLoaded = true;
} }
$('.canto').each(function() {
$(this).attr("style", 'display:none');
});
$("#"+purgatorioSelected).attr('style', 'display:block')
manageMiniMap("#"+purgatorioSelected);
return true;
}); });
jQuery(document).delegate('#cantica3', 'click', function(e) { jQuery(document).delegate('#cantica3', 'click', function(e) {
e.preventDefault(); e.preventDefault();
@ -88,36 +89,22 @@ $(document).ready(function() {
paradisoLoaded = true; paradisoLoaded = true;
} }
$('.canto').each(function() {
$(this).attr("style", 'display:none');
});
$("#"+paradisoSelected).attr('style', 'display:block')
manageMiniMap("#"+paradisoSelected);
return true;
}); });
jQuery(document).delegate('#cantica1', 'click', function(e) { */
jQuery(document).delegate('#sentence', 'click', function(e) {
e.preventDefault(); e.preventDefault();
sentenceId=$(this).attr('class').split(' ')[0].replace('$','')
$('.canto').each(function() { console.log(sentenceId)
$(this).attr("style", 'display:none'); if (shownSentenceList.has(sentenceId)){
}); resetSentenceStructure(sentenceId)
$("#"+infernoSelected).attr('style', 'display:block') shownSentenceList.delete(sentenceId)
manageMiniMap("#"+infernoSelected);
return true;
});
$("[data-cg]").hover(function() {
var details = getHoverContent($(this).data("cg"))
var index = details.indexOf(",");
var categoria = "";
if (index != -1) {
categoria = details.substring(0, index);
details = details.substring(index + 1);
} else {
categoria = details;
details = "";
} }
$(this).popover({ title: categoria, content: details, trigger: "click" }); else{
showSentenceStructure (sentenceId)
shownSentenceList.add(sentenceId)
}
}); });
var mmih = 0 var mmih = 0
@ -138,6 +125,7 @@ $(document).ready(function() {
}); });
jQuery(document).delegate('.navig-canto', 'click', function(e) { jQuery(document).delegate('.navig-canto', 'click', function(e) {
$('.canto').each(function() { $('.canto').each(function() {
$(this).attr("style", 'display:none'); $(this).attr("style", 'display:none');
@ -151,15 +139,6 @@ $(document).ready(function() {
function manageMiniMap(divElem) { function manageMiniMap(divElem) {
mmiw = $("#" + displayId).innerWidth(); mmiw = $("#" + displayId).innerWidth();
mmih = $("#" + displayId).innerHeight(); mmih = $("#" + displayId).innerHeight();
var selectedCanto = ($(divElem).attr('name').replace(" ", "_"));
if (selectedCanto.startsWith("Inferno")){
infernoSelected = selectedCanto;
}else
if(selectedCanto.startsWith("Paradiso")){
paradisoSelected = selectedCanto;
}else{
purgatorioSelected = selectedCanto;
}
drawMinimap($(divElem).attr('name').replace(" ", "_")) drawMinimap($(divElem).attr('name').replace(" ", "_"))
} }
@ -183,36 +162,36 @@ $(document).ready(function() {
//Utility functions //Utility functions
function getHoverContent(categ) { function getHoverContent(categ){
//console.log('Categoria '+categ) //console.log('Categoria '+categ)
if (categ.includes('-')) { if(categ.includes('^')){
categs = categ.split('-') categs=categ.split('^')
mycat = [] mycat=[]
for (cat of categs) { for (cat of categs){
mycat.push(cat[0]) mycat.push(cat[0])
} }
console.log(mycat.join('-')) console.log(mycat.join('-'))
return categoriegrammaticali[mycat.join('-')] return categoriegrammaticali[mycat.join('-')]
} }
if (categ[0] == 'v') { if (categ[0]=='v'){
return parserVerbi.parse(categ).split(',').filter(prop => prop.length > 0).join() return parserVerbi.parse(categ).split(',').filter(prop => prop.length > 0).join()
} }
if (categ[0] == 's') { if(categ[0]=='s'){
return parserSostantivi.parse(categ).split(',').filter(prop => prop.length > 0).join() return parserSostantivi.parse(categ).split(',').filter(prop => prop.length > 0).join()
} }
if (categ[0] == 'e') { if(categ[0]=='e'){
return parserPreposizioni.parse(categ).split(',').filter(prop => prop.length > 0).join() return parserPreposizioni.parse(categ).split(',').filter(prop => prop.length > 0).join()
} }
if (categ[0] == 'b') { if(categ[0]=='b'){
return parserAvverbi.parse(categ).split(',').filter(prop => prop.length > 0).join() return parserAvverbi.parse(categ).split(',').filter(prop => prop.length > 0).join()
} }
if (categ[0] == 'p') { if(categ[0]=='p'){
return parserPronomi.parse(categ).split(',').filter(prop => prop.length > 0).join() return parserPronomi.parse(categ).split(',').filter(prop => prop.length > 0).join()
} }
if (categ[0] == 'a') { if(categ[0]=='a'){
return parserAggettivi.parse(categ).split(',').filter(prop => prop.length > 0).join() return parserAggettivi.parse(categ).split(',').filter(prop => prop.length > 0).join()
} }
if (categ[0] == 'r') { if(categ[0]=='r'){
return parserArticolo.parse(categ).split(',').filter(prop => prop.length > 0).join() return parserArticolo.parse(categ).split(',').filter(prop => prop.length > 0).join()
} }
if (categ[0] == 'f') { if (categ[0] == 'f') {
@ -224,11 +203,10 @@ $(document).ready(function() {
if (categ[0] == 'c') { if (categ[0] == 'c') {
return parserCongiunzione.parse(categ).split(',').filter(prop => prop.length > 0).join(); return parserCongiunzione.parse(categ).split(',').filter(prop => prop.length > 0).join();
} }
//console.log(categ[0])
return categoriegrammaticali[categ[0]] return categoriegrammaticali[categ[0]]
} }
function drawMinimap(name) { function drawMinimap(name){
showMinimap(name) showMinimap(name)
currentMinimap = name; currentMinimap = name;
@ -253,23 +231,24 @@ $(document).ready(function() {
} }
function cleanSearchResult() { function cleanSearchResult() {
for (forma of listarisultati) {
for (verso of listarisultati) { idforma = '#' + forma
idverso = '#' + verso $(idforma).removeClass("font-weight-bold mark ")
$(idverso).attr('class', 'f6 text-secondary text-nowrap font-weight-lighter')
} }
$(".badge").remove(); $(".badge").remove();
listarisultati = [] listarisultati = []
resultSentences=new Set()
if (currentMinimap != '') if (currentMinimap != '')
showMinimap(currentMinimap) showMinimap(currentMinimap)
} }
function manageQuery() {
function manageQuery(){
cleanSearchResult() cleanSearchResult()
esprlogica = [] esprlogica = []
jsonQuery = getJsonQuery() jsonQuery=getJsonQuery()
console.log("got json query") console.log("got json query")
if (jsonQuery['QueryAvanzata'] == 0 && jsonQuery['Clausola0']['queryText'] == '') { if(jsonQuery['QueryAvanzata']==0 && jsonQuery['Clausola0']['queryText']==''){
alert('Digitare una stringa da cercare') alert('Digitare una stringa da cercare')
return return
} }
@ -280,6 +259,44 @@ $(document).ready(function() {
executeQuerySearch(myquery) executeQuerySearch(myquery)
} }
//manage sentence and clauses
function showSentenceStructure(sentence) {
sid = '.' + sentence.toString()
//console.log(sid)
$(sid).addClass('font-italic')
$(sid).each(function(){
//console.log($(this).attr('class'))
if ($(this).attr('class').includes(' Ma ')){
$(this).addClass("text-primary font-weight-normal")
}
if ($(this).attr('class').includes(' Su ')){
$(this).addClass("text-info font-weight-normal")
}
if ($(this).attr('class').includes(' Co ')){
$(this).addClass("text-warning font-weight-normal")
}
if ($(this).attr('class').includes(' Pc ')){
$(this).addClass("text-success font-weight-normal")
}
if ($(this).attr('class').includes(' Pa ')){
$(this).addClass("text-secondary font-weight-normal")
}
})
}
function resetSentenceStructure(sentence) {
$(" ." + sentence).removeClass('text-info font-weight-normal')
$(" ." + sentence).removeClass('text-primary font-weight-normal')
$(" ." + sentence).removeClass('text-secondary font-weight-normal')
$(" ." + sentence).removeClass('text-warning font-weight-normal')
$(" ." + sentence).removeClass('text-success font-weight-normal')
$(" ." + sentence).removeClass('font-italic')
}
//minimap management //minimap management
@ -379,125 +396,92 @@ $(document).ready(function() {
currentMinimap = '' currentMinimap = ''
} }
//Cantica management functions //Cantica management functions
function showCantica(cantica) { function showCantica(cantica) {
//var listaCanti = new Set() //var listaCanti = new Set()
var setVersi = new Set() var setVersi = new Set()
//$("#loader").show();
var containerForme = formeprima var containerForme = formeprima
if (cantica == 'Paradiso') var idcantica=1;
if (cantica == 'Paradiso'){
containerForme = formeterza containerForme = formeterza
if (cantica == 'Purgatorio') idcantica=3
}
if (cantica == 'Purgatorio'){
containerForme = formeseconda containerForme = formeseconda
idcantica=2
}
const endlc = performance.now(); const endlc = performance.now();
console.log(`Load ` + cantica + ` time: ${endlc - start} ms`); console.log(`Load `+cantica+` time: ${endlc - start} ms`);
var elverso, formaItem var elverso, formaItem
for (var cmpItem of containerForme) { for (var cmpItem of containerForme) {
formaItem = cmpItem.split("_") formaItem = cmpItem.split("_")
var sentenceid=idcantica+"_"+formaItem[1]+"_s_"+formaItem[5]
//createDivVerso(cantica, num, canto, forma, catgram, pos) //createDivVerso(cantica, num, canto, forma, catgram, pos)
if (!setVersi.has(cantica + "_" + formaItem[3] + "_" + 'Canto_' + formaItem[1])) { if (! setVersi.has(cantica + "_" + formaItem[3] + "_" + 'Canto_' + formaItem[1])){
elverso = createDivVerso(cantica, formaItem[3], 'Canto_' + formaItem[1], formaItem[0], formaItem[4], formaItem[2]) elverso=createDivVerso(cantica, formaItem[3], 'Canto_' + formaItem[1], formaItem[0], formaItem[4], formaItem[2], sentenceid,formaItem[6])
setVersi.add(cantica + "_" + formaItem[3] + "_" + 'Canto_' + formaItem[1]) setVersi.add(cantica+ "_" + formaItem[3] + "_" + 'Canto_' + formaItem[1])
} }
else { else{
//setVersi = createDivVersi(setVersi, cantica, formaItem[3], 'Canto_' + formaItem[1]) createSpanFormeNew(cantica, 'Canto_' + formaItem[1], formaItem[3], formaItem[0], formaItem[4], formaItem[2], sentenceid,formaItem[6],elverso)
createSpanFormeNew(cantica, 'Canto_' + formaItem[1], formaItem[3], formaItem[0], formaItem[4], formaItem[2], elverso)
} }
/*
forma.numverso = formaItem[3];
forma.canto = 'Canto ' + formaItem[1];
forma.pos = formaItem[2];
forma.form = formaItem[0];
forma.catgramm = formaItem[4];
forma.cantica = cantica;
createSpanForme(forma)
*/
} }
//$("#loader").hide();
return return
} }
/*
function createSpanForme(element) {
function createSpanFormeNew(cantica, canto, numverso, forma, catgramm, pos, sentenceid, clausefunct, elementoverso) {
var spanoccorrenza = $('<span />') var spanoccorrenza = $('<span />')
var pos = parseInt(element.pos) spanoccorrenza.attr('id', pos)
spanoccorrenza.attr('id', element.cantica + "_" + element.canto.replace(" ", "_") + "_" + element.numverso + "_" + pos)
spanoccorrenza.attr('data-cg', element.catgramm)
if (listarisultati.length > 0 && listarisultati.includes(spanoccorrenza.attr('id')))
spanoccorrenza.attr('class', "font-weight-bold mark ")
spanoccorrenza.append(element.form.replaceAll("%20", " "))
elementoverso = $('#' + element.cantica + "_" + element.canto.replace(" ", "_") + "_" + element.numverso)
spanoccorrenza.appendTo(elementoverso)
elementoverso.append('&nbsp;')
}
*/
function createSpanFormeNew(cantica, canto, numverso, forma, catgramm, pos, elementoverso) {
var spanoccorrenza = $('<span />')
//var pos = parseInt(pos)
spanoccorrenza.attr('id', cantica + "_" + canto + "_" + numverso + "_" + pos)
spanoccorrenza.attr('data-cg', catgramm) spanoccorrenza.attr('data-cg', catgramm)
spanoccorrenza.attr('class', sentenceid+" "+clausefunct)
//if (listarisultati.length > 0 && listarisultati.includes(spanoccorrenza.attr('id'))) //if (listarisultati.length > 0 && listarisultati.includes(spanoccorrenza.attr('id')))
// spanoccorrenza.attr('class', "font-weight-bold mark ") // spanoccorrenza.attr('class', "font-weight-bold mark ")
spanoccorrenza.append(forma + " ") spanoccorrenza.append(forma+" ")
//elementoverso = $('#' + cantica + "_" + canto + "_" + numverso)
spanoccorrenza.appendTo(elementoverso) spanoccorrenza.appendTo(elementoverso)
//elementoverso.append('&nbsp;')
} }
function createDivVersi(setVersi, cantica, num, canto) { function createDivVerso(cantica, num, canto, forma, catgram, pos, sentenceid, clausefunct) {
if (setVersi.has(cantica + "_" + num + "_" + canto))
return setVersi
else {
var elementoverso = $('<p />') var elementoverso = $('<p />')
elementoverso.append(num + ". ") elementoverso.append(num + ". ")
elementoverso.attr("style", "line-height: 0.5em") elementoverso.attr("style", "line-height: 0.5em")
elementoverso.attr('class', 'f6 text-secondary text-nowrap font-weight-lighter') elementoverso.attr('class', 'f6 text-secondary text-nowrap font-weight-lighter '+cantica+' '+canto)
elementoverso.attr('id', cantica + "_" + canto + "_" + num) elementoverso.attr('id', cantica + "_" + canto + "_" + num)
var spanoccorrenza = $('<span />')
spanoccorrenza.attr('id', pos)
spanoccorrenza.attr('data-cg', catgram)
spanoccorrenza.attr('class', sentenceid+" "+clausefunct)
spanoccorrenza.append(forma+" ")
spanoccorrenza.appendTo(elementoverso)
elementoverso.appendTo('#' + cantica + canto) elementoverso.appendTo('#' + cantica + canto)
setVersi.add(cantica + "_" + num + "_" + canto) return elementoverso
return setVersi
}
} }
function createDivVerso(cantica, num, canto, forma, catgram, pos) {
var elementoverso = $('<p />')
elementoverso.append(num + ". ") function createAllDivCanti() {
elementoverso.attr("style", "line-height: 0.5em") cantiche=["Inferno", "Purgatorio","Paradiso"]
for (cantica of cantiche){
elementoverso.attr('class', 'f6 text-secondary text-nowrap font-weight-lighter') for (var i=1; i<35; i++){
if(i==34 && cantica!=="Inferno"){
elementoverso.attr('id', cantica + "_" + canto + "_" + num) continue
}
var spanoccorrenza = $('<span />') canto= "Canto "+i
//var pos = parseInt(pos)
spanoccorrenza.attr('id', cantica + "_" + canto + "_" + num + "_" + pos)
spanoccorrenza.attr('data-cg', catgram)
spanoccorrenza.append(forma + " ")
spanoccorrenza.appendTo(elementoverso)
elementoverso.appendTo('#' + cantica + canto)
return elementoverso
}
/*
function createDivCanti(orderedListaCanti, cantica, canto) {
if (orderedListaCanti.has(canto)) {
return orderedListaCanti
}
var divcanto = $('<div />') var divcanto = $('<div />')
var titolocanto = $('<h4 class="titolo-canto pb-2" />') var titolocanto = $('<h4 class="titolo-canto pb-2" />')
titolocanto.append(cantica + ", " + canto) titolocanto.append(cantica + ", " + canto)
@ -506,41 +490,20 @@ $(document).ready(function() {
divcanto.attr('id', (cantica + canto).replace(" ", "_")) divcanto.attr('id', (cantica + canto).replace(" ", "_"))
titolocanto.appendTo(divcanto) titolocanto.appendTo(divcanto)
divcanto.appendTo(' .blog-main') divcanto.appendTo(' .blog-main')
orderedListaCanti.add(canto)
return orderedListaCanti
}
*/
function createAllDivCanti() {
cantiche = ["Inferno", "Purgatorio", "Paradiso"]
for (cantica of cantiche) {
for (var i = 1; i < 35; i++) {
if (i == 34 && cantica !== "Inferno") {
continue
}
canto = "Canto " + i
var divcanto = $('<div />')
var titolocanto = $('<h4 class="titolo-canto pb-2" />')
titolocanto.append(cantica + ", " + canto)
divcanto.attr('class', 'canto')
divcanto.attr('style', 'display:none')
divcanto.attr('id', (cantica + canto).replace(" ", "_"))
titolocanto.appendTo(divcanto)
divcanto.appendTo(' .blog-main')
} }
} }
} }
//execute query //execute query
async function executeQuerySearch(query) { async function executeQuerySearch(query) {
$("#loader").show();
seachbBindingsStream = await myEngine.queryBindings(query, { sources: [{ type: 'sparql', value: sparqlEndpoint },], }); seachbBindingsStream = await myEngine.queryBindings(query, { sources: [{ type: 'sparql', value: sparqlEndpoint },], });
//console.log(query) //console.log(query)
alert(query) alert(query)
try { try {
var result = new Set() var result = new Set()
var resultClauses = new Set()
var resultsInCantica = [] var resultsInCantica = []
var resultsInCanto = [] var resultsInCanto = []
seachbBindingsStream.on('data', (binding) => { seachbBindingsStream.on('data', (binding) => {
@ -554,22 +517,37 @@ $(document).ready(function() {
numverso = binding.get('NumeroVerso').value; numverso = binding.get('NumeroVerso').value;
//posizione del frammento //posizione del frammento
pos = binding.get('pos').value; pos = binding.get('pos').value;
if (!result.has(cantica + "_" + canto.replace(" ", "_") + "_" + numverso + "_" + pos)) { //regione della clausola
result.add(cantica + "_" + canto.replace(" ", "_") + "_" + numverso + "_" + pos) var clfrom=binding.get('clfr').value;
var clto=binding.get('clto').value;
var cltype=binding.get('clatype').value
//id del periodo
var sentenceid=binding.get('sentence').value.replace('http://dantenetwork.it/data/commedia/','')
//console.log(sentenceid)
if (!result.has(pos)){
result.add(pos)
resultsInCantica.push(cantica); resultsInCantica.push(cantica);
resultsInCanto.push(cantica + canto) resultsInCanto.push(cantica + canto)
} }
resultClauses.add(cantica + "_" + canto.replace(" ", "_") + "_" + numverso + "-" +clfrom+'_'+clto+"-"+cltype)
resultSentences.add(sentenceid)
}); });
seachbBindingsStream.on('end', () => { seachbBindingsStream.on('end', () => {
console.log('start rendering...')
listarisultati = Array.from(result) listarisultati = Array.from(result)
cantiche = ["Inferno", "Purgatorio", "Paradiso"] cantiche = ["Inferno", "Purgatorio", "Paradiso"]
console.log('periodi end...')
//evidenzia risultati //evidenzia risultati
for (ris of listarisultati) { for (ris of listarisultati) {
idris = '#' + ris idris = '#' + ris
$(idris).attr('class', "font-weight-bold mark ") //$(idris).attr('class', "font-weight-bold mark ")
$(idris).addClass("font-weight-bold mark ")
} }
//aggiunge badge con totale risultati accanto alle cantiche //aggiunge badge con totale risultati accanto alle cantiche
@ -577,7 +555,7 @@ $(document).ready(function() {
for (cantica of cantiche) { for (cantica of cantiche) {
i += 1 i += 1
let count = resultsInCantica.reduce((n, x) => n + (x === cantica), 0); let count = resultsInCantica.reduce((n, x) => n + (x === cantica), 0);
if (count > 0) { if (count>0){
var spanbadgecantica = $('<span />'); var spanbadgecantica = $('<span />');
spanbadgecantica.attr('class', 'badge badge-primary badge-pill ml-1'); spanbadgecantica.attr('class', 'badge badge-primary badge-pill ml-1');
spanbadgecantica.append(count) spanbadgecantica.append(count)
@ -585,13 +563,13 @@ $(document).ready(function() {
} }
} }
//aggiunge badge con totale risultati accanto ai canti //aggiunge badge con totale risultati accanto ai canti
console.log('results end...')
for (cantica of cantiche) { for (cantica of cantiche) {
for (k of Array(35).keys()) { for (k of Array(35).keys()) {
if (k == 0) if (k == 0)
continue continue
let count = resultsInCanto.reduce((n, x) => n + (x === cantica + 'Canto ' + k), 0); let count = resultsInCanto.reduce((n, x) => n + (x === cantica + 'Canto ' + k), 0);
if (count > 0) { if (count>0){
var spanbadge = $('<span />'); var spanbadge = $('<span />');
spanbadge.attr('class', cantobadgeclass); spanbadge.attr('class', cantobadgeclass);
spanbadge.append(count) spanbadge.append(count)
@ -601,15 +579,12 @@ $(document).ready(function() {
} }
} }
} }
console.log('badge end...')
//aggiorna minimap //aggiorna minimap
if (currentMinimap != '') { if (currentMinimap != '') {
showMinimap(currentMinimap) showMinimap(currentMinimap)
} }
$("#loader").hide();
}); });
} }
@ -619,21 +594,32 @@ $(document).ready(function() {
}; };
/* /*
* REGOLE DI PARSING PER VISUALIZZAZIONE PROPRIETÀ * REGOLE DI PARSING PER VISUALIZZAZIONE CATEGORIE GRAMMATICALI
*/ */
var categoriegrammaticaliGrammar = `Expression = head:(Filtro){return 'Verbo,'+head.join()} const categoriegrammaticali={"v":"Verbo", "s":"Sostantivo", "a":"Aggettivo", "p":"Pronome", "r":"Articolo", "b":"Avverbio","e":"Preposizione",
Filtro= fhead:("v") tail:( transitivita? diatesi? impersonalita* "c":"Congiunzione", "i":"Interiezione", "n":"Onomastica", "f":"Citazione", "l":"Locuzione",
"r-e":"Articolo, Preposizione", "b-v":"Avverbio, Verbo", "p-v":"Pronome, Verbo",
"b-p-v":"Avverbio, Pronome, Verbo", "b-p":"Avverbio, Pronome",
"e-p":"Preposizione, Pronome", "a-s":"Aggettivo, Sostantivo",
"e-r":"Preposizione, Articolo", "v-b":"Verbo, Avverbio", "v-p":"Verbo, Pronome",
"v-p-b":"Verbo, Pronome, Avverbio", "p-b":"Pronome, Avverbio",
"p-e":"Pronome, Preposizione", "s-a":"Sostantivo, Aggettivo",}
var categoriegrammaticaliGrammar=`Expression = head:(Filtro){return 'Verbo,'+head.join()}
Filtro= fhead:("v")? tail:( transitivita? diatesi? impersonalita?
coniugazione? modotempo? coniugazione? modotempo?
persona? funzione* declinazione? persona? funzione? declinazione?
genere? numero? grado?){return tail} genere? numero? grado?){return tail}
diatesi= [a|p] {if (text()=='a') return ' Attivo'; else return ' Passivo';} diatesi= [a|p] {if (text()=='a') return ' Attivo'; else return ' Passivo';}
transitivita=[i|t]? {if (text()=='t') return ' Transitivo'; else if (text()=='i') return ' Intransitivo';} transitivita=[i|t]? {if (text()=='t') return ' Transitivo'; else if (text()=='i') return ' Intransitivo';}
impersonalita=([*|+]) {if (text()=='*') return ' Impersonale'; else if (text()=='+')return ' Riflessivo';} impersonalita=([*|+])? {if (text()=='*') return ' Impersonale'; else if (text()=='+')return ' Riflessivo';}
coniugazione=[1|2|3|4|5]? {switch(parseInt(text())){ coniugazione=[1|2|3|4|5]? {switch(parseInt(text())){
case(1): return ' Prima coniugazione'; case(1): return ' Prima coniugazione';
@ -700,9 +686,9 @@ _ "whitespace"= " "*
` `
var categoriaGrammaticaleSostantivo = ` var categoriaGrammaticaleSostantivo = `
Expression = head:(Filtro){return 'Sostantivo,'+head.join()} Expression = head:(Filtro){return 'Sostantivo,'+head.join()}
Filtro= fhead:("s") tail:( genereforma? declinazionesostantivo? generelemma? Filtro= fhead:("s")? tail:( genereforma? declinazionesostantivo? generelemma?
numersingolareplurale? locuzione?){return tail} numersingolareplurale? locuzione?){return tail}
@ -717,7 +703,7 @@ generelemma=[m|f]? {if (text()=='m') return ' lemma maschile'; else if (text()==
numersingolareplurale=[s|p]? {if (text()=='s') return ' numero singolare'; else if (text()=='p') return ' numero plurale';} numersingolareplurale=[s|p]? {if (text()=='s') return ' numero singolare'; else if (text()=='p') return ' numero plurale';}
locuzione="lv" {return('In Locuzione verbo');} locuzione="Iv" {return('In Locuzione verbo');}
Integer "integer" Integer "integer"
= _ [0-9]+ { return parseInt(text(), 10); } = _ [0-9]+ { return parseInt(text(), 10); }
@ -726,9 +712,9 @@ _ "whitespace"= " "*
` `
var categoriaGrammaticalePreposizione = ` var categoriaGrammaticalePreposizione = `
Expression = head:(Filtro){return 'Preposizione,'+head.join()} Expression = head:(Filtro){return 'Preposizione,'+head.join()}
Filtro= fhead:("e") tail:( tipo1? tipo2? sintassi? complemento1? complemento2?){return tail} Filtro= fhead:("e")? tail:( tipo1? tipo2? sintassi? complemento1? complemento2?){return tail}
tipo1=[p|i] {if (text()=='i') return ' Impropria'; else if (text()=='p') return ' Impropria';} tipo1=[p|i] {if (text()=='i') return ' Impropria'; else if (text()=='p') return ' Impropria';}
@ -808,16 +794,17 @@ complemento2=
"k14" {return(" Di Rapporto")} "k14" {return(" Di Rapporto")}
` `
var avverbio = `Expression = head:(Filtro){return 'Avverbio,'+head.join()} var avverbio = ` Expression = head:(Filtro){return 'Avverbio,'+head.join()}
Filtro= fhead:("b") tail:( locuzione? tipo?){return tail} Filtro= fhead:("b")? tail:( fake? tipo?){return tail}
locuzione = "lz" {return(' Avverbio in Locuzione Separato')}/ fake= ""
"l" {return(' Avverbio in Locuzione')}
tipo="c+" {return(' Avverbio al Comparativo di Maggioranza')}/ tipo="c+" {return(' Avverbio al Comparativo di Maggioranza')}/
"c-" {return(' Avverbio al Comparativo di Minoranza')}/ "c-" {return(' Avverbio al Comparativo di Minoranza')}/
"sa" {return(' Avverbio al Superlativo Assoluto')}/ "sa" {return(' Avverbio al Superlativo Assoluto')}/
"sr" {return(' Avverbio al Superlativo Relativo')}/ "sr" {return(' Avverbio al Superlativo Relativo')}/
"lz" {return(' Avverbio in Locuzione Separato')}/
"l" {return(' Avverbio in Locuzione')}/
"y" {return(' Avverbio Proclitico')}/ "y" {return(' Avverbio Proclitico')}/
"x" {return(' Avverbio Enclitico')}/ "x" {return(' Avverbio Enclitico')}/
"c" {return(' Avverbio al Comparativo di Uguaglianza')} "c" {return(' Avverbio al Comparativo di Uguaglianza')}
@ -828,11 +815,12 @@ Integer "integer"
_ "whitespace"= " "* _ "whitespace"= " "*
` `
var pronome = `Expression = head:(Filtro){return 'Pronome,'+head.join()} var pronome = `
Filtro= fhead:("p") tail:( tipo_pronome? classe_pronome? genere_pronome?
Expression = head:(Filtro){return 'Pronome,'+head.join()}
Filtro= fhead:("p")? tail:( tipo_pronome? classe_pronome? genere_pronome?
numero_pronome? forma_pronome? funzione_pronome? tiporiflessivi?){return tail} numero_pronome? forma_pronome? funzione_pronome? tiporiflessivi?){return tail}
@ -859,8 +847,8 @@ forma_pronome= "l" {return(" Pronome Libero")}/
"i" {return(" Pronome Libero In Composizione")}/ "i" {return(" Pronome Libero In Composizione")}/
"y" {return(" Pronome Proclitico")}/ "y" {return(" Pronome Proclitico")}/
"x" {return(" Pronome Enclitico")} "x" {return(" Pronome Enclitico")}
funzione_pronome= "soi" {return(' Libero Soggetto Impersonale')}/ funzione_pronome="so" {return(' Libero Soggetto')}/
"so" {return(' Libero Soggetto')}/ "soi" {return(' Libero Soggetto Impersonale')}/
"co" {return(' Libero Complemento')}/ "co" {return(' Libero Complemento')}/
"ra" {return(' Libero Rafforzativo')}/ "ra" {return(' Libero Rafforzativo')}/
"ac" {return(' Clitico Accusativo')}/ "ac" {return(' Clitico Accusativo')}/
@ -881,9 +869,9 @@ Integer "integer"
_ "whitespace"= " "* _ "whitespace"= " "*
` `
var categoriaGrammaticaleAggettivo = ` var categoriaGrammaticaleAggettivo = `
Expression = head:(Filtro){return 'Aggettivo,'+head.join()} Expression = head:(Filtro){return 'Aggettivo,'+head.join()}
Filtro= fhead:("a") tail:( tipo_aggettivo classe_aggettivo? genere_aggettivo? Filtro= fhead:("a")? tail:( tipo_aggettivo classe_aggettivo? genere_aggettivo?
numero_aggettivo? grado_aggettivo? tipo_complemento? tipo_frase? numero_aggettivo? grado_aggettivo? tipo_complemento? tipo_frase?
oggetto_indiretto?){return tail} oggetto_indiretto?){return tail}
@ -964,10 +952,10 @@ Integer "integer"
_ "whitespace"= " "* _ "whitespace"= " "*
` `
var categoriaGrammaticaleArticolo = ` var categoriaGrammaticaleArticolo = `
Expression = head:(Filtro){return 'Articolo,'+head.join()} Expression = head:(Filtro){return 'Articolo,'+head.join()}
Filtro= fhead:("r") tail:( tipo? genere? numero?){return tail} Filtro= fhead:("r")? tail:( tipo? genere? numero?){return tail}
tipo = tipo =
"d" {return(" Determinativo")}/ "d" {return(" Determinativo")}/
@ -989,7 +977,7 @@ _ "whitespace"= " "*
` `
var citazione = ` var citazione = `
Expression = head:(Filtro){return 'Citazione,'+head.join()} Expression = head:(Filtro){return 'Citazione,'+head.join()}
Filtro= fhead:("f") tail:( fake? tipo?){return tail} Filtro= fhead:("f") tail:( fake? tipo?){return tail}
@ -1063,17 +1051,16 @@ Integer "integer"
_ "whitespace"= " "* _ "whitespace"= " "*
` `
//parser per categorie //parser per categorie grammaticali
var parserVerbi = peg.generate(categoriegrammaticaliGrammar); var parserVerbi = peg.generate(categoriegrammaticaliGrammar);
var parserSostantivi = peg.generate(categoriaGrammaticaleSostantivo); var parserSostantivi = peg.generate(categoriaGrammaticaleSostantivo);
var parserPreposizioni = peg.generate(categoriaGrammaticalePreposizione); var parserPreposizioni = peg.generate(categoriaGrammaticalePreposizione);
var parserAvverbi = peg.generate(avverbio); var parserAvverbi = peg.generate(avverbio);
var parserPronomi = peg.generate(pronome); var parserPronomi = peg.generate(pronome);
var parserAggettivi = peg.generate(categoriaGrammaticaleAggettivo); var parserAggettivi = peg.generate(categoriaGrammaticaleAggettivo);
var parserArticolo = peg.generate(categoriaGrammaticaleArticolo); var parserArticolo = peg.generate(categoriaGrammaticaleArticolo);
var parserCitazione = peg.generate(citazione); var parserCitazione = peg.generate(citazione);
var parserOnomastica = peg.generate(onomastica); var parserOnomastica = peg.generate(onomastica);
var parserCongiunzione = peg.generate(congiunzione); var parserCongiunzione = peg.generate(congiunzione);
}); });

File diff suppressed because one or more lines are too long

View File

@ -140,7 +140,7 @@ _ "whitespace"= " "*
var testmm = 0 var testmm = 0
//query //query per le ricerche
ontoSparqlQuery = `PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> ontoSparqlQuery = `PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ecrm: <http://erlangen-crm.org/current/> PREFIX ecrm: <http://erlangen-crm.org/current/>
@ -154,7 +154,7 @@ PREFIX comm: <http://dantenetwork.it/data/commedia/>
PREFIX syntit: <https://dantenetwork.it/ontology/syntit/current/> PREFIX syntit: <https://dantenetwork.it/ontology/syntit/current/>
SELECT (?form as ?IRIForma) (?Rappresentazione as ?Forma) (?lm as ?Lemma) (?textver as ?Verso) (?NumVerso as ?NumeroVerso) SELECT (?form as ?IRIForma) (?Rappresentazione as ?Forma) (?lm as ?Lemma) (?textver as ?Verso) (?NumVerso as ?NumeroVerso)
(?t_canto as ?Canto) (?t_cantica as ?Cantica) ?pos ?clatype ?clafunction ?clfr ?clto ?cl (?t_canto as ?Canto) (?t_cantica as ?Cantica) ?pos ?clatype ?clafunction ?clfr ?clto ?cl ?sentence
WHERE { WHERE {
FILTER(REGEX(?Rappresentazione, "^andare$", "i")) . FILTER(REGEX(?Rappresentazione, "^andare$", "i")) .
FILTER(LANGMATCHES(LANG(?Rappresentazione), "it")) FILTER(LANGMATCHES(LANG(?Rappresentazione), "it"))
@ -177,7 +177,6 @@ WHERE {
ecrm:P148_has_component ?fa . ecrm:P148_has_component ?fa .
?sentence a syntit:Sentence ; ?sentence a syntit:Sentence ;
ecrm:P190_has_symbolic_content ?text ;
syntit:hasSyntacticalComponent ?cl. syntit:hasSyntacticalComponent ?cl.
?cl syntit:hasClauseType ?clatype ; ?cl syntit:hasClauseType ?clatype ;
ecrm:P190_has_symbolic_content ?cltext ; ecrm:P190_has_symbolic_content ?cltext ;
@ -188,6 +187,9 @@ WHERE {
}` }`
orlprefix = 'https://dantenetwork.it/ontology/orl/current/' orlprefix = 'https://dantenetwork.it/ontology/orl/current/'
syntitprefix='https://dantenetwork.it/ontology/syntit/current/'
var stringInSparql= false; var stringInSparql= false;
function writesparqlquery(query) { function writesparqlquery(query) {
@ -328,7 +330,7 @@ function buildSQ(stquery) {
const parsedquery = parser.parse(ontoSparqlQuery); const parsedquery = parser.parse(ontoSparqlQuery);
//const parsedquery = parser.parse(tqvpvs); //const parsedquery = parser.parse(tqvpvs);
console.log(stquery)
if (stquery['EsprLogica'] != null && stquery['EsprLogica'].length > 1) { if (stquery['EsprLogica'] != null && stquery['EsprLogica'].length > 1) {
@ -432,6 +434,24 @@ function buildJsonClause(clause, parsedquery, whereind, theplace) {
} }
function buildSintacticClause(clause, parsedquery, whereind) {
var functS=clause['functionSyntax'];
var typeS=clause['typeSyntax0']
if (functS != null && functS != "all"){
console.log('functS '+funzione_clausola['princ'])
var myf=buildsyntClause(funzione_clausola[functS])
console.log('myf '+myf)
if (myf=='')
return parsedquery
if (whereind > -1)
parsedquery.where[whereind].triples.push(myf);
else
parsedquery.where.at(-1).patterns.at(-1).triples.push(myf);
}
return parsedquery
}
function buildClause(clause, parsedquery, whereind) { function buildClause(clause, parsedquery, whereind) {
if (clause['queryText'].trim() != "") { if (clause['queryText'].trim() != "") {
@ -449,6 +469,11 @@ function buildClause(clause, parsedquery, whereind) {
parsedquery.where.splice(0, 1) parsedquery.where.splice(0, 1)
whereind=whereind-1 whereind=whereind-1
} }
if (clause['TipoClausola']=='Sintattico')
return buildSintacticClause(clause, parsedquery, whereind)
if (clause['typeGramm0'] != null && clause['typeGramm0'] != "all") if (clause['typeGramm0'] != null && clause['typeGramm0'] != "all")
if (whereind > -1) if (whereind > -1)
//parsedquery.where[whereind].triples.push(JSON.parse(data21)[clause['typeGramm0']]); //parsedquery.where[whereind].triples.push(JSON.parse(data21)[clause['typeGramm0']]);
@ -479,10 +504,30 @@ function buildClause(clause, parsedquery, whereind) {
} }
} }
return parsedquery return parsedquery
} }
function buildsyntClause(sttmnt) {
var tmplate = `{"subject": {"termType": "Variable", "value":"cl"},
"predicate": {"termType":"NamedNode"},
"object": {"termType": "NamedNode"}}
`
console.log(sttmnt)
var predicate = syntitprefix + (sttmnt.split(':')[0])
var obj = syntitprefix + (sttmnt.split(':')[1])
var statement = JSON.parse(tmplate)
statement['predicate']['value'] = predicate
statement['object']['value'] = obj
return (statement)
}
function buildsubcategoryClause(sttmnt) { function buildsubcategoryClause(sttmnt) {
subcattmplate = `{"subject": {"termType": "Variable", "value":"form"}, subcattmplate = `{"subject": {"termType": "Variable", "value":"form"},
@ -490,9 +535,6 @@ function buildsubcategoryClause(sttmnt) {
"object": {"termType": "NamedNode"}} "object": {"termType": "NamedNode"}}
` `
//orlprefix='https://dantenetwork.it/ontology/orl/current/'
predicate = orlprefix + (sttmnt.split(':')[0]) predicate = orlprefix + (sttmnt.split(':')[0])
obj = orlprefix + (sttmnt.split(':')[1]) obj = orlprefix + (sttmnt.split(':')[1])
subcatstatement = JSON.parse(subcattmplate) subcatstatement = JSON.parse(subcattmplate)
@ -820,9 +862,8 @@ data21 = `{"verbovolgare": {"subject": {"termType": "Variable", "value":"form"},
* *
*/ */
var funzione_calusola=` var funzione_clausola=
{ {"princ": "hasClauseFunction:MainClause",
"princ": "hasClauseFunction:MainClause",
"subord i": "hasClauseFunction:SubordinateClause", "subord i": "hasClauseFunction:SubordinateClause",
"subord ii": "", "subord ii": "",
"subord iii": "", "subord iii": "",
@ -840,10 +881,10 @@ var funzione_calusola=`
"coord 0": "hasClauseFunction:PseudoCoordinateClause" "coord 0": "hasClauseFunction:PseudoCoordinateClause"
} }
`
var macrotipi_sint=`
var macrotipi_sint=
{ {
"macro avv": "hasClauseType:Avversativa", "macro avv": "hasClauseType:Avversativa",
"macro caus": "hasClauseType:Causale", "macro caus": "hasClauseType:Causale",
@ -875,8 +916,8 @@ var macrotipi_sint=`
"macro sub": "hasClauseType:SubordinataConFunzioneDiRipresa", "macro sub": "hasClauseType:SubordinataConFunzioneDiRipresa",
"macro temp": "hasClauseType:Temporale" "macro temp": "hasClauseType:Temporale"
} }
`
var tipi_sint=` var tipi_sint=
{ {
"avv caus": "hasClauseType:CoordinataAvversativaCausale", "avv caus": "hasClauseType:CoordinataAvversativaCausale",
"avv comp ug": "hasClauseType:CoordinataAvversativaComparativaDiUguaglianza", "avv comp ug": "hasClauseType:CoordinataAvversativaComparativaDiUguaglianza",
@ -1169,5 +1210,3 @@ var tipi_sint=`
"temp comp ug": "hasClauseType:TemporaleConValoreComparativo", "temp comp ug": "hasClauseType:TemporaleConValoreComparativo",
"temp ipo": "hasClauseType:TemporaleConValoreIpotetico", "temp ipo": "hasClauseType:TemporaleConValoreIpotetico",
} }
`