This commit is contained in:
Luca Trupiano 2022-11-14 09:58:07 +01:00
commit 580fc1b07d
6 changed files with 401 additions and 152 deletions

View File

@ -597,23 +597,25 @@
<div class="flex flex-column" > <div class="flex flex-column" >
<div class="w-45 pa1 mr1"> <div class="w-45 pa1 mr1">
<div class="availability f4 b labelRisultatoInferno"> <div class="availability f5 b labelRisultatoInferno">
<span style="display: none;">Inferno:</span> <span style="display: none;">Inferno:</span>
</div> </div>
<div id="ResultCantiInferno" style="display: none;"> <div id="ResultCantiInferno" style="display: none;">
</div> </div>
<div>&nbsp;</div>
<div class="availability f4 b labelRisultatoPurgatorio"> <div class="availability f5 b labelRisultatoPurgatorio">
<span style="display: none;">Purgatorio:</span> <span style="display: none;">Purgatorio:</span>
</div> </div>
<div id="ResultCantiPurgatorio" style="display: none;"> <div id="ResultCantiPurgatorio" style="display: none;">
</div> </div>
<div>&nbsp;</div>
<div class="availability f4 b labelRisultatoParadiso"> <div class="availability f5 b labelRisultatoParadiso">
<span style="display: none;">Paradiso:</span> <span style="display: none;">Paradiso:</span>
</div> </div>
<div id="ResultCantiParadiso" style="display: none;"> <div id="ResultCantiParadiso" style="display: none;">
</div> </div>
<div>&nbsp;</div>
<div class="f4 link dim br1 bn pa0 mb0 dib dark-blue b" id="occorrenze"style="display: none;"> Totale Occorrenze: 21 </div> <div class="f4 link dim br1 bn pa0 mb0 dib dark-blue b" id="occorrenze"style="display: none;"> Totale Occorrenze: 21 </div>
</div> </div>
@ -742,13 +744,6 @@
</textarea> </textarea>
</form> </form>
<!-- <p>
<input style="display: block; width: 51px; height: 51px;"
class="b ph7-m pv2 input-reset bn b--black bg-transparent grow pointer f6"
type="image" src="./images/Search.png" id="grammarbutton"
value="Cerca" title="Applica i criteri di ricerca">
</p>
-->
</div> </div>
</div> </div>
</div> </div>

View File

@ -5,12 +5,17 @@
<title>browsing La Divina Commedia</title> <title>browsing La Divina Commedia</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://unpkg.com/tachyons/css/tachyons.min.css">
<link href="css/browsingldc.css" rel="stylesheet"> <link href="css/browsingldc.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script> <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js" defer></script> <script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://bundle.run/sparqljs@3.4.1"></script> <script type="text/javascript" src="https://bundle.run/sparqljs@3.4.1"></script>
<script src="https://rdf.js.org/comunica-browser/versions/latest/engines/query-sparql/comunica-browser.js"></script> <script src="https://rdf.js.org/comunica-browser/versions/latest/engines/query-sparql/comunica-browser.js"></script>
<script type="text/javascript" src="js/utils.js"></script> <script type="text/javascript" src="js/utils.js"></script>
<script type="text/javascript" src="js/cesareBrowse.js"></script> <script type="text/javascript" src="js/cesareBrowse.js"></script>
@ -18,11 +23,31 @@
<body> <body>
<div class="blog-masthead"> <div class="blog-masthead">
<div class="container"> <div class="container">
<nav class="blog-nav"> <!-- <nav class="blog-nav"> -->
<nav id="navbar-example" class="navbar">
<div class="container"> <div class="container">
<a class="blog-nav-item" id="cantica1" href="#">Inferno</a> <ul class="nav nav-pills">
<a class="blog-nav-item" id="cantica2" href="#">Purgatorio</a> <li class="dropdown">
<a class="blog-nav-item" id="cantica3" href="#">Paradiso</a> <a class="blog-nav-item dropdown-toggle" id="cantica1" data-toggle="dropdown" aria-haspopup="true" >
Inferno
</a>
<ul class="dropdown-menu" aria-labelledby="cantica1" id="dmc1"></ul>
</li>
<li class="dropdown">
<a class="blog-nav-item dropdown-toggle" id="cantica2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Purgatorio
</a>
<ul class="dropdown-menu" aria-labelledby="cantica2" id="dmc2"></ul>
</li>
<li class="dropdown">
<a class="blog-nav-item dropdown-toggle" id="cantica3" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Paradiso
</a>
<ul class="dropdown-menu" aria-labelledby="cantica3" id="dmc3" ></ul>
</li>
</ul>
</div> </div>
</nav> </nav>
</div> </div>
@ -35,36 +60,35 @@
<div class="row"> <div class="row">
<div class="col-sm-3 col-sm-offset-1 blog-sidebar">
<div class="sidebar-module sidebar-module-inset" style="display:none"> <div class="col-sm-9 blog-main" id='displaycanto'>
<!-- <h4>Info</h4> -->
<p>Potrai cercare <em>e non troverai ombra</em> </p>
</div><!-- /.displaycanto -->
<div class="col-sm-3 blog-sidebar" style="display:block">
<div class="sidebar-module sidebar-module-inset" >
<div class="input-group">
<input type="text" class="form-control form-control-lg f5 font-weight-lighter" placeholder="Query"
id="queryText" aria-describedby="sizing-addon2">
</div>
<div>&nbsp;</</div>
<button type="submit" class="btn btn-default f6" id='searchcomm'>Search</button>
<button type="submit" class="btn btn-default f6" id='cleanresult'>Reset</button>
</div> </div>
<div class="sidebar-module"> <div class="sidebar-module">
<h4>Canti</h4>
<ol class="list-unstyled" id="listacanti">
</ol>
</div> </div>
<!-- <div class="sidebar-module"> <!-- <div class="sidebar-module"> </div> -->
<h4>Altro</h4>
<ol class="list-unstyled">
<li><a href="#">Metafore</a></li>
<li><a href="#">Dialoghi</a></li>
<li><a href="#">Personaggi</a></li>
</ol>
</div> -->
</div><!-- /.blog-sidebar --> </div><!-- /.blog-sidebar -->
<div class="col-sm-8 blog-main" id='displaycanto'>
</div><!-- /.displaycanto -->
</div><!-- /.blog-main -->
</div><!-- /.row --> </div><!-- /.row -->

View File

@ -89,7 +89,7 @@ p{
.blog-header { .blog-header {
padding-top: 20px; padding-top: 20px;
padding-bottom: 20px; padding-bottom: 60px;
} }
.blog-title { .blog-title {
margin-top: 30px; margin-top: 30px;
@ -108,8 +108,10 @@ p{
*/ */
.blog-main { .blog-main {
padding: 15px;
font-size: 18px; font-size: 18px;
line-height: 1.5; line-height: 1.5;
z-index: -1;
} }
/* Sidebar modules for boxing content */ /* Sidebar modules for boxing content */
@ -117,6 +119,7 @@ p{
padding: 15px; padding: 15px;
margin: 0 -15px 15px; margin: 0 -15px 15px;
position: fixed; position: fixed;
} }
.sidebar-module-inset { .sidebar-module-inset {
padding: 15px; padding: 15px;
@ -130,6 +133,9 @@ p{
} }
/* Pagination */ /* Pagination */
.pager { .pager {
margin-bottom: 60px; margin-bottom: 60px;
@ -221,7 +227,7 @@ p{
.minimap_container { .minimap_container {
position: fixed; position: fixed;
top: 100px; top: 100px;
left: 900px; left: 600px;
min-width: 20px; min-width: 20px;
z-index: 100; z-index: 100;
@ -249,7 +255,8 @@ p{
z-index: 100; z-index: 100;
border: 1px solid #0000009a; /*border: 1px solid #0000009a; */
border: 1px solid blue;
} }
@ -271,4 +278,20 @@ p{
border: 1px solid white; border: 1px solid white;
} }
/* Autocomplete */
#aco {
border: 1px dotted #ccc;
padding: 3px;
}
#aco ul {
list-style-type: none;
padding: 0;
margin: 0;
}
#aco ul li {
padding: 5px 0;
}
#aco ul li:hover {
background: #eee;
}

View File

@ -817,8 +817,6 @@ $(document).ready(function() {
element.find('.sn').html(size); element.find('.sn').html(size);
grammarconditions = grammarconditions + 1 grammarconditions = grammarconditions + 1
if (size == 1)
jQuery('#grammarbutton').attr('style', "display:block;")
} }
@ -862,8 +860,7 @@ $(document).ready(function() {
element.find('.sn').html(size); element.find('.sn').html(size);
sintconditions = sintconditions + 1 sintconditions = sintconditions + 1
if (size == 1)
jQuery('#grammarbutton').attr('style', "display:block;")
} }
@ -948,7 +945,6 @@ $(document).ready(function() {
e.preventDefault(); e.preventDefault();
$('.labelVai span').html("Vai a:"); $('.labelVai span').html("Vai a:");
$('.searchCosa').attr('style', "display:none;") $('.searchCosa').attr('style', "display:none;")
$('#grammarbutton').attr('style', "display:block; width: 51px; height: 51px;");
$('#quitGoButton').attr('style', "display:none;"); $('#quitGoButton').attr('style', "display:none;");
}); });
@ -998,7 +994,6 @@ $(document).ready(function() {
$('.labelVai span').html("Vai a:"); $('.labelVai span').html("Vai a:");
$('.searchCosa').attr('style', "display:none;") $('.searchCosa').attr('style', "display:none;")
$('#grammarbutton').attr('style', "display:block; width: 51px; height: 51px;");
$('#quitGoButton').attr('style', "display:none;"); $('#quitGoButton').attr('style', "display:none;");
}); });
@ -1026,7 +1021,6 @@ $(document).ready(function() {
$('#apricerca').css({'opacity' : 0.25}); $('#apricerca').css({'opacity' : 0.25});
$('.labelVai span').html("Vai a:"); $('.labelVai span').html("Vai a:");
$('#grammarbutton').attr('style', "display:block; width: 51px; height: 51px;");
$('#browseArea').css('opacity', '1'); $('#browseArea').css('opacity', '1');
$('#PagineCanti').prop("disabled", false); $('#PagineCanti').prop("disabled", false);
@ -1069,7 +1063,7 @@ $(document).ready(function() {
setTimeout(function() { setTimeout(function() {
$("#loader").hide(); $("#loader").hide();
fakeResult(); fakeResult();
}, 2000); }, 1000);
} }
) )

View File

@ -11,14 +11,16 @@ $(document).ready(function() {
var secondaCanticaLoaded = false; var secondaCanticaLoaded = false;
var terzaCanticaLoaded = false; var terzaCanticaLoaded = false;
var listaVersi = new Set() var listaVersi = new Set()
const ddmenus={"Inferno":"#dmc1",
"Purgatorio": "#dmc2",
"Paradiso": "#dmc3"}
var listarisultativersi=[];
var currentMinimap=''
//caricamento prima cantica //caricamento prima cantica
$('#cantica1').on('click', function() { $('#cantica1').on('click', function() {
$('.canto').each(function() { hideMinimap();
$(this).attr("style", 'display:none');
});
hideListaCanti()
$( ".minimap_container" ).remove();
activateMenuItem('#cantica1') activateMenuItem('#cantica1')
if (!(primaCanticaLoaded)) { if (!(primaCanticaLoaded)) {
@ -35,15 +37,12 @@ $(document).ready(function() {
}); });
//caricamento seconda cantica //caricamento seconda cantica
$('#cantica2').on('click', function() { $('#cantica2').on('click', function() {
$('.canto').each(function() { hideMinimap();
$(this).attr("style", 'display:none');
});
hideListaCanti()
$( ".minimap_container" ).remove();
activateMenuItem('#cantica2') activateMenuItem('#cantica2')
if (!(secondaCanticaLoaded)) { if (!(secondaCanticaLoaded)) {
@ -58,15 +57,12 @@ $(document).ready(function() {
} }
}); });
//caricamento terza cantica //caricamento terza cantica
$('#cantica3').on('click', function() { $('#cantica3').on('click', function() {
$('.canto').each(function() { hideMinimap();
$(this).attr("style", 'display:none');
});
hideListaCanti()
$( ".minimap_container" ).remove();
activateMenuItem('#cantica3') activateMenuItem('#cantica3')
if (!(terzaCanticaLoaded)) { if (!(terzaCanticaLoaded)) {
@ -81,6 +77,7 @@ $(document).ready(function() {
} }
}); });
jQuery(document).delegate('.navig-canto', 'click', function(e) { jQuery(document).delegate('.navig-canto', 'click', function(e) {
@ -89,30 +86,62 @@ $(document).ready(function() {
}); });
$("#" + $(this).attr('name').replace(" ", "_")).attr('style', 'display:block') $("#" + $(this).attr('name').replace(" ", "_")).attr('style', 'display:block')
showMinimap($(this).attr('name').replace(" ", "_")) showMinimap($(this).attr('name').replace(" ", "_"))
currentMinimap=$(this).attr('name').replace(" ", "_");
}); });
//Query
//$('#searchcomm').on('click', function() {
jQuery(document).delegate('#searchcomm', 'click', function(e) {
cleanSearchResult()
esprlogica=[]
esprlogica.push('Clausola1')
condizioni={"EsprLogica": esprlogica}
clausola={}
clausola['typeGramm0']=$('#queryText').val()
clausola['queryText']=""
condizioni['Clausola1']=clausola
jsonQuery=buildSQ(condizioni)
myquery =new sparqlGenerator().stringify(jsonQuery)
executeQuerySearch(myquery)
});
//Reset
jQuery(document).delegate('#cleanresult', 'click', function(e) {
cleanSearchResult()
esprlogica=[]
$('#queryText').val("")
});
//Utility functions //Utility functions
//activate navigation menu items //activate navigation menu items
function activateMenuItem(menuItem) { function activateMenuItem(menuItem) {
$('.blog-nav-item').each(function() { //$('.blog-nav-item').each(function() {
$(this).attr("class", $(this).attr("class").replace(' active', '')); // $(this).attr("class", $(this).attr("class").replace(' active', ''));
}); //});
$(menuItem).attr("class", $(menuItem).attr("class") + ' active'); //$(menuItem).attr("class", $(menuItem).attr("class") + ' active');
} }
//hides liste canti
function hideListaCanti() {
$("#CantiInferno").attr('style', 'display:none')
$("#CantiPurgatorio").attr('style', 'display:none')
$("#CantiParadiso").attr('style', 'display:none')
}
// utils
function managePunctuation(stringa) { function managePunctuation(stringa) {
var tempstringa=stringa.replaceAll(" ,", ",") var tempstringa=stringa.replaceAll(" ,", ",")
tempstringa=tempstringa.replaceAll(" .", ".") tempstringa=tempstringa.replaceAll(" .", ".")
@ -120,9 +149,21 @@ $(document).ready(function() {
tempstringa=tempstringa.replaceAll(" !", "!") tempstringa=tempstringa.replaceAll(" !", "!")
tempstringa=tempstringa.replaceAll(" ?", "?") tempstringa=tempstringa.replaceAll(" ?", "?")
tempstringa=tempstringa.replaceAll(" ;", ";") tempstringa=tempstringa.replaceAll(" ;", ";")
tempstringa=tempstringa.replaceAll("%20", " ")
return tempstringa return tempstringa
} }
function cleanSearchResult(){
for (verso of listarisultativersi){
idverso='#'+verso
console.log(idverso)
//$(idverso).attr('class', $(idverso).attr('class').replace(" dark-blue", ""))
$(idverso).attr('class', 'f6 font-weight-lighter')
}
if (currentMinimap!='')
showMinimap(currentMinimap)
}
//minimap management //minimap management
let minimap = document.createElement('div'); let minimap = document.createElement('div');
@ -186,75 +227,184 @@ $(document).ready(function() {
viewer.style.transform=`translateY(${window.scrollY * realScale}px)` viewer.style.transform=`translateY(${window.scrollY * realScale}px)`
} }
function hideMinimap(){
$('.canto').each(function() {
$(this).attr("style", 'display:none');
});
$( ".minimap_container" ).remove();
currentMinimap=''
}
//end minimap management //end minimap management
async function executeQueryVersi(query) { async function executeQueryVersi(query) {
bindingsStream = await myEngine.queryBindings(query, { sources: [{ type: 'sparql', value: sparqlEndpoint },], }); bindingsStream = await myEngine.queryBindings(query, { sources: [{ type: 'sparql', value: sparqlEndpoint },], });
alert(query) alert(query)
try { try {
var listaCanti = new Set() var listaCanti = new Set()
listaVersi = new Set() listaVersi = new Set()
listaForme = new Set()
let cantica = 0; let cantica = 0;
bindingsStream.on('data', (binding) => { bindingsStream.on('data', (binding) => {
//cantica //cantica
cantica = binding.get('Cantica').value; cantica = binding.get('Cantica').value;
//la lista dei canti //la lista dei canti
listaCanti.add(binding.get('Canto').value) listaCanti.add(binding.get('Canto').value)
//la lista dei versi //la lista dei versi
var obj = new Object(); var obj = new Object();
obj.numverso = binding.get('NumeroVerso').value; var forma=new Object()
obj.verso = binding.get('Verso').value; obj.numverso = binding.get('NumeroVerso').value;
obj.canto = binding.get('Canto').value; obj.verso = binding.get('Verso').value;
obj.from = binding.get('from').value; obj.canto = binding.get('Canto').value;
obj.to = binding.get('to').value; //obj.pos = binding.get('pos').value;
listaVersi.add(obj) //obj.form = binding.get('textform').value;
obj.cantica = cantica;
listaVersi.add(obj)
forma.numverso = binding.get('NumeroVerso').value;
forma.canto = binding.get('Canto').value;
forma.pos = binding.get('pos').value;
forma.form = binding.get('textform').value;
forma.cantica = cantica;
listaForme.add(forma)
}); });
bindingsStream.on('end', () => { bindingsStream.on('end', () => {
var orderedListaCanti = Array.from(listaCanti)
orderedListaCanti = orderedListaCanti.sort((a, b) => {
if (parseInt(a.split(" ")[1]) < parseInt(b.split(" ")[1])) { var orderedListaCanti = Array.from(listaCanti)
return -1; orderedListaCanti = orderedListaCanti.sort((a, b) => {
if (parseInt(a.split(" ")[1]) < parseInt(b.split(" ")[1])) {
return -1;
}
});
var orderedListaVersi = Array.from(listaVersi)
orderedListaVersi = orderedListaVersi.sort((a, b) => {
if (parseInt(a.numverso) < parseInt(b.numverso)) {
return -1;
}
});
orderedListaVersi = orderedListaVersi.filter((value, index, self) =>
index === self.findIndex((t) => (
t.numverso === value.numverso && t.canto === value.canto && t.cantica===value.cantica
))
)
var orderedListaForme = Array.from(listaForme)
orderedListaForme = orderedListaForme.sort((a, b) => {
if (parseInt(a.pos) < parseInt(b.pos)) {
return -1;
}
});
var divListaCanti = $('<DIV id="Canti' + cantica + '" />')
for (canto of orderedListaCanti) {
var licanto = $('<li class="navig-canto"/>')
licanto.attr('name', cantica + canto)
licanto.attr('href', "#")
licanto.attr("style", "line-height: 1.2em")
licanto.append(canto)
//licanto.appendTo('#listacanti')
licanto.appendTo(divListaCanti)
var divcanto = $('<div />')
var titolocanto = $('<h1 class="f3 font-weight-lighter titolo-canto" />')
titolocanto.append(canto)
divcanto.attr('class', 'canto')
divcanto.attr('style', 'display:none')
divcanto.attr('id', (cantica + canto).replace(" ", "_"))
titolocanto.appendTo(divcanto)
divcanto.appendTo(' .blog-main')
} }
}); //divListaCanti.appendTo('#listacanti')
divListaCanti.appendTo(ddmenus[cantica])
for (verso of orderedListaVersi) {
var elementoverso = $('<p />')
vartestoverso=verso.numverso;
elementoverso.append(verso.numverso + ". ")
/*arrayVerso=managePunctuation(verso.verso).split(" ");
for (wpos in arrayVerso){
var divoccorrenza=$('<span />')
var pos=parseInt(verso.from)+parseInt(wpos)
divoccorrenza.attr('id', verso.cantica+"_"+ verso.canto.replace(" ", "_")+"_"+verso.numverso+"_"+pos)
divoccorrenza.append(arrayVerso[wpos])
divoccorrenza.appendTo(elementoverso)
elementoverso.append('&nbsp;')
}*/
//elementoverso.append(verso.numverso + ". " + managePunctuation(verso.verso))
elementoverso.attr("style", "line-height: 0.5em")
elementoverso.attr('class', 'f6 font-weight-lighter')
elementoverso.attr('id', verso.cantica+"_"+ verso.canto.replace(" ", "_")+"_"+verso.numverso)
elementoverso.appendTo('#' + cantica + verso.canto.replace(" ", "_"))
var orderedListaVersi = Array.from(listaVersi)
orderedListaVersi = orderedListaVersi.sort((a, b) => {
if (parseInt(a.numverso) < parseInt(b.numverso)) {
return -1;
} }
});
var divListaCanti = $('<DIV id="Canti' + cantica + '" />') orderedListaForme.forEach((element) => {
for (canto of orderedListaCanti) { var spanoccorrenza=$('<span />')
var licanto = $('<li class="navig-canto"/>') var pos=parseInt(element.pos)
licanto.attr('name', cantica + canto) spanoccorrenza.attr('id', element.cantica+"_"+ element.canto.replace(" ", "_")+"_"+element.numverso+"_"+pos)
licanto.attr('href', "#") spanoccorrenza.append(managePunctuation(element.form))
licanto.attr("style", "line-height: 1.2em") elementoverso=$('#'+element.cantica+"_"+ element.canto.replace(" ", "_")+"_"+element.numverso)
licanto.append(canto) spanoccorrenza.appendTo(elementoverso)
elementoverso.append('&nbsp;')
})
});
}
catch (err) {
console.log(err.message);
$("#loader").hide();
};
};
//execute query
async function executeQuerySearch(query) {
seachbBindingsStream = await myEngine.queryBindings(query, { sources: [{ type: 'sparql', value: sparqlEndpoint },], });
//console.log(query)
alert(query)
try {
var resultVersi = new Set()
seachbBindingsStream.on('data', (binding) => {
//cantica
cantica = binding.get('Cantica').value;
//canto
canto=binding.get('Canto').value;
//numero del verso
numverso=binding.get('NumeroVerso').value;
//posizione delframmento
pos=binding.get('pos').value;
resultVersi.add(cantica+"_"+canto.replace(" ", "_")+"_"+numverso+"_"+pos)
});
seachbBindingsStream.on('end', () => {
listarisultativersi = Array.from(resultVersi)
for (verso of listarisultativersi){
idverso='#'+verso
console.log(idverso)
$(idverso).attr('class', "f6 b dark-blue ")
//licanto.appendTo('#listacanti')
licanto.appendTo(divListaCanti)
var divcanto = $('<div />')
var titolocanto = $('<h1 class="titolo-canto" />')
titolocanto.append(canto)
divcanto.attr('class', 'canto')
divcanto.attr('style', 'display:none')
divcanto.attr('id', (cantica + canto).replace(" ", "_"))
titolocanto.appendTo(divcanto)
divcanto.appendTo(' .blog-main')
} }
divListaCanti.appendTo('#listacanti') if (currentMinimap!=''){
for (verso of orderedListaVersi) { showMinimap(currentMinimap)
var elementoverso = $('<p />')
elementoverso.append(verso.numverso + ". " + managePunctuation(verso.verso))
elementoverso.attr("style", "line-height: 0.5em")
elementoverso.appendTo('#' + cantica + verso.canto.replace(" ", "_"))
} }

View File

@ -76,7 +76,7 @@ LIMIT 20
` `
// Per restituire i versi di una cantica // Per restituire i versi di una cantica
var qVersiCantica=` var qVersiCanticaold=`
PREFIX ecrm: <http://erlangen-crm.org/current/> PREFIX ecrm: <http://erlangen-crm.org/current/>
PREFIX orl: <http://dantenetwork.it/ontology/ORL/> PREFIX orl: <http://dantenetwork.it/ontology/ORL/>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#> PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
@ -99,6 +99,39 @@ var qVersiCantica=`
FILTER regex(?t_cantica,"Inferno","i") . FILTER regex(?t_cantica,"Inferno","i") .
}` }`
var qVersiCantica=`
PREFIX ecrm: <http://erlangen-crm.org/current/>
PREFIX orl: <http://dantenetwork.it/ontology/ORL/>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX olires: <https://dantenetwork.it/ontology/OLIRes/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX text: <http://jena.apache.org/text#>
PREFIx hdn: <https://dantenetwork.it/data/commedia/>
SELECT (?textver AS ?Verso) (?NumVerso AS ?NumeroVerso) (?t_canto AS ?Canto) (?t_cantica AS ?Cantica)
?textform ?pos
WHERE {
?cantica ecrm:P102_has_title ?t_cantica ;
olires:hasStructuralComponent ?canto.
?canto ecrm:P102_has_title ?t_canto;
olires:hasStructuralComponent ?ver.
?ver ecrm:P190_Has_Symbolic_Content ?textver;
olires:hasNumber ?NumVerso;
olires:hasStructuralComponent ?fa.
# olires:OccursInRegion ?reg .
?fa orl:occurrenceOf ?form.
?fa olires:OccursInRegion ?regfo .
?regfo olires:fragmentRegionFrom ?pos .
?form ontolex:writtenRep ?textform.
# ?reg olires:fragmentRegionFrom ?from;
# olires:fragmentRegionTo ?to .
FILTER regex(?t_cantica,"Inferno","i") .
}`
var hdnquerygrammar = ` var hdnquerygrammar = `
Expression Expression
= head:((_)?"("(_)?("AND "/"OR ") Filtro+ (_)?(")")?){return '{"'+head[3]+'": ['+head[4]+"]}"}//{ return head}.join("").replaceAll(", ,","").replaceAll("(,","(").replaceAll(",("," (")} = head:((_)?"("(_)?("AND "/"OR ") Filtro+ (_)?(")")?){return '{"'+head[3]+'": ['+head[4]+"]}"}//{ return head}.join("").replaceAll(", ,","").replaceAll("(,","(").replaceAll(",("," (")}
@ -160,25 +193,25 @@ PREFIX olires:<https://dantenetwork.it/ontology/OLIRes/>
PREFIX comm: <http://dantenetwork.it/data/commedia/> PREFIX comm: <http://dantenetwork.it/data/commedia/>
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) (?t_canto as ?Canto) (?t_cantica as ?Cantica) ?pos
WHERE { WHERE {
?fa orl:occurrenceOf ?form; ?fa orl:occurrenceOf ?form.
ecrm:P148i_is_component_of ?ver . ?ver ecrm:P190_Has_Symbolic_Content ?textver;
?ver ecrm:P190_Has_Symbolic_Content ?textver; olires:hasNumber ?NumVerso;
olires:hasNumber ?NumVerso; olires:hasStructuralComponent ?fa.
ecrm:P148i_is_component_of ?canto . ?fa olires:OccursInRegion ?reg .
?canto ecrm:P102_has_title ?t_canto; ?reg olires:fragmentRegionFrom ?pos .
ecrm:P148i_is_component_of ?cantica . ?canto ecrm:P102_has_title ?t_canto;
?cantica ecrm:P102_has_title ?t_cantica . olires:hasStructuralComponent ?ver.
?form ontolex:writtenRep ?Rappresentazione . ?cantica ecrm:P102_has_title ?t_cantica;
?lent ontolex:lexicalForm ?form; olires:hasStructuralComponent ?canto.
ontolex:canonicalForm ?cf . ?form ontolex:writtenRep ?Rappresentazione.
?cf ontolex:writtenRep ?lm . ?lent ontolex:lexicalForm ?form;
FILTER regex(?Rappresentazione,"^farò$","i") . ontolex:canonicalForm ?cf.
#FILTER regex(?lm,"^fare$","i") . ?cf ontolex:writtenRep ?lm.
FILTER langMatches(lang(?Rappresentazione),"it") FILTER(LANGMATCHES(LANG(?Rappresentazione), "it"))
} ORDER BY ?Cantica ?Canto ?NumVerso } ORDER BY ?Cantica ?Canto ?NumVerso
LIMIT 50` LIMIT 50`
//Togliere LIMIT in prod //Togliere LIMIT in prod
@ -219,8 +252,8 @@ function versiCantica(cantica) {
function gimmespq() { function gimmespq() {
var SparqlParser = sparqljs.Parser; var SparqlParser = sparqljs.Parser;
var parser = new SparqlParser(); var parser = new SparqlParser();
//return parser.parse(ontoSparqlQuery); return parser.parse(ontoSparqlQuery);
return parser.parse(tqvpvs); //return parser.parse(tqvpvs);
} }
@ -321,8 +354,8 @@ function buildSQ(stquery) {
var SparqlParser = sparqljs.Parser; var SparqlParser = sparqljs.Parser;
var parser = new SparqlParser(); var parser = new SparqlParser();
//Prendo la query SPARQL template //Prendo la query SPARQL template
//const parsedquery = parser.parse(ontoSparqlQuery); const parsedquery = parser.parse(ontoSparqlQuery);
const parsedquery = parser.parse(tqvpvs); //const parsedquery = parser.parse(tqvpvs);
const lf = document.getElementById("lemma_forma"); const lf = document.getElementById("lemma_forma");
//mytestq = parser.parse(tq); //mytestq = parser.parse(tq);
var ftxt = document.getElementById("queryText"); var ftxt = document.getElementById("queryText");
@ -526,7 +559,8 @@ function buildClause(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']]);
parsedquery.where[whereind].triples.splice(0, 0, JSON.parse(data21)[clause['typeGramm0']]);
else { else {
parsedquery.where.at(-1).patterns.push(JSON.parse(unionop)['bgp']); parsedquery.where.at(-1).patterns.push(JSON.parse(unionop)['bgp']);
parsedquery.where.at(-1).patterns.at(-1).triples.push(JSON.parse(data21)[clause['typeGramm0']]); parsedquery.where.at(-1).patterns.at(-1).triples.push(JSON.parse(data21)[clause['typeGramm0']]);
@ -578,8 +612,37 @@ function buildsubcategoryClause(sttmnt) {
} }
/*
//autocomplete
var categorie = ['aggettivovolgare', 'articolovolgare', 'avverbiovolgare',
'citazionevolgare', 'congiunzionevolgare', 'interiezionevolgare',
'locuzionevolgare', 'onomasticavolgare', 'preposizionevolgare',
'pronomevolgare', 'sostantivovolgare','verbovolgare'];
function autocompleteMatch(input) {
if (input == '') {
return [];
}
var reg = new RegExp(input)
return categorie.filter(function(term) {
if (term.match(reg)) {
return term;
}
});
}
function showResults(val) {
res = document.getElementById("aco");
res.innerHTML = '';
let list = '';
let terms = autocompleteMatch(val);
for (i=0; i<terms.length; i++) {
list += '<li>' + terms[i] + '</li>';
}
res.innerHTML = '<ul>' + list + '</ul>';
}
*/
var sottoCategorie = { var sottoCategorie = {
"verbovolgare": { "verbovolgare": {
"Diatesi": { "Attivo": "TipoDiatesiVerboVolgare:VerboVolgareAttivo", "Passivo": "TipoDiatesiVerboVolgare:VerboVolgarePassivo" }, "Diatesi": { "Attivo": "TipoDiatesiVerboVolgare:VerboVolgareAttivo", "Passivo": "TipoDiatesiVerboVolgare:VerboVolgarePassivo" },