簡體   English   中英

將新的Freebase API與Jav​​a客戶端一起使用

[英]Using the new Freebase API with the java client

到目前為止,我一直在使用Java的google-api,以便可以從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。任何幫助表示贊賞。

適用於Java的Google Freebase API有問題。 我找到了問題的原因,並輸入了以下問題: 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();

您不必通過List傳遞JSON字符串,因為簡單的字符串類型即可完成工作,因此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();
    } 

我還沒有玩過Java api,但是這里有兩個示例可能會對您有所幫助。

API資源管理器http://code.google.com/apis/explorer/#_s=freebase&_v=v1-sandbox&_m=text.get&id=zh-CN/bob_dylan

批處理請求示例(這是一個json示例) http://wiki.freebase.com/wiki/ApiText#Batch_Requests

請注意,在上面的示例中,id字段不以/開頭。例如id = en / bob_dylan。

或者,可以把它作為一個數組ID = [“EN”,“bob_dylan”]

希望這行得通。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM