2012-03-23 3 views
0

До сих пор я играл с google-api для java, чтобы получить некоторые данные из freebase. Я успешно использовал mqlread. Теперь я хотел бы попробовать текстовые службы. Проблема в том, что я, похоже, что-то пропустил в документации. Я не могу понять, как использовать Freebase.Text.get (List id).Использование нового API Freebase с java-клиентом

Что следует вводить в параметре идентификатора списка? Я попробовал следующее:

HttpTransport httpTransport = new NetHttpTransport(); 
    JsonFactory jsonFactory = new JacksonFactory(); 

    JsonHttpRequestInitializer requestInitializer = new JsonHttpRequestInitializer() { 
     public void initialize(JsonHttpRequest jsonHttpRequest) throws IOException { 
      FreebaseRequest freebaseRequest = (FreebaseRequest) jsonHttpRequest; 
      freebaseRequest.setPrettyPrint(true); 
     } 
    }; 

    Freebase freebase = Freebase.builder(httpTransport, jsonFactory).setJsonHttpRequestInitializer(requestInitializer).build(); 
    ArrayList<String> list = new ArrayList<String>(); 

    JSONObject j = new JSONObject(); 
    j.put("id", "en/bob_dylan"); 
    list.add(j.toJSONString()); 
    Freebase.Text.Get text = freebase.text().get(list); 
    ContentserviceGet get = text.execute(); 
    System.out.println(get.toPrettyString()); 

и

list.add("en/linux_kernel"); 

Оба случая вернулись 404. Любая помощь приветствуется.

ответ

0

Я не играл с Java api, но вот два примера, которые могут вам помочь.

API-Проводник http://code.google.com/apis/explorer/#_s=freebase&_v=v1-sandbox&_m=text.get&id=en/bob_dylan

Пример пакетного запроса (который является примером JSON) http://wiki.freebase.com/wiki/ApiText#Batch_Requests

Обратите внимание, что поле ID не начинается с а/- например, id = en/bob_dylan в приведенном выше примере.

В качестве альтернативы, вы можете передать его в качестве массива ид = [ "ан", "bob_dylan"]

Надеется, что это работает.

+0

Он по-прежнему не работает :( Может быть, я не буду использовать API Java Пытаюсь сейчас.. – Silanglaya

0

API Google Freebase для Java является ошибкой. Я нашел причину проблемы и вошел в следующий вопрос: http://code.google.com/p/google-api-java-client/issues/detail?id=493

Намеченный способ использования API, как это, но он не работает:

ContentserviceGet result = freebase.text().get(Arrays.asList("en", "avenue_q")).execute(); 
0

Вы не должны передайте строку JSON через List, id, поскольку простой тип строки выполнит эту работу. Ниже приводится код, чтобы получить текст:

HttpTransport httpTransport = new NetHttpTransport(); 
    JsonFactory jsonFactory = new JacksonFactory(); 
    HttpRequestInitializer httpRequestInitializer = new HttpRequestInitializer() { 
     @Override 
     public void initialize(HttpRequest arg0) throws IOException { 
      // TODO Auto-generated method stub 
     } 
    }; 
    JsonHttpRequestInitializer requestInitializer = new JsonHttpRequestInitializer() { 
     public void initialize(JsonHttpRequest jsonHttpRequest) throws IOException { 
      FreebaseRequest freebaseRequest = (FreebaseRequest) jsonHttpRequest; 
      freebaseRequest.setPrettyPrint(true); 
     } 
    }; 
    Freebase.Builder fbb = new Freebase.Builder(httpTransport, jsonFactory, httpRequestInitializer); 
    Freebase freebase = fbb.setJsonHttpRequestInitializer(requestInitializer).build(); 
    ArrayList<String> list = new ArrayList<String>(); 
    try { 
     list.add("/en/bob_dylan"); 
     Freebase.Text.Get text = freebase.text().get(list); 
     ContentserviceGet get = text.execute(); 
     System.out.println(get.toPrettyString()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
Смежные вопросы