modificata query per filtri sintattici, gestione periodi, aggiunti font
per browsing
This commit is contained in:
parent
042528001a
commit
6eb0d68eeb
|
@ -10,6 +10,14 @@
|
|||
* 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
|
||||
*/
|
||||
|
@ -29,6 +37,10 @@ Popover properties
|
|||
color: red;
|
||||
font-size: 12px;
|
||||
}
|
||||
.popover-footer {
|
||||
color: gray;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
/*
|
||||
Minimap
|
||||
|
|
|
@ -4,16 +4,6 @@
|
|||
var resetResult;
|
||||
|
||||
$(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'
|
||||
|
||||
|
@ -21,13 +11,16 @@ $(document).ready(function() {
|
|||
const myEngine = new Comunica.QueryEngine();
|
||||
const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commediaontosintgra/query";
|
||||
|
||||
var listaVersi = new Set()
|
||||
var shownSentenceList = new Set()
|
||||
|
||||
var currentMinimap = ''
|
||||
var listarisultati = [];
|
||||
var resultSentences = new Set()
|
||||
var minimapScrolling = false;
|
||||
var displayId = 'displaycanto'
|
||||
var minimapTopPos;
|
||||
var purgatorioLoaded = false;
|
||||
var paradisoLoaded = false;
|
||||
|
||||
//used in minimap
|
||||
//
|
||||
|
@ -35,15 +28,9 @@ $(document).ready(function() {
|
|||
let minimapSize = document.createElement('div');
|
||||
let viewer = document.createElement('div');
|
||||
let minimapContent = document.createElement('iframe');
|
||||
let scale = 0.1;
|
||||
let realScale;
|
||||
let mappedElement = '';
|
||||
|
||||
var purgatorioSelected = "PurgatorioCanto_1";
|
||||
var paradisoSelected = "ParadisoCanto_1";
|
||||
var infernoSelected = "InfernoCanto_1";
|
||||
|
||||
|
||||
resetResult=function(){
|
||||
//console.log('clean result')
|
||||
cleanSearchResult()
|
||||
|
@ -53,62 +40,21 @@ $(document).ready(function() {
|
|||
hideMinimap();
|
||||
createAllDivCanti()
|
||||
const start = performance.now();
|
||||
|
||||
showCantica('Inferno')
|
||||
var purgatorioLoaded = false;
|
||||
var paradisoLoaded = false;
|
||||
|
||||
showCantica('Purgatorio')
|
||||
showCantica('Paradiso')
|
||||
$("#InfernoCanto_1").attr('style', 'display:block')
|
||||
drawMinimap("InfernoCanto_1")
|
||||
const end = performance.now();
|
||||
console.log(`Load cantiche time: ${end - start} ms`);
|
||||
|
||||
jQuery(document).delegate('#cantica2', 'click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
if (!purgatorioLoaded){
|
||||
showCantica('Purgatorio')
|
||||
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) {
|
||||
e.preventDefault();
|
||||
|
||||
if (!paradisoLoaded){
|
||||
showCantica('Paradiso')
|
||||
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) {
|
||||
e.preventDefault();
|
||||
|
||||
$('.canto').each(function() {
|
||||
$(this).attr("style", 'display:none');
|
||||
});
|
||||
$("#"+infernoSelected).attr('style', 'display:block')
|
||||
manageMiniMap("#"+infernoSelected);
|
||||
return true;
|
||||
});
|
||||
$("[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);
|
||||
|
@ -117,7 +63,48 @@ $(document).ready(function() {
|
|||
categoria = details;
|
||||
details = "";
|
||||
}
|
||||
$(this).popover({ title: categoria, content: details, trigger: "click" });
|
||||
$(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) {
|
||||
e.preventDefault();
|
||||
|
||||
if (!purgatorioLoaded){
|
||||
showCantica('Purgatorio')
|
||||
purgatorioLoaded = true;
|
||||
}
|
||||
|
||||
});
|
||||
jQuery(document).delegate('#cantica3', 'click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
if (!paradisoLoaded){
|
||||
showCantica('Paradiso')
|
||||
paradisoLoaded = true;
|
||||
}
|
||||
|
||||
});
|
||||
*/
|
||||
|
||||
jQuery(document).delegate('#sentence', 'click', function(e) {
|
||||
e.preventDefault();
|
||||
sentenceId=$(this).attr('class').split(' ')[0].replace('$','')
|
||||
console.log(sentenceId)
|
||||
if (shownSentenceList.has(sentenceId)){
|
||||
resetSentenceStructure(sentenceId)
|
||||
shownSentenceList.delete(sentenceId)
|
||||
}
|
||||
else{
|
||||
showSentenceStructure (sentenceId)
|
||||
shownSentenceList.add(sentenceId)
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
var mmih = 0
|
||||
|
@ -138,6 +125,7 @@ $(document).ready(function() {
|
|||
});
|
||||
|
||||
|
||||
|
||||
jQuery(document).delegate('.navig-canto', 'click', function(e) {
|
||||
$('.canto').each(function() {
|
||||
$(this).attr("style", 'display:none');
|
||||
|
@ -151,15 +139,6 @@ $(document).ready(function() {
|
|||
function manageMiniMap(divElem) {
|
||||
mmiw = $("#" + displayId).innerWidth();
|
||||
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(" ", "_"))
|
||||
}
|
||||
|
||||
|
@ -185,8 +164,8 @@ $(document).ready(function() {
|
|||
|
||||
function getHoverContent(categ){
|
||||
//console.log('Categoria '+categ)
|
||||
if (categ.includes('-')) {
|
||||
categs = categ.split('-')
|
||||
if(categ.includes('^')){
|
||||
categs=categ.split('^')
|
||||
mycat=[]
|
||||
for (cat of categs){
|
||||
mycat.push(cat[0])
|
||||
|
@ -224,7 +203,6 @@ $(document).ready(function() {
|
|||
if (categ[0] == 'c') {
|
||||
return parserCongiunzione.parse(categ).split(',').filter(prop => prop.length > 0).join();
|
||||
}
|
||||
//console.log(categ[0])
|
||||
return categoriegrammaticali[categ[0]]
|
||||
}
|
||||
|
||||
|
@ -253,17 +231,18 @@ $(document).ready(function() {
|
|||
}
|
||||
|
||||
function cleanSearchResult() {
|
||||
|
||||
for (verso of listarisultati) {
|
||||
idverso = '#' + verso
|
||||
$(idverso).attr('class', 'f6 text-secondary text-nowrap font-weight-lighter')
|
||||
for (forma of listarisultati) {
|
||||
idforma = '#' + forma
|
||||
$(idforma).removeClass("font-weight-bold mark ")
|
||||
}
|
||||
$(".badge").remove();
|
||||
listarisultati = []
|
||||
resultSentences=new Set()
|
||||
if (currentMinimap != '')
|
||||
showMinimap(currentMinimap)
|
||||
}
|
||||
|
||||
|
||||
function manageQuery(){
|
||||
cleanSearchResult()
|
||||
esprlogica = []
|
||||
|
@ -280,6 +259,44 @@ $(document).ready(function() {
|
|||
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
|
||||
|
||||
|
||||
|
@ -379,112 +396,74 @@ $(document).ready(function() {
|
|||
currentMinimap = ''
|
||||
}
|
||||
|
||||
|
||||
//Cantica management functions
|
||||
|
||||
function showCantica(cantica) {
|
||||
//var listaCanti = new Set()
|
||||
var setVersi = new Set()
|
||||
//$("#loader").show();
|
||||
var containerForme = formeprima
|
||||
if (cantica == 'Paradiso')
|
||||
var idcantica=1;
|
||||
if (cantica == 'Paradiso'){
|
||||
containerForme = formeterza
|
||||
if (cantica == 'Purgatorio')
|
||||
idcantica=3
|
||||
}
|
||||
|
||||
if (cantica == 'Purgatorio'){
|
||||
containerForme = formeseconda
|
||||
idcantica=2
|
||||
}
|
||||
|
||||
const endlc = performance.now();
|
||||
console.log(`Load `+cantica+` time: ${endlc - start} ms`);
|
||||
var elverso, formaItem
|
||||
for (var cmpItem of containerForme) {
|
||||
|
||||
formaItem = cmpItem.split("_")
|
||||
|
||||
var sentenceid=idcantica+"_"+formaItem[1]+"_s_"+formaItem[5]
|
||||
//createDivVerso(cantica, num, canto, forma, catgram, pos)
|
||||
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])
|
||||
}
|
||||
else{
|
||||
//setVersi = createDivVersi(setVersi, cantica, formaItem[3], 'Canto_' + formaItem[1])
|
||||
createSpanFormeNew(cantica, 'Canto_' + formaItem[1], formaItem[3], formaItem[0], formaItem[4], formaItem[2], elverso)
|
||||
createSpanFormeNew(cantica, 'Canto_' + formaItem[1], formaItem[3], formaItem[0], formaItem[4], formaItem[2], sentenceid,formaItem[6],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
|
||||
}
|
||||
/*
|
||||
function createSpanForme(element) {
|
||||
|
||||
|
||||
function createSpanFormeNew(cantica, canto, numverso, forma, catgramm, pos, sentenceid, clausefunct, elementoverso) {
|
||||
var spanoccorrenza = $('<span />')
|
||||
var pos = parseInt(element.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(' ')
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
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('id', pos)
|
||||
spanoccorrenza.attr('data-cg', catgramm)
|
||||
spanoccorrenza.attr('class', sentenceid+" "+clausefunct)
|
||||
|
||||
//if (listarisultati.length > 0 && listarisultati.includes(spanoccorrenza.attr('id')))
|
||||
// spanoccorrenza.attr('class', "font-weight-bold mark ")
|
||||
spanoccorrenza.append(forma+" ")
|
||||
//elementoverso = $('#' + cantica + "_" + canto + "_" + numverso)
|
||||
|
||||
spanoccorrenza.appendTo(elementoverso)
|
||||
//elementoverso.append(' ')
|
||||
|
||||
}
|
||||
|
||||
function createDivVersi(setVersi, cantica, num, canto) {
|
||||
if (setVersi.has(cantica + "_" + num + "_" + canto))
|
||||
return setVersi
|
||||
else {
|
||||
var elementoverso = $('<p />')
|
||||
|
||||
elementoverso.append(num + ". ")
|
||||
elementoverso.attr("style", "line-height: 0.5em")
|
||||
|
||||
elementoverso.attr('class', 'f6 text-secondary text-nowrap font-weight-lighter')
|
||||
|
||||
elementoverso.attr('id', cantica + "_" + canto + "_" + num)
|
||||
elementoverso.appendTo('#' + cantica + canto)
|
||||
setVersi.add(cantica + "_" + num + "_" + canto)
|
||||
return setVersi
|
||||
}
|
||||
|
||||
}
|
||||
function createDivVerso(cantica, num, canto, forma, catgram, pos) {
|
||||
function createDivVerso(cantica, num, canto, forma, catgram, pos, sentenceid, clausefunct) {
|
||||
|
||||
var elementoverso = $('<p />')
|
||||
|
||||
elementoverso.append(num + ". ")
|
||||
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)
|
||||
|
||||
var spanoccorrenza = $('<span />')
|
||||
//var pos = parseInt(pos)
|
||||
spanoccorrenza.attr('id', cantica + "_" + canto + "_" + num + "_" + pos)
|
||||
|
||||
spanoccorrenza.attr('id', pos)
|
||||
spanoccorrenza.attr('data-cg', catgram)
|
||||
spanoccorrenza.attr('class', sentenceid+" "+clausefunct)
|
||||
|
||||
spanoccorrenza.append(forma+" ")
|
||||
spanoccorrenza.appendTo(elementoverso)
|
||||
|
@ -493,23 +472,7 @@ $(document).ready(function() {
|
|||
return elementoverso
|
||||
|
||||
}
|
||||
/*
|
||||
function createDivCanti(orderedListaCanti, cantica, canto) {
|
||||
if (orderedListaCanti.has(canto)) {
|
||||
return orderedListaCanti
|
||||
}
|
||||
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')
|
||||
orderedListaCanti.add(canto)
|
||||
return orderedListaCanti
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
function createAllDivCanti() {
|
||||
cantiche=["Inferno", "Purgatorio","Paradiso"]
|
||||
|
@ -531,16 +494,16 @@ $(document).ready(function() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//execute query
|
||||
|
||||
async function executeQuerySearch(query) {
|
||||
$("#loader").show();
|
||||
seachbBindingsStream = await myEngine.queryBindings(query, { sources: [{ type: 'sparql', value: sparqlEndpoint },], });
|
||||
//console.log(query)
|
||||
alert(query)
|
||||
try {
|
||||
var result = new Set()
|
||||
var resultClauses = new Set()
|
||||
|
||||
var resultsInCantica = []
|
||||
var resultsInCanto = []
|
||||
seachbBindingsStream.on('data', (binding) => {
|
||||
|
@ -554,22 +517,37 @@ $(document).ready(function() {
|
|||
numverso = binding.get('NumeroVerso').value;
|
||||
//posizione del frammento
|
||||
pos = binding.get('pos').value;
|
||||
if (!result.has(cantica + "_" + canto.replace(" ", "_") + "_" + numverso + "_" + pos)) {
|
||||
result.add(cantica + "_" + canto.replace(" ", "_") + "_" + numverso + "_" + pos)
|
||||
//regione della clausola
|
||||
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);
|
||||
resultsInCanto.push(cantica + canto)
|
||||
}
|
||||
|
||||
resultClauses.add(cantica + "_" + canto.replace(" ", "_") + "_" + numverso + "-" +clfrom+'_'+clto+"-"+cltype)
|
||||
resultSentences.add(sentenceid)
|
||||
|
||||
});
|
||||
seachbBindingsStream.on('end', () => {
|
||||
console.log('start rendering...')
|
||||
listarisultati = Array.from(result)
|
||||
|
||||
cantiche = ["Inferno", "Purgatorio", "Paradiso"]
|
||||
|
||||
|
||||
console.log('periodi end...')
|
||||
|
||||
//evidenzia risultati
|
||||
for (ris of listarisultati) {
|
||||
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
|
||||
|
@ -585,7 +563,7 @@ $(document).ready(function() {
|
|||
}
|
||||
}
|
||||
//aggiunge badge con totale risultati accanto ai canti
|
||||
|
||||
console.log('results end...')
|
||||
for (cantica of cantiche) {
|
||||
for (k of Array(35).keys()) {
|
||||
if (k == 0)
|
||||
|
@ -601,15 +579,12 @@ $(document).ready(function() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log('badge end...')
|
||||
|
||||
//aggiorna minimap
|
||||
if (currentMinimap != '') {
|
||||
|
||||
showMinimap(currentMinimap)
|
||||
|
||||
}
|
||||
$("#loader").hide();
|
||||
|
||||
});
|
||||
}
|
||||
|
@ -620,20 +595,31 @@ $(document).ready(function() {
|
|||
};
|
||||
|
||||
/*
|
||||
* REGOLE DI PARSING PER VISUALIZZAZIONE PROPRIETÀ
|
||||
* REGOLE DI PARSING PER VISUALIZZAZIONE CATEGORIE GRAMMATICALI
|
||||
*/
|
||||
|
||||
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",}
|
||||
|
||||
|
||||
var categoriegrammaticaliGrammar=`Expression = head:(Filtro){return 'Verbo,'+head.join()}
|
||||
Filtro= fhead:("v") tail:( transitivita? diatesi? impersonalita*
|
||||
Filtro= fhead:("v")? tail:( transitivita? diatesi? impersonalita?
|
||||
coniugazione? modotempo?
|
||||
persona? funzione* declinazione?
|
||||
persona? funzione? declinazione?
|
||||
genere? numero? grado?){return tail}
|
||||
|
||||
|
||||
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';}
|
||||
|
||||
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())){
|
||||
case(1): return ' Prima coniugazione';
|
||||
|
@ -702,7 +688,7 @@ _ "whitespace"= " "*
|
|||
|
||||
var categoriaGrammaticaleSostantivo = `
|
||||
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}
|
||||
|
||||
|
||||
|
@ -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';}
|
||||
|
||||
locuzione="lv" {return('In Locuzione verbo');}
|
||||
locuzione="Iv" {return('In Locuzione verbo');}
|
||||
|
||||
Integer "integer"
|
||||
= _ [0-9]+ { return parseInt(text(), 10); }
|
||||
|
@ -728,7 +714,7 @@ _ "whitespace"= " "*
|
|||
|
||||
var categoriaGrammaticalePreposizione = `
|
||||
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';}
|
||||
|
@ -809,15 +795,16 @@ complemento2=
|
|||
|
||||
`
|
||||
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')}/
|
||||
"l" {return(' Avverbio in Locuzione')}
|
||||
fake= ""
|
||||
|
||||
tipo="c+" {return(' Avverbio al Comparativo di Maggioranza')}/
|
||||
"c-" {return(' Avverbio al Comparativo di Minoranza')}/
|
||||
"sa" {return(' Avverbio al Superlativo Assoluto')}/
|
||||
"sr" {return(' Avverbio al Superlativo Relativo')}/
|
||||
"lz" {return(' Avverbio in Locuzione Separato')}/
|
||||
"l" {return(' Avverbio in Locuzione')}/
|
||||
"y" {return(' Avverbio Proclitico')}/
|
||||
"x" {return(' Avverbio Enclitico')}/
|
||||
"c" {return(' Avverbio al Comparativo di Uguaglianza')}
|
||||
|
@ -828,11 +815,12 @@ Integer "integer"
|
|||
|
||||
_ "whitespace"= " "*
|
||||
|
||||
|
||||
`
|
||||
|
||||
var pronome = `Expression = head:(Filtro){return 'Pronome,'+head.join()}
|
||||
Filtro= fhead:("p") tail:( tipo_pronome? classe_pronome? genere_pronome?
|
||||
var 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}
|
||||
|
||||
|
||||
|
@ -859,8 +847,8 @@ forma_pronome= "l" {return(" Pronome Libero")}/
|
|||
"i" {return(" Pronome Libero In Composizione")}/
|
||||
"y" {return(" Pronome Proclitico")}/
|
||||
"x" {return(" Pronome Enclitico")}
|
||||
funzione_pronome= "soi" {return(' Libero Soggetto Impersonale')}/
|
||||
"so" {return(' Libero Soggetto')}/
|
||||
funzione_pronome="so" {return(' Libero Soggetto')}/
|
||||
"soi" {return(' Libero Soggetto Impersonale')}/
|
||||
"co" {return(' Libero Complemento')}/
|
||||
"ra" {return(' Libero Rafforzativo')}/
|
||||
"ac" {return(' Clitico Accusativo')}/
|
||||
|
@ -883,7 +871,7 @@ _ "whitespace"= " "*
|
|||
`
|
||||
var categoriaGrammaticaleAggettivo = `
|
||||
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?
|
||||
oggetto_indiretto?){return tail}
|
||||
|
||||
|
@ -967,7 +955,7 @@ _ "whitespace"= " "*
|
|||
var categoriaGrammaticaleArticolo = `
|
||||
|
||||
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 =
|
||||
"d" {return(" Determinativo")}/
|
||||
|
@ -1063,7 +1051,7 @@ Integer "integer"
|
|||
|
||||
_ "whitespace"= " "*
|
||||
`
|
||||
//parser per categorie
|
||||
//parser per categorie grammaticali
|
||||
var parserVerbi = peg.generate(categoriegrammaticaliGrammar);
|
||||
var parserSostantivi = peg.generate(categoriaGrammaticaleSostantivo);
|
||||
var parserPreposizioni = peg.generate(categoriaGrammaticalePreposizione);
|
||||
|
@ -1075,5 +1063,4 @@ _ "whitespace"= " "*
|
|||
var parserOnomastica = peg.generate(onomastica);
|
||||
var parserCongiunzione = peg.generate(congiunzione);
|
||||
|
||||
|
||||
});
|
||||
|
|
1438
js/partext.js
1438
js/partext.js
File diff suppressed because one or more lines are too long
71
js/utils.js
71
js/utils.js
|
@ -140,7 +140,7 @@ _ "whitespace"= " "*
|
|||
|
||||
var testmm = 0
|
||||
|
||||
//query
|
||||
//query per le ricerche
|
||||
|
||||
ontoSparqlQuery = `PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
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/>
|
||||
|
||||
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 {
|
||||
FILTER(REGEX(?Rappresentazione, "^andare$", "i")) .
|
||||
FILTER(LANGMATCHES(LANG(?Rappresentazione), "it"))
|
||||
|
@ -177,7 +177,6 @@ WHERE {
|
|||
ecrm:P148_has_component ?fa .
|
||||
|
||||
?sentence a syntit:Sentence ;
|
||||
ecrm:P190_has_symbolic_content ?text ;
|
||||
syntit:hasSyntacticalComponent ?cl.
|
||||
?cl syntit:hasClauseType ?clatype ;
|
||||
ecrm:P190_has_symbolic_content ?cltext ;
|
||||
|
@ -188,6 +187,9 @@ WHERE {
|
|||
}`
|
||||
|
||||
orlprefix = 'https://dantenetwork.it/ontology/orl/current/'
|
||||
|
||||
syntitprefix='https://dantenetwork.it/ontology/syntit/current/'
|
||||
|
||||
var stringInSparql= false;
|
||||
|
||||
function writesparqlquery(query) {
|
||||
|
@ -328,7 +330,7 @@ function buildSQ(stquery) {
|
|||
const parsedquery = parser.parse(ontoSparqlQuery);
|
||||
//const parsedquery = parser.parse(tqvpvs);
|
||||
|
||||
|
||||
console.log(stquery)
|
||||
|
||||
|
||||
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) {
|
||||
|
||||
if (clause['queryText'].trim() != "") {
|
||||
|
@ -449,6 +469,11 @@ function buildClause(clause, parsedquery, whereind) {
|
|||
parsedquery.where.splice(0, 1)
|
||||
whereind=whereind-1
|
||||
}
|
||||
|
||||
if (clause['TipoClausola']=='Sintattico')
|
||||
return buildSintacticClause(clause, parsedquery, whereind)
|
||||
|
||||
|
||||
if (clause['typeGramm0'] != null && clause['typeGramm0'] != "all")
|
||||
if (whereind > -1)
|
||||
//parsedquery.where[whereind].triples.push(JSON.parse(data21)[clause['typeGramm0']]);
|
||||
|
@ -479,10 +504,30 @@ function buildClause(clause, parsedquery, whereind) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
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) {
|
||||
|
||||
subcattmplate = `{"subject": {"termType": "Variable", "value":"form"},
|
||||
|
@ -490,9 +535,6 @@ function buildsubcategoryClause(sttmnt) {
|
|||
"object": {"termType": "NamedNode"}}
|
||||
`
|
||||
|
||||
//orlprefix='https://dantenetwork.it/ontology/orl/current/'
|
||||
|
||||
|
||||
predicate = orlprefix + (sttmnt.split(':')[0])
|
||||
obj = orlprefix + (sttmnt.split(':')[1])
|
||||
subcatstatement = JSON.parse(subcattmplate)
|
||||
|
@ -820,9 +862,8 @@ data21 = `{"verbovolgare": {"subject": {"termType": "Variable", "value":"form"},
|
|||
*
|
||||
*/
|
||||
|
||||
var funzione_calusola=`
|
||||
{
|
||||
"princ": "hasClauseFunction:MainClause",
|
||||
var funzione_clausola=
|
||||
{"princ": "hasClauseFunction:MainClause",
|
||||
"subord i": "hasClauseFunction:SubordinateClause",
|
||||
"subord ii": "",
|
||||
"subord iii": "",
|
||||
|
@ -840,10 +881,10 @@ var funzione_calusola=`
|
|||
"coord 0": "hasClauseFunction:PseudoCoordinateClause"
|
||||
}
|
||||
|
||||
`
|
||||
|
||||
|
||||
var macrotipi_sint=`
|
||||
|
||||
var macrotipi_sint=
|
||||
{
|
||||
"macro avv": "hasClauseType:Avversativa",
|
||||
"macro caus": "hasClauseType:Causale",
|
||||
|
@ -875,8 +916,8 @@ var macrotipi_sint=`
|
|||
"macro sub": "hasClauseType:SubordinataConFunzioneDiRipresa",
|
||||
"macro temp": "hasClauseType:Temporale"
|
||||
}
|
||||
`
|
||||
var tipi_sint=`
|
||||
|
||||
var tipi_sint=
|
||||
{
|
||||
"avv caus": "hasClauseType:CoordinataAvversativaCausale",
|
||||
"avv comp ug": "hasClauseType:CoordinataAvversativaComparativaDiUguaglianza",
|
||||
|
@ -1169,5 +1210,3 @@ var tipi_sint=`
|
|||
"temp comp ug": "hasClauseType:TemporaleConValoreComparativo",
|
||||
"temp ipo": "hasClauseType:TemporaleConValoreIpotetico",
|
||||
}
|
||||
|
||||
`
|
||||
|
|
Loading…
Reference in New Issue