Использование нового API Freebase с Java-клиентом - PullRequest
0 голосов
/ 23 марта 2012

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

Что я должен ввести в параметре List id?Я опробовал следующее:

    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. Любая помощь приветствуется.

Ответы [ 3 ]

0 голосов
/ 19 мая 2012

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 голосов
/ 16 июля 2012

Вам не нужно передавать строку 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();
    } 
0 голосов
/ 24 марта 2012

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

API Explorer 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 в приведенном выше примере.

Кроме того, вы можете передать его в виде массива id = ["en", "bob_dylan"]

Надеюсь, это сработает.

...