/* * SMART FP7 - Search engine for MultimediA enviRonment generated contenT * Webpage: http://smartfp7.eu * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * The Original Code is Copyright (c) 2012-2013 of Atos * All Rights Reserved * * Contributor(s): * Sinan Yurtsever, * Nines Sanguino, maria.sanguino at atos dot net */ package eu.smartfp7.linkeddatamanager.interfaces; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.logging.Logger; import org.json.JSONObject; import eu.smartfp7.linkeddatamanager.datatypes.Mapping; import eu.smartfp7.linkeddatamanager.logic.MappingManager; import eu.smartfp7.linkeddatamanager.logic.TextQueryBuilder; import eu.smartfp7.linkeddatamanager.logic.SPARQLtoJSON; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.DefaultValue; @Path("txtSearch") public class TextSearch { private static final Logger logger = Logger.getLogger(TextSearch.class.getCanonicalName()); // public void searchURIs(String label, String lang, int page, int pageSize){ // // } // // // public void searchTriples(String label, String lang, int page,int pageSize) throws IOException{ // // } /** * Finding activities identified by a certain keywords * @param label: The keywords to search * @param lang: The language of the keywords * @param dataset: The dataset in which perform the search. By default DBpedia * @return A JSON file format with the found activities * @throws IOException */ @GET @Path("activities") @Produces({MediaType.APPLICATION_JSON}) public Response searchActivity (@QueryParam("label") String label, @QueryParam("lang") @DefaultValue("en") String lang, @QueryParam("dataset") @DefaultValue("dbpedia") String dataset) throws IOException{ //public void searchActivity(String label, String lang, int page, int pageSize) throws IOException{ InputStream in = null; Mapping m = new MappingManager().getMapping(dataset); logger.info("Invoking searchActivity by text-search"); logger.info("Dataset: " + dataset); logger.info("Label: " + label); logger.info("Language: " + lang); TextQueryBuilder builder = new TextQueryBuilder (m); builder.setCriteria(true, false, label, lang ); String query = builder.printQuery (); SPARQLtoJSON queryer = new SPARQLtoJSON (m.getEndpoint(), m); try{ JSONObject res = queryer.executeSPARQL(query); //System.out.println("Los resultados: " + res); in = new ByteArrayInputStream(res.toString().getBytes()); } catch (Exception e){ e.printStackTrace(); logger.info("Something wrong with the invocation of searchActivity by text-search"); return Response.serverError().build(); } logger.info("Invoked searchActivity by text-search"); return Response.ok(in).build(); } /** * Finding venues identified by a certain keywords * @param label: The keywords to search * @param lang: The language of the keywords * @param dataset: The dataset in which perform the search. By default DBpedia * @return A JSON file format with the found venues */ //public void seachLocation(String label, String lang, int page, int pageSize){ @GET @Path("venues") @Produces({MediaType.APPLICATION_JSON}) public Response searchLocation (@QueryParam("label") String label, @QueryParam("lang") @DefaultValue("en") String lang, @QueryParam("dataset") @DefaultValue("dbpedia") String dataset) throws IOException{ logger.info("Invoking searchLocation by text-search"); logger.info("Dataset: " + dataset); logger.info("Label: " + label); logger.info("Language: " + lang); InputStream in = null; Mapping m = new MappingManager().getMapping(dataset); TextQueryBuilder builder = new TextQueryBuilder (m); builder.setCriteria(false, true, label, lang ); String query = builder.printQuery (); SPARQLtoJSON queryer = new SPARQLtoJSON (m.getEndpoint(), m); try{ JSONObject res = queryer.executeSPARQL(query); //System.out.println("Los resultados: " + res); in = new ByteArrayInputStream(res.toString().getBytes()); } catch (Exception e){ e.printStackTrace(); logger.info("Something wrong with the invocation of searchLocation by text-search"); return Response.serverError().build(); } logger.info("Invoked searchLocation by text-search"); return Response.ok(in).build(); } public static void main(String args[]) throws IOException { TextSearch text_search_demo = new TextSearch(); text_search_demo.searchActivity("new york", "en", "dbpedia"); } }