From 98f80dfd7115223141bb5a97993bc953b92a3c5c Mon Sep 17 00:00:00 2001 From: j2blake Date: Wed, 6 Nov 2013 12:26:59 -0500 Subject: [PATCH] VIVO-483 Adjust indexing code for the ISF This class should not have been in Vitro, since it uses VIVO URIs and is never referenced in Vitro. Also, it needed updating to match the ISF. --- .../documentBuilding/CalculateParameters.java | 300 ------------------ 1 file changed, 300 deletions(-) delete mode 100644 webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/documentBuilding/CalculateParameters.java diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/documentBuilding/CalculateParameters.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/documentBuilding/CalculateParameters.java deleted file mode 100644 index 0ae3eca19..000000000 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/documentBuilding/CalculateParameters.java +++ /dev/null @@ -1,300 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.StringTokenizer; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.SolrInputField; - -import com.hp.hpl.jena.query.Dataset; -import com.hp.hpl.jena.query.Query; -import com.hp.hpl.jena.query.QueryExecution; -import com.hp.hpl.jena.query.QueryExecutionFactory; -import com.hp.hpl.jena.query.QueryFactory; -import com.hp.hpl.jena.query.QuerySolution; -import com.hp.hpl.jena.query.QuerySolutionMap; -import com.hp.hpl.jena.query.ResultSet; -import com.hp.hpl.jena.query.Syntax; -import com.hp.hpl.jena.rdf.model.RDFNode; -import com.hp.hpl.jena.rdf.model.Resource; -import com.hp.hpl.jena.rdf.model.ResourceFactory; -import com.hp.hpl.jena.shared.Lock; - -import edu.cornell.mannlib.vitro.webapp.beans.Individual; -import edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames; - - -public class CalculateParameters implements DocumentModifier { - - private boolean shutdown = false; - private Dataset dataset; - // public static int totalInd=1; - - private static final String prefix = "prefix owl: " - + " prefix vitroDisplay: " - + " prefix rdf: " - + " prefix core: " - + " prefix foaf: " - + " prefix rdfs: " - + " prefix localNav: " - + " prefix bibo: "; - - private static final String betaQuery = prefix + " SELECT count(distinct ?inLinks) " + - " WHERE { " + - " ?uri rdf:type owl:Thing . " + - " ?inLinks ?prop ?uri . " + - " } "; - - private static final String totalCountQuery = prefix + " SELECT count(distinct ?ind) " + - " WHERE { " + - " ?ind rdf:type owl:Thing . " + - " } "; - - private static Log log = LogFactory.getLog(CalculateParameters.class); - - public CalculateParameters(Dataset dataset){ - this.dataset =dataset; - // new Thread(new TotalInd(this.dataset,totalCountQuery)).start(); - } - - public CalculateParameters(){ - super(); - } - - public float calculateBeta(String uri){ - float beta=0; - int Conn=0; - Query query; - QuerySolutionMap initialBinding = new QuerySolutionMap(); - QuerySolution soln = null; - Resource uriResource = ResourceFactory.createResource(uri); - initialBinding.add("uri", uriResource); - dataset.getLock().enterCriticalSection(Lock.READ); - QueryExecution qexec=null; - try{ - query = QueryFactory.create(betaQuery,Syntax.syntaxARQ); - qexec = QueryExecutionFactory.create(query,dataset,initialBinding); - ResultSet results = qexec.execSelect(); - List resultVars = results.getResultVars(); - if(resultVars!=null && resultVars.size()!=0){ - soln = results.next(); - Conn = Integer.parseInt(soln.getLiteral(resultVars.get(0)).getLexicalForm()); - } - }catch(Throwable t){ - if( ! shutdown ) - log.error(t,t); - }finally{ - if( qexec != null ) - qexec.close(); - dataset.getLock().leaveCriticalSection(); - } - - beta = (float)Conn; - //beta *= 100; - beta += 1; - - // sigmoid function to keep beta between 0 to 1; - - beta = (float) (1 / ( 1 + Math.pow(Math.E,(-beta)))); - - if(beta > 1) - log.info("Beta higher than 1 : " + beta); - else if(beta <= 0) - log.info("Beta lower < = 0 : " + beta); - return beta; - } - - - public String[] getAdjacentNodes(String uri){ - - List queryList = new ArrayList(); - Set adjacentNodes = new HashSet(); - Set coauthorNames = new HashSet(); - String[] info = new String[]{"",""}; - StringBuffer adjacentNodesConcat = new StringBuffer(); - StringBuffer coauthorBuff = new StringBuffer(); - adjacentNodesConcat.append(""); - coauthorBuff.append(""); - - queryList.add(prefix + - " SELECT ?adjobj (str(?adjobjLabel) as ?coauthor) " + - " WHERE { " + - " ?uri rdf:type . " + - " ?uri ?prop ?obj . " + - " ?obj rdf:type . " + - " ?obj ?prop2 ?obj2 . " + - " ?obj2 rdf:type . " + - " ?obj2 ?prop3 ?obj3 . " + - " ?obj3 rdf:type . " + - " ?obj3 ?prop4 ?adjobj . " + - " ?adjobj rdfs:label ?adjobjLabel . " + - " ?adjobj rdf:type . " + - - " FILTER (?prop !=rdf:type) . " + - " FILTER (?prop2!=rdf:type) . " + - " FILTER (?prop3!=rdf:type) . " + - " FILTER (?prop4!=rdf:type) . " + - " FILTER (?adjobj != ?uri) . " + - "}"); - - queryList.add(prefix + - " SELECT ?adjobj " + - " WHERE{ " + - - " ?uri rdf:type foaf:Agent . " + - " ?uri ?prop ?obj . " + - " ?obj ?prop2 ?adjobj . " + - - - " FILTER (?prop !=rdf:type) . " + - " FILTER isURI(?obj) . " + - - " FILTER (?prop2!=rdf:type) . " + - " FILTER (?adjobj != ?uri) . " + - " FILTER isURI(?adjobj) . " + - - " { ?adjobj rdf:type . } " + - " UNION " + - " { ?adjobj rdf:type . } " + - " UNION " + - " { ?adjobj rdf:type . } " + - " UNION " + - " { ?adjobj rdf:type . } ." + - "}"); - - Query query; - - QuerySolution soln; - QuerySolutionMap initialBinding = new QuerySolutionMap(); - Resource uriResource = ResourceFactory.createResource(uri); - - initialBinding.add("uri", uriResource); - - Iterator queryItr = queryList.iterator(); - - dataset.getLock().enterCriticalSection(Lock.READ); - Resource adjacentIndividual = null; - RDFNode coauthor = null; - try{ - while(queryItr.hasNext()){ - /*if(!isPerson){ - queryItr.next(); // we don't want first query to execute if the ind is not a person. - }*/ - query = QueryFactory.create(queryItr.next(),Syntax.syntaxARQ); - QueryExecution qexec = QueryExecutionFactory.create(query,dataset,initialBinding); - try{ - ResultSet results = qexec.execSelect(); - while(results.hasNext()){ - soln = results.nextSolution(); - - adjacentIndividual = (Resource)soln.get("adjobj"); - if(adjacentIndividual!=null){ - adjacentNodes.add(adjacentIndividual.getURI()); - } - - coauthor = soln.get("coauthor"); - if(coauthor!=null){ - coauthorNames.add(" co-authors " + coauthor.toString() + " co-authors "); - } - } - }catch(Exception e){ - if( ! shutdown ) - log.error("Error found in getAdjacentNodes method of SearchQueryHandler"); - }finally{ - qexec.close(); - } - } - queryList = null; - Iterator itr = adjacentNodes.iterator(); - while(itr.hasNext()){ - adjacentNodesConcat.append(itr.next() + " "); - } - - info[0] = adjacentNodesConcat.toString(); - - itr = coauthorNames.iterator(); - while(itr.hasNext()){ - coauthorBuff.append(itr.next()); - } - - info[1] = coauthorBuff.toString(); - - } - catch(Throwable t){ - if( ! shutdown ) - log.error(t,t); - }finally{ - dataset.getLock().leaveCriticalSection(); - adjacentNodes = null; - adjacentNodesConcat = null; - coauthorBuff = null; - } - return info; - } - - @Override - public void modifyDocument(Individual individual, SolrInputDocument doc, StringBuffer addUri) { - // TODO Auto-generated method stub - // calculate beta value. - log.debug("Parameter calculation starts.."); - float beta = calculateBeta(individual.getURI()); - doc.addField(VitroSearchTermNames.BETA, beta); - doc.setDocumentBoost(beta + doc.getDocumentBoost() ); - log.debug("Parameter calculation is done"); - } - - - public void shutdown(){ - shutdown=true; - } -} - -class TotalInd implements Runnable{ - private Dataset dataset; - private String totalCountQuery; - private static Log log = LogFactory.getLog(TotalInd.class); - - public TotalInd(Dataset dataset,String totalCountQuery){ - this.dataset = dataset; - this.totalCountQuery = totalCountQuery; - - } - public void run(){ - int totalInd=0; - Query query; - QuerySolution soln = null; - dataset.getLock().enterCriticalSection(Lock.READ); - QueryExecution qexec = null; - - try{ - query = QueryFactory.create(totalCountQuery,Syntax.syntaxARQ); - qexec = QueryExecutionFactory.create(query,dataset); - ResultSet results = qexec.execSelect(); - List resultVars = results.getResultVars(); - - if(resultVars!=null && resultVars.size()!=0){ - soln = results.next(); - totalInd = Integer.parseInt(soln.getLiteral(resultVars.get(0)).getLexicalForm()); - } - //CalculateParameters.totalInd = totalInd; - //log.info("Total number of individuals in the system are : " + CalculateParameters.totalInd); - }catch(Throwable t){ - log.error(t,t); - }finally{ - if( qexec != null ) - qexec.close(); - dataset.getLock().leaveCriticalSection(); - } - - } -}