3

MQL クエリを記述して、特定の単語に関連付けられたすべての型のリストを取得する方法を見つけようとしています。

たとえば、私は試しました:

{
  "id":null,
  "name":null,
  "name~=": "SOME_WORD",
  "type":"/type/type",
  "domain": {
    "id": null,
    "/freebase/domain_profile/category": {
      "id": "/category/commons"
    }
  }
}​

Commons のすべてのタイプまたはカテゴリを一覧表示するためにこれを見つけましたが、特定の入力に対してそれを絞り込む方法をまだ理解していません。

[{
  "id":   null,
  "name": null,
  "type": "/freebase/domain_profile",
  "category": {
    "id": "/category/commons"
  }
}]​
4

2 に答える 2

4

これを行うには、それぞれに異なるトレードオフを伴ういくつかの異なる方法があります。

  1. このようなクエリで Search API を使用します

    https://www.googleapis.com/freebase/v1/search?indent=true&filter=%28all%20name {フル}:%22uss%20constitution%22%29

次のような JSON 結果が返されます。

{
  "status": "200 OK",
  "result": [
    {
      "mid": "/m/07y14",
      "name": "USS Constitution",
      "notable": {
        "name": "Ship",
        "id": "/boats/ship"
      },
      "lang": "en",
      "score": 1401.410400
    },
    ...

"{full}" を "{phrase}" に切り替えることで、一致をより自由にすることができます。これにより、完全一致ではなく部分文字列一致が得られます。

警告: - 単一の「注目すべきタイプ」のみが取得され、Freebase の (不明な) アルゴリズムによって修正されます - USS コンスティテューションと USS コンスティテューションの両方の結果を取得する方法はないと思います - すべてのタイプのリストを取得できます&mql_output={"type":[]} を追加すると、「注目すべき」タイプが失われます。1回の呼び出しで両方を取得する方法はないと思います。

  1. MQL を使用する

このクエリは、必要な基本情報を返します。

[{
  "name~=":"uss constitution",
  "type":[],
  "/common/topic/notable_types" : []
}]​

警告:

  • 主要な名前ではなく別名である「uss 憲法」は見つかりません (ただし、MQL クックブックにはそのためのレシピがあります)。
  • 「USS憲法」は見つかりません
  • 「notable_types」API は MQL 拡張機能であり、MQL 拡張機能は新しい Freebase API ではサポートされていません。レガシーの非推奨の API のみです。
  • Freebase が「特筆性」を計算するために使用する (未知の) アルゴリズムに縛られている

何を達成しようとしているのかによっては、これよりも洗練されたものが必要になるかもしれません (そして Freebase の内容をより深く理解する必要があります)。

于 2012-03-01T16:51:00.253 に答える