edu.toronto.cs.xml2rdf.freebase.FreebaseUtil.java Source code

Java tutorial

Introduction

Here is the source code for edu.toronto.cs.xml2rdf.freebase.FreebaseUtil.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.toronto.cs.xml2rdf.freebase;

import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import edu.toronto.cs.xml2rdf.utils.LogUtils;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.io.IOUtils;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;

/**
 *
 * @author Amirhossein Aleyasen <aleyase2@illinois.edu>
 * created on Dec 1, 2015, 3:51:10 PM
 */
public class FreebaseUtil {

    final private static String FREEBASE_PROPERTIES_LOC = "resources/freebase/freebase.properties";
    final private static Properties properties = new Properties();

    public static void main(String[] args) {
        final JSONArray json = search("Propofol", "resources/freebase/type_query.json", 5);
        System.out.println(json);
        //        Object document = Configuration.defaultConfiguration().getProvider().parse(json.toString());

        //        final List<String> types_list = JsonPath.read(document, "$..type[*].name");
        //        Set<String> types = new HashSet(types_list);
        //        System.out.println(types);
    }

    public static JSONArray search(String query, String mql_query_file, int limit) {
        try {
            properties.load(new FileInputStream(FREEBASE_PROPERTIES_LOC));
            HttpTransport httpTransport = new NetHttpTransport();
            HttpRequestFactory requestFactory = httpTransport.createRequestFactory();

            GenericUrl url = new GenericUrl("https://www.googleapis.com/freebase/v1/search");
            url.put("query", query);
            //            url.put("filter", "(all type:/music/artist created:\"The Lady Killer\")");
            url.put("limit", limit);
            String mql_query = IOUtils.toString(new FileInputStream(mql_query_file));

            url.put("mql_output", mql_query);
            url.put("key", properties.get("API_KEY"));
            HttpRequest request = requestFactory.buildGetRequest(url);
            HttpResponse httpResponse = null;
            try {
                httpResponse = request.execute();
            } catch (Exception e) {

            }
            if (httpResponse == null) {
                return null;
            }
            JSON obj = JSONSerializer.toJSON(httpResponse.parseAsString());
            if (obj.isEmpty()) {
                return null;
            }
            JSONObject jsonObject = (JSONObject) obj;
            JSONArray results = jsonObject.getJSONArray("result");
            LogUtils.info(FreebaseUtil.class, results.toString());
            return results;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public static JSONArray fetch(String query_template_file, Map<String, String> params) {
        try {
            properties.load(new FileInputStream(FREEBASE_PROPERTIES_LOC));
            HttpTransport httpTransport = new NetHttpTransport();
            HttpRequestFactory requestFactory = httpTransport.createRequestFactory();
            String query = IOUtils.toString(new FileInputStream(query_template_file));
            query = manipulateQuery(query, params);
            GenericUrl url = new GenericUrl("https://www.googleapis.com/freebase/v1/mqlread");
            url.put("query", query);
            url.put("key", properties.get("API_KEY"));
            System.out.println("URL:" + url);

            HttpRequest request = requestFactory.buildGetRequest(url);
            HttpResponse httpResponse = request.execute();
            JSON obj = JSONSerializer.toJSON(httpResponse.parseAsString());
            if (obj.isEmpty()) {
                return null;
            }
            JSONObject jsonObject = (JSONObject) obj;
            JSONArray results = jsonObject.getJSONArray("result");
            System.out.println(results.toString());
            return results;
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    private static String manipulateQuery(String query, Map<String, String> params) {
        String manipulate_query = query;
        for (String key : params.keySet()) {
            manipulate_query = query.replace("%" + key + "%", params.get(key));
        }
        return manipulate_query;
    }
}