diff --git a/js/cesareBrowse.js b/js/cesareBrowse.js index a2bf380..9806c9b 100644 --- a/js/cesareBrowse.js +++ b/js/cesareBrowse.js @@ -1437,7 +1437,7 @@ function resetFrasi(){ var resultsInCantica=[] var resultsInCanto=[] - console.log('frase length '+searchwords.length) + console.log('frase, l. '+searchwords.length) if(noContext || inf.length) executeLocalSearch(searchwords, formeprima, (formeprima.length-searchwords.length), cantiche[0], inf, resultsInCantica, resultsInCanto) if(noContext || pur.length) @@ -1475,7 +1475,7 @@ function resetFrasi(){ break } for (var frind=0; frind PREFIX comm: PREFIX syntit: -SELECT (?t_canto as ?Canto) (?t_cantica as ?Cantica) ?clatype ?clafunction ?clfr ?clto ?cl ?sentence ?cltext ?pos ?clocc +SELECT (?t_canto as ?Canto) (?t_cantica as ?Cantica) ?clatype ?clafunction ?clfr ?clto ?cl ?sentence ?pos ?clocc WHERE { FILTER(REGEX(?Rappresentazione, "^buon$", "i")) . FILTER(LANGMATCHES(LANG(?Rappresentazione), "it")) @@ -407,13 +407,13 @@ function buildSQ(stquery) { var parsedquery = parser.parse(ontoSparqlQuery); console.log(stquery) - if (stquery['EsprLogica'] != null && stquery['EsprLogica'].length > 1) { + if (stquery['QueryAvanzata'] == 1 && stquery['EsprLogica'] != null && stquery['EsprLogica'].length > 1) { parsedquery = parser.parse(ontoSparqlQueryMultCond) buildSPQuery(stquery) return multipleCondSpQuery; } - if (stquery['EsprLogica'] != null && stquery['EsprLogica'] != '' && stquery['EsprLogica'].length == 1) { + if (stquery['QueryAvanzata'] == 1 && stquery['EsprLogica'] != null && stquery['EsprLogica'] != '' && stquery['EsprLogica'].length == 1) { clause = stquery['EsprLogica'] filtroContesto=getFiltroContestoJson(JSON.parse(stquery[clause[0]]['contesto'])) @@ -462,68 +462,7 @@ function buildSQ(stquery) { if (stquery['Clausola0']['queryText'] != "" && stquery['Clausola0']['Attiva'] == 1) { searchtext = stquery['Clausola0']['queryText'] let strval = searchtext - if (stquery['Clausola0']['lemma_forma'] == 'testo'){ - let prefixes=new Object() - prefixes['orl']= 'https://dantenetwork.it/ontology/orl/current/' - prefixes['ontolex']= 'http://www.w3.org/ns/lemon/ontolex#' - prefixes['olires']= 'https://dantenetwork.it/ontology/olires/current/' - prefixes['xsd']='http://www.w3.org/2001/XMLSchema#' - let qry=new Object() - let variables=[] - let where=[] - let whereobject=new Object() - whereobject["type"]= "bgp" - let triples=[] - qry['queryType']='SELECT' - let testo_tkns=strval.split(' ') - var longest = testo_tkns.reduce( - function(a, b) { - return a.length > b.length ? a : b; - } - ); - optind=testo_tkns.indexOf(longest) - - for (tknid in testo_tkns){ - if (tknid>0 && tknid==optind){ - triples.unshift(getTestoWhereTriple('reg'+tknid, 'https://dantenetwork.it/ontology/olires/current/fragmentRegionFrom', 'pos'+tknid)) - triples.unshift(getTestoWhereTriple('fa'+tknid, 'https://dantenetwork.it/ontology/olires/current/OccursInRegion', 'reg'+tknid)) - triples.unshift(getTestoWhereTriple('fa'+tknid, 'https://dantenetwork.it/ontology/orl/current/occurrenceOf', 'cat'+tknid)) - triples.unshift(getTestoWhereTriple('cat'+tknid, 'http://www.w3.org/ns/lemon/ontolex#writtenRep', 'Rappresentazione'+tknid)) - } - else{ - triples.push(getTestoWhereTriple('cat'+tknid, 'http://www.w3.org/ns/lemon/ontolex#writtenRep', 'Rappresentazione'+tknid)) - triples.push(getTestoWhereTriple('fa'+tknid, 'https://dantenetwork.it/ontology/orl/current/occurrenceOf', 'cat'+tknid)) - triples.push(getTestoWhereTriple('fa'+tknid, 'https://dantenetwork.it/ontology/olires/current/OccursInRegion', 'reg'+tknid)) - triples.push(getTestoWhereTriple('reg'+tknid, 'https://dantenetwork.it/ontology/olires/current/fragmentRegionFrom', 'pos'+tknid)) - - } - - where.push(getTestoWhereTextFilter('Rappresentazione'+tknid, testo_tkns[tknid])) - - } - for (tknid in testo_tkns){ - let variable=new Object() - variable['termType']="Variable" - variable['value']="pos"+tknid - variables.push(variable); - if (tknid==0) - continue - where.push(getTestoWherePosFilter('pos0', 'pos'+tknid, tknid)) - } - //testo_tkns.sort((a,b)=> {return b.length-a.length}) - - - whereobject["triples"]=triples - where.push(whereobject) - qry['variables']=variables - qry['where']=where - qry['type']="query" - qry['prefixes']=prefixes - const sparqlGenerator = sparqljs.Generator; - console.log(new sparqlGenerator().stringify(qry)) - - - } + if (stquery['Clausola0']['opzioni_testo'] == 'parola') { strval = "^" + searchtext.trim() + "$"; } @@ -555,102 +494,6 @@ function buildSQ(stquery) { -//Crea le triple per WHERE se cerco il testo - - - -function getTestoWherePosFilter(pos1, pos2, dist){ - let filterpos=new Object() - filterpos['type']='filter' - let filterexpr= new Object() - filterexpr['type']='operation' - filterexpr['operator']='=' - let exprargs=[] - let arg1= new Object() - arg1['type']="functionCall" - let arg1func=new Object() - arg1func['termType']="NamedNode" - arg1func['value']="http://www.w3.org/2001/XMLSchema#int" - arg1['function']=arg1func - let arg1args= [] - let arg1argsarg1= new Object() - arg1argsarg1['type']="operation" - arg1argsarg1['operator']="+" - let arg1argsarg1args=[] - let arg1argsarg1argsarg1=new Object() - arg1argsarg1argsarg1['termType']="Variable" - arg1argsarg1argsarg1['value']=pos1 - let arg1argsarg1argsarg2=new Object() - arg1argsarg1argsarg2['termType']="Literal" - arg1argsarg1argsarg2['value']=dist - let datatype=new Object() - datatype['termType']='NamedNode' - datatype['value']="http://www.w3.org/2001/XMLSchema#integer" - arg1argsarg1argsarg2["datatype"]=datatype - arg1argsarg1args.push(arg1argsarg1argsarg1) - arg1argsarg1args.push(arg1argsarg1argsarg2) - arg1argsarg1['type']='operation' - arg1argsarg1['operator']='+' - arg1argsarg1['args']=arg1argsarg1args - arg1args.push(arg1argsarg1) - arg1['args']=arg1args - arg1['distinct']='false' - let arg2= new Object() - arg2["termType"]= "Variable", - arg2["value"]= pos2 - exprargs.push(arg1) - exprargs.push(arg2) - filterexpr['args']=exprargs - filterpos['expression']=filterexpr - return filterpos - } - -function getTestoWhereTextFilter(term, val){ - let filtertext=new Object() - filtertext['type']='filter' - let filterexpr= new Object() - filterexpr['type']='operation' - filterexpr['operator']='regex' - let exprargs=[] - let arg1= new Object() - arg1['termType']="Variable" - arg1['value']=term - let arg2= new Object() - arg2['termType']="Literal" - arg2['value']=val - let arg3= new Object() - arg3['termType']="Literal" - arg3['value']='i' - let datatype=new Object() - datatype['termType']='NamedNode' - datatype['value']="http://www.w3.org/2001/XMLSchema#string" - arg2['datatype']=datatype - arg3['datatype']=datatype - exprargs.push(arg1) - exprargs.push(arg2) - exprargs.push(arg3) - filterexpr['args']=exprargs - filtertext['expression']=filterexpr - return filtertext - } - -function getTestoWhereTriple(s, p, o){ - let tri=new Object() - let sub=new Object() - let pred=new Object() - let ob=new Object() - sub["termType"]="Variable" - sub["value"]=s - pred["termType"]="NamedNode" - pred["value"]=p - ob["termType"]="Variable" - ob["value"]=o - tri["subject"]= sub - tri["predicate"]= pred - tri["object"]= ob - return (tri) -} - //Filtro Contesto