diff --git a/js/utils.js b/js/utils.js index a35f079..29065f2 100644 --- a/js/utils.js +++ b/js/utils.js @@ -1,81 +1,4 @@ -tqvpvs = ` -PREFIX ecrm: -PREFIX orl: -PREFIX ontolex: -PREFIX olires: -PREFIX xsd: -PREFIx comm: - -SELECT (?form AS ?IRIForma) (?Rappresentazione AS ?Forma) (?lm AS ?Lemma) (?textver AS ?Verso) (?NumVerso AS ?NumeroVerso) (?t_canto AS ?Canto) (?t_cantica AS ?Cantica) - (?textver1 AS ?VersoPrec) (?textver2 AS ?VersoSucc) -WHERE { - ?fa orl:occurrenceOf ?form. - ?ver ecrm:P190_Has_Symbolic_Content ?textver; - olires:hasNumber ?NumVerso; - olires:hasStructuralComponent ?fa. - ?canto ecrm:P102_has_title ?t_canto; - olires:hasStructuralComponent ?ver. - ?cantica ecrm:P102_has_title ?t_cantica; - olires:hasStructuralComponent ?canto. - ?form ontolex:writtenRep ?Rappresentazione. - ?lent ontolex:lexicalForm ?form; - ontolex:canonicalForm ?cf. - ?cf ontolex:writtenRep ?lm. - FILTER(REGEX(?Rappresentazione, "^stelle$", "i")) . - FILTER(LANGMATCHES(LANG(?Rappresentazione), "it")) . - #BIND(IF((?NumVerso-1) >0,(xsd:short(?NumVerso-1)), (xsd:short(1))) as ?NumVerso1) - BIND(xsd:short(?NumVerso-1) as ?NumVerso1) - BIND(xsd:short(?NumVerso+1) as ?NumVerso2) - Optional{ - ?ver1 ecrm:P190_Has_Symbolic_Content ?textver1; - olires:hasNumber ?NumVerso1. - ?canto olires:hasStructuralComponent ?ver1 . - } - OPTIONAL { - ?ver2 ecrm:P190_Has_Symbolic_Content ?textver2; - olires:hasNumber ?NumVerso2. - ?canto olires:hasStructuralComponent ?ver2 . - } -} ORDER BY (?canto) (?cantica) -LIMIT 20 -` - -// Per restituire i versi di una cantica - -var qVersiCantica = ` - PREFIX ecrm: - PREFIX orl: - PREFIX ontolex: - PREFIX olires: - PREFIX xsd: - PREFIX text: - PREFIx hdn: - - 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 = ` Expression = head:((_)?"("(_)?("AND "/"OR ") Filtro+ (_)?(")")?){return '{"'+head[3]+'": ['+head[4]+"]}"}//{ return head}.join("").replaceAll(", ,","").replaceAll("(,","(").replaceAll(",("," (")} @@ -238,7 +161,7 @@ WHERE { ` -//colori +//colori per frasi sintattiche @@ -353,24 +276,12 @@ function getFormaContext(formaid, numversi = 3) { } -//restituisce la query per ottenere tutti i versi di una cantica: NON USATA: RIMUOVERE -/* -function versiCantica(cantica) { - var SparqlParser = sparqljs.Parser; - var parser = new SparqlParser(); - parsedqVersiCantica = parser.parse(qVersiCantica); - parsedqVersiCantica.where[1].expression.args[1].value = cantica; - return (parsedqVersiCantica) - -} -*/ -// the basic initial query is parsed RIMUOVERE +// the basic initial query is parsed function gimmespq() { var SparqlParser = sparqljs.Parser; var parser = new SparqlParser(); return parser.parse(ontoSparqlQuery); - //return parser.parse(tqvpvs); } @@ -477,18 +388,16 @@ function buildSPQuery(guiquery) { } - +//BUILD THE QUERY! function buildSQ(stquery) { - + var filtroContesto; stringInSparql = false; var SparqlParser = sparqljs.Parser; var parser = new SparqlParser(); //Prendo la query SPARQL template var parsedquery = parser.parse(ontoSparqlQuery); - //const parsedquery = parser.parse(tqvpvs); - console.log(stquery) @@ -500,14 +409,31 @@ function buildSQ(stquery) { if (stquery['EsprLogica'] != null && stquery['EsprLogica'] != '' && stquery['EsprLogica'].length == 1) { clause = stquery['EsprLogica'] + filtroContesto = getFiltroContesto(JSON.parse(stquery['Clausola1']['contesto'])); if (stquery[clause]['TipoClausola'] == 'Sintattico') { parsedquery = parser.parse(ontoSparqlQuerySynt); return buildSintacticClause(stquery[clause], parsedquery, 2) } + myquery = buildClause(stquery[clause], parsedquery, 2) + if (filtroContesto.length>0){ + for (tmpc of filtroContesto){ + console.log(filtroContesto[0]) + myquery.where.splice(1, 0, tmpc) + } + //myArray[0] = myArray.splice(1, 1, myArray[0])[0]; + let tw=myquery.where[4] + myquery.where[4]=myquery.where[3] + myquery.where[3]=tw + if (stquery[clause]['queryText'].trim() == "") { + if (myquery.where[0].type == 'filter') + myquery.where.splice(0, 1) + } + + } return (myquery) } - + //Simple query if (stquery['Clausola0']['queryText'] != "") { searchtext = stquery['Clausola0']['queryText'] strval = searchtext @@ -524,7 +450,7 @@ function buildSQ(stquery) { strval = "^" + searchtext.trim(); } - var filtroContesto = getFiltroContesto(JSON.parse(stquery['Clausola0']['contesto'])); + filtroContesto = getFiltroContesto(JSON.parse(stquery['Clausola0']['contesto'])); if (filtroContesto.length>0){ for (tmpc of filtroContesto){