【问题标题】:Using the new Freebase API with the java client将新的 Freebase API 与 java 客户端一起使用
【发布时间】:2012-03-23 16:17:35
【问题描述】:

到目前为止,我一直在使用 google-api for 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。感谢任何帮助。

【问题讨论】:

    标签: java freebase


    【解决方案1】:

    我没有使用过 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。

    或者,您可以将其作为数组传递 id=["en", "bob_dylan"]

    希望这行得通。

    【讨论】:

    • 还是不行 :( 可能我不会用 Java api。现在试试吧。
    【解决方案2】:

    Google Freebase API for 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();
    

    【讨论】:

      【解决方案3】:

      您不必通过 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();
          } 
      

      【讨论】:

        猜你喜欢
        • 2014-01-14
        • 2017-12-15
        • 2015-06-16
        • 2016-10-12
        • 2019-11-21
        • 2015-06-22
        • 2013-03-02
        • 1970-01-01
        • 2012-10-12
        相关资源
        最近更新 更多