diff --git a/productMods/WEB-INF/filegraph/abox/vocabularySource.n3 b/productMods/WEB-INF/filegraph/abox/vocabularySource.n3 index af092c0a..97690dd7 100644 --- a/productMods/WEB-INF/filegraph/abox/vocabularySource.n3 +++ b/productMods/WEB-INF/filegraph/abox/vocabularySource.n3 @@ -1,2 +1,3 @@ . - . \ No newline at end of file + . + . \ No newline at end of file diff --git a/productMods/WEB-INF/ontologies/user/abox/vocabularySource-labels.n3 b/productMods/WEB-INF/ontologies/user/abox/vocabularySource-labels.n3 index 98aa8564..a0a7966e 100644 --- a/productMods/WEB-INF/ontologies/user/abox/vocabularySource-labels.n3 +++ b/productMods/WEB-INF/ontologies/user/abox/vocabularySource-labels.n3 @@ -1,2 +1,3 @@ "UMLS"^^ . - "Agrovoc"^^ . \ No newline at end of file + "AGROVOC"^^ . + "GEMET"^^ . \ No newline at end of file diff --git a/src/edu/cornell/mannlib/semservices/service/impl/GemetService.java b/src/edu/cornell/mannlib/semservices/service/impl/GemetService.java new file mode 100644 index 00000000..75ae7e81 --- /dev/null +++ b/src/edu/cornell/mannlib/semservices/service/impl/GemetService.java @@ -0,0 +1,221 @@ +package edu.cornell.mannlib.semservices.service.impl; + + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StringWriter; +import java.net.MalformedURLException; +import java.net.URL; +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.List; + + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.rpc.ServiceException; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import net.sf.json.JSONSerializer; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.fao.gilw.aims.webservices.AgrovocWS; +import org.fao.gilw.aims.webservices.AgrovocWSServiceLocator; +import org.w3c.dom.Attr; +import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +import edu.cornell.mannlib.semservices.bo.Concept; +import edu.cornell.mannlib.semservices.service.ExternalConceptService; +import edu.cornell.mannlib.semservices.util.XMLUtils; + +public class GemetService implements ExternalConceptService { + protected final Log logger = LogFactory.getLog(getClass()); + private final String GemetWS_address = "http://www.eionet.europa.eu/gemet/"; + private final String narrowerUri = "http://www.w3.org/2004/02/skos/core%23narrower"; + private final String broaderUri = "http://www.w3.org/2004/02/skos/core%23broader"; + private final String relatedUri = "http://www.w3.org/2004/02/skos/core%23related"; + private final String definitionUri = "http://www.w3.org/2004/02/skos/core%23definition"; + private final String prefLabelUri = "http://www.w3.org/2004/02/skos/core%23prefLabel"; + private final String scopeNoteUri = "http://www.w3.org/2004/02/skos/core%23scopeNote"; + private final String altLabelUri = "http://www.w3.org/2004/02/skos/core%23altLabel"; + private final String exampleUri = "http://www.w3.org/2004/02/skos/core%23example"; + private final String acronymLabelUri = "http://www.w3.org/2004/02/skos/core%23acronymLabel"; + + public List processResults(String term) { + List conceptList = new ArrayList(); + String results = getConceptsMatchingKeyword(term); + conceptList = processOutput(results); + return conceptList; + + } + + /** + * @param results + * @return + */ + private List processOutput(String results) { + + List conceptList = new ArrayList(); + + try { + JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( results ); + + for (int i = 0; i < jsonArray.size(); i++) { + Concept concept = new Concept(); + concept + .setDefinedBy("http://www.eionet.europa.eu/gemet/gemetThesaurus"); + concept.setBestMatch("true"); + JSONObject json = jsonArray.getJSONObject(i); + String uri = getJsonValue(json, "uri"); + + concept.setUri(uri); + concept.setConceptId(uri); + if (json.has("preferredLabel")) { + JSONObject preferredLabelObj = json + .getJSONObject("preferredLabel"); + if (preferredLabelObj.has("string")) { + concept.setLabel(getJsonValue(preferredLabelObj, + "string")); + } + } + if (json.has("definition")) { + JSONObject definitionObj = json.getJSONObject("definition"); + if (definitionObj.has("string")) { + concept.setDefinition(getJsonValue(definitionObj, + "string")); + } + } + conceptList.add(concept); + + } + + + } catch (Exception ex ) { + ex.printStackTrace(); + logger.error("Could not get concepts", ex); + } + return conceptList; + + } + + /** + * Get a string from a json object or an empty string if there is no value for the given key + * @param obj + * @param key + * @return + */ + protected String getJsonValue(JSONObject obj, String key) { + if (obj.has(key)) { + return obj.getString(key); + } else { + return new String(""); + } + } + + + protected String getAvailableLangs(String concept_uri) { + String result = new String(); + String serviceUrl = GemetWS_address + "getAvailableLanguages" + + "?concept_uri=" + concept_uri; + result = getGemetResults(serviceUrl); + return result; + } + + protected String getConcept(String concept_uri) { + String result = new String(); + String serviceUrl = GemetWS_address + "getConcept" + + "?concept_uri=" + concept_uri + + "&language=en"; + result = getGemetResults(serviceUrl); + return result; + } + protected String getAllTranslationsForConcept(String concept_uri, String property) { + String result = new String(); + String property_uri = new String(); + if (property.equals("definition")) { + property_uri = definitionUri; + } else if (property.equals("preferredLabel")) { + property_uri = prefLabelUri; + } else if (property.equals("scopeNote")) { + property_uri = scopeNoteUri; + } else if (property.equals("nonPreferredLabels")) { + property_uri = altLabelUri; + } else if (property.equals("example")) { + property_uri = exampleUri; + } else if (property.equals("acronymLabel")) { + property_uri = acronymLabelUri; + } + + String serviceUrl = GemetWS_address + "getAllTranslationsForConcept" + + "?concept_uri=" + concept_uri + + "&property_uri=" + property_uri + + "&language=en"; + result = getGemetResults(serviceUrl); + return result; + } + + + protected String getRelatedConcepts(String concept_uri, String relation) { + String result = new String(); + String relation_uri = new String(); + if (relation.equals("broader")) { + relation_uri = broaderUri; + } else if (relation.equals("narrower")) { + relation_uri = narrowerUri; + } else if (relation.equals("related")) { + relation_uri = relatedUri; + } + String serviceUrl = GemetWS_address + "getRelatedConcepts" + + "?concept_uri=" + concept_uri + + "&relation_uri=" + relation_uri + + "&language=en"; + result = getGemetResults(serviceUrl); + return result; + } + + + + protected String getConceptsMatchingKeyword(String keyword) { + String result = new String(); + String serviceUrl = GemetWS_address + "getConceptsMatchingKeyword" + + "?keyword=" + keyword + + "&search_mode=0" + + "&thesaurus_uri=http://www.eionet.europa.eu/gemet/concept/" + + "&language=en"; + + result = getGemetResults(serviceUrl); + return result; + + } + + protected String getGemetResults(String url) { + String results = new String(); + //System.out.println("url: "+url); + try { + + StringWriter sw = new StringWriter(); + URL serviceUrl = new URL(url); + + BufferedReader in = new BufferedReader(new InputStreamReader(serviceUrl.openStream())); + String inputLine; + while ((inputLine = in.readLine()) != null) { + sw.write(inputLine); + } + in.close(); + + results = sw.toString(); + + } catch (Exception ex) { + logger.error("error occurred in servlet", ex); + return null; + } + return results; + } + +} diff --git a/src/edu/cornell/mannlib/vitro/webapp/servlet/ProcessTerminologyController.java b/src/edu/cornell/mannlib/vitro/webapp/servlet/ProcessTerminologyController.java deleted file mode 100644 index 865905d3..00000000 --- a/src/edu/cornell/mannlib/vitro/webapp/servlet/ProcessTerminologyController.java +++ /dev/null @@ -1,310 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.servlet; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import com.hp.hpl.jena.vocabulary.XSD; - -import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.EditConfiguration; -import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.Field; -import edu.cornell.mannlib.vitro.webapp.web.URLEncoder; -public class ProcessTerminologyController extends VitroHttpServlet { - - private static final long serialVersionUID = 1L; - private static final Log log = LogFactory.getLog(ProcessTerminologyController.class); - private static final String submissionUrl = "/edit/processRdfForm2.jsp"; - //Field names/variables names for n3 - these will have numbers added as suffix if more than one term - private static String referencedBase = "referencedTerm"; - private static String entryBase = "entryTerm"; - private static String labelBase = "termLabel"; - private static String typeBase = "termType"; - //String datatype - private static String xsdStringType = XSD.xstring.toString(); - @Override - protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - super.doPost(req, resp); - } - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - super.doGet(req, resp); - VitroRequest vreq = new VitroRequest(req); - - try{ - - - EditConfiguration editConfig = EditConfiguration.getConfigFromSession(req.getSession(), req); - //For query parameters, check whether CUI - String[] termsArray = new String[1]; - String referencedTerms = vreq.getParameter("referencedTerm"); - if(referencedTerms.indexOf(",") != -1) { - termsArray = referencedTerms.split(","); - } - - int numberTerms = termsArray.length; - log.debug("Number of terms included is " + numberTerms); - //if multiple values then need to process this differently by adding additional - //fields, assertions, etc. as well as changing the URL slightly - String url = "/edit/processRdfForm2.jsp?" + vreq.getQueryString(); - if(numberTerms > 1) { - //Add new resources, i.e. the additional terminology context nodes - addNewResources(editConfig, vreq, numberTerms); - //Add N3Required - addN3Required(editConfig,vreq, numberTerms); - //Add URIs on Form and Add Literals On Form - addLiteralsAndUrisOnForm(editConfig, vreq, numberTerms); - //Add fields - addFields(editConfig, vreq, numberTerms); - //Generate new url which will map input fields to value - url = generateUrl(editConfig, vreq); - } - log.debug("Submitting to url using the following parameters " + url); - RequestDispatcher dispatcher = req.getRequestDispatcher(url); - dispatcher.forward(req, resp); - - - } catch(Exception ex) { - log.error("error occurred in servlet", ex); - } - - } - - private String generateUrl(EditConfiguration editConfig, VitroRequest vreq) { - - //Get original url and query string - String newUrl = "/edit/processRdfForm2.jsp?" + vreq.getQueryString(); - //Iterate through the terms and include appropriate values - Map queryParameters = null; - queryParameters = vreq.getParameterMap(); - //Use same query parameters to forward - String termParam = vreq.getParameter("referencedTerm"); - String labelParam = vreq.getParameter("termLabel"); - String typeParam = vreq.getParameter("termType"); - if(!labelParam.contains(",")){ - log.error("Multiple labels are not being sent back, this is an error"); - } - if(!typeParam.contains(",")) { - log.error("Multiple types are not being sent back, this is an error"); - } - - String[] termsArray = termParam.split(","); - String[] termLabels = labelParam.split(","); - String[] termTypes = typeParam.split(","); - - int numberParameters = termsArray.length; - int index; - - //Should already include entry term so no need to include here - //If that changes, then add entry term here - //String entryTerm = vreq.getParameter("entryTerm"); - //newUrl += "&entryTerm=" + URLEncoder.encode(entryTerm); - //Process values and generate url matching field name to value - for(index = 1; index <= numberParameters; index++) { - String referencedInputName = referencedBase + index; - String termLabelInputName = labelBase + index; - String termTypeInputName =typeBase + index; - //array is set to start at 0, not 1 - String referencedTerm = termsArray[index - 1]; - String termLabel = termLabels[index - 1]; - String termType = termTypes[index - 1]; - newUrl += "&" + referencedInputName + "=" + URLEncoder.encode(referencedTerm); - newUrl += "&" + termLabelInputName + "=" + URLEncoder.encode(termLabel); - newUrl += "&" + termTypeInputName + "=" + URLEncoder.encode(termType); - } - return newUrl; - } - - private void addNewResources(EditConfiguration editConfig, VitroRequest vreq, int numberTerms) { - Map newResources = new HashMap(); - //Based on number of terms, add new - int n; - String defaultNamespace = ""; - - String base = "terminologyContextNode"; - for(n = 1; n <= numberTerms; n++) { - String newNode = base + n; - newResources.put(newNode, defaultNamespace); - } - //TODO: Check if below is required as this is a reference - editConfig.setNewResources(newResources); - } - - /* - * "referencedTerm" : { - "newResource" : "false", - "validators" : [ "nonempty" ], - "optionsType" : "UNDEFINED", //UNSURE WHAT TO KEEP HERE - "literalOptions" : [ ], - "predicateUri" : "", - "objectClassUri" : "", - "rangeDatatypeUri" : "", - "rangeLang" : "", - "assertions" : [ "${n3ForTerminology}" ] - }, - "entryTerm" : { - "newResource" : "false", - "validators" : [ "nonempty" ], - "optionsType" : "UNDEFINED", - "literalOptions" : [ ], - "predicateUri" : "", - "objectClassUri" : "", - "rangeDatatypeUri" : "${stringDatatypeUriJson}", - "rangeLang" : "", - "assertions" : [ "${n3ForTerminology}" ] - }, - "termLabel" : { - "newResource" : "false", - "validators" : [ "nonempty" ], - "optionsType" : "UNDEFINED", - "literalOptions" : [ ], - "predicateUri" : "", - "objectClassUri" : "", - "rangeDatatypeUri" : "${stringDatatypeUriJson}", - "rangeLang" : "", - "assertions" : [ "${n3ForTerminology}" ] - } - ,"termType" : { - "newResource" : "false", - "validators" : [ "nonempty" ], - "optionsType" : "UNDEFINED", - "literalOptions" : [ ], - "predicateUri" : "", - "objectClassUri" : "", - "rangeDatatypeUri" : "${stringDatatypeUriJson}", - "rangeLang" : "", - "assertions" : [ "${n3ForTerminology}" ] - } - */ - - private void addFields(EditConfiguration editConfig, VitroRequest vreq, int numberTerms) { - Map fieldMap = new HashMap(); - int index; - - //Entry only needs to be added once - fieldMap.put(entryBase, generateField(editConfig, xsdStringType)); - - //First one already included so add new ones here - for(index = 1; index <= numberTerms; index++) { - int suffix = index; - String referencedTerm = referencedBase + suffix; - String label = labelBase + suffix; - String type = typeBase + suffix; - //Generate Field for each - fieldMap.put(referencedTerm, generateField(editConfig, null)); - fieldMap.put(label, generateField(editConfig, xsdStringType)); - fieldMap.put(type, generateField(editConfig, xsdStringType)); - } - editConfig.setFields(fieldMap); - } - - /* - "newResource" : "false", - "validators" : [ "nonempty" ], - "optionsType" : "UNDEFINED", - "literalOptions" : [ ], - "predicateUri" : "", - "objectClassUri" : "", - "rangeDatatypeUri" : "", - "rangeLang" : "", - "assertions" : [ "${n3ForTerminology}" ]*/ - private Field generateField(EditConfiguration editConfig, String dataType) { - List n3Required = editConfig.getN3Required(); - Field field = new Field(); - field.setNewResource(false); - List validators = new ArrayList(); - validators.add("nonempty"); - field.setValidators(validators); - field.setOptionsType("UNDEFINED"); - field.setLiteralOptions(new ArrayList>()); - field.setPredicateUri(""); - field.setObjectClassUri(""); - if(dataType == null || dataType.isEmpty()) { - field.setRangeLang(""); - field.setRangeDatatypeUri(""); - } else { - field.setRangeDatatypeUri(dataType); - } - - field.setAssertions(n3Required); - return field; - } - - //Original uris and literals included: - /* - * "urisOnForm" : [ "referencedTerm" ], - "literalsOnForm" : [ "entryTerm", "termLabel" ], - */ - private void addLiteralsAndUrisOnForm(EditConfiguration editConfig, - VitroRequest vreq, int numberTerms) { - List urisOnForm = new ArrayList(); - List literalsOnForm = new ArrayList(); - - int index; - //entry term needs to be added only once - literalsOnForm.add(entryBase); - - //First one already included so add new ones here - for(index = 1; index <= numberTerms; index++) { - int suffix = index; - String referencedTerm = referencedBase + suffix; - String label = labelBase + suffix; - String type = typeBase + suffix; - urisOnForm.add(referencedTerm); - literalsOnForm.add(label); - literalsOnForm.add(type); - } - editConfig.setUrisOnform(urisOnForm); - editConfig.setLiteralsOnForm(literalsOnForm); - } - - //original n3 required is of this format - /*@prefix core: <${vivoCore}> . - ?subject ?predicate ?terminologyContextNode . - ?terminologyContextNode core:referencedTerm ?referencedTerm . - ?terminologyContextNode core:entryTerm ?entryTerm . - ?terminologyContextNode core:termLabel ?termLabel . - */ - private void addN3Required(EditConfiguration editConfig, VitroRequest vreq, int numberTerms) { - //List n3Required = editConfig.getN3Required(); - List n3Required = new ArrayList(); - int index; - String nodeBase = "?terminologyContextNode"; - String entryVar = "?" + entryBase; - String referencedVar = "?" + referencedBase; - String labelVar = "?" + labelBase; - String typeVar = "?" + typeBase; - String prefixStr = "@prefix core: ."; - //First one already included so add new ones here - for(index = 1; index <= numberTerms; index++) { - int suffix = index; - String node = nodeBase + suffix; - String referencedTerm = referencedVar + suffix; - String label = labelVar + suffix; - String type = typeVar + suffix; - String n3String = prefixStr; - n3String += "?subject ?predicate " + node + " . " + - node + " core:entryTerm " + entryVar + " . " + - node + " core:termLabel " + label + " . " + - node + " core:termType " + type + " . " + - node + " core:referencedTerm " + referencedTerm + " . "; - n3Required.add(n3String); - } - editConfig.setN3Required(n3Required); - } - -} diff --git a/src/edu/cornell/mannlib/vitro/webapp/servlet/UMLSTerminologyAnnotation.java b/src/edu/cornell/mannlib/vitro/webapp/servlet/UMLSTerminologyAnnotation.java deleted file mode 100644 index 7c4ab30b..00000000 --- a/src/edu/cornell/mannlib/vitro/webapp/servlet/UMLSTerminologyAnnotation.java +++ /dev/null @@ -1,66 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.servlet; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; - -import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.web.URLEncoder; - -public class UMLSTerminologyAnnotation extends VitroHttpServlet { - - private static final long serialVersionUID = 1L; - private static final Log log = LogFactory.getLog(UMLSTerminologyAnnotation.class); - private static final String submissionUrl = "http://link.informatics.stonybrook.edu/MeaningLookup/MlServiceServlet?"; - - @Override - protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - super.doPost(req, resp); - } - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - super.doGet(req, resp); - VitroRequest vreq = new VitroRequest(req); - - try{ - //Get parameter - String entryText = vreq.getParameter("searchTerm"); - log.debug("Executing UMLS term retrieval using " + entryText); - String dataUrl = submissionUrl + "textToProcess=" + URLEncoder.encode(entryText) + "&format=json"; - try{ - ServletOutputStream sos = resp.getOutputStream(); - - resp.setCharacterEncoding("UTF-8"); - resp.setContentType("application/json;charset=UTF-8"); - URL rss = new URL(dataUrl); - - BufferedReader in = new BufferedReader(new InputStreamReader(rss.openStream())); - String inputLine; - while((inputLine = in.readLine()) != null) { - sos.println(inputLine); - } - in.close(); - - } catch(Exception ex) { - log.error("error occurred in servlet", ex); - } - - }catch(Exception ex){ - log.warn(ex,ex); - } - } - -} diff --git a/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/AbstractConceptSearch.java b/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/AbstractConceptSearch.java deleted file mode 100644 index 6e9c836f..00000000 --- a/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/AbstractConceptSearch.java +++ /dev/null @@ -1,26 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.utils.ConceptSearchService; - -import javax.servlet.ServletContext; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.json.JSONObject; - -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddRoleToPersonTwoStageGenerator; - -abstract public class AbstractConceptSearch implements ConceptSearchInterface{ - private Log log = LogFactory.getLog(AbstractConceptSearch.class); - - public String doSearch(ServletContext context, VitroRequest vreq ) { - String searchEntry = vreq.getParameter("searchTerm"); - String results = processResults(searchEntry); - - return results; - } - - abstract public String processResults(String searchEntry); - -} \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchInterface.java b/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchInterface.java deleted file mode 100644 index d4c0bbfb..00000000 --- a/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchInterface.java +++ /dev/null @@ -1,18 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.utils.ConceptSearchService; - -import java.util.Map; - -import javax.servlet.ServletContext; - -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; - -import org.json.JSONObject; - -public interface ConceptSearchInterface{ - String doSearch(ServletContext context, VitroRequest vreq ); - - String processResults(String searchEntry); -} diff --git a/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchServiceUtils.java b/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchServiceUtils.java index 0289654a..c589626d 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchServiceUtils.java +++ b/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/ConceptSearchServiceUtils.java @@ -22,6 +22,8 @@ public class ConceptSearchServiceUtils { //TODO: Change this so retrieved from the system instead using a query private static final String UMLSVocabSource = "http://link.informatics.stonybrook.edu/umls"; private static final String AgrovocVocabSource = "http://aims.fao.org/aos/agrovoc/agrovocScheme"; + private static final String GemetVocabSource = "http://www.eionet.europa.eu/gemet/gemetThesaurus"; + //Get the class that corresponds to the appropriate search public static String getConceptSearchServiceClassName(String searchServiceName) { HashMap map = getMapping(); @@ -36,7 +38,9 @@ public class ConceptSearchServiceUtils { public static HashMap getVocabSources() { HashMap map = new HashMap(); map.put(UMLSVocabSource, "UMLS"); - map.put(AgrovocVocabSource, "Agrovoc"); + map.put(AgrovocVocabSource, "AGROVOC"); + map.put(GemetVocabSource, "GEMET"); + return map; } @@ -47,7 +51,7 @@ public class ConceptSearchServiceUtils { HashMap map = new HashMap(); map.put(UMLSVocabSource, "edu.cornell.mannlib.semservices.service.impl.UMLSService"); map.put(AgrovocVocabSource, "edu.cornell.mannlib.semservices.service.impl.AgrovocService"); - + map.put(GemetVocabSource, "edu.cornell.mannlib.semservices.service.impl.GemetService"); return map; } diff --git a/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/UMLSConceptSearch.java b/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/UMLSConceptSearch.java deleted file mode 100644 index da011ed4..00000000 --- a/src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/UMLSConceptSearch.java +++ /dev/null @@ -1,76 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.utils.ConceptSearchService; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.StringWriter; -import java.net.URL; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.json.JSONArray; -import org.json.JSONObject; - -import edu.cornell.mannlib.vitro.webapp.web.URLEncoder; - -public class UMLSConceptSearch extends AbstractConceptSearch{ - private static final String submissionUrl = "http://link.informatics.stonybrook.edu/MeaningLookup/MlServiceServlet?"; - private static final Log log = LogFactory.getLog(UMLSConceptSearch.class); - - public String processResults(String searchEntry) { - - String dataUrl = submissionUrl + "textToProcess=" + URLEncoder.encode(searchEntry) + "&format=json"; - String results = null; - try{ - StringWriter sw = new StringWriter(); - URL rss = new URL(dataUrl); - - - BufferedReader in = new BufferedReader(new InputStreamReader(rss.openStream())); - String inputLine; - while((inputLine = in.readLine()) != null) { - sw.write(inputLine); - } - in.close(); - - results = sw.toString(); - - } catch(Exception ex) { - log.error("error occurred in servlet", ex); - } - - - results = processOutput(results); - return results; - } - - //Returning string with - private String processOutput(String results) { - String newResults = null; - try { - JSONObject json = new JSONObject(results); - //Return label and CUID of object - if(json.has("All")) { - - } - - if(json.has("BestMatch")) { - JSONArray bestMatchArray = json.getJSONArray("BestMatch"); - int len = bestMatchArray.length(); - int i; - for(i = 0; i < len; i++) { - JSONObject o = bestMatchArray.getJSONObject(i); - String definition = o.getString("definition"); - String label = o.getString("label"); - String CUI = o.getString("CUI"); - String type = o.getString("type"); - } - } - } catch(Exception ex) { - log.error("Error making json object out of output"); - } - return newResults; - } - -} \ No newline at end of file