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
*/
.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

View File

@ -1,19 +1,9 @@
/**
*
*/
var resetResult;
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,16 +28,10 @@ $(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() {
resetResult=function(){
//console.log('clean result')
cleanSearchResult()
esprlogica = []
@ -53,16 +40,38 @@ $(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`);
$("[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) {
e.preventDefault();
@ -71,15 +80,7 @@ $(document).ready(function() {
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();
@ -88,36 +89,22 @@ $(document).ready(function() {
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();
$('.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 categoria = "";
if (index != -1) {
categoria = details.substring(0, index);
details = details.substring(index + 1);
} else {
categoria = details;
details = "";
sentenceId=$(this).attr('class').split(' ')[0].replace('$','')
console.log(sentenceId)
if (shownSentenceList.has(sentenceId)){
resetSentenceStructure(sentenceId)
shownSentenceList.delete(sentenceId)
}
$(this).popover({ title: categoria, content: details, trigger: "click" });
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(" ", "_"))
}
@ -183,36 +162,36 @@ $(document).ready(function() {
//Utility functions
function getHoverContent(categ) {
function getHoverContent(categ){
//console.log('Categoria '+categ)
if (categ.includes('-')) {
categs = categ.split('-')
mycat = []
for (cat of categs) {
if(categ.includes('^')){
categs=categ.split('^')
mycat=[]
for (cat of categs){
mycat.push(cat[0])
}
console.log(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()
}
if (categ[0] == 's') {
if(categ[0]=='s'){
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()
}
if (categ[0] == 'b') {
if(categ[0]=='b'){
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()
}
if (categ[0] == 'a') {
if(categ[0]=='a'){
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()
}
if (categ[0] == 'f') {
@ -224,11 +203,10 @@ $(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]]
}
function drawMinimap(name) {
function drawMinimap(name){
showMinimap(name)
currentMinimap = name;
@ -253,23 +231,24 @@ $(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() {
function manageQuery(){
cleanSearchResult()
esprlogica = []
jsonQuery = getJsonQuery()
jsonQuery=getJsonQuery()
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')
return
}
@ -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,125 +396,92 @@ $(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`);
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])
setVersi.add(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], 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)
else{
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('&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('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.append(forma+" ")
spanoccorrenza.appendTo(elementoverso)
//elementoverso.append('&nbsp;')
}
function createDivVersi(setVersi, cantica, num, canto) {
if (setVersi.has(cantica + "_" + num + "_" + canto))
return setVersi
else {
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 />')
spanoccorrenza.attr('id', pos)
spanoccorrenza.attr('data-cg', catgram)
spanoccorrenza.attr('class', sentenceid+" "+clausefunct)
spanoccorrenza.append(forma+" ")
spanoccorrenza.appendTo(elementoverso)
elementoverso.appendTo('#' + cantica + canto)
setVersi.add(cantica + "_" + num + "_" + canto)
return setVersi
}
return elementoverso
}
function createDivVerso(cantica, num, canto, forma, catgram, pos) {
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)
var spanoccorrenza = $('<span />')
//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
}
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)
@ -506,41 +490,20 @@ $(document).ready(function() {
divcanto.attr('id', (cantica + canto).replace(" ", "_"))
titolocanto.appendTo(divcanto)
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
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
@ -577,7 +555,7 @@ $(document).ready(function() {
for (cantica of cantiche) {
i += 1
let count = resultsInCantica.reduce((n, x) => n + (x === cantica), 0);
if (count > 0) {
if (count>0){
var spanbadgecantica = $('<span />');
spanbadgecantica.attr('class', 'badge badge-primary badge-pill ml-1');
spanbadgecantica.append(count)
@ -585,13 +563,13 @@ $(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)
continue
let count = resultsInCanto.reduce((n, x) => n + (x === cantica + 'Canto ' + k), 0);
if (count > 0) {
if (count>0){
var spanbadge = $('<span />');
spanbadge.attr('class', cantobadgeclass);
spanbadge.append(count)
@ -601,15 +579,12 @@ $(document).ready(function() {
}
}
}
console.log('badge end...')
//aggiorna minimap
if (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()}
Filtro= fhead:("v") tail:( transitivita? diatesi? impersonalita*
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?
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';
@ -700,9 +686,9 @@ _ "whitespace"= " "*
`
var categoriaGrammaticaleSostantivo = `
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); }
@ -726,9 +712,9 @@ _ "whitespace"= " "*
`
var categoriaGrammaticalePreposizione = `
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';}
@ -808,16 +794,17 @@ complemento2=
"k14" {return(" Di Rapporto")}
`
var avverbio = `Expression = head:(Filtro){return 'Avverbio,'+head.join()}
Filtro= fhead:("b") tail:( locuzione? tipo?){return tail}
var avverbio = ` Expression = head:(Filtro){return 'Avverbio,'+head.join()}
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')}/
@ -881,9 +869,9 @@ Integer "integer"
_ "whitespace"= " "*
`
var categoriaGrammaticaleAggettivo = `
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}
@ -964,10 +952,10 @@ Integer "integer"
_ "whitespace"= " "*
`
var categoriaGrammaticaleArticolo = `
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")}/
@ -989,7 +977,7 @@ _ "whitespace"= " "*
`
var citazione = `
var citazione = `
Expression = head:(Filtro){return 'Citazione,'+head.join()}
Filtro= fhead:("f") tail:( fake? tipo?){return tail}
@ -1063,17 +1051,16 @@ Integer "integer"
_ "whitespace"= " "*
`
//parser per categorie
var parserVerbi = peg.generate(categoriegrammaticaliGrammar);
var parserSostantivi = peg.generate(categoriaGrammaticaleSostantivo);
var parserPreposizioni = peg.generate(categoriaGrammaticalePreposizione);
var parserAvverbi = peg.generate(avverbio);
var parserPronomi = peg.generate(pronome);
var parserAggettivi = peg.generate(categoriaGrammaticaleAggettivo);
var parserArticolo = peg.generate(categoriaGrammaticaleArticolo);
var parserCitazione = peg.generate(citazione);
var parserOnomastica = peg.generate(onomastica);
var parserCongiunzione = peg.generate(congiunzione);
//parser per categorie grammaticali
var parserVerbi = peg.generate(categoriegrammaticaliGrammar);
var parserSostantivi = peg.generate(categoriaGrammaticaleSostantivo);
var parserPreposizioni = peg.generate(categoriaGrammaticalePreposizione);
var parserAvverbi = peg.generate(avverbio);
var parserPronomi = peg.generate(pronome);
var parserAggettivi = peg.generate(categoriaGrammaticaleAggettivo);
var parserArticolo = peg.generate(categoriaGrammaticaleArticolo);
var parserCitazione = peg.generate(citazione);
var parserOnomastica = peg.generate(onomastica);
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
//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",
}
`